2014-12-16 3 views
0

다음 연습 과제를 숙제로 받았습니다. 나는 아무런 성공도없이 몇 시간 동안 앉아 있었으므로 나는 당신의 도움을 사용할 수 밖에 없습니다.스킴 - 적용 적용

예 :

(define m1 (cons "fixNumber" (lambda() 42))) 

(define m3 (cons "add" (lambda (x y) (+ x y)))) 

(define myobj (create-obj (list m1 m2 m3))) 

(myobj "fixNumber" '()) ;; => 42 

(myobj "add" '(1 2)) ;; => 3 

(myobj "myMethod" '()) ;; => "Error: no such method" 

답변

1

이 수행해야합니다

(define (create-obj mlist) 
    (lambda (method parms) 
    (let ((func (assoc method mlist))) 
     (if func 
      (apply (cdr func) parms) 
      "Error: no such method")))) 
+0

감사합니다! 또한 객체와 속성을 사용하고 객체의 이전 속성을 새 객체로 대체하는 'override'라는 함수를 작성해야합니다. 오브젝트에 새로운 property의 이름을 가지는 Methods가없는 경우, 지정된 property는 새롭게 작성된 object의 새로운 property입니다. 어떻게 구성표의 개체를 편집 할 수 있습니까? 예 –

+0

: (하여 MyObj 정의 (생성-OBJ (리스트 (양론 "A"(람다 (1))) (양론 "B"(람다 (X) (+ X 2)))))) (정의 myobj (무시 "(죄수"b "(람다() 11)))) –

+0

@ user3451848 이에 대한 새로운 질문을 만드십시오; 이 링크를 항상 포함시킬 수 있습니다. – uselpa