gpt4 book ai didi

haskell - 是否可以在 `flip` 中使用一元函数而不是二进制?

转载 作者:行者123 更新时间:2023-12-04 03:06:02 27 4
gpt4 key购买 nike

Prelude 的类型功能 flip是:

flip :: (a -> b -> c) -> b -> a -> c

即,它需要一个二进制函数和两个参数。
Prelude 的类型功能 id是:
id :: a -> a

但是 flip id 的类型是:
flip id :: a -> (a -> b) -> b

怎么可能申请 flipidid是一元函数, flip第一个参数需要二进制函数吗?

顺便提一句。 flip id类似于 \ x f -> f x

最佳答案

Haskell 制作 id适合 flip 的第一个参数的类型通过设置 a = b -> c .所以:

flip :: ( a       -> b -> c) -> b ->  a       -> c
flip :: ((b -> c) -> b -> c) -> b -> (b -> c) -> c
flip id :: b -> (b -> c) -> c

在哪里 id被认为是类型
id :: (b -> c) ->  b -> c

这相当于
id :: (b -> c) -> (b -> c)

id 的特化这只适用于一元函数。

编辑:我想我可以将我的第一行改写为:
Haskell 推断 id适合 flip 的第一个参数的类型如果 a = b -> c .
以防万一更清楚。

关于haskell - 是否可以在 `flip` 中使用一元函数而不是二进制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1715386/

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