What is so special about the SICP eval-apply loop? What is so enlightening about it?

  • raevnos@alien.topB
    link
    fedilink
    English
    arrow-up
    1
    ·
    1 year ago

    Using a metacircular interpreter for lispy languages - one that implements the same language it’s written in, allows you to skip the often tedious parsing step by using the host’s read to give you a syntax tree, letting you skip to the interesting bits of manipulating and transforming that tree and executing it (eval-apply in sicp terminology). Those bits are foundational stuff for writing an interpreter or compiler for any language, which lots of people find to be interesting projects.

    • OkGroup4261@alien.top
      cake
      OPB
      link
      fedilink
      English
      arrow-up
      1
      ·
      1 year ago

      I meant what is so universal for all languages? People say that eval-apply loop is the core of every language.

    • lispm@alien.topB
      link
      fedilink
      English
      arrow-up
      1
      ·
      1 year ago

      allows you to skip the often tedious parsing step by using the host’s read

      READ mostly gives a tree of tokens. This makes it a form of a tokenizer. After we call READ we don’t know what the tokens mean: is FOO a variable, a macro, a function, a built-in special form, a type, … This can only be determined by interpreting/compiling the token tree.

  • timmem@alien.top
    cake
    B
    link
    fedilink
    English
    arrow-up
    1
    ·
    1 year ago

    All the above comments are true but I think to really get a feel for the impact of the read-eval-print loop (REPL) you gotta go back to 1965 and look at how people had to interact with every other language, except LISP. REPL offered an unprecedented level of interaction with a program