Re: [racket-users] packages with separate -lib -test and -doc [Was: Package layout in docs]

2017-02-03 Thread Matthew Flatt
At Fri, 3 Feb 2017 17:17:18 -0800 (PST), Dupéron Georges wrote:
> if there was a way to refer to a module with @racketmodname[] only if
> it is installed (a "weak" documentation reference, if you will)

That's supported as `@racketmodname[ #:indirect]`.

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: [racket-users] link: bad variable linkage

2017-02-03 Thread Robby Findler
This is the commit:

https://github.com/racket/drracket/commit/81d74e484c306c3584030cf8ede29825c0e8be1a

I pushed it around the time 6.5 was released and it is the kind of
thing I would do right after a release branch has been created, so
probably it was only 6.6 and later.

Robby



On Fri, Feb 3, 2017 at 7:15 PM, Dan Liebgold
 wrote:
> On Saturday, March 26, 2016 at 4:53:51 PM UTC-7, Robby Findler wrote:
>> Matthew and I have figured out one way in which DrRacket could go
>> wrong here and implemented a better strategy. The problem we
>> identified doesn't explain the symptoms expressed here in this thread
>> exactly, but it is a complex system and maybe there was some piece
>> missing from the explanations that I didn't think to ask about.
>> Finger's crossed that it helps!
>>
>
> I was getting this error and variations on it somewhat often in version 6.5. 
> Do you think upgrading to 6.8 will help?
>
> Thanks,
> Dan
>
> --
> You received this message because you are subscribed to the Google Groups 
> "Racket Users" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to racket-users+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


[racket-users] packages with separate -lib -test and -doc [Was: Package layout in docs]

2017-02-03 Thread Dupéron Georges
Hi Neil,

I'm starting a new thread to avoid hijacking the "Package layout in docs" 
thread.

Le mardi 31 janvier 2017 20:25:31 UTC+1, Neil Van Dyke a écrit :
> Greg Trzeciak wrote on 01/31/2017 01:24 PM:
> > Speaking of packages - there seems to be a trend recently in racket 
> > packages to create separate packages for main, lib, doc, test, etc. This 
> > causes an artificial inflation in available packages and IMHO may cause 
> > some confusion for newcomers as instead of finding eg. "PackageX" we now 
> > get the following instead:
> 
> I agree with Greg that this looks like people are going out of their way 
> to make clutter.  I don't think that ever should have been encouraged.

I have two such packages which are split in pkg/lib/test/doc. In both cases, it 
was not my desire, but rather a constraint.

In the first case, the whole package was taking too long to build on pkg-build, 
and that package (as well as those depending on it) were therefore marked as 
failing to build. There's a hard 20 minutes limit on pkg-build, it is not a 
very fast machine (Travis builds the package *and* all its dependencies in 
about 15 minutes), and performance varies from build to build, due to the 
server's load I guess — it sometimes takes several minutes more than usual, and 
having builds randomly fail every time I push a change or one of the 
dependencies is changed is not acceptable.

In the second case, I was referring in the documentation to uses of the 
package: "this package is used for example to build 
@racketmodname[package-bar]". Unfortunately, this creates a cyclic dependency 
(foo's doc depends on bar's doc, and bar depends on foo). The pkg-build server 
and raco pkg can handle cyclic dependencies, I think, but all the packages part 
of the cycle have to be built at the same time on pkg-build (within the 20 
minutes time frame). In order to avoid timeouts in the future, and in order to 
avoid having this messy cyclic dependency, I chose to split out the 
documentation.

In both cases, I'd rather avoid doing so. If there was a way to increase the 
timeout on pkg-build, and if there was a way to refer to a module with 
@racketmodname[] only if it is installed (a "weak" documentation reference, if 
you will), then I would not have needed to split these two packages (a painful 
operation which I really would have preferred to avoid). The first point 
(timeout) has been discussed several times, so I remain hopeful that at some 
point in the future the timeout becomes configurable. The second point seems 
more like an edge case, and I'm not sure it is actually a good idea, and I'm 
not sure scribble has the right primitives to do this (knowing that if a 
weakly-referred-to module name or defproc is installed, the documentation for 
the referring package needs to be rebuilt).

Simply grouping together the packages in the catalog seems like a good idea to 
me, as there will always be some reasons to need to do this.

Cheers,
-- 
Georges Dupéron

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: [racket-users] link: bad variable linkage

2017-02-03 Thread Dan Liebgold
On Saturday, March 26, 2016 at 4:53:51 PM UTC-7, Robby Findler wrote:
> Matthew and I have figured out one way in which DrRacket could go
> wrong here and implemented a better strategy. The problem we
> identified doesn't explain the symptoms expressed here in this thread
> exactly, but it is a complex system and maybe there was some piece
> missing from the explanations that I didn't think to ask about.
> Finger's crossed that it helps!
> 

I was getting this error and variations on it somewhat often in version 6.5. Do 
you think upgrading to 6.8 will help?

Thanks,
Dan

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: [racket-users] Confused about syntax properties

2017-02-03 Thread Sam Tobin-Hochstadt
On Fri, Feb 3, 2017 at 10:38 AM, Dupéron Georges
 wrote:
> * I'm not 100% sure if #%stratified-body, #%plain-module-begin and 
> #%printing-module-begin can be overridden in a useful way or not.

`#%stratified-body` is a way to get an older kind of internal
definition context, useful for implementing forms that are more
restrictive than Racket's usual internal definitions. It can't be
overridden in those contexts, typically.

`#%plain-module-begin` is a renaming of `#%module-begin` from
`'#%kernel`, similar to `#%plain-app`.

`#%printing-module-begin` is just like the module-begin form used by
`#lang racket`, but without adding any submodules.

