类型检查与类型推断

him*_*him 4 functional-programming type-inference lambda-calculus typechecking typed-lambda-calculus

谁能解释类型检查类型推断问题之间的区别?

我试图寻找差异,但我找不到任何令人信服的资料来清楚地解释差异。如果可能的话还包括示例。

Syl*_*ter 5

给出代码:

(define (sum lst)
  (if (null? lst)
      0
      (+ (car lst) 
         (sum (cdr lst)))))
Run Code Online (Sandbox Code Playgroud)

lst关于必须是什么或过程返回类型,您有什么可以说的吗?编译器可能会做同样的事情,这被称为类型推断。

类型检查是检查代码中指定或推断的类型。如果代码中存在不一致,或者无法通过推断得出累加结果不清楚,那么它将失败。