[英]Error loading function from file in GHCi
我对Haskell完全不熟悉。 为了掌握基础知识,我已经开始研究“了解一个好的Haskell”。 我坚持从文件加载函数的简单问题。
该文件名为baby.hs
并包含该函数
doubleMe x = x + x
没有别的。 我把它保存在/Users/me
。
打字:load baby
到GHCi中,我收到以下错误:
target“baby”不是模块名称或源文件。
我正在使用Mac,我使用TextEdit设置创建了我的baby.hs
文件,以生成纯文本/ UTF-8文件。 我认为我的主目录是/Users/me
虽然我不知道如何从GHCi检查这个,但是从我在运行GHCi之前从bash检查时。
知道我做错了什么吗?
正如@clintm建议的那样,首先修复你的doubleMe函数。 你有什么会给出错误---但不是你报告的错误。
让ghci找到你的文件的最简单方法是确保你从保存文件的同一目录启动ghci。打开一个终端窗口,然后输入
cd /Users/me
ls
ls
列出当前目录的内容; 你应该看到你的文件。 如果你这样做,太好了! 在bash提示符下键入ghci
,并且:load baby
应该可以正常工作。 如果没有,您还没有将文件保存在您认为的位置。 返回TextEdit或使用Spotlight查看您真正放置它的位置。
你错过了模块行。 baby.hs的第一行应该是
module Baby where
就doubleMe
而言,您缺少将x
声明为函数的参数。
doubleMe x = x + x
否则,您的函数不知道x
是什么。
尝试使用完整路径,例如:
:load /Users/me/baby.hs
您还应该能够使用相对路径。 尝试导航到baby.hs
首先出现的目录:
% cd /Users/me
% ghci
GHCi blah blah blah
Prelude> :load baby.hs
当你开始工作时,试着离开.hs
。 我不是100%肯定在什么情况下有效。
@Alec:“问题是这个文件真的叫做baby.hs.txt,但我没有发现,因为Finder隐藏了.txt部分。”
你可以在TextEdit中解决这个问题...
选择你的baby.hs.txt文件
双指点击它弹出上下文菜单
选择“获取信息”以打开文件的“信息”对话框
在Name&Extension区域输入baby.hs
关闭“信息”对话框
另一个对话框询问你是否真的想要.hs扩展名
确认你这样做,而且你很开心
尝试使用GHCi打开文本文件,然后键入您的命令,它的工作原理
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.