gpt4 book ai didi

f# - 本例中的 `in` 关键字是什么意思(F#)

转载 作者:行者123 更新时间:2023-12-01 00:58:22 25 4
gpt4 key购买 nike

我一直在尝试了解 F# 的各个方面(我来自更多的 C# 背景),并且解析器让我感兴趣,所以我跳到了这篇关于 F# 解析器组合器的博客文章:

http://santialbo.com/blog/2013/03/24/introduction-to-parser-combinators

这里的样本之一是:

/// If the stream starts with c, returns Success, otherwise returns Failure
let CharParser (c: char) : Parser<char> =
let p stream =
match stream with
| x::xs when x = c -> Success(x, xs)
| _ -> Failure
in p //what does this mean?

然而,让我对这段代码感到困惑的一件事是 in p陈述。我查了 in MSDN 文档中的关键字:

http://msdn.microsoft.com/en-us/library/dd233249.aspx

我还发现了这个较早的问题:

Meaning of keyword "in" in F#

这些似乎都不是相同的用法。唯一似乎合适的是,这是一个流水线构造。

最佳答案

let x = ... in expr允许你为某个变量声明一个绑定(bind) x然后可以在 expr 中使用。

在这种情况下 p是一个接受参数 stream 的函数然后返回 SuccessFailure取决于匹配的结果,该函数由 CharParser 返回功能。

F# light syntax自动套料 let .. in绑定(bind),例如

let x = 1
let y = x + 2
y * z

是相同的
let x = 1 in
let y = x + 2 in
y * z

因此, in这里不需要,函数可以简单地写成
let CharParser (c: char) : Parser<char> =
let p stream =
match stream with
| x::xs when x = c -> Success(x, xs)
| _ -> Failure
p

关于f# - 本例中的 `in` 关键字是什么意思(F#),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15728254/

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