2010-01-01から1年間の記事一覧

暗黙の引数 &env を使ってスコープを曲げてみる

昨日に引き続き、Clojureマクロの暗黙の引数&envについて。&envを通してマクロ呼び出しのフォームを囲む環境が手に入るわけで、これを利用しておもしろいことはできないだろうか。そう考えているうちに、スコープを曲げる - 主題のない日記で出てきた例を思…

マクロの暗黙の引数 &form と &env

Varの適用 Clojureでは、たとえば (#'list 1 2 3) が (list 1 2 3) と同じ結果を返す。Varに関数が束縛されている場合には、Varに束縛されている関数がそのまま適用されるようだ。では、Varにマクロが束縛されている場合にはどうなるだろう?マクロを展開し…

インライン Brainfuck をモナドっぽいなにかで

タイトルは釣り気味?なんとなくStateモナドのつもりで書いていたけど、これをモナドと呼ぶのかは謎。メインのアイディアは、Brainfuck の各命令を関数で表し、メモリやポインタといった Brainfuck の実行に必要な状態を引き渡していくというもの。つまり、…

gaucheyライブラリ

今日はShibuya.lispのHackathonがあったようです。東京には行けなかったんですが、時間中(13:00 - 17:30)は時間をとってリモートで勝手に参加させてもらってました。時間中はひたすらClojureを書いていました。gaucheyという、Gaucheにバンドルされたライブ…

(nagoya-lisp 0) やりました

第0回 nagoya-lisp をやりました。(nagoya-lisp 0) : ATND今回は、とりあえず次回から何をやるのかを決める準備の回でした。わりと話し合いがメインの回だったのにホワイトボード等ない場所での開催となったので、Google docsで議事録を共有しつつ進める形に…

nagoya-lisp やります!

名古屋を中心とした Lisp 系言語の勉強会をやろうと思います。(nagoya-lisp 0) : ATND 日時 2010/10/16 18:00〜19:30(予定) 場所 名古屋市栄の Cafe どえりゃあ 初回の予定 今後勉強会で何をやっていきたいかについての作戦会議 具体的に何をやっていくのか…

わーい、テトリス言語 Tetrlang 完成したよー\(^o^)/

これはなに? Tetrlang は、研究の中間発表を1週間後に控えた大学院生の現実逃避によって作り出された言語テトリスにインスパイアされた言語です。Tetrlang は以下のような特徴をもつ言語です。 各命令がテトリスのブロック(テトラミノ)によって表される 他…

Lisp in Small Piecesを読んだ

読み終わったのは3週間くらい前だけど、ゴールデンウィークで普段よりは時間があるので、読んだ感想など書いてみる。Lisp in Small Pieces作者: Christian Queinnec,Kathleen Callaway出版社/メーカー: Cambridge University Press発売日: 2003/12/04メディ…

麻雀の待ちを出力する問題を amb で

毎度流行りには乗り遅れる傾向にあるけど、麻雀の待ちを出力する例の問題をいまさら解いてみる。「バックトラックするだけの問題なら amb 使えば楽勝でしょ」と思って amb を使ってやってみたんだけど、思いのほかてこずった。しかも、なんだかうまく頭を切…

Gambitでクロージャをシリアライズ

できるよという話。Gambitに強力なシリアライズ機能が付いていることをyieldした途中の状態をファイルに保存とかって出来ますか - 崩壊現実-全てはvirtualに収束する-を見ていてふと思い出したので、クロージャを使って同じようなことを試してみた。 (define…

迷路を最短経路で解く問題を Clojure で

Clojure といえば、巷ではProgramming Clojureの日本語訳である「プログラミング Clojure」の献本が行われているようで、これが発売すればいよいよ日本でも本格的に Clojure が広まっていくんじゃないでしょうか。というわけで、スタートダッシュ(というかフ…

噂の「英単語を覚えるスクリプト」をClojureで

第1回 Scheme コードバトンのお知らせ - Higepon’s blogでネタとして挙がっている英単語を覚えるスクリプトをClojureで書いてみた、という話。コード自体はid:higeponさんのScheme(R6RS)版をほぼそのままClojureに移植しただけ。 ソースコード (追記:ソース…