Function 在OCaml中,函数一个接一个地混淆书籍';s示例(初学者)

Function 在OCaml中,函数一个接一个地混淆书籍';s示例(初学者),function,ocaml,Function,Ocaml,#让rec map1 f l=将l与 []->[] |h::t->f h::map1 f t;; valmap1:('a->'b)->'a list->'b list= Ocaml语法的优先规则意味着上面的match子句被解析为 |h::t -> (f h)::(map1 f t) 当然,fh是函数f对参数h 换句话说,当列表l匹配模式h::t(因此l是头部h和尾部t的合适列表)时,头部f h和尾部map1 f t的一对就形成了 典型的用法是首先使用从整数到字符串的函数: let nex

#让rec map1 f l=将l与
[]->[]
|h::t->f h::map1 f t;;
valmap1:('a->'b)->'a list->'b list=
Ocaml语法的优先规则意味着上面的match子句被解析为

|h::t -> (f h)::(map1 f t)
当然,
fh
是函数
f
对参数
h

换句话说,当列表
l
匹配模式
h::t
(因此
l
是头部
h
和尾部
t
的合适列表)时,头部
f h
和尾部
map1 f t
的一对就形成了

典型的用法是首先使用从整数到字符串的函数:

let nextasstr n = Printf.sprintf "(%d)" (n+1);;
因此
nextasstr 2
是不带引号的字符串
“(3)”。当然,
[2;3]
是一个整数列表,即
整数列表

然后将
map1 nextasstr[2;3]
计算为
[“(3)”;“(4)”]
,一个字符串列表,即
字符串列表
;您可以看到,第二个参数的结果类型不同。(这应该可以深入了解
'a list
'b list
的区别,以及键入
map1:('a->'b)->'a list->'b list
)时,第一个参数是
'a->'b
类型的任意函数

你应该看到,跟随,阅读它。这可能需要数周的工作

Ocaml语法的优先规则意味着上面的match子句被解析为

|h::t -> (f h)::(map1 f t)
当然,
fh
是函数
f
对参数
h

换句话说,当列表
l
匹配模式
h::t
(因此
l
是头部
h
和尾部
t
的合适列表)时,头部
f h
和尾部
map1 f t
的一对就形成了

典型的用法是首先使用从整数到字符串的函数:

let nextasstr n = Printf.sprintf "(%d)" (n+1);;
因此
nextasstr 2
是不带引号的字符串
“(3)”。当然,
[2;3]
是一个整数列表,即
整数列表

然后将
map1 nextasstr[2;3]
计算为
[“(3)”;“(4)”]
,一个字符串列表,即
字符串列表
;您可以看到,第二个参数的结果类型不同。(这应该可以深入了解
'a list
'b list
的区别,以及键入
map1:('a->'b)->'a list->'b list
)时,第一个参数是
'a->'b
类型的任意函数


你应该看到,跟随,阅读它。这可能需要数周的工作。

非常感谢!还有一个问题:为什么在第一个示例中有两种类型的列表?对不起,我不能在几分钟内教您所有的Ocaml。在第一个示例中,我没有看到两种类型的列表(记住,类型有非常精确的含义,尤其是对于Ocaml),一个列表是
map1
的参数,另一个是
map1
的结果@SteveVinoski为什么没有“b”列表来存储示例2中“apply”的结果?@重载:与
map1
不同,示例2中没有专门创建或操作列表。
apply
函数将
f
应用于
x
,由于
f
'a
并返回
'a
,因此
apply
也是如此。您可以将列表作为最后一个参数传递给
apply
,例如,
apply(fun x->list.map(fun v->3*v)x)5[1;2;3;4]但是关于
应用
没有什么是专门针对列表的。非常感谢!还有一个问题:为什么在第一个示例中有两种类型的列表?对不起,我不能在几分钟内教您所有的Ocaml。在第一个示例中,我没有看到两种类型的列表(记住,类型有非常精确的含义,尤其是对于Ocaml),一个列表是
map1
的参数,另一个是
map1
的结果@SteveVinoski为什么没有“b”列表来存储示例2中“apply”的结果?@重载:与
map1
不同,示例2中没有专门创建或操作列表。
apply
函数将
f
应用于
x
,由于
f
'a
并返回
'a
,因此
apply
也是如此。您可以将列表作为最后一个参数传递给
apply
,例如,
apply(fun x->list.map(fun v->3*v)x)5[1;2;3;4]但是关于
应用
并没有专门针对列表的内容。