ghci 未从文件加载函数

2024-01-01

在 test.hs 中,我有:

doubleMe x = x + x

在 ghci 中,我输入:

Prelude> :l test
[1 of 1] Compiling Main             ( test.hs, interpreted )
Ok, modules loaded: Main.
*Main> doubleMe 9

<interactive>:1:0: Not in scope: `doubleMe'
*Main> 

为什么?怎么修?


我的猜测是您已经在源文件中定义了一个 main 函数。

如果您定义了一个main函数,加载模块:l test不会导入任何函数,但是main。在这种情况下,您可以通过在模块名称前添加星号来加载它::l *test。 原因是编译后的二进制文件会隐藏未导出的顶级函数。前面加上星号会强制 GHCi 忽略预编译模块 (test) 并解释源文件 (test.hs)。

[jkramer/sgi5k:.../haskell]# cat test.hs 

main = do
    print $ doubleMe 2

doubleMe x = x + x

[jkramer/sgi5k:.../haskell]# ghc --make test
[jkramer/sgi5k:.../haskell]# ghci
[...some messages...]
>> :l test
Ok, modules loaded: Main.
>> :t doubleMe

<interactive>:1:0: Not in scope: `doubleMe'
>> :l *test
[1 of 1] Compiling Main             ( test.hs, interpreted )
Ok, modules loaded: Main.
>> :t doubleMe
doubleMe :: (Num a) => a -> a

检查这些链接以获取更多信息:

