繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM