行列が特異であるかどうかをチェックするSMLプログラムを作成しようとしています。マトリックスはリストのリストとして表されています。例[[1,2]、[3,4]、[15,50]]は有効ですが、[[1,2]、[1,2,3]]は有効ではありません。
fun remove (l,r)=
let fun iter(front,l,i)=
if i=r then front@tl(l)
else
iter(front@[hd(l)],tl(l),i+1)
in
iter([],l,1) end;
fun removed (l,r)=
let fun iter(l,m)=if tl(l)=[]
then m@[remove (hd(l),r)]
else iter(tl(l),m@[remove (hd(l),r)])
in
iter(tl(l),[]) end;
fun nth (l,i)=let fun iter(l,c)=if i=c then hd(l) else iter(tl(l),c+1) in iter(l,1) end;
fun deter (l)=let fun iter(det,i,j)=if i=(length l)+1 then det else iter (det+j*(nth (hd(l),i))*(deter (removed(l,i))),i+1,j*(~1))
in iter(0,1,1) end
関数deterは定義されますが、入力すると、キャッチされない例外が空になるというエラーが発生します。デバッグを手伝ってください。
ありがとう