这里有一个函数
(map ( (a, b) -> dir a b) $ routes
其中routes
是一个元组列表,并且包含
routes = [...
("graph-fb", seeOther redirectUrlGraphEmail $ toResponse ""),
("post-fb", seeOther redirectUrlGraphPost $ toResponse ""),
...]
这里是问题:当我调用此函数对每个元组应用dir时,哪个函数将首先在dir a b
中返回b
,函数seeOther redirectUrlGraphEmail
或seeOther redirectUrlGraphEmail $ toResponse ""
?
元组项由,
分隔,这意味着在graph-fb
的示例中,
a == "graph-fb"
b == seeOther redirectUrlGraphEmail $ toResponse ""
要解析的第一个函数调用将是toResponse ""
,它将作为第二个参数馈入seeOther
。这样做的结果将在映射函数中包含标签b
。
无法从代码中判断。即使忽略编译器以各种戏剧性的方式重新组织程序的自由,Haskell计算的通常方法也是懒惰的,您可以将其视为需求驱动、case
驱动和(最终)I/o驱动。实际检查结果的人决定求值顺序。