Ale*_*uan 0 recursion f# functional-programming type-inference tuples
我想通过使用正则表达式来优化原始文本,给出(patten,replacement)元组的列表.
我试图在list元素上使用patten匹配但是失败了,错误显示"这个表达式应该有类型字符串*字符串列表,但这里有类型'列表".
我该如何解决这个问题?非常感谢.
代码如下:
let rec refine (raw:string) (rules:string*string list) =
match rules with
| (pattern,replacement) :: rest ->
refine <| Regex.Replace(raw,pattern,replacement) rest
| [] -> raw
Run Code Online (Sandbox Code Playgroud)
问题是a string * string list是一个由字符串和字符串列表组成的对,而你想要一个(string * string) list:
let rec refine (raw:string) (rules:(string*string) list) =
match rules with
| (pattern,replacement) :: rest ->
refine (Regex.Replace(raw,pattern,replacement)) rest
| [] -> raw
Run Code Online (Sandbox Code Playgroud)
或者,您需要特定注释的唯一原因是因为Regex.Replace重载.这就是您的其他解决方案有效的原因,但是还有其他(更少)的地方可以放置一个可行的注释:
let rec refine (raw:string) rules =
match rules with
| (pattern,replacement:string) :: rest ->
refine (Regex.Replace(raw,pattern,replacement)) rest
| [] -> raw
Run Code Online (Sandbox Code Playgroud)