高阶函数中函数的执行顺序



这里有一个函数

(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 redirectUrlGraphEmailseeOther redirectUrlGraphEmail $ toResponse "" ?

元组项由,分隔,这意味着在graph-fb的示例中,

a == "graph-fb"
b == seeOther redirectUrlGraphEmail $ toResponse ""

要解析的第一个函数调用将是toResponse "",它将作为第二个参数馈入seeOther。这样做的结果将在映射函数中包含标签b

无法从代码中判断。即使忽略编译器以各种戏剧性的方式重新组织程序的自由,Haskell计算的通常方法也是懒惰的,您可以将其视为需求驱动、case驱动和(最终)I/o驱动。实际检查结果的人决定求值顺序。

相关内容

  • 没有找到相关文章

最新更新