gpt4 book ai didi

haskell - 是否有针对部分类型同义词实例的 Haskell (GHC) 扩展?

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

使用扩展TypeSynonymInstances可以编写这样的实例:

instances MyClass String where ...

使用newtype可以声明这样的实例:

newtype Kleisli m a b = Kleisli (a -> m b)

instance MyClass (Kleisli m) where ...

我现在不可能执行以下操作:

type Kleisli m a b = a -> m b

instance MyClass (Kleisli m) where ...

现在有一个扩展可以让我这样做吗?如果不是,什么问题禁止这样的扩展?

最佳答案

Haskell 不允许使用部分应用类型同义词,因为决定类型和部分应用类型同义词之间的相等性相当于决定两个函数是否相等。一般来说,这是无法确定的。

回想一下,类型同义词是类型级别的函数(它们的参数恰好是参数化的)。

这就是为什么通常鼓励在类型同义词的定义中尽可能依赖部分应用程序。尽管这在您的情况下似乎不可能。

关于haskell - 是否有针对部分类型同义词实例的 Haskell (GHC) 扩展?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22665556/

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