関数型プログラミング事始め (11) Lisp処理系の導入
関数型プログラミングがはじめての方へ贈る入門の書
前節:Lispは関数型(続) 次節:Lispは前置形式
参考書:
・五味 弘「はじめてのLisp関数型プログラミング」技術評論社(2016)
・大山口 通夫、五味 弘「プログラミング言語論」コロナ社(2008)
・五味 弘「関数型プログラミングと数学(ITと数学)」技術評論社(2021)

2.2 Lisp事始め - Lisp処理系の導入
いよいよLispの言語仕様を紹介していきます。実際にLisp処理系を起動して使っていくことにします。Lisp処理系としてはISLispを取り上げます。
(1) ISO標準 ISLisp
ISLisp はISO(国際標準化機構、International Organization for Standardization)で制定されたプログラミング言語です。日本で仕様が検討され、日本発のプログラミング言語として、ISOで制定されました。これはプログラミング言語としては日本で最初でした。なおその後、RubyがISOで制定されました。
ISLispは当初Common LISP のサブセットとして検討され、Common LISP の基本的な言語仕様 を受け継ぎ、さらにSchemeのようにコンパクトな 仕様になっています。
例えば、Common Lispのオブジェクトシステム CLOSと比較して、コンパクトで実行効率の高いオブジェクトシステムILOSを採用しています。また言語仕様と処理系仕様の分離、Common Lispよりもデータ型のオブジェクトシステムへの統合を進めています。
(2) ISLisp処理系 OK! ISLisp
ISLisp処理系は各方面で開発されました。そこで筆者が開発に参加したISLispであるOK! ISLispを紹介します。
OK! ISLispサイト(筆者が管理をしています)
http://islisp.org/
http://islisp.com/
OK! ISLisp (Windows版)のダウンロードは以下になります。
http://islisp.org/jp/download-jp.html
ISLisp処理系だけでなく、関数検索システムやISLisp検証システムも有用なので、一緒にダウンロードしてください。
(3) ISLispの動作確認
ダウンロードしたISLisp.exeをダブルクリックしてください。ISLispが起動し、以下のようなウィンドウが表示されます。
> ISLisp Version 0.80 (1999/02/25)
>
ISLisp>
(+ 1 2 3)と打鍵してエンターキーを押下してみてください。
そうすると以下のように、1 + 2 + 3が計算され、値として6が返ります。
ISLisp>(+ 1 2 3)
6
ISLisp>
次に関数 FACT(階乗)を定義してみましょう。
ISLisp>(defun fact (n) (if (= n 0) 1 (* n (fact (- n 1)))))
FACT
ISLisp>
このFACT関数で100の階乗を計算してみましょう。
ISLisp>(fact 100)
93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000
ISLisp>
(4) (参考) Easy-ISLisp
笹川 賢一氏によるISLisp処理系 Easy-ISLispを紹介します。
GitHub - sasagawa888/eisl: ISLisp interpreter/compiler
このISLisp処理系はGNUのGuixパッケージとして採用されました。また並列化などの実装もされています。
(次回予告)Lisp超入門1
次回はOK! ISLisp処理系を使って、Lispの超入門の第1回を紹介する予定です。お楽しみに。
参考:プログラミング言語はどれがお得?(前編)|五味弘 (note.com)
参考:プログラミング言語はどれがお得?(後編)|五味弘 (note.com)
いいなと思ったら応援しよう!
よろしければサポートをお願いします!