List.map的类型为
- : ('a -> 'b) -> 'a list -> 'b list = <fun>
我很容易理解以下代码:
List.map (fun x -> x+1) [1;2;3;4];;
,它为列表的每个元素添加1,以便返回以下列表:
- : int list = [2;3;4;5]
现在这是一个练习,我要求它指出这个类型:
List.map (fun p -> p 7) [ (fun n m -> n + m) ];;
我完全不了解诚实的含义。 p 7是什么意思? 为什么列表中有一个函数?
类型是
- : (int -> int) list = [<fun>]
但我不明白为什么。 括号之间的乐趣是什么意思?
谢谢。
答案 0 :(得分:2)
p 7
是什么意思?
这意味着p
函数7
参数fun
....你可能会花一些时间在application上阅读wikipage(至少要了解功能抽象)
另请阅读λ-calculus。
为什么列表中有功能?
在Ocaml中,函数是值,因此您可以拥有函数列表。如果它不是函数列表,则会出现输入错误。如果你想得更多,你就可以理解允许哪种功能。
<fun>
在括号之间是什么意思?
toplevel无法打印功能值(实现为currying)。它将它们显示为fun x -> x+1;;
。有关更简单的示例,请将fun y -> y;;
(然后再尝试ALTER TABLE tb_economic_parameter
ALTER COLUMN c_economic_parameter_value TYPE numeric
USING c_economic_parameter_value::numeric ;
)传递到closures。
(剩下的练习留给读者)