Lisp

非決定性 with 例外

『On Lisp』の非決定性が面白い。 (define (two-numbers) (list (choose '(0 1 2 3 4 5)) (choose '(0 1 2 3 4 5)))) (define (parlor-trick sum) (let ((nums (two-numbers))) (if (= (apply + nums) sum) `(the sum of ,@nums) (fail)))) > (parlor-trick …

Perlで継続

現在、『On Lisp』が3巡目の終盤に差し掛かっている。でも、いまいち継続を理解できていない。分かり易い解説を見つけたのでPerlに翻訳してみた。(本を読む FizzBuzzとGaucheで学ぶ継続の基礎) use strict; use warnings; sub fizzbuzz { my ($next, ($n)) …

Lispお勉強中

心に余裕が出てきたこともあってLispを再学習中。今は『実践Common Lisp』を読んでいる。やっと第12章が終わった。 思い返すと腰を落ち着けてプログラミング言語の勉強をやってない。何とか使いこなしているのはC言語とPerlくらい。どちらも仕事で使ってい…

C言語でクロージャ

クロージャって何だろう? クロージャは関数と環境を一緒にしたものである。クロージャは、関数がレキシカル環境から何かを参照するときには暗黙に必ず作られている。 『ANSI Common Lisp』- 6.5 クロージャ より どんな風に使うのだろう? アキュムレータを…

プログラミングClojure

やっと『プログラミングClojure』を読了した。本書は薄いし分かり易い。入門や概要を掴むにはもってこい。訳も読みやすいし。ちなみにClojureとは、Java仮想マシン(JVM)上で動作するLisp方言のことである。Lispなので当然S式、つまりカッコだらけ。見た目は…