我这里有一个元组列表,我想dir..在每个元组的第一个元素上应用函数。我怎样才能做到这一点?在此先多谢!
[ ("grid", gridResponse),
("graph", graphResponse),
("image", graphImageResponse),
("timetable-image", timetableImageResponse x),
("graph-fb",toResponse ""),
("post-fb",toResponse ""),
("test", getEmail),
("test-post", postToFacebook),
("post", postResponse),
("draw", drawResponse),
("about", aboutResponse),
("privacy" ,privacyResponse),
("static", serveDirectory),
("course", retrieveCourse),
("all-courses", allCourses),
("graphs", queryGraphs),
("course-info", courseInfo),
("depts", deptList),
("timesearch",searchResponse),
("calendar",calendarResponse),
("get-json-data",getGraphJSON),
("loading",loadingResponse),
("save-json", saveGraphJSON)?
Run Code Online (Sandbox Code Playgroud)
map 定义为:
map :: (a -> b) -> [a] -> [b]
Run Code Online (Sandbox Code Playgroud)
这意味着它是一个函数,该函数接受从类型a到类型b的函数以及类型a的列表,然后返回类型b的列表。正如@pdexter和@karakfa在评论中指出的,这正是您所需要的。
map f list
Run Code Online (Sandbox Code Playgroud)
那你需要什么?好吧,您的列表是一个元组列表,并且您想对每个元组的第一个元素应用一个函数,因此(正好是@karakfa指出的)
map (dir . fst) list
Run Code Online (Sandbox Code Playgroud)
这会将函数fst与您的自定义dir函数组合在一起,从而为您提供一个新的函数,该函数将采用元组的第一个元素,并对dir函数执行的操作相同。然后map将其应用于整个列表。
| 归档时间: |
|
| 查看次数: |
10140 次 |
| 最近记录: |