Đây là mã của tôi:Không thể có được loại chữ ký làm việc cho hàm đệ quy đơn giản
test :: (Num a) => [a] -> a
test [] = 0
test [x:xs] = x + test xs
Tuy nhiên, khi tôi chạy nó thông qua ghci như :l test
, tôi nhận được lỗi này:
[1 trong tổng số 1] Biên dịch Chính (test.hs, interpreted)
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.
Cố gắng không cười :) đó là lần thử đầu tiên của tôi tại haskell. Bất kỳ trợ giúp hoặc giải thích nào đều tuyệt vời.
PS: Tôi biết điều này có thể dễ dàng thực hiện với màn hình đầu tiên, nhưng tôi đang cố gắng thực hành viết chữ ký của riêng mình. Cảm ơn trước!!
Gah !! Tôi nên đã thấy điều đó! Cảm ơn bạn! –
@AthanClark Chúng ta đều trải qua cảm giác này khi chúng ta học Haskell. – Dilawar