リスプ(スキーム)など

吉田武の素数夜曲という本の副題が

女王陛下のLISP

とあって、そう言えばむかし、数学やるのならLISPとかSchemeを勉強しなくちゃ、とか言われてたなぁと思い出しました。


LispってSchemeも含めていろんな名前があってどれが本流かわからないのが勉強しにくいことのひとつの理由になっていると思いませんか?
まあしかたないか。


いまどきはどのプログラムを使うのかなぁ、と立ち読みすると、RacketとかGaucheとか書いてある。
どちらも知らないけれど、なんとなくよさそうなので調べてみました。


どちらも相当有名なようです。
Schemeでなくていいなら、GCL(GNU Common Lisp)とかCLSPとかも候補に上がるのかもしれませんが、おすすめしません。
なぜなら相当違っているので、世の中に出回っている有名な本が読めないから。
計算機プログラムの構造と解釈(Structure and Interpretation of Computer Programs)
とか、Scheme手習い(The Little Schemer)とか。


Racketは、ちょっと前までPLT SchemeとかDrSchemeとかの名前のものの発展系のようです。
Windowsユーザーなら使ったことがあるかもしれません。Ubuntuにもあってちゃんと動きました。
マニュアルでは言語の選択でBeginning Studentを選べと書いてありましたが、それではうまくない、というか

Scheme手習い(The Little Schemer)

atom?という命令が作れなかったので、Definition Windowに次にように書くことで解決しました。

#lang racket
(define atom?
  (lambda (x)
    (and (not (pair? x)) (not (null? x)))))