Esistono prevalentemente due modi per definire le funzioni in Maxima, ovvero con **:=** oppure con il comando **define**. Il primo metodo, ovvero con **:=** è quello un po' meno affidabile, si faccia riferimento ad un esempio semplice, dove è stata definita la funzione //potenza//. {{ :wikipaom2017:1.png?400 |}} Definire una funzione con **:=** indica che la potenza è funzione di due argomenti, dove il primo verrà inserito nel segnaposto //base//, mentre il secondo sarà associato al segnaposto //esponente//. {{ :wikipaom2017:3.png?200 |}} Il problema che può nascere con questa definizione è dato dal fatto che la valutazione della funzione viene ritardata all'atto del passaggio dei due argomenti specifici; infatti se ora definissimo il valore del segnaposto //esponente//, la funzione non viene valutata con il valore passato in quanto il segnaposto ha cambiato nome in //b//. {{ :wikipaom2017:4.png?400 |}} La funzione **define** invece valuta la funzione immediatamente all'atto della definizione. {{ :wikipaom2017:5.png?400 |}} Andando a passare dei valori agli argomenti: {{ :wikipaom2017:6.png?200 |}} La differenza risulta lampante quando vario la funzione introducendo un termine //pippo// all'esponente: * Nel caso **:=**: {{ :wikipaom2017:8.png?400 |}} * Nel caso **define**: {{ :wikipaom2017:7.png?400 |}}