Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.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,用于: 让配对int(x:int)(y:int)=x,y;; val make_pair_int:int->int->int*int= 如何读取输入信息输出?在其他语言中,我发现能够从语法或打印输出中构造出令人信服的英语句子对于理解正在发生的事情至关重要。上面OCaml语句的句子是什么 有没有人能把打印出来的内容用图表表示出来,以便把打字信息重新关联成英文?比如: val make_pair_int : int -> int -> int * int = <fun>

用于:

让配对int(x:int)(y:int)=x,y;; val make_pair_int:int->int->int*int= 如何读取输入信息输出?在其他语言中,我发现能够从语法或打印输出中构造出令人信服的英语句子对于理解正在发生的事情至关重要。上面OCaml语句的句子是什么

有没有人能把打印出来的内容用图表表示出来,以便把打字信息重新关联成英文?比如:

val make_pair_int : int -> int -> int * int = <fun>
      |              |   |  |   |  \_____/  \__/
      |              |   |  |   |     |       ` is a function
      |              |   |  |   |     ` a tuple of integers
      |              |   |  |   `
      |              |   |  `
      |              |   `
      |              `
      ` symbol make_pair_int is bound to
val make\u pair\u int:int->int->int*int=
|              |   |  |   |  \_____/  \__/
|| | | | | `是一个函数
|| | | | `整数的元组
|              |   |  |   `
|              |   |  `
|              |   `
|              `
`符号make_pair_int已绑定到

我想这是非常主观的,取决于函数的使用。通常我试着把它理解为函数的未编译版本,然后在脑海中阅读。然而,如果我真的使用这个函数来构造闭包,我可能会把它理解为不同的东西

因此,在这种情况下,根据我使用此函数的上下文,我将其理解为:

“从int和int到整数元组的函数”

在其他情况下,可能会变成:

“函数从int到函数从int到整数元组”

我想,在同一函数的两种表示形式之间切换的功能为以后使用该函数提供了很大的灵活性。

这正是函数的版本。此类函数的读数取决于您对函数的熟悉程度

主旨是考虑两个参数是完全不同的概念,从一对参数的意义上来说,这两个参数是对特定类型构造函数的引用(隐藏在<代码> */代码>和<代码>,符号中的OcAML代码段)。p> 如果您不想引用一个配对(或者元组,如果您想要一个任意的参数数组)构造,您会怎么做?这个问题的惯用答案是利用高阶函数:

val make_pair_int : int -> int -> int * int = <fun>
      |              |   |  |   |  \_____/  \__/
      |              |   |  |   |     |       ` and all that is a higher-order function
      |              |   |  |   |     ` a pair of integers
      |              |   |  |   `and returns
      |              |   |  `a function that takes an integer as an argument
      |              |   `and returns
      |              ` something that takes an integer as an argument 
      ` symbol make_pair_int is bound to
val make\u pair\u int:int->int->int*int=
|              |   |  |   |  \_____/  \__/
|| | | | | `所有这些都是高阶函数
|| | | | `一对整数
|| | | `然后返回
|| | `以整数为参数的函数
|| `然后返回
|”“以整数为参数的东西
`符号make_pair_int已绑定到

用这个隐含的约定,这个CurryDebug解释(和伴随它的符号)是一个函数的思想的承认的方式,带着几个参数,你可以只计算类型中箭头的数量,并把最后一个箭头当作函数的“参数”。p> 啊,“咖喱”是一个飞跃。我原以为

->
表示返回了某些内容,但我没有意识到它正在执行此转换。谢谢你的图表。
val make_pair_int : int -> int -> int * int = <fun>
      |              |   |  |   |  \_____/  \__/
      |              |   |  |   |     |       ` and all that is a higher-order function
      |              |   |  |   |     ` a pair of integers
      |              |   |  |   `and returns
      |              |   |  `a function that takes an integer as an argument
      |              |   `and returns
      |              ` something that takes an integer as an argument 
      ` symbol make_pair_int is bound to