私は、今の三菱のエンジニアに「なにがなんでも作りたい」という意欲があるのか、と疑問を覚えるんですよ。 それは、精神論のようにも聞こえますが。 いいえ。仕事を離れても、自分が損をしようが得をしようが、自分で作りたいという喉の渇きにも似た意欲が、航空機の設計には不可欠なんです。
昨日時点で出ていた、mkHoge が出力されない問題に対応。
去年からずっと時間がとれていなかった、このプロジェクトですが、少しずつでも進めていくようにしたい。
そういうわけで、1月くらいでとまっていたノートを読み返したりして思い出しながら続きに取り掛かり。 いやぁノートって偉大だ。ぜんぜん覚えていないようで、まぁ、端から端まで自分で書いたコードとノートが手元にあるのだから、なんとかなるものです。
次のようなサンプル (adt-sample.hs) を、どうにかコンパイルできる(?)ようになった。
-- ADT: Algebraic Data Type data Direction = Right | Left | Up | Down -- deriving Show to_s Up = "Up" to_s Left = "Left" to_s Right = "Right" to_s Down = "Down" main = putStrLn $ to_s Right
ただし、このままだと、ランタイムエラーになる。ユーザ定義のデータ構築子を生成するコードがないという。 そういえば、True や False については、Prim.java のなかに用意してあった。
仮対処で、Main.java に、以下のコード片を手で加えてやると、期待通りに動くようになった。
private static Expr mkExpr(HeapObj obj){ return new AtomExpr(new Var(obj)); } public static Expr mkRight(){ return mkExpr(new ConObj(new Cotr("Main.Right"), new AtomExpr[0])); }
というわけなので、続きとしては、今回手で加えたようなコード片を、コンパイラが吐くようにしてやればいいわけです。
その他、ちょっとした覚書き:
など。