Я не могу воспроизвести полученную вами ошибку. Если вы пишете этот код в файл и компилировать его с ghc
ошибка:
<filename>.hs:2:38: parse error on input ‘=’
И проблема в том, что синтаксис where
неправильно. Либо написать:
an_expression where z = x+y
Или вы должны использовать фигурные скобки:
an_expression where {z=x+y;}
Вы не можете использовать скобки для группы задание.
Обратите внимание, что при написании в GHCI вы должны сгруппировать объявления и использовать let
для определения функции:
Prelude> let {addConcat :: [Int] -> [Int]; addConcat [x,y] = [z,z+y] where z=x+y;}
Prelude> addConcat [1,2]
[3,5]
Следует также отметить, что даже фиксируя это ваша функция все еще имеет ошибку типа, поскольку второй аргумент :
должен быть списком, а z+y
- это номер. Вы хотите z:[z+y]
или просто [z, z+y]
.
Большое спасибо! фигурная фигурная скобка отлично работала! Ты восхитителен! – thelili018