paul
2018-10-29 12:15:22

Okay, great. I’ll investigate more carefully and then comment.


pocmatos
2018-10-29 13:18:52

On a bare bones system where I am building racket I am seeing: raco setup: --- building documentation --- raco setup: docs failure: setup: install SQLite to build documentation


pocmatos
2018-10-29 13:18:58

Why is sqlite necessary to build the docs?


samth
2018-10-29 13:22:48

@pocmatos the documentation system uses sqlite for cross references


pocmatos
2018-10-29 13:23:30

@samth ah! ok. understood. thanks.


paul
2018-10-29 13:33:44

I’ve found information on creating distributions, but is there a page that lists the tools that are used during a build?


samth
2018-10-29 13:34:22

@paul what kind of tools (and which build) do you mean?


paul
2018-10-29 13:53:54

Building Racket in my cloned repository. There must be a list of tools required, such as a C compiler.

Ah, perhaps if I just want to modify and test one Racket code module, I don’t need to do a complete build. Is there a discussion of how to work on a module?


samth
2018-10-29 13:55:24

@paul it depends on the platform, but I don’t think there’s a list of tools written down. It’s a fairly standard set of compilation dependencies.


samth
2018-10-29 13:56:51

As for a single module, it really depends what package the module is part of. https://blog.racket-lang.org/2017/09/tutorial-contributing-to-racket.html parts (2) and (3) cover the differences between whether it’s part of a package that’s in the racket repository, or in some other repository.


paul
2018-10-29 14:22:30

Yes, that is where I got the idea that I have to build Racket in order to work on the language. But one person’s “fairly standard set” is another person’s installation list. :sunglasses: I’ll set aside a day to build the system. Meanwhile, I can comment on issues after investigating them. Thanks!


samth
2018-10-29 15:31:56

