Just my own implementation (and extension?) of the Write Yourself a Scheme in 48 Hours tutorial.
Build with ghc -dynamic --make Repl.hs
- Rewrite
parseNumber
without usingliftM
- Parsing
\"
(R5RS compliance) - Parse other escaped characters (
\n
,\r
,\t
,\\
) in strings - Parse numbers of different bases
- Parse character literals
- Parse Reals
- Parse the full numeric tower
- Support backquote syntactic sugar
- Support vectors
- Left-factor the grammar instead of using the try combinator
- Add Primitives for type-testing:
symbol?
,string?
,number?
etc. - Remove weak typing from
unpackNum
, s.t. it always returns 0 if the value is not a number - Add symbol-handling functions
-
Makeif
only acceptBool
values - Make
equal?
useequal?
when comparing lists (instead ofeqv?
) - Implement
cond
andcase
expressions - Implement the rest of the string functions
- Parse escaped characters, even when they're not part of a string
- Eval pattern for
quasiquote
andunquote-splicing
- Implement
eqv?
for vectors