gpt4 book ai didi

f# - F# 中的显式类型递归

转载 作者:行者123 更新时间:2023-12-03 10:06:22 25 4
gpt4 key购买 nike

灵感来自 this question :

在 F# 中是否可以进行显式类型递归?

type 'a Mu = In of 'a Mu 'a

let unIn (In x) = x

不幸的是,这段代码给出了“类型参数不能用作类型构造函数。

备注:此结构用于论文 Functional Programming with Overloading and Higher-Order Polymorphism , 例如。

用法示例(取自 here ):
type ('a, 'b) ListX =
| Nil
| Cons of 'a * 'b

type 'a List = ListX Mu

最佳答案

不,这是不可能的。具体来说,F# 中的泛型与 CLR 具有相同的限制,即 或 <'a> 必须具有类型“*”。同样的限制意味着您不能直接在 F# 中创作“类型类”,因为例如“Monad m”将采用更高级的参数“m”(例如“* -> *”,其中例如“list”和“option”可以是实例,它们每个本身都是泛型类型构造函数),但这是不允许的.

关于f# - F# 中的显式类型递归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1253374/

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