我有一个接受列表的函数,如果列表中有两个相同且连续的数字,如果列表中的其他地方有一个数字x是等价的,那么我想将x更改为0并返回列表。twoAdjThenThirdZero (x:y:xs) = [if x == y && x `elem` xs then 0 else x | x <- xs]*Main> twoAdjThenT
我试图通过为Euler项目编写程序来学习Haskell。目前,我正试图解决任务3,它要求600851475143的最大素数因子。primelist z = [y | y <- [1..z], mod z y == 0]
结果应该出现在这里,应该是一个包含8个列表的列表相反,这个列表是印出来的。
如何解释这种行为?
我试图理解Haskell列表理解是如何在模式匹配方面“在幕后”工作的。我知道List是一个monad,定义为(source from Real World Haskell,ch.14): return x = [x]xs >>= f = concat (map f xs) fail _ = []
因此,列表理