Commit Graph

738 Commits

Author SHA1 Message Date
Stevie Strickland
eea685c1cf I didn't fix object-contract from mzlib/contract, just from scheme/contract.
I don't plan on fixing the former at the moment, so I'll just add back these
two accessors so that it's happy.

svn: r18144
2010-02-18 04:22:45 +00:00
Stevie Strickland
fa5ed2c160 Fix object-contract's first-order property to do some reasonable first-order
checking, instead of always failing.

svn: r18121
2010-02-17 19:09:49 +00:00
Stevie Strickland
35afebaea3 Change object-contract to use find-method/who (already exported for Typed
Scheme) to look for the appropriate method to wrap, which makes Robby's
object-contracts appropriately translucent during contract wrapping.

svn: r18102
2010-02-16 19:58:07 +00:00
Matthew Flatt
6f0d6b28de some mz and ffi changes from the mr2 branch
svn: r18099
2010-02-16 17:55:28 +00:00
Matthew Flatt
aad22e2c3e restore scheme/future
svn: r18032
2010-02-09 17:19:58 +00:00
Robby Findler
e581ac7bfd made room for some tests in here and added them
svn: r18028
2010-02-09 14:53:09 +00:00
Carl Eastlund
fe40d3e888 Merged changes from trunk.
svn: r18007
2010-02-06 19:23:24 +00:00
Eli Barzilay
0725ba7608 Reformat
svn: r17988
2010-02-05 03:22:26 +00:00
Eli Barzilay
2cc4429c62 When constructing code, use the `object-name' of the input port *only*
if it's coming from a file -- not when it's a string.  In that case, use
`#f' for the name, so other code (specifically, `input->code') will use
'program.

svn: r17987
2010-02-05 03:22:23 +00:00
Eli Barzilay
a4954b774d Use optional arguments instead of `case-lambda'.
svn: r17986
2010-02-05 03:22:21 +00:00
Eli Barzilay
536d0266df Use unsafe operations in `sort'. It has been running in safe mode for a
while with no errors reported, and this change is done now when there's
time before the next release.

svn: r17985
2010-02-05 03:22:17 +00:00
Eli Barzilay
2368290cdb Test now that the generator is not in a running state when it's called.
The previous problem was just a bug.

svn: r17984
2010-02-05 03:22:15 +00:00
Eli Barzilay
d5822a3ee5 Remove the special case hack for getting zero values at the end of a
generator.  This will make this:

  (generator (yield 1) (yield))

also repeat #<void> when it's done which will be very confusing.  Better
just add a note in the docs on (generator (yield 1)) returning no values
when it's done.

Also, remove some of the `case-lambda' optimizations...

svn: r17983
2010-02-05 03:22:12 +00:00
Eli Barzilay
3a08648dab Added a `running' state, which is visible only from inside the
generator.  (Also considered making it an error when the generator is
called while it is running, but that doesn't allow (yield (yield X))
fun.)

svn: r17982
2010-02-05 03:22:09 +00:00
Eli Barzilay
2f62cb192e Allow using `yield' with any number of arguments which will be returned
as multiple values.  (These `case-lambda's are for making it fast, which
is probably stupid given how slow this is anyway.)

svn: r17981
2010-02-05 03:22:07 +00:00
Eli Barzilay
f1dcf49d38 Added `generator-state', implemented using a local state (which also
simplifies the code that raises an error from the last change).

svn: r17980
2010-02-05 03:22:04 +00:00
Eli Barzilay
505034ea26 The generator function can now be used to send values to the generator.
For example,

  (define g (generator (yield (yield (yield 1)))))
  (list (g) (g 2) (g 3) (g 4) (g) (g))

evaluates to '(1 2 3 4 4 4).  This is something that Python does (as a
generator.send method), which might be useful for using generators as
co-routines, and it is actually easy to implement since sending values
is exactly what we get when the generator call is actually calling the
saved continuation.  So most of the change is dealing with the
technicalities of throwing an error when the generator is called with
some arguments, when that's done after it's terminated (at the stage
where it's repeating the last value for ever).

A few tests added for this.

svn: r17979
2010-02-05 03:22:01 +00:00
Eli Barzilay
18c8e41fac Make it possible for the last expression in the body of a generator to
return any number of values.  They will be collected and used as the
repeat-forever result of calling the generator again.

Note: there's an exception for using no values -- instead of returning
no values forever, use void, since no values can be more surprising, and
it can happen when someone uses something like

  (generator (yield 1) (yield 2) (yield 3))

since the result of `yield' is (values).  (This will change in a
following commit, but even then it will be popular since people will
usually invoke the generator with no arguments which leads to the zero
values.  Could be solved if you use (g (void)) -- but that's awkward, I
think.)

