关于List.map用法

时间:2018-01-31 17:14:14

标签: list ocaml

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>]

但我不明白为什么。 括号之间的乐趣是什么意思?

谢谢。

1 个答案:

答案 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

(剩下的练习留给读者)