タグ

OCamlに関するmainyaaのブックマーク (4)

  • ML系言語の型エラー報告を改良する - camlspotter’s blog

    さて、お約束していた OCaml の型エラーメッセージ改良のための改造、ある程度形になりましたので、公開します。 hg clone -b typeloc https://bitbucket.org/camlspotter/mutated_ocaml ビルドは configure の後、 make core coreboot world です。インストールなさる場合は既存の OCaml システムを潰さないように注意してください。インストールなしにトップレベルを試したい場合は ./ocaml -I stdlib 。といってもまだコンセプトが理解できる程度にしか動作せずまだまだ不完全です。バグもあるかと思います。 さてここから簡単にアイデアを説明します。MLの型推論についてある程度の知識が必要です。 HM 型システムではプログラムの各所を見ながらそれぞれが要求する型の情報を制約として集め、解の存

    ML系言語の型エラー報告を改良する - camlspotter’s blog
  • 構造的部分型の比較 - osiire’s blog

    私はOCaml, haXe, Scalaを勉強してきましたが、この三つの言語では構造的部分型がサポートされています。せっかくだから三言語の構造的部分型の特徴を比較してみることにしました。 OCamlは全て型推論してくれる代わりに部分型への変換は明示的。部分型変換ができるバリアントがある。 haXeは全て型推論してくれて、かつ部分型への変換も暗黙的にできるけど、場合によってはコンパイルがとまらない Scalaは型推論は(完璧には)してくれないけど、部分型への変換は暗黙的 全部違うのが興味深いですね。ところで、それぞれの型の表現も比べてみましょう。 (* OCaml版 *) # type t = [ `Const | `Var ];; (* 多相バリアント *) type t = [ `Const | `Var ] # type tt = [ t | `Exp ];; type tt = [

    構造的部分型の比較 - osiire’s blog
  • (皿うどん)Structural Subtyping(構造的部分型)アレコレ - ( ꒪⌓꒪) ゆるよろ日記

    このまえ、夢の中でね、あるコレクションの中から特定のシグニチャを持つオブジェクトをより分けるようなコード書いてる夢見たんですよ。ええ、見たんです夢で。 で、ふと目が覚めて(深夜3時半)おもむろにREPLでいろいろやってみた結果を書こうと思います。ええ、書いてみます。 Structural Subtyping(構造的部分型)って何ぞ? 例から入ります。あるメソッドのシグニチャ(名前、引数の例えば{def mkString (start:String, sep:String, end:String):String}というシグニチャを持つ型Aを定義すると、上記のシグニチャを持つ型Bや型CはAの派生型と見なされるわけです。 このように、2つの型がもつメソッドなどの構造によって派生関係が決まるのがStructural Subtyping(構造的部分型)というものです。対して、通常のextendsなど

    (皿うどん)Structural Subtyping(構造的部分型)アレコレ - ( ꒪⌓꒪) ゆるよろ日記
  • ocamljs を使おう : OCamlからJavaScriptへの変換 - keigoiの日記

    ocamljs は OCamlから JavaScript へのトランスレータだ。前回の記事と順番が逆になってしまったけれど今回はocamljsについて書く (基的に http://jaked.github.com/ocamljs/ 以外のことは書いてないです。)。 JavaScript歴史的経緯とその簡潔さからwebブラウザで使われているが,静的型付けでないので信頼性の面でいまいち不安だったり、言語の使いやすさの面でもパターンマッチの構文が無いとか、まともなモジュールシステムがないとかで良くない。 ocamljsを使えば、比較的安全・簡潔に大規模かつ動的なwebページを構成できるかもしれない。 ocamljsは残念ながらまだ成熟しているとはいえないが、実は既にすごく高機能だ。 現バージョンで既に DOM や jQuery を OCaml から操作できるし、いざとなれば JavaScri

    ocamljs を使おう : OCamlからJavaScriptへの変換 - keigoiの日記
  • 1