2013-08-26 4 views

ответ

14

let не используется при определении верхнего уровня. Есть несколько способов, чтобы исправить свои программы, некоторые из которых являются

a = [1,2] 
main = print $ sum a 

Или

main = do 
    let a = [1,2] 
    print $ sum a 

Или

main = let a = [1,2] in print $ sum a 

Обычным источником путаницы для людей, пытающихся использовать let в верхнем уровень - это когда они пытаются преобразовать какое-то тестируемое выражение в ghci в фактический исходный файл.

let может использоваться, когда вы работаете внутри монады. ghci и main работает внутри IO монада, поэтому вы можете написать что-то вроде let a = [1,2] в ghci.

+0

Я не делаю это внутри ghci или main. –

+0

Почему ты говоришь, что если это мне не поможет? –

+0

@MariusKavansky Вы не используете let для определения верхнего уровня в исходном файле. –