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.