我正在尝试编写一个函数以根据条件生成定义的结构类型的列表,但只能获取它以生成完整的结构,而不仅仅是名称。
这是我尝试生成整个结构的尝试。
(define-struct birthday (name day month)#:transparent)
(define (bdayRange startday endday lst)
(filter (lambda (x) (<= startday (birthday-day x) endday)) lst))
不知道如何给出给定的生日结构列表以及一个月中的某天的范围(从1到30),如何生成该函数的生日名称参数。我觉得解决方法很明显,但我无法确定出来。
这是我的尝试。
(define (bdayRange startday endday lst)
(filter (lambda (x) (if (<= startday (birthday-day x) endday) (birthday-name x) '()) lst))
更好的方法是解析生日名称的结构列表或封装条件范围吗?
为什么不仅仅map
使用过滤birthday
结构列表birthday-name
呢?
(define (bdayRange startday endday lst)
(map birthday-name
(filter (lambda (x) (<= startday (birthday-day x) endday)) lst)))
这将返回name
给定范围内的的列表:
scratch.rkt> (define bday-list (list (birthday 'sam 25 'april)
(birthday 'erin 15 'april)
(birthday 'james 3 'april)
(birthday 'randi 7 'april)))
scratch.rkt> (bdayRange 6 17 bday-list)
'(erin randi)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句