Haskell concat Int

时间:2015-07-24 00:14:31

标签: haskell int concatenation

我在进行以下练习时遇到了麻烦:

我必须创建一个名为addDigit的函数,它接受两个Int,第二个在0到9之间,并返回一个Int,它是第一个Int,后面跟着第二个。

示例:

输入:addDigit (-123) 4

输出:-1234

我尝试的是以下内容:

addDigit :: Int -> Int -> Int
addDigit x y = x ++ y

我觉得它没有用,因为++关键字只适用于字符串,字符和列表(我认为),这应该以一种简单的方式解决,而不需要将Int更改为字符串或任何其他变量,但我根本不知道如何做到这一点。

2 个答案:

答案 0 :(得分:7)

您正试图以图形方式解决问题(将整数视为字符串),您希望将其视为数值问题。对于正值,通过以下函数完成追加数字。

addDigitPositive a b = 10 * a + b

如果a < 0,很遗憾。在这种情况下,我们必须减去 b。我们可以轻松地将此功能与功能保护相结合。

addDigit a b | a < 0     = a * 10 - b
             | otherwise = a * 10 + b

答案 1 :(得分:-1)

或者您可以通过使用show将数字转换为字符串然后将其与(++)连接来以图形方式解决它:

addDigit :: Int -> Int -> String
addDigit x y = (show x) ++ (show y)

现在,如果你仍然想要一个Int作为输出,你可以使用read将字符串转换为Int:

addDigit :: Int -> Int -> Int
addDigit x y = read ((show x) ++ (show y))

正如您所看到的,有一种方法可以给猫皮肤。

我希望这会有所帮助。