【发布时间】:2011-02-10 07:15:57
【问题描述】:
ML如何在以下函数定义中进行类型推断:
let add a b = a + b
是否像 C++ 模板一样,在模板实例化之前不执行类型检查,之后如果类型支持必要的操作,则函数可以工作,否则会引发编译错误?
即比如下面的函数模板
template <typename NumType>
NumType add(NumType a, NumType b) {
return a + b;
}
适用于
add<int>(23, 11);
但不适用于
add<ostream>(cout, fout);
我的猜测是正确的还是 ML 类型推断的工作方式不同?
PS:对不起我的英语不好;这不是我的母语。
【问题讨论】:
-
你问的是类型推断还是类型检查?
-
推理。在我的示例中,从 ML 函数定义中推断出哪些类型?
标签: c++ functional-programming templates type-inference ml