このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1294061094/21
#  [1] 授業単元:C言語プログラミング 
#  [2] 問題文(含コード&リンク): http://ime.nu/www.dotup.org/uploda/www.dotup.org1340661.txt 
#  
#  4.整数の1次元配列とその要素数を引数として全ての要素の和を返すsum()を作成せよ。

'ならびとその部分要素数を引数として部分ならびを切り取り、すべてのならびの部分和を計算する'(_整数のならび,_要素数,_部分ならびの和) :-
        ならびの部分和(_整数のならび,_要素数,_部分ならび,_ならびの部分和).

ならびの部分和(_整数のならび,_要素数,_部分ならび,_ならびの和) :-
        length(_部分ならび,_要素数),
        append(L0,_部分ならび,L2,_整数のならび),
        ならびの部分和の二(_部分ならび,_ならびの部分和).

ならびの部分和の二(_部分ならび,_ならびの部分和) :-
        すべてが整数(_部分ならび),
        sum_3(_部分ならび,0,_ならびの部分和).        
ならびの部分和の二(_部分ならび,_ならびの部分和) :-
        \+(すべてが整数(_部分ならび)),
        sum_3(_部分ならび,0.0,_ならびの部分和).        

sum_3([],X,X) :- !.
sum_3([A|R],S1,X) :-
        S2 is S1 + A,
        sum_3(R,S2,X).