on master help sign in
New rewrite rule for right-associative uses of append
3c8b8c7Johan Tibell
Data/Text/Lazy/Builder.hs+9−4
@@ -248,15 +248,20 @@ append' (Builder f) (Builder g) = Builder (f . g)
248
248
249{-# RULES
249{-# RULES
250
250
251+"append/writeN" forall a b (f::forall s. A.MArray s Word16 -> Int -> ST s ())
252+ (g::forall s. A.MArray s Word16 -> Int -> ST s ()) ws.
253+ append (writeN a f) (append (writeN b g) ws) =
254+ append (writeN (a+b) (\marr o -> f marr o >> g marr (o+a))) ws
255+
251−"writeN/combine" forall a b (f::forall s. A.MArray s Word16 -> Int -> ST s ())
256+"writeN/writeN" forall a b (f::forall s. A.MArray s Word16 -> Int -> ST s ())
252− (g::forall s. A.MArray s Word16 -> Int -> ST s ()).
257+ (g::forall s. A.MArray s Word16 -> Int -> ST s ()).
253 append (writeN a f) (writeN b g) =
258 append (writeN a f) (writeN b g) =
254 writeN (a+b) (\marr o -> f marr o >> g marr (o+a))
259 writeN (a+b) (\marr o -> f marr o >> g marr (o+a))
255
260
256−"ensureFree/combine" forall a b .
261+"ensureFree/ensureFree" forall a b .
257 append (ensureFree a) (ensureFree b) = ensureFree (max a b)
262 append (ensureFree a) (ensureFree b) = ensureFree (max a b)
258
263
259−"flush/combine"
264+"flush/flush"
260 append flush flush = flush
265 append flush flush = flush
261
266
262 #-}
267 #-}