このディレクトリの索引
#  出題場所 :: 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から10000までの整数をすべて足せ。'(1,0,_合計),
        'すべて足したら、その合計を表示せよ。'(_合計).

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

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