我正在尝试从命令行获取一个整数值,并将其传递给disp
函数。
import System(getArgs)
main = do
args <- getArgs
disp $ read $ head args :: Int
disp n = take n $ repeat 'S'
ghc报错信息为:
Couldn't match expected type `Int' with actual type `[Char]'
In the expression: disp $ read $ head args :: Int
In the expression:
do { args <- getArgs;
disp $ read $ head args :: Int }
In an equation for `main':
main
= do { args <- getArgs;
disp $ read $ head args :: Int }
感谢您的选择。
read
。从 Prelude 中使用read
是可以的。例如:take (read $ head ["5", "4", "3"] ::Int) [x | x <- [1..19]]
可以正常工作,输出[1,2,3,4,5]
。 - user235273:: Int
删掉就可以了。它会自动识别使用哪个read
函数。 - Will NessIO b0',但实际类型是
[Char]'。 - user235273print
:print $ disp ...
- Will Nessreplicate n 'S'
ن»£و›؟take n $ repeat 'S'
م€‚ - amindfv