Gauche > Archives > 2010/06/23

2010/06/23 07:14:20 UTChigepon
#
Erlangから戻ってくると match-lambda を多用するようになるなあ。
2010/06/23 07:43:54 UTCshiro
#
match-lambdaいいんだけど、ちょっと括弧がうるさい感じなんだよねぇ。
2010/06/23 08:44:50 UTChigepon
#
ああ。たしかに cond と同じ問題ですね。
2010/06/23 08:49:25 UTCshiro
#
match-lambdaの場合、マッチ節の中でさらに括弧が重なるでしょう。まあ普通のmatchと同じっていえばそうなんだけど、関数定義部分でマッチがかけられる他の言語と比べちゃうともう少しなんとかできないかとは思う。
2010/06/23 08:52:50 UTChigepon
#
match させていものが list なのでそうなりますね。
2010/06/23 10:03:41 UTCkoguro
#
今更無理だけど、{} に特別な意味を持たせて、{ (foo) (bar) ... }で (begin (foo) (bar) ...) の意味になるんだったら、他の言語と同じような感じでかけたのかもしれませんね。(match-lambda pat1 {...} pat2 {...}) みたいな感じで。
2010/06/23 10:10:19 UTCshiro
#
んーそれなら (match-lambda pat1 (begin ...) pat2 (begin ...) ...) でいいのでは? beginが入ると長くなるってことかな。
#
個人的には複数引数、つまりmatch-lambda*を使う場合が一番気になってて、というのは引数をくくるのに一組括弧が入って、さらに書く引数においてパターンで括弧を使うので。
2010/06/23 10:13:01 UTCkoguro
#
そうそう、なんか begin がうるさい感じがします。
2010/06/23 10:13:12 UTCshiro
#
例えば3引数で、最初の引数が空リストかそうでないかでわけようとすると
#
(match-lambda*
 [(() a b) ....]
 [((x . xs) a b) ...])
#
Arcみたいに、beginがdoならあんまりうるさくないかも >koguro
#
マクロ使えばこんなふうに書けなくはないが、CLのloop的ダークサイドに落ちそうだ↓
#
(match-lambda*
 ()       a b -> (proc1) (proc2) ||
 (x . xs) a b -> (proc3) (proc4))
