我的一个练习考试的一个问题是围绕消息传递和数据定向程序。它要求使用表初始化这些安装包的过程:麻省理工学院计划通用运营商表包
(define (attach-tag tag data) (cons tag data))
(define (get-tag data) (car data))
(define (get-contents data) (cdr data))
(define (install-metric-package)
; internal procedures
(define (get-kilometers d) d)
(define (get-miles d) (/ d 1.6))
(define (make-from-kilometers d) d)
(define (make-from-miles d) (* d 1.6))
; install metric packages
(2d-put! 'get-kilometers 'metric get-kilometers)
(2d-put! 'get-miles 'metric get-miles)
(2d-put! 'make-from-kilometers 'metric
(lambda(d) (attach-tag 'metric (make-from-kilometers d))))
(2d-put! 'make-from-miles 'metric
(lambda(d) (attach-tag 'metric (make-from-miles d))))
'done)
(define (install-english-package)
; internal procedures
(define (get-kilometers d) (* d 1.6))
(define (get-miles d) d)
(define (make-from-kilometers d) (/ d 1.6))
(define (make-from-miles d) d)
; install english packages
(2d-put! 'get-kilometers 'english get-kilometers)
(2d-put! 'get-miles 'english get-miles)
(2d-put! 'make-from-kilometers 'english
(lambda(d) (attach-tag 'english (make-from-kilometers d))))
(2d-put! 'make-from-miles 'english
(lambda(d) (attach-tag 'english (make-from-miles d))))
'done)
并允许通用运算符工作。通常情况下,我会有一些代码来显示我的努力,但大约一天,我已经完全沉迷于如何开始这个。所有我给开始是这样的:
(define (generic-op operator object)
我不记得有这个实验室,但它基本上就是把已经存在的通用程序和创建简单的程序,以获得已经包含在它的值。如果有人能够阐明如何解决这个问题,我将非常感激。再次,我很抱歉,我没有任何表现,但我真的不知道该怎么做。
CSCI 1901在明尼苏达大学吗? – oobivat
他们不提供这些练习考试的任何解决方案,所以我们在这方面几乎留给了我们自己的设备。虽然一些问题很容易找到解释器,但其他人很难钉住头(至少对我而言)。 – CodeRook
我只问,因为上学期我参加了这门课程,碰巧真的很享受计划。我的回答足以让你继续下去吗?我忽略了一个明确的答案,但是如果您将顶部的一些给定过程“插入”到我的表单中,您将得到正确的答案。 – oobivat