我对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检查时。
知道我做错了吗?
答案 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打开文本文件,然后键入您的命令,它会起作用