在 Haskell 中将字符串和整数写入标准输出
Writing String and integer to stdout in Haskell
我是 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))
使用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
在不需要 Haskell 的奇特功能(例如 %04d
或更复杂的格式字符串)时,不会在 Haskell 中如此使用。更惯用的方式可能是
main :: IO ()
main = do
n <- readLn
forM_ [1..n::Int] (\i -> do
m <- readLn
putStrLn $ "Case " ++ show i ++ ": " ++ show (solve m)
函数 show
几乎可以将任何内容转换为字符串。
我是 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))
使用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
在不需要 Haskell 的奇特功能(例如 %04d
或更复杂的格式字符串)时,不会在 Haskell 中如此使用。更惯用的方式可能是
main :: IO ()
main = do
n <- readLn
forM_ [1..n::Int] (\i -> do
m <- readLn
putStrLn $ "Case " ++ show i ++ ": " ++ show (solve m)
函数 show
几乎可以将任何内容转换为字符串。