美好的一天,问题是相当noobish,但我坚持下去.
我决定从普通字符串迁移在我的项目,以文字和面临的问题,在源中的所有字符串产生编译错误添加后{ - #语言OverloadedStrings# - },例如网页摘要:
dropWhile (~/= "<li>") tags
Run Code Online (Sandbox Code Playgroud)
现在导致
由于使用`〜=='
t' in the constraints:而产生的文字"<li>"' at ParserOx.hs:93:42-47TagRep t'的模糊类型变量Data.String.IsString t '
这可能有什么问题?
UPD:
是的,我的所有功能都有签名,例如:
getContainer :: [Tag Text] -> [Tag Text]
getContainer tags =
h
where
(h:t) = sections (~== "<div id=\"itemscontainer\">") tags
Run Code Online (Sandbox Code Playgroud)
问题是你有一个带有两个约束的模糊类型- 由重载字符串给出的isstring约束,以及tagsoup用来允许你交替使用标签或字符串的tagrep约束.因此,两种"重载"字符串的方法(一般是一种,一种只是用于tagoup的匹配器)相互碰撞并引起混淆.要么关闭违规文件中的重载字符串,要么将字符串指定为代码中的实际字符串(即(~/= ("<li>"::String))).您可以执行以下操作以更安静地强制类型,而不是内联类型签名:
s :: String -> String
s = id
.... (~/= s "<li>") ...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
527 次 |
| 最近记录: |