取一个值并将其通过结构列表并返回具有相应值的列表

问题描述 投票:0回答:1

[我正在尝试编写一个函数,该函数需要一年的时间和一系列结构(定义为事件)作为输入并吐出相应的结构。

(define-struct incident (name day mon yr)#:transparent)

(define cake (make-incident "cake" 15 "Apr" 2015))
(define Graduation (make-incident "graduation" 2 "Mar" 2017))

    (define (incidentYr yr aList)
  (foldl
   (lambda (x y) (if (equal? (incident-yr x) yr) (append x y) y))
   '()  aList))

(check-expect (incidentYr 2015 (list (incident "cake" 29 "Apr" 2015) (incident "graduation" 7 "Mar" 2017))) (list (incident "cake" 29 "Apr" 2015)))

但是我得到的错误是:

    check-expect encountered the following error instead of the expected value, (list (incident "cake" 29 "Apr" 2015)). 
   :: append: expects a list, given (incident "cake" 29 "Apr" 2015)

似乎无效。

list struct lambda racket matching
1个回答
0
投票

foldl的lambda中,将(append x y)更改为(append (list x) y)

© www.soinside.com 2019 - 2024. All rights reserved.