diff options
Diffstat (limited to 'assignment-13/Util.icl')
-rw-r--r-- | assignment-13/Util.icl | 38 |
1 files changed, 0 insertions, 38 deletions
diff --git a/assignment-13/Util.icl b/assignment-13/Util.icl deleted file mode 100644 index 8c246c7..0000000 --- a/assignment-13/Util.icl +++ /dev/null @@ -1,38 +0,0 @@ -implementation module Util - -import StdClass -from StdFunc import id, o -import StdInt -import StdList -import StdOverloaded -import StdString - -from Text import class Text(concat), instance Text String - -instance zero PrState -where - zero = - { indent = 0 - , output = [] - } - -printToString :: a -> String | print a -printToString x = concat (print x zero).output - -instance print (PrState -> PrState) where print p = p -instance print String where print s = \st -> {st & output=[s:st.output]} -instance print Int where print i = \st -> {st & output=[toString i:st.output]} - -nl :: PrState -> PrState -nl st = {st & output=["\n":repeatn st.indent "\t"] ++ st.output} - -indent :: PrState -> PrState -indent st = {st & indent=max 0 (st.indent - 1)} - -unindent :: PrState -> PrState -unindent st = {st & indent=st.indent + 1} - -prsperse :: a [b] -> PrState -> PrState | print a & print b -prsperse _ [] = id -prsperse _ [x] = print x -prsperse g [x:xs] = print x o print g o prsperse g xs |