【发布时间】:2021-05-02 05:32:36
【问题描述】:
我刚开始学习 OCaml,我对 OCaml 编译器如何在参数可能是多种类型的某些情况下确定参数的输入类型感到困惑。我假设我需要在这些实例中明确说明类型?例如:
let sign x =
if x > 0 then 1
else if x < 0 then -1
else 0
let _ = print_int(sign 1.5)
抛出 “错误:此表达式的类型为 float,但表达式应为 int 类型”
但是比较运算符不也适用于浮点数吗?为什么编译器假定参数应该是一个 int 而不是说参数类型是不明确的(除非我弄错了并且类型实际上并不模糊)?
【问题讨论】:
标签: ocaml type-inference