我有这样的功能:
example :: [Char] -> [Char]
example myString = ...................
where
pat = "something"
returnList = myString =~ pat :: [(MatchOffset,MatchLength)]
Run Code Online (Sandbox Code Playgroud)
我的问题是我不知道如何存储我从调用中返回的值 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)]
Run Code Online (Sandbox Code Playgroud)
查看可用于RegexLike类的实例,您想要的值可能是类型AllMatches [] (MatchOffset, MatchLength),它只是将元组列表包装(MatchOffset, MatchLength)为newtype.然后可以使用该getAllMatches功能访问该列表.所以你可以这样做:
returnList = getAllMatches (myString =~ pat) :: [(MatchOffset,MatchLength)]
Run Code Online (Sandbox Code Playgroud)