* [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の人はこういう”補助輪"みたいな
ものは使ってない人結構見掛けるけど、
括弧がぁー!って人は今は便利な時代なんで
こういった便利なツールをどんどん使ったらいいと思う。

もっと手短に書くつもりがついつい長くなってしまった。