2012-08-15 40 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