![]() |
1
2
可以使用引用不可归纳的事实。
我认为引用的这个属性不太可能改变。
我想你想要的是这个版本的
如果在真正的代码中使用它,它将需要在其模块结束之前获得一个具体的类型。不能不定义弱类型变量,否则会出现以下错误:
|
![]() |
2
2
另外两个答案基本上利用了这样一个事实 价值观 是广义的,所以如果你把你的定义包装成一个非值的东西,它就不会被广义化。因此,把它赋给id函数的技巧。 但是,如果将宽松的价值限制考虑在内,则不起作用:
因此,需要确保所需的类型变量不会出现在协变位置。在第一个例子中,它出现在箭头的左边,所以很好。否则,您需要通过隐藏类型定义和注释方差来确保它的工作。
|
![]() |
3
1
我同意 Jeffrey Scofield's answer 但是,在我看来,最好避免引用,如果没有引用,您可以实现相同的行为:
之后,如果您需要带有其他签名的函数,例如
|
![]() |
Tosh · ocaml获取语法错误[已关闭] 6 年前 |
![]() |
Beta Ziliani · OCaml-与类型别名混淆(警告40) 6 年前 |
![]() |
Jheel rathod · 带有构造函数的ocaml递归类型记录 6 年前 |
![]() |
HegoDamask · (OCaml:非穷举模式匹配) 6 年前 |
![]() |
Flux · 如何以静默方式加载顶级模块 6 年前 |
![]() |
Flux · 如何编写显示HTML或重定向到其他页面的服务 6 年前 |
![]() |
Daiwen · ocaml中GADT的异构列表[重复] 6 年前 |
![]() |
nejifnjalz · OCaml语法错误-有趣的模式匹配 6 年前 |
![]() |
M. Walker · 无法键入多态[%bs.raw函数 6 年前 |