Haskell - 新类型上的 iso

Posted

技术标签:

【中文标题】Haskell - 新类型上的 iso【英文标题】:Haskell - iso on newtype 【发布时间】:2020-05-23 09:17:03 【问题描述】:

如果我有newtype

newtype Foo = Foo Int

有没有自动获取Iso' Foo Int的方法?

我看到我可以使用makeLenses ''Foo,但我不知道生成的iso的名称是什么。

【问题讨论】:

【参考方案1】:

coerced :: (Coercible s a, Coercible t b) => Iso s t a b

【讨论】:

【参考方案2】:

如果您将访问器命名为:newtype Foo = Foo _unFoo :: Int,然后执行 makeLenses ''Foo,它将在名称“unFoo”下生成您想要的 Iso

请注意,访问器必须以下划线开头才能生成 Iso。

【讨论】:

以上是关于Haskell - 新类型上的 iso的主要内容,如果未能解决你的问题,请参考以下文章

为啥 Haskell 中有“数据”和“新类型”? [复制]

小数类型在Haskell中

Haskell Lesson:类型系统解读

自定义构造函数Haskell上的模式匹配

如何使用haskell类型系统来描述关系,从而防止出现更多错误

如何展平haskell中的列表列表