帮助我理解Haskell ghci配置文件中的函数

时间:2010-11-19 16:41:38

标签: haskell haskell-platform

我的xp框使用Haskell Platform,版本6.12.3

我在.ghci文件中包含以下内容。

:def test \_ -> return $ ":load c:\scripts\haskell\test.hs"

现在我可以通过输入:test来编译和加载我的test.hs脚本。但是我也可以使用:t, :te or :tes。我认为这是Haskell成语称为模式匹配。不幸的是,my:test命令现在阻止使用:t作为Haskell命令的简短形式:type

如何使用以“t”开头的整个单词调用函数,例如“test”不会干扰:t的{​​{1}}别名?

3 个答案:

答案 0 :(得分:4)

您可以使用:def为命令创建别名。

:def t return . (":type "++)
  

如何使用以“t”开头的整个单词调用函数,例如“test”不会干扰:t的{​​{1}}别名?

到目前为止,我们一直在谈论GHCi命令。函数名称不以冒号开头,并且没有部分函数名称的自动完成。

答案 1 :(得分:4)

在你的问题中,你混淆了两个不同的东西: GHCi命令,它以冒号开头,允许你在GHCi运行时与它交互;和 Haskell函数,它们具有普通的名称,你可以在GHCi中运行(但一般来说,它不能查询它)。任何Haskell教程都可以帮助您完成普通的功能;对于GHCi命令,最好的参考可能是the GHC manual's section on GHCi;甚至有a subsection just about commands

我认为Heatsink's suggestion最适合恢复使用:t; GHCi试图通过弄清楚命令的前缀和运行方式来帮助你,所以如果它猜错了,你只需告诉它你的意思。请注意,这与模式匹配有 nothing 。模式匹配与编写Haskell函数有关,Haskell函数通过构造函数检查数据,例如

null :: [a] -> Bool
null []    = True
null (_:_) = False

答案 2 :(得分:0)

从“了解你一个Haskell”开始的章节。

“通过在你的提示符下键入ghci来调用交互模式。如果你在一个名为myfunctions.hs的文件中定义了一些函数,你可以输入以下内容来加载这些函数:l myfunctions然后你就可以玩了使用它们,前提是myfunctions.hs位于调用ghci的同一文件夹中。如果更改.hs脚本,只需运行:l myfunctions或执行:r,这是等效的,因为它会重新加载当前脚本。“ p>

我有点困惑为什么你做了你最初做的事情?你可以解释吗?输入额外的.hs

并不是那么多
test.hs 

这样做也有提醒您加载文件的好处。