1
下面的代码在REPL键入时的工作原理:SML/NJ代码在REPL但无法编译
type seat = seat_type * int
val my_seat = (Window, 13)
fun aow seat =
case seat of
(Window,_) => "Window"
| (Aisle,_) => "Aisle"
fun is_window (x,_) = x = Window
aow my_seat
is_window my_seat
但如果保存在一个文件和编译,表达aow my_seat
和is_window my_seat
失败,出现以下错误在编译期间:
test1.sml:12.23-16.18 Error: operator is not a function [tycon mismatch]
operator: seat_type
in expression:
Window aow
uncaught exception Error
raised at: ../compiler/TopLevel/interact/evalloop.sml:66.19-66.27
../compiler/TopLevel/interact/evalloop.sml:44.55
../compiler/TopLevel/interact/evalloop.sml:296.17-296.20
如果我把它们注释掉,文件汇编,当我键入REPL两个表达式,他们的工作。什么可能会导致此错误?此外,如果它是相关的,我的数据类型和类型定义的评论是值得欢迎的,因为我没有看到自己适合这个问题。
val x = aow my_seat
val y = is_window my_seat
让文件编译: