Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
箭的用途是什么-&燃气轮机&引用;在OCaml中_Ocaml - Fatal编程技术网

箭的用途是什么-&燃气轮机&引用;在OCaml中

箭的用途是什么-&燃气轮机&引用;在OCaml中,ocaml,Ocaml,我最近一直在学习OCaml,到目前为止,编译器似乎使用了一个箭头来表示下一种类型。例如,int->int->一个返回整数的整数,它返回一个函数 但是,我想知道是否可以在OCaml代码中本机使用它。此外,如果有人碰巧知道它的适当名称。多谢各位 运算符通常称为类型箭头,其中T1->T2表示从类型T1到类型T2的函数。例如,+的类型是int->(int->int),因为它接受两个整数并返回另一个整数 按照->的定义方式,函数总是接受一个参数,并且只返回一个元素。具有多个参数的函数可以转换为一元函数序列

我最近一直在学习OCaml,到目前为止,编译器似乎使用了一个箭头来表示下一种类型。例如,
int->int->
一个返回整数的整数,它返回一个函数


但是,我想知道是否可以在OCaml代码中本机使用它。此外,如果有人碰巧知道它的适当名称。多谢各位

运算符通常称为类型箭头,其中
T1->T2
表示从类型
T1
到类型
T2
的函数。例如,
+
的类型是
int->(int->int)
,因为它接受两个整数并返回另一个整数

按照
->
的定义方式,函数总是接受一个参数,并且只返回一个元素。具有多个参数的函数可以转换为一元函数序列。我们可以将
1+2
解释为创建一个+1增量函数(您可以通过在OCaml命令行中计算
(+)1
来创建它)到数字2。这种技术被称为curry或Partial Evaluation

在评估术语时,让我们看看OCaml的输出:

# 1 + 2;;
- : int = 3

# (+) 1 ;;
- : int -> int = <fun>
这是将“abc”附加到给定字符串x的函数。让我们把语法拆开:
funx->term
意味着我们用参数
x
定义一个函数,这个
x
现在可以出现在
term
中。有时我们希望给出函数名,然后使用
let
构造:

# let append_abc = (fun x -> x ^ "abc") ;;
val append_abc : bytes -> bytes = <fun> 
在任何情况下,您都可以按如下方式使用新功能:

# append_abc "now comes:" ;;
- : bytes = "now comes:abc"
变量
x
替换为
“now come:”
,我们得到以下表达式:

"now comes:" ^ "abc"

它的计算结果是“now comes:abc”

您所说的“本机使用”是什么意思?当然,当您显式地写下类型签名时,您可以使用它。您想要复制粘贴的内容如下:
let f a b=a+b;;val f:int->int->int=
,其中
int->int->int
f
的类型。您可以忽略
=
部分,这意味着非正式地显示
f
的值。
# append_abc "now comes:" ;;
- : bytes = "now comes:abc"
"now comes:" ^ "abc"