2012-08-15 42 views
0

这是来自MIT 6.001 Online Tutor,它是第三个问题集的一部分。SICP类型和变量

问题:指出每个下列表达式的类型。如果您需要类型变量,请使用A,B,C等,以A开始,作为最左侧的变量。

  1. (lambda (x y) x) = A,B->A
  2. (lambda (p) (p 3))
  3. (lambda (p x) (p x)) = (A->B), A->B
  4. (lambda (x y comp) (if (comp x y) x y))

正如你可以看到我解决了1和3,但是这主要是出于运气。我仍然有理解这个概念的问题,这是阻止我解决2和4.

演讲幻灯片可以找到here(查看最后几个)。

+0

实际上,我无法理解的问题......还不都是lambda表达式?他们的数据类型首先有何不同? – Mehrdad 2012-08-15 03:37:25

+0

是的,他们都是lambda,这就是为什么你必须使用通用的A,B,C符号而不是像number-> number这样的东西。幻灯片在这里,这是处理这类问题的最后几张幻灯片。 [幻灯片链接](https://docs.google.com/viewer?url=http%3A%2F%2Ficampustutor.csail.mit.edu%2F6.001-public%2Fcourseexport%2Flessons%2FLesson6%2Flecture6.pdf) – 2012-08-15 03:43:03

回答

2
  1. A,B - >甲
  2. (数 - > A) - >甲
  3. (A - > B),A - >乙
  4. A,A,(A,A - >布尔) - >一个

(最后假定xy是相同的类型)

+0

完美,感激。 – 2012-08-15 03:55:00