構造体の実装について迷う - Mosh 開発

構造体の主な機能は

  • 構造体を定義
    • 変更子
    • アクセサ
    • 諸々のフィールド属性
    • 述語手続き
  • 構造体オブジェクトを生成
  • 継承可能
    • 単一継承

など。


構造体の用途は

  • エラーコンディションの定義、使用
  • ユーザーが利用する


さて構造体をどうするか?に関してはいくつか方針の候補がある。

  • R6RS の Reference Implementations を利用する
    • Scheme で書かれている
    • 一部の primitive 手続きを用意すれば動くらしい
    • でも syntax-case とか let-values がない処理系では結局いろいろ自前でやる羽目になりそう
  • すべて自分で Scheme で書く
    • Reference Implementations は利用できない部分が多いのでこの方針。
    • C++ で書くより、実装、デバッグは楽だろう。
    • 速度はどうだろう?
  • すべて自分で C++ で書く
    • 速度は一番出るだろう。
    • VM 内部からも自然に使えて良いかも
    • 実装は大変
  • 最初は Scheme で書く。あとで速度や何かが問題になったら C++ で書く。
  • 後回しにする
    • Record を実装しなければいけない一番の理由は、各標準ライブラリが送出するエラー定義に必要だから。
    • そんなに重要?
    • きちんとしたエラー処理をしたい人にとっては問題か?
    • 仮に後回しにしたとして、次に実装するのは何だろう?


うーんうーん。迷うなあ。
要はちょっと面倒だから後回しにしたいんだけど、結局やる必要があるってことだよね。