このディレクトリの索引
#  出題場所 :: http://toro.2ch.net/test/read.cgi/tech/1357191974/658
#  任意精度整数モジュールを使ってバグ修正したかったが、 
#  諸事情でそれもできなかったので出題の意図を縮小して訂正。 
#   
#  お題:1から10000までの整をすべて足せ。  
#  すべて足したら、その合計を表示せよ。 
#   
#  回答例: Objective Caml version 3.08.1 
#  let sum1to n =  
#   let rec f sum n =  
#    if n = 0 then sum 
#    else f (sum + n) (n - 1) in 
#   f 0 n;; 
#  print_int (sum1to 10000);; 
#  ↓ 
#  50005000 
# 
# 

'1から10000までの整数をすべて足せ。すべて足したら、その合計を表示せよ。' :-
        '1からNまでの整数をすべて足せ。'(1,10000,1,_合計),
        'すべて足したら、その合計を表示せよ。'(_合計).

'1からNまでの整数をすべて足せ。'(N,N,_合計,_合計) :- !.
'1からNまでの整数をすべて足せ。'(M,N,_合計_1,_合計) :-
        M_2 is M + 1,
        _合計_2 is _合計_1 + M_2,
        '1からNまでの整数をすべて足せ。'(M_2,N,_合計_2,_合計).

'すべて足したら、その合計を表示せよ。'(_合計) :-
        writef('その合計は%t\n',[_合計]).