2013-04-30 4 views
2

Я новичок в Haskell и все еще пытаюсь тренировать некоторые синтаксис/идиомы. Может ли кто-нибудь объяснить, что я делаю неправильно в этом коде? main должен распечатать список из 5 случайных чисел. Это работает в GHCi, но не в файле. Что мне не хватает?Ошибка с основной функцией

import System.Random 

main = newStdGen >>= print . take 5 . randomRs (1,10) 
+10

При описании проблемы, пожалуйста, более конкретно, чем «она не работает». Скомпилирует ли он? Если да, то работает ли он? Делает ли это другой результат, чем вы ожидали? –

ответ

14

При компиляции этого, вы получаете

Неопределенный тип переменной `a0' в ограничениях ....

Это происходит потому, что в GHCI, тип 1 и 10 по умолчанию Integer, но компилятор не имеет одинаковых правил дефолта.

Поскольку вы печатаете их перед тем, как делать что-либо еще, он не может выводить тип.

Все, что вам нужно сделать, это добавить явный тип подписи, например

main = newStdGen >>= print . take 5 . randomRs (1::Int,10)