Я пытаюсь выполнить функцию сопоставления шаблонов в инструментах CPN с использованием SML. Я определил набор цветов EVENT: 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, я думаю, CPN-Tools # -оператор не поддерживается SML. К сожалению, я не знаю, как извлечь только часть кортежа из первого списка, в котором я действительно заинтересован. Любая помощь по этому поводу?
Любая причина, вы не можете просто 'карта (п (а, _) => а) xs', а затем сравнить два списка напрямую ? Это не похоже на то, что вам нужно второе значение для чего-либо в этой функции. – Inaimathi