gpt4 book ai didi

sml - 令人困惑的 SML 语句

转载 作者:行者123 更新时间:2023-12-04 20:00:41 27 4
gpt4 key购买 nike

我有这个声明:

let val x = 
let val x = 5
in(fn y =>(y,x+y))
end
in
let val y=3 and z=10
in x z
end
end;

输出是:

(10,15)

我一直在尝试追踪这个答案是如何产生的,但我感到很困惑。有没有更好的方法可以帮助我理解在哪里使用了哪些变量?谢谢!

最佳答案

首先,一些 alpha 转换:

let val fnPairOfInputAndInputPlus5 = 
let val five = 5
in ( fn input => ( input, five + input ) )
end
in let val ignored = 3 and input = 10
in fnPairOfInputAndInputPlus5 input
end
end;

此代码演示当您声明一个函数值时,声明范围内的未绑定(bind)值(例如值 five)被声明“封闭”(因此称为“闭包”) .因此,该函数总是返回一对由其输入和其输入加五组成的对。

关于sml - 令人困惑的 SML 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20603214/

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