@mflatt I don’t understand why this program doesn’t have a continuation barrier error: (let ([t #t]) (let ([v (list (call/cc (lambda (k) k)))]) (if t (begin (set! t #f) (call-with-continuation-barrier (lambda () (list ((car v) 'bye))))) v))) It seems like when we install k, it’s removing a barrier and replacing it with a continuation that is not a tail of the current continuation (in particular, the replacing continuation has a let binding and a list creation that aren’t in the current continuation at that point).


lexi.lambda
2018-10-29 15:34:17

Don’t continuation barriers only protect “downward jumps” (that is, continuation invocations that would install new barriers), and that example doesn’t ever capture a continuation with the barrier in place? But maybe I’m misunderstanding the example.


samth
2018-10-29 15:34:54

@lexi.lambda the docs say “It may remove continuation barriers only through jumps to continuations that are a tail of the current continuation.” which seems to disallow what’s going on there


mflatt
2018-10-29 15:35:17

Yes, I think the documentation is wrong when it says “may remove continuation barriers only through jumps to continuations that are a tail of the current continuation.”


mflatt
2018-10-29 15:36:08

(That might have been true once. More likely, it was intended to be true once, not really true, and not a good idea.)


lexi.lambda
2018-10-29 15:36:56

Interesting, I never actually noticed that sentence at all (and am not entirely sure what it would mean, but I don’t feel like I have a very good intuitive handle on delimited continuations in general, so that doesn’t mean very much).


pocmatos
2018-10-29 16:18:03

@paul If you’re on Linux I can give you a pretty good list of deps. From someone who always builds it based on docker image for debian:stable-slim I know what’s needed.


pocmatos
2018-10-29 16:18:51

@abmclin Thanks for the presentation with @mflatt on racketcs. That’s a really good one. Was that a recent conference? Doesn’t look like racketcon though.


abmclin
2018-10-29 16:19:35

@pocmatos I believe it was at the Scheme Workshop which was concurrent with racketcon at the same location


pocmatos
2018-10-29 16:20:39

Thanks!


pocmatos
2018-10-29 16:21:03

Ah, if I go to youtube, it does say it in the video description. Shame these presentations don’t get more exposure: https://www.youtube.com/channel/UCoKRhx2TCYTX4dils7-eAJw


abmclin
2018-10-29 16:37:06

agreed, there’s quite a few fascinating presentation topics at that workshop


paul
2018-10-29 16:39:23

@pocmatos Thanks, but I’m on Windows. I figure I’ll just fire up a build and watch the craziness break loose.


pocmatos
2018-10-29 16:40:07

Sorry @paul can’t help on Windows.


abmclin
2018-10-29 16:46:48

@paul I build Racket often on Windows. It’s easy to do if you have Visual Studio installed


abmclin
2018-10-29 16:47:48

I think the current Racket codebase requires Visual Studio 12 or 13. The most recent Visual Studio is not yet supported


abmclin
2018-10-29 16:48:32

alternatively you could try building using MinGW tool suite which supports Unix style building for Windows, the instructions are in INSTALL.txt


lexi.lambda
2018-10-29 17:08:30

Is http://bugs.racket-lang.org\|bugs.racket-lang.org inaccessible now? I would like to look at an old PR but just get a login screen. (I also don’t know who actually manages that site, or who ever did… maybe @mflatt or @samth know?)


samth
2018-10-29 17:21:37

@lexi.lambda I’m in charge of that site, but it shouldn’t be inacessible


lexi.lambda
2018-10-29 17:22:04

@samth If I go to http://bugs.racket-lang.org/query/, I just get a login screen.


samth
2018-10-29 17:22:12

Yes I see that too


samth
2018-10-29 17:22:28

it’s working with my login, but that shouldn’t be needed


mflatt
2018-10-29 17:26:52

VS 2017 is now supported


lexi.lambda
2018-10-29 17:32:44

@samth Is there some way I can see the details of PR 13085?


samth
2018-10-29 17:33:46

the relevant bit is: The documentation for continuation barriers seems to suggest that the removal of a barrier via a control operator is always okay, but that the addition of a barrier is not allowed. However, the following snippet seems to be a counterexample: #lang racket (define f (call-with-continuation-prompt (lambda () (call/cc (lambda (k) k))))) (call-with-continuation-prompt (lambda () (call-with-continuation-barrier (lambda () (f 5))))) `f` is an abortive continuation from `call/cc`, which will just remove the single barrier inside the second prompt. It produces this error though: continuation application: attempt to cross a continuation barrier Is there another barrier being inserted somehow by this example that causes it to fail? The relevant documentation snippet says: Specifically, a continuation can be replaced by another only when the replacement does not introduce any continuation barriers (but it may remove them).


lexi.lambda
2018-10-29 17:35:33

Ah, so there wasn’t any further discussion about what the correct behavior is, the documentation was just updated (possibly incorrectly) in an attempt to describe the behavior at the time?


samth
2018-10-29 17:38:50

@mflatt then said: I think the solution here is to fix the documentation. In the implementation, a barrier can be removed only though a jump to a continuation that is a tail of the current continuation. And then @asumu closed it with this change: https://github.com/racket/racket/commit/27aa999446


lexi.lambda
2018-10-29 17:40:54

Aha, thanks! It does look like your program does, indeed, produce an error on old versions of Racket, so this commit mflatt mentioned probably did change the behavior: https://github.com/racket/racket/commit/544b7a3d53966f58a4d4970ac882a748a357363e


lexi.lambda
2018-10-29 17:41:15

I was mostly just curious. :)


samth
2018-10-29 17:41:23

no problem


abmclin
2018-10-29 17:49:27

Awesome, that’s good to know


paul
2018-10-29 18:29:42

@abmclin I’ll go the MinGW route. Thanks for pointing out INSTALL.TXT.


paul
2018-10-29 18:30:34

Question for anyone: When I respond to an issue at GitHub, does the appropriate person get notified?


samth
2018-10-29 18:30:58

@paul in general, yes


paul
2018-10-29 23:06:32

There are boolean?, null?, void?, etc., but eof-object?. Is there a reason for the -object? I notice that Heresy provides eof?.


samth
2018-10-29 23:32:35

I think it’s to avoid confusion with ports that are at the end of file, but mostly it’s historical


jxxcarlson
2018-10-30 01:20:09

I am following the “Fear of Macros” article and am looking at > (define-syntax (our-if-v2 stx) (define xs (syntax->list stx)) (datum->syntax stx `(cond [,(cadr xs) ,(caddr xs)] [else ,(cadddr xs)]))) What is the role of the commas? Doesn’t work without them.


jxxcarlson
2018-10-30 01:25:10

?? unquote ??


abmclin
2018-10-30 01:25:13

@jxxcarlson a comma is an abbreviation for unquote which only works with quasiquote which is also abbreviated with a backtick. It’s an effective way to assemble arbitrary s-exps out of values. You sometimes see it used to create syntax pieces.

See https://docs.racket-lang.org/guide/qq.html


jxxcarlson
2018-10-30 01:27:16

Ah — ok! I understand now. Thanks!!