Commit Graph

383 Commits

Author SHA1 Message Date
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
Stephen Chang
2da260d1f9 refactor mlish tests; parallize run-all-mlish-tests somewhat 2016-03-28 19:30:22 -04:00
Stephen Chang
05969628ff add another polyrecur example 2016-03-28 17:51:23 -04:00
Stephen Chang
92b1f8ec45 add implicitqueue tests to polyrecur.mlish 2016-03-28 17:26:30 -04:00
Stephen Chang
5e1d3f1e22 mlish: suppot polymorphic recursion 2016-03-28 17:11:38 -04:00
Stephen Chang
e9a4a9f1dd add bens tests to run-all-mlish 2016-03-23 18:33:19 -04:00
Stephen Chang
cdd169381f Merge branch 'mlish-examples' of bitbucket.org:stchang/macrotypes 2016-03-23 13:31:12 -04:00
Stephen Chang
4320b24267 readme update 2016-03-23 12:15:47 -04:00
Stephen Chang
a6275ff568 add main readme 2016-03-23 12:11:03 -04:00
Stephen Chang
94a286fe7d move old files to old dir 2016-03-23 12:05:51 -04:00
Stephen Chang
06bed29150 add small test to result.mlish 2016-03-23 11:59:24 -04:00
ben
7dca7d4966 [bg] lambda calculus interpreter 2016-03-23 01:25:26 -04:00
ben
05df033790 [bg] huffman trees 2016-03-23 01:25:22 -04:00