Stevie Strickland
9c22701bd3
Take dcon-dotteds and create an appropriate i-subst/dotted entry.
2010-06-21 18:30:29 -04:00
Stevie Strickland
3f7ca52e37
Add fixed part to dcon-dotted.
2010-06-21 18:30:29 -04:00
Sam Tobin-Hochstadt
339add9f78
Implement substitutions as hash tables from vars to subst-rhs.
...
- add convenience function for generating substitutions
- give trivial substitution for unreferenced index variables
2010-06-21 18:30:28 -04:00
Sam Tobin-Hochstadt
44d46e4cd7
Refactor substitution.
...
- new file types/substitute
- use structs for substitutions
2010-06-21 18:30:28 -04:00
Sam Tobin-Hochstadt
8990459be6
provide more information in inference failures
2010-06-21 18:30:27 -04:00
Sam Tobin-Hochstadt
692dc025c0
fix fail! to use the correct arguments
2010-06-21 18:30:27 -04:00
Sam Tobin-Hochstadt
9f99c914f3
Fix move-to-dmap functions
2010-06-21 18:30:27 -04:00
Stevie Strickland
b5d4d54d45
The initial shot at extending cgen and friends to take both X and Y.
...
This doesn't fully work, in that more test cases are broken. However,
this is mostly due to questionable inference rules in the past, and
so fixing these errors should lead to a more correct inference algorithm.
(i.e. we need to handle things like (List X ... a) (List Y .. b),
where a and b are not the same bound. We'd started this work before,
but never actually gone through with it, since smashing regular and
dotted type variables into the same environment meant some things
magically worked when they possibly shouldn't have.)
2010-06-21 18:30:26 -04:00
Stevie Strickland
078b57c77d
Export the types provide macro.
2010-06-21 18:30:26 -04:00
Stevie Strickland
ec09139e0a
Fix up subst-gen to treat vars and idxs separately.
2010-06-21 18:30:26 -04:00
Sam Tobin-Hochstadt
d886331807
Various small assorted fixes.
2010-06-21 18:30:25 -04:00
Sam Tobin-Hochstadt
82e7d281cb
More progress on refactoring infer
2010-06-21 18:30:25 -04:00
Sam Tobin-Hochstadt
18f45c4138
Fix a bunch of uses of `infer' et al.
2010-06-21 18:30:25 -04:00
Sam Tobin-Hochstadt
99e499a503
Change inference to take into account index vs regular vars.
2010-06-21 18:30:24 -04:00
Sam Tobin-Hochstadt
e8a591d291
Fix free index computation when the body refers to the bound.
2010-06-21 18:30:24 -04:00
Sam Tobin-Hochstadt
662f982b72
Refactor free variables.
...
- free-idxs no longer holds free de Bruijn indexes
This information is not needed, and not stored anywhere
- free-idxs holds free *index* variables, in the sense of the TOPLAS submission
2010-06-21 18:30:24 -04:00
Sam Tobin-Hochstadt
fe9395fdbf
Add case to be fixed
2010-06-21 18:30:23 -04:00
Sam Tobin-Hochstadt
b787c7766c
Switch to using functional hash tables for free variables.
2010-06-21 18:30:23 -04:00
Sam Tobin-Hochstadt
a93aecbed7
Special case for (apply values ListDots)
2010-06-21 18:30:20 -04:00
Sam Tobin-Hochstadt
12384c6c3f
Change type variable environments from hash tables to sets.
2010-06-21 18:29:59 -04:00
Sam Tobin-Hochstadt
d570006db8
Add index-env.
...
- Remove Dotted and DottedBoth values from tvar-env
- Abstract env extension and lookup for tvar/index-env
- Abstract index inference
- Remove pointless parameterizations
2010-06-21 18:29:58 -04:00
Sam Tobin-Hochstadt
0fb1ac66bd
Properly compute Dotted variance for ListDots and ValuesDots.
2010-06-21 18:29:58 -04:00
Sam Tobin-Hochstadt
a9c34dae6a
Remove dotted-env.
2010-06-21 18:29:58 -04:00
Sam Tobin-Hochstadt
f7b59f78e9
Generalize ListDots to Listof in inference of loop var types.
2010-06-21 18:29:58 -04:00
Sam Tobin-Hochstadt
a2af89bafd
Inference for passing ListDots as Listof.
2010-06-21 18:29:57 -04:00
Sam Tobin-Hochstadt
fd5a662ccc
Subtyping between (List T ... a) and (Listof T[Any/a])
2010-06-21 18:29:57 -04:00
Sam Tobin-Hochstadt
4c3f279ab9
Eliminate expressions with dotted pre-types.
...
- Now looks for (List T ...) types.
- special handling of `map', `andmap', `ormap' when list arg is dotted
- remove tc-dots-unit
2010-06-21 18:29:57 -04:00
Sam Tobin-Hochstadt
4cbeb0b2f0
Change type of ... rest args to have (List T ...) types.
2010-06-21 18:29:56 -04:00
Sam Tobin-Hochstadt
71939d2826
Handle simple inference of ListDots.
2010-06-21 18:29:56 -04:00
Sam Tobin-Hochstadt
310bdf3529
Substitution for (List T ...)
2010-06-21 18:29:56 -04:00
Stevie Strickland
62fb6f9311
Add subtyping for dotted lists with the same bound.
2010-06-21 18:29:55 -04:00
Sam Tobin-Hochstadt
40dbb6389c
First attempts at adding ListDots (and, incidentally, List*) types.
2010-06-21 18:29:55 -04:00
Sam Tobin-Hochstadt
50f93b9ed7
More environment refactoring.
...
- rationalize naming of files
- split files by env constructed
2010-06-21 18:29:55 -04:00
Sam Tobin-Hochstadt
7e9763cf14
Stratify environments to only include props when needed.
2010-06-21 18:29:54 -04:00
Sam Tobin-Hochstadt
647c4eef59
Refactor environments.
...
- mapping stored as dict
- use id tables for identifiers
- use env-filter instead of filter
- eliminate spurious use of conses
2010-06-21 18:29:54 -04:00
Sam Tobin-Hochstadt
4925e7e51f
Refactor provide handling.
...
- use id-tables instead of lists
- smarter iteration
- prepare for eliminating declarations when not needed, but don't do it yet
2010-06-21 15:42:52 -04:00
Stevie Strickland
0aae2c866f
Fix use of add-type-expr from commit 5d835ded
.
2010-06-19 14:58:52 -04:00
Sam Tobin-Hochstadt
1e15ce1f32
Fix error message for 1-arg apply
2010-06-19 14:58:52 -04:00
Vincent St-Amour
1e2c50ec24
Fix to make-vector's type.
2010-06-18 20:24:17 -04:00
Vincent St-Amour
5e901b9ef2
The optimizer now promotes integers to floats when they are used as
...
arguments to a function whose result is a float.
2010-06-18 17:43:05 -04:00
Vincent St-Amour
5d835ded47
Added the type of the 1 literals in expressions of the form (- x 1) to
...
the type table.
2010-06-18 17:43:05 -04:00
Vincent St-Amour
ecb614849c
Added type signatures for some byte-string functions.
2010-06-18 17:43:03 -04:00
Vincent St-Amour
60c3067ddb
Turned indexing back to using integers rather than naturals.
2010-06-18 17:43:02 -04:00
Vincent St-Amour
b39f686e7e
Fixed the type of unsafe-car and unsafe-cdr.
2010-06-17 19:06:24 -04:00
Vincent St-Amour
07c1f1e94f
Added types for some bitwise operations.
2010-06-17 19:06:24 -04:00
Vincent St-Amour
cc796a9f9a
Added types for thread mailbox operations.
...
Can't have typed mailboxes, though.
2010-06-17 18:45:28 -04:00
Vincent St-Amour
c4e035dd67
Got rid of a reference to the non-existent channel/c.
2010-06-17 18:45:28 -04:00
Sam Tobin-Hochstadt
02238a7c6d
Fix contract for structs
2010-06-17 15:26:13 -04:00
Sam Tobin-Hochstadt
0262ef681a
handle multiple body expression properly
2010-06-17 12:50:30 -04:00
Sam Tobin-Hochstadt
77e4bbb5eb
base-types-new -> base-types
2010-06-17 11:47:16 -04:00