トップページ⇒tech
1001コメント301KB

Lisp Scheme Part35

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2012/09/19(水) 10:41:56.61
Common Lisp、SchemeをはじめとするLisp族全般のスレです

■前スレ
Lisp Scheme Part34
http://toro.2ch.net/test/read.cgi/tech/1327819028/

■テンプレ
http://wiki.fdiary.net/lisp/

■関連スレ
【入門】Common Lisp その9【質問よろず】
http://toro.2ch.net/test/read.cgi/tech/1330888006/
0153SCHEME餃子 ◆8X2XSCHEME 2012/10/11(木) 13:09:44.77
>>150
Unix source って書いてあるやつはソースコードが入ってるだけだから、
その中には実行バイナリは無いよ。 さすがにこれは >>152 と同意見だわ。
sh が何か、ソースコードが何かくらいはググって調べてね。
0154デフォルトの名無しさん2012/10/11(木) 13:31:34.78
>>150
まずその参考にしてるサイトだか本だか知らんが、最初にそれを投げ捨てる。
次に、そのUbuntu用の.shファイルは「Self-extracting shell script」と書いてある通り、
自己展開するシェルスクリプトだから、ターミナルなどからそのまま実行する。
そうすると、色々とメッセージが出てくるからそれを読みながら指示に従う。それだけ。
メッセージは英語なので英語を読む気がないなら諦める。意味が理解できなくても厳しい。

見てるとLinuxにもEmacsにも凄い不慣れな印象を受けるんだけど、
そんな状況で新しい処理系を使おうとしても、ありとあらゆることが意味分かんないと思うよ。
普段Windows使ってるなら最初のうちは素直にWindowsでRacket使えば良いじゃん。
最終的にLinuxでやりたいにしても、Linuxに慣れてから改めてLinuxでRacket使えば良いし、
Emacsもそう。Emacsに慣れたら改めてRacketをEmacsから使えば良いよ。
0155デフォルトの名無しさん2012/10/11(木) 13:58:34.98
cKanrenが素晴らしすぎる
これあったらcall/ccいらない
0156デフォルトの名無しさん2012/10/11(木) 14:38:00.08
>>154参考にしてるサイトはもうひとつのscheme入門、分からないことは逐一ググってる。scheme学ぶのにscheme手習い→SICPとやろうと思ってるのだけど、どうでしょう?
0157はちみつ餃子 ◆8X2XSCHEME 2012/10/11(木) 15:02:23.31
>>156
その手順で学ぶのは良いと思う。
Racket は統合環境が有って初心者に使い易い選択だと思うし。
01581432012/10/11(木) 15:03:47.50
おかげさまで出来ました。thx
0159デフォルトの名無しさん2012/10/11(木) 15:56:26.11
子供が小学生になったら豆腐配達システムの仕事を
手伝わせるんだ。言語はもちろんLisp。
0160デフォルトの名無しさん2012/10/11(木) 16:29:05.22
自作パーツとかの在庫管理をLISP(scheme)でしたいんだけど
保存するファイル形式はやっぱりS式がいいんでしょうか

(データベース
(品名1 値段 購入日時 購入場所 在庫の数 使った数 何に使ったか)
(品名2 値段 購入日時 購入場所 在庫の数 使った数 何に使ったか)
(品名3 値段 購入日時 購入場所 在庫の数 使った数 何に使ったか)
)
こうしてくと、値段が変動したりした時に混乱するのですが、
同じ品名でも値段が違ったら分けた方がいいんですかね
0161デフォルトの名無しさん2012/10/11(木) 16:31:08.36
あ、何に使ったかが増えていくので
(品名 使った日時 使った数 何に使ったか)
を別にするとよさそうですね
うん
0162デフォルトの名無しさん2012/10/11(木) 16:34:47.01
(購入DB
(品名1 値段 購入日時 購入場所 購入数)
(品名2 値段 購入日時 購入場所 購入数)
(品名3 値段 購入日時 購入場所 購入数)
)
(消費DB
(品名1 使った日時 使った数 用途)
(品名2 使った日時 使った数 用途)
(品名3 使った日時 使った数 用途)
)
これで購入DBから品名で検索して消費DBの使った数から引くと
在庫がいくつあるか判りますね
これでいいかな
0163デフォルトの名無しさん2012/10/11(木) 16:56:15.25
登録日時とかでソートしたいから、自動で入ってくれるといいな
日付に型なんてないから、32bit値でいいかな?
文字列のがいいかな?
日付と時刻は項目として分ける意味がないから文字列だな
"12/10/11 16:49:00"
"121011 未明"
"今日"
"忘れた"
とかありえるし

