случалась ошибка, когда вы набираете тип функции в GHCi?
$ ghci
GHCi, version 8.0.1: http://www.haskell.org/ghc/ :? for help
Prelude> function3 :: Int -> [Int]
<interactive>:1:1: error:
Variable not in scope: function3 :: Int -> [Int]
Prelude>
Если это так, то вы должны использовать вход Многолинейность
Prelude> :{
Prelude| function3 :: Int -> [Int]
Prelude| function3 x = [a | a <- [1..x], mod a x == 0]
Prelude| :}
И отметил ,
перед тем mod
В качестве альтернативы, для лучшего рабочего процесса, вы можете сохранить свой код в файл и нагрузка в GHCi с использованием :load
$ cat tmp/functions.hs
function3 :: Int -> [Int]
function3 x = [a | a <- [1..x], mod a x == 0]
$ ghci
GHCi, version 8.0.1: http://www.haskell.org/ghc/ :? for help
Prelude> :l tmp/functions.hs
[1 of 1] Compiling Main (tmp/functions.hs, interpreted)
Ok, modules loaded: Main.
*Main> :t function3
function3 :: Int -> [Int]
*Main>
«Не в объеме», означает, что вы пытаетесь использовать имя, которое не определено в том месте, где вы пытаетесь его использовать. В этом случае это происходит потому, что вы оставили запятую после '[1..x]', и поэтому ваше определение 'a' в понимании списка не работает должным образом. Измените его на '[a | a <- [1..x], mod a x == 0] ' – duplode
Это поможет, если вы включили в сообщение сообщение об ошибке GHCi. – wizzup