Commit Graph

495 Commits

Author SHA1 Message Date
AlexKnauth
1ca2ece9df use add-constraints for type unification
fixes issue #20
2016-05-11 13:50:27 -04:00
AlexKnauth
d2b4df3a94 don't give empty foralls to functions 2016-05-11 13:50:27 -04:00
AlexKnauth
e243ee0656 add ?∀ and ?Λ 2016-05-11 13:50:26 -04:00
AlexKnauth
95d960267a test the example that would have been unsound 2016-05-10 14:35:05 -04:00
AlexKnauth
c9110ccf73 don't make new foralls for under-constrained function applications
Fixes the unsoundness mentioned in
https://bitbucket.org/stchang/macrotypes/issues/16/allow-under-constrained-function#comment-27692493
by disallowing under-constrained function calls entirely.
This re-opens issue #16, which will have to be solved in a sound way later.
2016-05-10 14:05:53 -04:00
AlexKnauth
1e68e32ecc refactor solve to return a substitution 2016-05-05 14:16:25 -04:00
AlexKnauth
9920c5791d modify #%app to deal with under-constrained function applications
fixes #16
2016-05-05 14:16:25 -04:00
Stephen Chang
5b64b3b042 lift out version consts for checking preserved prop 2016-05-05 14:06:10 -04:00
Stephen Chang
9308677b2a run-all-mlish-tests script: use find-system-path 2016-05-03 14:40:22 -04:00
Stephen Chang
33e39c5e96 abstract and cleanup run-all-mlish-tests script 2016-05-03 14:22:58 -04:00
Stephen Chang
64d1bc9a48 add extra nested lambda test cases 2016-05-03 13:54:40 -04:00
AlexKnauth
7acbfefa71 remove unnecessary annotations 2016-05-02 16:47:15 -04:00
AlexKnauth
59b0ad3d3a allow unannotated lambdas
in cases where the expected type has enough information, and propagate
the expected type in those cases.
2016-05-02 15:11:12 -04:00
AlexKnauth
95a7fb87f8 add ~?∀ for matching possibly polymorphic types 2016-05-02 14:29:51 -04:00
AlexKnauth
9b171fd62e use (current-join) in cond, match, and match2
- update match2 error message tests
- fixes #12
2016-05-02 13:56:48 -04:00
AlexKnauth
44c63e4171 mark syntax properties as preserved 2016-04-28 16:46:30 -04:00
AlexKnauth
92d2fe585a handle #f and #<syntax #f> expected types 2016-04-21 11:02:26 -04:00
Stephen Chang
579815512e for/fold produces better err msg 2016-04-20 19:18:33 -04:00
Stephen Chang
ce1bc6b90f fix continuation marks src in type-error 2016-04-20 17:50:05 -04:00
Stephen Chang
1fc2b3f538 change current-join to throw error on fail
- returns join type on success
2016-04-20 15:42:52 -04:00
Stephen Chang
9b9c1dda96 datatype constructors are functions 2016-04-20 14:12:43 -04:00
Stephen Chang
b439327d78 define-type automatically defines accessors and predicates for record variants 2016-04-20 13:51:05 -04:00
Stephen Chang
51f9008b99 fix bug in reuse to avoid conflict with ids that happen to use the same prefix 2016-04-19 16:06:09 -04:00
Stephen Chang
c64251cac0 infer quantified type variables in the order that they occur (L-to-R)
- backwards incompatible change: quantified type variables no longer sorted lex
- fix and add tests, remove some annotations in tests
- small speed improvement due to eliminating some extra expansions
- closes #9, closes #11
2016-04-19 15:10:07 -04:00
Stephen Chang
29be57dffe use stx->list, closes #10 2016-04-19 12:27:09 -04:00
Stephen Chang
0846a86f24 minor cleanup: add compute-tyvars 2016-04-18 18:22:36 -04:00
AlexKnauth
61f4304085 srcloc for typecheck-fail 2016-04-14 15:35:15 -04:00
Stephen Chang
d2749db6d6 fix the order of inferred tyvars in fn defs
- remove some more unneeded type annotations in tests
2016-04-13 19:32:15 -04:00
Stephen Chang
5c28501236 add some type validation in define-type 2016-04-13 18:03:49 -04:00
Stephen Chang
6cb15a06da code cleanup 2016-04-13 15:14:57 -04:00
Stephen Chang
8a36c7962b revise extra-info to handle mutually recursive datatypes
- define extra-info as a separate macro whose input is the types
  in the tycon
  - extra-info in main tycon is just the name of the extra-info macro
  - extra-info macro is expanded only when extra-info is requested
  - naturally handles additional tyvar substs in the types
  - breaks the recursion to avoid inf loops for recursive and mutually recursive
    datatypes
  - enables simplification of direct recursive datatypes
    - no longer need subst-special
    - performance is much improved (okasaki: ~1min, was ~4min)
