Hlavní navigace

Názor k článku Programovací jazyk Clojure 15: tvorba uživatelských maker od Goheeca - Důležité je nejdřív si uvědomit, že lispová makra...

  • Článek je starý, nové názory již nelze přidávat.
  • 18. 9. 2012 18:19

    Goheeca (neregistrovaný) 213.192.1.---

    Důležité je nejdřív si uvědomit, že lispová makra získávají lispový kód jako data a mají k dispozici celý CL k tomu, aby ty data (kód) přetvořily na kód, který je následně vyhodnocován. A pak bych odkázal třeba na anaforická makra, kde je na alambdě pěkně vidět jak to funguje (máme anonymní funkci, v které chceme používat rekurzi, ovšem samotná lambda to neumožnuje, tak to vylepšíme ...).
    Pro trknutí:

    (defmacro print-me ((&whole w &rest r))
      (print w)
      r)

    Použití:

    (print-me (+ 1 2 3))
    (print-me (print "Ahoj"))

    V druhém případě je pak vidět, že nedochází k dvojnásobnému vyhodnocování.