Может кто-нибудь объяснить, как я могу исправить мою программу. Очень новичок в Haskell, пытался создать функцию length
, которая вычисляет длину списка любого типа.
Я собираюсь сделать это, используя data
, поскольку я хочу создать для этого совершенно новый тип (это область Haskell, которую я сейчас изучаю, поэтому она может и не быть быть наиболее эффективной реализацией этой функции)
data List a = Nil | Cons a (List a)
len :: List a -> Int
len Nil = 0
len (Cons _ xs) = 1 + len xs
Если я запускаю ее на len [1,2,3]
, я получаю ошибку:
• Couldn't match expected type ‘List a0’
with actual type ‘[Integer]’
• In the first argument of ‘len’, namely ‘[1, 2, 3]’
In the expression: len [1, 2, 3]
In an equation for ‘it’: it = len [1, 2, 3]