2007-12-04
■ [event][scheme] 生駒読書会#1
日曜日に生駒に行ってきましたよ。てか関東からも人が来るとかwww生駒すげえwww *1
Scheme使いとSchemeビギナーが半々だったので、3章からやると意味不明になるかな…と思って 2章の最後から始めることを提案したんですが、別に良かったのかなぁ。
3impのために初めて書いたマクロのコードをここに置いときますね。
;; (record (a b c) ls (+ a b c)) (define-macro (record vars val . exps) `(apply (lambda ,vars ,@exps) ,val)) ;; (record-case exp1 ;; [key vars exp2..] ;; ... ;; [else exp3..] (define-syntax record-case (syntax-rules (else) ((record-case exp1 [else exp3 exp4 ...]) ; for else (begin exp3 exp4 ...)) ((record-case exp1 [key vars exp2 ...]) ; only one case (record vars (cdr exp1) exp2 ...)) ((record-case exp1 [key vars exp2 ...] case2 ...) ; more than one case (let ([r exp1]) (if (eq? (car r) (quote key)) (record vars (cdr r) exp2 ...) (record-case exp1 case2 ...)))))) (define (main args) (print (record-case '(hoge 1 2 3) (hoge (x y z) (+ x y z)) (else #f))))
今日気付いたんですが、Gaucheの場合recordはmatch-let1で代用可能です((use util.match)が必要)。
ともあれ、初主催お疲れ様でした:-)
*1 実家は関西だそうですが
■ [prog] CodeReposのアカウントを頂きました
初コミット。 テストがてらに、この前のRubyでS式を作るやつを上げてみました。
チェックアウトは
svn co http://svn.coderepos.org/share/lang/ruby/misc/sexp
からどうぞ!
■ [event] 2007年度未踏I期 畑PM採択プロジェクト 最終成果報告会
sandbox(仮) と 「子猫の手」 がおもしろかったお! あとafrousはUI(Ajax)の作りこみがやばい。
Objec[t]ankはなんかアカウントがうまく作れなくてよくわからん。 concier.orgはなんか動いてるのはわかるけどよくわからん。