Я работаю над учебником по языкам программирования, и одним из упражнений было создание функции в Scheme, которая переворачивает кортежи в списке. Вот мой код:
; invert : Listof(List(Int,Int)) -> Listof(List(Int,int))
; usage: (invert '((a 1) (a 2) (1 b) (2 b))) -> ((1 a) (2 a) (b 1) (b 2))
(define invert
(lambda (lst)
(if (null? lst)
'()
(cons
(flip (car lst))
(invert (cdr lst))))))
; flip : List(Int,Int) -> List(Int,int)
; usage: (flip '(a 1)) -> (1 a)
(define flip
(lambda (tuple)
(if (not (eqv? (length (tuple)) 2))
(eopl:error 'flip
"Tuple is not length 2~%")
(cons (cdr tuple) (car tuple)))))
Я пытался протестировать свою программу в chez-схеме. Когда я использую тестовый пример в комментарии об использовании, я получаю эту ошибку: Exception: attempt to apply non-procedure (a 1)
. Я никогда раньше не работал со Scheme, поэтому буду очень признателен за любую помощь и совет. Спасибо!