Gauche Schemeの作者の川合史朗さんと言語処理系についての話をしました。GaucheのCコードとの互換性を保ちつつ無限リストを導入するために採用したトリックや、Gauche自身で書かれているGaucheを過去のバージョンでビルドするために気をつけていることなどの話をしました。 出演者: 川合史朗 (@anohana)、Rui Ueyama (@rui314) https://turingcomplete.fm/28 ハッシュタグは#tcfmです。 TCFMはサポーターの投げ銭によって収益を上げています。このコンテンツに課金してもいいよという方はぜひクリエイター支援サイトPatreonから登録してご協力ください。 イントロ (0:00) 電卓そろばん対決の動画存在しました (2:28) Gaucheとそのほかのプログラムのリリースプロセス (3:33) コンパイラのブートストラッピング問題とバージョン間の互換性 (4:51) GCCやClangにおけるブートストラッピング問題 (18:08) Goでは言語仕様がフリーズされていてGo 1の間は変更されない (19:41) Webブラウザの6週間のリリースサイクルは短いのか長いのか (20:35) FirefoxもClangとlldにスイッチ (21:32) Gaucheがstdioを使わずに独自bufferred IOを実装している理由 (22:58) FILE構造体の内部にアクセスする(移植性のない)実装 (26:41) プログラム終了時にバッファをフラッシュしないといけない (27:13) stdioではstdinを読もうとしたらstdoutがフラッシュされる (28:24) 遅延シーケンス(無限リスト) (31:05) Cレベルでの互換性を保ったままconsセルを遅延シーケンスにするトリック (34:52) 遅延シーケンスをどこで使っているのか (37:29) 遅延シーケンスのパフォーマンス最適化 (38:45) Clojure言語のTransducerという仕組み (42:07) カリー化とは何か (46:06) キーワードとシンボル (48:09) キーワードをシンボルのサブクラスにして発生した問題 (54:27) Scheme言語仕様にはキーワードはない(シンボルで十分?) (56:08) 現在仕様策定中のScheme言語仕様R7RS (58:27) R6RSの言語仕様は振り返ってみて良いものといえるのだろうか? (1:00:12) 標準化委員会が作る言語仕様と個人の作品としての言語仕様 (1:03:55) Goの言語仕様の変更のプロポーザル (1:05:09) Schemeでは言語仕様を実験的に拡張して良さそうなら標準化するというのがよくある流れ (1:06:51) 言語仕様策定の投票権は全員平等なのが本当によいのか (1:09:19) Schemeは誰でも参加できるところがよいところ (1:10:02) C++のトライグラフの廃止に最後まで反対していたのはIBMとカナダ (1:11:14) エンディング (1:13:22) Running for Grace (Shiroさんの出ている映画) Gauche Scheme Consセル (Wikipedia) stdioにおけるバッファのフラッシュのルール Go言語仕様 Clojure言語 Transducers カリー化 (Wikipedia) Haskell (Wikipedia) ハスケル・カリー (Wikipedia) SRFI(サーフィー) R6RS(現行の最新のScheme言語仕様) トライグラフ (Wikipedia) Rss Apple Podcaster →