gpt4 book ai didi

haskell - 是否有默认的多态单元类型haskell

转载 作者:行者123 更新时间:2023-12-03 15:10:06 25 4
gpt4 key购买 nike

在 Haskell 中有一个默认的单位类型,即 ()。我正在寻找一个多态的(最好在 Hackage 中),例如:

data PUT a = PUT

或者可能是多态零类型:
data PZT a = PZT (PZT a)

所以是的,我可以自己写一个,通过上述任何一种说法。我正在寻找一个在hackage。

我需要它的原因是因为我有一个具有多个类型参数的类,其中包含一个不使用其中之一的函数:
class MyClass a b where
someFunction :: a
-- and some other functions

当使用这个函数“someFunction”时,GHC 找不到正确的实例,所以我改变了我的定义:
class MyClass a b where
someFunction :: (PUT b) -> a

现在当我调用 someFunction 时,我可以使用 (PUT::SomeType) 作为它的第一个参数,并且 Haskell 可以推导出我所指的实例。每次我使用这个技巧时,我都会编写一个新的多态单元类型(它只是一行代码),这在组合不同的库时给了我一些额外的工作(因为最好在任何地方使用相同的构造函数)。
我确定其他人遇到了这个问题,所以也许他们中的一个人在hackage(ghc的数据包管理器)中提出了解决方案?我想导入它。我是在寻找错误的东西,还是在 hackage 中不存在?

最佳答案

我认为您要查找的内容通常称为 Proxy .从 base-4.7 开始,它在 Data.Proxy 中可用

类似的东西,它在基础中可用,因为比 Proxy 更长。 , 是 Const ,例如您可以使用 Const () .

关于haskell - 是否有默认的多态单元类型haskell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26097797/

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