úÎb—      experimental#Bas van Dijk <v.dijk.bas@gmail.com>?A difference string is a function that given a string, returns A the original contents of the difference string prepended at the  given string. This structure supports O(1) append en snoc operations on > strings making it very usefull for append-heavy uses such as  logging and pretty printing. 7You can use it to efficiently show a tree for example: 3 (Note that we make use of some functions from the string-combinators package:   Mhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/string-combinators) $ {-# LANGUAGE OverloadedStrings #-}   import Data.DString 9 import Data.String.Combinators ((<+>), fromShow, paren)  1 data Tree a = Leaf a | Branch (Tree a) (Tree a)  ( instance Show a => Show (Tree a) where  show = toString . go  where 3 go (Leaf x) = "Leaf" <+> fromShow x H go (Branch l r) = "Branch" <+> paren (go l) <+> paren (go r) 1Convert a difference string to a difference list :Convert a difference list of Chars to a difference string 'Convert a ShowS to a difference string 'Convert a difference string to a ShowS -Build a difference string from a single Char O(1)(, Prepend a Char to a difference string O(1)', Append a Char to a difference string O(spine)!, Concatenate difference strings  O(length ds)+, difference list elimination, head, tail. )Return the head of the difference string )Return the tail of the difference string Unfoldr for difference strings Foldr over difference strings          dstring-0.3 Data.DStringDStringtoDList fromDList fromShowStoShowS singletonconssnocconcatlistheadtailunfoldrfoldrDS