如何对 Haskell 列表中的每个元素应用一个函数?
How to apply a function on each element in a list in Haskell?
我这里有一个元组列表,我想在每个元组的第一个元素上应用函数 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)]
map
定义为:
map :: (a -> b) -> [a] -> [b]
这意味着它是一个函数,它接受一个从类型 a 到类型 b 的函数和一个类型 a 的列表,然后 returns 一个类型 b 的列表。正如@pdexter 和@karakfa 在评论中指出的那样,这正是您所需要的。
map f list
那么你需要什么?好吧,你的列表是一个元组列表,你想对每个元组的第一个元素应用一个函数,所以(正如@karakfa 指出的那样)你只需要
map (dir . fst) list
这将函数 fst 与您的自定义 dir 函数组合在一起,为您提供一个新函数,该函数将获取元组的第一个元素并执行您的 dir 函数对其执行的任何操作。然后地图将其应用于整个列表。
我这里有一个元组列表,我想在每个元组的第一个元素上应用函数 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)]
map
定义为:
map :: (a -> b) -> [a] -> [b]
这意味着它是一个函数,它接受一个从类型 a 到类型 b 的函数和一个类型 a 的列表,然后 returns 一个类型 b 的列表。正如@pdexter 和@karakfa 在评论中指出的那样,这正是您所需要的。
map f list
那么你需要什么?好吧,你的列表是一个元组列表,你想对每个元组的第一个元素应用一个函数,所以(正如@karakfa 指出的那样)你只需要
map (dir . fst) list
这将函数 fst 与您的自定义 dir 函数组合在一起,为您提供一个新函数,该函数将获取元组的第一个元素并执行您的 dir 函数对其执行的任何操作。然后地图将其应用于整个列表。