【发布时间】:2013-03-03 21:49:57
【问题描述】:
我正在尝试实现一种自定义语言,该语言允许从最后一条语句中推断出函数返回类型。但是,当找到直接或间接的递归函数调用时,类型推断系统显然会失败。
func factorial(a:int) ->
if a == 0
1
else
a * factorial(a - 1)
例如,即使参数类型未指定,F# 也会这样做:
let rec fact i =
if i = 0 then 1 else i * fact (i-1)
这个系统是如何工作的?
【问题讨论】:
标签: f# type-inference