gpt4 book ai didi

f# - `fun` 和 `function` 关键字有什么区别?

转载 作者:行者123 更新时间:2023-12-03 07:48:32 24 4
gpt4 key购买 nike

有时我会看到类似的代码

let (alt : recognizer -> recognizer -> recognizer) =
fun a b p -> union (a p) (b p)

或者像:

let hd = function
Cons(x,xf) -> x
| Nil -> raise Empty

funfunction 之间有什么区别?

最佳答案

其语义与 F# 中的相同(可能是因为 F# 基于 OCaml):

  • function 允许使用模式匹配(即 |),但因此只能传递一个参数。

    function p_1 -> exp_1 | … | p_n -> exp_n

    相当于

    fun exp -> match exp with p_1 -> exp_1 | … | p_n -> exp_n
  • fun 不允许模式匹配,但可以传递多个参数,例如

    fun x y -> x + y

当可以使用两种形式中的任何一种时,由于其紧凑性,通常首选 fun

另请参阅OCaml documentation on Functions .

关于f# - `fun` 和 `function` 关键字有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1604270/

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