Hatena::ブログ(Diary)

Scala で TAPLを勉強しつつ LLVM コンパイラを作る日記

2015-10-11 OCamlのフォーマッタで文字列化する方法

[] Formatの文字列

OCamlのフォーマッタで文字列化する方法

let spp pp_v () v =
  Format.fprintf Format.str_formatter "%a" pp_v v; 
  Format.flush_str_formatter ()

2015-09-27 OCamlのmliの出力方法

[] OCamlのmliの出力方法

OCamlの型が分からない場合に、推論結果が欲しくなった。

ググってもすぐ見つからない。ということでメモ

ocaml -i a.ml > a.mli

と書く。

複数ファイルある場合は、

ocaml a.ml -i b.ml > b.mli

2015-01-23 関数型言語とオブジェクト指向の融合

関数型言語オブジェクト指向の融合

関数型言語といえばまず、Lispがありました。

そして、SMLがありHaskellがありますCleanなんてのもありました。

LispCLOSというオブジェクト指向Common Lisp (CL) のオブジェクト指向プログラミング機能がありますCLOSRubyに影響を及ぼしているようです。

SMLからCamlが生まれ、Camlオブジェクト指向拡張したOCamlが産まれました。OCamlからはさらに、F#派生しています

OCamlオブジェクト指向拡張レコード拡張してオブジェクト指向に使おうとしています

Lispアルゴシンタックスをという意味でDylanが生まれ、その後Nemerleが産まれました。

Scalaは、純粋オブジェクト指向言語でありながら関数型言語の代数データ型をクラス継承で表したり、ScalaZといったHaskellの成果を持ち込むようなライブラリも用意されていてよく使われています

HaxeはActionScript2.0のフリーコンパイラであるMTASCの後継言語として作成されている言語ですが、完全ではありませんが着実に関数型言語機能がついて来ています

Rustはモジラが開発している言語ですがそろそろ1.0が出そうです。

Haskellの型クラスから影響を受けているようです。

GoもまたRustと同じようにHaskellの型クラスのような機能を持ち合わせています

このように、関数型言語オブジェクト指向の融合は着実に進んで来ています

2015-01-01 2014年と2015年

2014年2015年

去年は言語をずっと作ってました。

でもまぁ、結構迷走してたかも。

最初LLVM向けのC言語オブジェクト指向がある程度動くようにする。

型推論と型理論の研究成果を生かさなきゃと方針変更

MinCamlシンタックスを変える方向性を探る。

・多相型推論を導入したい

・TAPLが分からず型理論の為に集合論とBNF勉強する

・型クラスを導入したい

ATSスナッチ開発がいいのでLLVMをやめて、CまたはC++を考え始める。

OCamlオブジェクト理解したいのでOCamlを出力する

ATSの理論を知りたいので論理学勉強し始める

選挙あったので色々考えてみる。

 ・少子化対策を考える

 ・エネルギー政策を考える

って言う間に2014年が終わりました。

今年はどうなるのか分からないですけど、引き続き言語を開発する為の基礎力を付けて良い言語が作れたらと思います。

よろしくお願いします。