0

ゼロ値を持たない行列の位置のリストを返すために、このプログラムを作成しました。

このコード:

type Pos = (Int,Int)
type Matrix = [[Int]]

v0 [Pos]->Matrix->[Pos]
v0 [] m =[]
v0 [p:ps] m = if ((takeH m p) == 0) then v0 ps m
                                    else p:v0 ps m

takeH:: Matrix->Pos->Int
takeH m (i,j)= (m!!(i-1))!!(j-1)

次のエラーが発生します。

Parse error on input '->'
Failed,modules loades: nome.

なんで ?

私がはっきりしていることを願っています。

4

2 に答える 2

4

::関数のタイプの前に必要です。

-- vv here
v0 :: [Pos] -> Matrix -> [Pos]
v0 [] _ = []
-- v    v also parenthesis, not square brackets
v0 (p:ps) m = if ((takeH m p) == 0) then v0 ps
                                    else p:v0 ps
于 2012-10-10T11:10:50.067 に答える
0

また、takeH関数は引数としてMatrixとPosを取る必要がありますが、Posを渡すだけのようです...?私はあなたがのようなものが欲しいと思いますtakeH x (i, j) = (x!!(i-1))!!(j-1)

一般的に、私は!!などの部分関数を使用しないように強く警告します。マトリックスに十分な値が含まれておらず、範囲外になっている場合はどうなりますか?プログラムは終了し、エラーをスローします。それも考慮に入れてください

于 2012-10-11T06:49:19.130 に答える