我正在尝试将一个字符串(数字)转换为单个数字。有多种方法可以解决这个问题,其中一种是map digitToInt "1234"
我尝试了类似的方法,但不是使用digitToInt
,而是尝试使用read::Char->Int
函数。然而,当我使用上述函数时,我得到了编译错误,如:
map (read::Char->Int) ['1','2']
我不知道这里出了什么问题,我试图Map一个函数,它将CharMap到一个Char列表上,我错过了什么?
请不要告诉我替代方法,因为我知道有几种其他方法可以做到这一点。只是想了解这里发生了什么。
Couldn't match type ‘Char’ with ‘[Char]’
Expected type: Char -> Int
Actual type: String -> Int
• In the first argument of ‘map’, namely ‘(read :: Char -> Int)’
4条答案
按热度按时间fnvucqvd1#
read :: Read a => String -> a
将 string 转换为Read
able元素。因此,如果您想从字符串中读取数字,可以用途:但如果字符是数字,使用**
digitToInt :: Char -> Int
**函数可能更好:xoefb8l82#
问题是
read :: Read a => String -> a
。所以read
应该应用于String
,而不是Char
。请尝试以下操作:jexiocij3#
你可以尝试这样做
map (\x -> read (x:[]) :: Int) "12"
这应该可以工作,如果你有任何疑问,只需搜索lambda表达式。z31licg04#
你可以尝试这样的东西: