Sto leggendo qualche codice Clojure al momento che ha un gruppo di valori non inizializzati come nil
per un valore numerico in un record che viene passato in giro.Esiste un'alternativa idiomatica alla punzonatura zero in Clojure?
Ora molte delle librerie Clojure treat this as idiomatic. Ciò significa che è una convenzione accettata.
Ma porta anche a NullPointerException
, perché non tutte le funzioni principali di Clojure possono gestire un nil
come input. (Né dovrebbero).
Altre lingue hanno il concetto di Maybe
o Option
per delega il valore nel caso in cui esso è nullo, come un modo di mitigare il rischio NullPointerException
. Questo è possibile in Clojure - but not very common.
È possibile eseguire alcuni trucchi con fnil
ma non risolve tutti i problemi.
Un'altra alternativa è semplicemente impostare il valore non inizializzato su un simbolo come :empty-value
per forzare l'utente a gestire questo scenario in modo esplicito in tutto il codice di gestione. Ma questo non è davvero un grande passo in avanti da nil
- perché in realtà non si scoprono tutti gli scenari (nel codice di altre persone) fino al momento dell'esecuzione.
La mia domanda è: Esiste un'alternativa idiomatica alla punzonatura nullo in Clojure?