http://www.haskell.org/ghc/docs/6.12.2/html/users_guide/ghci-compiled.html http://www.haskell.org/ghc/docs/6.12.2/html/users_guide/ghci-compiled.html http://www.haskell.org/ghc/docs/6.12.2/html/users_guide/interactive-evaluation.html#ghci-scope http://www.haskell.org/ghc/docs/6.12.2/html/users_guide/interactive-evaluation.html#ghci-scope

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ghci 未从文件加载函数 的相关文章

  • : 中缀运算符在 Haskell 中的作用是什么?

    我正在阅读Haskell 简要介绍 http www haskell org tutorial index html 这不是那么温和 并且它反复使用 操作符而不直接解释它的作用 那么 它到底有什么作用呢 是 前置 运算符 x xs 返回一个
  • 在 Haskell 中合并两个列表

    无法弄清楚如何合并两个列表通过以下方式在哈斯克尔 INPUT 1 2 3 4 5 11 12 13 14 OUTPUT 1 11 2 12 3 13 4 14 5 我想提出一个更懒的合并版本 merge ys ys merge x xs y
  • Data.Sequence 中的 inits 和 tails 如何工作?

    Louis Wasserman 编写了当前的实现inits and tails in Data Sequence 他表示它们非常高效 事实上 只要查看代码 我就可以看到 无论它们在做什么 它们都是以干净 自上而下的方式进行的 这往往会给惰性
  • 如何在不声明新数据的情况下更改类型(String,Int)元组的 Ord 实例?

    我正在尝试对类型列表进行排序 String Int 默认情况下 它按字符串排序 然后按整数排序 如果字符串相等 我希望它是相反的 首先比较整数 然后如果相等则比较字符串 另外 我不想切换到 Int String 我找到了一种通过定义实例来实
  • 类型级别集结合律的证明

    我试图证明类型级函数Union https hackage haskell org package type level sets 0 8 5 0 docs Data Type Set html t Union是关联的 但我不确定应该如何完
  • 我是否需要采取明确的操作来促进与持久数据结构的共享?

    我来自命令式背景 正在尝试实现一个简单的不相交集 并集查找 数据结构 以获得在 Haskell 中创建和修改 持久 数据结构的一些练习 目标是有一个简单的实现 但我也关心效率 我的问题与此相关 首先 我创建了一个按等级并集的不相交集森林实现
  • 为什么在 where 子句中使用类型签名如此罕见?

    它是否有助于编译器优化 或者只是添加额外类型签名的多余工作 例如 人们经常看到 foo a gt b foo x bar x where bar x undefined 而不是 foo a gt b foo x bar x where ba
  • 如何在haskell中用另一个字符串替换一个字符串

    我想用不同的字符串替换输入文件中的字符串 我正在寻找一种方法 但似乎我只能逐个字符地更改字符串 例如在我下面的代码中 replace String gt String replace replace x xs if x then y rep
  • 使用带有两个列表而不是一个列表的地图。可以筑巢吗?

    我需要多次运行一个带有两个参数的函数 我有两个包含这些参数的列表 我希望能够使用map或类似的东西用相应的参数调用函数 我要调用的函数具有以下类型 runParseTest String gt String gt IO 列表的创建方式如下
  • Parsec.Expr 具有不同优先级的重复前缀

    Parsec Expr buildExpressionParser 的文档说 相同优先级的前缀和后缀运算符只能出现一次 即 如果 为前缀否定 则不允许使用 2 但是 我想解析这样的字符串 具体来说 考虑以下语法 sentence ident
  • 为什么 mod 在表达式中给出的结果与在函数调用中给出的结果不同?

    假设有人想要计算函数 f x y x mod 3 y mod 3 mod 2 那么 如果再展开f 1 0 手动 可以得到 1 mod 3 0 mod 3 mod 2 1 然而 如果使用内联函数 结果是 let f x y x mod 3 y
  • Haskell Fibonacci 达到最大指定数?

    我有一个已启动并正在运行的 Haskell 函数 但它做错了事情 它应该输出最多指定最大数量的斐波那契数列 像这样 fibonacciSequence 86 1 1 2 3 5 8 13 21 33 54 我的代码当前输出斐波那契数列中的前
  • 管道 - 将多个来源/生产者合并为一个

    我正在使用读取文件sourceFile 但我还需要在处理操作中引入随机性 我认为最好的方法是拥有一个这样的制片人 Producer m StdGen ByteString 其中 StdGen 用于生成随机数 我打算让生产者执行 source
  • 如何只修改记录的一个字段而不完全重写它? [复制]

    这个问题在这里已经有答案了 It s the second time I m tackling this problem And for the second time this is while working with the Stat
  • Haskell 中多核编程的现状如何?

    Haskell 中多核编程的现状如何 现在有哪些项目 工具和库可用 有哪些经验报道 2009年至2012年期间 发生了以下事件 2012 从 2012 年开始 并行 Haskell 状态更新开始出现在并行 Haskell 摘要 http w
  • 如何让 esqueleto 为我生成 SQL 字符串?

    我怎样才能让esqueleto从a生成一个SQL字符串from陈述 的文档toRawSql说 你可以打开持久的查询日志记录 我尝试了所有可能的形式MonadLogger我可以理解 但它从未打印任何 SQL 同一文档还说 手动使用此功能 是可
  • 检索 Haskell 项目中所有导入的列表

    因此 我的最终目标是通过确保项目导入的所有实体都存在于其声称可以使用的版本中 来评估 cabal 文件中依赖项的准确性 一个好的开始是找到单个源文件使用的所有导入实体的列表 可选地包含有关它们来自何处的信息 我愿意暂时忽略类实例的情况 因为
  • 这个实例有什么问题:ArrowApply Automaton?

    我希望 Automaton 有实例 ArrowApply 但 Control Arrow Transformer Automaton 没有 我认为下面的代码会表现良好 data Automaton b c Auto runAuto b gt
  • 如何与更高级别的类型合作

    玩弄教堂的数字 我遇到了无法指导 GHC 类型检查器处理高阶类型的情况 首先我写了一个版本 没有任何类型签名 module ChurchStripped where zero z z inc n z s s n z s natInteger
  • Haskell 为替代的 Either 数据类型定义 Functor 实例

    通过 Typeclassopedia 获得一些使用类型类的路由 想要替代Either的一个实例Functor 但即使检查定义Either作为一个例子Functor总是给我带来麻烦 有这个 但不会编译 data Alt a b Success

