我想实现一个称为countLowerUpper的函数,该函数接受一个String并计算大小写并将其作为元组返回。例如:countLowerUpper "TeST"
应该返回(1,3)
。我不知道如何正确返回元组。我被迫使用countLowerUpper :: String-> (Int,Int)
。我无法更改。
import Data.Char
countLowerUpper :: String-> (Int,Int)
countLowerUpper = (length . filter (isLower),length . filter(isUpper))
EDIT获得帮助后,我将代码更改为:
import Data.Char
countLowerUpper :: String-> (Int,Int)
countLowerUpper str = (lowerCount,upperCount)
where lowerCount =length . filter(isLower)
upperCount =length . filter(isUpper)
但仍然有错误:
error:
• Couldn't match expected type ‘Int’
with actual type ‘[Char] -> Int’
• Probable cause: ‘upperCount’ is applied to too few arguments
In the expression: upperCount
In the expression: (lowerCount, upperCount)
In an equation for ‘countLowerUpper’:
countLowerUpper str
= (lowerCount, upperCount)
where
lowerCount = length . filter (isLower)
upperCount = length . filter (isUpper)
|
4 | countLowerUpper str = (lowerCount,upperCount) |
我知道isLower没有任何争论,但是我不知道该使用什么。也许str?还是用弦的头和尾?
答案 0 :(得分:0)
import Data.Char
countLowerUpper :: String -> (Int,Int)
countLowerUpper str = (lowerCount,upperCount)
where lowerCount = undefined
upperCount = undefined
您可以这样做。