鴨川にあこがれる日々

軽い技術っぽい記事かいてます

MacへCommon Lispの導入

はじめに

現実逃避としてLispに興味がありました.
S式,ポーランド記法,マクロ,Emacs,関数型...
いろいろとキーワードは聞くわけですが,あんまり触ったことがなかったので,導入とHelloWorldくらいまでやろうと思います.

参考書など


エイリアン,かわいいですね.

お金がないので,こちらのサイトを参考にしようと思います.
マンガで分かるLisp(Manga Guide to Lisp)

環境

参考資料としてあげたマンガではCommon Lispを使用しています.
そこでもおすすめされているClispという処理系を導入します.

導入

コマンド一つで導入できました.

$brew install clisp

インストールしたらTerminalで"clisp"とタイプすると対話モードで立ち上がります.

$clisp
  i i i i i i i       ooooo    o        ooooooo   ooooo   ooooo
  I I I I I I I      8     8   8           8     8     o  8    8
  I  \ `+' /  I      8         8           8     8        8    8
   \  `-+-'  /       8         8           8      ooooo   8oooo
    `-__|__-'        8         8           8           8  8
        |            8     o   8           8     o     8  8
  ------+------       ooooo    8oooooo  ooo8ooo   ooooo   8

Welcome to GNU CLISP 2.49 (2010-07-07) <http://clisp.cons.org/>

Copyright (c) Bruno Haible, Michael Stoll 1992, 1993
Copyright (c) Bruno Haible, Marcus Daniels 1994-1997
Copyright (c) Bruno Haible, Pierpaolo Bernardi, Sam Steingold 1998
Copyright (c) Bruno Haible, Sam Steingold 1999-2000
Copyright (c) Sam Steingold, Bruno Haible 2001-2010

Type :h and hit Enter for context 
help.

[1]>

ちなみにClojureがしたいときは,
Web-based online coding environment | paiza.IO
で環境構築しないで試すことができます.

本題

HelloWorld!しましょう.

注意点としては,
関数や演算子を使用するときは括弧で囲みます.
";"でその行をコメントアウトします.
1から10までの総和は,演算子1つで済みます.楽ですね.
分数のまま計算が行えるので,普段Rubyを使っている身としては新鮮でした.

[1]> "HelloWorld!"
"HelloWorld!"

[2]> (print "HelloWorld!")

"HelloWorld!"
"HelloWorld!"

[3]> ;演算子を先頭に置き,引数をその後ろ,全体を()で囲む
(+ 1 2 3 4 5 6 7 8 9 10)
55
[4]> (/ 1 5)
1/5 ;;Rubyだと1/5==>0

[5]> (* 4 (/ 1 4))
1 ;;Rubyだと(1/4)*4==>0 

おわりに

まとまった時間でLand of Lispしようと思います.