Commit Graph

681 Commits

Author SHA1 Message Date
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
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
Eli Barzilay
6b7c199326 * Some reorganization of code
* Rename `make-repeated-sequence-generator' -> `sequence->repeated-generator'
* Several tests for `sequence->generator'

svn: r17586
2010-01-09 04:45:39 +00:00
Jon Rafkind
a0ba9a7649 add sequence->generator and change make-repeated-sequence-generator to use that instead of infinite-generator
svn: r17583
2010-01-08 22:02:42 +00:00
Matthew Flatt
d1e979c4c5 check arguments of scheme/math functions (PR 10197)
svn: r17565
2010-01-08 13:50:21 +00:00
Jon Rafkind
db44bb9e7a add infinite-generator and make-repeated-sequence-generator
svn: r17559
2010-01-07 23:23:56 +00:00
Jon Rafkind
db6a9de7ed add 'infinite' generator
svn: r17552
2010-01-07 21:53:37 +00:00
Eli Barzilay
220801c80c typo in error message
svn: r17526
2010-01-07 03:39:33 +00:00
Eli Barzilay
39595d2d05 faster version of the code
svn: r17525
2010-01-07 03:38:23 +00:00
Matthew Flatt
41261c6047 fill out fl and fx operations; repair fixnum-overflow bug in quotient
svn: r17524
2010-01-07 03:30:33 +00:00
Robby Findler
ccacf5a651 svn: r17509 2010-01-06 21:25:00 +00:00
Robby Findler
d014e0d0d8 improved along the lines of Eli's suggestions
svn: r17507
2010-01-06 21:22:29 +00:00
Robby Findler
c8410ef36d svn: r17506 2010-01-06 21:16:49 +00:00
Robby Findler
68efb4008a normalized the results of procedure-arity
svn: r17504
2010-01-06 19:34:29 +00:00
Sam Tobin-Hochstadt
a45c788749 remove useless code
svn: r17496
2010-01-06 16:52:07 +00:00
Sam Tobin-Hochstadt
ac9d2d8d9e Support prefab struct literals in quasipatterns.
Fixes PR 10050.

svn: r17495
2010-01-06 16:41:17 +00:00
Sam Tobin-Hochstadt
b802c7dfd0 Fix PR 10140
svn: r17473
2010-01-04 01:12:58 +00:00
Matthew Flatt
1dec25d99d remove stx-cert transparency on scheme/base lambda expansion
svn: r17471
2010-01-03 18:06:52 +00:00
Matthew Flatt
38d7e8fea2 built-in fixnum ops; bug fix related to misuse of flonum ops; questionable attempt to improve inlining algorithm
svn: r17461
2010-01-02 16:33:28 +00:00
Matthew Flatt
2200ef17f5 fix problem with expansion to lambda in class form; better certficate transparency in splicing-let forms
svn: r17436
2009-12-30 12:35:21 +00:00
Robby Findler
195d608fe5 added scheme/fixnum
svn: r17391
2009-12-23 15:41:40 +00:00
Eli Barzilay
6daf99c7bf added keywords: to the custom _fun thing
svn: r17378
2009-12-21 08:52:44 +00:00
Eli Barzilay
8ce4e110e6 better names for keyword functions (avoid possible confusion)
better error

svn: r17377
2009-12-21 08:05:48 +00:00
Eli Barzilay
1530411d94 better organization for keyword parsing in _fun
svn: r17376
2009-12-21 08:00:33 +00:00
Eli Barzilay
add4f479c6 fix error
svn: r17375
2009-12-21 06:25:53 +00:00
Eli Barzilay
f1e17c7b5b svn: r17374 2009-12-21 05:47:20 +00:00
Stevie Strickland
fb85388288 Add this%, which is the class counterpart of the object reference "this".
svn: r17359
2009-12-19 20:56:40 +00:00
Matthew Flatt
fdd7122994 scheme/flonum (v4.2.3.8)
svn: r17348
2009-12-18 15:40:00 +00:00
Matthew Flatt
87f05fed95 add #:save-errno option for foreign-function types
svn: r17299
2009-12-14 23:52:23 +00:00
Matthew Flatt
294e593dd2 fix overly pessimistic 'in-naturals' when an argument is supplied
svn: r17292
2009-12-14 17:51:36 +00:00
Sam Tobin-Hochstadt
e7e34f304c Add match/derived' and match*/derived'.
Use `syntax-parse' to implement most of the match forms.
Avoid generating so much extraneous intermediate forms.
Add `go/one' for handling of `match'.
Make `cert' argument to `go' optional.

svn: r17281
2009-12-13 03:20:32 +00:00
Sam Tobin-Hochstadt
046c21b2ae Make `make-provide/contract-transformer' available. To be used in
Typed Scheme's `provide'.
Signed-Off-By: sstrickl

svn: r17280
2009-12-13 03:17:51 +00:00
Sam Tobin-Hochstadt
fde17c1567 Provide more information in `hash/c' error messages.
Signed-Off-By: sstrickl

svn: r17279
2009-12-13 03:17:05 +00:00
Sam Tobin-Hochstadt
c8c9bd0556 Add `in-bytes-lines'
svn: r17261
2009-12-10 17:01:53 +00:00
John Clements
357b8cb90b changed error message to include sizes
svn: r17246
2009-12-09 06:06:56 +00:00
Jay McCarthy
b26bdba77d Found a small error in in-port's handling of default arguments
svn: r17244
2009-12-08 22:50:43 +00:00
Eli Barzilay
1a12497bc1 optimize insertionsort: one less loop variable, one more addition, unconditional first step
svn: r17227
2009-12-06 09:11:47 +00:00
Eli Barzilay
9cc6cd0db4 moved extra promise types back to scheme/promise
svn: r17207
2009-12-05 09:28:41 +00:00
Eli Barzilay
4df0d11db5 promise code moved to scheme/private
svn: r17205
2009-12-05 09:07:17 +00:00