gpt4 book ai didi

f# - 递归 let 绑定(bind)的非轻型语法是什么?

转载 作者:行者123 更新时间:2023-11-30 23:49:06 26 4
gpt4 key购买 nike

我查了相关spec section并猜测了几次尝试,但无法弄清楚。例如,我如何使用非轻量语法(在一行中)表达以下轻量语法递归 let 绑定(bind)?

let rec f x = g x 
and g x = f x

(let rec f x = g x and g x = f x 给我“绑定(bind)中出现意外的关键字‘and’。在这一点或其他标记处或之前预期不完整的结构化构造。”除非我打开灯语法关闭,正如@Ramon Snir 所建议的那样,但肯定有一种方法可以在轻语法打开时执行此操作?)

最佳答案

与@kvb 建议的相同的声明也应该在顶层工作:

#light "off"

module Foo = begin
let rec f a = g (a + 1)
and g a = f (a + 1)
end

也许编译器被你的声明后面的一些其他代码弄糊涂了?

编辑:哦,问题略有不同 - 你想在 #light 模式下在 单行 上编写递归声明.我找不到任何方法来做到这一点,我认为这在 #light 模式下可能是不可能的。在实践中,你总是可以编写多行声明(即使在一些奇怪的上下文中):

if true && (let rec f x = g x
and g x = f x in f) 0 then
printfn "funny"

关于f# - 递归 let 绑定(bind)的非轻型语法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6501378/

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