Syntax 请解释一下Ocaml语法好吗?

Syntax 请解释一下Ocaml语法好吗?,syntax,ocaml,Syntax,Ocaml,我是Ocaml新手,我正在尝试了解此函数的工作原理: let ccc c1 c2 c3 = fun (s1, s2, s3) n -> let (t1, r1) = (c1 s1 2) in if r1 = 0 then let (t2, r2) = (c2 s2 n) in ((t1, t2, s3), r2) else let (t3, r3) = (c3 s3 n) in ((t1, s2, t3), r3) ;; c1、c

我是Ocaml新手,我正在尝试了解此函数的工作原理:

let ccc c1 c2 c3 = fun (s1, s2, s3) n ->
     let (t1, r1) = (c1 s1 2) in
        if r1 = 0
        then let (t2, r2) = (c2 s2 n) in ((t1, t2, s3), r2)
        else let (t3, r3) = (c3 s3 n) in ((t1, s2, t3), r3) ;;

c1、c2、c3都是“选择器”。我知道该函数的目的是引入3个选择器,让第一个选择器选择其他两个选择器中的哪一个,但我对语法感到困惑。谁能解释一下吗?谢谢大家!

不知道哪一部分容易混淆,很难回答。下面是一些简单的例子,展示了一些更复杂的部分

# let f = fun x -> x + 1;;
val f : int -> int = <fun>
# f 3;;
- : int = 4
这定义了相同的函数f。意思完全一样,只是稍微友好一点

无论出于何种原因,您的代码都在使用这两种符号。我不确定我是否看到这样做的好理由,但它确实强调,如果您将三个函数传递给
ccc
,您将获得一个函数

其他部分非常简单(尽管可能需要一些时间来适应):

函数调用是通过将对象相邻写入而形成的:

c1 s1 2
c2 s2 n
c3 s3 n
这些只是对
c1
c2
c3
的调用

元组使用逗号(通常也使用括号)形成。因此
(t1,r1)
是调用
c1
返回的一对值

我假定您理解
如果
/
那么
/
其他
,并且
进入
。如果不是,也不难解释


实际上,我建议阅读关于OCaml的教程。这样做应该比一次只问一个问题更有效率。这里有很好的教程。

如果不知道哪部分容易混淆,很难回答。下面是一些简单的例子,展示了一些更复杂的部分

# let f = fun x -> x + 1;;
val f : int -> int = <fun>
# f 3;;
- : int = 4
这定义了相同的函数f。意思完全一样,只是稍微友好一点

无论出于何种原因,您的代码都在使用这两种符号。我不确定我是否看到这样做的好理由,但它确实强调,如果您将三个函数传递给
ccc
,您将获得一个函数

其他部分非常简单(尽管可能需要一些时间来适应):

函数调用是通过将对象相邻写入而形成的:

c1 s1 2
c2 s2 n
c3 s3 n
这些只是对
c1
c2
c3
的调用

元组使用逗号(通常也使用括号)形成。因此
(t1,r1)
是调用
c1
返回的一对值

我假定您理解
如果
/
那么
/
其他
,并且
进入
。如果不是,也不难解释


实际上,我建议阅读关于OCaml的教程。这样做应该比一次只问一个问题更有效率。上有很好的教程。

非常感谢您的回答!我仍然不清楚什么是
s1、s2、s3
。那么
n
来自哪里?最初,我们只将
c1 c3
传递给
ccc
函数,对吗?谢谢是
c2 s2 n
是对
c2
的调用,有两个参数,
s2
n
n
是内部函数(以
fun
开头的函数)的第二个参数。和
s1
s2
s3
ccc
返回的函数的第一个参数(3元组)的一部分。那么到底传递给
ccc
的是什么呢?除了
(s1,s2,s3),n
,它是否是
c1 c2 c3
?这是OCaml的一个棘手(而且非常酷)的部分。如果不想太深入,答案是ccc接受三个参数
c1
c2
,和
c3
,并返回一个函数。它返回的函数有两个参数(一个3元组和一个名为
n
的值)。谢谢:)非常感谢你的回答!我仍然不清楚什么是
s1、s2、s3
。那么
n
来自哪里?最初,我们只将
c1 c3
传递给
ccc
函数,对吗?谢谢是
c2 s2 n
是对
c2
的调用,有两个参数,
s2
n
n
是内部函数(以
fun
开头的函数)的第二个参数。和
s1
s2
s3
ccc
返回的函数的第一个参数(3元组)的一部分。那么到底传递给
ccc
的是什么呢?除了
(s1,s2,s3),n
,它是否是
c1 c2 c3
?这是OCaml的一个棘手(而且非常酷)的部分。如果不想太深入,答案是ccc接受三个参数
c1
c2
,和
c3
,并返回一个函数。它返回的函数有两个参数(一个3元组和一个名为
n
的值)。谢谢:)