2013-02-01から1ヶ月間の記事一覧

OCaml Ada interoperability

adaside.ads *1 with System.Storage_Elements; package adaside is subtype Value is System.Storage_Elements.Integer_Address; use type Value; function caml_string_length (S : Value) return System.Storage_Elements.Storage_Count; pragma Import (…

導火線

こないだの記事に頂いたコメントです。 camlspotter 2013/02/27 12:50そりゃ deforestation が無いから Some はどうしても allocate されるけどどう見ても short lived だし minor GC の範囲で気にするほどのものではないでしょう。それが気になるなら C で…

Not_found

OCamlのコードを書くときにいつも迷っていることを書いてみます。超初心者質問。いい知恵ください。Not_foundの扱いです。コンテナにデータがあった場合→データを使う、と無かった場合→データを新規に作る、で分岐する処理は頻出すると思います。まず普通にi…

__gnat_adjust_context_for_raiseの怪

gcc

これがわからない。http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50678バグそのものは、Mountain Lionでの修正でそれまで__gnat_adjust_context_for_raiseに仕込んであったWorkaroundが不要になって、逆に悪さをするようになっていたというもの。Mountain L…

Adaと64bit呼び出し規約とlldiv

lldivを呼ぶ関数を書いてたらちょっと驚きました。 こういうの。 procedure call_lldiv (x, y : long_long_integer; q, r : out long_long_integer) is type lldiv_t is record q, r : long_long_integer; end record; pragma Convention (C, lldiv_t); func…

HFS+のファイル名を比較する厳密な方法

Mac

Macユーザーなら、HFS+の勝手なファイル名の「正規化」には悩まされてますよね!まず浅い理解として、HFS+はファイル名をNFDに正規化する。次に、HFS+は互換漢字を統合漢字にはぜず、それ以外をNFDに正規化する。まあそれで合ってるんですけれど、実際にはそ…