gpt4 book ai didi

sml - SML中作为返回值和值限制的多态函数

转载 作者:行者123 更新时间:2023-12-01 01:35:55 24 4
gpt4 key购买 nike

基本上,我想要一个函数来返回一个多态函数,像这样:

有趣的 foo () = fn x => x

所以 foo 函数接受一个类型为 unit 的值并返回一个多态恒等函数
编译器对此很满意,它给了我:

val foo = fn : 单位 -> 'a -> 'a

但是一旦我真正调用了 foo 函数,返回值就不是我所期望的

val it = fn : ?.X1 -> ?.X2

由于它所说的值(value)限制,不能一概而论,有什么帮助吗?提前致谢

最佳答案

出于技术原因,不允许概括(即,使多态)函数调用的结果。调用的结果必须具有单态类型。如果不是这种情况,您可以通过以下肮脏的技巧来颠覆类型系统:

  • 调用 ref []并取回 forall 'a . 'a list ref 类型的列表
  • 插入一个字符串。
  • 删除函数

  • 你就是这样:你现在正在将任意字符串的内容作为代码执行。不好。

    通过坚持 ref [] 返回的值是单态的,您确保它可以用作字符串列表或函数列表,但不能同时用作两者。所以这是我们为类型安全付出的代价的一部分。

    关于sml - SML中作为返回值和值限制的多态函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2150310/

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