如何将数字列表转换为 Haskell 中的字符串列表
How to convert list of numbers to list of strings in Haskell
如何在 Haskell 中将数字列表转换为字符串列表(一个字符串 = 列表中的一个数字)。
[整数] -> [字符串]
示例:[1,2,3,4] -> ["1","2","3","4"]
如果您有函数 f :: a -> b
,则 map f :: [a] -> [b]
对所有列表元素应用 f
。
函数 show
可以转换 "printable" 类型的字符串表示形式。特别是,show
的一种可能类型是 Int -> String
.
同时使用这两种工具。
使用列表 monad:
f :: [Int] -> String
f xs = do
x <- xs
return $ show x
或等同于:
f' :: [Int] -> [String]
f' = (>>= return.show)
如果您需要编写一个函数来打印从 0 开始的元素,这可能是另一种解决方案
cp_log :: (Show a) => [a] -> String
cp_log [] = ""
cp_log [x] = (show x)
cp_log (x:xs) = (show x) ++ ", " ++ cp_log xs
一个完整的例子可以是下面这个
cp_log :: (Show a) => [a] -> String
cp_log [] = ""
cp_log [x] = (show x)
cp_log (x:xs) = (show x) ++ ", " ++ cp_log xs
quick_sort :: (Ord a) => [a] -> [a]
quick_sort [] = []
quick_sort (x:xs) =
let smaller = quick_sort [a | a <- xs, a <= x]
bigger = quick_sort [a | a <- xs, a > x]
in smaller ++ [x] ++ bigger
main =
let sorted = (quick_sort [4, 5, 3, 2, 4, 3, 2])
in putStrLn (cp_log sorted)
如何在 Haskell 中将数字列表转换为字符串列表(一个字符串 = 列表中的一个数字)。
[整数] -> [字符串]
示例:[1,2,3,4] -> ["1","2","3","4"]
如果您有函数 f :: a -> b
,则 map f :: [a] -> [b]
对所有列表元素应用 f
。
函数 show
可以转换 "printable" 类型的字符串表示形式。特别是,show
的一种可能类型是 Int -> String
.
同时使用这两种工具。
使用列表 monad:
f :: [Int] -> String
f xs = do
x <- xs
return $ show x
或等同于:
f' :: [Int] -> [String]
f' = (>>= return.show)
如果您需要编写一个函数来打印从 0 开始的元素,这可能是另一种解决方案
cp_log :: (Show a) => [a] -> String
cp_log [] = ""
cp_log [x] = (show x)
cp_log (x:xs) = (show x) ++ ", " ++ cp_log xs
一个完整的例子可以是下面这个
cp_log :: (Show a) => [a] -> String
cp_log [] = ""
cp_log [x] = (show x)
cp_log (x:xs) = (show x) ++ ", " ++ cp_log xs
quick_sort :: (Ord a) => [a] -> [a]
quick_sort [] = []
quick_sort (x:xs) =
let smaller = quick_sort [a | a <- xs, a <= x]
bigger = quick_sort [a | a <- xs, a > x]
in smaller ++ [x] ++ bigger
main =
let sorted = (quick_sort [4, 5, 3, 2, 4, 3, 2])
in putStrLn (cp_log sorted)