module - PAKCS REPL 考虑一些未定义的东西,但定义它的模块已加载
问题描述
问题
我的代码包括一个名为 Tests 的模块,它定义了以下内容:
broken :: SetRBT Int
broken = insertRBT 1 $ emptySetRBT (<)
我可以broken
在 REPL 中进行评估:
All> broken
RedBlackTree.RedBlackTree (_impl#==#Prelude.Eq#Prelude.Int) (_impl#==#Prelude.Eq#Prelude.Int) (_def#<#Prelude.Ord (_inst#Prelude.Ord#Prelude.Int)) (RedBlackTree.Tree RedBlackTree.Black 1 RedBlackTree.Empty RedBlackTree.Empty)
All>
但是,我无法评估broken
' 的定义的 RHS:
All> insertRBT 1 $ emptySetRBT (<)
PAKCS_Main_Exp.curry, line 3.18: Error:
Undefined type RedBlackTree.RedBlackTree
ERROR occurred during parsing!
All>
或者我相信,直到我尝试附加类型签名:
All> insertRBT 1 $ emptySetRBT (<) :: SetRBT Int
RedBlackTree.RedBlackTree (_impl#==#Prelude.Eq#Prelude.Int) (_impl#==#Prelude.Eq#Prelude.Int) (_def#<#Prelude.Ord (_inst#Prelude.Ord#Prelude.Int)) (RedBlackTree.Tree RedBlackTree.Black 1 RedBlackTree.Empty RedBlackTree.Empty)
All>
我可以在需要时附加类型签名,或者更一般地说,执行错误消息建议我应该执行的任何操作。但是我怎么知道将上述错误消息解释为“您必须附加类型签名”?更一般地说,鉴于(见下文)加载了 RedBlackTree,该类型错误甚至意味着什么?
我正在加载的内容
每次我启动 PAKCS 时,我都会运行:l All
. 加载一个模块,该模块在相关部分读取,
module All ( module M
) where
import FiniteMap as M
import SetRBT as M
import RedBlackTree as M
import Tests as M
这个成语让我可以加载所有我需要的东西(还有其他东西),而不会产生很长的提示。
如果我运行:modules
它看起来应该定义 RedBlackTree:
All> :modules
Currently loaded modules:
All (loaded from ./.curry/pakcs/All.pl)
Prelude (loaded from /home/jeff/logic/curry/install/pakcs-2.0.2/lib/.curry/pakcs/Prelude.pl)
FiniteMap (loaded from /home/jeff/logic/curry/install/pakcs-2.0.2/lib/.curry/pakcs/FiniteMap.pl)
SetRBT (loaded from /home/jeff/logic/curry/install/pakcs-2.0.2/lib/.curry/pakcs/SetRBT.pl)
RedBlackTree (loaded from /home/jeff/logic/curry/install/pakcs-2.0.2/lib/.curry/pakcs/RedBlackTree.pl)
Tests (loaded from ./.curry/pakcs/Tests.pl)
All>
解决方案
您必须告诉解释器添加引用的模块。
All> :add RedBlackTree SetRBT
...一些消息...
All SetRBT RedBlackTree> insertRBT 1 $ emptySetRBT (<)
它会起作用。
推荐阅读
- python - 如何在没有理解的情况下填写字典
- spring-boot - 在 thymeleaf 中设置 th:field 属性正在替换 name 属性
- wpf - 当我对单元格(tableview)进行任何操作并保存某些内容时,图像应该在使用 wpf c# mvvm 的单击单元格中带有相同的数据
- javascript - 在 Typescript 中编写强类型对象反规范化器
- java - 为什么我们不能为 java 中的 String[] args 提供大小?
- java - 使用 @RestController 在 Spring Boot 中发布数据时出错
- selenium - geckodriver 可执行文件需要在路径中
- mysql - 计算所选数据mysql的平均值
- java - 在 Java 中限制类的访问
- amazon-web-services - CloudWatch 代理错误日志 - 指标未显示在控制台中