gpt4 book ai didi

haskell - 如果类型构造函数具有多个类型参数,如何使类型构造函数成为 Functor 类型类的一部分?

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

我试图理解仿函数类型类在 Haskell 中的工作方式。如果您有一个函数 f::a -> b -> c 并且希望将其部分应用到 argB 以获得一个采用一个参数的函数,您可以只需做:

f' :: a -> c
f' x = f x argB

并使用它。当使用类似这样的东西作为 Functor-Typeclass 的一部分时,是否有可能获得这样的行为:

instance Functor (MyTypeconstructor _ argB) where
fmap <implementation of fmap>

我知道您可以部分地将类型构造函数应用于其第一个类型参数(标准柯里化(Currying)):

instance Functor (MyTypeconstructor argA) where
fmap <implementation of fmap>

但是如果可能的话,如何将其部分应用于其第二个/第三个/除一个之外的所有类型参数?

谢谢。

最佳答案

假设您有数据 F a b = ...,定义

newtype Fx a = Fx { unFx :: F a X }

将第二个参数中的F部分应用到X。现在您可以使用

instance Functor Fx where
fmap f fa = ...

F _ X 定义您的实例。

关于haskell - 如果类型构造函数具有多个类型参数,如何使类型构造函数成为 Functor 类型类的一部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43113488/

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