common-lisp Ciao mondo


Esempio

Quello che segue è un estratto da una sessione REPL con Common Lisp in cui un "Hello, World!" la funzione è definita ed eseguita. Vedere le note in fondo a questa pagina per una descrizione più approfondita di un REPL.

CL-USER> (defun hello ()
           (format t "Hello, World!~%"))
HELLO
CL-USER> (hello)
Hello, World!
NIL
CL-USER> 

Questo definisce la "funzione" di zero argomenti denominata hello , che scriverà la stringa "Hello, World!" seguito da una nuova riga sullo standard output e restituire NIL .

Per definire una funzione scriviamo

(defun name (parameters...)
  code...)

In questo caso la funzione è chiamata hello , non richiede parametri e il codice che esegue è quello di effettuare una chiamata di funzione. Il valore restituito da una funzione lisp è l'ultimo bit di codice nella funzione da eseguire in modo che i ritorni di hello qualsiasi (format t "Hello, World!~%") Restituiscano.

In lisp per chiamare una funzione si scrivono (function-name arguments...) dove function-name è il nome della funzione e arguments... è l'elenco degli argomenti (separati da spazi) della chiamata. Ci sono alcuni casi speciali che assomigliano a chiamate di funzioni ma, ad esempio, nel codice precedente non c'è alcuna funzione di defun che viene chiamata, viene trattata in modo speciale e definisce una funzione.

Al secondo prompt del REPL, dopo aver definito la funzione hello , la chiamiamo senza parametri scrivendo (hello) . Questo a sua volta chiamerà il format funzione con i parametri t e "Hello, World!~%" . La funzione format produce output formattati in base agli argomenti che vengono forniti (un po 'come una versione avanzata di printf in C). Il primo argomento dice che dove output, con t che significa standard output. Il secondo argomento indica cosa stampare (e come interpretare eventuali parametri aggiuntivi). La direttiva (codice speciale nel secondo argomento) ~% indica al formato di stampare una nuova riga (ovvero su UNIX potrebbe scrivere \n e su windows \r\n ). Il formato di solito restituisce NIL (un po 'come NULL in altre lingue).

Dopo il secondo prompt vediamo che Hello, World è stato stampato e nella riga successiva che il valore restituito era NIL .