2013-08-24から1日間の記事一覧

オブジェクトファイルのリンク順

OCaml のオブジェクトファイル(.cmo, .cmx)を並べる順番には意味がある。 順番を間違えると: Reference to undefined global Hogehoge などと言われるので注意。 a.ml: let x = 1 b.ml: let y = A.x c.ml: let z = B.y というソースがあったとする。 a.ml, b…

List の ; と tuple の ,

List, Array, Record などの要素区切りの ; はとても奇妙に見えるかもしれない。 OCaml を使っている人でもあまり意識していないのだが、実は一貫性がある。 A ; B は B ; A と書いても型は変わらない A , B は B , A と書くと型が変わる場合がある 例: prin…

例外の効率: OCaml の例外は早い、は本当か

例外による再帰関数からの大域脱出は OCaml ではランタイムのペナルティはほとんどない、 という事になっている。 try with を書いてそれでもコードが読みやすければ使って構わない。 が、実際のところ、どうか。 -g を付けてコンパイルした場合、遅くなる。…