Я начну с «невозможно воспроизвести»:
% cat <<EOF > ap.hs
heredoc> data MetricUnit = Meter | Liter | KiloGram
deriving (Show, Eq)
symbol :: MetricUnit -> String
symbol Meter = "m"
symbol Liter = "L"
symbol KiloGram = "kg"
heredoc> EOF
tommd@ovdak /tmp% ghci ap.hs
GHCi, version 8.6.4: http://www.haskell.org/ghc/ :? for help
Loaded package environment from /Users/tommd/.ghc/x86_64-darwin-8.6.4/environments/default
package flags have changed, resetting and loading new packages...
Loaded GHCi configuration from /Users/tommd/.ghci
[1 of 1] Compiling Main ( ap.hs, interpreted )
Ok, one module loaded.
*Main>
Так что загружается нормально.
Возможно, вы пытаетесь определить код в GHCi вместо загрузки из файла? В этом случае см. Ответ @ Aplet123 о многострочности. В качестве примера неправильного использования GHCi, который вы, возможно, делаете, рассмотрим:
*Main> foo :: Bool
<interactive>:1:1: error: Variable not in scope: foo :: Bool
*Main> foo = True
После ввода первой строки GHCi пытается показать вам foo (print (foo :: Bool)
) и не имеет foo
он скажет вам, что foo не входит в область действия. Снова посмотрите другой ответ.