gpt4 book ai didi

haskell - Flip 数据类型的仿函数类型变量

转载 作者:行者123 更新时间:2023-12-04 22:03:18 26 4
gpt4 key购买 nike

我有以下类型定义:

newtype Flip f a b = 
Flip (f b a) deriving (Eq, Show)
Flip 数据构造函数是否有一个或三个参数?

考虑以下实现:
data K a b = K a

newtype Flip f a b =
Flip (f b a) deriving (Eq, Show)

instance Functor (Flip K a) where
fmap f (Flip (K b)) = Flip (K (f b))
(Flip K a) 的类型是什么?

最佳答案

Flip 数据构造函数有 一个参数 。该参数的类型为 f b a

因此,这意味着 f 本身是一个类型为 f :: * -> * -> * 的高阶类型参数。更严格的 newtype 语句是:

newtype Flip (f :: * -> * -> *) a b = Flip (f b a)

例如,您可以实例化 Flip Either Int Bool ,因为 Either 是一种需要两个额外类型参数的类型,然后构造一个 Flip (Right 1) :: Flip Either Int Bool

What is the type of (Flip K a)?


Flip K a 不是完全应用的类型。在伪代码中,它的类型为 b -> Flip K a b 。一旦 b 被解析( Functor 适用于高阶类型),我们知道 Flip 的唯一参数将有一个 K b 构造函数。因此,例如 Flip (K 1)Flip K a Int 类型。

关于haskell - Flip 数据类型的仿函数类型变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44908073/

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