2016-04-13 14:00:20 -04:00
Stephen Chang
5c3d0edb5e remove unneeded type annotations in okasaki tests 2016-04-11 16:09:40 -04:00
ben
0bd1962650 [bg] add Okasaki data structures
- all queues: batched, bankers, physicists, hood-melvile, bootstrapped, implicit
- deques: bankers, simple catenable
- random access lists: binary, skew, alt binary
- upcoming: heaps, sets, finite maps
- excluded: catenable lists and deques
2016-04-11 15:17:41 -04:00
Stephen Chang
26a2699d48 fix match expected-type propagation to non-datatype clauses
- closes #8
2016-04-11 14:53:45 -04:00
Stephen Chang
2a9005a31d remove spurious type annotations in tests
- not needed bc rackunit-typechecking now adds expected-type
2016-04-11 14:22:35 -04:00
Stephen Chang
fdf902121e fix more stx-parse err msgs; and other err msgs
- all tests now passing
2016-04-11 14:01:24 -04:00
Stephen Chang
ced8a1affc add trees-tests file 2016-04-11 13:56:54 -04:00
Stephen Chang
73e59ddec7 workaround syntax-parse error msg regressions
- just throw explicit type-error exn instead of relying on #:fail-when etc
- run-all-tests passing
2016-04-06 17:15:20 -04:00
Stephen Chang
01a0bb28a7 improve rackunit-typechecking
- speed up by eliminating duplicate expansion in check-type
- use given type annotation as expected-type
  - eliminates unneeded type annotations
2016-04-06 17:10:46 -04:00
Stephen Chang
1167407cfe fix type constructor arity err causing inf loop
- lambda now supports (implicit) polymorphic type annotations
- (unrelated to this commit) many tests seem to be failing due to a
  slight change in err msg
2016-04-05 10:55:02 -04:00
Stephen Chang
a0f4d9e3a9 eliminate dup expansion of some args in mlish #%app 2016-04-05 00:14:43 -04:00
Stephen Chang
33e17dd282 mlish code cleanup
- datatype constructors use same mechanisms as #%app
 - eliminates duplication of inference and instantiation code
- #%app's handling of expected type is no longer separate from unification
  of argument types
 - eliminates redundant expansions
 - speeds up tests ~10-20sec
 - fn args are still possibly double-expanded
2016-04-04 19:07:36 -04:00
Stephen Chang
8731401318 start match2 exhaustiveness checking; nested checks not quite working 2016-04-01 17:08:48 -04:00
Stephen Chang
d5435eb71b fix match2 bug with nested user-defined datatypes 2016-03-30 23:25:24 -04:00
Stephen Chang
e9290629da fix a few err msg issues
- add working monad example
- closes #7
2016-03-30 16:12:11 -04:00
Stephen Chang
d881d988c2 fix and enhance match2
- compiles to racket match patterns (but still typechecks)
  - supports nested patterns
- no exhastiveness checking
- no parens required for root pattern
  (except for comma tup stx)
- support _ else case
- always no parens for 0-arity constructors
  - both user-defined and built-in (like nil)
- alternative :: cons stx
- alternative comma --- (x,y,z) --- tuple stx
  - requires at least 1 comma to detect

- see examples in match2.mlish
2016-03-30 13:51:22 -04:00
Stephen Chang
fca145bbd7 start match2, with support for nested matches --- dont use yet 2016-03-29 17:14:47 -04:00
Stephen Chang
ab1703e2d6 refactor match; add match support for built-in lists
- remove some redundant expansions
2016-03-29 13:55:21 -04:00
Stephen Chang
512d3fb378 update bg/README 2016-03-29 12:34:46 -04:00
Stephen Chang
6815bd9127 fix some file extensions for mlish tests 2016-03-28 19:37:23 -04:00