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

标签 scheme lisp 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)))]))

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

唯一的问题是我需要使用 maplocal 编写程序代码。后一个我认为我完成了,但我终究无法找到一种使用 map 的方法。

最佳答案

(define (insert-first elt lst)
  (map (lambda (x)
         (cons elt x))
       lst))

然后

(insert-first 'x '((a b) (c d)))
=> '((x a b) (x c d))

关于scheme - 将元素插入列表列表中子列表的开头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19983649/

相关文章:

scheme - 模块中的鸡肉方案(使用)和(导入)不起作用

data-structures - 为什么代码作为数据?

lisp - 使用 lisp 在 cond 中输出一些东西

lisp - 如何运行为 Digitool 4.3 (2003) 编写的算法?

vim - DrRacket 中的 Vi 键绑定(bind)

list - 如何使用递归删除 Racket 列表中的第一个和最后一个元素

scheme - Scheme/Lisp 中的迭代范围函数

macos - jedit 中的方案

list - 如何在方案中制作深层过滤器

debugging - Common Lisp 或 Chicken Scheme 有 lint 吗?