0

いつものように、私は問題に苦しんでいます.紙の上ではすべてがうまくいくはずですが、コンパイラは私が理解できないエラーを出します.

data Polynom = Polynom[Double] 
           deriving Show



calcPolynom :: Double -> Polynom -> Double
calcPolynom _ [] = 0.0
calcPolynom _ Polynom [] = 0.0
calcPolynom n Polynom[h:ts] = h + n* Polynom[ts]

「コンストラクタ `Polynom' には 1 つの引数が必要ですが、何も指定されていません」というエラーが表示されます。しかし、空の多項式に対しても定義する必要がありました。

誰でも助けることができますか?私は Haskell に本当に慣れていないので、どんな種類の助けにも本当に感謝しています :)

追加情報: 多項式を Double のリストにしたい、つまり 2x³ - 1.4x² + 2.5 = [2.5,0,-1.4,2]

4

2 に答える 2

1

試す

calcPolynom _ (Polynom []) = 0.0
calcPolynom n (Polynom (h:ts)) = h + n * calcPolynom n (Polynom ts)

コンストラクターをパターン マッチする場合は、コンストラクターをかっこで囲む必要があります。これは Polynom データ型だけでなく、リストにも当てはまります。[h:ts]は、あなたが期待するものと何ら変わらず、[[?]]要素が 1 つしかないリスト ( ) のリスト (すなわちリスト) と一致します。最後に、データ型ではなく、関数を再帰する必要があります。

于 2014-05-15T17:35:34.807 に答える