2011-10-15 15 views
1

我有這樣的功能:如何存儲這種返回類型:[(x,y)]?

example   :: [Char] -> [Char] 
example myString = ................... 
        where 
         pat  = "something" 
         returnList = myString =~ pat :: [(MatchOffset,MatchLength)] 

我的問題是,我不知道如何存儲的值,我回去與調用myString =~ pat :: [(MatchOffset,MatchLength)]

我不能只將其存儲在一個單一的變量名稱,因爲我已經在這裏完成了,但我不確定我是如何存儲它的。

目前,它給出了這樣的錯誤:

No instance for (RegexContext 
        Regex [Char] [(MatchOffset, MatchLength)]) 
    arising from a use of `=~' 
Possible fix: 
    add an instance declaration for 
    (RegexContext Regex [Char] [(MatchOffset, MatchLength)]) 
In the expression: myString =~ pat :: [(MatchOffset, MatchLength)] 
In an equation for `returnList': 
    returnList = myString =~ pat :: [(MatchOffset, MatchLength)] 
In an equation for `example': 
    example myString 
     = .................... 
     where 
      pat = "something" 
      returnList = myString =~ pat :: [(MatchOffset, MatchLength)] 

回答

5

看着the instances供類RegexLike,你想要的值可能AllMatches [] (MatchOffset, MatchLength)類型,它只是包裝的元組(MatchOffset, MatchLength)到NEWTYPE的名單。然後可以使用getAllMatches函數訪問該列表。所以你可以這樣做:

returnList = getAllMatches (myString =~ pat) :: [(MatchOffset,MatchLength)] 
+0

完美,謝謝! –