所以我在标准ML中编写了一些代码,并试图用smlnj编译它。我收到以下错误:
Error: operator and operand don't agree [tycon mismatch]
operator domain: unit -> Absyn.fundec
operand: unit
-> (pos * pos) *
((string * int) * (string * int) * Absyn.tp * Absyn.tp
* Absyn.exp)
现在,看起来它应该是基于我粗略检查类型的类型匹配。我不会告诉你他们因为我想要一个通用的解决方案,而不是我的代码中的错误。
是否可以将这两种类型扩展为基本数据类型,以便我可以弄清楚它们之间的区别?随着所有这些类型的存储器浮动,事情变得混乱,并且通过.sml文件挖掘所有定义并在纸上编写扩展看起来像是一个单调乏味的解决方案。
我想说的是:
typeof Absyn.fundec
并弄清楚什么样的表达可能产生有效的fundec。
答案 0 :(得分:1)
由于Absyn.fundec不是标准类型,如int,bool等,必须有一个数据类型或类型声明,它应该告诉你究竟如何定义Absyn.fundec类型。