: free-vars ( form -- vars ) { { [ lambda? ] [ [ body>> free-vars ] [ vars>> ] bi diff ] } { [ quotation? ] [ [ free-vars ] map flatten ] } { [ local-writer? ] [ "local-reader" word-prop 1array ] } { [ lexical? ] [ 1array ] } { [ quote? ] [ local>> 1array ] } { [ drop t ] [ drop { } ] } } 1cond prune ;