在haskell中加载并使用代码文件

在haskell中加载并使用代码文件,haskell,ghci,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 <- substan

我刚刚开始学习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)
main=do
让实体=[“学生”、“教授”、“导师”]
let adjektive=[“fauler”、“fleissiger”、“hilfreicher”]
设tupel=[a++s | a tupel
:3:1:错误:变量不在范围内:tupel
当我尝试获取其他变量时,也会发生这种情况。 我对此进行了大量研究,但我无法找出我的文件有什么问题,或者这通常是如何工作的。。。
我对“main=do”和“return”部分一点也不确定,但这是加载时唯一不会产生解析错误的开头和结尾。

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]
main::IO()
main=打印元组
实质性::[字符串]
实质性=[“学生”、“教授”、“导师”]
形容词::[字符串]
形容词=[“福勒”、“弗莱舍”、“希尔弗雷彻”]
元组::[字符串]

元组=[a++s|a如果你想使用GHCI中的定义,请在
main
块之外定义它们,而不要使用
let
语句。非常感谢!我想我理解你所做的,我会仔细阅读;)只是说清楚,类型签名不是强制性的,但你肯定应该使用它们来帮助阅读你的代码,包括你自己。
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]