'show' returns 我想要的东西和一个奇怪的字符串

'show' returns what I want alongside a weird String

我有一个函数需要获取列表中的所有整数并将它们显示为字符串,即 "Beans 1.29" 应该 return 129。我的函数如下

multDigitsRecTest :: String -> String
multDigitsRecTest [] = ""
multDigitsRecTest (x:xs)
  | isDigit x = show (digitToInt (x), multDigitsRecTest xs)
  | otherwise = multDigitsRecTest xs

似乎return整数与其他奇怪的东西。有没有办法可以 return 将 int 作为字符串?

你基本上是想过滤数字字符。所以你可以将其实现为:

import Data.Char(isDigit)

multDigitsRecTest :: String -> String
multDigitsRecTest = <b>filter isDigit</b>

例如:

Prelude Data.Char> multDigitsRecTest "Beans 1.29"
"129"

打印噪音的原因是因为您调用 show (digitToInt x, multDigitsRecTest xs)。这是一个 2 元组 (Int, String)。因为 IntString 都是 Show 类型类的成员。元组也是如此。例如,它将因此打印 (2, "(5, \"\")")