随机推荐

  • 为什么JPA实体类有一个实体名加下划线的类

    我是 JPA 新手 我创建了一个如下所示的类 package programme import javax persistence Access import javax persistence AccessType import java
  • 递减字母值

    我试图弄清楚如何将数组中的一堆字母值向下移动一步 例如 我的数组包含值 d e f g h 我想将其更改为 c d e f G 这是我正在使用的代码 function move up left x if x orientation down
  • iTextSharp 表格宽度为页面的 100%

    我正在尝试使用 iTextSharp 将表格添加到文档中 这是一个例子 Document document new Document PageSize LETTER 72 72 72 72 PdfWriter writer PdfWrite
  • 重命名所有列名称以用于大查询中的连接目的

    我需要连接两个具有完全相同列名的表 我需要在加入步骤之前重命名列 每个表包含 100 多列 我想知道是否有任何方法可以添加前缀或后缀来重命名所有列 而不是手动更改它们AS 我在 BigQuery 上使用标准 SQL 我在下面举了一个例子来说
  • 如何对集合中所有对象的属性执行 .Max() 并返回具有最大值的对象[重复]

    这个问题在这里已经有答案了 我有一个具有两个 int 属性的对象列表 该列表是另一个 linq 查询的输出 物体 public class DimensionPair public int Height get set public int
  • 为什么c#不能计算数学函数的精确值

    为什么c 不能做任何精确的操作 Math Pow Math Sqrt 2 0 2 2 0000000000000004 我知道双打是如何工作的 我知道舍入误差来自哪里 我知道它是almost正确的值 我知道你不能在有限的双精度数中存储无限的
  • 如何配置 HTML Purifier 以允许图像 src 的数据 URI?

    如何允许图像标签的 src 属性使用 Base64 数据 我看到这样的代码 config gt set URI AllowedSchemes array http gt true https gt true mailto gt true f
  • Windows批处理脚本取消隐藏被病毒隐藏的文件

    由于我看到很多人的文件被闪存驱动器病毒隐藏 因此我为他们提供了一个 Windows 命令行 使用attrib 或使用Linux 来解决当受感染的文件被删除并且它们的文件仍然 丢失 时的问题 删除文件和文件夹属性系统 隐藏和归档的命令 并非真
  • 当父线程退出时,Java 守护线程会自动终止吗?

    如果一个线程创建了一个守护线程 我可以相信当父线程退出run方法时 子线程也会终止吗 否 线程是独立的 一个线程 拥有 另一个线程并强制终止是没有意义的 如果你是really询问当应用程序中的所有非守护线程都已死亡时 您是否可以依赖进程死亡
  • 为 api 26 设置 Gradle (Android)

    由于我已将 Nexus 5x 升级到 Android O DP3 我无法测试我的应用程序 我收到错误消息是因为没有配置我的 Gradle 文件以使用新的 API 级别 26 所以我更改了它和依赖项 但我在所有支持库上不断收到错误 例如 Fa
  • Google Service Plugin 3.2.0 导致 Gradle 构建失败

    我正在尝试更新 Google 服务插件 但在 Gradle 同步期间收到错误 项目刷新失败 错误 未找到匹配项 版本 3 1 1 一切正常 但一旦我将 build gradle 更新为 classpath com google gms go
  • Angular 1.5 & ES6 - 依赖注入

    我是 Angular 新手 我正在尝试使用 ES6 我的依赖注入有问题 我无法让它工作 我的index js import index state css import angular from angular import angular
  • 无法更改 Visual Studio 2017 中程序集的默认语言

    我的应用程序支持三种语言 en es 和 fr 当我构建我的 干净的 从模板 UWP 应用程序时 我收到消息 warning PRI257 0xdef00522 Resources found for language s en es fr
  • 如何按位和 CFBitVector

    我有两个实例CFMutableBitVector 像这样 CFBitVectorRef ref1 ref2 我怎样才能对这些家伙进行按位运算 目前我只关心and 但显然xor or等了解一下会很有用 显然 我可以迭代向量中的位 但当我在位级
  • Noob to PowerShell,复制文件夹内的文件

    抱歉 如果这是一个非常简单的过程 我有一个文件夹结构 根级别有大约 4 000 个目录 空 另一个位置有另一组包含数据的文件夹 我只想将 location2 中的文件夹中的文件复制到 location1 中的文件夹 即 FolderABC1
  • 以百分比形式显示会话的 Oracle CPU 使用率

    以下脚本返回活动会话的 CPU 使用情况 结果显示 CPU 使用率 以秒为单位 我需要的是相同的报告 其中包含 CPU 使用率百分比 做这个的最好方式是什么 Show CPU Usage for Active Sessions SET PA
  • 以编程方式转储调用堆栈

    寻找一种方法 在遇到一段代码时以编程方式转储调用堆栈和 net Win Forms 应用程序 这是我以前从未遇到过的东西 但会节省我一些调试时间 更新 忘记添加 这会给应用程序增加多少开销 即它会大大减慢应用程序的速度 System Env
  • 设置 WH_KEYBOARD 挂钩失败并出现错误 1428

    这是我的 C 代码 include
  • 如何获取显示引用的 C# 库的 XML 文档?

    假设您有一个包含多个函数的 C 库 所有函数都使用通常的文档记录
  • ghci 未从文件加载函数

    在 test hs 中 我有 doubleMe x x x 在 ghci 中 我输入 Prelude gt l test 1 of 1 Compiling Main test hs interpreted Ok modules loaded