如何在Ocaml中正确使用分隔符

如何在Ocaml中正确使用分隔符,ocaml,Ocaml,考虑OCamel中的以下代码: let rodrigue="The cid" ; let diegue="cid's father" 这会在tryOcaml上产生语法错误。怎么了?当我取下这个盒子时,它似乎起了作用;请帮忙 而且, rodrigue。[4]有两个地方可以在OCaml中使用let。在模块的顶层,您可以拥有以下功能: let pattern = expression 模块本质上是命名值的集合,这种形式的let是定义名称及其值的方式 另一方面,有一个OCaml表达式如下所示: le

考虑OCamel中的以下代码:

let rodrigue="The cid" ; let diegue="cid's father"
这会在tryOcaml上产生语法错误。怎么了?当我取下这个盒子时,它似乎起了作用;请帮忙

而且,
rodrigue。[4]有两个地方可以在OCaml中使用
let
。在模块的顶层,您可以拥有以下功能:

let pattern = expression
模块本质上是命名值的集合,这种形式的
let
是定义名称及其值的方式

另一方面,有一个OCaml表达式如下所示:

let pattern = expression1 in expression2
本质上,这是定义用于
expression2
的局部变量的一种方法

您的代码与
与这两种表单都不起作用。A
用于将两个表达式组合成一个表达式。但是
let pattern=value
不是一个表达式。它的形式是模块的顶级声明

删除
时它工作的原因是指您有两个顶级声明。只要代码出现在模块的顶层,这就可以工作。在这种情况下,它将名称
rodrigue
diegue
定义为模块的命名值

其他答复:

在OCaml的最新版本中,字符串是不可变的。如果需要可变性,则需要使用
字节
类型。作为此更改的一部分,
字符串。[…]可能需要读取,也可能需要。你需要自己做一些研究,比如阅读文档和基础教程,并进行搜索以检查是否有人问过这个问题。每个帖子你也应该只问一个问题。我这里数到八。
# let mystring = "abc";;
val mystring : string = "abc"
# let mybytes = Bytes.of_string "abc";;
val mybytes : bytes = Bytes.of_string "abc"
# mystring.[0] <- 'b';;
Warning 3: deprecated: String.set
Use Bytes.set instead.
Error: This expression has type string but an expression was 
            expected of type bytes
# Bytes.set mybytes 0 'b';;
- : unit = ()
# mybytes;;
- : bytes = Bytes.of_string "bbc"
# for x = 1 to 1 do () done = ();;
- : bool = true