LoginSignup
3
1

MacでCommonLispの環境を作成する(妥協)

Last updated at Posted at 2024-01-14

はじめに

元々はRoswell + VSCodeでCommonLispの実行環境を作成したかったのですが、うまくいかなかったので、VSCode + Alive + SBCL + Quicklispでどうにかした際の記録を書いていきます。

インストール

以下のツールをインストールします

  • SBCL
    • CommonLisp本体
  • Quicklisp
    • パッケージ管理
brew install sbcl
curl -O https://beta.quicklisp.org/quicklisp.lisp
curl -O https://beta.quicklisp.org/quicklisp.lisp.asc
gpg --verify quicklisp.lisp.asc quicklisp.lisp
sbcl --load quicklisp.lisp

SBCLの起動中に以下のコードを実行します

* (quicklisp-quickstart:install)
* (ql:add-to-init-file)

シェルの設定ファイル(~/.bashrc~/.zshrcなど)に以下のコード追記します

QUICKLISP_HOME=~/quicklisp

コンソールで以下のコマンドを実行し、設定を反映します

source ~/.bashrc

AliveのREPL環境をインストールします

git clone https://github.com/nobody-famous/alive-lsp.git $QUICKLISP_HOME/quicklisp/local-projects/alive-lsp

VSCodeの設定ファイル(.settings.json)に以下を追記します

{
  〜〜(省略)〜〜
    "alive.lsp.startCommand": [
        "sbcl",
        "--eval",
        "(require :asdf)",
        "--eval",
        "(asdf:load-system :alive-lsp)",
        "--eval",
        "(alive/server:start)"
    ]
}

VSCodeを起動して、拡張機能からAliveを検索します。

インストール後に、LispファイルがあるディレクトリでVSCodeを再起動すると、REPLが自動で起動します。

使い方

コマンド一覧

コマンド 説明
Alt+Shift+Up カーソル下のS式全体を選択状態にする
Alt+Shift+Enter カーソル下のS式をREPLに送る
Alt+Shift+L ファイル全体を読み込む
Alt+Shift+E インライン評価(*1)
Alt+Shift+C 表示のクリア(*2)
Alt+Shift+R REPL上の実行履歴

*1 : Alt+Shift+Enterと違いREPLに読み込んだコードが表示されない
*2 : 手元の環境だとクリアされなかった...

使用例

まず sample.lisp というファイルを作成し、以下の内容を記述してください

(defun sample ()
  (print "Hello World"))

(sample)

(defun sample ()の部分にカーソルをあわせて Alt+Shift+Enterを実行すると式がREPに読み込まれます。

REPL上の cl-user >となっている箇所に (sample) と打ち込んで実行すると以下のように式が実行されます。

(sample)
"Hello Worlds" 
Hello Worlds

また、ソースコード上の (sample) と書いてある行で Alt+Shift+Enter を実行しても同様の実行結果を得られます。

まとめ

とりあえず実行できる環境ができたので良かったのだが、この状態だと裸のSBCLとQuicklispを使って開発しないとイケない状態になっているので辛いです。
RoswellやMondoなどと連携してどうにかしたかったのですが、何故かうまくいかなったので、今回はここまでにしようかと思います...

参考

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1