Scalaから何らかのLisp方言に乗り換える場合にはJVMのライブラリ関連があるからClojureを使うのが普通の流れな気がするが、Common LispにもJVMで動くABCLという処理系があるので試してみた。
Armed Bear Common Lisp (ABCL) - Common Lisp on the JVM
Docker使うととりあえず動く。
docker run -it easye/abcl
REPLが立ち上がるのでQuicklispを入れる。
(load "http://beta.quicklisp.org/quicklisp.lisp") (quicklisp-quickstart:install)
GitHub - fukamachi/clack: Web server abstraction layer for Common Lisp
とりあえずhunchentootとclackを入れて、Usageにあるサンプルを動かしてみる。
(ql:quickload '(:hunchentoot :clack)) (defvar *handler* (clack:clackup (lambda (env) (declare (ignore env)) '(200 (:content-type "text/plain") ("Hello, ABCL!")))))
UsageにはWebブラウザで http://localhost:5000/ にアクセスしろ、とあるがdocker内で動作しているからdexadorで試す。
(ql:quickload :dexador) (dex:get "http://localhost:5000/")
動いた。
"Hello, ABCL!" 200 #<EQUAL HASH-TABLE 4 entries, 11 buckets {33B1D2E7}> #<QURI.URI.HTTP:URI-HTTP http://localhost:5000/> #<TWO-WAY-STREAM {1A6F263C}>