あと、Lisp の eval と他の言語の eval がなんか違う問題についてどこかに書きたい。あれ eval じゃなくて read-eval (もしくは eval-read)じゃん。
Notices by きゅーけー (tojoqk@mastodon.tojo.tokyo), page 35
-
きゅーけー (tojoqk@mastodon.tojo.tokyo)'s status on Saturday, 30-Apr-2022 17:17:58 JST きゅーけー -
きゅーけー (tojoqk@mastodon.tojo.tokyo)'s status on Saturday, 30-Apr-2022 17:15:42 JST きゅーけー 昔は第一級クラスの関数が Lisp の特徴だったがいまはそんなことはなくなってきたとか今残ってる特徴といえばマクロってよく言われてる気がするけど、やっぱ cons セルとシンボルが一番特徴的なんじゃないかな〜〜〜って思う。もちろんそれはマクロに繋がってるわけだけど。
-
きゅーけー (tojoqk@mastodon.tojo.tokyo)'s status on Saturday, 30-Apr-2022 17:06:32 JST きゅーけー Lisp で普通にプログラミングできるようになるまでの壁はやっぱり構文じゃないんだよ。cons とシンボルとそのクォートとそれらの外部表現が難しいんだよ。
-
きゅーけー (tojoqk@mastodon.tojo.tokyo)'s status on Saturday, 30-Apr-2022 17:04:37 JST きゅーけー Lisp 知らなくても雰囲気でなんか読めたりしないかな。
-
きゅーけー (tojoqk@mastodon.tojo.tokyo)'s status on Saturday, 30-Apr-2022 17:03:24 JST きゅーけー ACL2 の記事の対象読者を Lisp は知ってる人〜再帰は普通に書ける人〜ってするとかなり絞られちゃう気がするんだよな。
-
きゅーけー (tojoqk@mastodon.tojo.tokyo)'s status on Saturday, 30-Apr-2022 17:01:54 JST きゅーけー そもそも式をクォートするってのが意味不明なんだよな。それはどうやって説明すればいいんだ。
-
きゅーけー (tojoqk@mastodon.tojo.tokyo)'s status on Saturday, 30-Apr-2022 17:00:10 JST きゅーけー (append '(a b c) '(d e f))の方がなんかいい。(append '(#\a #\b #\c) '(#\d #\e #\f))は冗長だし、(append '("a" "b" "c") '("d" "e" "f"))は小指が疲れるし、(append '(1 2 3) (4 5 6))は何で数字にしなきゃならんのだって気分になるし。
-
きゅーけー (tojoqk@mastodon.tojo.tokyo)'s status on Saturday, 30-Apr-2022 16:57:42 JST きゅーけー あのわざわざ文字列を使うのかという感覚はどこから生じてきたのか。Land of Lisp あたりで洗脳されたんかな。
-
きゅーけー (tojoqk@mastodon.tojo.tokyo)'s status on Saturday, 30-Apr-2022 16:56:49 JST きゅーけー Lisper がシンボルを多用するのって eq で比較できるからとじゃなくて文字列と比べるとタイプ数が少なくて済むし見た目もすっきりしてるからという程度でしかない気がする。
あと、どうせマクロを書くときにシンボルの操作は避けて通れないし。
-
きゅーけー (tojoqk@mastodon.tojo.tokyo)'s status on Saturday, 30-Apr-2022 16:54:36 JST きゅーけー 末尾再帰じゃない方がコードの見た目綺麗だし、リストが十分短い場合は普通に再帰した方が速いししゃあない。
-
きゅーけー (tojoqk@mastodon.tojo.tokyo)'s status on Saturday, 30-Apr-2022 16:52:55 JST きゅーけー OCaml の標準ライブラリの関数が末尾再帰でないことにみんな文句いってるやつだ。
-
きゅーけー (tojoqk@mastodon.tojo.tokyo)'s status on Saturday, 30-Apr-2022 16:51:28 JST きゅーけー 軽くインターネットで調べると Ruby にはシンボルがあるっていうけどあれはハッシュのキーに使うとか、他にはなんか謎の使われ方がされる感じであって Lisp のプログラムの識別子もシンボルだよね〜ってノリとは違うし、REPL で何かちょっとしたことをするのに選ばれるものではないような気がしてる。
-
きゅーけー (tojoqk@mastodon.tojo.tokyo)'s status on Saturday, 30-Apr-2022 16:42:44 JST きゅーけー Lisp の特徴はマクロとかじゃなくて cons セルとシンボルなのではないかと思うようになってきている。
-
きゅーけー (tojoqk@mastodon.tojo.tokyo)'s status on Saturday, 30-Apr-2022 16:40:53 JST きゅーけー 出自としては Lisp の中で Lisp を書くところからシンボルは始まっているわけだけどその話をするのはなんか違う気がするし。
-
きゅーけー (tojoqk@mastodon.tojo.tokyo)'s status on Saturday, 30-Apr-2022 16:39:59 JST きゅーけー Common Lisp のシンボルの話をちゃんとするのは難しいのでそれはやめるとしても、そうでなくてもシンボルを説明するのは大変だと思う。
何かの式の記号を表現するのに使えるやつみたいな感じの説明でいいんだろうか。eq で比較できるってことに識別子として利用可能という意味で重要だけどその話は難しいし。
-
きゅーけー (tojoqk@mastodon.tojo.tokyo)'s status on Saturday, 30-Apr-2022 16:37:21 JST きゅーけー Lisp のプログラムの簡単な例として(append '(a b c) '(d e f))って書くだけでもシンボルの話がでてくるので困る。
-
きゅーけー (tojoqk@mastodon.tojo.tokyo)'s status on Saturday, 30-Apr-2022 16:34:09 JST きゅーけー ACL2 の二分探索木の記事は不定期で進めているんだけど対象読者で悩んでる。Lisp 知らない人向けに簡単に ACL2 で使う範囲の Lisp のチュートリアルを載せようと思ったんだけど、シンボルと cons セルが難しい。Lisp の特徴にマクロがあるのは確かにそうだと思うんだけど、それ以上にシンボルと cons セルが特徴的だと思う。
シンボルが使えるプログラミング言語はたくさんあるんだろうけど、Lisp みたいに日常的にシンボルを使うプログラミング言語はなかなかないのではないか。
-
きゅーけー (tojoqk@mastodon.tojo.tokyo)'s status on Saturday, 30-Apr-2022 16:29:29 JST きゅーけー Lisp の cons セルを破壊して値を返すタイプのプログラム、Lisp 以外に存在しない気がしている。副作用を使う他のプログラミング言語なら配列とかだろうし、関数型プログラミング言語ならそもそも破壊しないだろうから Lisp 以外にこういう激ムズなリスト操作は存在しなそう。
-
きゅーけー (tojoqk@mastodon.tojo.tokyo)'s status on Saturday, 30-Apr-2022 16:26:43 JST きゅーけー 今日はひさびさに副作用バリバリのプログラムの問題を解いた。普段は ACL2 しか使ってないし cons セルを破壊するという発想から忘れていたので超難しかったんだけど解けたので満足した。
-
きゅーけー (tojoqk@mastodon.tojo.tokyo)'s status on Friday, 29-Apr-2022 02:39:36 JST きゅーけー 人口が増えて生産性が求められるようになって土器がシンプルになったとしか思えん。