Other uses of the "#%" prefix: Typed Racket names the submodule with
contract definitions `#%contract-defs`.

Sam

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: [racket-users] Confused about syntax properties

2017-02-03 Thread Laurent
Thanks, that's very informative!

On Fri, Feb 3, 2017 at 10:38 AM, Dupéron Georges <
jahvascriptman...@gmail.com> wrote:

> Le vendredi 3 février 2017 11:28:47 UTC+1, Laurent Orseau a écrit :
> > I see. So basically all #% things are extension points?
> > The list for the racket language:
> >
> > http://docs.racket-lang.org/search/index.html?q=%23%25%20L%3Aracket
>
> I think #% just means "low-level".
> * #%declare,  #%expression, #%require, #%provide and #%variable-reference
> are built-in forms with special meanings, and it does not really make sense
> to override them.
> * #lang racket/base overrides #%app, and re-provides the original as
> #%plain-app, so it is just an alias for the #%app from the '#%kernel. The
> same goes for #%plain-lambda.
> * #%app, #%datum, #%module-begin, #%top and #%top-interaction are
> extension points (for function calls, self-quoting data, handling the body
> of the entire module, unbound variables and REPL interactions, respectively)
> * I'm not 100% sure if #%stratified-body, #%plain-module-begin and
> #%printing-module-begin can be overridden in a useful way or not.
>
> --
> You received this message because you are subscribed to the Google Groups
> "Racket Users" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to racket-users+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: [racket-users] Confused about syntax properties

2017-02-03 Thread Dupéron Georges
Le vendredi 3 février 2017 11:28:47 UTC+1, Laurent Orseau a écrit :
> I see. So basically all #% things are extension points?
> The list for the racket language:
> 
> http://docs.racket-lang.org/search/index.html?q=%23%25%20L%3Aracket 

I think #% just means "low-level".
* #%declare,  #%expression, #%require, #%provide and #%variable-reference are 
built-in forms with special meanings, and it does not really make sense to 
override them.
* #lang racket/base overrides #%app, and re-provides the original as 
#%plain-app, so it is just an alias for the #%app from the '#%kernel. The same 
goes for #%plain-lambda.
* #%app, #%datum, #%module-begin, #%top and #%top-interaction are extension 
points (for function calls, self-quoting data, handling the body of the entire 
module, unbound variables and REPL interactions, respectively)
* I'm not 100% sure if #%stratified-body, #%plain-module-begin and 
#%printing-module-begin can be overridden in a useful way or not.

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: [racket-users] Confused about syntax properties

2017-02-03 Thread Laurent
I see. So basically all #% things are extension points?
The list for the racket language:
http://docs.racket-lang.org/search/index.html?q=%23%25%20L%3Aracket

On Fri, Feb 3, 2017 at 10:04 AM, Dupéron Georges <
jahvascriptman...@gmail.com> wrote:

> Le vendredi 3 février 2017 10:56:10 UTC+1, Laurent Orseau a écrit :
> > Btw, with "Macro Hiding: Disabled" we can see that after foo is turned
> into #'1 (printed '1' in the macro stepper), then the 1 is 'tagged' with
> (#%datum . 1) and then right after that turned into (quote 1). Is the
> tagging step necessary for numbers?
>
> Yes, self-quoting values like numbers, vectors, booleans, strings etc. are
> wrapped with (#%datum).
>
> This is an extension point which allows languages to decide what to do
> with such values. For example, a language could disallow the use of some
> kinds of data, by making #%datum throw an error. This could also be used to
> treat the contents of vectors as expressions, so that (let ([x 1]) #(x x
> x)) produces #(1 1 1).
>
> Similar extension points are #%top, which is wrapped around unbound
> variables, and #%app, which is prepended to all function calls.
>
> --
> You received this message because you are subscribed to the Google Groups
> "Racket Users" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to racket-users+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: [racket-users] Confused about syntax properties

2017-02-03 Thread Dupéron Georges
Le vendredi 3 février 2017 10:56:10 UTC+1, Laurent Orseau a écrit :
> Btw, with "Macro Hiding: Disabled" we can see that after foo is turned into 
> #'1 (printed '1' in the macro stepper), then the 1 is 'tagged' with (#%datum 
> . 1) and then right after that turned into (quote 1). Is the tagging step 
> necessary for numbers?

Yes, self-quoting values like numbers, vectors, booleans, strings etc. are 
wrapped with (#%datum).

This is an extension point which allows languages to decide what to do with 
such values. For example, a language could disallow the use of some kinds of 
data, by making #%datum throw an error. This could also be used to treat the 
contents of vectors as expressions, so that (let ([x 1]) #(x x x)) produces #(1 
1 1).

Similar extension points are #%top, which is wrapped around unbound variables, 
and #%app, which is prepended to all function calls.

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: [racket-users] Confused about syntax properties

2017-02-03 Thread Laurent
Very nice example, thanks Georges.

Btw, with "Macro Hiding: Disabled" we can see that after foo is turned into
#'1 (printed '1' in the macro stepper), then the 1 is 'tagged' with
(#%datum . 1) and then right after that turned into (quote 1). Is the
tagging step necessary for numbers?


On Fri, Feb 3, 2017 at 5:26 AM, Dupéron Georges  wrote:

> PS: a nice example to try in the macro stepper, to see the evaluation
> order:
>
> #lang racket
> (define-syntax (foo stx) #'1)
> (define-syntax (bar stx) #'foo)
>
> (let ()
>   bar
>   (let ()
> bar
> (let ()
>   bar
>   bar)
> (#%expression bar)
> bar)
>   (+ bar bar)
>   bar)
>
> --
> You received this message because you are subscribed to the Google Groups
> "Racket Users" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to racket-users+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.