gpt4 book ai didi

haskell - 强制 newtype 时无法推断出正确的类型

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

我试图用newtypecoerce来简化我的生活,但是在某些场景中使用它时我遇到了一个非常痛苦的问题:

import Data.Coerce (coerce)
import Data.Foldable (toList)

-- | newtype instance wrapping foldable type (not necessary [Int])
newtype Foo = Foo [Int]

bar :: [Int]
bar = toList $ coerce $ Foo [1,2,3]

这会失败,因为 Haskell 无法正确推断类型。

有没有办法强制正确解决这个问题?(不直接指定应该强制执行什么强制)或者也许还有其他干净的解决方案? (所以答案主要表明强制)

最佳答案

您可能正在寻找的 lens 解决方案位于 Control.Lens.Wrapped 中:

{-# LANGUAGE DeriveGeneric, StandaloneDeriving #-}

import Control.Lens
import Control.Lens.Wrapped
import GHC.Generics
import Data.Foldable (toList)

newtype Foo = Foo [Int] deriving (Generic)
instance Wrapped Foo

bar :: [Int]
bar = toList . view _Wrapped' $ Foo [1,2,3]

关于haskell - 强制 newtype 时无法推断出正确的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70974829/

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