そろそろ関数型やるかー、って感じでClojureを触り始めました。
VSCodeでやりたかったので環境構築手順についてまとめ。
いれるもの
- Leiningen(いろいろやってくれるやつ)
- Joker(linter)
- Calva(VSCodeのClojure拡張)
VSCodeはインストール済みの前提です。
インストール
Leiningen
LeiningenはClojureのビルドツールです。
コンパイルとかREPLの起動とかいろいろやってくれます。
Windowsのインストーラが用意されているので、それを使います。
https://djpowell.github.io/leiningen-win-installer/
インストーラ使うと環境変数とかもろもろ設定してくれますが、プログラム本体のダウンロードはコマンドでやる必要があるようです。
PowerShell使って以下のコマンドを実行します。
lein self-install
環境によっては、PowerShellのダウンロードがうまくいかないようで、wgetかcurlを使えと言われます。
Leiningenインストールしたときにcurlも一緒に入ってきてたようなので、それを使うように環境変数HTTP_CLIENT
にcurl -f -L -k -o
を設定します。
設定したら、再度self-install
コマンドを実行してインストールをします。
以下のコマンドでバージョンが確認できれば問題なくインストールができています。
lein version
以下のコマンドでREPLが起動するので、とりあえずClojureを試してみるのもよいでしょう。
lein repl
Joker
JokerはClojureのlinter(構文解析ツール)です。
GitHubで各OS向けのバイナリが公開されているのでダウンロードしてきて、パスが通っているところに入れます。
Leiningenのインストールフォルダのbinの中に突っ込むのがわかりやすいかと。
https://github.com/candid82/joker
Calva
CalvaはVSCodeの拡張です。
今まで入れたLeiningenやJokerをVSCode上から動かすことができます。
Calvaを入れると、Calva Formatterという拡張もインストールされます。
Calva Formatterは改行時に自動でインデント入れてくれるやつです。
オプション見る限り、行末改行削除とかもできそうなんですがいまいち動かない(未実装?)ようです。
割とできたばかりのプロジェクトみたいなので、今後に期待。
Calvaを使う
REPLへ接続
Calvaの多くの機能を使うためにはまずReplに接続する必要があります。
lein repl
コマンドであらかじめREPLを起動されていれば、Ctrl+Alt+V
C
で接続できます。
画面の左下に以下のように表示されていればREPLへ接続がされています。
評価結果をVSCode上で表示する
評価したい式を選択して、Ctrl+Alt+V
E
でその式を評価することができます。
別ファイルのネームスペースを使いたい場合、使いたいファイルに移動してCtrl+Alt+V
Alt+N
で現在のファイルをREPLに読み込めば使えるようになります。
Jokerを使う
Ctrl+Alt+V
L
でJokerによる構文解析を実行することができます。
これだと、いちいち実行しないとないので、設定のcalva.lintOnSave
をtrueにしてあげると保存時に自動的に構文解析を行ってくれます。
解決したい疑問
定義された情報の参照がうまくできていません(右クリックメニューのPeek Defenition
とか)。
バグなのか、設定がうまくいってないのか…。
(7/8追記)
あと、jokerのほうの問題っぽいんですが、:useでほかのネームスペースの関数を使うように宣言しても構文解析でエラーが出てしまいます。
:requireにすればエラーが出ないので、すべて:requireで書くようにすればとりあえず問題はないです。