第三回にして、v 3.12の新機能ではなく前からあった機能を書きます。
皆さんはリテラルのsuffixをご存知でしょうか。
浮動小数点数を『1.0f』なんて書いているのは見かけたことないですか?見たことない?さすがOCamlばかりやってきた人は違いますね!(違
リテラルのsuffixは大抵の場合(というか私はこれしか知らないですが)、型の修飾のために付けられます。OCamlにもsuffixがあって、今回調べてみたところ、整数の型を区別するために用いられているようです。よく見かける浮動小数点数のsuffixは無いみたいです。
$ ocaml Objective Caml version 3.12.1 # 1;; - : int = 1 # 1l;; - : int32 = 1l # 1L;; - : int64 = 1L # 1n;; - : nativeint = 1n
こんな感じ。あと余談ですが
# 12345 = 123_45;; - : bool = true # 123_45l;; - : int32 = 12345l
のように『_』は無視されます。suffixをつけた場合でも同じく『_』は無視されます。
また2, 8, 16進数は
# 0b1010;; - : int = 10 # 0o11;; - : int = 9 # 0xFF;; - : int = 255 # 0b1010l;; - : int32 = 10l
のようになります。
suffixで『l』はよく見かけてたけど、ほかは知らなかった…というより最近までnativeintなるものは脳内から消え去ってた。だって使わないんだもん!