Clojerl
https://gyazo.com/d30330220be98c2ddb1afec53571589b
ネットワークサーバーを立てる時はこれが一番便利
インストール
開発環境
Clojure.iconの道具がだいたい使えるつもりでいる
Clojerl.iconのREPLとClojure.iconのREPLと2つ立ち上げてなきゃいけなさそう
Clojerl.iconのREPLにJVMをぶら下げておけばよさそう→仕組みを作る
project管理
formatter
cljstyle
code:.cljstyle
{:files {:extensions #{"clj" "cljc" "clje" "cljs" "cljstyle" "edn"} $ cljstyle fix
linter
cljstyle
$ cljstyle check
clj-kondo
$ cljstyle find | xargs -t clj-kondo --lint
test
editor
Emacs.iconで押し通すつもり
code:init.el
(add-to-list 'auto-mode-alist '("\\.clje\\'" . clojure-mode))
どこまでClojure.iconのlibraryが使えるか気になる
Erlang.iconのlibraryは使える
ElixirElixir.iconのlibraryはあんまり使えなさそう useしなくていいlibraryは使えると思ふ
rebar3はmixの複雑なversion指定を読めない
よって ElixirElixir.iconの library は普通には使えない Clojure.iconのlibraryをMaven (Clojars) から持ってくる仕組みはない
.cljc (Reader conditionals) に対応してるっぽい
code:example.cljc
:clje (Clojerl expression)
:cljr (Clojure CLR expression)
:cljs (ClojureScript expression)
:default (fallthrough expression))
rebar3の{git, "https://〜", 〜}バージョン書式で持ってこられる
forkして.cljcや.cljeを作れば使える
Clojerl.icon公式ではこうしている
Erlang.iconの呼び方
:erlang.display/1を(erlang/display 〜)と普通に呼べる
(erlang/display.1 〜)とarityを指定できる
(#erl erlang/display 〜)とreader macroでErlang.iconの函数である事を指示できる
Erlang.iconに渡せるdata型
-42
整数はそのまま
-42.29e3
浮動小数点数はそのまま
:atom
Erlang.iconではatom又は'atom'。ElixirElixir.iconでは:atom #erl"charlist"
Erlang.iconでは"charlist"。ElixirElixir.iconでは'charlist' "binary"
Erlang.iconでは<<"binary">>。ElixirElixir.iconでは"binary"又は<<"binary">> #erl(list list …)
Clojure.iconの list'(list list …)っぽい
Erlang.iconや ElixirElixir.iconでは[list, list, …] #erl[tuple tuple …]
Clojure.iconの vector[vec vec …]っぽい
Erlang.iconや ElixirElixir.iconでは{tuple, tuple, …} #erl{map map …}
Clojure.iconのmap{map map …}っぽい
Erlang.iconでは#{map => map, …}。Elixirでは%{map: map, …}又は%{:map => map, …}
ElixirElixir.iconの struct %AModule{key: value}は#erl{:__struct__ AModule :key value …}で作れる