0

如果您为我解释这个问题,我将不胜感激。我一直在思考它很长一段时间,但无法弄清楚。我是一名自学者,这是来自 MIT's icampustutor 网站的练习。

指出以下每个表达式的类型。使用符号“->”表示“映射到”,例如,过程 square 的类型为“number->number”。使用以下术语来描述数据的原始类型:数字、布尔值、字符串。

1-(> 3 4) 
2-((lambda (x) (* x 2)) 4)
3-(lambda (a b) (+ a (if b 1 0)))

谢谢你的帮助

4

1 回答 1

1

得到帮助:

Welcome to DrRacket, version ...
> (> 3 4)
#f
> ((lambda (x) (* x 2)) 4)
8
> (lambda (a b) (+ a (if b 1 0)))
#<procedure>

第一个表达式的类型是布尔值,第二个表达式的类型是数字,最后一个表达式的类型是过程。

要查看程序的类型,请问您自己 a 和 b 的类型必须是什么。

<a 的类型> <b 的类型> -> <(+ ...) 的类型>

因为 + 总是返回一个数字,所以返回类型必须是一个数字。

<a 的类型> <b 的类型> -> 数字

现在填写a和b的类型。

于 2012-10-17T19:35:08.857 回答