#scheme
#схема
Вопрос:
я новичок в scheme и на этом сайте. я пишу scode, подобный
(define function
(lambda (liste)
(do ((k 0 ( k 1))) ((> k 3))
(do ((l 0 ( l 1))) ((> l 3))
(do ((m 0 ( m 1))) ((> m 3))
(do ((n 0 ( n 1))) ((> n 3))
(if(not(equal? k l))
(if(not(equal? k m))
(if(not(equal? k n))
(if(not(equal? l m))
(if(not(equal? l n))
(if(not(equal? m n)) ((display k)(display l)(display m)(display n))
))))))))))))
(trace function)
(function '(1 2 3 4 ))
Это остановило ошибку =
0123. . procedure application: expected procedure, given: #<void>; arguments were: #<void> #<void> #<void>
Когда последний if
запуск останавливается, как я могу его продолжить?
Ответ №1:
Вам нужно заменить
((display k)(display l)(display m)(display n))
Автор:
(begin (display k)(display l)(display m)(display n))
Lisp обычно оценивает lisp, оценивая каждую запись списка и вызывая первую запись с результатами более поздних записей, но (display k)
не вычисляет функцию!
begin
указывает схеме просто оценить каждый из следующих терминов.
Это похоже на кодирование
(System.out.println(k))(System.out.println(l),System.out.println(m),System.out.println(n))
на Java.