在 OCAML 中乘以 int64 类型
Multipying int64 types in OCAML
我试图在 OCAML 中将两个 int 类型相乘,但我不确定我可能做错了什么
let prime = Int64.of_string("0x100000002b2") in
let temp = ref prime in
hash := Int64.mul(!temp,prime);
我收到错误
Error: This expression has type 'a * 'b
but an expression was expected of type int64
关于如何解决这个问题有什么建议吗?
更新:
我从 here
那里得到了这个方法的参考
我很好奇这是什么意思
val mul : int64 -> int64 -> int64
Multiplication.
我们怎么知道这个方法需要多少个参数?
OCaml 中的函数参数(在通常的习惯用法中)放在函数名称之后,没有括号和逗号。
# Int64.mul 8L 9L;;
- : int64 = 72L
逗号用于创建元组,但 Int64.mul
不接受元组。如上所述,它接受两个单独的参数。 (用 FP 的说法,这是一个柯里化函数。)
(通过有关 OCaml 的简短教程可能值得一试。您似乎假设它类似于传统的 C 系列语言,但它非常不同。)
更新
类型 x -> y
是接受类型 x
参数和 returns 类型 y
值的函数的类型。类型 x -> y -> z
是一个(柯里化)函数的类型,它接受两个类型为 x
和 y
的参数,并且 returns 一个类型为 z
的值。 (这是一种稍微简化的看待事物的方式,但已经足够接近入门了。)
所以你引用的函数 mul
有两个 int64
类型的参数和 returns 一个 int64
.
类型的值
(我重复我关于 OCaml 教程的建议。在深入编码之前学习 OCaml 类型系统真的很值得。)
我试图在 OCAML 中将两个 int 类型相乘,但我不确定我可能做错了什么
let prime = Int64.of_string("0x100000002b2") in
let temp = ref prime in
hash := Int64.mul(!temp,prime);
我收到错误
Error: This expression has type 'a * 'b
but an expression was expected of type int64
关于如何解决这个问题有什么建议吗?
更新:
我从 here
那里得到了这个方法的参考我很好奇这是什么意思
val mul : int64 -> int64 -> int64
Multiplication.
我们怎么知道这个方法需要多少个参数?
OCaml 中的函数参数(在通常的习惯用法中)放在函数名称之后,没有括号和逗号。
# Int64.mul 8L 9L;;
- : int64 = 72L
逗号用于创建元组,但 Int64.mul
不接受元组。如上所述,它接受两个单独的参数。 (用 FP 的说法,这是一个柯里化函数。)
(通过有关 OCaml 的简短教程可能值得一试。您似乎假设它类似于传统的 C 系列语言,但它非常不同。)
更新
类型 x -> y
是接受类型 x
参数和 returns 类型 y
值的函数的类型。类型 x -> y -> z
是一个(柯里化)函数的类型,它接受两个类型为 x
和 y
的参数,并且 returns 一个类型为 z
的值。 (这是一种稍微简化的看待事物的方式,但已经足够接近入门了。)
所以你引用的函数 mul
有两个 int64
类型的参数和 returns 一个 int64
.
(我重复我关于 OCaml 教程的建议。在深入编码之前学习 OCaml 类型系统真的很值得。)