2018 年 5 月

2018-05-10 (Thu)

Quote

オスプレイの設計は見事、そして鳥人間の罠 より

私は、今の三菱のエンジニアに「なにがなんでも作りたい」という意欲があるのか、と疑問を覚えるんですよ。

それは、精神論のようにも聞こえますが。

いいえ。仕事を離れても、自分が損をしようが得をしようが、自分で作りたいという喉の渇きにも似た意欲が、航空機の設計には不可欠なんです。

2018-05-09 (Wed)

[Bunny] 抽象データ型への対応(いっこめ)

昨日時点で出ていた、mkHoge が出力されない問題に対応。

2018-05-08 (Tue)

[Bunny] 抽象データ型への対応

去年からずっと時間がとれていなかった、このプロジェクトですが、少しずつでも進めていくようにしたい。

そういうわけで、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]));
    }

というわけなので、続きとしては、今回手で加えたようなコード片を、コンパイラが吐くようにしてやればいいわけです。

その他、ちょっとした覚書き:

など。