タグ

ocamlに関するmogellaのブックマーク (4)

  • 第12回 「型推論」の実装法

    型推論:「コンピュータ以前」からML,Java 7まで OCamlをはじめ,MLやHaskellなど,多くの型付き関数型言語には型推論という機能がある。この連載でも,暗に陽に,OCamlの型推論機能を利用してきた。 例えば,以下のような関数say_hello_toを定義してみよう。文字列引数nameを受け取り,nameの前に定数文字列"hello "を付け加えて返す,という関数だ。 # let say_hello_to name = "hello " ^ name ;; val say_hello_to : string -> string = <fun> このように,引数や返り値の型を指定しなくても,say_hello_toはstring ->string型(文字列を受け取り,文字列を返す関数)であると自動推論される。 ただし,(例えばプログラムを読みやすくするために)もし型を書きたけれ

    第12回 「型推論」の実装法
  • GNU make でのコンパイル

    OCamlMakefile と組み合わせて GNU make を使う OCamlMakefile は、 複雑なOCamlプロジェクトのコンパイル作業をとても楽にする生成的な Makefile だ。 標準のライブラリのみを使う基的なOCamlプログラムやライブラリについては、 単にカレントディレクトリにOCamlMakefileをコピーし、 以下の Makefile を作成する: RESULT = myprogram SOURCES = \ mymodule1.mli mymodule1.ml \ myparser.mli myparser.mly mylexer.mll mymodule2.ml \ mymainprogram.ml OCAMLMAKEFILE = OCamlMakefile include $(OCAMLMAKEFILE) これは5つのコンパイル対象がある上に ocam

  • 速攻MinCamlコンパイラ概説

  • 第10回 静的スコープと関数クロージャ~関数型言語のインタプリタを書いてみる~

    前回と前々回は,関数型言語MLの一種であるObjective Caml(OCaml)で,単純な独自の命令型言語MyCのインタプリタとコンパイラを実装してみた。MyC言語では,変数はすべてグローバルで,宣言も不要だった。 しかし,グローバル変数だけでは名前の衝突などの問題があり,大きなプログラムを書くことは難しい。そのため,ほとんどの汎用プログラミング言語には,変数の有効範囲(スコープ)を制限する機能がある。例えば,すでに何度も登場しているが,OCamlでは次のような形の式を書くことができる。 このように書くと,式1の値が変数xに置かれる(xが束縛される,という言い方をする)。そのxの値は,式2の中でのみ使うことができる。つまり,xのスコープは式2だけということになる(in以降を省略することもできる。その場合はそれ以降のすべての式がスコープに含まれる)。 ただし,もし式2の中でまた同じ名前の

    第10回 静的スコープと関数クロージャ~関数型言語のインタプリタを書いてみる~
  • 1