2015-07-29 13 views
6

Sto imparando il racket (ma probabilmente la risposta sarà simile in qualsiasi schema e linguaggio derivato dallo schema) e mi chiedo come filtrare i valori falsi (#f) da un dato elenco. Il migliore che ho trovato è:Come filtrare i falsi valori dall'elenco nella racchetta

(filter (lambda (x) 
      (not (eq? x #false))) 
     '("a" "b" #f 1 #f "c" 3 #f)) 

'("a" "b" 1 "c" 3) ;; output 

Tuttavia, suppongo che ci sia una soluzione più semplice.

risposta

8

si può solo fare

(filter identity '("a" "b" #f 1 #f "c" 3 #f)) 

come tutto ciò che non è considerato #f vero.

+7

Inoltre, potresti vedere il codice Racket che utilizza 'valori' invece di' identità' (ad esempio quando qualcuno sta usando '#lang racket/base' e ​​non vuole' (richiede racket/funzione) 'solo per ottieni 'identità'). –

Problemi correlati