了解Haskell列表理解语法的初学者帮助
这是我试图理解的代码了解Haskell列表理解语法的初学者帮助,haskell,syntax,Haskell,Syntax,这是我试图理解的代码 let triple = [ (a,b,c) | c <- [1..10], a <- [1..c], b <- [1..a], a^2 + b^2 == c^2] let triple=[(a,b,c)| c您可以大致将其转换为命令式伪代码,如下所示: for c in 1..10 for a in 1..c for b in 1..a if a^2 + b^2 == c^2 put (a,b,c) on end
let triple = [ (a,b,c) | c <- [1..10], a <- [1..c], b <- [1..a], a^2 + b^2 == c^2]
let triple=[(a,b,c)| c您可以大致将其转换为命令式伪代码,如下所示:
for c in 1..10
for a in 1..c
for b in 1..a
if a^2 + b^2 == c^2
put (a,b,c) on end of triple
除了它将在任何使用列表的对象请求元素时懒洋洋地运行之外
列表理解实际上是列表单子之上的一个相当简单的语法糖。如果您想了解关于它们如何解释的更多信息,您可能需要查看它们。您可以大致将其转换为命令式伪代码,如下所示:
for c in 1..10
for a in 1..c
for b in 1..a
if a^2 + b^2 == c^2
put (a,b,c) on end of triple
除了它将在任何使用列表的对象请求元素时懒洋洋地运行之外
列表理解实际上是列表单子之上的一个相当简单的语法糖。如果你想了解更多关于它们如何解释的信息,你可能想看看那里
Haskell按什么顺序计算每个表达式
一般来说,这个问题的答案是
这不关你的事
考虑Haskell程序将做什么,担心事物的求值顺序不是正确的方式。在Java中,这非常重要,因为求值可能会产生副作用。在Haskell中,求值顺序不会影响结果(请撇开奇怪的角落)
考虑列表理解的关键是考虑嵌套顺序,而不是求值顺序。列表理解中最左边的术语是最外面的术语
Haskell按什么顺序计算每个表达式
一般来说,这个问题的答案是
这不关你的事
考虑Haskell程序将做什么,担心事物的求值顺序不是正确的方式。在Java中,这非常重要,因为求值可能会产生副作用。在Haskell中,求值顺序不会影响结果(请撇开奇怪的角落)
考虑列表理解的关键是考虑嵌套顺序,而不是求值顺序。列表理解中最左边的术语是最外面的术语