Permalink
Branch: master
Commits on Feb 3, 2019
  1. Remove define-async and other cleanup (#84)

    jathak committed Feb 3, 2019
    * Remove define-async
    
    Attempting to add async/await to Scheme was a nice idea in theory, but
    it was never properly implemented and required each special form to have
    both synchronous and asynchronous implementations (most of which had to
    live in the private implementation library).
    
    * Fix type error in lib-ref
Commits on Feb 2, 2019
  1. Major refactor of data types (#76)

    jathak committed Feb 2, 2019
    * Refactor base Scheme type to be Value
    
    Previously, everything that could be touched by Scheme code was
    an Expression. However, many Expression subtypes can't actually
    be evaluated.
    
    This refactor changes the base Scheme type to be a Value, with a
    limited subset of evaluate-able types remaining Expressions (which
    itself inherits from Value).
    
    * Adds SchemeList wrapper type
    
    Pairs are no longer directly iterable. Instead, whenever we want to
    guarantee the a PairOrEmpty is a Scheme list, we wrap it in
    SchemeList, which then allows iteration.
    
    We then use this new wrapper to enforce stricter typing of Scheme
    lists throughout the interpreter. The builder supports auto-wrapping
    and unwrapping.
    
    * Update private impl in Travis config