OCaml:表达式周围的括号是什么意思[x]?
在上面的例子中,[h1]和[x]是什么意思?如果OCaml:表达式周围的括号是什么意思[x]?,ocaml,Ocaml,在上面的例子中,[h1]和[x]是什么意思?如果e是'a类型的表达式,那么[e]有一个类型的列表,并且只对应于e:[]的替代符号 这种语法糖也适用于包含多个元素的列表,即: [a;b]是a::b::[]的替代符号 另外,请注意,此符号也可在图案加工中使用,例如,返回列表最后一个元素的函数last可以这样编写: (* Example #1: *) let rec product l1 l2 = match l1, l2 with | [], _ | _, [] -> []
e
是'a
类型的表达式,那么[e]
有一个类型的列表
,并且只对应于e:[]
的替代符号
这种语法糖也适用于包含多个元素的列表,即:[a;b]
是a::b::[]
的替代符号
另外,请注意,此符号也可在图案加工中使用,例如,返回列表最后一个元素的函数last
可以这样编写:
(* Example #1: *)
let rec product l1 l2 =
match l1, l2 with
| [], _ | _, [] -> []
| h1::t1, h2::t2 -> (h1,h2)::(product [h1] t2)@(product t1 l2);;
(* Example #2: *)
let rec rev l =
match l with [] -> []
| x::xs -> rev xs @ [x];;
如果
e
是类型'a
的表达式,则[e]
具有类型'a列表
,并且仅对应于e:[]
的替代符号
这种语法糖也适用于包含多个元素的列表,即:[a;b]
是a::b::[]
的替代符号
另外,请注意,此符号也可在图案加工中使用,例如,返回列表最后一个元素的函数last
可以这样编写:
(* Example #1: *)
let rec product l1 l2 =
match l1, l2 with
| [], _ | _, [] -> []
| h1::t1, h2::t2 -> (h1,h2)::(product [h1] t2)@(product t1 l2);;
(* Example #2: *)
let rec rev l =
match l with [] -> []
| x::xs -> rev xs @ [x];;