scheme - 几个列表作为函数的输入
问题描述
我正在使用三个列表定义一个函数(下面的“my-function” )。它检查这三个列表是否满足某个条件,然后做更多的事情。这个条件是长度为 2(我怀疑这并不重要,但我更愿意提及它)。因此,它具有以下形式:
(define my-function (lambda (list1 list2 list3)
(cond
[(and (= (length list1) 2) (= (length list2) 2) (= (length list3) 2))...
我的问题是:如何将“我的功能”推广到多个列表?
更一般地说:有没有办法将列表索引到函数的输入中,然后一个接一个地调用它们来检查条件?
解决方案
您可以使用andmap
检查条件是否适用于列表中的所有元素:
(define lsts (list list1 list2 list3 list4))
(andmap (lambda (lst) (= (length lst) 2))
lsts)
诀窍是创建一个包含您要检查的元素的列表,在这种情况下,它们本身就是列表。为了进一步概括这一点,您可以将lambda
执行检查的 _ 作为参数传递,并且可以将子列表作为变量参数传递:
(define (my-function check . lsts)
(andmap check lsts))
(my-function (lambda (lst) (= (length lst) 2))
list1 list2 list3 list4)
推荐阅读
- python - sqlalchemy 单亲过于严格
- r - 将值添加到多行 id 最多指定数量
- java - 在一个类中同时使用 Parcelable 类和 Serializable
- sql-server - 奇怪的 FULL OUTER JOIN “ON” 子句?
- python - 如何将 FFmpeg 命令行转换为 ffmpeg-python 代码?
- amazon-web-services - 用于 aws 策略列表的 terraform 模板文件
- websocket - 直接从socketio服务器获取连接的sid?
- python - Python 猜词游戏
- firebase - firebase 数据库规则的条件
- python - 减少张量的维度(到标量)