Oto mój kod:Nie można uzyskać typu podpis praca dla prostych funkcji rekurencyjnej
test :: (Num a) => [a] -> a
test [] = 0
test [x:xs] = x + test xs
Jednak kiedy go uruchomić poprzez ghci jako :l test
, otrzymuję ten błąd:
[1 z 1] Kompilacja main (test.hs interpretowane)
test.hs:3:7:
Couldn't match type `a' with `[a]'
`a' is a rigid type variable bound by
the type signature for spew :: Num a => [a] -> a at test.hs:2:1
In the pattern: x : xs
In the pattern: [x : xs]
In an equation for `spew': spew [x : xs] = x + spew xs
Failed, modules loaded: none.
Staraj się nie śmiać :) to moja pierwsza próba Haskell. Każda pomoc lub wyjaśnienie byłoby niesamowite.
PS: Wiem, że można to łatwo zrobić z zakładką, ale staram się ćwiczyć pisanie własnych podpisów. Z góry dziękuję!!
Gah! Powinienem to zobaczyć! Dziękuję Ci! –
@AthanClark Wszyscy przeżywamy to uczucie, gdy uczymy się Haskella. – Dilawar