scheme

microKanrenで始めるlogic programming入門 (2)

単一化しようぜ ==の動作を見てみよう。 (define (== u v) (lambda (s/c) (let ((s (unify u v (car s/c)))) (if s (unit `(,s . ,(cdr s/c))) mzero)))) 前にも説明したように(== u v)はuとvが同一であることを宣言している。この時==は引数のstateであるs/…

microKanrenで始めるlogic programming入門 (1)

microKanrenとは microKanrenの話の前にまずminiKanrenの紹介を。 miniKanrenは埋め込み言語としての利用を想定した論理プログラミング言語で、実際に各種言語上での実装が存在する。The Reasoned SchemerはminiKanrenをscheme上での実例を示しながら紹介す…

syntax-rulesをexplicit renamingに変換する

桜がそろそろ散り始めてる。桜が散った後で猛烈に後悔するというサイクルをここ数年繰り返している気がする。今年は後悔したくないので週末にどこかへふらっと桜を見に行こうと思う。 さて、しばらく前からsyntax-rulesをexplicit-renamingに変換するマクロ…

syntax-rulesの健全性

しばらく前にドブロブニクとイスタンブルに旅行に行ってきた。イスタンブルにいたのが丁度twitterが遮断されていた時期で、はーこんなこともあるもんだなと珍しがったりしていた。土産はクロアチアビールと干しイチジクだが最近人と会わないので減る気配がな…

R7RSをKindleで読む

最近Kindleを買ったのでいろいろなものを突っ込んでみているのですが、R7RSのpdfはフォントが小さすぎてとても読めたものではないですね。さてどうしたものかなどと思っていたらR7RSのMakefileにebook用のオプションがあるのを発見。こっちからソースをDLし…

ppcでpicrinが動いた

といってもコンパイルして動かしただけ。コードの移植性が高いのですね〜 $ make tak [ 96%] Built target picrin [100%] Built target repl Scanning dependencies of target tak 21.620000 [100%] Built target tak検証機は大学から拾ってきたG4 mac mini…

syntactic closureで健全なletを

タイトルの通り。letを定義しているくらいだからquasiquoteなんてサポートしてないよねという前提explicit renamingの方が筋がいいと感じた