相关疑难解决方法(0)

'a和'_l有什么区别?

'a和之间有什么区别'_l

我正在看这个错误,无法理解它:

Error: This expression has type ('a -> float polynomial) list but an expression was expected of type float polynomial list derivlist: ('_l ? float polynomial) list
Run Code Online (Sandbox Code Playgroud)

ocaml

11
推荐指数
1
解决办法
3332
查看次数

OCaml会将多参数函数转换为currying还是反过来?

当我学习OCaml essentials时,我被告知OCaml中的每个函数实际上只是一个只有一个参数的函数.多参数函数实际上是一个函数,它接受一个参数并返回一个函数,该函数接受下一个参数并返回....

这是好事,我明白了.

所以我的问题是:

情况1

如果我做

let plus x y = x + y
Run Code Online (Sandbox Code Playgroud)

在OCaml内部编译时,OCaml会将其更改为let plus = fun x -> fun y -> x + y


或者相反

案例2

如果我做

let plus = fun x -> fun y -> x + y
Run Code Online (Sandbox Code Playgroud)

OCaml会将其转换为let plus x y = x + y


哪种情况属实?在正确的情况下,OCaml编译器的优点或优化是什么?

另外,如果情况2为真,那么OCaml正在考虑做什么呢?我的意思是它实际上是相反的,对吗?

这个问题实际上与理解Core的`Fn.const`有关

ocaml

5
推荐指数
2
解决办法
182
查看次数

标签 统计

ocaml ×2