Если мы посмотрим на источник случайного пакета, у нас будет файл Random.hs. Из-за расширений CPP необходимо вызывать ghci с помощью следующей команды:
ghci -cpp Random.hs
В качестве альтернативы можно сделать:
ghci -cpp
а затем изнутри ghci :
Prelude GOA> :load Random
[1 of 1] Compiling System.Random ( Random.hs, interpreted )
Ok, modules loaded: System.Random.
Если я использую режим Emacs Inferior Haskell (процессы Emacs/Inferior Haskell) и у меня есть исходный код :
module Main where
import System.Random
gen = (random (mkStdGen 0)) :: (Bool,StdGen)
mymult :: Int -> Int
mymult x = 2 * x
main = do
print $ mymult 5
затем после ввода команды emacs:
C-c C-l
который равен inferior-haskell-load-file, ghci открывается в подокне в emacs. Однако, если в этом окне я наберу load Random.hs, я получу сообщение об ошибке:
*Main GOA> :load Random.hs
Random.hs:1:2: lexical error at character 'i'
Failed, modules loaded: none.
Как я могу загрузить Random.hs с учетом расширений cpp? Или, альтернативно, как изменить haskell-mode/inf-haskell.el чтобы ghci вызывался с параметром -cpp после ввода C-c C-l, чтобы команда :load Random.hs могла быть выполнена без ошибок?
:load Random.hs. И в приведенном вами образце кода я не вижу причин, по которым вам нужно-cppв качестве опции дляghci. Вызов его без самой опции работает для меня. - person Sibi   schedule 31.05.2014Random.hsв zip-файл в hackage.haskell.org/package/random без опции cpp? - person artella   schedule 31.05.2014