最近我想到了一个函数的想法:
gridFoldr :: (a -> Grid -> Grid) -> [a] -> Grid -> Grid
gridFoldr f g xs = foldr f xs g
字符串
因此,我可以使用普通(.)运算符轻松地将合并多个网格计算组合在一起:
let grid' = gridFoldr gridOp1 args1 . gridFoldr gridOp2 args2 $ myGrid
型
但是我有一种感觉,我错过了一些通用的haskell概念,使用类似的方法,而不引入新的函数。我是对的吗?有一些标准的函数/包/或者一些聪明的Monad来完成这项任务吗?
1条答案
按热度按时间dfddblmv1#
看起来你对“网格更新”感兴趣,也就是对函数
Grid -> Grid
感兴趣。这种类型同构于Endo Grid
,Endo Grid
是一个著名的幺半群。因此,您的功能类似于
字符串
甚至是开发更多的库
型
实际上,
foldMap
是你的函数的推广。型