我正在阅读这篇关于堆栈溢出的文章
我认为问题陈述是使用闭包创建一个字典对象。
但是我发现关闭非常难以理解。
我面临的问题是
根据我上面发布的线程的答案,我在 OCAML REPL 中输入了以下代码
let empty (_ : string) : int = 0;;
let add d k v = fun k' -> if k = k' then v else d k;;
let d = add empty "foo" 10;;
let d1 = add d "bar" 20;;
现在如果我这样做
d1 "foo"
它返回 0。
但这是错误的!我已经从 d 构建了 d1。因此必须在字典中找到“foo”和“bar”。
如果我使用非封闭方法实现了这本字典,那么搜索我的列表会非常容易,当然会找到“foo”和“bar”。
我在这里想念什么?