【发布时间】:2021-01-22 22:02:03
【问题描述】:
我在编写返回满足条件的对子列表的函数时遇到问题。
当前代码:
(define lst1 '((a . 8)(b . 3)(c . 1)(d . 9)(e . 4)))
(define (letter t)
(caar t))
(define (numb p)
(cdar p))
(define (satisfy? c? lst)
(cond
[(or (c? (letter lst)) (c? (numb lst))) #t]
[else #f]))
(define (find-sublist c? lst)
(cond
[(satisfy? c? lst) (cons (car lst) (find-sublist c?(cdr lst)))]
[else (find-sublist c? (cdr lst))]))
控制台输入:
(find-sublist (lambda(x) (> (numb x) 3)) lst1)
想要的输出:
'((a . 8)(d . 9)(e . 4))
我当前的输入包括违反合同或对的合同
car: contract violation
expected: pair?
given: '()
cdar: contract violation
expected: (cons/c pair? any/c)
given: 'a
【问题讨论】:
标签: functional-programming scheme racket