如何将数字列表转换为Haskell中的字符串列表

时间:2016-11-21 12:16:43

标签: string haskell integer converter

如何在Haskell中将数字列表转换为字符串列表(一个字符串=列表中的一个数字)。

[Int] - > [字符串]

示例:[1,2,3,4] - > [" 1"" 2"" 3"" 4"]

3 个答案:

答案 0 :(得分:3)

如果您有一个功能f :: a -> b,则map f :: [a] -> [b]会对所有列表元素应用f

函数show可以在其字符串表示形式中转换“可打印”类型。特别是,show的一种可能类型是Int -> String

使用这两种工具。

答案 1 :(得分:1)

如果您需要编写一个函数来打印从 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)

答案 2 :(得分:0)

使用列表monad:

f :: [Int] -> String
f xs = do 
         x <- xs
         return $ show x 

或等效地:

f' :: [Int] -> [String]
f' = (>>= return.show)