[racket-users] Why struct type doesn't include field names?

2019-06-13 Thread Sorawee Porncharoenwase
Several struct extensions need to construct accessors unhygienically even
though the accessors can be extracted from struct types. The reason is that
there’s not enough information to establish connection between field names
and accessors.

For instance, consider struct* from racket/match.

#lang racket

(module submodule racket
  (provide struct-id)
  #;(provide struct-id-a struct-id-b)
  (struct struct-id (a b)))

(require 'submodule)

(match (struct-id 1 2)
  [(struct-id p q) (printf "~a ~a\n" p q)])

#;(match (struct-id 1 2)
  [(struct* struct-id ([a p] [b q])) (printf "~a ~a\n" p q)])

The above code runs fine. Notice that we only provide struct-id from the
submodule, but match could still destruct the struct correctly because it
can obtain accessors from the struct type inside struct-id.

However, if we uncomment the second comment, the code fails with the error:

; struct*: field name not associated with given structure type
;   at: struct-id-b
;   in: (struct* struct-id ((a p) (b q)))

By uncommenting code inside the submodule to provide struct-id-b and
struct-id-a, the code now runs fine again.

As I understand, the reason why struct* and other struct extensions like
kw-make-struct 
couldn’t use accessors extracted from struct-id is that there’s no mapping
from field name to accessors.

Hence the question: why struct type doesn’t include field names?

-- 
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.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/racket-users/CADcuegvjQ_%2BgYg_VQb4TG-czSAMzZJOtZ0K3Ge7c_XNUO2QzCQ%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.


[racket-users] Re: Git-Backed Racket Packages, git archive

2019-06-13 Thread Eric Eide
Philip McGrath  writes:

> According to §2.2 Package Sources, for a Git package source in the syntax
> ‹scheme›://‹host›/.../‹repo› [.git][/][?path=‹path›][#‹rev›], "the package’s
> checksum is the hash identifying ‹rev› if ‹rev› is a branch or tag, otherwise
> ‹rev› itself serves as the checksum."

Thanks!  This seems to be exactly what I want!

-- 
---
Eric Eide   . University of Utah School of Computing
http://www.cs.utah.edu/~eeide/ . +1 (801) 585-5512 voice, +1 (801) 581-5843 FAX

-- 
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.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/racket-users/m1blz0svcb.fsf%40cs.utah.edu.
For more options, visit https://groups.google.com/d/optout.


Re: [racket-users] managing competing access to filesystem within places

2019-06-13 Thread George Neuner


On 6/13/2019 9:16 PM, Matthew Butterick wrote:
On Jun 13, 2019, at 10:04 AM, Matthew Flatt > wrote:


I recommend a lock-serving place in Pollen to manage concurrency for
parallel rendering. Don't let multiple places try to read and/or write
to the same file, and don't try to use filesystem locks.


Thanks for the suggestion. I see what you mean. Locking the source 
file being rendered did reduce the filesystem errors ...


... but it didn't eliminate them. The wrinkle is that in the typical 
Pollen project, many (or even all) these source files may transitively 
rely on writing the same template file, e.g., "template.html.p". I 
could lock that file too, but then other renders that rely on it would 
be blocked, which would tend to relinearize the job.


I don't know Pollen or your program architecture, so apologies if this 
is a dumb suggestion.


I assume there is no required ordering to the "blocks" that you are 
trying to render in parallel - i.e. it doesn't matter in what order the 
output gets written to the template so long as each output block is 
written contiguously  (not interspersed with another).


If so, it would seem that each worker place could write into its own 
temporary output file, and when finished pass the file back to the 
dispatcher (task master) and let it assemble the final output.  My 
understanding is that places can pass file descriptors within the same 
system, so although the dispatcher would have to copy finished work into 
the template, the rendered content itself would not need to be passed 
(piped,messaged), and since there would be just a single writer (the 
dispatcher), you wouldn't need to lock the output template file(s).


YMMV,
George

--
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.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/racket-users/0ecd411a-2ebd-9d5c-1a92-d07dbf443a30%40comcast.net.
For more options, visit https://groups.google.com/d/optout.


