Lisp最強 要素を組み合わせるもうひとつの方法は、Literal ListやLiteral Mapを利用することです。
Literal List
//java state("idle"). action("unlockDoor"). action("lockPanel")
のように別々に関数を呼び出す代わりに
//java state("idle"). actions("unlockDoor", "lockPanel")
や
#ruby state("idle"). actions(["unlockDoor", "lockPanel"])
のようにリスト形式で記述する。関数呼び出しの引数には可変引数の方が好み。
Literal Map
別名ハッシュまたは辞書。key-valueのペア。
#ruby state("idle", {"doorClosed" => "doorClosed"} )
:nameはシンボルで、Rubyでは先頭にコロンを付ける。同じ値のシンボルは同じオブジェクトになる。
state :name => "idle", :actions => [:unlockDoor, :lockPanel], :transitions => [:doorClosed => :doorClosed]
シンボルがない場合は文字列でも可。
Lispは、Literal Listと関数呼び出しが同じ構文。そもそも、Lispプログラムは全てネストされたリストで表現する。慣れればわかりやすいが、括弧が多すぎてイラつくのが難点。
Lisp最強(←しつこい)