在haskell

时间:2017-05-01 16:26:14

标签: haskell ghci

我刚刚开始学习haskell,我真的不明白如何使用我在GHCi解释器中使用普通编辑器创建的文件......

这是我的文件列表 - comprehension.hs

main = do
let substantive = [" Student", " Professor", " Tutor"]
let adjektive = ["fauler", "fleissiger", "hilfreicher"]
let tupel = [a ++ s | a <- adjektive, s <- substantive]
return (tupel)

当我在GHCi中加载文件时,它可以正常工作,但后来我无法使用它。因此,当我尝试执行tupel时,它无法工作。

Prelude> :load list-comprehension.hs
[1 of 1] Compiling Main             ( list-comprehension.hs, interpreted )
Ok, modules loaded: Main.

*Main> tupel   
<interactive>:3:1: error: Variable not in scope: tupel

当我尝试获取其他变量时也会发生这种情况。 我已经对此进行了很多研究,但我发现我的文件有什么问题或者这通常是如何工作的...... 我完全不确定“main = do”和“return”部分,但这是唯一一个在加载时不会产生解析错误的开头和结尾。

1 个答案:

答案 0 :(得分:1)

GHCi只有范围内文件的顶级定义。试试这个:

main :: IO ()
main = print tupel

substantive :: [String]
substantive = [" Student", " Professor", " Tutor"]

adjektive :: [String]
adjektive = ["fauler", "fleissiger", "hilfreicher"]

tupel :: [String]
tupel = [a ++ s | a <- adjektive, s <- substantive]