このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1335517816/214
#  よろしくお願いします。  
#   
#  [1] 授業単元: プログラミングC  
#  [2] 問題文(含コード&リンク):  
#  値xの二乗値および三乗値を返す関数形式マクロ  
#  sqr (x)  
#  cub (x)  
#  を定義し、下記(※)のようにint型変数、double型変数を用いた結果を表示しなさい。  
#  ※:http://ime.nu/kie.nu/a4f  
#  

:- op(550,xfx,は).

sqr(_x,_二乗値) :-
        intger(_x),
        _二乗値 is _x * _x,!.
sqr(_x,_二乗値) :-
        float(_x),
        _二乗値 is _x * _x.

cub(_x,_三乗値) :-
        integer(_x),
        _三乗値 is _x * _x * _x,!.
cub(_x,_三乗値) :-
        float(_x),
        _三乗値 is _x * _x * _x.

_値 は _式 :-
        _式 =.. [_関数|_引数ならび],
        引数ならびの評価(_引数ならび,_評価済みの引数ならび),
        _式_2 =.. [_関数|_評価済みの引数ならび],
        _値 は _式_2,!.
_値 は _式 :-
        関数定義(_式,_値),!.
_値 は _式 :-
        _式 =.. [_関数|_引数ならび],
        append(_引数ならび,[_値],_引数ならびの二),
        _目標 =.. [_関数|_引数ならびの二],
        call(_目標),!.
_値 は _式 :-
        _値 is _式.