サーバサイドもクライアントサイドもCommon LispでプログラミングできるJSCLというものがあることを知りました。
https://github.com/jscl-project/jscl
対話形式のREPLで小さなLISPプログラムを評価するだけではLispの理解レベルが深まらないと思い、JSCLを使って小さなウェブアプリケーションを作成しようと思いました。
しかし知識がないため何から始めれば良いかわかりません。そこで、GithubのJSCLのREADME.mdに記載されているGetting StartedやBuildの項目を見ながら、とにかく手順通り従って操作してみようと考えました。
まずはGetting Startedからです。
bash
1npm install -g jscl
上記コマンドによって、jsclをインストールでき、jscl-repl
コマンドを入力することでjsclのrepl環境が実行されることがわかりました。
次に、Buildの項目なのですが、以下のコマンドを使ってどうやらテスト用のjsclプロジェクトファイルを落としてくるようです。
bash
1git clone https://github.com/jscl-project/jscl.git
上記コマンドにより、プロジェクトディレクトリにjscl
ディレクトリが作成されました。
次にREADME.mdでは「load jscl.lisp in your Lisp, and call the bootstrap function to compile the implementation itself:」と記載があります。
訳して「あなたのLISPにjscl.lispを読み込んで、bootstrap関数を評価してコンパイルしよう!」と解釈をしました。
ここで「あなたのLISP」の意味がわからなかったのですが、どうやら異なるLISP処理系を導入する必要がありそうでした。
CLISPを導入しようと思ったのですが最近ではSBCLが人気があるようなので、brew install sbcl
して処理系をインストールしました。
さて、次はjscl.lispを読んでみよう。ということで以下のコードを実行して見ました。
bash
1$ sbcl jscl/jscl.lisp 2This is SBCL 1.4.8, an implementation of ANSI Common Lisp. 3More information about SBCL is available at <http://www.sbcl.org/>. 4 5SBCL is free software, provided as is, with absolutely no warranty. 6It is mostly in the public domain; some portions are provided under 7BSD-style licenses. See the CREDITS and COPYING files in the 8distribution for more information. 9*
jscl.lispは読めたのだろうか?ちょっと疑問がいろいろありましたがとりあえず読めたと仮定して次のコードを入力して見ました。
sbcl
1* (jscl:bootstrap) 2 3debugger invoked on a SB-INT:SIMPLE-READER-PACKAGE-ERROR in thread 4#<THREAD "main thread" RUNNING {10005505B3}>: 5 Package JSCL does not exist. 6 7 Stream: #<SYNONYM-STREAM :SYMBOL SB-SYS:*STDIN* {100001FB53}> 8 9Type HELP for debugger help, or (SB-EXT:EXIT) to exit from SBCL. 10 11restarts (invokable by number or by possibly-abbreviated name): 12 0: [ABORT] Exit debugger, returning to top level. 13 14(SB-IMPL::READER-FIND-PACKAGE "JSCL" #<SYNONYM-STREAM :SYMBOL SB-SYS:*STDIN* {100001FB53}>)
どうやらエラーが出てしまったようです。JSCL does not exist.
ここで躓いてしまったのですが、そもそもこんなところでつまずくようでは、いかんですよね(汗
どうしたものか悩んだ末、とある掲示板で質問させていただいたのですが、このような場合teratailの方がより親切な回答をいただけると思いましたのでことわりを入れて投稿させていただいております。
目標はとりあえず、jsclを利用してサーバサイドlispが適当なhtmlを返し、クライアントサイドでもlispの評価ができる環境を得る事です。
しかし恥ずかしながら、lispを利用したプロジェクトファイルの作成経験がないため、そこに至ることができません。
私に必要な知識、または目的に合ったサンプルプログラム、またはその使い方など、是非アドバイスをいただけないでしょうか。
よろしくお願いいたします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/06/02 22:34
2018/06/02 23:37