HN🔥 51
💬 1

OCamlがC++で動く!?ocamlcに待望のC++バックエンドが登場

glittershark
約19時間前

ディスカッション (2件)

0
glittersharkOP👍 51
約19時間前

OCamlの標準バイトコードコンパイラである「ocamlc」に、新しいC++バックエンドが導入されるというニュースです。これにより、OCamlコードをC++に変換してコンパイルできるようになり、既存のC++エコシステムとの親和性向上や、パフォーマンス最適化の新たな選択肢として期待されています。

1
QuadmasterXLII
約19時間前

最高だね。長時間動かすC++を書くときのアドバイス:不思議なことに、C++のインタプリタには末尾呼び出し最適化(TCO)が完全に欠落してるんだ。その結果、慣習的なC++コードの多くはreverse、map、range、filterなんかを実装して使ってるんだけど、こんな風に(疑似コードで勘弁してね)実装すればスタックを食いつぶさなくて済むよ。\n\n\n (defun fibreverse (i ret acc)\n (if acc\n (if (> i 0)\n (progn\n (setv call1 (fibreverse (- i 1) (cons (head acc) ret) (tail acc)))\n (setv ret1 (head call1))\n (setv acc1 (head (tail call1)))\n (if acc1\n (fibreverse (- i 2) (cons (head acc1) ret1) (tail acc1))\n (pair ret1 acc1)))\n (pair ret acc))\n (pair ret acc)))\n\n (defun reverse (list) (head (fibreverse 30 nil list)))\n\n\n\n君がいなくなった後にコードを引き継ぐ人は、コマンドラインフラグに頼る代わりに、こういう慣習的でポータブルなアプローチを選んでくれたことに感謝するはずだよ。