的名單上一個結構的領域應用過濾器請在下面找到我的代碼片段:球拍:在結構
(define (try los)
(filter (string=? (person-name (first los)) "Mike") los))
我在這裏得到一些語法錯誤。我不知道如何在結構列表中的結構的1個特定字段上應用過濾器。 (注意:我不想使用遞歸)。有人可以給我一個相同的例子,或幫助我糾正我想在這裏做什麼?
的名單上一個結構的領域應用過濾器請在下面找到我的代碼片段:球拍:在結構
(define (try los)
(filter (string=? (person-name (first los)) "Mike") los))
我在這裏得到一些語法錯誤。我不知道如何在結構列表中的結構的1個特定字段上應用過濾器。 (注意:我不想使用遞歸)。有人可以給我一個相同的例子,或幫助我糾正我想在這裏做什麼?
您需要過濾器來定義lambda表達式:
(filter
(lambda(x) (string=? (person-name x)
"Mike"))
los)
這樣的lambda函數是非常有用的,並常與 '地圖', 'ormap', 'andmap', '過濾器' 使用,「每個','應用','memf','findf','foldl','foldr'等,以對給定列表的每個成員進行操作。查看here許多示例(搜索lambda)。
一個簡單的解決方案是創建一個幫助函數mike?
,它接受一個人struct s
並檢查名稱是否爲"Mike"
。
(define (mike? s)
(string=? (person-name s) "Mike")
(define (try los)
(filter mike? los))
注意:los是'Person'的列表,其中person被定義爲結構 – user3868051