Ошибка синтаксического анализа в шаблоне в haskell

#haskell #syntax

#haskell #синтаксис

Вопрос:

При реализации алгоритма DFS мне пришлось использовать императивные функции. Вот код

 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 выдает мне «Ошибку синтаксического анализа в шаблоне» в последней строке кода. Я получаю этот фрагмент кода из статьи. Есть ли какая-либо вероятность того, что компилятор, используемый автором статьи, не имеет строгих правил грамматики, как сейчас? И как исправить эту ошибку?

Комментарии:

1. Вы знаете, что DFS не требует изменяемого состояния, верно? Ваше первое предложение подразумевает иное.

2. @TomMD Я только что прочитал статью и хочу реализовать его идею.

Ответ №1:

Изменить

 'thenST'
  

Для

 `thenST`
  

Обратные знаки превращают обычное имя функции в инфиксный оператор. Возможно, они были преобразованы в одинарные кавычки редактором, текстовым процессором или средством просмотра документов.

Комментарии:

1. Извините, я допустил ошибку в вопросе. В моем коде это thenST . Таким образом, проблема не имеет ничего общего с обратными ссылками

2. @machinarium: тогда я больше не могу вам помочь. GHCi 6.12.1 отлично загружает опубликованный вами код, когда я вставляю обратные ссылки.