▼ |  | Unstable

1 | Guidelines for developing unstable libraries
2 | Bytes
3 | Classes and Objects
4 | Contracts
5 | Definitions
6 | Dictionaries
7 | Directories
8 | Exceptions
9 | Filesystem
10 | Functions
11 | Lists
12 | Net
13 | Path
14 | PLane T Packages
15 | Ports
16 | Pretty-Printing
17 | Regular Expressions
18 | Requiring Modules
19 | Sandboxed Evaluation
20 | Scribble Documentation
21 | Sets
22 | S-Expression Diff
23 | Source Locations
24 | Strings
25 | Structs
26 | Syntax
27 | Planet Package Macros
28 | Text Representations
29 | Multiple Values
30 | XML and CSS
31 | Polymorphic Contracts
32 | Finding Mutated Variables
33 | Find
34 | Interface-Oriented Programming for Classes
35 | Sequences
36 | Hash Tables
37 | Match
38 | Generics
39 | Mark Parameters
40 | Debugging
41 | Contracts for macro subexpressions
42 | Contracts for struct type properties
43 | GUI libraries

On this page:

find-mutated-vars

Version: 5.0.2
top ← prev up next →

### 32`` Finding Mutated Variables

Sam Tobin-Hochstadt <samth@ccs.neu.edu>

( require unstable/mutated-vars )

This library is unstable; compatibility will not be maintained. See Unstable for more information.

( find-mutated-vars stx [dict]) → dict?
stx : syntax?
dict : dict? = ( make-immutable-free-id-table )

Traverses stx, which should be module-level-form in the sense of the grammar for fully-expanded forms, and records all of the variables that are mutated. Each mutated variable is added to dict, mapped to #t. If dict is mutable, as determined by dict-mutable?, then the table is updated destructively. Otherwise, the table is updated functionally.

Examples:
> ( define t ( find-mutated-vars #'( begin ( set! var 'foo) 'bar)))
> ( dict-ref t #'var #f)
#t
> ( dict-ref t #'other-var #f)
#f
> ( define tbl ( make-free-id-table ))
> ( find-mutated-vars #'( begin ( set! var 'foo) 'bar) tbl)
#<mutable-free-id-table>
> ( dict-ref tbl #'var #f)
#t

}
top ← prev up next →