2010/06/23 10:17:15 UTCkoguro
#
もはや srfi-42 でダークサイドに落ちているので、躊躇することはないかも。
#
けど、その書き方だと、なんか || を忘れそう。
2010/06/23 10:19:13 UTCshiro
#
||じゃなくてもいいけど、複数引数を括弧無しでサポートするならなんか区切りが必要なんですよね
2010/06/23 10:20:00 UTCkoguro
#
Lisperって区切り文字が苦手そう。
2010/06/23 10:20:25 UTCshiro
#
Clojureの引数リストをベクタにするって手は思った以上に上手い手だったかもしれん。
#
区切り文字というか、式以外で文法的に意味を持つキーワード、っていうのが苦手かな。CLのloop書いてるといつもloopキーワードと式とがごちゃごちゃになる。
2010/06/23 10:24:26 UTCkoguro
#
関係ないけど、SQLで select ... from ... とするところ、fromを忘れたりして、"fromがないよ
#
とかエラーが返ってくると、「ないって分かってるんなら付け足して解釈しろよ」と思ってしまう。
#
loopキーワードと式とかは、Emacsでがんばると色分けとかできるのかしらん。
#
コンパイル時に調べたことなんかを、エディタから取得できると色分けに限らずいろんな操作ができるんですよね。誰かGaucheでエディタ作らないかな。
2010/06/23 10:30:58 UTCshiro
#
Gauche-gtkでエディタ作ってた人がいたけど。
#
色々おもしろいことはできそうなんだけれど、メンテしてゆくパワーが相当必要だろうなあ。PLTのDrScheme (DrRacketになったんだっけ?) は色々おもしろいことをやってたような気がする。
#
パワーがあれば、エディタを作るってのはdogfoodingに最適なんだろうけど。常用するものだから。
2010/06/23 10:35:05 UTCkoguro
#
PLTの環境ってステップ実行とか備えていて、結構親切な環境だなと思ったことがある。
#
中途半端に Emacs が使いやすいので、新規にエディタを作ろうという気になれない。
2010/06/23 10:38:50 UTCshiro
#
そうなんですよね >Emacs is good enough。作るならそれ以上のものにしないと意味ないというか。
#
PLTは教育用という側面もあるからなあ。
#
「そんなのSchemeじゃない!」と言い出す人がいるからでしょう RT: @zick_minoh: なんでSchemeとRacketを区別するんだろう。 http://www.international-lisp-conference.org/2010/call-for-papers.txt
2010/06/23 10:44:23 UTCzick
#
ワロス
2010/06/23 10:44:46 UTCkoguro
#
ええっ、じゃR6RSの騒ぎはなんだったんだ。
2010/06/23 10:45:41 UTCshiro
#
R6RSの騒ぎで懲りたんじゃないでしょうか。
2010/06/23 10:49:23 UTCzick
#
それじゃあ、R7RSはR5RSのようなシンプルな方向に戻るんですかね。
2010/06/23 10:50:45 UTCshiro
#
拡大派と簡潔派が "Agreed to disagree" したために、シンプルな仕様とリッチな仕様の2段構えになる予定です。
#
今それぞれworking group内でいろいろやってるはず。今年のScheme Workshopの後あたりに経過報告とか出てこないかな。シンプルな方はWGを作る前にずいぶん活発にオープンディスカッションしてたんですが、リッチな方はどうするつもりなのかよくわかりません。
2010/06/23 11:58:50 UTCえんどう
#
http://twitter.com/eyasuyuki/status/16843410357
#
反映されない
#
@chaton_gauche Racketっていうのも検索しにくい名前だなあ。 http://racket-lang.org/new-name.html Racket is still a dialect of Lisp and a descendant of Scheme.
2010/06/23 12:03:16 UTCshiro
#
あれぇ? ログを見るとtwitterのポーリングはちゃんと動作してるんだけどなあ。mentionsに引っかかって来ない場合があるのかなあ。
2010/06/23 12:10:20 UTCえんどう
#
http://twitter.com/eyasuyuki/status/16844934993
#
これも反映されない。
#
@chaton_gauche TweetDeckからPOSTすると反映されないとか?
2010/06/23 12:51:00 UTCshiro
#
どこからpostしたかは関係ないと思うけどなあ
2010/06/23 12:55:52 UTCshiro
#
あれ、eyasuyukiがchaton_gaucheのfollowersに出てこない。もしかしてページングされちゃってるとかそういう話?
#
followersの返り値がきっかり100ユーザなので、それくさいな。どこ見れば続きがあるってわかるんだろう。
#
cursorを渡さないとならないのか。
2010/06/23 13:12:03 UTC齊藤
#
Windows 環境で directory-list を使うと
#
*** ERROR: cannot compare incomplete vs complete string:
#
ってなエラーになる場合があるようです。
#
日本語ファイル名を使ってないディレクトリなら問題ないっぽいです。
2010/06/23 13:18:12 UTCshiro
#
@eyasuyuki: followerを全部取るようになったはずなんで、試してみてください。
#
>齊藤: 日本語ファイル名がsjisで来ちゃうのかな。文字列比較の片方がincompleteならもう片方をincompleteにcoerceしてしまうのがいいだろうか。
2010/06/23 13:27:21 UTChigepon
#
Erlang ならこうかな。
#
hoge([], A, B) ->
   foo,
   bar;
hoge([X | XS], A, B) ->
   foo,
   bar.
#
Erlang は , と ; と . や end などがややこしいのでまた別の問題がある。
2010/06/23 13:28:41 UTCshiro
#
ピリオドで終えるのはProlog由来ですかね。
#
Haskellみたいに並べられると綺麗なんだけど、REPLセマンティクスの場合、システムにとってはどこで定義が終わるかわからないので、Schemeとしてはやっぱり定義全体が()でくくられてないと難しいでしょうね。
2010/06/23 13:30:59 UTChigepon
#
はい。REPL では特にはまります。
2010/06/23 13:39:32 UTChigepon
#
行末に特に意味がないのが辛いところですね。