Lisp 的 let* 的 Ocaml 等价物?

Posted

技术标签:

【中文标题】Lisp 的 let* 的 Ocaml 等价物?【英文标题】:Ocaml equivalent for Lisp's let*? 【发布时间】:2011-11-29 12:11:47 【问题描述】:

如果可能的话,我宁愿使用let ... and ... and ... in 而不是嵌套的let,但是普通的 let 语法不允许这样用于相互依赖的表达式。

不允许:

let encrypt password =
    let seed = int 16
    and keys = xlat seed (length password)
    and plaintext = map code (explode password) in
        map2 logxor plaintext keys

OCaml 是否与 Lisp 的 let* 等效,允许这样做?

【问题讨论】:

On ocaml indenting style for this kind of nested let-in的可能重复 【参考方案1】:

嵌套的let 不需要嵌套缩进,这样就足够了。

【讨论】:

其实let*通常实现为一个宏,扩展成嵌套的lets。 哈。必须为宏放弃它。

以上是关于Lisp 的 let* 的 Ocaml 等价物?的主要内容,如果未能解决你的问题,请参考以下文章

在 OCaml 中分隔多个“let”声明,后跟一个“let in”表达式

用 let 重建 OCaml 模式

在 OCaml 中的 let 命令(即 let _ = ... in)中使用下划线通配符有啥副作用吗?

Ocaml中“type ...and”和“let ...and”之间的范围不一致

OCaml - 如何在匹配表达式中放置一个 let 绑定?

如何可选地提供 OCaml (let*) 运算符以与新旧编译器一起使用?