gdritter repos s-cargot / dc81150
Phrasing/code improvements to README Getty Ritter 9 years ago
1 changed file(s) with 6 addition(s) and 5 deletion(s). Collapse all Expand all
126126 could easily be written by hand as
127127
128128 ~~~~
129 *Data.SCargot.General> let mySpec = addReader '\'' (fmap go) spec
130 where go c = SCons (SAtom "quote") (SCons c SNil)
131 *Data.SCargot.General> decode (asRich mySpec) "(1 2 '(3 4))"
132 Right [RSList [RSAtom "1",RSAtom "2",RSList [RSAtom "quote",RSList [RSAtom "3",RSAtom "4"]]]]
129 *Data.SCargot.General> let doQuote c = SCons (SAtom "quote") (SCons c SNil)
130 *Data.SCargot.General> let qReader = addReader '\'' (\ p -> fmap doQuote p)
131 *Data.SCargot.General> decode (qReader mySpec) "'foo"
132 Right [SCons (SAtom "quote") (SCons (SAtom "foo") SNil)]
133133 ~~~~
134134
135135 A reader macro is passed the parser that invoked it, so that it can
139139 parsing anything else and merely returns a new token:
140140
141141 ~~~~
142 *Data.SCargot.General> decode (addReader '?' (const (pure (SAtom "huh"))) mySpec) "(?1 2)"
142 *Data.SCargot.General> let qmReader = addReader '?' (\ _ -> pure (SAtom "huh"))
143 *Data.SCargot.General> decode (qmReader mySpec) "(?1 2)"
143144 Right [SCons (SAtom "huh") (SCons (SAtom "1") (SCons (SAtom "2") SNil))]
144145 ~~~~
145146