たてたてよこよこまるかいてちょん

組み込み関連の情報を共有するためのブログです

すべての十分に複雑なシステムは

後付けの、不完全な仕様とバグを持ち、遅い、Common Lispの半分の実装を含んでいる。という言葉がありましたが、C++はいったいどこを目指しているのでしょうか?

この記事はLispアドベントカレンダーの6日目です。

C++17が先日リリースされました。そのときに同僚のC++erは constexpr で盛り上がってました。コンパイル時計算にあった制限がへってコンパイル時計算が楽に書けるようになったとさわいでいました。C++の黒魔術師はレイトレーシングコンパイル時計算でやったとかなんとか。

コンパイル時計算といえば、どう考えてもLispの出番です。

がありますからね。

そういえば、boostというC++ライブラリにContext switching with call/ccというものがありますが、説明の一行目は

callcc() is the C++ equivalent to Scheme's call/cc operator. It captures the current continuation (the rest of the computation; code after callcc()) and triggers a context switch.

などと、Schemeのcall/ccだと言っています。ふーん。でも、Coroutine2はcallccより前に(C++11)作られているんですよね。不思議ですね。それなら素直にLispで書けばいいのにと思ってしまいますね。

記事のLicense このブログの記事は特に断りのない限り、引用部分を除いて、以下の CC-BY 4.0でライセンスします。 https://creativecommons.org/licenses/by/4.0/deed.ja ただし、ブログ内にあるコードは、特に断りのない限り、CC-BY 4.0またはMITLicense で利用できるものとします。