Lisp/Numeri

Indice del libro

Il Lisp tratta in numeri solo quando li valuta nella funzione eval (da evaluate, valutare) per il resto restano entità astratte senza un contenuto formale di tipo. Si possono mettere insieme numeri di notazione diversa ed eseguire calcoli tra di loro, si possono creare funzioni che calcolano in modo ricorsivo e presentano la soluzione. In Lisp è stato progettato Mathlab il programma più evoluto di problem solving. Il Lisp per il suo polimorfismo dei tipi consente elaborazioni complesse di problemi matematici e rappresentazione grafiche dei risultati.
Operazioni semplici di addizioni di una lista di elementi numerici.

 > (+ 1 4 6 7)
 18

Operazioni su più elementi della lista con priorità date dalle parentesi

> (* (/ 7 6 ) (+ 4 (* 4 6)))
 98/3

Come possiamo notare il sistema ha variato la notazione per introduzione di una frazione (sette sesti)

 > (/ 1 2)
 1/2

Il meccanismo di calcolo ed il risultato sono perfettamente controllabili dal Lisp

 > (* (/ 1 2 ) 6)

Definiamo una semplice funzione per calcolare il quadrato

 > (defun pow2 (a)
        (* a a))

Ora definiamo la funzione per calcolare il cubo

 > (defun pow3 (a)
        (* a (pow2 a)))
 > (pow2 2)
 4
 > (pow3 2)
 8

Con questo sistema si possono creare funzioni per conversioni metriche ad es convertire metri in pollici

 > (defun mt2inch ( m )
       (/ m 0.0254))
 > (mt2inch .12716523)
 5.006505

Per calcolare funzioni complesse è un valido strumento interattivo adatto a trattare matrici o risolvere sistemi matematicamente complessi. Un esempio di utilizzo del lisp per la soluzione di equazioni metematiche e messa in grafica delle funzioni è riconducibile allo sviluppo di prodotti come Maxima derivato dallo sviluppo di Macsyma iniziato al MIT negli anni 80. Un Tutorial in italiano di maxima lo trovate qui