あ、使ったのを在庫に戻した場合どうすればいいんだろう?
書き換えるのは論外だから、消費DBに
(品名 戻した日時 -戻した数(負数) "戻した")
を追加するしかないか
0164はちみつ餃子 ◆8X2XSCHEME 2012/10/11(木) 17:56:05.43
規模が小さいものならS式でいいと思う。
でも、規模が大きくなってデータベース的なことをするならそれに特化して進化してきたシステム
(リレーショナルデータベースや key value store) を使う方が効率的。

柔軟性こそ Lisp の本領なので、
今の段階ではそんなこと気にせずとりあえず思い付いたように書いていけばいいんじゃないの。
問題があればそのときに修正できるだけの柔軟性があるのが Lisp ってもんだろ。
0165デフォルトの名無しさん2012/10/11(木) 20:28:41.80
>>164
会社で使うならともかく、
個人でデータベースなんか使うと、
存在自体忘れたり、面倒になって使わなくなるので、
なるべく小規模で、どこでも見れるようにテキストベースにしたく、
そうなるとLISPかなーと思いました
0166デフォルトの名無しさん2012/10/11(木) 20:44:07.37
取り敢えずデータのスキーマについてのアドバイスが欲しいなら、
ム板よりデータベース関係の板の方が本職が居て良いと思うぞ。
>>160-163とか思いっきりそういう話だし。
0167デフォルトの名無しさん2012/10/11(木) 21:23:25.81
何も考えずにメモ帳に追加していって、後で全文検索
これ最強
0168はちみつ餃子 ◆8X2XSCHEME 2012/10/11(木) 21:44:03.37
Google Drive でスプレッドシート使えばスマホでも見れるよ。
0169デフォルトの名無しさん2012/10/12(金) 15:55:32.89
グーグルに個人情報は検索ワード以外もう与えたくないな
こわい
0170デフォルトの名無しさん2012/10/19(金) 14:53:47.96
SCHEMEのTOY処理系(マクロとか無し)を作ろうとしてるので名前募集。
0171デフォルトの名無しさん2012/10/19(金) 16:20:00.34
マクロ・末尾呼び出し最適化・継続を実装してないやつはschemeとは認めない
0172デフォルトの名無しさん2012/10/19(金) 16:52:50.94
マクロは IEEE にはなくて R4RS でも付録で示唆してるだけ。
末尾再帰最適化や継続が不完全な実装も多 (特に C や Java とのやり取りが主のもの)。
だから、静的スコープで単一名前空間なら Scheme、でいいんじゃない?
0173デフォルトの名無しさん2012/10/19(金) 17:06:43.71
>>170
Schmiz
0174デフォルトの名無しさん2012/10/19(金) 17:20:33.57
しゅ…しゅみず
0175はちみつ餃子 ◆8X2XSCHEME 2012/10/19(金) 17:26:24.95
>>172
マクロはともかく (まだ議論がぶれているので) として、
末尾再帰最適化や継続は Scheme の顔なので、
それなしで Scheme を名乗るのはちょっと微妙だと思うなぁ。
あえて Scheme を名乗らなくても、
(部分的に Scheme 風の) 新しい Lisp 方言のひとつってことでいいんじゃね。
0176はちみつ餃子 ◆8X2XSCHEME 2012/10/19(金) 17:27:20.58
>>173
スク水www
鬼才現るwww
0177デフォルトの名無しさん2012/10/19(金) 21:33:26.33
スクール水着っていうと女子のスクール水着だけを
指しているよね。不思議だ。
0178デフォルトの名無しさん2012/10/19(金) 22:45:00.22
男のは海パンとか言ったりするな。
これも不思議だな
0179デフォルトの名無しさん2012/10/19(金) 22:49:08.91
そういう名前はpythonだけで十分だろw
0180デフォルトの名無しさん2012/10/19(金) 23:52:10.83
イメージカラーは紺色で決まりだなw
0181デフォルトの名無しさん2012/10/20(土) 02:59:43.44
>>170
デキがショボければShameと呼ばれるのは間違いない。
0182デフォルトの名無しさん2012/10/20(土) 21:37:56.94
schemale
0183デフォルトの名無しさん2012/10/20(土) 21:50:03.48
SCHE
0184デフォルトの名無しさん2012/10/20(土) 22:44:33.71
schebe
0185デフォルトの名無しさん2012/10/20(土) 23:31:44.31
名前だけの話だけど、scheme 処理系はかっこいい名前多いね。イカロスとかゴーシュとかガンビツトとか。
CLはsbclとかなんか味気ない。
0186デフォルトの名無しさん2012/10/20(土) 23:36:07.19
>>170
SCHEYAKI すき焼きスキーム
0187デフォルトの名無しさん2012/10/20(土) 23:44:37.11
shample
0188デフォルトの名無しさん2012/10/21(日) 22:23:53.06
https://raw.github.com/strangeloop/strangeloop2012/master/slides/sessions/Flatt-TheRacketWay.pdf

