2013-04-30 2 views
0

я пытаюсь позвонить и принять значение процедуры с кодом нижеПовторные процедуры значения в схеме

(define main (x y) ((< x y) (p1 x) (p2 y))) 
(p1 x) returns 'first, (p2 y) returns 'second 

однако в основной нет ничего, чтобы вернуться.

как я могу это решить? Я пытаюсь использовать let и лямбда, но я потерпел неудачу.

Большое спасибо.

ответ

2

Вы определили бы p1 и p2 как:

(define (p1 thing) 'first) 
(define (p2 thing) 'second) 

, а затем main становится:

(define (main x y) 
    (if (< x y) 
     (p1 x) 
     (p2 y))) 

, если вам действительно нужно использовать let и lambda тогда это будет работать:

(define (main x y) 
    (let ((p1 (lambda (thing) 'first)) 
     (p2 (lambda (thing) 'second))) 
    (if (< x y) 
     (p1 x) 
     (p2 y)))) 
+0

Спасибо, что у меня была проблема с определением прямо сейчас. – Palindrom

1

Возможно, вы имели в виду это?

(define (main x y) (if (< x y) (p1 x) (p2 y))) 
+0

Фактически я использую, если ничего не меняется, он все равно не может вернуть значения. Я также использовал cond для каждого условия .. но я не могу получить «f» и «t». Кроме того, они не являются #f и #t. они являются элементами. – Palindrom

+0

Я изменил выходы процедур для лучшего понимания – Palindrom

+0

что такое 'p1' и' p2'? отправьте код. Что такое 'x' и' y'? отправьте пример _exactly_, какое выходное значение ожидается, учитывая пример ввода. –

Смежные вопросы