【发布时间】:2019-05-08 22:10:50
【问题描述】:
此函数是函数字符串的一部分(用于课程)。它应该获取一个实数列表 [s,a,w,h],并根据其他实数列表检查它是否相等。这些实数列表是通过使用 racer_stats() 将类型赛车对象(在列表 R::acer 中)转换为实数列表而制成的。
然后我希望该函数返回具有等于其 racer_stats() 统计数据的统计数据的 Racer。不幸的是,无论我尝试什么,我都无法弄清楚如何让 SML 将模式匹配 [s,a,w,h] 作为一个真实列表,因此即使我创建了一个新的基本案例,它也不会进行比较。
有什么建议吗?
fun RFS([s,a,w,h], []) = None
| RFS([s,a,w,h], R::acer) =
if ( [s,a,w,h] = racer_stats(R) )
then R
else RFS([s,a,w,h], acer);
我也试过了:
fun RFS( [0.1, 0.2, 0.3] , []) = None
| RFS([s,a,w,h], []) = None
| RFS([s,a,w,h], R::acer) =
if ( [s,a,w,h] = racer_stats(R) )
then R
else RFS([s,a,w,h], acer);
并出现语法错误。
【问题讨论】:
-
real不是等式类型(尝试在解释器中输入1.0 = 1.0;),所以real list也不是,并且在实数上匹配是语法错误。你需要想出不同的比较方法。
标签: sml