このディレクトリの索引
http://pc12.2ch.net/test/read.cgi/tech/1258158172/557
#  [1] 授業単元: プログラミング 
#  [2] 問題文(含コード&リンク): http://ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10207.txt
# [問題]
# 行数と列数を引数として、その行数と列数だけアスタリスクを表示させる関数showwaster()を作成する。
# 入力は正の整数だけを考えれば平気です。
# 
# [解らない部分]
# 下のプログラム中の???の部分が解りません…
# 予備ですが現在、関数の呼び出しやプロトタイプ宣言などを習っています
# よろしくお願い致します

showwaster(M,N) :-
  waster(1,N,M,L),
  showwaster(L).

showwaster([]).
showwaster([L|R]) :-
  writeAn(L),
  showwaster(R).

waster(N1,N,M,[]) :- N1 > N,!.
waster(N1,N,M,[L|R]) :-
  length(L,M),
  all(M,*),
  N2 is N1 + 1,
  waster(N2,N,M,R).

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
writeAn(_ならび) :-
  concat_atom(_ならび,Atom),
  write_formatted('%t\n',[Atom]).