Re: [racket-dev] Announcing Soft Contract Verification tool
On 1/15/15 2:42 PM, David Van Horn wrote: > On 1/15/15, 2:13 PM, Asumu Takikawa wrote: >> On 2015-01-14 19:11:59 -0500, David Van Horn wrote: >>> If you have questions, comments, bugs, or any other feedback, let >>> us know, or just file bug reports on the GitHub source code. >> >> Nice tool! I like the web interface too. >> >> I was confused by this interaction though. Clicking verify on >> this: >> >> (module fact racket (define (factorial x) (if (zero? x) 1 (* x >> (factorial (sub1 x) (provide (contract-out [factorial (-> (>=/c >> 0) (>=/c 0))]))) >> >> gives me: >> >> Contract violation: 'fact' violates '>='. Value 0.105 violates >> predicate real? An example module that breaks it: (module user >> racket (require (submod ".." fact)) (factorial 0.105)) >> (Verification takes 0.05s) >> >> but the value 0.105 shouldn't violate the predicate real? I think. > > This is reporting that the fact module can break the contract on >= > when it uses >=/c; that's a bug in our modelling of >=/c, which we > currently have as: > > (define (>=/c n) > (lambda (m) > (>= m n))) > > But should be: > > (define (>=/c n) > (lambda (m) > (and (real? m) > (>= m n > > That said, if you change it to (and/c real? (>=/c 0)), it says there's > a counterexample of 2.0, but that's because we check contracts on > recursive calls (and should not). I misspoke on the issue of boundaries, which we had right, but there was another bug that's now fixed. We also fixed the >=/c implies real? bug. So to summarize, Asumu's program now verifies: (module fact racket (define (factorial x) (if (zero? x) 1 (* x (factorial (sub1 x) (provide (contract-out [factorial (-> (>=/c 0) (>=/c 0))]))) A slight variant that uses unsafe contracts will generate counterexamples causing fact to be blamed: (module fact racket (define (factorial x) (if (zero? x) 1 (* x (factorial (sub1 x) (provide (contract-out [factorial (-> (λ (x) (>= x 0)) (λ (x) (>= x 0)))]))) The counterexample is: (module user racket (require (submod ".." fact)) (begin (struct s₃ ()) (factorial (s₃ David _ Racket Developers list: http://lists.racket-lang.org/dev
Re: [racket-dev] Announcing Soft Contract Verification tool
On 1/15/15 7:42 PM, Benjamin Greenman wrote: > I tried writing a small program, but got stuck pretty early on. When I > try verifying the "divides?" function below, the tool times out. What's > happening? > > (module div racket > (provide (contract-out [divides? (-> positive? positive? boolean?)])) > > (define (positive? x) > (and (integer? x) (<= 0 x))) > > (define (divides? a b) > (cond [(= 0 b) #t] > [(< b a) #f] > [else (divides? a (- b a))])) > > ) There was a bug causing this to loop which has been fixed. The server verifies this program now. Please keep the bug reports coming! David _ Racket Developers list: http://lists.racket-lang.org/dev
Re: [racket-dev] Announcing Soft Contract Verification tool
On 1/15/15, 2:48 PM, Robby Findler wrote: > Can you randomly make up programs from your grammar, get example > errors from the tool, and then run those programs to see if you > find bugs in the analysis like that one? Yes, we're planning to do this. > That said, I don't see how the bug in >=/c is coming in here. Can > you explain more? On further inspection, the counterexample is wrong. (There are counterexamples due to the model of >=/c, but the one that reported is not an actual one.) This will be fixed shortly. David _ Racket Developers list: http://lists.racket-lang.org/dev
Re: [racket-dev] Announcing Soft Contract Verification tool
On 1/15/15, 2:13 PM, Asumu Takikawa wrote: > On 2015-01-14 19:11:59 -0500, David Van Horn wrote: >> If you have questions, comments, bugs, or any other feedback, let >> us know, or just file bug reports on the GitHub source code. > > Nice tool! I like the web interface too. > > I was confused by this interaction though. Clicking verify on > this: > > (module fact racket (define (factorial x) (if (zero? x) 1 (* x > (factorial (sub1 x) (provide (contract-out [factorial (-> (>=/c > 0) (>=/c 0))]))) > > gives me: > > Contract violation: 'fact' violates '>='. Value 0.105 violates > predicate real? An example module that breaks it: (module user > racket (require (submod ".." fact)) (factorial 0.105)) > (Verification takes 0.05s) > > but the value 0.105 shouldn't violate the predicate real? I think. This is reporting that the fact module can break the contract on >= when it uses >=/c; that's a bug in our modelling of >=/c, which we currently have as: (define (>=/c n) (lambda (m) (>= m n))) But should be: (define (>=/c n) (lambda (m) (and (real? m) (>= m n That said, if you change it to (and/c real? (>=/c 0)), it says there's a counterexample of 2.0, but that's because we check contracts on recursive calls (and should not). Thanks! David _ Racket Developers list: http://lists.racket-lang.org/dev
Re: [racket-dev] Announcing Soft Contract Verification tool
On 1/15/15, 11:27 AM, Matthias Felleisen wrote: > > Argh, I wanted the other way (negative). I always get the > directions confused. Sorry. Right -- using (and/c real? ( > > On Jan 15, 2015, at 11:26 AM, David Van Horn > wrote: > >> On 1/15/15, 11:17 AM, Matthias Felleisen wrote: >>> >>> >>> On Jan 15, 2015, at 11:13 AM, David Van Horn >>> wrote: >>> >>>> On 1/15/15, 11:04 AM, Matthias Felleisen wrote: >>>>> >>>>> Well that got me all excited. So I tried to get the sample >>>>> module to pass the verification step -- until I realized >>>>> how restricted the grammar is! >>>>> >>>>> (module f racket (provide (contract-out [f (real? . -> . >>>>> integer?)])) (define (f n) (/ 1 (- 100 n >>>>> >>>>> I would love to be able to use at least (and/c real? (>/c >>>>> 0)) for the domain so I can get the example done. >>>>> >>>>> Or am I overlooking a way to make this work here? >>>> >>>> The >/c contract is there, but missing from the grammar >>>> (we'll fix that). >>>> >>>> But (>/c 0) will not make this program verify. You want >>>> this contract: >>>> >>>> ((and/c real? (lambda (x) (not (= x 100 . -> . real?) >>>> >>>> Using this contract, the program verifies. >>> >>> >>> My contract is stronger than yours. So why will it not go >>> through? >>> >>> >> >> 100 is (>/c 0) but (f 100) divides by zero. >> >> David >> _ Racket Developers list: http://lists.racket-lang.org/dev
Re: [racket-dev] Announcing Soft Contract Verification tool
On 1/15/15, 11:17 AM, Matthias Felleisen wrote: > > > On Jan 15, 2015, at 11:13 AM, David Van Horn > wrote: > >> On 1/15/15, 11:04 AM, Matthias Felleisen wrote: >>> >>> Well that got me all excited. So I tried to get the sample >>> module to pass the verification step -- until I realized how >>> restricted the grammar is! >>> >>> (module f racket (provide (contract-out [f (real? . -> . >>> integer?)])) (define (f n) (/ 1 (- 100 n >>> >>> I would love to be able to use at least (and/c real? (>/c 0)) >>> for the domain so I can get the example done. >>> >>> Or am I overlooking a way to make this work here? >> >> The >/c contract is there, but missing from the grammar (we'll >> fix that). >> >> But (>/c 0) will not make this program verify. You want this >> contract: >> >> ((and/c real? (lambda (x) (not (= x 100 . -> . real?) >> >> Using this contract, the program verifies. > > > My contract is stronger than yours. So why will it not go through? > > 100 is (>/c 0) but (f 100) divides by zero. David _ Racket Developers list: http://lists.racket-lang.org/dev
Re: [racket-dev] Announcing Soft Contract Verification tool
On 1/15/15, 11:04 AM, Matthias Felleisen wrote: > > Well that got me all excited. So I tried to get the sample module > to pass the verification step -- until I realized how restricted > the grammar is! > > (module f racket (provide (contract-out [f (real? . -> . > integer?)])) (define (f n) (/ 1 (- 100 n > > I would love to be able to use at least (and/c real? (>/c 0)) for > the domain so I can get the example done. > > Or am I overlooking a way to make this work here? The >/c contract is there, but missing from the grammar (we'll fix that). But (>/c 0) will not make this program verify. You want this contract: ((and/c real? (lambda (x) (not (= x 100 . -> . real?) Using this contract, the program verifies. David _ Racket Developers list: http://lists.racket-lang.org/dev
[racket-dev] Announcing Soft Contract Verification tool
Racketeers, Over the last year, we've been working on a tool for automatically verifying that programs live up to their contracts. We're happy to announce that it's now available for people to try out here: http://scv.umiacs.umd.edu You type in some modules in the editor, and click either Run or Verify. The Verify button uses our tool to determine if the modules always live up to their contract, and if they don't, it automatically generates a counterexample, showing how to break the module. There are a number of examples that you can play with, accessed via a menu on the site. Right now, the tool supports a fixed subset of Racket, but we're working on making it handle much more by analyzing fully-expanded programs. There's explanations on the site to go along with each example program, and there's an "About" page with more info, and links to our papers about the work, at http://scv.umiacs.umd.edu/about We plan to release a command-line tool and a DrRacket plugin in the future, once we can handle more of Racket. If you have questions, comments, bugs, or any other feedback, let us know, or just file bug reports on the GitHub source code. Phil, David, Sam _ Racket Developers list: http://lists.racket-lang.org/dev
Re: [racket-dev] Pre-Release Checklist for v6.1.1, Second Call
On 10/23/14, 12:48 PM, Ryan Culpepper wrote: > * David Van Horn > - EoPL Tests Done. _ Racket Developers list: http://lists.racket-lang.org/dev
Re: [racket-dev] requested package not available: "draw-x86_64-macosx-2"
On 5/3/14, 3:36 PM, Robby Findler wrote: > Just a guess but maybe "git submodule update"? I always forget that step -- yes, that fixed it. Thanks! David > On Saturday, May 3, 2014, David Van Horn wrote: > >> I just did a git pull and make and get the following error: >> >> racket/bin/racket -U -G build/config racket/src/link-all.rkt ++dir pkgs >> ++dir native-pkgs --save main-distribution plt-services racket-lib >> Linking packages: >> plt-services >> racket-lib >> main-distribution >> Recording packages choice in racket/etc/link-pkgs.rktd >> Finding packages >> link-all: requested package not available: "draw-x86_64-macosx-2" >> context...: >>/Users/dvanhorn/git/racket/racket/src/link-all.rkt:155:6: for-loop >>/Users/dvanhorn/git/racket/racket/src/link-all.rkt:153:2: loop >>/Users/dvanhorn/git/racket/racket/src/link-all.rkt: [running body] >> make[2]: *** [pkg-links] Error 1 >> make[1]: *** [plain-in-place] Error 2 >> make: *** [in-place] Error 2 >> >> Any ideas how to fix this? >> >> David >> _ >> Racket Developers list: >> http://lists.racket-lang.org/dev >> > _ Racket Developers list: http://lists.racket-lang.org/dev
[racket-dev] requested package not available: "draw-x86_64-macosx-2"
I just did a git pull and make and get the following error: racket/bin/racket -U -G build/config racket/src/link-all.rkt ++dir pkgs ++dir native-pkgs --save main-distribution plt-services racket-lib Linking packages: plt-services racket-lib main-distribution Recording packages choice in racket/etc/link-pkgs.rktd Finding packages link-all: requested package not available: "draw-x86_64-macosx-2" context...: /Users/dvanhorn/git/racket/racket/src/link-all.rkt:155:6: for-loop /Users/dvanhorn/git/racket/racket/src/link-all.rkt:153:2: loop /Users/dvanhorn/git/racket/racket/src/link-all.rkt: [running body] make[2]: *** [pkg-links] Error 1 make[1]: *** [plain-in-place] Error 2 make: *** [in-place] Error 2 Any ideas how to fix this? David _ Racket Developers list: http://lists.racket-lang.org/dev
Re: [racket-dev] Pre-Release Checklist for v6.0.1
On 4/17/14, 6:44 PM, Ryan Culpepper wrote: > * David Van Horn > - EoPL Tests Done. _ Racket Developers list: http://lists.racket-lang.org/dev
Re: [racket-dev] Pre-Release Checklist for v6.0, Second Call
On 12/29/13, 1:57 PM, Ryan Culpepper wrote: * David Van Horn - EoPL Tests Done. _ Racket Developers list: http://lists.racket-lang.org/dev
[racket-dev] Fwd: Call for satellite events for TFP 2014 in the Netherlands (May 26-28, 2014)
In case anyone here is interested in running a TFP colocated event. David Original Message Subject: Call for satellite events for TFP 2014 in the Netherlands (May 26-28, 2014) Date: Fri, 23 Aug 2013 15:39:37 +0200 From: Jurriaan Hage Dear all, At this time, TFPIE is the only satellite event of TFP (chaired by James Caldwell of the University of Wyoming). However, in case any of you, or anyone you know of, is interested in organising an functional programming oriented event (such as workshops, symposia and project meetings) alongside TFP, I am also happy to accommodate this. An application should (at least) include the name and details of the contact person, the title and scope of the event, the length (like: a day, two, an afternoon), your preference for the date (if any), the expected number of participants, and details on how the event will be financed. Upon request I can provide some further details on how much things cost, but as you can imagine they vary greatly with the needs of the event. Closing time for application (directly by e-mail to me) is October 1. Notification of acceptance will be before October 8. best regards, Jur The TFP website is still http://www.cs.uu.nl/wiki/bin/view/TFP2014/WebHome It also includes the above information. PS. Feel free to communicate this information to anyone you think might be interested. _ Racket Developers list: http://lists.racket-lang.org/dev
Re: [racket-dev] proposal for moving to packages
On 5/20/13 4:42 PM, Matthew Flatt wrote: I used to think that we'd take advantage of the package manager by gradually pulling parts out of the Racket git repo and making them packages. Now, I think we should just shift directly to a small-ish Racket core, making everything else a package immediately. "Core" means enough to run `raco pkg'. A key point to remember is that "package" does not mean "omitted from the distribution". Instead, we'll construct a distribution by combining the core with a selected set of packages. Initially the selected set of packages will cover everything in the current distribution. Jay and I have been lining up the pieces for this change (it's difficult to make a meaningful proposal without trying a lot of the work, first), and I provide a sketch of the overall plan below. This plan has two prominent implications: * The current git repo's directory structure will change. Will this directory structure change have an impact on how modules are referenced? My biggest concern is the "Realm of Racket" book, which is about to come out. It sounds like this change could potentially cause a lot of confusion if it alters the collects organization. Thanks, David _ Racket Developers list: http://lists.racket-lang.org/dev
Re: [racket-dev] Pre-Release Checklist for v5.3.4
On 4/17/13 10:36 PM, Ryan Culpepper wrote: * David Van Horn - EoPL Tests Done. _ Racket Developers list: http://lists.racket-lang.org/dev
Re: [racket-dev] Purpose of typed/racket/no-check
On 4/1/13 11:16 AM, Robby Findler wrote: You could change the ellipsis to Integer. :) Or no-check could bind ellipsis to some type. This would be useful for sketching types out in no-check and then refining them to actual types in TR. David Robby On Mon, Apr 1, 2013 at 8:23 AM, Eli Barzilay mailto:e...@barzilay.org>> wrote: 20 minutes ago, Matthias Felleisen wrote: > > On Mar 31, 2013, at 9:32 PM, Sam Tobin-Hochstadt wrote: > > > My expectation when using typed/racket/no-check is that I won't > > get any type errors. > > To me, the words "no check" mean just that: do not type-check the > module. But I think it is okay to parse the types. I doubt people > use this option when they wish to avoid a parse error in the type > expressions. As a semi-random data point, I sometime use my no-check language (which is built on top of TR's) to show how things work in class without getting all the types right (or when there's some problem with the types). In these cases I sometime use bogus type declarations like "(All (A B) ...)", which IIUC wouldn't work anymore. It's just technically simpler and clearer to still use `:' instead of going back to comments. (But it's obviously a weak point.) -- ((lambda (x) (x x)) (lambda (x) (x x))) Eli Barzilay: http://barzilay.org/ Maze is Life! _ Racket Developers list: http://lists.racket-lang.org/dev _ Racket Developers list: http://lists.racket-lang.org/dev _ Racket Developers list: http://lists.racket-lang.org/dev
[racket-dev] gracket on retina
Having recently upgraded to a retina display mac, I see the problem pointed out in this PR: http://bugs.racket-lang.org/query/?cmd=view&pr=12909 Is there some way for me to help? If pointed in the right direction, I can try to patch things. Short of that, I can be a guinea pig. David _ Racket Developers list: http://lists.racket-lang.org/dev
Re: [racket-dev] Pull request for make-base-eval
On 2/22/13 7:05 PM, David Van Horn wrote: This is a pull request to make racket/scribble make-base-eval more like racket/sandbox make-evaluator, which was useful to me, but I wasn't sure if the current design avoided this for some reason. This should be a backwards compatible change, but I have not tested it. https://github.com/plt/racket/pull/256 Actually this only seems to work when run from within DrRacket. The following example works fine from DrRacket, but gives an error from the command line using raco scribble: namespace-attach-module: a different module with the same name is already in the destination namespace #lang scribble/manual @(require scribble/eval) @(define the-eval (make-base-eval #:lang 'racket)) @examples[#:eval the-eval (add1 7)] It's not at all clear to me how to resolve the problem. David _ Racket Developers list: http://lists.racket-lang.org/dev
[racket-dev] Pull request for make-base-eval
This is a pull request to make racket/scribble make-base-eval more like racket/sandbox make-evaluator, which was useful to me, but I wasn't sure if the current design avoided this for some reason. This should be a backwards compatible change, but I have not tested it. https://github.com/plt/racket/pull/256 Thanks, David _ Racket Developers list: http://lists.racket-lang.org/dev
Re: [racket-dev] Scribble: feature request - module paths for image
On 2/15/13 3:34 PM, Matthew Flatt wrote: #lang scribble/base @(define (fig name) (collection-file-path name "book" "figures")) @image[#:suffixes '(".png" ".pdf") (fig "quick-lists1")] Excellent! Thank you, this works (I figured I was making things worse than they had to be, but man is it intimidating when you start reading about paths in the docs). David _ Racket Developers list: http://lists.racket-lang.org/dev
Re: [racket-dev] Scribble: feature request - module paths for image
On 2/15/13 10:47 AM, Jay McCarthy wrote: Does define-runtime-path work? Yes, for some value of "yes". This works (specific to my context, but easy to generalize): #lang scribble/base @(require racket/runtime-path) @(require (for-syntax racket/base)) @(define-runtime-module-path-index id 'book) @(define (fig name) (path->string (resolved-module-path-name (module-path-index-resolve (module-path-index-join (format "figures/~a" name) id) @image[#:suffixes '(".png" ".pdf")]{@fig{quick-lists1}} So for now my problem is solved, but a) am I making this more complicated than needed? b) if not, should it really be this complicated? Thanks, David _ Racket Developers list: http://lists.racket-lang.org/dev
[racket-dev] Scribble: feature request - module paths for image
I have a scribble document that is built from two distinct locations, which makes using the Scribble image form nearly impossible since it takes a path relative to the build location. (My work around is symbolic links in the file system.) What would solve my problem is the ability to pass a module-path prefix, e.g. (image 'foo/bar/baz "some-image.png"). Does this seem like a sensible thing to add? (BTW, the collects option doesn't help me because I need to reference module locations that are not in the main collection.) David _ Racket Developers list: http://lists.racket-lang.org/dev
Re: [racket-dev] Pre-Release Checklist for v5.3.2
On 1/17/13 1:46 PM, Ryan Culpepper wrote: * David Van Horn - EoPL Tests Done. _ Racket Developers list: http://lists.racket-lang.org/dev
Re: [racket-dev] How to avoid to modify .gitignore when pull request
On 12/13/12 9:22 AM, Chen Xiao wrote: I fork the codebase on my local computer. Then I .configure & make & make install, as a result, there are many compiled things like bin or *.o files. To avoid add them to my commit, I modify .gitignore to ignore them all. But I can't avoid add .gitignore at all, isn't it? So how do you solve this problem? I suggest building in a build/ directory as described in src/README. There's already a .gitignore directive to ignore that directory. David _ Racket Developers list: http://lists.racket-lang.org/dev
[racket-dev] Quick feedback on first planet2 experience
- It's not clear what the red asterisk means here: https://plt-etc.byu.edu:9004/search (Sam tells me it means "recently updated".) - There's a typo ("User-spcific") in the output of raco pkg show. - The "details" link on the package upload page is broken: http://pre.racket-lang.org/docs/html/planet2/Planet_2_Concepts.html#(tech._package._source) - Searching for "planet2" should also return a link to the top of "Package Management in Racket". - Does the documentation contain a link to: https://plt-etc.byu.edu:9004/search (I missed it if it does.) - "dependencies on thar packages" in Package Metadata docs. - "This categories will" in Future Plans docs. David _ Racket Developers list: http://lists.racket-lang.org/dev
Re: [racket-dev] The `var` pattern in `match`
On 11/29/12 1:45 PM, Sam Tobin-Hochstadt wrote: On Thu, Nov 29, 2012 at 10:40 AM, David Van Horn wrote: On 11/29/12 7:31 AM, Carl Eastlund wrote: Having something like the "var" pattern can be useful for macros that expand into uses of match, if the macro doesn't want to expose that a bound variable will be a match pattern and therefore must not be "_" or "...". Granted, there are ways around this, but personally I think it would be nice if match supported this pattern. I would, however, entirely support renaming this pattern to something more obscure, like "match:pattern-variable" or something, so that unintentional uses stop being a problem. I think the real solution is to have (whatever name you give) `var' be something that is matched as an identifier and not a literal so that programmers can rename the pattern. But I know from talking with Sam this would be a big change for match. Making `var` specifically be matched by binding would be possible -- it would be less of a change than removing it entirely. I would still like the default to be something other than `var'. (BTW, it looks like `var' is not an indexed term in the docs for match.) David _ Racket Developers list: http://lists.racket-lang.org/dev
Re: [racket-dev] The `var` pattern in `match`
On 11/29/12 7:31 AM, Carl Eastlund wrote: Having something like the "var" pattern can be useful for macros that expand into uses of match, if the macro doesn't want to expose that a bound variable will be a match pattern and therefore must not be "_" or "...". Granted, there are ways around this, but personally I think it would be nice if match supported this pattern. I would, however, entirely support renaming this pattern to something more obscure, like "match:pattern-variable" or something, so that unintentional uses stop being a problem. I think the real solution is to have (whatever name you give) `var' be something that is matched as an identifier and not a literal so that programmers can rename the pattern. But I know from talking with Sam this would be a big change for match. In the meantime, something more obscure than `var' would go a long way toward me not cursing Sam's good name every time I write an AST. David _ Racket Developers list: http://lists.racket-lang.org/dev
Re: [racket-dev] The `var` pattern in `match`
On 11/28/12 7:53 PM, Sam Tobin-Hochstadt wrote: Currently, `match` provides a pattern named `var`, which makes `(var id)` equivalent to `id`, but without special cases for things like `_` and `...`. However, this frequently conflicts with structures that people define, and is rarely used other than accidentally. I'd therefore like to remove it entirely. + (expt 2 (expt 2 (expt 2 (expt 2 2 _ Racket Developers list: http://lists.racket-lang.org/dev
Re: [racket-dev] check-match?
On 11/19/12 8:20 PM, Joe Gibbs Politz wrote: > Yeah, that is very nice! (It should begin with "check" not "test" tho, right?) Indeed; Jonah was writing w.r.t plai, which uses test. Should use check- in rackunit. I noticed that this also violates, from the rackunit docs: "Although checks are implemented as macros, which is necessary to grab source location, they are conceptually functions. This means, for instance, checks always evaluate their arguments." I suppose this should go in a separate section of "additional checks" or some such? Maybe the right thing to do is make it lightweight to write predicates with match so that you don't even need a separate testing form? Something like (? P) => (lambda (x) (match x [P true] [_ false])) David _ Racket Developers list: http://lists.racket-lang.org/dev
Re: [racket-dev] check-match?
I written things like this before, so something built-in would be useful to me too. David On 11/19/12 5:01 PM, Matthias Felleisen wrote: That is cute. Why don't you just create a pull request and Ryan can integrate it into rackunit? -- Matthias On Nov 19, 2012, at 4:22 PM, Joe Gibbs Politz wrote: A small suggestion: I used roughly this macro (credit Jonah Kagan) recently to help me write some tests for parsing code that agnostic to which source position is generated in the parse: (define-syntax test/match (syntax-rules () [(test/match actual expected pred) (let ([actual-val actual]) (with-check-info* (list (make-check-actual actual-val) (make-check-expected 'expected)) (thunk (check-true (match actual-val [expected pred] [_ false])] [(test/match actual expected) (test/match actual expected true)])) Shriram remarked that he was surprised some sort of check-match wasn't in rackunit already. Is it worth adding something like this? I'm doing things like: (test/match (parse "5 'foo'") (s-block _ (list (s-num _ 5) (s-str _ "foo" Where the structs s-block, s-num, and s-str all expect a srcloc as their first argument, but I don't care about it for these tests. The actual use is at: https://github.com/brownplt/pyret-lang/blob/master/src/tests/parse-tests.rkt#L36 That file would be much, much uglier without this macro. Cheers, Joe P. _ Racket Developers list: http://lists.racket-lang.org/dev _ Racket Developers list: http://lists.racket-lang.org/dev _ Racket Developers list: http://lists.racket-lang.org/dev
Re: [racket-dev] Pre-Release Checklist for v5.3.1
On 10/16/12 12:58 AM, Ryan Culpepper wrote: * David Van Horn - EoPL Tests Done. _ Racket Developers list: http://lists.racket-lang.org/dev
Re: [racket-dev] Racket Questions?
On 9/14/12 3:36 PM, Becca MacKenzie wrote: Hello! So a friend of mine just started learning Racket and was wondering if there's a particular reason why the modulo function in racket only takes in integers? He wrote his own mod function to take in other things but he was just wondering what the reasoning is behind this. Hi Becca, Excellent question -- I hope you don't mind that I've forwarded it to the Racket developers list for a more authoritative answer (and potentially a change to Racket). I don't believe there's any principled reason not to extend `modulo' to other kinds of numbers such as rationals and (exact) complex numbers. I worry that the idea of modulo may not be well defined for inexact numbers, but I could be wrong (inexact numbers don't obey a lot of the usual mathematical properties we're used to). I see that in Mathematica, "the arguments of Mod can be any numeric quantities, not necessarily integers". Here are some examples: http://reference.wolfram.com/mathematica/ref/Mod.html#6881 Recently, Racket's GCD and LCM were extended to work on non-integer arguments, and I believe this is a similar case where the function could (and should?) be extended to work for more kinds of numbers. But I'm interested to hear what the dev list has to say on the matter. David _ Racket Developers list: http://lists.racket-lang.org/dev
[racket-dev] Empty 5.3 release announcements on web
http://download.racket-lang.org/v5.3.html This page shows "Release Announcements for Version 5.3" but no notes. David _ Racket Developers list: http://lists.racket-lang.org/dev
Re: [racket-dev] Pre-Release Checklist for v5.3
On 7/24/12 11:03 AM, Ryan Culpepper wrote: * David Van Horn - EoPL Tests Passed. _ Racket Developers list: http://lists.racket-lang.org/dev
Re: [racket-dev] arity error with latest from git
On 7/17/12 5:33 PM, Matthew Flatt wrote: I've pushed a correction related to a change today in the module name resolver (missed a direct call in DrRacket). Thanks for the quick fix! I notice a small typo in the docs: "A module name resolver takes one and four arguments:" Should be two and four. David _ Racket Developers list: http://lists.racket-lang.org/dev
[racket-dev] arity error with latest from git
Hi, I'm getting an arity mismatch error whenever I run a saved file in DrRacket. Welcome to DrRacket, version 5.3.0.15--2012-07-17(3b5eb1da/d) [3m]. Language: racket [custom]; memory limit: 1024 MB. . . ../../racket/collects/drracket/private/module-language.rkt:373:8: standard-module-name-resolver: arity mismatch; the expected number of arguments does not match the given number given: 1 arguments...: # The error points to line 376 of collects/drracket/private/module-language.rkt, which applies (current-module-name-resolver) to one argument. According to the docs, and procedure-arity, that's not an acceptable number of arguments. As of this morning I had a 3 day old build that worked fine, but I don't see anything (from a quick glance) that could have caused this. Moreover, that seemingly bogus one-argument call to (current-module-name-resolver) has been there for a long time so I don't understand why this is happening now. Any ideas? As it is, I can't do much of anything in DrRacket. David _ Racket Developers list: http://lists.racket-lang.org/dev
[racket-dev] redex.racket-lang.org Index of /
redex.racket-lang.org seems to have reverted to serving the index of /. David _ Racket Developers list: http://lists.racket-lang.org/dev
Re: [racket-dev] Comparison functions and the `data' collection
On 6/21/12 6:04 PM, Ryan Culpepper wrote: On 06/21/2012 09:38 AM, Eli Barzilay wrote: More than a week ago, Ryan Culpepper wrote: On 06/11/2012 02:36 PM, Eli Barzilay wrote: Yesterday, Danny Yoo wrote: It's a little unfortunate that there's a slight impedance mismatch between what datum-order provides and what sort expects; the my-less-than function in the example adapts the output of datum-order so it can be used with sort. Thanks for pointing it out (I didn't know about it). When I looked into this, I saw that in addition to `data/order' there is also an issue with `data/heap'. It certainly does look like a problem worth addressing. The thing is that are two common ways to specify comparison functions: (a) three-valued comparison functions returning -1/0/+1, (b) a boolan strictly-smaller-than predicate. The first is common in several mainsteam languages and the second is traditionally common in lisps (which leads to its use in the sort function). The issues are described very thoroughly in srfi-67 -- specifically, see the first two subsections in section 6. I highly recommend reading that for this discussion. They decide to go with option (a), with an explanation for the choice of a three-valued function and for their choice of -1/0/+1 values. I don't remember if I discovered srfi-67 before or after I added data/order. In any case, I disagree with its rationale for -1/0/+1: I dislike the idea of performing arithmetic on orderings. (See below.) OTOH, data/order is used primarily by the ordered dictionary types (data/splay-tree, data/skip-list), so it's probably missing operations and conveniences for tasks like sorting a list. (I take it that they will be added, then...) 2. The `data/order' interface has several problems that I think is best to resolve. - Regadless of the above, it seems like a good idea to extend the interface with a simple boolean predicate. Maybe something like `datum From an order you can get the less-than and equality predicates: (order- Yes, of course this is easy. I can also do that `case' in a tiny λ. But it should be part of the library. On Saturday, Matthias Felleisen wrote: This response leaves us with the impression that we whimsically challenged established conventions in the general and the Lisp-specific PL family. In addition it leaves us with inconsistencies across our libraries, which I am coming to consider more and more as a serious problem. Yes, that was exactly why I raised it. Since it's core-ish functionality, having it behave well wrt expectations is IMO extremely important. Right now we have a sad state of two different incompatibilities there, and I don't see any good explanation except for the "I disagree/dislike" (in contrast to the srfi). Because of such expectations and because of existing code, I'd follow that without thinking about what might the right choice be. (Personally, I now think that the more lenient approach of any numbers, negative, 0, or positive is even better -- and I can also explain and justify why I think that, but that's irrelevant.) Now -- I would be the last one to defend "established tradition" over "getting things right" but at a minimum, the reasoning of why we challenge tradition should be noted. +7 There's an advocate of my position in the SRFI discussion archives. See the following messages by Panu Kalliokoski: http://srfi.schemers.org/srfi-67/mail-archive/msg00021.html http://srfi.schemers.org/srfi-67/mail-archive/msg00023.html http://srfi.schemers.org/srfi-67/mail-archive/msg00025.html Of course, the SRFI still went the other way. I would be happy to add functions to convert between the two conventions. I think {-1,0,1} is the worst of all worlds. I prefer the more lenient approach of allowing any number[*]. This follows the Lisp tradition of returning "more than just the truth", since a comparison can also convey the difference between the arguments; in other words `-' is a comparison function, which is the trick I use to remember how to interpret the result of compare functions in Java, for example. If we really want to break tradition by restricting to "just the truth" (a three-valued function), meaningful symbols is my preference over {-1,0,1}. [*] Well, reals minus infinities and nans. David _ Racket Developers list: http://lists.racket-lang.org/dev
Re: [racket-dev] Pre-Release Checklist for v5.3
On 4/18/12 11:00 AM, Ryan Culpepper wrote: - EoPL Tests Done. David _ Racket Developers list: http://lists.racket-lang.org/dev
Re: [racket-dev] provide specs in eopl in repository use (all-defined-out) instead of (all-defined)
On 4/2/12 8:42 PM, Nadeem Abdul Hamid wrote: OK, thanks. Just wanted to make sure something wasn't broken. It's only a minor inconvenience - my students are using the version from the download page, while I usually use one built from source, but I've just been using the regular 5.2.1 version to run their programs. In any event, perhaps the documentation needs to be updated: the entry: http://pre.racket-lang.org/docs/html/eopl/index.html#(form._((lib._eopl/eopl..rkt)._provide)) points to the mzscheme version of provide. (Sorry I missed this thread.) Thanks for the report. I filed a bug report and will fix soon. David On Mon, Apr 2, 2012 at 8:22 PM, Robby Findler wrote: Because it was changed to be based on "#lang racket" instead of the (old) "#lang mzscheme" not too long ago. I think there was a post here (or on the users's list) about this, but I'm not sure that this particular point was mentioned there, so I can see how you'd be surprised. Is this causing you trouble with classes or similar? Would a "#lang eopl/mzscheme" or something like that be useful for backwards compatibility? (You'd still need to use that #lang line, tho, since the regular eopl language is now changed for good.) Robby On Mon, Apr 2, 2012 at 7:09 PM, Nadeem Abdul Hamid wrote: How come when building Racket from the latest source of the repository (at least as of 3 days ago), #lang eopl doesn't recognize (all-defined) as a valid provide spec and wants (all-defined-out) instead? --- nadeem _ Racket Developers list: http://lists.racket-lang.org/dev _ Racket Developers list: http://lists.racket-lang.org/dev _ Racket Developers list: http://lists.racket-lang.org/dev
Re: [racket-dev] EOPL tests
On 2/21/12 2:38 PM, David Van Horn wrote: Is there a test suite for EOPL? I didn't find anything in collects/eopl or collects/tests, but eopl.rkt mentions the "test harness". The test suite is now in tests/eopl. David _ Racket Developers list: http://lists.racket-lang.org/dev
[racket-dev] EOPL tests
Is there a test suite for EOPL? I didn't find anything in collects/eopl or collects/tests, but eopl.rkt mentions the "test harness". David _ Racket Developers list: http://lists.racket-lang.org/dev
Re: [racket-dev] Google Summer of Code
On 2/15/12 8:27 AM, Matthias Felleisen wrote: On Feb 14, 2012, at 10:26 PM, Asumu Takikawa wrote: On 2012-02-14 09:58:12 -0800, John Clements wrote: I sent an e-mail to Asumu about a week ago that sneakily tried to get him to take responsibility, and it sounds like he might be on it. If not, I'll take the lead. Asumu? I'm still up for it. The application process starts on the 27th but we should do some preparation for it. First of all though, are people interested in this? If we're accepted, any students we get are paired up with mentors, so we'll need some people to volunteer for that. Probably not too many though. Call for names on dev and user. I'm happy to volunteer. The mentor's responsibility is to get their student up to speed with the codebase/language& community, check up on progress (once or more a week), and formally evaluate the student. Other things we'd need: * an ideas list (the github page should do, with some modifications) * organization admin (I could do this, or anyone else more appropriate) and backup admin. * people willing to review student applications Call for ideas. Set up public code review system as for Chrome. I'd like to have Android programs that speak the 2htdp/universe protocol and support World-style programming. I have a quick mock-up of both; I can play simple games where one player is running a BSL client on a laptop and the other player is running a Java client on their phone. I can make this more concrete if you'd. Google has supported me in the past by supplying phones. This seems like a good fit. David _ Racket Developers list: http://lists.racket-lang.org/dev
Re: [racket-dev] very unhelpful beginner language error message, possible fix proposed
On 2/13/12 7:32 PM, Stephen Bloch wrote: In ISL, there's an additional case: a local variable might or might not be bound to a function. That's a little more hassle to check, but it should be doable at compile-time. Again, if the first element of a cond-clause is an identifier bound to a function, trigger our clever error message at compile-time. Once you go to ISL you cannot tell whether a name refers to a function or a non-function without running code. ISL is higher-order; it just doesn't have lambda or the ability to compute functions in operator position. Even that's a lie if you're willing to squint a little. David _ Racket Developers list: http://lists.racket-lang.org/dev
Re: [racket-dev] very unhelpful beginner language error message, possible fix proposed
On 2/13/12 4:20 PM, Stephen Bloch wrote: On Feb 13, 2012, at 8:28 AM, David Van Horn wrote: In BSL, you can detect when the first element of a clause is a variable bound to a function, but I don't follow the reasoning about ISL. You can't distinguish good from bad uses without running the code because you can't tell if a name refers to a function or a non-function. Not reliably, because the student COULD be using a parameter or a local variable in that position. But in the COMMON case of this error, the student will use a predefined function or an explicitly user-defined top-level function, and it should be possible to recognize those at syntax-check-time. But even if the name is a parameter, it cannot be bound to a function. If it's a local, it either is or isn't a function -- you can tell from the definition. I think it's correct to consider this a syntax error, not a run-time error. It should just have a better message. Which leaves cond: question result is not true or false: (lambda (a1) ...) as a good error message to report at run time in the rare cases that don't match the above description. Except you don't want to say lambda in BSL. David _ Racket Developers list: http://lists.racket-lang.org/dev
Re: [racket-dev] very unhelpful beginner language error message, possible fix proposed
On 2/13/12 8:11 AM, Stephen Bloch wrote: On Feb 13, 2012, at 5:05 AM, Marijn wrote: ... it highlighted the id "list-sum-odd" in what should have been the 'else' case, and wrote: "list-sum-odd: expected a function call, but there is no open parenthesis before this function" ... which is really terrible, because there *IS* a parenthesis right before the function name. How about changing the message such that it complains about a shortage of parentheses without stating that there are none? - - expected a function call, but there is an open parenthesis missing before this function name Doesn't help much: as any student can see, there IS an open parenthesis before this function name. Or maybe formulate it in a positive way to encourage the user to insert parentheses? - - expected a function call, but found a function name; to call it add surrounding parentheses It's GOT surrounding parentheses. The mistake the student made was at the "cond" level, not at the level of this function call, so the "right" error message has to say something about "cond", like -- cond: each clause must be a question/answer pair enclosed in brackets. You have two expressions that look like the "question" and the "answer", but you need another pair of brackets around the two of them. It should be possible for the "cond" macro to detect this situation, at least in BSL, because the first element of what should be a cond-clause is a function name, and that's not a complete expression. In ISLL, a function name can appear as an expression in its own right, but it still doesn't make sense as the first element of a cond-clause because a function name isn't a boolean: if it's defined, then it's non-null and therefore true, and if it's not, the student shouldn't be mentioning it at all. Not until ASL does it become possible (albeit unlikely) that a function name could make sense as a condition. In BSL, you can detect when the first element of a clause is a variable bound to a function, but I don't follow the reasoning about ISL. You can't distinguish good from bad uses without running the code because you can't tell if a name refers to a function or a non-function. ISL actually gives the best error message in my opinion: cond: question result is not true or false: (lambda (a1) ...) But it only does this at run time (as it must). The syntax error for BSL could be similar though: cond: question is not an expression but a function name: list-sum-odd David _ Racket Developers list: http://lists.racket-lang.org/dev
Re: [racket-dev] new logo
On 2/11/12 3:04 PM, Asumu Takikawa wrote: On 2012-02-11 13:23:46 -0500, Matthias Felleisen wrote: Have you guys considered a small change that makes the 'r' more lambda-ish? Maybe an 'r' in different scripts can be considered? For example, an R rotunda: http://en.wikipedia.org/wiki/R_rotunda FWIW, I like this quite a bit. I think if you put this on the new background, you'd have a winner. David _ Racket Developers list: http://lists.racket-lang.org/dev
Re: [racket-dev] Racket home page proposal
On 12/20/11 8:02 AM, Tony Garnock-Jones wrote: On 2011-12-20 4:07 AM, Robby Findler wrote: I like the idea, but I think our twitter feed and blog aren't updated enough. When we decided to put a twitter feed on the rabbitmq.com homepage, we went with simply including *any tweet mentioning rabbitmq*. This has its upside and its downside, of course, and there was a lot of discussion at the time as to whether this was appropriate, shooting ourselves in the foot, etc. By and large, it has worked out. Negative tweets are few and far between. The impression given is of a vibrant and fairly diverse community. Trickier, perhaps, with Racket, which isn't such a unique search term. A search for @racketlang turns up almost nothing. A search for #racket turns up nothing you want associated with Racket. David _ For list-related administrative tasks: http://lists.racket-lang.org/listinfo/dev
Re: [racket-dev] feature request: gcd, lcm for rationals
On 12/14/11 5:11 AM, Marijn wrote: (gcd-rational 2/3 2/3 2/3) 2/3 (lcm-rational 2/3 2/3 2/3) 4/9 is that 4/9 the intended result? No, I must've messed up the definition. Fortunately, Matthew did the right thing when he implemented lcm: Welcome to Racket v5.2.0.6. > (lcm 2/3 2/3 2/3) 2/3 David _ For list-related administrative tasks: http://lists.racket-lang.org/listinfo/dev
Re: [racket-dev] feature request: gcd, lcm for rationals
On 12/10/11 9:25 AM, David Van Horn wrote: On 12/9/11 3:31 PM, Daniel King wrote: On Fri, Dec 9, 2011 at 15:27, Carl Eastlund wrote: What does "divides" even mean in Q? I think we need David to explain what his extension of GCD and LCM means here, in that "divisors" and "multiples" are fairly trivial things in Q. I took "x divides y" to mean x/y is an integer. I meant: y/x is an integer. David _ For list-related administrative tasks: http://lists.racket-lang.org/listinfo/dev
Re: [racket-dev] feature request: gcd, lcm for rationals
On 12/9/11 3:31 PM, Daniel King wrote: On Fri, Dec 9, 2011 at 15:27, Carl Eastlund wrote: What does "divides" even mean in Q? I think we need David to explain what his extension of GCD and LCM means here, in that "divisors" and "multiples" are fairly trivial things in Q. I took "x divides y" to mean x/y is an integer. I don't suppose to understand all the math on this page, but I think it uses the same definition that dvh is using. http://mathworld.wolfram.com/GreatestCommonDivisor.html Yes, that's where I got the definition I suggested. As a concrete example of why I wanted gcd extended to rationals: I wrote a big-bang program that runs a set of big-bang programs, so it needs a tick-rate that is the gcd of all the tick-rates of the programs it runs, which may be rational. David _ For list-related administrative tasks: http://lists.racket-lang.org/listinfo/dev
[racket-dev] feature request: gcd, lcm for rationals
It would be nice if gcd and lcm were extended to rational numbers, which seems in-line with Scheme's philosophy (but not standards) on numbers. (define (gcd-rational . rs) (/ (apply gcd (map numerator rs)) (apply lcm (map denominator rs (define (lcm-rational . rs) (/ (abs (apply * rs)) (apply gcd-rational rs))) David _ For list-related administrative tasks: http://lists.racket-lang.org/listinfo/dev
Re: [racket-dev] How can I search the bug list for bugs that I've submitted?
On 6/2/11 5:05 PM, Danny Yoo wrote: I've been staring at the Advanced Query section of the bug tracker: http://bugs.racket-lang.org/query/?database=default&cmd=advanced%20query and I have no idea how to get it to tell me what bugs I've submitted. I tried putting 'd...@cs.wpi.edu' as submitter id, but nothing's coming up. "Danny Yoo" as the Originator works well. David _ For list-related administrative tasks: http://lists.racket-lang.org/listinfo/dev
[racket-dev] Universe and Redex
Sam and I have been teaching a first year course on programming and our final project is a distributed, multi-player game similar to this one: http://www.gamedesign.jp/flash/dice/dice.html Students had to write clients, servers, and AI players, and during our final exam period, we're going to hold a tournament between all the AI players -- hosted on a server that Sam and I wrote. One idea that we had, which turned out to be a good one, was to define the language of client to server messages as a Redex language and then use Redex's random term generation to stress test our server. We constructed simple clients that did a rapid-fire send of random messages. We tested on well-formed messages, messages that were "close" to being well-formed, and messages that were just arbitrary junk (all expressed in a couple lines using define-language). We found several bugs in our server and running our students' clients against the server has not uncovered any further bugs beyond what Redex found. David _ For list-related administrative tasks: http://lists.racket-lang.org/listinfo/dev
[racket-dev] Building docs in v5.0.99.900
I'm seeing this error when installing a .plt file using the current release candidate: ... raco setup: --- creating launchers --- raco setup: --- building documentation --- link: reference (phase 0) to a variable in module "/Applications/Racket v5.0.99.900/collects/scribble/private/manual-proc.rkt" that is uninitialized (phase level 0); reference appears in module: "/Applications/Racket v5.0.99.900/collects/scribble/private/manual-unit.rkt" in: *defthing === context === /Applications/Racket v5.0.99.900/collects/scribble/private/manual-unit.rkt: [running body] /Applications/Racket v5.0.99.900/collects/scribble/manual.rkt: [traversing imports] /Applications/Racket v5.0.99.900/collects/setup/scribble.rkt: [traversing imports] /Applications/Racket v5.0.99.900/collects/setup/setup-unit.rkt:810:2: make-docs-step David _ For list-related administrative tasks: http://lists.racket-lang.org/listinfo/dev
[racket-dev] secref problems
Am I doing something wrong, or is this a bug? The references with numbers or hyphens don't resolve, while the others do. #lang scribble/manual @secref[#:doc '(lib "teachpack/teachpack.scrbl") "simulations"] @secref[#:doc '(lib "teachpack/teachpack.scrbl") "interactive"] @secref[#:doc '(lib "teachpack/teachpack.scrbl") "world-example"] @secref[#:doc '(lib "teachpack/teachpack.scrbl") "world2"] @secref[#:doc '(lib "teachpack/teachpack.scrbl") "universe-server"] Welcome to DrRacket, version 5.0.99.6--2011-01-07(-/f) [3m]. Language: scribble/manual; memory limit: 1024 MB. David _ For list-related administrative tasks: http://lists.racket-lang.org/listinfo/dev
[racket-dev] Fwd: Re: [racket] Couldn't find a step matching that criterion
Why are the "< Step" and "Step >" buttons enabled when there are no steps to take in a given direction? The "Couldn't find a step matching that criterion" message seems awfully confusing for a beginner. If the buttons are going to be enabled, something along the lines of "There are no further steps to take" and "There are no previous steps to take" would be better, IMO. David Original Message Subject: Re: [racket] Couldn't find a step matching that criterion Date: Sun, 09 Jan 2011 20:48:49 -0500 From: David Van Horn To: Sayth Renshaw CC: us...@racket-lang.org On 1/9/11 9:02 AM, Sayth Renshaw wrote: I am having a real issue with the stepper. Maybe the programs are too simple so far for the stepper, but it doesn't step. The check syntax feature is great. for the check-color game should the stepper work? What is the trick? I just wanted to check the flow by stepping through. Each time I use it I get "Couldn't find a step matching that criterion" No matter what I change select or do. ;check-color ;colour guessing game (target target)(guess guess) ;symbol symbol symbol symbol -> string ;four color symbols (define (check-color target1 target2 guess1 guess2) (cond [(eq? target1 guess1) 'Perfect] [(or (eq? target1 guess1)(eq? target2 guess2)) 'OneColorAtCorrectPosition] [(or (eq? target1 guess2)(eq? target2 guess1)) 'OneColorOccurs] [else 'NothingCorrect])) ;(check-color 'red 'green 'green 'red) ;'OneColorOccurs Sayth, You need to have at least one expression to step through in order for the stepper to work. The program you've given consists of a single definition and *no* expressions. The fix is easy: uncomment the check-color expression you have and step through its computation. David _ For list-related administrative tasks: http://lists.racket-lang.org/listinfo/users _ For list-related administrative tasks: http://lists.racket-lang.org/listinfo/dev
Re: [racket-dev] In support of em dash
On 12/13/10 9:52 PM, Shriram Krishnamurthi wrote: See http://bugs.racket-lang.org/query/?cmd=view&pr=11049 I find the line wrapping issue much less bothersome than using an en dash with spaces in place of an em dash. Also, that's a problem with the browser, not the document. It's true, Firefox does a poor job with the line breaks, but Chrome gets it right. I'm sure Scribble has to jump through a lot of hoops to look good in a lot of browsers, and I appreciate that, but it shouldn't produce the wrong document because some browsers do a poor job wrapping lines. I think the default should be to use an — with no spaces, but I'd be OK if I had a way to write "use an em dash here, damn it" and have it work in PDF and HTML mode. Thanks, David _ For list-related administrative tasks: http://lists.racket-lang.org/listinfo/dev
[racket-dev] In support of em dash
Scribble currently renders "---" as " -- " in HTML, which is documented as "a typical convention for em-dashes in HTML," but I can't find any evidence of that convention. There is a standard HTML entity, —, for em dashes. Why not use it? I took a quick survey of what other tools do. I think these support changing Scribble to render using em dashes (my preference): Tools that render "---" as "—": - WordPress - tex2page - HeVeA - RDoc Tools that render "—" as "—": - Blogger (e.g., the Racket blog) - javadoc Tools that render em dashes consistently in HTML and PDF (although using something other than "---" to indicate an em dash): - Wikipedia (WP:EMDASH) I think these support changing scribble to render something else (not my preference): Tools that render "---" as "---": - ocamldoc - scaladoc Tools that render "---" as "--": - texi2html - latex2html I found no tool that does what Scribble currently does. David _ For list-related administrative tasks: http://lists.racket-lang.org/listinfo/dev
Re: [racket-dev] Something wrong with check-within
On 11/11/10 7:34 PM, Nadeem Abdul Hamid wrote: The check-within in the follow program (in BSL/ISL) seems to hang. I see DrRacket (5.0.1, 5.0.99) loop on this: (check-within (make-posn (list 0) (list 0)) (make-posn (list 0) (list 0)) 0.001) David _ For list-related administrative tasks: http://lists.racket-lang.org/listinfo/dev
[racket-dev] set operations
The set library is missing a convenient way of selecting an element from a set, making it hard to write recursive functions matching the inductive structure of a set. Could you add this function, or something like it? (define (set-choose s) (let ((x (for/first ([x (in-set s)]) x))) (values x (set-remove s x David _ For list-related administrative tasks: http://lists.racket-lang.org/listinfo/dev
Re: [racket-dev] BSL, test: bad syntax
On 10/20/10 10:53 AM, David Van Horn wrote: Are others aware of this? Welcome to DrRacket, version 5.0.2.1--2010-08-25(-/f) [3m]. Language: Beginning Student; memory limit: 512 MB. > 5 5 test: bad syntax Er, I just rebuilt from git, so something is wrong on my end given the 2010-08-25 date; maybe this is just my issue. David _ For list-related administrative tasks: http://lists.racket-lang.org/listinfo/dev
[racket-dev] BSL, test: bad syntax
Are others aware of this? Welcome to DrRacket, version 5.0.2.1--2010-08-25(-/f) [3m]. Language: Beginning Student; memory limit: 512 MB. > 5 5 test: bad syntax David _ For list-related administrative tasks: http://lists.racket-lang.org/listinfo/dev
Re: [racket-dev] --enable-macprefix gone?
On 10/19/10 10:21 PM, Eli Barzilay wrote: Four minutes ago, David Van Horn wrote: On 10/19/10 10:03 PM, Eli Barzilay wrote: 9 hours ago, David Van Horn wrote: Has the --enable-macprefix option been removed from the configure script? When I configure, I get: configure: WARNING: unrecognized options: --enable-macprefix If so, the src/README file should be updated to reflect the change. You should have this code in the "configure" script: Yep -- the code's there, and if I omit the option the script gives an error saying it's needed in order to use --prefix. So why do I see an unrecognized option warning when I provide --enable-macprefix? I just tried it, and it worked fine: $ ./configure --enable-macprefix --prefix=/foo/bar ... What's the command line that you're using? $ ./configure --enable-macprefix --prefix=/Applications/plt Looks like the warnings are coming from invoking the configure script for foreign/libffi: ... === configuring in foreign/libffi (/Users/dvanhorn/Documents/plt/src/foreign/libffi) configure: running /bin/sh ./configure '--prefix=/Applications/plt' '--enable-macprefix' 'CC=gcc -m32' 'CPP=gcc -E -m32' 'CXX=g++ -m32' 'CPPCXX=' --cache-file=/dev/null --srcdir=. configure: WARNING: unrecognized options: --enable-macprefix ... configure: WARNING: unrecognized options: --enable-macprefix ... David _ For list-related administrative tasks: http://lists.racket-lang.org/listinfo/dev
Re: [racket-dev] --enable-macprefix gone?
On 10/19/10 10:03 PM, Eli Barzilay wrote: 9 hours ago, David Van Horn wrote: Has the --enable-macprefix option been removed from the configure script? When I configure, I get: configure: WARNING: unrecognized options: --enable-macprefix If so, the src/README file should be updated to reflect the change. You should have this code in the "configure" script: Yep -- the code's there, and if I omit the option the script gives an error saying it's needed in order to use --prefix. So why do I see an unrecognized option warning when I provide --enable-macprefix? David _ For list-related administrative tasks: http://lists.racket-lang.org/listinfo/dev
[racket-dev] --enable-macprefix gone?
Has the --enable-macprefix option been removed from the configure script? When I configure, I get: configure: WARNING: unrecognized options: --enable-macprefix If so, the src/README file should be updated to reflect the change. David _ For list-related administrative tasks: http://lists.racket-lang.org/listinfo/dev
Re: [racket-dev] #true and #false
On 10/8/10 9:12 PM, Matthew Flatt wrote: This proposal originates with the need to fix a problem in the HtDP teaching languages. The HtDP teaching languages currently use `true' and `false' for true and false, and the HtDP languages are configured to print booleans as `true' and `false'. That doesn't work with quoted lists. For example, '(true false) is a list of symbols, not a list of booleans. What about '(empty)? Seems like the same issue. David _ For list-related administrative tasks: http://lists.racket-lang.org/listinfo/dev
Re: [racket-dev] =?
On 10/6/10 2:24 PM, Shriram Krishnamurthi wrote: It would be the same as =, ie, numeric equality. It's not meant to be some sort of generalized equality checker. It's just that we teach our students that predicates end in ?, and that's true of symbol=?, string=?, but not =. So shouldn't it be `number=?'? I hear students say this in class every year. `=?' seems just as much an anomaly as `='. David _ For list-related administrative tasks: http://lists.racket-lang.org/listinfo/dev
Re: [racket-dev] for/first and multiple values
On 8/29/10 8:33 PM, Carl Eastlund wrote: On Sun, Aug 29, 2010 at 8:32 PM, David Van Horn wrote: On 8/29/10 8:27 PM, Carl Eastlund wrote: What do you propose for/first should return if the set s is empty? #f? Which will do what in a 2-valued context? Blow up I suppose. I don't care; I'm not going to use for/first with an empty set. David _ For list-related administrative tasks: http://lists.racket-lang.org/listinfo/dev
Re: [racket-dev] for/first and multiple values
On 8/29/10 8:27 PM, Carl Eastlund wrote: What do you propose for/first should return if the set s is empty? #f? _ For list-related administrative tasks: http://lists.racket-lang.org/listinfo/dev
[racket-dev] for/first and multiple values
Why is the body of a for/first a single valued context? I would expect this to work: (let ((s (set 1 3 10))) (for/first ((x (in-set s))) (values x (set-remove s x But I get: context expected 1 value, received 2 values: 1 (set 3 10) (By the way, this operation would be nice to have in racket/set.) David _ For list-related administrative tasks: http://lists.racket-lang.org/listinfo/dev
Re: [racket-dev] Release Announcement for v5.0.1
On 7/27/10 11:17 PM, Eli Barzilay wrote: The release announcement sketch that I have so far is below. Please send edits or (changes in order) if you see anything. * Changes (as part of 5.0) in the `racket' language compared to the `scheme' language include constructor-style printing, a `struct' alternative to `define-struct' that fits more naturally with `match' and constructor-style printing, bytecode-dependency management via SHA-1 hashes instead of just timestamps, and a reorganization of `scheme/foriegn' into `ffi/unsafe' and associated libraries. foriegn * The core type system of Typed Racket has been substantially revised. In particular, Typed Racket can now follow significantly more sophisticated reasoning about the relationships between predicates. Additionally, Typed Racket now allows variable arity types in more places, allowing programmers to specify variable-arity lists. substantially, significantly, sophisticated Weasel words. http://matt.might.net/articles/shell-scripts-for-passive-voice-weasel-words-duplicates/ * Typed Racket now provides a type-based optimizer that is activated when the code starts with `#:optimize'. It can improve the performance of many operations such as list, vector and struct accesses and is especially useful for floating-point intensive programs (which can get faster by a factor of 3). This is feature is still being developed, and it will become the default behavior in the near future. This is feature is... * The `generator' from `racket/generator' is requires to have this form: (generator () body ...), due to a planned extension where a generator will accept arguments. is requires _ For list-related administrative tasks: http://lists.racket-lang.org/listinfo/dev
Re: [racket-dev] (planet cce/scheme) --> collects/unstable
On 6/7/10 3:58 PM, Carl Eastlund wrote: In response to requests from a vocal few, I have added (nearly) all the contents of my cce/scheme planet package to the "unstable" collection. Anyone who has been waiting for non-planet versions of these libraries to use in the main collections, here you go. Planet authors should continue to use the planet versions for now, as the "unstable" code is subject to change, removal for unused portions, and "promotion" to other libraries for popular portions. I hope this gets promoted quickly and incorporated into the docs for planet development since if you're not using cce/scheme/planet your package is almost surely broken. David _ For list-related administrative tasks: http://lists.racket-lang.org/listinfo/dev