z_a*_*xis 27 polymorphism ocaml addition
我是OCaml新手.我喜欢OCaml的速度,但我并不完全了解它的设计.例如,我希望+运算符是多态的,以支持整数,浮点等.
我们为什么需要+.?
Jon*_*rop 25
我希望'+'运算符是多态的,以支持整数,浮点数等.为什么我们需要'+.'?
好问题.这里涉及许多微妙的权衡.
不重载运算符(如在OCaml中)的优点是:
缺点是:
+for int,+.for float,+/for any-precision-rational,+|vector,+||for matrix,of matrix and complex number,low-dimensional vector and matrices,homogeneous coordinate.一些替代方案是:
2.3/0和的错误1/12*3.7.Kei*_*win 11
Ocaml不支持比较运算符以外的多态运算符(数字或其他).在+与+.事去掉了很多微妙的错误的,可以在转换整数的大小不同突然出现,花车,和其他数字类型来回.这也意味着编译器总是确切地知道正在使用哪种数字类型,因此更容易识别程序员何时对一个始终具有整数值的数字做出错误的假设.要求在数字类型之间进行显式转换可能看起来很尴尬,但从长远来看,它可能会为您节省更多时间来追踪奇怪的错误,而不是花费额外的时间来明确表示.
除了.数字运算符的版本之外,我认为Ocaml语法并不特别奇怪.它与之前的ML语言非常一致,并且为其增加的功能提供了适当且合理的语法扩展.如果它最初看起来很奇怪,那可能只是表明你到目前为止只是用语法编程紧密相关的语言进行编程.当你学习新语言时,你会发现有许多不同的方法可以让语言语法具有不同的好处和不利之处,但是很多方法只是某人所决定的任意约定.
| 归档时间: |
|
| 查看次数: |
3366 次 |
| 最近记录: |