我经常编写如下代码:
data Tok =
TokA String |
TokS Char |
TokL String
deriving (Show, Eq)
data Tokenizer = Tokenizer { runTokenizer :: (Tok, Tokenizer) }
tokenize xs = Tokenizer $ go xs
where
psh [] = go xs
psh (r:rs) = (TokS r, Tokenizer (psh rs))
plg rs = (TokL rs, Tokenizer (go xs))
go (x:xs) =
case span (== '-') x of
(_, "") -> (TokA x, Tokenizer (go xs))
("-", rs) -> psh rs
("--", rs) -> plg rs
_ -> (TokA x, Tokenizer (go xs))
请注意,|
符号排成一行,->
符号排成一行,=符号排成一行。
我已尝试使用Emacs align
命令,但它不会自动运行,因此我不得不求助于使用align-regexp
和大量输入。我知道我可以修改align-rules-list
以某种方式自动检测和应用特定规则,但我不知道如何修改变量来执行此操作。在上述三种情况下,有人可以帮助我吗?