【发布时间】:2019-06-20 21:03:58
【问题描述】:
我有一个具有以下签名的函数:
simCon :: [Constraint] -> Maybe [Constraint]
我想编写一个方法,如果 simCon 返回 Just [Constraint],我想将它们反馈回 simCon 并重新运行该方法,并一直这样做直到输入与输出相同。
如果什么都没有,我想终止算法。
如果输入和输出都是相同的类型,我有一些可以工作的东西
fixed :: Eq a => (a -> a) -> a -> a
fixed f a
| a == a' = a
| otherwise = fixed f a'
where a' = f a
但这行不通,因为我现在返回一个 Maybe。有人可以建议一种编写类似函数但返回类型为 Maybe 的方法吗?
【问题讨论】:
-
你可以用模式匹配解开它。
-
fixed (>>= simCon)? -
你把论点放在哪里了?
-
@Lana 紧随其后,与任何功能一样。
标签: haskell functional-programming fixed-point-iteration