我目前正在使用 MIT 计划进行家庭作业,并且遇到了一些据说很短的问题,尽管我对如何实现其中一些有点困惑。
一个问题要求我编写一个函数,该函数返回一个删除了所有整数的列表。我确实设法解决了这个问题,
(define (f2a lst) (map (lambda(x) (remove number? x)) lst))
尽管我对如何将其重写为不使用 remove 而是使用过滤器感到困惑。*注:(f2a '(("a" 1 "b") (2 "c") (-1 "d") (-2)))
退货'(("a" "b") ("c") ("d"))
其他两个问题是我没有找到任何解决方案的问题。
他们要求我编写一个函数,该函数返回一个列表,其中删除了所有正奇数和负偶数。例如,
(f2b '(("a" 1 "b") (2 "c") (-1 "d") (-2)))
返回
(("a" "b") (2 "c") (-1 "d"))
我有一些不正确的代码,但我觉得展示了我是如何尝试解决这个问题的:
(define (f2b lst)
(lambda(x)
(cond ((and (positive? x) (odd? x)) (filter x lst))
((and (negative? x) (even? x)) (filter x lst))
(else "this should never print"))))
最后一个问题只是要求一个函数返回一个字符串,该字符串由附加在列表中的所有字符串组成。(f2c '(("a" 1 "b") (2 "c") (-1 "d") (-2)))
返回“abcd”。
我几乎设法弄清楚了这一点,但是当它不断返回奇怪的值时就卡住了。这是我的代码:
(define (f2c lst)
(lambda(x)
(map (lambda (x) (filter string? x)) lst)
(list x))
(string-append (car lst) (cdr lst)))
在高阶语法方面,我仅限于映射、过滤、累加和求和。我不是要直接回答,而是要一些帮助来帮助我弄清楚我需要做什么。我的代码做错了什么?非常感谢您对此提供的任何帮助。谢谢你。