我正在尝试将以下命令式代码转换为 Haskell 中的功能解决方案。我想将集合s
的成员与集合s'
和更新集合的成员进行比较,t
并t'
基于比较。这是命令式伪代码:
-- s, s', t, t' are of type Data.Set a
-- foo x y returns a Just a or Nothing
foo :: a -> a -> Just a
-- Initialize t and t' to s and s'
t = s
t = s'
foreach x in s
foreach y in s'
if (foo x y) == Just z
insert z into t
delete x from t
delete y from t'
return (t, t')
我希望的 Haskell 函数的类型可能是这样的,
mergeSets :: S.Set -> S.Set -> (S.Set, S.Set)
mergeSets s s' = ...
其中S
是类型Data.Set
,函数的结果将是与新集合t
和的一对t'
(或返回集合t
和的其他方式t'
)。