我希望我的代码从控制台参数中读取数字,并将偶数代码写回控制台。奇数应该乘以2以使它们成为偶数。为此我添加了方法evenify哪个检查与mod 2奇数或偶数。
我无法找到我正在制作的错误,很可能它只是某处的语法错误。这是我现在的代码:
import System.Environment
evenify :: [Integer] -> [Integer]
evenify n = if mod n 2 == 0 then n else n*2
main :: IO ()
main = getArgs >>= putStrLn . show . evenify . read . head
_ = main
错误是什么?
答案 0 :(得分:2)
第一个问题是>>> 3(5*2)
Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
3(5*2)
TypeError: 'int' object is not callable
>>> 3*(5*2)
30
具有错误的类型签名 - 因为它具有签名:
evenify
通过此更改,您的程序可以处理一个命令行参数 - 仅第一个参数。
要处理所有参数,请使用evenify :: Integer -> Integer
:
map
说明:
main = do args <- getArguments
putStrLn $ show $ map evenify (map read args)
答案 1 :(得分:1)
引人注目的第一个错误
Folder01
-folder-A
-folder-B
-file1.php
-image.png
-index.php
签名需要一个列表,但实现是针对标量的。