从GHCi中的文件加载函数时出错

时间:2011-10-11 23:51:11

标签: macos haskell load ghci

我对Haskell完全不熟悉。为了掌握基础知识,我已经开始研究“了解一个好的Haskell”。我坚持从文件加载函数的简单问题。

该文件名为baby.hs,包含函数

doubleMe x = x + x

,没有别的。我已将其保存在/Users/me

在GHCi中输入:load baby,我收到以下错误:

  

target`baby'不是模块名称或源文件。

我在Mac上工作,我使用TextEdit设置创建我的baby.hs文件,以生成纯文本/ UTF-8文件。我认为我的主目录是/Users/me,虽然我不确定如何从GHCi检查这个,这是从我在运行GHCi之前从bash检查时。

知道我做错了吗?

5 个答案:

答案 0 :(得分:4)

正如@clintm建议的那样,首先修复你的doubleMe函数。你所拥有的将会给出错误 - 但不是你报告的错误。

获取ghci查找文件的最简单方法是确保从保存文件的同一目录启动ghci。打开终端窗口,然后键入

cd /Users/me
ls

ls列出当前目录的内容;你应该看到你的文件。如果你这样做,太好了!在bash提示符下键入ghci:load baby应该有效。如果没有,您还没有将文件保存在您认为的位置。回到TextEdit或使用Spotlight查看你真正把它放在哪里。

答案 1 :(得分:2)

你错过了模块行。 baby.hs的第一行应该是

module Baby where

doubleMe而言,您缺少将x声明为函数的参数。

doubleMe x = x + x

否则,您的函数不知道x是什么。

答案 2 :(得分:2)

尝试使用完整路径,例如:

:load /Users/me/baby.hs

您还应该能够使用相对路径。尝试导航到baby.hs首先出现的目录:

% cd /Users/me
% ghci
GHCi blah blah blah
Prelude> :load baby.hs

当你开始工作时,请尝试离开.hs。我不能100%确定在什么情况下有效。

答案 3 :(得分:0)

@Alec:“问题是这个文件真的叫做baby.hs.txt,但我没有发现,因为Finder因某种原因隐藏了.txt部分。”

您可以在TextEdit ...

中解决此问题
  • 选择您的baby.hs.txt文件

  • 用两根手指点按它以弹出上下文菜单

  • 选择获取信息以打开文件的信息对话框

  • 在姓名&中输入baby.hs。扩展区

  • 关闭“信息”对话框

  • 另一个对话框询问您是否真的需要.hs扩展程序

  • 确认你这样做,并且你很有礼貌

答案 4 :(得分:0)

尝试使用GHCi打开文本文件,然后键入您的命令,它会起作用