Я только начал изучать Ракет, и мне нужно создать процедуру, которая объединяет два списка случайным образом.
Это мой код:
#lang racket
(define merge-randomly
(lambda (lst1 lst2)
(cond ((and (null? lst1) (null? lst2)) null)
((null? lst1) lst2)
((null? lst2) lst1)
(else
(cond ((> (random) 0.5) (cons (cons (car lst1) (car lst2)) (merge-randomly (cdr lst1) (cdr lst2))))
(else (cons (cons (car lst2) (car lst1)) (merge-randomly (cdr lst1) (cdr lst2))))
)
)
)
)
)
Мне нужно использовать со списком, как эти два:
(define l1 '((1 2 3) (7 8 9)))
(define l2 '((4 5 6)))
Мне нужно создать новый список, подобный этому:
'((4 5 6) (1 2 3) (7 8 9))
Но я получаю этот список:
'(((4 5 6) 1 2 3) (7 8 9))
Я делаю что-то не так, возможно, здесь, (cons (cons (car lst1) (car lst2))
, или здесь, (cons (cons (car lst2) (car lst1))
, по инструкции else в первом cond
.
Как я могу получить список, который я хочу получить?