Я пытаюсь использовать последовательности для повышения производительности. При определении функции ниже я попытался использовать операторы «треугольника» в контексте паттерна шаблонов.Как использовать операторы треугольника в функции соответствия шаблону
import qualified Data.Sequence as S
cleanField :: S.Seq Char -> S.Seq Char
cleanField ((S.<|) ' ' xs) = cleanField xs
cleanField ((S.|>) xs ' ') = cleanField xs
cleanField xs = xs
GHC 7.4.1 говорит:
seq.hs:4:13: Parse error in pattern: (S.<|)
Могу ли я не использовать операторы треугольника (<|
, |>
) в сопоставлении с образцом?
Если да, то почему я могу использовать cons (:
) оператора в сопоставлении с образцом, а не в операторах треугольника?
Я не знаком с этим модулем, но, возможно, '<|' и другие не являются конструкторами, не так ли? Вы можете использовать ':' в шаблоне, потому что это конструктор. –
@XavierPinho Они кажутся [конструкторами] (http://hackage.haskell.org/package/containers-0.5.5.1/docs/Data-Sequence.html#g:1) –