将元素插入列表列表中的子列表的开头

Nik*_*nov 0 lisp scheme racket

我的任务有点麻烦.我必须创建一个请求列表和元素列表的过程,然后继续将元素添加到每个子列表中的第一个位置.我设法做到了,它看起来像这样:

(define (add-element lst elem)
   (foldr cons lst (list elem)))

(define (insert-first lst1 x)
  (cond
   [(empty? lst1) empty]
   [else (local [(define insert (add-element(first lst1) x))]
        (cons insert (insert-first (rest lst1) x)))]))
Run Code Online (Sandbox Code Playgroud)

所以,如果你要输入,(insert-first '((a b) (c d))你最终会得到(list (list 'x 'a 'b) (list 'x 'c 'd))

唯一的问题是我需要使用map和编写程序local.后者我认为我已经完成了但我不能为我的生活找到一种方法来使用map.

use*_*lpa 5

(define (insert-first elt lst)
  (map (lambda (x)
         (cons elt x))
       lst))
Run Code Online (Sandbox Code Playgroud)

然后

(insert-first 'x '((a b) (c d)))
=> '((x a b) (x c d))
Run Code Online (Sandbox Code Playgroud)