Re: [racket-users] managing competing access to filesystem within places

2019-06-13 Thread Matthew Flatt
At Thu, 13 Jun 2019 18:16:50 -0700, Matthew Butterick wrote:
> 
> > On Jun 13, 2019, at 10:04 AM, Matthew Flatt  wrote:
> > 
> > I recommend a lock-serving place in Pollen to manage concurrency for
> > parallel rendering. Don't let multiple places try to read and/or write
> > to the same file, and don't try to use filesystem locks.
> 
> 
> Thanks for the suggestion. I see what you mean. Locking the source file being 
> rendered did reduce the filesystem errors ... 
> 
> ... but it didn't eliminate them. The wrinkle is that in the typical
> Pollen project, many (or even all) these source files may
> transitively rely on writing the same template file, e.g.,
> "template.html.p". I could lock that file too, but then other renders
> that rely on it would be blocked, which would tend to relinearize the
> job.

The compilation part of `raco setup` recovers some parallelism by
detecting "prefetch" messages that are generated by the `require`
macro. The prefetch messages report modules that will be demanded soon
via the module name resolver, so compilation can start on them in
parallel. It doesn't recover the potential parallelism completely, but
it helps. Generating and/or catching prefetch messages might be a good
way to go in your case, too.

> As an alternative to file locking, I tried having each rendering
> place attempt the render three times with a short delay in between.
> On the idea that a temporary filesystem error is likely to resolve by
> the third try, and a permanent failure (e.g., a problem with the
> source file itself) will not, and can be raised as a "real" error.
> 
> Maybe there is a secretly perncious aspect to this muddle-through-it 
> technique, though it does avoid the relinearization problem.

Oh, don't do that. Unreliable workarounds to concurrency problems
really do come back to bite you later.

-- 
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.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/racket-users/5d02fbdb.1c69fb81.35914.1662SMTPIN_ADDED_MISSING%40gmr-mx.google.com.
For more options, visit https://groups.google.com/d/optout.


Re: [racket-users] managing competing access to filesystem within places

2019-06-13 Thread Matthew Butterick

> On Jun 13, 2019, at 10:04 AM, Matthew Flatt  wrote:
> 
> I recommend a lock-serving place in Pollen to manage concurrency for
> parallel rendering. Don't let multiple places try to read and/or write
> to the same file, and don't try to use filesystem locks.


Thanks for the suggestion. I see what you mean. Locking the source file being 
rendered did reduce the filesystem errors ... 

... but it didn't eliminate them. The wrinkle is that in the typical Pollen 
project, many (or even all) these source files may transitively rely on writing 
the same template file, e.g., "template.html.p". I could lock that file too, 
but then other renders that rely on it would be blocked, which would tend to 
relinearize the job.

As an alternative to file locking, I tried having each rendering place attempt 
the render three times with a short delay in between. On the idea that a 
temporary filesystem error is likely to resolve by the third try, and a 
permanent failure (e.g., a problem with the source file itself) will not, and 
can be raised as a "real" error. 

Maybe there is a secretly perncious aspect to this muddle-through-it technique, 
though it does avoid the relinearization problem.

-- 
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.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/racket-users/982C42C2-CC6A-4DB1-8168-D6803A9D502A%40mbtype.com.
For more options, visit https://groups.google.com/d/optout.


Re: [racket-users] Re: Git-Backed Racket Packages, git archive

2019-06-13 Thread Philip McGrath
According to §2.2 Package Sources
,
for a Git package source in the syntax
‹scheme›://‹host›/.../‹repo›[.git][/][?path=‹path›][#‹rev›], "the package’s
checksum is the hash identifying ‹rev› if ‹rev› is a branch or tag,
otherwise ‹rev› itself serves as the checksum."


-Philip


On Thu, Jun 13, 2019 at 6:17 PM Eric Eide  wrote:

