我想使用 foldl/foldr 或递归编写一些东西,在先前执行的“状态”中一个接一个地执行任务,并使用下一个 Job 的功能。它需要使用任何类型的给定变量/函数。现在时间无关紧要,这就是为什么我用hole代替它。我可以用递归来做到这一点,但由于某种原因“++”改变了它的类型,所以我得到了一个错误。
到目前为止我试过这个:
data Time = Time Int Int
data Job a = Job Time (a -> a)
perform :: a -> [Job a] -> a
perform s [] = s
perform s ((Job _ f):xs) = foldl (\x -> f s) s xs
--perform startingpoint [] = s
--perform startingpoint ((Job _ function) : xs) = foldl (\x -> function startingpoint) (function startingpoint) xs
有什么问题?我该如何解决这个问题?