【发布时间】:2019-02-26 03:26:57
【问题描述】:
我正在尝试编写一个简单的添加函数,它接受两个真实列表并将匹配的索引添加在一起并生成一个真实列表,但由于某种原因,我无法让它接受真实列表作为参数,而只是int 列表。
fun add (nil, _) = nil
| add (_, nil) = nil
| add (a :: b, x :: y) = (a + x) :: add (b,y)
当我尝试运行我的测试输入时,val addTest = add([1.0, 2.0, 3.0], [0.1, 0.2, 0.3]); 它给了我:
Error: operator and operand do not agree [tycon mismatch]
operator domain: int list * int list
operand: real list * real list
我很好奇为什么 SML 默认使用 int 列表,即使“+”操作数同时用于实数和整数。它不应该接受 `a list 而不仅仅是 int 列表吗?
【问题讨论】:
标签: sml