Haskell特定类型组合器是否存在?自定义组合器命名与表达问询
Haskell组合器相关问题解答
1. 是否存在类型为(a -> a -> b) -> (b -> b -> c) -> a -> a -> c的组合器?
标准库(base包)中没有现成的该类型组合器,但你给出的自定义组合器c的类型恰好匹配这个签名,其实现完全满足该类型的需求。
2. 自定义组合器的官方命名与基础组合器表达
- 官方命名:这个组合器在Haskell标准库中没有官方命名,Hoogle搜索无结果也能印证这一点。
- 基础组合器表达:可以用标准库中的基础组合器改写,比如:
这两种写法和你原有的实现完全等价,均由标准库中的基础组合器构建而成。-- 基于Applicative风格的实现 c f g = g <$> f <*> flip f -- 基于Arrow组合器的实现 import Control.Arrow ((&&&)) c f g = uncurry g . (f &&& flip f)
内容的提问来源于stack exchange,提问作者user23321471
相关产品推荐
相关产品推荐

