gpt4 book ai didi

haskell - 是否有易错折叠的类型类别?

转载 作者:行者123 更新时间:2023-12-02 20:31:01 24 4
gpt4 key购买 nike

假设 T 是一个 Foldable 实例的类型。如果我需要执行可能失败的折叠,我可以将 foldM 与返回 Maybe 的函数结合使用。

但是,如果折叠的错误是 T 本身固有的呢?有这个类型的类吗?换句话说,是否存在可以折叠的类型的类型类,但不能为所有值定义折叠?

这可以推广到除也许之外的其他 Monad(或其他类型构造函数)吗?

更新

我正在寻找这样的东西:

{-# LANGUAGE TypeFamilies #-}
class FoldableT t where
type F t :: * -> *
foldMap :: Monoid m => (a -> m) -> t a -> F t m

那么 Foldable 只是 FoldableT 的一个特例,其中 F 是 Identity。

最佳答案

您可能没有考虑过的一种可能性是用可轻松折叠的东西包裹不可折叠类型:

newtype Trivial a = Trivial a
deriving (Functor)
instance Foldable Trivial where
foldMap _ _ = mempty

然后您可以在整个类型上派生 Foldable ,这将使不可折叠分支显示为空。

关于haskell - 是否有易错折叠的类型类别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59603865/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com