@@ -12,7 +12,7 @@ import Data.Syntax.Char
1212import Data.Syntax.Combinator
1313import Prelude hiding (takeWhile, take)
1414
15−newtype Indent m a = Indent { unIndent :: Int -> m a }
15+newtype Indent m a = Indent { unIndent :: (Int, m ()) -> m a }
1616
1717instance SemiIsoFunctor m => SemiIsoFunctor (Indent m) where
1818 simap f (Indent g) = Indent $ \i -> simap f (g i)
@@ -49,11 +49,10 @@ instance SyntaxChar syn seq => SyntaxChar (Indent syn) seq where
4949 scientific = Indent $ const scientific
5050
5151breakLine :: SyntaxChar syn seq => Indent syn ()
52−breakLine = Indent $ \i -> opt (char '\n') /*
53− (constant (fromList $ replicate (4*i) ' ') /$/ takeWhile isSpace)
52+breakLine = Indent $ \(i, tab) -> opt (char '\n') /* opt (sireplicate_ i tab) /* spaces_
5453
5554indented :: Indent m a -> Indent m a
56−indented (Indent f) = Indent $ \i -> f (i + 1)
55+indented (Indent f) = Indent $ \(i, tab) -> f (i + 1, tab)
5756
58−runIndent :: Indent m a -> m a
59−runIndent = ($ 0) . unIndent
57+runIndent :: Indent m a -> m () -> m a
58+runIndent = ($ 0) . curry . unIndent