CrossClj
revue.interpreter/step
PROJECTS
revue
RECENT
    • (step {:keys [form env store cont value] :as state})
    Perform a single step of the interpreter and return a new state.
    
      Initially we pick off a few special cases:
    
      * If `form` is `nil` we check whether we have a non-empty
        continuation.  If we do, we continue with the first member of the
        continuation.  Otherwise we are done
    
      * If `form` is a symbol, we look up its value in the environment, 
        convert it into its denotation (i.e., the Clojure equivalent)
        and use that as the `:value` going forward.
    
      * If `form` is an atomic value, we leave it alone (since atomic
        values are always represented as their Clojure equivalent.
    
      * Otherwise we have a compound form.  The first thing we do in that
        case is to check whether it is a macro.  If it is, we expand it and
        return the expansion as new `:form` (not implemented yet).
        Otherwise, we check whether `:form` is a special operator.  If it is
        we evaluate it using a special rule.  If `form` is neither a macro
        nor a special operator it is a function call, and we evaluate the
        call.

    revue.interpreter/step found in 2 defs, across 1 project.

    Search for vars with similar names in all artifacts: step

    Search for step in the documentation of all artifacts.

    2 usages in
    revue 0.0.6
    REVUE: REVersible User Experiences