Haskell ghci не может загрузить файл - PullRequest
0 голосов
/ 14 октября 2018

Я новичок в Haskell и пытаюсь поиграть с ним.Поэтому я хочу определить некоторые функции в файле, а затем загрузить их в ghci.

У меня есть файл с именем tryout.hl, который я хочу загрузить в ghci, используя :l tryout или :load tryout.hl.С обеими командами я получаю target ‘tryout’ is not a module name or a source file.

Что я делаю не так?

Вот моя история оболочки:

[user@pc](~/proggin/haskell)$ ls -lah
total 12K
drwxr-xr-x  2 user users 4.0K Oct 14 05:07 .
drwxr-xr-x 14 user users 4.0K Oct 13 07:51 ..
-rw-r--r--  1 user users  138 Oct 14 05:07 tryout.hl

[user@pc](~/proggin/haskell)$ cat tryout.hl 
take' :: (Num i, Ord i) => i -> [a] -> [a]  
take' n _  
    | n <= 0   = []  
take' _ []     = []  
take' n (x:xs) = x : take' (n-1) xs 

[user@pc](~/proggin/haskell)$ ghci
GHCi, version 8.4.3: http://www.haskell.org/ghc/  :? for help
Prelude> :!pwd
/home/user/proggin/haskell
Prelude> :!ls
tryout.hl
Prelude> :l tryout
target ‘tryout’ is not a module name or a source file
Prelude> :load tryout.hl
target ‘tryout.hl’ is not a module name or a source file

1 Ответ

0 голосов
/ 14 октября 2018

Исходные файлы Haskell должны заканчиваться расширением hs.Переименование файла должно заставить его работать:

$ mv tryout.hl tryout.hs

Демонстрация в ghci:

λ> :l tryout.hl
target ‘tryout.hl’ is not a module name or a source file
λ> :l tryout.hs
[1 of 1] Compiling Main             ( tryout.hs, interpreted )
Ok, one module loaded.
...