谁能解释类型检查和类型推断问题之间的区别?
我已经尝试寻找差异,但是我找不到任何令人信服的资料清楚地解释了差异。如果可能,还包括示例。
答案 0 :(得分:2)
给出代码:
(define (sum lst)
(if (null? lst)
0
(+ (car lst)
(sum (cdr lst)))))
关于lst
必须是什么,或者过程返回什么类型,您能说什么吗?编译器可能会做同样的事情,这称为类型推断。
类型检查是检查代码中指定或推断出的类型。如果代码中存在不一致或无法推断出其累加,它将失败。