fun和function关键字有什么区别?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了fun和function关键字有什么区别?相关的知识,希望对你有一定的参考价值。

有时我看到类似的代码

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

另一答案

我的思考方式

function patterns

是]的缩写>

(fun x -> match x with patterns)

例如,“模式”在哪里

| Some(x) -> yadda | None -> blah

(和

fun args -> expr

是您定义lambda的方式。]

另一答案

Russ Cam的回答正确。

另一答案
fun x1 ... xn -> e

以上是关于fun和function关键字有什么区别?的主要内容,如果未能解决你的问题,请参考以下文章

Kotlin---------------函数之fun?function?

function(){}var fun=function(){}和function fun(){}的区别

TypeScript 中的 function 和 => 有啥区别? [复制]

js中的预解释

JS特殊函数(Function()构造函数、函数直接量)区别

php匿名函数和闭包