Mostra notizie nelle discussioni
  • Avatar
    Scritto da
    Non Autenticato
    il 2008-06-25 21:03:00.0 alle 2008-06-25 21:03:00.0
    domanda per sassofono
    che differenza c'è tra

    (lambda (x y) (+ x y))

    e

    #'(lambda (x y) (+ x y))

    ??
    • Avatar
      ☺
      Scritto da
      avvelentani
      Cubicolario
      il 2008-06-25 21:18:00.0 alle 2008-06-25 21:18:00.0
      Trollate totali: 18184
      Re: domanda per sassofono

      - Scritto da:
      > che differenza c'è tra
      >
      > (lambda (x y) (+ x y))
      >
      > e
      >
      > #'(lambda (x y) (+ x y))
      >
      > ??

      In pratica nessuna.

      La sintassi lambda serve a creare una funzione anonima, in senso letterale, deve stare al posto di un nome di funzione. Esempio:

      ((lambda (x y) (+ x y)) 2 3)

      e` valido. Come per tutti i nomi di funzione per ottenere la funzione da loro riferita (e ad esempio passarla come argomento) bisogna usare lo special-form (function) o un function quote: #'.

      Dato che nella maggioranza degli usi non ti serve un 'nome di funzione' ma una funzione la libreria standard (chiamiamola cosi`, anche se e` improprio) definisce anche la macro 'lambda' che in pratica espande

      (lambda ...)

      in

      (function (lambda ...))

      di conseguenza scrivere (lambda ...) o scrivere #'(lambda ...) e` la stessa cosa fa sempre la cosa giusta.
      I think happiness is love
      - Vladimir Putin
<softv>

Pagina generata in 76 millisecondi

Utenti attivi: 11 nell'ultimo minuto, 30 negli ultimi cinque minuti, 59 negli ultimi 15 minuti