(14-1)[ML] int型定数と基本操作

int型定数

以下の表記法が定義されている。

種類表記法
正十進数表現通常の数字表記123
16進数表現0x<d...d>、各dは0から9またはA(a)からF(f)の文字0xffff
負の定数~<正の定数表記>~123, ~0xffff

int型の演算(対話型環境)

SML#の対話型環境で以下の演算が定義されているので、特に宣言なく使用できる。

意味
a + b 加算
a - b 減算
a * b 乗算
a div b 除算
a mod b aをbで割ったあまり
abs a aの絶対値
a < b a < bの時true
a > b a > bの時true
a <= b a <= bの時true
a >= b a >= bの時true

int型の演算(ライブラリ関数)

上記を含む種々の関数がライブラリとして提供されている.C言語では,

#include <lib.h>

の構文を使ってlibという名前のライブラリの使用を宣言するが,MLでは,Libという名前のライブラリの中のnameという名前の関数は,

Lib.name

の形で使用できる.以下は,その例である.

# Int.toString 99;
val it = "99" : string

ここで使ったIntは,int型の種々の操作が定義された基本ライブラリである.以下の宣言をSML#で実行してみることで,基本ライブラリにどのような関数が定義されているかを知ることができる.

structure A = Int;

これはライブラリモジュールに別名Aを付ける構文である.A自身はこの場合は何でもよい.この宣言を実行すると,以下のような情報を表示する.

# structure A = Int;
structure A
: sig
    type int = int
    val * : int * int  -> int
    val + : int * int  -> int
    val - : int * int  -> int
    val < : int * int  -> bool
    val <= : int * int  -> bool
    val > : int * int  -> bool
    val >= : int * int  -> bool
    val ~ : int  -> int
    val abs : int  -> int
    val compare : int * int  -> order
    val div : int * int  -> int
    val fmt : StringCvt.radix  -> int  -> string
    val fromInt : int  -> int
    val fromLarge : LargeInt.int  -> int
    val fromString : string  -> int option
    val max : int * int  -> int
    val maxInt : int option
    val min : int * int  -> int
    val minInt : int option
    val mod : int * int  -> int
    val precision : int option
    val quot : int * int  -> int
    val rem : int * int  -> int
    val sameSign : int * int  -> bool
    val scan :
      ['a . StringCvt.radix
              -> (char, 'a) StringCvt.reader
              -> (int, 'a) StringCvt.reader]
    val sign : int  -> int
    val toInt : int  -> int
    val toLarge : int  -> LargeInt.int
    val toString : int  -> string
  end

多くのものは,表示される型情報と名前から,ほぼその使い方と意味が理解できるであろう.


[ トップ | 目次 | 前ページ | 次ページ ]

Last modified:2007/05/05 17:57:03
Keyword(s):
References:[(15)[ML] 基本データ型と基本演算]