2016-11-14 1 views
0

Как передать два списка в качестве аргументов при определении функции? Я имею в виду два списка произвольные, и «реальный список» будет проходить в качестве параметров во время выполнения функции ..Как мы передаем два списка в качестве аргументов функции в Схеме?

Является ли это что-то вроде

(define checklist 
    (lambda (list1 list2) 
    (or (null? list1) (null? list2)) 
    #and my other work here)) 

или

(define (checklist list1 list2) 
    (or (null? list1) (null? list2)) 
    #and my other work here) 

или

(define checklist 
    (lambda list1 list2) 
    (or (null? list1) (null? list2)) 
    #and my other work here) 

? Я сожалею, если его слишком basic.Ive пробовал, но, когда я прошел 2 списка для запуска функции, я получил ошибку «неправильное количество аргументов». Спасибо!

ответ

0

Третий аргумент останова list1 и возвращает значение глобальной переменной list2 или ошибку, если она не существует. Но предоставление 3 + выражений для define не является законным, поэтому третий не будет принят.

С (define (checklist l1 l2) ...) - просто причудливый способ написания (define checklist (lambda (1 2) ...)) два первых примера - то же самое.

Обратите внимание, что (or x y z) будет оценивать первое истинное значение, и если у вас есть выражения после того, как он станет мертвым кодом. Если вы ожидали что-то сделать, если или нет, то (or x y z) были правдой или нет, вам нужно использовать условное обозначение (if (or x y z) something-expression something-else-expression)

+0

Большое спасибо! Так что его штраф, чтобы использовать первый или второй, и мне просто нужно изменить мою или часть, не так ли? –

+0

Извините, я забыл упомянуть вас @Sylwester? –

+0

@ lilyniall Да. Вы должны использовать результат для чего-то. например, в выражении 'if' или как хвост, поэтому это возвращаемое значение. Если вам нужно использовать его более одного раза, вы можете привязать его к имени с 'let'. – Sylwester

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