a) --6ren">
gpt4 book ai didi

haskell - RankNTypes 中的 "n"是什么

转载 作者:行者123 更新时间:2023-12-04 00:52:26 25 4
gpt4 key购买 nike

我明白了forall使我们能够编写多态函数。

据此chapter ,我们一般写的正规函数都是Rank 1类型。这个函数属于 Rank 2 类型:

foo :: (forall a. a -> a) -> (Char,Bool)
foo f = (f 'c', f True)

它是这样解释的:

In general, a rank-n type is a function that has at least one rank-(n-1) argument but no arguments of even higher rank.



rank 参数实际上是什么意思?

有人可以举一个类似于上面的 Rank 3 类型的示例 foo功能。

最佳答案

Rank 是根据类型的结构归纳定义的:

rank (forall a. T) = max 1 (rank T)
rank (T -> U) = max (if rank T = 0 then 0 else rank T + 1) (rank U)
rank (a) = 0

请注意它如何在箭头左侧增加一。所以:
Rank 0: Int
Rank 1: forall a. a -> Int
Rank 2: (forall a. a -> Int) -> Int
Rank 3: ((forall a. a -> Int) -> Int) -> Int

等等。

关于haskell - RankNTypes 中的 "n"是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22362196/

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