Haskell “哈斯克尔错误”;输入上的分析错误‘;如果'&引用;
我问了一个关于Haskell的问题,我试图在列表中只将一个函数设为偶数的一半,然后返回最终列表,其中只有偶数被修改(被减半),其余元素保持不变 但是当我试图编译代码时,我给出了一个错误,说“error:parse error on input'if'”,我找不到解决方案Haskell “哈斯克尔错误”;输入上的分析错误‘;如果'&引用;,haskell,if-statement,compiler-errors,list-comprehension,Haskell,If Statement,Compiler Errors,List Comprehension,我问了一个关于Haskell的问题,我试图在列表中只将一个函数设为偶数的一半,然后返回最终列表,其中只有偶数被修改(被减半),其余元素保持不变 但是当我试图编译代码时,我给出了一个错误,说“error:parse error on input'if'”,我找不到解决方案 halfEvens :: [ Int ] -> [ Int ] halfEvens xs = [x|x<-xs] if x mod 2 == 0 the
halfEvens :: [ Int ] -> [ Int ]
halfEvens xs = [x|x<-xs]
if x mod 2 == 0
the x = x / 2
else
x = x
halfEvens::[Int]->[Int]
halfEvens xs=[x | x您的代码存在多个问题:
[x | x因此,您希望应用一个函数,将偶数减半,但不使用奇数。我们可以编写一个函数,在单个Int
上执行此转换,使用前奏曲中的偶数
:
halfEven :: Int -> Int
halfEven x | even x = x `div` 2
| otherwise = x
现在,我们可以在Int
列表上映射该函数:
halfEvens :: [Int] -> [Int]
halfEvens xs = map halfEven xs
或免积分:
halfEvens = map halfEven
或者使用列表:
halfEvens xs = [halfEven x | x <- xs]
halfEvens xs=[halfEven x | x尽可能保留原始代码/意图
halfEvens xs = [x | x <- xs, x <- [ -- instead of x = ...
if x `mod` 2 == 0
then {- x = -} x `div` 2
else {- x = -} x ]]
halfEvens xs=[x | x[t]
有趣的是,我们被允许在那里使用相同的变量名,x抱歉,因为我的代码有点混乱。那么我应该怎么做才能使我的函数按照我的要求工作呢?你有什么建议吗?映射做了什么?它是将“半平”导入到“半平”还是换言之,赋值g“半偶”到“半偶”的值?@Wandymap半偶==\xs->[half偶x | x
halfEvens xs = [halfEven x | x <- xs]
halfEvens xs = [x | x <- xs, x <- [ -- instead of x = ...
if x `mod` 2 == 0
then {- x = -} x `div` 2
else {- x = -} x ]]