#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 отлично загружает опубликованный вами код, когда я вставляю обратные ссылки.