RacketがClojureみたいに総合的な開発者向けイベントに参加して広報してた。
0189デフォルトの名無しさん2012/10/24(水) 23:53:10.42
+チック姉さんの親戚で
(チック姉さん
というのを思いついたので誰か薄い本をはよ
0190デフォルトの名無しさん2012/10/25(木) 00:01:38.28
しかし今日は暑いな
0191デフォルトの名無しさん2012/10/31(水) 15:05:08.07
女の子のポケットに入るscheme端末(ネット機能は
問わない)を具現化した・具現化しやすい環境って
なんだろう。生活の中でケータイの電卓以上のこと
がしたいし、計算履歴を残せるとうれしい。入力支
援があるとなお良い。
数年後、タッチパネルにUbuntuを入れられる世の中
になるなら開発せずに待つんだけど。
0192デフォルトの名無しさん2012/10/31(水) 23:34:07.45
これはどう?
http://www.sony.jp/CorporateCruise/Press/200901/09-0108/
0193デフォルトの名無しさん2012/11/02(金) 01:56:43.43
JVMがワンチップに入るんだから、Scheme処理系も入ると思います
0194デフォルトの名無しさん2012/11/02(金) 22:17:34.71
FPGAにlispマシンを実装するのは、どっかで見たな。
0195デフォルトの名無しさん2012/11/02(金) 23:14:31.74
末尾最適化がネックなのかな
clojure もJVMの都合で末尾最適化を仕様に入れなかったという話だし
0196デフォルトの名無しさん2012/11/04(日) 15:25:21.55
λ...
0197デフォルトの名無しさん2012/11/04(日) 21:29:20.88
Scheme で書かれたものを github で検索したら何かの演習課題のこたえみたいなのばっかりなんだが、
こういうのを github に上げる奴は見てもらう価値があると思ってやってんの?
それとも単なるバックアップ先として使ってるだけ?
0198デフォルトの名無しさん2012/11/05(月) 09:44:24.19
何かを公開するとき、「見てもらう」なんて卑屈になる必要はないんだよ。
0199デフォルトの名無しさん2012/11/05(月) 15:54:27.02
GitHubの検索機能が貧弱なのが悪いんだよ。キーワードで除外できれば良いのに。

http://www.google.com/cse/home?cx=013299269060639926749:0zjwws1-vxu&hl=ja

「scheme -sicp」みたいな感じでこの辺使ってみたらどうよ?
02001912012/11/05(月) 18:14:56.02
やっと書き込めた。
>>193
もうすぐ2013年だし、2009年1月は古くない?
http://kakaku.com/pc/note-pc/ma_0/s5=-10/
ミニノートって言うんだっけ?いわゆるEeepc系ってタブレットに変わっちゃったんだね。
どこのメーカーも作っていないようだ。
http://kakaku.com/pc/pda/ma_0/s1=1/s2=-5/
一万円切ったほぼ最新Androidも時間の問題で発売されそうだから、Androidで開発して
おくのが一番の近道なのかな。
>>193
誰か作っていそうだけど、マイコンで作るのも楽しそうだね。
ネットに繋げないとして入力デバイスは何がいいんだろ。
0201デフォルトの名無しさん2012/11/06(火) 00:21:13.62
androidでいいならこんなのとか
http://android.allappli.net/d_jp.gr.java_conf.hilite.schemepad.html
0202デフォルトの名無しさん2012/11/06(火) 19:33:07.28
gentooのracketパッケージがドキュメントを入れないのは嫌がらせかなにかなのか
racketが一番いいのはドキュメントなのに
0203はちみつ餃子 ◆8X2XSCHEME 2012/11/17(土) 19:15:45.62
>>202
そういうことは gentoo スレで言った方がいいんじゃね?
0204デフォルトの名無しさん2012/11/18(日) 08:40:41.95
おまいらなら部屋を掃除することを「ガーベージコレクション」って言うよな!
0205デフォルトの名無しさん2012/11/18(日) 14:12:07.73
gaucheで(time)の出力結果を文字列として取得したいのですがやり方がわかりません
標準出力にこう出力されるものです
; real 0.000
; user 0.000
; sys 0.000
(with-output-to-string (lambda () (time (list 1 2))))のように
with-output-to-stringを使うと空文字が返ってきます
0206デフォルトの名無しさん2012/11/18(日) 14:49:29.24
http://chaton.practical-scheme.net/gauche/
ここで聞いた方が早いかも
0207はちみつ餃子 ◆8X2XSCHEME 2012/11/18(日) 15:42:00.08
>>205
time の結果は標準出力ではなく標準エラー出力に表示することになっているので、
標準エラー出力を捕えないといけない。
こんな感じかな。

(call-with-output-string
(cut with-error-to-port <>
(cut time (list 1 2))))
0208はちみつ餃子 ◆8X2XSCHEME 2012/11/18(日) 15:48:51.72
一貫性を考えると with-error-to-string として括り出した方がいいかも。

(define (with-error-to-string thunk)
(call-with-output-string
(cut with-error-to-port <> thunk)))

(with-error-to-string (lambda()(time (list 1 2))))
0209デフォルトの名無しさん2012/11/18(日) 19:31:40.33
文字列じゃなくてかかった時間を数値として取り出したいなら、time-thisというのもある。
マニュアルのgauche.timeのところ見てみ。
0210デフォルトの名無しさん2012/11/19(月) 02:18:32.99
>>206-209
ありがとうございます。
標準エラー出力が出力先だということを見落としていたのはまずかったです。
勉強になりました。数値を取得できるのは意外でした。いじってみます。
0211デフォルトの名無しさん2012/12/03(月) 06:56:39.61
gosh> (iota 3 1 0.1)
(0.9999999999999999 1.0999999999999999 1.2)
これ理解できないのですが
誰かご説明お願いいたします。
0212デフォルトの名無しさん2012/12/03(月) 08:23:43.55
結果から憶測すると、最初に1.2を計算しておいてそれから引いてみたいだね。
逆順で作る理由はリスト作るの簡単だからかな。
0213デフォルトの名無しさん2012/12/03(月) 08:27:17.09
(define (iota count :optional (start 0) (step 1)) ;srfi-1
(unless (and (integer? count) (>= count 0))
(error "count must be nonnegative integer: " count))
(if (and (exact? start) (exact? step))
;; we allow inexact integer as 'count', for the consistency of
;; giota and liota in which we can also accept +inf.0 as count.
(let1 count (exact count)
(do ([c count (- c 1)]
[v (+ start (* (- count 1) step)) (- v step)]
[r '() (cons v r)])
[(<= c 0) r]))
;; for inexact numbers, we use multiplication to avoid error accumulation.
(do ([c count (- c 1)]
[r '() (cons (+ start (* (- c 1) step)) r)])
[(<= c 0) r])))

なるほど、確かに。
0214デフォルトの名無しさん2012/12/03(月) 14:31:12.96
>>212 213
ありがとうございました。
0215デフォルトの名無しさん2012/12/06(木) 12:36:06.37
2ch$ racket
Welcome to Racket v5.2.1.
> (require srfi/1)
> (iota 3 1 0.1)
'(1 1.1 1.2)

CL-USER> (loop :for i :from 1 :to 1.2 by 0.1 collect i) ;; cl
(1 1.1 1.2)

ベタなネタだけどLISPのメイン処理系(複数可)、サブ処理系、ほとんど使わないけど
入れている処理系のアンケートを年2回(コミット数を維持できるなら数回やっても可)
やらない?
IPバレたくない人もいるだろうからプロキシ機能ありで項目ごとにコメントできて、
CUIで動くプログラムを誰か書いて。忙しい人もいるだろうから以前の投稿内容は維持
されて、投稿期間に実行すればいいだけ。プログラム作成者が恣意的にデータをいじれ
ないように厳密なスキームを作ってプログラミングを書いて欲しい。プロキシ変更
などによる連続投稿はありを前提として規制できるならメールアドレス提供、ID、
パスワード発行等の労力負担程度まで許容して投稿側の便利さを追求して欲しいと思う。
プログラム作成者とサーバ提供者を分離した方がプログラム作成者の敷居は下がるのかな。
参考 ttps://www.archlinux.de/?page=PackageStatistics

スルーされそうなので、超亀レスでもいいのでレスください。私はサクッと具現化する
能力はないのでプログラム作成者が現れずにレスの状況によっては私が作ることを検討
しないといけないのかもしれない。
0216デフォルトの名無しさん2012/12/06(木) 13:07:18.64
つ http://kohada.2ch.net/vote/
0217デフォルトの名無しさん2012/12/06(木) 13:09:11.05
何で処理系のアンケート取る程度で、「ぼくのかんがえるさいきょうのしすてむ」作んなきゃいけないの……。
しかも他人に作らせるつもり満々とかなにそれこわい。
0218デフォルトの名無しさん2012/12/06(木) 13:35:31.81
意味がわからない
こわい
0219デフォルトの名無しさん2012/12/06(木) 14:01:24.45
報酬支払うなら作ってやるよ。
0220デフォルトの名無しさん2012/12/06(木) 22:00:49.60
はやってる しょりけい
はやってない しょりけい
そんなの LISP じたいの マイナーさ かんがえたら ごさ
0221デフォルトの名無しさん2012/12/07(金) 00:30:31.09
>>215
ありがとうございました。
0222デフォルトの名無しさん2012/12/09(日) 13:16:30.41
syntax/macro/functionみたいな、適用可能な要素一般の呼び方ってなにかあります?
applicableとかですかね
0223デフォルトの名無しさん2012/12/09(日) 14:04:53.39
map/operator
0224デフォルトの名無しさん2012/12/09(日) 15:21:45.00
gaucheだとApplicable objects(適用可能なオブジェクト)と呼んでるね。
0225はちみつ餃子 ◆8X2XSCHEME 2012/12/09(日) 15:23:03.08
>>222
Lisp 全般はわからないけど Scheme の用語の中には相当する言葉はないと思う。
apply という言葉もマクロには使わないし。 (マクロ展開の実体を use という)
operator もマクロに使う言葉じゃないなぁ。
見た目に同じでもプログラム的な作用としては違うから、どうしてそういう一般化した用語が欲しいのか気になる。

強いて妥当な言葉をひねり出すなら「式の先頭」くらいじゃね?
0226はちみつ餃子 ◆8X2XSCHEME 2012/12/09(日) 15:24:39.22
>>224
マクロはオブジェクトじゃないよ。
0227デフォルトの名無しさん2012/12/09(日) 15:31:07.24
command/instruction
0228デフォルトの名無しさん2012/12/10(月) 10:09:27.75
>>222
CL的にはoperatorでOK。
www.lispworks.com/documentation/lw50/CLHS/Body/26_glo_o.htm

>>226
gaucheならオブジェクトだしCLでもオブジェクトだし。
0229デフォルトの名無しさん2012/12/22(土) 13:59:08.93
学習始めたばっかりの初心者の感想だけどSchemeのリストってすごく難しいね
'(1 2 3) == '(1 . (2 . (3 . ()))) == (cons 1 (cons 2 (cons 3 '())))
どれがどれのシンタックスシュガーなのかサッパリ分からん
02302292012/12/22(土) 14:06:09.07
あと、だいたいのScheme入門には()がリストの終端を表すって書いてあるのに、実際には
'(1 . ((). (2 . ()))) これが (1 () 2) こんな感じで通っちゃうし

(length '(1 . ((). (2 . ())))) これは 3 になるし、終端判定に()は利用されてないんじゃね?
だったら終端に()付ける必要なくね?って思っちゃう
0231デフォルトの名無しさん2012/12/22(土) 14:33:02.55
http://www.shido.info/lisp/scheme3.html
初めてだと、listが見た目分かりやすいような気がする
(list 1 2 3)
0232デフォルトの名無しさん2012/12/22(土) 14:34:22.09
>>230
コンスセルはテキストに載ってないか?
コンスセルを書いて、よく考えて見ろ。理解が早まる。
0233デフォルトの名無しさん2012/12/22(土) 14:36:21.30
最初のうちはこんな感じで図を描くのがいいよ
http://www.geocities.jp/m_hiroi/func/abcscm02.html
0234はちみつ餃子 ◆8X2XSCHEME 2012/12/22(土) 15:01:57.51
>>230
そのリストの最後は () で終わってるよ。
02352292012/12/22(土) 15:17:11.00
>>230-233
ありがとう。lengthの実装見てなんとなく理解できた。
()が要素にあったらそこを終端と判断する、ってわけじゃなく、cdrの戻り値が()であれば終端と判断する、ってことか
と、理解してからコンスセルの形を見れば一目瞭然だったw

んー、ドット対の利用価値がイマイチ分からんけど(consで説明すりゃいいじゃん……)もう少し読み進めてみます
0236デフォルトの名無しさん2012/12/22(土) 15:17:57.98
漏れてた。>>234もありがとうございます
名無しに戻ります
0237はちみつ餃子 ◆8X2XSCHEME 2012/12/22(土) 15:45:06.32
>>235
ドット対はコンスセルの外部表現で、cons はコンスセルを生成する手続という違いがある。
文字列で言えば "ab" と (string #\a #\b) の違いと説明すればわかるかな?
0238デフォルトの名無しさん2012/12/22(土) 20:11:21.84
consは無視して、car, cdrが使えればいいんじゃないの。
リストで実用的なプログラムをいっぱい書いてから戻って考えた方が
理解が速いんじゃないの。
cons回りにかけた10時間が意味があったのかよくわからん。

SICPはいつ読めばいいのかね?
0239デフォルトの名無しさん2012/12/22(土) 20:54:14.44
>>235
ドット対は関数の可変長引数が楽になる
0240デフォルトの名無しさん2012/12/23(日) 11:30:21.02
ドット表記なしに連想リスト書くと、罰ゲームワロタって思って偉大さが分かるよ!
0241デフォルトの名無しさん2012/12/23(日) 11:54:07.78
'((key1 . val1) (key2 . val2) ...)
0242はちみつ餃子 ◆8X2XSCHEME 2012/12/23(日) 12:44:48.06
余談だけど R5RS ではリストリテラルの破壊結果は未定義だから更新される可能性のある連想リストは quote で書かない方がいいぞ。
エラーにする処理系はまだいいけど、黙って不可解な動作をする場合もあるから要注意。
Gauche だとリテラルが一定という期待のもとに最適化する場合があるみたい。
http://blog.practical-scheme.net/shiro/20100106-modifying-literals

R6RS だと例外を投げるように明記されてる。
http://practical-scheme.net/wiliki/wiliki.cgi?R6RS%3a%E7%BF%BB%E8%A8%B3%3aR6RS%3a11.4.1%20Quotation
http://practical-scheme.net/wiliki/wiliki.cgi?R6RS%3a%E7%BF%BB%E8%A8%B3%3aR6RS%3a5.10%20Storage%20model
0243デフォルトの名無しさん2012/12/23(日) 13:42:12.44
リテラルで書く場合は定数として扱え、それが嫌ならcons使え、ってこと?
0244デフォルトの名無しさん2012/12/23(日) 13:48:18.26
そう。Schemeじゃなくてもそう。

http://www.faqs.org/faqs/lisp-faq/part3/section-14.html
0245デフォルトの名無しさん2012/12/23(日) 19:11:24.37
確かにリストが分かっていればあんまり困らない、ように思えるかもしれない。でも、ちゃんとコンスセルを理解してないと、マクロを沢山書くようになってから地味にハマる。というかオレはハマった。コンスセルはリストより基本的な構造だよ。だから大事。
0246デフォルトの名無しさん2012/12/23(日) 20:26:15.95
>>245
わかっててツケにしているんだからマクロを沢山書くようになってハマってから
ツケが回ったと思ってその時に考えればいいんじゃないの?
その頃にはSchemeの語彙も増えているだろうし、開発環境も整っていて解析も
しやすいでしょ。中学校の連立方程式を振り回して難しい問題を解いている
イメージだ。微分積分で楽な解法があるんじゃないの。
0247はちみつ餃子 ◆8X2XSCHEME 2012/12/23(日) 20:37:54.88
それは一理あるな。

言語の機能は相互に関連して成り立っているので、
簡単な方から難しい方へ学んでいけばいいというわけじゃない。
どうせ行きつ戻りつするのだから、
意義をわからずに学ぶよりは実際につっかえるところまで一旦先に進むのも有りだと思う。
0248デフォルトの名無しさん2012/12/23(日) 21:31:18.42
マクロは楽で生産性が高いけど、5年前に自分で作ったマクロ見たらワケわかんねぇ
0249デフォルトの名無しさん2012/12/23(日) 21:49:15.78
マクロなんざ展開したら余裕で把握できると思うんだけど、どんな複雑なマクロ書いてんだよ。

え? Series? 僕もさっぱり理解できません。
0250デフォルトの名無しさん2012/12/23(日) 22:09:34.22
>>249
読みやすくするために展開するってことは、はじめからマクロにしなけりゃいいんじゃ…
0251デフォルトの名無しさん2012/12/23(日) 22:33:30.28
>>250
マジレスすると、macroexpandとそれに類する機能の話。
マクロのデバッグには必須だと思う。知らなかったら便利だから使ってみて。
0252デフォルトの名無しさん2012/12/23(日) 22:52:15.39
読みやすくするためではなく、独自に発見したフレームやイデオムをマクロにするから、時間が経つと忘れる
結果、似た構造を持つマクロが大量生産される
定期的にマクロだけあつめてリファクタリングしたい
■ このスレッドは過去ログ倉庫に格納されています