@jbclements What’s the right alternative to (void)
? (I think there may be a syntax property works, or maybe the alternative to (void)
returned by set!
is the right choice.)
Can anybody give me some pointers on debugging scribble example code? raco setup
is timing out while compiling examples and the output always says [running body]
where the line number should be.
what happens when you run racket FILE.scrbl
?
racket thinks for a second and then exits
no output
that’s good
what about raco scribble FILE.scrbl
?
that will render the document, if everything works
[Output to cmx.html]
followed by lots of lines beginning with (dep
or (tech
seems to be working on my local machine
here’s the actual error: http://pkg-build.racket-lang.org/server/built/fail/cmx.txt
travis does not complain either
oh, does raco setup
time out on your machine?
no, never
ok then, I guess the package server has stricter time / memory limits
raco test
has a --drdr
option … I was hoping raco setup
had something similar but I don’t see anything just now
what is drdr?
@dedbox From the pkg-build error, it looks like you may be creating a sandbox within the document (for examples, I assume) and that sandbox has a time limit. That is, it’s not a limit imposed by the package-build system, but probably just the package-build machine being slower. You could use call-with-trusted-sandbox-configuration
to remove the limit (and all other limits) while creating the sandbox evaluator, or you could set other parameters like sandbox-eval-limits
.
build/test server
@mflatt that’s right, this is in a sandbox. Removing the limits would be easiest.
Thanks!
BTW, I started experimenting with a preview tool for slideshow in DrRacket. It’s still very experimental but I don’t have much time to hack on it so I’ll share the link in case anyone wants to contribute some hacking: https://github.com/takikawa/slideshow-preview-tool
Does DrDr build packages for the official catalog? Are those constraints published somewhere?
I think drdr and the package build are on different servers
@asumu I recall seeing a code doing something similar before: https://github.com/swo/laterna/blob/master/slide-watcher.rkt
Oh nice, maybe that makes my plugin unnecessary. That would be good.
Your plugin would be useful anyway - the code I linked is quite hard to find
Fellow slackers,
I’d like to pre-announce the initial release of my event programming library, event-lang
.
https://pkgd.racket-lang.org/pkgn/package/event-lang
This will be my first Racket package release and I’m asking for your help to get it right.
Event-lang is a Racket library that simplifies the creation of complex synchronizable events. It provides a primitive expression lifting form,
> (pure 123)
#<evt>
some event combinators,
> (sync (fmap + (pure 1) (pure 2)))
3
> (sync (app (pure +) (pure 1) (pure 2)))
3
> (sync (bind (pure 1) (pure 2) (λ xs (pure (apply + xs)))))
3
and a collection of event-friendly alternatives to base Racket forms and functions.
> (sync
(event-let
([x (pure 1)]
[y (pure 2)])
(pure (list x y))))
'(1 2)
Composite events make progress by synchronizing constituent events, either concurrently or in a predictable sequence.
> (sync (async-set (pure 1) (pure 2) (pure 3)))
2
1
3
For an example of event-lang
in the wild, look inside the cmx
package, an (unreleased) communications library I’m also working on.
The event-lang project has three core objectives:
Provide a sophisticated lifting form to simplify usage of the provided constructs. The
event/event
module contains a first approximation, but its construction was tedious and error prone, so I commented out the docs.Provide a full-blown
#lang event/racket/base
for producing whole modules of events and event constructors from ordinary Racket code in a principled manner.Provide support for static analysis of synchronization behaviors. Event programming in Racket is a curious form of meta-programming, and a few simple compile-time checks could reduce cognitive overhead.
If event-lang
might be useful to you, or you’ve thought about making something similar, please take a look and let me know what you think.