> Sam Tobin-Hochstadt  writes:
>
> > What do you need the hash for? Could you get the hash from the package
> > system, for example:
>
> I want to know the ("a") hash so that I can reliably reproduce outputs,
> diagnose crashes, etc.
>
> The package hash might work; thank you for pointing it out!  I'll have to
> investigate how I can easily navigate from a package hash to a particular
> version of the package.  (I.e., the moral equivalent of `git checkout
> `.)
>
> Eric.
>
> --
>
> ---
> Eric Eide   . University of Utah School of
> Computing
> http://www.cs.utah.edu/~eeide/ . +1 (801) 585-5512 voice, +1 (801)
> 581-5843 FAX
>
> --
> 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.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/racket-users/m1o931ruzr.fsf%40gris-dmz.flux.utah.edu
> .
> 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.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/racket-users/CAH3z3gYpw81E2xJ1QaX%2BtgvSj-CZpFV-%3DP3%2BVvxQiDqU0c4qLA%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.


[racket-users] Re: Git-Backed Racket Packages, git archive

2019-06-13 Thread Eric Eide
Sam Tobin-Hochstadt  writes:

> What do you need the hash for? Could you get the hash from the package
> system, for example:

I want to know the ("a") hash so that I can reliably reproduce outputs,
diagnose crashes, etc.

The package hash might work; thank you for pointing it out!  I'll have to
investigate how I can easily navigate from a package hash to a particular
version of the package.  (I.e., the moral equivalent of `git checkout `.)

Eric.

-- 
---
Eric Eide   . University of Utah School of Computing
http://www.cs.utah.edu/~eeide/ . +1 (801) 585-5512 voice, +1 (801) 581-5843 FAX

-- 
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.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/racket-users/m1o931ruzr.fsf%40gris-dmz.flux.utah.edu.
For more options, visit https://groups.google.com/d/optout.


Re: [racket-users] Re: Git-Backed Racket Packages, git archive

2019-06-13 Thread Sam Tobin-Hochstadt
What do you need the hash for? Could you get the hash from the package
system, for example:

> (require pkg/lib)
> (pkg-info-checksum (hash-ref (installed-pkg-table) "z3"))
"84059a4428454cc6edd57865befaedb1d29dedce"

Sam

