ACL2 で書いたコードを Common Lisp から呼び出すことってできるんだろうか……。それができるなら Common Lisp を使った方がはやいかも。
Notices by きゅーけー (tojoqk@mastodon.tojo.tokyo), page 232
-
きゅーけー (tojoqk@mastodon.tojo.tokyo)'s status on Friday, 26-Mar-2021 13:24:50 JST
きゅーけー
-
きゅーけー (tojoqk@mastodon.tojo.tokyo)'s status on Friday, 26-Mar-2021 13:22:51 JST
きゅーけー
Coq が Scheme のコードを吐けることは調べて知ってるんだけど、なんか ML っぽいコードが吐かれるみたいなのでちょっと嫌なんだよな……。
-
きゅーけー (tojoqk@mastodon.tojo.tokyo)'s status on Friday, 26-Mar-2021 13:21:28 JST
きゅーけー
Gerbil Scheme も気になるようになってしまい。ACL2 のコードを Guile として読めるようにしてみたいという謎プロジェクトに移植性を求めたくなってきている……。
-
きゅーけー (tojoqk@mastodon.tojo.tokyo)'s status on Friday, 26-Mar-2021 01:21:55 JST
きゅーけー
stackoverflow で Racket に stackoverflow がないことに関する質問があってジョークかと思った。https://stackoverflow.com/questions/49912204/why-there-is-no-such-thing-as-stack-overflow-in-racket
-
きゅーけー (tojoqk@mastodon.tojo.tokyo)'s status on Friday, 26-Mar-2021 01:19:09 JST
きゅーけー
Racket だとスタック溢れが起こる前にヒープに移動してくれたりする。
-
きゅーけー (tojoqk@mastodon.tojo.tokyo)'s status on Friday, 26-Mar-2021 01:16:40 JST
きゅーけー
ここの、 `count-words` の例は、繰り返しよりも末尾呼び出し最適化を利用した方が綺麗に書けるケースになっていると思います。http://practical-scheme.net/docs/tailcall-j.html
-
きゅーけー (tojoqk@mastodon.tojo.tokyo)'s status on Friday, 26-Mar-2021 01:13:47 JST
きゅーけー
再帰とは違うけど末尾呼び出しの最適化が機能していて、かつ繰り返しで書こうとすると大変なケースに、関数で状態遷移を表現するようなコードがあると思います。
-
きゅーけー (tojoqk@mastodon.tojo.tokyo)'s status on Friday, 26-Mar-2021 01:10:41 JST
きゅーけー
最適化とは関係なく、Lisp の全てが式で値を持つという性質が再帰と相性が良いというのはある気がします。
-
きゅーけー (tojoqk@mastodon.tojo.tokyo)'s status on Friday, 26-Mar-2021 01:06:02 JST
きゅーけー
Scheme は「末尾呼び出しの最適化があれば再帰だけで十分で、繰り返し構文は言語のコアには要らないよね」っていう方が強いと思う。
-
きゅーけー (tojoqk@mastodon.tojo.tokyo)'s status on Friday, 26-Mar-2021 01:02:57 JST
きゅーけー
Common Lisp にも再帰を書く文化はあると思うんだけど、Common Lisp では仕様上、末尾呼び出しの最適化を保証しているわけではないし、末尾呼び出しの最適化をすると意味の変わるコードがかけてしまう(例えば、スペシャル変数を引数に使うなど)。もちろん Common Lisp の処理系によっては再帰を最適化してくれるものもあるけど、再帰を使うよりも繰り返しを使った方がメリットが多い。
そういうこともあって Google のコーディング規約でも再帰よりも繰り返しを使えって言われてしまう。https://google.github.io/styleguide/lispguide.xml#Recursion
-
きゅーけー (tojoqk@mastodon.tojo.tokyo)'s status on Friday, 26-Mar-2021 00:50:55 JST
きゅーけー
今どき cons を用意するのはたぶん正しい考え方とは見做されないのか新しい非 Lisp の言語に標準で cons があるのを見たことがない。(List はあっても、「cons で何でも作れるよ」みたいなやつはない)
-
きゅーけー (tojoqk@mastodon.tojo.tokyo)'s status on Friday, 26-Mar-2021 00:45:35 JST
きゅーけー
効率の良い構造とか考えだすと配列とか必要だけど、cons だけでなんでも作れるしプログラム自身も cons で構築されてる。
-
きゅーけー (tojoqk@mastodon.tojo.tokyo)'s status on Friday, 26-Mar-2021 00:40:56 JST
きゅーけー
Lisp の最大の特徴って cons なのではとか言うと、Clojure とか Hy ははみでてしまうのであまり強く言えない。
-
きゅーけー (tojoqk@mastodon.tojo.tokyo)'s status on Friday, 26-Mar-2021 00:31:42 JST
きゅーけー
おそらく多くの Lisper はほとんど括弧を見てなくて、基本的にインデントしか意識してない。だからといって括弧がないと、手動でインデントをしないといけないので括弧はあった方が良いというのが私の立場です。
-
きゅーけー (tojoqk@mastodon.tojo.tokyo)'s status on Friday, 26-Mar-2021 00:28:49 JST
きゅーけー
@sabikin ParEdit を使っていれば括弧の対応関係が分からなくなることはまずないと思っています。https://daregada.sakuraweb.com/paredit_tutorial_ja.html
-
きゅーけー (tojoqk@mastodon.tojo.tokyo)'s status on Friday, 26-Mar-2021 00:23:16 JST
きゅーけー
あらゆるものが生み出されそう。
-
きゅーけー (tojoqk@mastodon.tojo.tokyo)'s status on Friday, 26-Mar-2021 00:22:40 JST
きゅーけー
個人的に Lisp の最大の特徴って実は cons なんじゃないかと思っているので、 cons.io ドメインはかなり良いと思う。
-
きゅーけー (tojoqk@mastodon.tojo.tokyo)'s status on Friday, 26-Mar-2021 00:03:09 JST
きゅーけー
The Macro is the Compiler とか書くの胸が熱くなっちゃうのでやめて欲しい。
-
きゅーけー (tojoqk@mastodon.tojo.tokyo)'s status on Friday, 26-Mar-2021 00:01:24 JST
きゅーけー
このホームページ格好いいのでは……。https://cons.io/
-
きゅーけー (tojoqk@mastodon.tojo.tokyo)'s status on Thursday, 25-Mar-2021 23:59:53 JST
きゅーけー
Chez scheme は速いけど battery included 感が低かったのに対して、Gerbil Scheme は速い上に豪華にみえるぞ……。