我是Haskell的新手,我想知道如何在Haskell中打印一些函数返回的字符串和整数值,就像我们在C ++中一样。
#include <iostream>
using namespace std;
int solve(int a) {
return a * a;
}
int main() {
int cases, number;
cin >> cases;
for (int cs = 1; cs <= cases; cs++) {
cin >> number;
cout << "Case " << cs << ": " << solve(number) << endl;
}
return 0;
}
我在Haskell中尝试过类似但没有运气并且收到错误。
solve :: Int -> Integer
solve = …
main = do
n <- readLn
forM_ [1..n] (\i -> do
m <- readLn
printf "Case %d: %d" i (solve m))
答案 0 :(得分:3)
使用forM_ [1..n::Int]
让编译器知道n
所需的类型。否则,readLn
没有足够的信息来进行类型检查。
main :: IO ()
main = do
n <- readLn
forM_ [1..n::Int] (\i -> do
m <- readLn
printf "Case %d: %d\n" i (solve m))
当你不需要它的花哨功能(例如printf
或更复杂的格式字符串)时, %04d
在Haskell中并没有这么用。更惯用的方式可能是
main :: IO ()
main = do
n <- readLn
forM_ [1..n::Int] (\i -> do
m <- readLn
putStrLn $ "Case " ++ show i ++ ": " ++ show (solve m)
函数show
几乎可以将任何内容转换为字符串。