计算小写和大写,然后将其作为元组返回

时间:2019-04-06 21:04:45

标签: haskell functional-programming

我想实现一个称为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?还是用弦的头和尾?

1 个答案:

答案 0 :(得分:0)

import Data.Char

countLowerUpper :: String -> (Int,Int)
countLowerUpper str = (lowerCount,upperCount)
    where lowerCount = undefined
          upperCount = undefined

您可以这样做。

相关问题