haskell - `flip id` 是如何工作的?

标签 haskell

这个问题在这里已经有了答案:





Why does Haskell's "flip id" has this type?

(1 个回答)


6年前关闭。




为什么是 flip id接受为有效表达?它不应该在 a 的类型检查中失败吗?反对 b -> c ?

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

最佳答案

重点是

id :: a -> a

适用于任何类型 a ,包括函数类型。即我们可以选择a = (b -> c)并获得
id :: (b -> c) -> (b -> c)

其中,因为 ->右侧的关联,通常写为
id :: (b -> c) -> b -> c

上面的可以解释为一个带有两个参数的函数:第一个类型 b -> c和第二个类型 b .所以我们可以flip它。

关于haskell - `flip id` 是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29489905/

相关文章:

haskell - 如何在 Haskell 中解析整数矩阵?

haskell - 无法将预期类型 (Int -> Int -> Int) 与实际类型 `(t0, t1, t2)' 匹配

haskell - 创建一个类型,它是其他类型的子集

haskell - 如何在 Haskell 中枚举递归数据类型?

haskell - 复导出合格吗?

Haskell 定义的类型

haskell - 将 Either a (IO b) 转换为 IO (Ei a b)

Haskell 脚本空间不足

list - Haskell:在列表和元组之间

haskell - 了解 GHC 错误 "Qualified name in binding position"