* [2022-09-13 火] ** 最近のlisp系の傾向について思う事。 :lisp: 今日はlua製のlisp系シンタックス言語 [[https://fennel-lang.org/][fennel]]というものをtwitterで見かけた。 で、見てみたんだけど、こんな感じ。 #+BEGIN_SRC lisp (fn print-and-add [a b c] (print a) (+ b c)) (let [x (+ 1 99) y (- x 12) z 100_000] (+ z (/ y 10))) #+END_SRC 最近のlisp系言語ってclojureに似せた感じ というのか、変数を指定する箇所だけ[]を 使っているのが、やたら多く感じる。 見た目が丸括弧だらけでわかりにくいという 事でそうやっているんだろうけど、 common lispを普段書いている人間からすると、 []というものにあまり深い意味を感じない。 例えば今考えているのだと、 [1..9]と書いて評価したら1 2 3 4 5 6 7 8 9 みたいに数列に展開するとかなんか特殊な意味が あればまだ[]という貴重なリソースを使う意味が あると思う。 emacsを使っているとキー1つ1つがとても大切な リソースっていう考え方が身に付くんだけど、 括弧も同じだと思うんだよね。 ただ単に変数の箇所がわかりやすいというだけの 理由っていうのはちょっと贅沢過ぎないか?と思ってしまう。 無駄遣いというか。別に()でもいいじゃんって感じるというか。 あと、そこだけ[]にする事によって、頭の中で 常に括弧の区別が必要となってくる。 common lispではそんなところでいちいち脳みそは使わない。 そして、キー操作の上でもいちいち()と[]を 切り替えるために移動しなければならなくなる。 そんな事面倒臭がってどうするんだ?と 思うかもしれないけど、どちらがコードの 中身に集中出来るか?と考えた時、 この小さな積み重ねは馬鹿に出来ないような気がする。 あとlispのパワーの源泉である同図像性、 いわゆるデータもコードも同じという 特徴はS式という実にシンプルな構造から 成り立っているが、シンタックスを 複雑にする事はそこから離れる可能性が あるのではないか?と心配してしまう。 多くの人はたくさんの括弧を嫌うが、 そこにはそれなりの意味があるし、 最近のエディタはどれもその辺りを カバーしてくれているものが多いのではないのかな? そういうエディタを使ってれば 苦にはならないとは言わないまでも、 少しはわかりやすくなるんじゃないかな? emacsでslime使ってれば、 C-cC-]とすれば足りない分の閉じ括弧は勝手に 閉じてくれるし、 paredit使えば、そういう事気にする必要すらない。 またrainbow-delimiterを使えば虹色に 括弧を色分けしてくれるので、括弧の対応なんかも 一目瞭然。モノクロより色付きの方がテンションも上がる笑 よくemacsの設定ファイルとかいじっている時に 気付かぬうちに括弧のバランスが崩れてたりするが、 それも色分けしているおかげですぐどこか崩れた というのがわかるし、どこが崩れているのかわからない 時はM-x check-parenすれば崩れてる箇所を教えてくれる。 慣れたlisperの人はこういう”補助輪"みたいな ものは使ってない人結構見掛けるけど、 括弧がぁー!って人は今は便利な時代なんで こういった便利なツールをどんどん使ったらいいと思う。 もっと手短に書くつもりがついつい長くなってしまった。