实现DFS算法时,我必须使用Imperative功能。这是代码
type ST s a = s -> (a, s)
returnST :: a -> ST s a
returnST a s = (a, s)
thenST :: ST s a -> (a -> ST s b) -> ST s b
(m 'thenST' k) s = k a t where (a, t) = m s
但GHCi 6.12.3在最后一行代码中给出了'模式中的解析错误'。我从一篇论文中得到了这段代码。本文作者使用的编译器是否有可能不像现在那样严格的语法规则?以及如何解决此错误?
答案 0 :(得分:6)
更改
'thenST'
到
`thenST`
反引号将普通函数名称转换为中缀运算符。它们可能已被编辑器,文字处理器或文档查看器转换为单引号。