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
fun
和function
有什么区别?
答案
其语义与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 和 => 有啥区别? [复制]