1 implementation module ast
8 instance toString AST where toString a = display $ renderCompact $ pretty a
9 instance toString Function where toString a = display $ renderCompact $ pretty a
10 instance toString Expression where toString a = display $ renderCompact $ pretty a
11 instance toString Value where toString a = display $ renderCompact $ pretty a
13 instance Pretty Expression
15 pretty (Literal v) = pretty v
16 pretty (Variable v) = string v
17 pretty (Apply a b) = parens (pretty a <+> pretty b)
19 instance Pretty Function
21 pretty (Function n args a) = string n <+> fold (<+>) (map string args) <+> string "=" <+> pretty a
25 pretty (AST a) = pretty a
29 pretty (Int i) = int i
30 pretty (Bool b) = bool b
31 pretty (Char c) = char c