On Thu, Jun 13, 2019 at 2:59 PM Eric Eide  wrote:
>
> Matthew Flatt  writes:
>
> > The simplistic answer is that `git-checkout` doesn't support a `git
> > archive`-like mode. And a practical answer is that no one is likely to
> > implement it in the near term. :)
>
> Thanks for the explanation!
>
> As you might have guessed, my goal is to figure out how to insert a git commit
> hash into a package installed in the "non-developer way."
>
> --
> ---
> Eric Eide   . University of Utah School of 
> Computing
> http://www.cs.utah.edu/~eeide/ . +1 (801) 585-5512 voice, +1 (801) 581-5843 
> FAX
>
> --
> 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.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/racket-users/m1tvcttipk.fsf%40gris-dmz.flux.utah.edu.
> 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.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/racket-users/CAK%3DHD%2BYWp5JV%2BGD43MqNKVf3jZ%3DiRsywySOR6GGXHC0o%3DNX1Ug%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.


Re: [racket-users] exact rationals in interactions window

2019-06-13 Thread Robby Findler
Does this help?

(let ([cp (current-print)])
  (current-print
   (λ (x)
 (define sp (open-output-string))
 (parameterize ([current-output-port sp])
   (cp x))
 (display (get-output-string sp)

On Thu, Jun 13, 2019 at 12:20 PM Jos Koot  wrote:
>
>
>
> Hi
>
>
>
> Is it possible to instruct DrRacket to display non-integer exact rationals 
> with a slash in stead of a horizontal line?
>
> If so, how? I tried current-print and the like, but without success.
>
>
>
> Jos
>
> --
> 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.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/racket-users/5d0285e1.1c69fb81.4a5ab.43b8%40mx.google.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.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/racket-users/CAL3TdOOPtQksHALS2B_i2vkrZLSw5TukhL7EnLeU3vvuJMWYVw%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.


[racket-users] Re: Git-Backed Racket Packages, git archive

2019-06-13 Thread Eric Eide
Matthew Flatt  writes:

> The simplistic answer is that `git-checkout` doesn't support a `git
> archive`-like mode. And a practical answer is that no one is likely to
> implement it in the near term. :)

Thanks for the explanation!

As you might have guessed, my goal is to figure out how to insert a git commit
hash into a package installed in the "non-developer way."

-- 
---
Eric Eide   . University of Utah School of Computing
http://www.cs.utah.edu/~eeide/ . +1 (801) 585-5512 voice, +1 (801) 581-5843 FAX

-- 
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.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/racket-users/m1tvcttipk.fsf%40gris-dmz.flux.utah.edu.
For more options, visit https://groups.google.com/d/optout.


Re: [racket-users] Re: Git-Backed Racket Packages, git archive

2019-06-13 Thread Matthew Flatt
At Thu, 13 Jun 2019 11:24:03 -0600, Eric Eide wrote:
> As described here ,
> 
> > When a Git repository is specified as a package source, then a copy of the
> > repository content is installed as the package implementation. That
> > installation mode is designed for package consumers, who normally use a
> > package without modifying it.
> 
> My understanding is that "the copy of the repository content" is
> produced simply, e.g., by checking out the repository at the
> appropriate commit and then discarding the `.git` directory.

In case it helps clarify: The repository content is obtained not using
`git` in a shell, which would create portability and dependency
problems for Racket, but using `git-checkout` from the
`net/git-checkout` library. The `git-checkout` function doesn't create
a ".git" subdirectory for metadata.

Since only the "content" (is there a better technical term?) of a
commit is checked out, there's no ".git" to remove. Operationally,
though, I think you mean that it's equivalent to `git clone` followed
by removing the ".git" directory, which sounds right.

> An alternative would be to produce the repository content by running `git
> archive`.  This would allow certain transformations to be made on the content,
> e.g., inserting the commit hash into one of the exported files.  One could do
> other minor tricks as well, like excluding "junk" files.  See the ATTRIBUTES
> section of the man page at .
> 
> Is there a reason why the Racket package system doesn't run `git archive` to
> produce the content for the "non-developer" version of a package?

The simplistic answer is that `git-checkout` doesn't support a `git
archive`-like mode. And a practical answer is that no one is likely to
implement it in the near term. :)

Note that there's a notion of "source package" and "built package"
pruning at the Racket package-system level, and it at least includes a
`git archive`-like option in "info.rkt" for omitting files.[*] By
default, bundling a package skips a ".git" subdirectory. There could be
a `git archive` layer in addition, though.

[*] https://docs.racket-lang.org/pkg/strip.html

-- 
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.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/racket-users/20190613182959.10F60650110%40mail-svr1.cs.utah.edu.
For more options, visit https://groups.google.com/d/optout.


[racket-users] Re: Git-Backed Racket Packages, git archive

2019-06-13 Thread Eric Eide
Argh, I screwed up the subject line of my question email :-/.

I always have to remind myself that the command is `git archive`, not `git
export`.  Sorry for any confusion.

-- 
---
Eric Eide   . University of Utah School of Computing
http://www.cs.utah.edu/~eeide/ . +1 (801) 585-5512 voice, +1 (801) 581-5843 FAX

-- 
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.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/racket-users/m1k1dpv19c.fsf%40gris-dmz.flux.utah.edu.
For more options, visit https://groups.google.com/d/optout.


[racket-users] Git-Backed Racket Packages, git export

2019-06-13 Thread Eric Eide
As described here ,

> When a Git repository is specified as a package source, then a copy of the
> repository content is installed as the package implementation. That
> installation mode is designed for package consumers, who normally use a
> package without modifying it.

My understanding is that "the copy of the repository content" is produced
simply, e.g., by checking out the repository at the appropriate commit and then
discarding the `.git` directory.

An alternative would be to produce the repository content by running `git
archive`.  This would allow certain transformations to be made on the content,
e.g., inserting the commit hash into one of the exported files.  One could do
other minor tricks as well, like excluding "junk" files.  See the ATTRIBUTES
section of the man page at .

Is there a reason why the Racket package system doesn't run `git archive` to
produce the content for the "non-developer" version of a package?

Thanks ---

Eric.

-- 
---
Eric Eide   . University of Utah School of Computing
http://www.cs.utah.edu/~eeide/ . +1 (801) 585-5512 voice, +1 (801) 581-5843 FAX

-- 
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.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/racket-users/m1o931v1os.fsf%40gris-dmz.flux.utah.edu.
For more options, visit https://groups.google.com/d/optout.


[racket-users] exact rationals in interactions window

2019-06-13 Thread Jos Koot

Hi

Is it possible to instruct DrRacket to display non-integer exact rationals with 
a slash in stead of a horizontal line?
If so, how? I tried current-print and the like, but without success.

Jos

-- 
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.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/racket-users/5d0285e1.1c69fb81.4a5ab.43b8%40mx.google.com.
For more options, visit https://groups.google.com/d/optout.


Re: [racket-users] managing competing access to filesystem within places

2019-06-13 Thread Matthew Flatt
I recommend a lock-serving place in Pollen to manage concurrency for
parallel rendering. Don't let multiple places try to read and/or write
to the same file, and don't try to use filesystem locks.

You can use filesystem locks to manage concurrency, but it's not
convenient. Part of the problem is that there's no blocking operation
to take a lock (due to the underlying OS abstractions). You can also
use atomic filesystem operations to achieve the effect of locks or
transactions, but it's really difficult to get that right.

For the compilation part of `raco setup`, parallel builds rely on a
combination of atomic filesystem actions plus the main place acting as
a lock server. That is, a place can only compile a file if it can get
permission for the file from the main place, and it reports back to the
main place when the file has been compiled. If you run two `raco
setup`s or `raco pkg install`s at the same time, things can go wrong,
because the lock server within one multi-place process is important.

For the document-building part of `raco setup`, you're right that it
relies mostly on independent document rendering. Pollen rendering is
probably more like the compilation part of `raco setup`. Document
rendering in `raco setup` uses a shared cross-reference database, but
concurrency at that level is managed by database transactions (as
implemented somehow in SQLite).

At Thu, 13 Jun 2019 09:28:33 -0700, Matthew Butterick wrote:
> To Pollen, I've recently added a parallel-rendering facility with places, in 
> emulation of how Racket docs are rendered in parallel.
> 
> But it doesn't quite work — I get intermittent / inconsistent errors from the 
> filesystem (for instance, certain files that should exist do not, or certain 
> files that shouldn't exist, do)
> 
> My intuition about places is weak. But it seems to me that Scribble renders 
> are largely independent (= happening in separate folders on the filesystem). 
> Whereas within a Pollen project, the rendered sources are often relying on 
> shared files (for instance, a "template.html"). So there is more direct 
> competition for use of certain files, which perhaps is Bad News.
> 
> Is there a rule of thumb for how to manage these conflicts? For instance, is 
> it better to just avoid having places try to read or write from the same 
> files? Is there some filesystem-blocking technique that can be used to make 
> sure reads & writes don't collide? 
> 
> -- 
> 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.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/racket-users/2A49317F-F4C8-4EF2-B144-E8846571
> DD7F%40mbtype.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.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/racket-users/20190613170407.51E56650111%40mail-svr1.cs.utah.edu.
For more options, visit https://groups.google.com/d/optout.


[racket-users] managing competing access to filesystem within places

2019-06-13 Thread Matthew Butterick
To Pollen, I've recently added a parallel-rendering facility with places, in 
emulation of how Racket docs are rendered in parallel.

But it doesn't quite work — I get intermittent / inconsistent errors from the 
filesystem (for instance, certain files that should exist do not, or certain 
files that shouldn't exist, do)

My intuition about places is weak. But it seems to me that Scribble renders are 
largely independent (= happening in separate folders on the filesystem). 
Whereas within a Pollen project, the rendered sources are often relying on 
shared files (for instance, a "template.html"). So there is more direct 
competition for use of certain files, which perhaps is Bad News.

Is there a rule of thumb for how to manage these conflicts? For instance, is it 
better to just avoid having places try to read or write from the same files? Is 
there some filesystem-blocking technique that can be used to make sure reads & 
writes don't collide? 

-- 
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.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/racket-users/2A49317F-F4C8-4EF2-B144-E8846571DD7F%40mbtype.com.
For more options, visit https://groups.google.com/d/optout.


[racket-users] nj-symbols

2019-06-13 Thread Jos Koot
To whom may be interested,
Repository https://github.com/joskoot/nj-symbols
Provides procedures for the exact computation of the squares of 3j-, 6j- and 
9j-symbols.
For documentation a scribble module is included.
Jos

-- 
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.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/racket-users/5d026282.1c69fb81.9eed6.0c2b%40mx.google.com.
For more options, visit https://groups.google.com/d/optout.


[racket-users] Re: 7 GUIs

2019-06-13 Thread Maciek Godek

And one more thing,
someone provided a purely functional solution for the Draggable Rectangle 
Challenge in F# (I think it might be interesting to some).
The links can be found here:
https://www.quora.com/What-does-object-oriented-programming-do-better-than-functional-programming-and-why-is-it-the-most-popular-paradigm-when-everybody-seems-to-say-functional-programming-is-superior/answer/Panicz-Godek/comment/89048060

W dniu czwartek, 13 czerwca 2019 13:40:46 UTC+2 użytkownik Maciek Godek 
napisał:

>
>
> W dniu niedziela, 2 czerwca 2019 01:47:20 UTC+2 użytkownik Matthias 
> Felleisen napisał:
>>
>>
>> Someone recently mentioned the “7 GUIs” task. I spent a couple of days to 
>> write up minimal solutions: 
>>
>>  https://github.com/mfelleisen/7GUI/blob/master/task-7.rkt 
>>
>> In my spare time, I will develop this repo in more depth (types, units, 
>> etc) because it looks like a reasonably educational task. 
>>
>>
> FWIW I also came up with an even more interesting benchmark for GUIs, that 
> I called "The Draggable Rectangle Challenge"
>
> Here's one description
>
>
> https://eidolon-language.quora.com/Draggable-rectangle-challenge-part-I-the-introduction
>
> the solutions (in fairly portable Scheme, Racket-compatible) are described 
> on the blog.
>
> The code (presented by me on Racketfest) is also available in the repo 
> (with the required modules for Racket):
>
> https://github.com/panicz/sracket
>
> (BTW slides for the Racketfest talk can be found here: 
> https://github.com/panicz/writings/tree/master/talks/racketfest)
>
>

-- 
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.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/racket-users/02154b24-742a-4082-b7c7-d8f0cf50a67c%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


[racket-users] Re: 7 GUIs

2019-06-13 Thread Maciek Godek


W dniu niedziela, 2 czerwca 2019 01:47:20 UTC+2 użytkownik Matthias 
Felleisen napisał:
>
>
> Someone recently mentioned the “7 GUIs” task. I spent a couple of days to 
> write up minimal solutions: 
>
>  https://github.com/mfelleisen/7GUI/blob/master/task-7.rkt 
>
> In my spare time, I will develop this repo in more depth (types, units, 
> etc) because it looks like a reasonably educational task. 
>
>
FWIW I also came up with an even more interesting benchmark for GUIs, that 
I called "The Draggable Rectangle Challenge"

Here's one description

https://eidolon-language.quora.com/Draggable-rectangle-challenge-part-I-the-introduction

the solutions (in fairly portable Scheme, Racket-compatible) are described 
on the blog.

The code (presented by me on Racketfest) is also available in the repo 
(with the required modules for Racket):

https://github.com/panicz/sracket

(BTW slides for the Racketfest talk can be found here: 
https://github.com/panicz/writings/tree/master/talks/racketfest)

-- 
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.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/racket-users/e02e37bd-7fec-4fad-b354-359c7b827133%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


[racket-users] going to icfp?

2019-06-13 Thread Jesse Alama
Who's all going to this year's ICFP in Berlin? (https://icfp19.sigplan.org)
-- 
Jesse Alama
https://lisp.sh

-- 
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.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/racket-users/m21rzyuipz.fsf%40Jesses-MacBook.fritz.box.
For more options, visit https://groups.google.com/d/optout.