【发布时间】:2015-08-26 15:50:32
【问题描述】:
我正在尝试使用 SML 在 CPN 工具中执行模式匹配功能。
我已经定义了一个颜色集事件:colset EVENT = product EVENTTYPE * EVENTTIME timed;
比较列表时,我只对事件类型感兴趣,所以我试图比较例如[a,b] 到 [ (a,0), (b,1) ] 到 - 所以我编写了以下 SML 函数来比较两个列表:
fun pattern_match _ [] = true
| pattern_match [] [x] = false
| pattern_match (x::xs) (y::ys) =
if #1 x = y
then pattern_match xs ys
else pattern_match xs (y::ys)
这只会在 evalloop.sml 中给我一个未指定的编译器错误 由于我对 SML 相当陌生,我的猜测是 SML 不支持 CPN-Tools #-operator。 不幸的是,我不知道如何从我真正感兴趣的第一个列表中只提取元组的一部分。对此有什么帮助吗?
【问题讨论】:
-
有什么理由不能只
map (fn (a,_) => a) xs,然后直接比较两个列表?看起来您不需要此函数中的任何内容的第二个值。