svn: r17978
2010-02-05 03:21:59 +00:00
Eli Barzilay
c88a5a6856 A bunch of additional typos
svn: r17976
2010-02-05 03:21:52 +00:00
Carl Eastlund
2e64069d14 Re-disabled legacy (contract ...) form.
svn: r17960
2010-02-03 17:08:26 +00:00
Carl Eastlund
1d4cdbeb45 Exports from scheme/contract/private/blame: removed constructor; fixed confusing selector names.
svn: r17909
2010-01-31 03:03:30 +00:00
Carl Eastlund
d5329eb2a6 Make contract form more permissive; import make-blame.
svn: r17908
2010-01-31 01:48:08 +00:00
Carl Eastlund
bf308563d2 Hide make-blame; remove blame-positive and blame-negative; make blame objects transparent (but allow equal?).
svn: r17907
2010-01-31 01:47:48 +00:00
Carl Eastlund
f8df3608d4 Hide "make-blame" from normal export.
svn: r17906
2010-01-31 01:47:07 +00:00
Carl Eastlund
0e697067cb Uniformly "unpack" contract blame party names.
svn: r17904
2010-01-31 00:30:00 +00:00
Carl Eastlund
29b628cb0a Fixed legacy projections to allow 4 or 5 arguments.
svn: r17903
2010-01-31 00:29:37 +00:00
Carl Eastlund
7d577d9d02 Removed an unnecessary require.
svn: r17901
2010-01-30 21:45:52 +00:00
Carl Eastlund
2772ffccba Restored legacy functions for custom contracts.
svn: r17900
2010-01-30 21:14:27 +00:00
Carl Eastlund
2513e7d6e0 Merged changes from the trunk.
svn: r17892
2010-01-30 04:59:20 +00:00
Eli Barzilay
4cb01a48b3 only for programs
svn: r17835
2010-01-26 15:04:51 +00:00
Eli Barzilay
04725539c7 Propagate path to syntax source of evaluated files when applicable
Set `current-load-relative-directory' based on path when it names a directory.

svn: r17826
2010-01-25 21:02:15 +00:00
Carl Eastlund
7f58c26709 Replaced uses of quote-srcloc with quote-syntax.
svn: r17757
2010-01-19 23:25:07 +00:00
Carl Eastlund
791178a549 Fixed printing of blame error messages to use display and write appropriately.
svn: r17753
2010-01-19 09:28:28 +00:00
Carl Eastlund
51983e3829 Fixed simple-contract stronger check.
svn: r17752
2010-01-19 09:28:08 +00:00
Carl Eastlund
6a0469b680 Fixed detection of printable contracts in dependent struct contracts.
svn: r17751
2010-01-19 09:27:51 +00:00
Carl Eastlund
9506494416 Fixed a shadowed name
svn: r17743
2010-01-19 07:28:06 +00:00
Carl Eastlund
d01e61508f Fixed a blame assignment typo.
svn: r17741
2010-01-19 07:14:00 +00:00
Carl Eastlund
5d7774e7b2 Fixed test for procedure?, which now recognizes flat contracts, and typo for contract-projection.
svn: r17738
2010-01-19 05:59:47 +00:00
Carl Eastlund
4b739b5f62 Removed obsolete build-src-loc-string
svn: r17734
2010-01-19 03:43:00 +00:00
Carl Eastlund
3921e16aa1 Updated lingering use of old src-info format.
svn: r17732
2010-01-19 03:41:30 +00:00
Carl Eastlund
4de3ee3a9e Re-enabled 4-argument contract macro, and added more output to misuse messages.
svn: r17731
2010-01-19 03:41:03 +00:00
Carl Eastlund
2f2068356c Replaced mistaken #f with srcloc.
svn: r17730
2010-01-19 03:39:28 +00:00
Carl Eastlund
9fbf023d90 Took collection path simplification out of this file.
svn: r17729
2010-01-19 03:38:55 +00:00
Carl Eastlund
0edd786361 Removed more occurrences of old source info representation.
svn: r17724
2010-01-18 23:24:34 +00:00
Carl Eastlund
167c9cb1a8 Changed contract source locations to perform module resolution in advance.
svn: r17723
2010-01-18 23:11:12 +00:00
Carl Eastlund
54d5b0ac7f Updated predicate list in scheme/exists/lang based on contract library changes.
svn: r17721
2010-01-18 18:53:06 +00:00
Carl Eastlund
6ac7fe78e6 Ported object contracts to new properties.
svn: r17719
2010-01-18 18:32:26 +00:00
Carl Eastlund
1014dd2da4 Converted provide.ss to use new contract form and deference variable-reference.
svn: r17716
2010-01-18 17:05:06 +00:00
Carl Eastlund
124050d54e Converted current-contract-region to dereference variable-reference.
svn: r17715
2010-01-18 17:04:44 +00:00
Carl Eastlund
b0c93342d9 Fixed type error in source location conversion.
svn: r17714
2010-01-18 17:04:01 +00:00