私の貧弱なOCaml力を晒す 第三回 「整数の尻尾」

第三回にして、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なるものは脳内から消え去ってた。だって使わないんだもん!

広告を非表示にする