схема - функция "если" - PullRequest
       2

схема - функция "если"

1 голос
/ 20 апреля 2011

В следующем коде

(if (exp1)
    (Do1)
    (Do2))

(Do1) происходит, когда exp1 имеет значение true. Моя проблема в том, что я хочу сделать две вещи, если условие выполняется. смысл - я хочу добавить ссылку в список, а также снова вызвать функцию.

so Do1 in my program is:
           ((cons (car hello) list1)
            (Myfunction (cdr data) list1))

и это дает мне следующую проблему:

procedure application: expected procedure, given: ((439043 Mylist)); arguments were: ()

Как я могу это сделать?

Спасибо.

Ответы [ 2 ]

5 голосов
/ 20 апреля 2011

Просто используйте begin - например:

(begin
       (cons (car hello) list1)
       (Myfunction (cdr data) list1))
3 голосов
/ 20 апреля 2011

Вы можете использовать (begin), чтобы объединить несколько операторов в одну комбинацию. Однако я не думаю, что вы здесь этого хотите. Каков эффект (cons (car hello) list1)?Ничего такого.(cons) возвращает список, он не изменяет ни одного из своих аргументов.

Так что, на самом деле, я думаю, что вы хотите, чтобы do1 было (Myfunction (cdr data) (cons (car hello) list1))

Это всего лишь одно утверждение, которое может быть следствием вашего (if) без использования (begin).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...