2017-02-08 19 views
4

Я начал в haskell сегодня, и все функции, которые я выполняю на ghci, отображают это сообщение. Я просто хочу знать, почему это happenning.I знает, что существует много вопросов по этому поводу, но это простой случай, и мне нужно понять эту ошибку в началеОшибка haskell: не в области. Что это значит?

function3 :: Int -> [Int] 
function3 x = [a | a <- [1..x] mod a x == 0] 
+4

«Не в объеме», означает, что вы пытаетесь использовать имя, которое не определено в том месте, где вы пытаетесь его использовать. В этом случае это происходит потому, что вы оставили запятую после '[1..x]', и поэтому ваше определение 'a' в понимании списка не работает должным образом. Измените его на '[a | a <- [1..x], mod a x == 0] ' – duplode

+1

Это поможет, если вы включили в сообщение сообщение об ошибке GHCi. – wizzup

ответ

5

случалась ошибка, когда вы набираете тип функции в 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> 

 Смежные вопросы

  • Нет связанных вопросов^_^