scheme - 我的方案功能有问题,它试图用给定的语法创建生产值
问题描述
所以我正在尝试创建一个函数,在给定以下输入的情况下'((a (xz) (c)) (b (wy) (d)))
,我应该做这样的事情'((a (xz)) (a (c)) (b (wy)) (b (d)))
我试着写这个
(define productionValues
(lambda (input)
(let ((lhs (map (lambda (x) (car x)) input)))
(let ((rhs (map (lambda (y) (cdr y)) input)))
(map (lambda (l) (cons l (map (lambda (r) (car r)) rhs))) lhs)
)
)
))
这不起作用,让我明白了((a (xz) (c)) (b (xz) (c)))
我背后的逻辑是我有一个变量lhs存储(a b)
和rhs存储(((xz) (c)) ((wy) (d)))
,我会尝试使用另一组映射函数从两个变量之间获取,但我觉得我在在某种程度上是正确的轨道,但只是不明白我怎么能得到我想要的输出。
解决方案
我不完全确定您要在那里完成什么 - 但这产生了所需的输出:
(define (productionValues input)
; flatten the sublists
(apply append
; create the lists as per the sample
(map (lambda (x) (list (list (first x) (second x))
(list (first x) (third x))))
input)))
例如:
(define input '((a (xz) (c)) (b (wy) (d))))
(productionValues input)
=> '((a (xz)) (a (c)) (b (wy)) (b (d)))
推荐阅读
- apollo - 微服务之间的关系应该如何架构
- c++ - Box2d Player在使用枚举时不断跳跃
- docker - 如何访问 Docker for Windows 上的命名或匿名 Docker 卷?
- regex - Freepascal 中的正则表达式 - 无法识别的修饰符:Pos 15
- python - Python正则表达式数字转换成字符串
- javascript - 如何使用文本选项更改按钮 URL
- angular - 如何从Angular中的另一个服务调用服务的特定实例?
- python - 以迭代方式将熊猫数据帧的一部分打印到另一个(新)数据帧
- dynamics-crm - Dynamics 365 客户服务:从一个队列发送到另一个队列的电子邮件被链接到同一张票
- python - 允许注册前的 django 电子邮件验证