next up previous contents
Next: 1.3.3 構造を持ったデータ Up: 1.3.2 アトミックなデータ Previous: 記号アトム

数値アトム

整数値を表し, 表記も通常は普通の十進記法 (に必要なら符号がついたもの) を用いる (`` 3'', `` -15'' など). 1語が32ビットのシステム上 のKLIC の整数は28ビットの値を持つので, 表せる範囲はから まで, 1語が64ビットなら値は60ビットなのでから までである.

整数に対する演算や比較は, 言語のプリミティブとして用意した述語である 組み込み述語 (built-in predicates) を用いて行なう. 整数演算とし ては加減乗除の四則演算があり, ガードの条件として大小比較ができる. 通 常, これらの演算, 比較には, 組み込み述語を直接用いるよりもマクロ記法を 用いるのが便利である.

整数についてのガードでの大小比較には ``<'', ``>'', ``=<'', ``>='' を用いる. たとえば `` X =< Y'' は 「X は Y と等しいか, または Y よりも小さい」を表す. 相等, 不等の条件 には ``=:='' と ``=\='' を用いる.

たとえば第一引数と第二引数のどちらか大きい方を第三引数の値とするような プログラムは, 以下のように書ける.

max(X, Y, Z) :- X >= Y | Z = X.
max(X, Y, Z) :- X =< Y | Z = Y.

このプログラムでは X と Y が等しい場合, どちらの節のガードも真である. 前にも述べたように, このような場合にどちらの節が選ばれるかは, 言語仕様 としてはまったく規定しない. このプログラムではどちらの場合でも結果は 変わらないので問題ない. ふたつの節を非対称的に書いて X と Y が等しい 場合は片方しか選ばれないように書くよりも, 素直な書き方だともいえよう.

整数演算のためのマクロは通常の加減乗除などの演算子 (`` +'', `` -'', `` *'', `` /'', `` mod'') と括弧を用いた算 術式を `` :=''の右辺に, 結果を値にしたい変数を左辺に書く. gif

たとえば第一引数と第二引数の和を第三引数の値とするような述語は以下のよ うに定義できる.

sum(X, Y, Z) :- true | Z := X + Y.
前述のように, ガードに現れる `` true'' は常に真であるような条件, つまり無条件を表す.

なお, KLIC では整数演算のオーバフローチェックは行なっていない.



next up previous contents
Next: 1.3.3 構造を持ったデータ Up: 1.3.2 アトミックなデータ Previous: 記号アトム



KLIC