[racket-users] The Racket programming language mailing list has moved!!

2023-07-21 Thread Racket Users
The Racket programming language mailing list is deprecated and gets very 
little traffic. 

Forum/mailing list discussion has moved to https://racket.discourse.group/ 
- this is a web forum that supports use via email like a mailing list.

Please use this invitation: 
https://racket.discourse.group/invites/VxkBcXY7yL
The welcome post includes a link mailing list access guidance for those who 
prefer it. 

Best regards

Stephen

-- 
This group is deprecated and retained as an archive. 

Racket discussions have moved to the Racket Discourse at  
https://racket.discourse.group/ .

---
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.
--- 
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/7fafdede-dba2-4afc-9343-91266ea0ad2bn%40googlegroups.com.


[racket-users] PLDI 2023 Student Research Competition (SRC)

2022-12-12 Thread 'PLDI 2023 Publicity Chairs' via Racket Users
. For some 
cross-over, we will organize for a TV in the in-person session, which will 
rotate through the virtual posters.

The top three undergraduate participants and the top three graduate 
participants (selected across both the virtual and in-person tracks) will 
proceed to the Final Presentation Round. The final round of SRC will be 
conducted in a conference room where in-person finalists will first present 
(streamed over Zoom), and virtual finalists will present via Zoom. Both the 
virtual and in-person judges/attendees will get a chance to ask questions 
during the Q session after each talk.

## Participation

The Student Research Competition (SRC) at PLDI has always strived to improve 
engagement and accessibility to students around the world. To this aim, we will 
provide the opportunity for a round of asynchronous peer-review discussions 
amongst the SRC participants. The peer-review process is an opportunity for the 
SRC speakers to share their feedback, ask questions to their fellow peers, and 
help them make improvements for the poster and presentation round. This is also 
an opportunity for in-person and virtual speakers to engage prior to the SRC 
poster round.

We hope to utilize our experiences over the last two years to enable sufficient 
engagement in both tracks. We will work to provide tooling support, 
organization, and publicity to ensure all participants have a positive 
experience.

Good luck, and we hope to see you in June!

## SRC Chairs:
- Chandrakana Nandi, Certora, inc.
- Jubi Taneja, Microsoft Research


--
PLDI 2023 Publicity Chairs
 William J. Bowman
 Anders Miltner

-- 
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/beaa2ef6-afd2-4686-829a-390eb69f5620n%40googlegroups.com.

Beyond the Racket Users Google Group, Racket Discussions take place on 
Discourse ( https://racket.discourse.group/ ) and Discord ( 
https://discord.gg/6Zq8sH5 ). Discussion (but less active) also takes place on 
the Racket Slack https://racket.slack.com/ ( sign up at 
https://racket-slack.herokuapp.com/ ), and IRC #racket 
https://kiwiirc.com/nextclient/irc.libera.chat/#racket
--- 
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/Y5eoHc6D3DrXI8nq%40williamjbowman.com.


[racket-users] TFPIE 2023 call for submissions (deadline Dec 27th)

2022-12-03 Thread 'Elena Machkasova' via Racket Users
Please consider submitting, and spread the word!

TFPIE 2023 Call for papers
https://wiki.tfpie.science.ru.nl/TFPIE2023
(January 12th 2023, Boston, MA, USA, co-located with TFP 2023 and followed
by
POPL 2023)

TFPIE 2023 welcomes submissions describing techniques used in the classroom,
tools used in and/or developed for the classroom and any creative use of
functional programming (FP) to aid education in or outside Computer Science.
Topics of interest include, but are not limited to:

  FP and beginning CS students
  FP and Computational Thinking
  FP and Artificial Intelligence
  FP in Robotics
  FP and Music
  Advanced FP for undergraduates
  FP in graduate education
  Engaging students in research using FP
  FP in Programming Languages
  FP in the high school curriculum
  FP as a stepping stone to other CS topics
  FP and Philosophy
  The pedagogy of teaching FP
  FP and e-learning: MOOCs, automated assessment etc.
  Best Lectures - more details below

In addition to papers, we are requesting best lecture presentations. What's
your
best lecture topic in an FP related course? Do you have a fun way to
present FP
concepts to novices or perhaps an especially interesting presentation of a
difficult topic? In either case, please consider sharing it. Best lecture
topics
will be selected for presentation based on a short abstract describing the
lecture and its interest to TFPIE attendees. The length of the presentation
should be comparable to that of a paper. In addition, the speaker can
provide
commentary on effectiveness or student feedback.

Submissions

Potential presenters are invited to submit an extended abstract (4-6 pages)
or
a draft paper (up to 20 pages) in EPTCS style. The authors of accepted
presentations
will have their preprints and their slides made available on the workshop's
website.
Papers and abstracts can be submitted via easychair at the following link:

https://easychair.org/conferences/?conf=tfpie2023

After the workshop, presenters are invited to submit (a revised version of)
their
article for the formal review. The PC will select the best articles for
publication
in the Electronic Proceedings in Theoretical Computer Science (EPTCS).
Articles
rejected for presentation and extended abstracts will not be formally
reviewed
by the PC.

Important Dates

 Submission deadline: December 27th 2022, Anywhere on Earth.
 Notification: December 30th 2022 (Note: earlier submissions will receive
earlier response)
 TFPIE Registration Deadline: see https://trendsfp.github.io/register.html
 Workshop: January 12th 2023
 Submission for formal review: April 19th 2023, Anywhere on Earth.
 Notification of full article: May 24th 2023
 Camera ready: July 1st 2023

Program Committee

Christopher Anand - McMaster University, Canada
Attila Egri-Nagy - Akita International University, Japan
Jason Hemann - Seton Hall University, USA
Kevin Kappelmann - Technical University of Munich, Germany
Elena Machkasova (Chair) - University of Minnesota Morris, USA
Kristina Sojakova - INRIA, France
Jørgen Villadsen - Technical University of Denmark, Denmark

Invited Speaker:

Shriram Krishnamurthi, Brown University

Registration information:

See https://wiki.tfpie.science.ru.nl/TFPIE2023 for updated information.

Registration and attendance are mandatory for at least one author of every
paper
that is presented at the workshop.

Only papers that have been presented at TFPIE may be submitted to the
post-reviewing process.


-- 
Dr. Elena Machkasova
Associate Professor of Computer Science
Division of Science and Mathematics
University of Minnesota, Morris
Office: Sci 2325
(320) 589-6308
http://cda.morris.umn.edu/~elenam/
Pronouns: she/her/hers or any other

-- 
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/beaa2ef6-afd2-4686-829a-390eb69f5620n%40googlegroups.com.

Beyond the Racket Users Google Group, Racket Discussions take place on 
Discourse ( https://racket.discourse.group/ ) and Discord ( 
https://discord.gg/6Zq8sH5 ). Discussion (but less active) also takes place on 
the Racket Slack https://racket.slack.com/ ( sign up at 
https://racket-slack.herokuapp.com/ ), and IRC #racket 
https://kiwiirc.com/nextclient/irc.libera.chat/#racket
--- 
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/CABVKp4f1siE27gwhHTj85LXvRUFv3nCSB7hdNNEY79vLz_j_Jg%40mail.gmail.com.


[racket-users] TFPIE 2023 call for submissions (deadline Dec 27th)

2022-10-21 Thread 'Elena Machkasova' via Racket Users
Please consider submitting and spread the word!

TFPIE 2023 Call for papers
https://wiki.tfpie.science.ru.nl/TFPIE2023
(January 12th 2023, Boston, MA, USA, co-located with TFP 2023 and POPL 2023)

TFPIE 2023 welcomes submissions describing techniques used in the classroom,
tools used in and/or developed for the classroom and any creative use of
functional programming (FP) to aid education in or outside Computer Science.
Topics of interest include, but are not limited to:

  FP and beginning CS students
  FP and Computational Thinking
  FP and Artificial Intelligence
  FP in Robotics
  FP and Music
  Advanced FP for undergraduates
  FP in graduate education
  Engaging students in research using FP
  FP in Programming Languages
  FP in the high school curriculum
  FP as a stepping stone to other CS topics
  FP and Philosophy
  The pedagogy of teaching FP
  FP and e-learning: MOOCs, automated assessment etc.
  Best Lectures - more details below

In addition to papers, we are requesting best lecture presentations. What's 
your
best lecture topic in an FP related course? Do you have a fun way to 
present FP
concepts to novices or perhaps an especially interesting presentation of a
difficult topic? In either case, please consider sharing it. Best lecture 
topics
will be selected for presentation based on a short abstract describing the
lecture and its interest to TFPIE attendees. The length of the presentation
should be comparable to that of a paper. In addition, the speaker can 
provide
commentary on effectiveness or student feedback.

Submissions

Potential presenters are invited to submit an extended abstract (4-6 pages) 
or
a draft paper (up to 20 pages) in EPTCS style. The authors of accepted 
presentations
will have their preprints and their slides made available on the workshop's 
website.
Papers and abstracts can be submitted via easychair at the following link:

https://easychair.org/conferences/?conf=tfpie2023

After the workshop, presenters are invited to submit (a revised version of) 
their
article for the formal review. The PC will select the best articles for 
publication
in the Electronic Proceedings in Theoretical Computer Science (EPTCS). 
Articles
rejected for presentation and extended abstracts will not be formally 
reviewed
by the PC.

Important Dates

  Submission deadline: December 27th 2022, Anywhere on Earth.
  Notification: December 30th 2022 (Note: earlier submissions will 
receive earlier response)
  TFPIE Registration Deadline: TBA
  Workshop: January 12th 2023
  Submission for formal review: April 19th 2023, Anywhere on Earth.
  Notification of full article: May 24th 2023
  Camera ready: July 1st 2023

Program Committee

Christopher Anand - McMaster University, Canada
Attila Egri-Nagy - Akita International University, Japan
Jason Hemann - Seton Hall University, USA
Kevin Kappelmann - Technical University of Munich, Germany
Elena Machkasova (Chair) - University of Minnesota Morris, USA
Kristina Sojakova - INRIA, France
Jørgen Villadsen - Technical University of Denmark, Denmark

Registration information

See https://wiki.tfpie.science.ru.nl/TFPIE2023 for updated information. 

Registration and attendance are mandatory for at least one author of every 
paper
that is presented at the workshop. Presenters will have their registration 
fee waived.

Only papers that have been presented at TFPIE may be submitted to the 
post-reviewing
process.

Best regards,
Elena  Machkasova (program committee chair)




-- 
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/beaa2ef6-afd2-4686-829a-390eb69f5620n%40googlegroups.com.

Beyond the Racket Users Google Group, Racket Discussions take place on 
Discourse ( https://racket.discourse.group/ ) and Discord ( 
https://discord.gg/6Zq8sH5 ). Discussion (but less active) also takes place on 
the Racket Slack https://racket.slack.com/ ( sign up at 
https://racket-slack.herokuapp.com/ ), and IRC #racket 
https://kiwiirc.com/nextclient/irc.libera.chat/#racket
--- 
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/1f42dee7-49b4-4300-b37e-de0258cdfb95n%40googlegroups.com.


[racket-users] PLDI 2023, Call for Workshops and Tutorials

2022-10-11 Thread 'William J. Bowman' via Racket Users
Please distribute widely:

# Call for Workshops and Tutorials

PLDI 2023 is a world-class forum for researchers and practitioners in 
programming language design and implementation. As in previous years, PLDI is 
soliciting proposals for co-located workshops and tutorials that will take 
place on **Saturday June 17th**, and **Sunday June 19th**. Please propose your 
workshop or tutorial via the submission system.

The following details will be asked on submission:

* Name of the workshop/tutorial.
* Duration of the workshop/tutorial.
* Organizers: names, affiliation, contact information, brief (100 words) 
biography.
* A short description (150-200 words) of the topic.
* Event format: workshop/tutorial; type of submissions, if any; review process; 
results dissemination.
* Expected attendance and target audience within the PLDI community.
* How you plan to foster an inclusive environment and promote a diverse 
attendance.
* Information on any previous iterations of the workshop or tutorial.

*Note:* Workshops must make their own acceptance decisions by **April 21, 
2023** if there will be proceedings (final versions due **May 5, 2023**), or 
**May 5, 2023** if they do not have proceedings.

## Submission
Submission site: 
https://pldi23.sigplan.org/createProposal/56d4b837-caa0-487c-85b8-61f855c8aa4f

Workshops that would like their proceedings included in the ACM Digital Library 
must submit a proposal by **November 18, 2022**.

Workshops and tutorials that will have no formal proceedings should submit a 
proposal by **November 30, 2022**.

## Review

Proposals are reviewed by the Workshop and Tutorials Chairs, and if necessary, 
by the PLDI general chair.

* Proposals will be evaluated according to the relevance of the topic, the 
expertise and experience of the workshop organizers, and their potential to 
attract participants.
* Proposals submitted between November 18th and 30th will be evaluated on a 
first-come-first-served basis.

## Notification

We will notify workshop/tutorial acceptance by **December 9th*.

## Timeline

Submission deadline (with proceedings): **November 18**

Submission deadline (no proceedings): **November 30**

Notification: **December 9**

## Dissemination

A proposal should clearly state how the results of the workshop — i.e., 
published papers and other outcomes — will be made available to participants 
and others before and after the workshop event. The Workshops and Tutorials 
Chair will provide guidance to the organizers of accepted workshops that wish 
to publish proceedings in the ACM Digital Library. For those that choose to 
publish their papers in ACM Digital Library, please add the following text in 
the workshop call for papers and on the website:

*AUTHORS TAKE NOTE:* The official publication date is the date the proceedings 
are made available in the ACM Digital Library. This date may be up to two weeks 
prior to the first day of your conference. The official publication date 
affects the deadline for any patent filings related to published work. (For 
those rare conferences whose proceedings are published in the ACM Digital 
Library after the conference is over, the official publication date remains the 
first day of the conference.)

Workshops that elect to publish proceedings can do so in the ACM Digital 
Library with sponsoring by SIGPLAN. The application for SIGPLAN sponsorship 
includes reviewing the proposed program committee with the SIGPLAN Executive 
Committee, a process which the chairs will help facilitate.

## Workshop Co-Chairs
- Nadia Polikarpova, U. of California at San Diego
- Zachary Tatlock, U. of Washington

-- 
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/beaa2ef6-afd2-4686-829a-390eb69f5620n%40googlegroups.com.

Beyond the Racket Users Google Group, Racket Discussions take place on 
Discourse ( https://racket.discourse.group/ ) and Discord ( 
https://discord.gg/6Zq8sH5 ). Discussion (but less active) also takes place on 
the Racket Slack https://racket.slack.com/ ( sign up at 
https://racket-slack.herokuapp.com/ ), and IRC #racket 
https://kiwiirc.com/nextclient/irc.libera.chat/#racket
--- 
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/Y0XHINh8UXgsshbT%40williamjbowman.com.


Re: [racket-users] Writing a "command-line front-end" for a language

2022-09-08 Thread 'Reuben Thomas' via Racket Users
On Mon, 5 Sept 2022 at 02:20, Shu-Hung You 
wrote:

>
> Okay, if you want to bypass the #lang protocol entirely, here is the
> needed code. As you have expected, it uses eval and then calls
> dynamic-require.
>

Thanks very much for this code and detailed explanation, that was a great
help.

-- 
https://rrt.sc3d.org

-- 
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/CAOnWdojbFzJeD63jKeciqY0Zqq7WdXB5v%2B__qpwH2N9uEEJHFQ%40mail.gmail.com.


Re: Fwd: [racket-users] Writing a "command-line front-end" for a language

2022-09-08 Thread 'Reuben Thomas' via Racket Users
On Sun, 4 Sept 2022 at 19:39, Philip McGrath 
wrote:

>
> You may indeed want a tool that supports files without #lang if you are
> working with an existing language and there isn't a way to make the #lang
> line acceptable to its existing grammar.
>

That's exactly it!


> Despite the title of the chapter, this isn't limited to DrRacket: you also
> get editor support for your language in Emacs' racket-mode, VSCode, and
> other clients of the Language Server Protocol.
>

This is very cool! I didn't know until now. In particular, pleasing to this
Emacs user!

>
>- (Small caveat: I have not actually read Beautiful Racket, just
>looked at it admiringly, recommended it to others, and wished MB had
>written it a year earlier than he did.)
>
> I think I've already said I found it a good introduction; I will reiterate
that recommendation!

Thanks very much for the further advice.

-- 
https://rrt.sc3d.org

-- 
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/CAOnWdogXJ1grax-KJw8SDvmCbEK0QsbrmCvrMt_BJ0ygpv0ApQ%40mail.gmail.com.


Re: [racket-users] Math-quiz program

2022-09-06 Thread 'John Clements' via Racket Users
There are two raco tools that might be of use to you: here’s a link to the 
documentation for both of them:

https://docs.racket-lang.org/guide/exe.html

Also, I personally recommend using the discourse forum rather than this mailing 
list. Following the transition to discourse last year, the users mailing list 
is much less frequently used.

https://racket.discourse.group/

John Clements


> On Sep 5, 2022, at 07:25, Hrvoje Blazevic  wrote:
> 
> I've been working last several months on a GUI math training/understanding 
> program for my 6 year old daughter who just started grade 1 (in Philippines - 
> they start beginning of June). 
> Originally I started with addition and subtraction, but as every new topic 
> (math related) was introduced in school (like basic idea of fractions, clock 
> and many others) and as I saw problems in understanding, I would add a new 
> exercise to the program. It contains 12 exercises in all now, and is pretty 
> much complete (I run out of ideas) :-) .
> 
> My problem/question is following. 
> As I've seen with my daughter, the program is very successful in teaching (at 
> least it is with my daughter), and she actually enjoys using it (which was 
> not the case when I originally started with papers of printed problems). 
> Therefore I would like to post this program on the internet for other parents 
> to use, but I can't find where Racket compiled/standalone programs are posted.
> 
> I have of-course found Racket packages repository, but (I admit I know 
> nothing of Racket packages) it does not seem to be what I need. As far as I 
> see it, packages are for people who use racket, have racket installed on 
> their computers, and know how to handle packages. 
> This is definitely not the folks I have in mind for my program.
> 
> So is there such a repository where I can post tarball containing compiled 
> program, and source code.
> 
> Hrvoje Blazevic
> 
> 
> -- 
> 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 
> <mailto:racket-users+unsubscr...@googlegroups.com>.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/racket-users/41d08993-f323-4044-8c7c-239b58dcca8en%40googlegroups.com
>  
> <https://groups.google.com/d/msgid/racket-users/41d08993-f323-4044-8c7c-239b58dcca8en%40googlegroups.com?utm_medium=email_source=footer>.

-- 
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/e6302ee9-c345-45fe-8576-a4fd1223d176%40mtasv.net.


Re: Fwd: [racket-users] Writing a "command-line front-end" for a language

2022-09-04 Thread 'Reuben Thomas' via Racket Users
On Sun, 4 Sept 2022 at 10:31, Reuben Thomas  wrote:

> On Sun, 4 Sept 2022 at 04:13, Philip McGrath 
> wrote:
>
>>
>> However, in some cases you might really want a program other than
>> `racket` as the entry point for your language: for instance, maybe you want
>> to have flags for controlling where the output goes. One example of such a
>> program is the `scribble` executable included in the main Racket
>> distribution. The implementation is in <
>> https://github.com/racket/scribble/blob/master/scribble-lib/scribble/run.rkt>,
>> and the associated "info.rkt" file (<
>> https://github.com/racket/scribble/blob/master/scribble-lib/scribble/info.rkt>)
>> arranges for `raco setup` to create a `scribble` to run it. (This example
>> uses the old mzscheme-launcher-names/mzscheme-launcher-libraries instead of
>> the newer racket-launcher-names/racket-launcher-libraries: see
>> documentation at <
>> https://docs.racket-lang.org/raco/setup-info.html#%28idx._%28gentag._18._%28lib._scribblings%2Fraco%2Fraco..scrbl%29%29%29
>> >.)
>>
>
> Thanks for the pointer.
>
>
>> It is possible to use Racket to implement languages that don't use #lang,
>> but you would loose many advantages like IDE support and well-defined
>> separate compilation, and you would need to use some fairly low-level
>> mechanisms. Unless there is a hard requirement, I'd recommend that you just
>> use #lang in your programs.
>
>
> I'm trying to write a standalone assembler (nothing to do with Racket), so
> I'm happy to lose this advantage!
>

OK, I've had another look, and I still can't see how to do this, so I would
appreciate a hint. I have updated my repo to add a launcher script, but
again this only works with files that have a #lang line. As I said before,
I have worked out how to parse a file without a #lang line (just pass it to
my language's read-syntax), but I can't work out how to turn that into a
module and execute it. I guess I need something like dynamic-require that
takes a syntax-object and an expander module or #%begin-module macro as
arguments?

-- 
https://rrt.sc3d.org

-- 
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/CAOnWdojuQbYuUAkGmN-thwSzq4iEyV%2BA20QzEj1FxUgoRKr5CA%40mail.gmail.com.


Re: Fwd: [racket-users] Writing a "command-line front-end" for a language

2022-09-04 Thread 'Reuben Thomas' via Racket Users
On Sun, 4 Sept 2022 at 04:13, Philip McGrath 
wrote:

>
> However, in some cases you might really want a program other than `racket`
> as the entry point for your language: for instance, maybe you want to have
> flags for controlling where the output goes. One example of such a program
> is the `scribble` executable included in the main Racket distribution. The
> implementation is in <
> https://github.com/racket/scribble/blob/master/scribble-lib/scribble/run.rkt>,
> and the associated "info.rkt" file (<
> https://github.com/racket/scribble/blob/master/scribble-lib/scribble/info.rkt>)
> arranges for `raco setup` to create a `scribble` to run it. (This example
> uses the old mzscheme-launcher-names/mzscheme-launcher-libraries instead of
> the newer racket-launcher-names/racket-launcher-libraries: see
> documentation at <
> https://docs.racket-lang.org/raco/setup-info.html#%28idx._%28gentag._18._%28lib._scribblings%2Fraco%2Fraco..scrbl%29%29%29
> >.)
>

Thanks for the pointer.


> It is possible to use Racket to implement languages that don't use #lang,
> but you would loose many advantages like IDE support and well-defined
> separate compilation, and you would need to use some fairly low-level
> mechanisms. Unless there is a hard requirement, I'd recommend that you just
> use #lang in your programs.


I'm trying to write a standalone assembler (nothing to do with Racket), so
I'm happy to lose this advantage!

There are many possible ways to organize this…


Thanks for this, that's exactly what I was after.

-- 
https://rrt.sc3d.org

-- 
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/CAOnWdogTj%3DzMsqCZJhBv%2BiS8zpU2nqETgsiOOt7Wr7aAOmzNzA%40mail.gmail.com.


Re: [racket-users] Writing a "command-line front-end" for a language

2022-09-04 Thread 'Reuben Thomas' via Racket Users
On Sat, 3 Sept 2022 at 19:10, Shu-Hung You 
wrote:

> Running `racket foo.asm` will produce the desired output, so a shell
> script that directly passes the arguments to Racket could work.
> Otherwise, just use (dynamic-require filename #f) in main.rkt.
>

Thanks for helping!

Don't both of these methods require a #lang line in the input file? That's
not part of the assembly format, so I want to be able to specify the
language in the main module. Indeed, when I try it with a file with a #lang
line, dynamic-require works; when I remove that line, I get an error about
a missing module declaration (no surprise). I can see an obvious
workaround, namely to slurp the file and prepend a module declaration
before dynamic-requiring it, but that's ugly.

So it seems that in fact what I want is to call something like
dynamic-require with a module object. But I'm not sure what to call or how
to get one of those: read-syntax returns a syntax object, not a module,
while I don't (yet) know how to apply my expander's #%module-begin to it to
obtain a module.

At the technical level, foo.asm is in fact an ordinary Racket module,
> just like any other .rkt file. Therefore it can be run in the same way
> using APIs that require and instantiate modules.
>

Right! That's what I've obviously not fully understood yet.

(Thanks for the side node about moving to Discourse—it's a while since I've
been active on the list!)

-- 
https://rrt.sc3d.org

-- 
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/CAOnWdojngwzQRGz0dj1QpA4OJixOKGMXGLrepdae08D8dhpJfQ%40mail.gmail.com.


[racket-users] Writing a "command-line front-end" for a language

2022-09-03 Thread 'Reuben Thomas' via Racket Users
I'm a relative Racket newbie, and I've just enjoyed *Beautiful Racket*.

I am working on a Racket implementation of a simple assembler (for the Hack
VM in the NAND2Tetris course).

I have a partial implementation up and running using #lang lines. I would
like to add a more traditional command-line interface, so I can
(eventually) say:

hackasm foo.asm

on a file without a #lang line.

My code is available at https://github.com/rrthomas/hackasm

Here's the nub of the problem: I can't work out how to call the language
evaluator "manually". I have implemented the language as a dialect, so that
the "main.rkt" module is "free" to be used for the command-line interface.
(Perhaps this can be fixed too, that would be nice!)

A typical assembler file might start like this:

#lang hackasm/asm
@2
D=A
@3

When I run this file (e.g. in DrRacket), I get some output as expected:

0010
11101101
0011

(The assembler outputs ASCII-encoded binary!)

The contents of my main.rkt looks like this:

#lang br/quicklang
(require "parser.rkt" "tokenizer.rkt" (submod "asm.rkt" reader))

(module+ main
  (require racket/cmdline)
  (let ((filename
 (command-line
  #:program "hackasm" ;
  #:args (filename)
  filename)))
(read-syntax filename (open-input-file filename

So far, all I've worked out how to do is run the language's read-syntax
function (imported from parser.rkt), and thereby return the parsed syntax
object as the result.

What I'd like to do is call the evaluator on the parse tree, but after a
lot of scratching my head over the Racket documentation and search results,
I cannot work out how to do that. I presume the code should look something
like:

(eval (??? (read-syntax filename (open-input-file filename

where in the end I'm eval-ing a form, and where ??? represents something
that turns the syntax object into a runnable module.

Apologies for the length of this post (I was unsure how I could make it
shorter), and thanks in advance for any help!

-- 
https://rrt.sc3d.org

-- 
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/CAOnWdohy31fHyvUd9rbY8tZFLJKUpevgnZ8jPH2-5_QtSFm%2BhA%40mail.gmail.com.


[racket-users] Call for Participation PLDI 2022

2022-03-21 Thread 'William J. Bowman (PLDI Publicity Chair)' via Racket Users
Call for Participation for PLDI 2022, the ACM SIGPLAN Conference on Programming 
Language Design and Implementation!


PLDI is a premier forum for programming language research, broadly construed, 
including design, implementation, theory, applications, and performance. 
Come join us, online or in San Diego, to discuss the latest programming 
languages research!

* Website : https://pldi22.sigplan.org/attending/Registration
* Time: 13th--17th June 2022
* Place   : Catamaran Resort in San Diego, California, USA + online option, 
comprising live streamed talks + Q and social interaction and events on 
“gather.town”.

### Important dates:
* Early Registration: On or before 16 May, 2022 

### Important rates:
Registration rates (in-person)  On or before 16 May, 2022After 16 May, 
2022
Regular (ACM or SIGPLAN member) $650 $750
Regular (non-member)$725 $825
Student (ACM or SIGPLAN member) $350 $450
Student (non-member)$425 $500

Registration rates (virtual)On or before 16 May, 2022After 16 May, 
2022
Regular (ACM or SIGPLAN member) $150 $175
Regular (non-member)$175 $200
Student (ACM or SIGPLAN member) $100 $125
Student (non-member)$125 $150 

### Co-located events:

Co-located Conferences:
- ISMM, ACM SIGPLAN International Symposium on Memory Management
  https://conf.researchr.org/home/ismm-2022
- LCTES, ACM SIGPLAN/SIGBED International Conference on Languages, Compilers, 
and Tools for Embedded Systems
  https://pldi22.sigplan.org/track/LCTES-2022

Workshops:
- ARRAY, the Array Programming Workshop
  https://pldi22.sigplan.org/home/ARRAY-2022
- EGRAPH, the E-Graph Research, Applications, Practices, and Human-factors 
Symposium
  https://pldi22.sigplan.org/home/egraphs-2022
- INFER, the Infer Practitioners Workshop
  https://pldi22.sigplan.org/home/infer-2022
- MAPS, the Annual Symposium on Machine Programming
  https://pldi22.sigplan.org/home/maps-2022
- PLMW, the Programming Language Mentoring Workshop
  https://pldi22.sigplan.org/track/PLMW-PLDI-2022
- SOAP, the ACM SIGPLAN International Workshop on the State Of the Art in 
Program Analysis
  https://pldi22.sigplan.org/home/SOAP-2022

Tutorials:
https://pldi22.sigplan.org/track/pldi-2022-tutorials

- Build your own optimizer with egg!
  Max Willsey, Zachary Tatlock
- Discover[i]: Taming Unbounded Distributed Systems with Modular, Bounded 
Reasoning
  Roopsha Samanta, Nouraldin Jaber, Christopher Wagner
- Filling the gap between the JavaScript language specification and tools using 
the JISET family
  Sukyoung Ryu, Jihyeok Park, Seungmin An
- Making C Programs Safer with Checked C
  Jie Zhou, Michael Hicks, John Criswell
- Reasoning About and Discovering LLVM Optimizations
  John Regehr, Nuno P. Lopes

Student Research Competition!
- https://pldi22.sigplan.org/track/pldi-2022-SRC

-- 
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/YjjETlC52k8tBic0%40williamjbowman.com.


[racket-users] TFPIE 2022 March 16 online - last call for participation

2022-03-11 Thread 'Elena Machkasova' via Racket Users
Dear All,

TFPIE 2022 invites you to attend the conference on March 16 online. The 
program and the registration link are posted here:

https://wiki.tfpie.science.ru.nl/TFPIE2022

Registration is free, but required for the zoom link to be sent. 

TFPIE is followed by TFP on March 17-18: 
https://trendsfp.github.io/index.html The registration is the same for the 
two conferences. 

More details:

The 2022 edition of Trends in Functional Programming in Education will be 
held *virtually on March 16th 2022*, together with TFP which will be held 
on March 17-18. Note that *Lambda Days* 
<https://www.lambdadays.org/lambdadays2022> in Krakow, Poland has been 
rescheduled to July 28-29, and authors of TFPIE accepted papers are welcome 
to present their papers at the Lambda Days, in addition to the virtual 
presentations in March.

The goal of TFPIE is to gather researchers, teachers and professionals that 
use, or are interested in the use of, functional programming in education. 
TFPIE aims to be a venue where novel ideas, classroom-tested ideas and 
work-in-progress on the use of functional programming in education are 
discussed. The one-day workshop will foster a spirit of open discussion by 
having a review process for publication after the workshop. 

Hope to see you there!

Elena Machkasova

-- 
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/25b772de-1760-414c-91fa-e8174c604603n%40googlegroups.com.


[racket-users] PLDI 2022 Call for Student Volunteers

2022-03-04 Thread 'William J. Bowman (PLDI 2022 Publicity Co-chair)' via Racket Users
Sign up to be a Student Volunteer (SV) and help us make PLDI 2022 a unique 
experience for all attendants!

PLDI 2022 is pleased to offer a number of opportunities for student volunteers, 
who are vital to the efficient operation and continued success of the 
conference each year. The student volunteer program is a chance for students 
from around the world to participate in the conference whilst assisting us in 
preparing and running the event. In exchange for a fixed number of work hours 
(usually from 12 to 15) helping with the conference organization, you will be 
able to closely interact with researchers, mentors, and other students at PLDI 
2022.

You will be able to support us in-person or virtually. We are looking forward 
to seeing you in the SV team!

Apply using this form: https://forms.gle/iUc857vkwhXXcsBu8

## Eligibility

Applicants can be undergraduate, Master’s, PhD full- or part-time students, of 
computer science or related fields.

## Duration

Applicants must be available for at least four (4) full days between the 12th 
and 17th of June and will be expected to provide 12-15 hours of volunteering 
work in that time. Volunteers will also be expected to be available for some 
amount of pre-conference discussion and training if necessary. Volunteers from 
all timezones are welcome.

## About Volunteering

The skills, talents, and dedication of the Student Volunteers contribute to the 
overall quality of the conference. The Student Volunteer role this year will 
mainly involve working with the organizers to prepare for the conference by 
providing technical assistance to attendees, managing online Q and poster 
sessions, and supporting active communication in our online environment.

## Qualifications

A Student Volunteer should:

- Be enthusiastic and highly motivated, with strong interpersonal skills,
- Be fluent in English, which is the language of the conference,
- Be reliable, punctual and organized.

## Applications

The applications and acceptations will be done in two rounds. Please check the 
dates on this page.

Application form: https://forms.gle/fybjNmPH4F8khQsq7

-- 
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/YiJtGUYvXfbxyN9P%40williamjbowman.com.


[racket-users] Racket v8.4 released

2022-02-09 Thread 'John Clements' via Racket Users
Racket version 8.4 is now available from

https://racket-lang.org/



* Command-line Racket provides a new expression editor by default for
  its read-eval-print loop (REPL). The new REPL is based on the Chez
  Scheme expression editor, but extended to use the same
  language-sensitive syntax coloring and indentation tools as DrRacket.

* Typed Racket adds a kind system, preventing programmers from
  writing nonsensical type expressions. It checks whether type
  constructors are correctly applied to arguments, and separates
  type constructors from polymorphic types. The `:kind` form enables
  checking the kind of a type expression at the REPL. The new system
  also correctly rejects some ill-formed recursive types.

* Racket has a `file-or-directory-stat` for unified information about
  file-system objects.

* DrRacket shows the region affected by an `#;` S-expression comment
  by fading the commented-out region.

* Racket on Chez has faster multiplication and division for some
  numbers.

* Web server: The files dispatcher supports all standard caching-related
  HTTP response headers (e.g., Cache-Control).

* Web server: A new dispatcher captures the common pattern of processing
  HTTP requests and responses in a layered fashion.

* The Web Server supports use of the Cache-Control header, and includes
  a new wrapping dispatcher.

* Expander: add "portal" syntax to support new forms of syntax object
  binding.

* Documentation search is improved.

* Some hash operations support an optional `try-order?` argument.

* The plot-metrics interface has documentation.

* Fonts support OpenType feature settings.

* The Gui library has improved support for Wayland.

* The computation of quadratic roots is further improved.

* The `set/c` contract adds support for random generation.

* DrRacket's interactions window supports #lang-specific coloring
  and indentation.

* DrRacket's parenthesis-based keyboard shortcuts change based on
  the parentheses that each different #lang uses.

* The release includes many other bug repairs and other improvements!

Transition/Update notes:

* To turn off expeditor and make Racket's REPL go back to the old
  editline/readline-based editor, use the command

,input readline

  and then restart Racket. Get back to the new expression editor with

,input expeditor

  To toggle color mode for the new expression editor, use one of the
  following, which does not require restarting Racket:

,color #false
,color #true

* Support for comment fading in DrRacket requires an increment to
  the "WXME" format version so files with non-text content written
  by DrRacket v8.4 will open only in v8.4 and later. This does not
  affect files that consist only of unicode text.

* The addition of the kind system to Typed Racket means that certain
  mild abuses of the type system no longer type check, most notably
  the 'application' of a polymorphic type.


The following people contributed to this release:

Alex Harsányi, Alex Knauth, Alexander Shopov, Alexis King, Andrew
Mauer-Oats, Andy Keep, Ayman Osman, Ben Greenman, Bob Burger, Bogdan
Popa, Cameron Moy, D. Ben Knoble, Fred Fu, Greg Hendershott, Gustavo
Massaccesi, Jamie Taylor, Jarhmander, Jesse Alama, Joel Dueck, John
Clements, Jordan Johnson, Laurent Orseau, Leif Andersen, Marc Burns,
Matthew Flatt, Matthias Felleisen, Mike Engelhart, Mike Sperber, Noah
Ma, Oscar Waddell, Pavel Panchekha, Philip McGrath, rgkirch, Robby
Findler, Sam Tobin-Hochstadt, Sergiu Ivanov, Sorawee Porncharoenwase,
Stefan Schwarzer, Stephen De Gabrielle, Tony Garnock-Jones, Viko Riféo,
and Zachary Mao



Link to package regressions issue for the 8.4 release:
  https://github.com/racket/racket/issues/4125

Feedback Welcome

-- 
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/8c50d317-dd83-44a9-b560-0f7759d49fa1%40mtasv.net.


Re: [racket-users] Vectors, boxes and places

2022-02-03 Thread 'John Clements' via Racket Users
Sounds like a good question to me. Perhaps it would make sense to post it to 
the discourse group, instead? I’m happy to ask on your behalf if you don’t feel 
like it.

https://racket.discourse.group/

John

> On Feb 3, 2022, at 5:58 AM, Tim Jervis  wrote:
> 
> Dear Racketeers,
> 
> Is there something I have misunderstood about vectors, boxes and places which 
> might explain why immutable boxes are not place-message-allowed, but 
> immutable vectors are?
> 
> > (place-message-allowed? (box-immutable #f))
> #f
> > (place-message-allowed? (vector-immutable #f))
> #t
> > 
> 
> c.f.
> 
> https://docs.racket-lang.org/reference/boxes.html 
> 
> A box is like a single-element vector, normally used as minimal mutable 
> storage.
> 
> Best,
> 
> Tim
> 
> -- 
> 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/878F140E-3160-4B88-BB8B-4C04B1668BCB%40timjervis.com.

-- 
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/3b47b917-cbd6-48f2-8def-b71e396f5d63%40mtasv.net.


[racket-users] PLDI SRC 2022 -- Call for Submissions

2022-01-27 Thread 'PLDI Publicity Chair' via Racket Users
 for three hours, in 
which PLDI attendees and in-person judges can walk around and interact with the 
students. The virtual track will be held in a virtual space that will be 
available to all PLDI attendees. In addition, we will have a pool of virtual 
judges that will walk around and interact with the virtual students. For some 
cross-over, we will organize for a TV in the in-person session, which will 
rotate through the virtual posters.

The top three undergraduate participants and the top three graduate 
participants (selected across both the virtual and in-person tracks) will 
proceed to the Final Presentation Round. The final round of SRC will be 
conducted in a conference room where in-person finalists will first present 
(streamed over Zoom), and virtual finalists will present via Zoom. Both the 
virtual and in-person judges/attendees will get a chance to ask questions 
during the Q session after each talk.

# Participation

The Student Research Competition (SRC) at PLDI has always strived to improve 
engagement and accessibility to students around the world. To this aim, we will 
provide the opportunity for a round of asynchronous peer-review discussions 
amongst the SRC participants. The peer-review process is an opportunity for the 
SRC speakers to share their feedback, ask questions to their fellow peers, and 
help them make improvements for the poster and presentation round. This is also 
an opportunity for in-person and virtual speakers to engage prior to the SRC 
poster round.

We hope to utilize our experiences over the last two years to enable sufficient 
engagement in both tracks. We will work to provide tooling support, 
organization, and publicity to ensure all participants have a positive 
experience.

Good luck, and we hope to see you in June!

-- 
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/YfMvFzEDTTP7TrgI%40williamjbowman.com.


[racket-users] TFPIE 2022: moving online and extension to Feb 7th

2022-01-14 Thread 'Elena Machkasova' via Racket Users
Due to rescheduling of the Lambda Days because of COVID, TFPIE, together 
with TFP, will be held virtually on March 16th 2022, together with TFP 
which will be held on March 17-18.

There is an optional opportunity to present at the Lambda Days July 28-29 
2022
in addition to the virtual presentation in March.

Updated TFPIE 2022 Call for papers:
https://wiki.tfpie.science.ru.nl/TFPIE2022

The submission deadline is extended to February 7th 2022.

TFPIE 2022 welcomes submissions describing techniques used in the classroom,
tools used in and/or developed for the classroom and any creative use of
functional programming (FP) to aid education in or outside Computer Science.
Topics of interest include, but are not limited to:

  FP and beginning CS students
  FP and Computational Thinking
  FP and Artificial Intelligence
  FP in Robotics
  FP and Music
  Advanced FP for undergraduates
  FP in graduate education
  Engaging students in research using FP
  FP in Programming Languages
  FP in the high school curriculum
  FP as a stepping stone to other CS topics
  FP and Philosophy
  The pedagogy of teaching FP
  FP and e-learning: MOOCs, automated assessment etc.
  Best Lectures - more details below

In addition to papers, we are requesting best lecture presentations. What's 
your
best lecture topic in an FP related course? Do you have a fun way to 
present FP
concepts to novices or perhaps an especially interesting presentation of a
difficult topic? In either case, please consider sharing it. Best lecture 
topics
will be selected for presentation based on a short abstract describing the
lecture and its interest to TFPIE attendees. The length of the presentation
should be comparable to that of a paper. In addition, the speaker can 
provide
commentary on effectiveness or student feedback.

Submissions

Potential presenters are invited to submit an extended abstract (4-6 pages) 
or
a draft paper (up to 20 pages) in EPTCS style. The authors of accepted 
presentations will have their preprints and their slides made available on 
the workshop's website. Papers and abstracts can be submitted via easychair 
at the following link:

https://easychair.org/conferences/?conf=tfpie2022

After the workshop, presenters are invited to submit (a revised version of) 
their
article for the formal review. The PC will select the best articles for 
publication
in the Electronic Proceedings in Theoretical Computer Science (EPTCS). 
Articles
rejected for presentation and extended abstracts will not be formally 
reviewed
by the PC.

Important Dates (updated)

 Submission deadline: *February 7th* 2022, Anywhere on Earth.
 Notification: *February 11th* 2022 (Note: earlier submissions will receive 
earlier response)
 TFPIE Registration Deadline: TBA
 Workshop: *March 16* 2022
 Submission for formal review: *April 29th* 2022, Anywhere on Earth.
 Notification of full article: June 1st 2022
 Camera ready: July 1st 2022

Program Committee

Peter Achten, Radboud University, Netherlands
Stephen Chang, University of Massachusetts Boston, USA
John Hughes, Chalmers University of Technology, Sweden
Elena Machkasova (Chair) - University of Minnesota Morris, USA
Kristina Sojakova - INRIA, Paris, France
Melinda Tóth, Eötvös Loránd University, Budapest, Hungary

Keynote speaker:

Our keynote talk is "The perfect Functional Programming course" by Peter 
Achten.

Registration information:

TFPIE will take place virtually on March 16 2022, together with TFP which 
will be held on March 17-18. Registration information will be announced 
shortly. There is no registration fee.

Registration and online attendance are mandatory for at least one author of 
every paper that is presented at the workshop.

Only papers that have been presented at TFPIE may be submitted to the 
post-reviewing process.

-- 
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/0d76cca2-8828-4a05-8d32-aa98481a9346n%40googlegroups.com.


[racket-users] looking for advice on a web background process manager

2021-12-30 Thread 'Wayne Harris' via Racket Users
I'm considering writing a manager for background processes --- such as send a 
batch of e-mail or other process that takes a while to finish --- for a web 
system.

I see the challenge here as just writing something that will look like a
very basic UNIX shell --- so I'll call it ``web-api-shell'' from now on.
(``Web'' because it will be used by a web system through some HTTP API.)

This thing has to be flawless. I'm looking for design principles and advice.

I don't know which language I will use, but I'd like to use Racket at
least as a prototype. I am looking at section 15.4 at

https://docs.racket-lang.org/reference/os.html

and I'm not sure it gives me all the control I need. I have a more
lower view of the job --- fork(), execve(), waitpid(), SIGCHLD. But I
suppose Racket handles this much more elegantly that I would in C.

Your advice will be very appreciated.

(*) Where will it run

It will run on GNU systems running the Linux kernel.

(*) My own thoughts

The interface to shell will be through HTTP requests, so this shell will
likely be a web server of some sort. But before I get involved in the
web at all, I need the shell working flawlessly.

So I need a laboratory first. I could write a program that reads some
named pipe on disk to get commands such as ``run this or that'' while I
work. (Later I can write a web server replacing this named-pipe
interface.)

Just like a UNIX shell, this web-api-shell must know all every process
it runs. I suppose the work is essentially fork(), execve() followed by
waitpid().

One concern I have is the following. Is it possible for a process to
simply ``get out of'' the shell? What do I mean by that? A process
that does fork() and puts itself into background would leave the
web-api-shell's control, wouldn't it?

I think I must avoid that. Perhaps I can't let just any process run.
Perhaps the web-api-shell must only offer a few processes carefully
written by myself --- so that I know they won't put themselves in
background. (For instance, I can't let them change PIDs, otherwise I
won't have any idea who they are and that's a mess. I'd love to somehow
restrict system calls such as fork().)

(*) Serialization

I also think this web-api-shell must not be invoked in parallel. So I
guess I must use some queue of requests with no race condition and
pull each request as it comes. Any pointers on how to do this basic
thing with my zero experience?

(*) What is my level of training?

In the past I've studied many parts of

Advanced Programming in the UNIX Environment
W. Richard Stevens

I will definitely have to read it again to get work on this project.
Can you mention any UNIX concepts that are of great relevance for this
project? I don't think I ever got my mind wrapped around things like
sessions, session leaders and so on. Are these concepts relevant to
this application?

Thank you very much.

-- 
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/hRIrZF2NP2tUKP8_HV2lLkFr95li_XmhSrzbJCuR1ruwDxy2qyWgC-vREZPyrJMn0oUWj3N6gzSlQ1PBvs_FrwErvOInegt-CQGpPjDG2gw%3D%40protonmail.com.


[racket-users] Trends in Functional Programming in Education 2022 3rd (last) call for submissions

2021-12-27 Thread 'Elena Machkasova' via Racket Users
TFPIE 2022 Call for papers
https://wiki.tfpie.science.ru.nl/TFPIE2022
(February 11th 2022, Krakow, Poland co-located with TFP 2022 and Lambda 
Days)

TFPIE 2022 welcomes submissions describing techniques used in the classroom,
tools used in and/or developed for the classroom and any creative use of
functional programming (FP) to aid education in or outside Computer Science.
Topics of interest include, but are not limited to:

  FP and beginning CS students
  FP and Computational Thinking
  FP and Artificial Intelligence
  FP in Robotics
  FP and Music
  Advanced FP for undergraduates
  FP in graduate education
  Engaging students in research using FP
  FP in Programming Languages
  FP in the high school curriculum
  FP as a stepping stone to other CS topics
  FP and Philosophy
  The pedagogy of teaching FP
  FP and e-learning: MOOCs, automated assessment etc.
  Best Lectures - more details below

In addition to papers, we are requesting best lecture presentations. What's 
your
best lecture topic in an FP related course? Do you have a fun way to 
present FP
concepts to novices or perhaps an especially interesting presentation of a
difficult topic? In either case, please consider sharing it. Best lecture 
topics
will be selected for presentation based on a short abstract describing the
lecture and its interest to TFPIE attendees. The length of the presentation
should be comparable to that of a paper. In addition, the speaker can 
provide
commentary on effectiveness or student feedback.

Submissions

Potential presenters are invited to submit an extended abstract (4-6 pages) 
or
a draft paper (up to 20 pages) in EPTCS style. The authors of accepted 
presentations
will have their preprints and their slides made available on the workshop's 
website.
Papers and abstracts can be submitted via easychair at the following link:

https://easychair.org/conferences/?conf=tfpie2022

After the workshop, presenters are invited to submit (a revised version of) 
their
article for the formal review. The PC will select the best articles for 
publication
in the Electronic Proceedings in Theoretical Computer Science (EPTCS). 
Articles
rejected for presentation and extended abstracts will not be formally 
reviewed
by the PC.

Important Dates

 Submission deadline: January 5th 2022, Anywhere on Earth.
 Notification: January 10th 2022 (Note: earlier submissions will receive 
earlier response)
 TFPIE Registration Deadline: February 2nd 2022
 Workshop: February 11th 2022
 Submission for formal review: April 15th 2022, Anywhere on Earth.
 Notification of full article: June 1st 2022
 Camera ready: July 1st 2022

Program Committee

Peter Achten, Radboud University, Netherlands
Stephen Chang, University of Massachusetts Boston, USA
John Hughes, Chalmers University of Technology, Sweden
Elena Machkasova (Chair) - University of Minnesota Morris, USA
Kristina Sojakova - INRIA, Paris, France
Melinda Tóth, Eötvös Loránd University, Budapest, Hungary

Keynote speaker

Our keynote talk is "The Perfect Functional Programming Course" by Peter 
Achten.

Registration information

This year TFPIE takes place on the second day of the Lambda Days, 
concurrent with TFP. Participants will need to register for the Lambda 
Days. Please note that TFP and TFPIE have in-person attendance only. For 
registration fee, the deadlines, and the link to register see the Lambda 
Days web site: https://www.lambdadays.org/lambdadays2022

Registration and attendance are mandatory for at least one author of every 
paper
that is presented at the workshop. Presenters will have their registration 
fee waived.

Only papers that have been presented at TFPIE may be submitted to the 
post-reviewing process.

Best regards,
Elena Machkasova

-- 
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/883cedeb-3e7a-452a-bf83-b8f2731dc957n%40googlegroups.com.


Re: [racket-users] HTDP 2ed Learning resources and solutions to exercises

2021-12-22 Thread 'John Clements' via Racket Users
Solutions for the first edition are available at

https://htdp.org/2003-09-26/Solutions/

Also, you will probably find a faster response for questions like this at the 
racket discourse, 

https://racket.discourse.group/

(You might even find a pointer to 2e solutions? not sure)

Best,

John Clements

> On Dec 15, 2021, at 05:31, acate...@gmail.com  wrote:
> 
> Its one of my goals in 2022 to teach myself programming. To kick this goal 
> off early, I have decided to pick up HTDP 2e from Amazon.  After a cursory 
> glance through the book and working through a few problems. I notice that 
> there are no provided solution/ answer to the exercises in the book.  Which 
> means that there is no way to check my solutions against  the proper 
> recommended way to solve the exercises.  As a result, I have no idea if I am 
> actual on the right track in this learning process.  Where can I find the 
> solutions to the exercises in HTDP?  If there are no solutions what book 
> would you recommend that would be suited for a self-learner? 
> 
>  
> Thanks
> 
> 
> -- 
> 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/c5d6d826-c6f8-4d69-a021-9a843e3b58den%40googlegroups.com.

-- 
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/59ba8a1e-f784-4a14-8784-0695ee0a2f63%40mtasv.net.


Re: [racket-users] Discourse - Mailing list mode

2021-12-09 Thread 'John Clements' via Racket Users
I just tried it, from a new account that wasn’t associated with an account, and 
it looks like it went through … which is actually kind of frightening. Can’t a 
random spammer just send email to this address? I considered doing it as a 
stunt, but decided it would be nicer to ask about it first.

John

> On Dec 9, 2021, at 10:52, Sam Tobin-Hochstadt  wrote:
> 
> It appears that enabling this is quite simple. I believe I have set it
> up so that emailing racket+uncategorize...@discoursemail.com should
> create a new topic in the Uncategorized category. Feel free to test it
> out.
> 
> Sam
> 
> On Thu, Dec 9, 2021 at 8:27 AM Stephen De Gabrielle
>  wrote:
>> 
>>> it’s becoming apparent to me that setting up posting via email is frankly 
>>> difficult; I think that monitoring the list using mailing-list mode is 
>>> plausible, but posting, at this point, is not.
>> 
>> I had a chat with a Discourse consultant and they thought posting by email 
>> was possible if you self host, but self hosting with mailing list would 
>> require both a hosting provider, and a send mail provider (he uses digital 
>> ocean with sendgrid or mailgun). Receiving email is handled by the 'mail 
>> receiver container' if you are self hosting.
>> 
>> It was a casual conversation, and I don't know him well.  It would be good 
>> to know if other PL communities have done this
>> 
>> stephen
>> 
>> 
>> 
>> On Wed, Dec 8, 2021 at 6:47 PM 'John Clements' via Racket Users 
>>  wrote:
>>> 
>>> Your points are well taken, and moving away from a traditional mailing list 
>>> is not a decision that we took lightly; the fact is that we were simply 
>>> *failing* when it came to moderating the mailing list as run by google 
>>> groups, and running one through mailman was even worse. It appears that 
>>> discourse will allow us to spread the load of moderating the group across 
>>> the members of the group, rather than depending on one or two points of 
>>> failure.
>>> 
>>> BTW, lest you think that I think that discourse solves all our problems: 
>>> it’s becoming apparent to me that setting up posting via email is frankly 
>>> difficult; I think that monitoring the list using mailing-list mode is 
>>> plausible, but posting, at this point, is not. I guess I shouldn’t be 
>>> shocked: that’s the whole problem with email, it’s not authenticated in any 
>>> reasonable or widely used way.
>>> 
>>> Regardless, I’m happy with the move: we have about 181 people registered, 
>>> and the volume there looks robust and sustainable.
>>> 
>>> John
>>> 
>>>> On Dec 8, 2021, at 13:16, George Neuner  wrote:
>>>> 
>>>> 
>>>> On 12/8/2021 12:34 PM, James Platt wrote:
>>>>> On Dec 8, 2021, at 10:45 AM, George Neuner wrote:
>>>>> 
>>>>>> It's a big deal if you are (or were) following multiple groups.
>>>>> 
>>>>> I don't understand.  Why is this an issue?  I find it very convenient to 
>>>>> filter each group into it's own folder in email.  If this were a 
>>>>> non-technical group, you wouldn't expect everyone to know how to do that 
>>>>> but anyone who is a programmer ought to have no problem configuring 
>>>>> filters and folders.
>>>> 
>>>> If you had continued reading, you would have seen my comment that NOT ALL 
>>>> news groups support list distribution or posting via email. NNTP is not 
>>>> email.  Usenet group moderators[*] can choose how to make their groups 
>>>> available: the default is via list distribution and NNTP both, but the 
>>>> moderator can deliberately disable one or the other - or only enable 
>>>> digests via email, or disable posting.
>>>> 
>>>> My complaint is having to read some things via NNTP and others through 
>>>> email because, while there are programs that do both, I haven't found any 
>>>> single program that does BOTH WELL.  And that is without even considering 
>>>> the growing number of ... don't want to confuse by saying "groups", let's 
>>>> call them "crowds" ... that have abandoned Usenet entirely in favor of web 
>>>> forums.
>>>> 
>>>> George
>>>> 
>>>> [*] even unmoderated groups have a moderator/administrator - by default it 
>>>> is whoever started the group.
>>>> 
>>>> 
>>>> --
>>>> You re

[racket-users] PLDI 2022 Call for (Self-) Nomiation to Artifact Evaluation Committee

2021-12-08 Thread 'William J. Bowman (PLDI'22 Publicity Chair)' via Racket Users
Please distribute widely:

We are looking for motivated students and researchers to be members of the
PLDI 2022 Artifact Evaluation Committee (AEC).  This year, we are accepting
(self-)nominations for the AEC.  The artifact evaluation process aims to
promote, share and catalog the research artifacts of papers accepted to the
PLDI research track.

The self-nomination form is available at:
https://forms.gle/UbLPDdFE4WCohQr28

You can also nominate other people (e.g., students, colleagues) at:
https://forms.gle/nDtW7wtpkGvU8MQBA

The instructions for committee members are available here:
https://pldi22.sigplan.org/track/pldi-2022-PLDI-Research-Artifacts#Info-for-Reviewers

As a committee member, your primary responsibilities would be to review the
artifacts submitted corresponding to the already accepted papers in the
main research track. In particular, you may have to run the associated
tool, check whether the results in the main paper can be reproduced, and
inspect the data.

PLDI will use a three-phase artifact evaluation review process. We expect
the bulk of the review work to take place between March 8 and March 25.
Each artifact will take about 8h to review, and reviewers will be assigned
3 to 4 reviews.

Come join us in improving the quality of research in our field!

AEC Chairs:
- Xinyu Wang, IMDEA Software Institute (Spain)
- Niki Vazou, University of Michigan (U.S.)

-- 
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/YbFDT7VtBrh/fdMI%40williamjbowman.com.


Re: [racket-users] Discourse - Mailing list mode

2021-12-08 Thread 'John Clements' via Racket Users
Your points are well taken, and moving away from a traditional mailing list is 
not a decision that we took lightly; the fact is that we were simply *failing* 
when it came to moderating the mailing list as run by google groups, and 
running one through mailman was even worse. It appears that discourse will 
allow us to spread the load of moderating the group across the members of the 
group, rather than depending on one or two points of failure.

BTW, lest you think that I think that discourse solves all our problems: it’s 
becoming apparent to me that setting up posting via email is frankly difficult; 
I think that monitoring the list using mailing-list mode is plausible, but 
posting, at this point, is not. I guess I shouldn’t be shocked: that’s the 
whole problem with email, it’s not authenticated in any reasonable or widely 
used way.

Regardless, I’m happy with the move: we have about 181 people registered, and 
the volume there looks robust and sustainable.

John

> On Dec 8, 2021, at 13:16, George Neuner  wrote:
> 
> 
> On 12/8/2021 12:34 PM, James Platt wrote:
>> On Dec 8, 2021, at 10:45 AM, George Neuner wrote:
>> 
>> > It's a big deal if you are (or were) following multiple groups.
>> 
>> I don't understand.  Why is this an issue?  I find it very convenient to 
>> filter each group into it's own folder in email.  If this were a 
>> non-technical group, you wouldn't expect everyone to know how to do that but 
>> anyone who is a programmer ought to have no problem configuring filters and 
>> folders.
> 
> If you had continued reading, you would have seen my comment that NOT ALL 
> news groups support list distribution or posting via email. NNTP is not 
> email.  Usenet group moderators[*] can choose how to make their groups 
> available: the default is via list distribution and NNTP both, but the 
> moderator can deliberately disable one or the other - or only enable digests 
> via email, or disable posting.
> 
> My complaint is having to read some things via NNTP and others through email 
> because, while there are programs that do both, I haven't found any single 
> program that does BOTH WELL.  And that is without even considering the 
> growing number of ... don't want to confuse by saying "groups", let's call 
> them "crowds" ... that have abandoned Usenet entirely in favor of web forums.
> 
> George
> 
> [*] even unmoderated groups have a moderator/administrator - by default it is 
> whoever started the group.
> 
> 
> -- 
> 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/5f17-59b4-a381-ddd7-25b435887694%40comcast.net.

-- 
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/bacee3b2-b372-4dd0-af60-c657ba984936%40mtasv.net.


[racket-users] Trends in Functional Programming in Education 2022 2nd call for submissions

2021-12-02 Thread 'Elena Machkasova' via Racket Users
Hope you submit your work to TFPIE 2022!

Elena

TFPIE 2022 Call for papers
https://wiki.tfpie.science.ru.nl/TFPIE2022
(February 11th 2022, Krakow, Poland co-located with TFP 2022 and Lambda 
Days)

TFPIE 2022 welcomes submissions describing techniques used in the classroom,
tools used in and/or developed for the classroom and any creative use of
functional programming (FP) to aid education in or outside Computer Science.
Topics of interest include, but are not limited to:

  FP and beginning CS students
  FP and Computational Thinking
  FP and Artificial Intelligence
  FP in Robotics
  FP and Music
  Advanced FP for undergraduates
  FP in graduate education
  Engaging students in research using FP
  FP in Programming Languages
  FP in the high school curriculum
  FP as a stepping stone to other CS topics
  FP and Philosophy
  The pedagogy of teaching FP
  FP and e-learning: MOOCs, automated assessment etc.
  Best Lectures - more details below

In addition to papers, we are requesting best lecture presentations. What's 
your
best lecture topic in an FP related course? Do you have a fun way to 
present FP
concepts to novices or perhaps an especially interesting presentation of a
difficult topic? In either case, please consider sharing it. Best lecture 
topics
will be selected for presentation based on a short abstract describing the
lecture and its interest to TFPIE attendees. The length of the presentation
should be comparable to that of a paper. In addition, the speaker can 
provide
commentary on effectiveness or student feedback.

Submissions

Potential presenters are invited to submit an extended abstract (4-6 pages) 
or
a draft paper (up to 20 pages) in EPTCS style. The authors of accepted 
presentations
will have their preprints and their slides made available on the workshop's 
website.
Papers and abstracts can be submitted via easychair at the following link:

https://easychair.org/conferences/?conf=tfpie2022

After the workshop, presenters are invited to submit (a revised version of) 
their
article for the formal review. The PC will select the best articles for 
publication
in the Electronic Proceedings in Theoretical Computer Science (EPTCS). 
Articles
rejected for presentation and extended abstracts will not be formally 
reviewed
by the PC.

Important Dates

 Submission deadline: January 5th 2022, Anywhere on Earth.
 Notification: January 10th 2022 (Note: earlier submissions will receive 
earlier response)
 TFPIE Registration Deadline: TBA
 Workshop: February 11th 2022
 Submission for formal review: April 15th 2022, Anywhere on Earth.
 Notification of full article: June 1st 2022
 Camera ready: July 1st 2022

Program Committee

Peter Achten, Radboud University, Netherlands
Stephen Chang, University of Massachusetts Boston, USA
John Hughes, Chalmers University of Technology, Sweden
Elena Machkasova (Chair) - University of Minnesota Morris, USA
Kristina Sojakova - INRIA, Paris, France
Melinda Tóth, Eötvös Loránd University, Budapest, Hungary

Keynote speaker

Our keynote talk is "The perfect Functional Programming course" by Peter 
Achten.

Registration information

This year TFPIE takes place on the second day of the Lambda Days, 
concurrent with TFP. Participants will need to register for the Lambda 
Days. Please note that TFP and TFPIE have in-person attendance only. For 
registration fee, the deadlines, and the link to register see the Lambda 
Days web site: https://www.lambdadays.org/lambdadays2022

Registration and attendance are mandatory for at least one author of every 
paper
that is presented at the workshop. Presenters will have their registration 
fee waived.

Only papers that have been presented at TFPIE may be submitted to the 
post-reviewing process.

Best regards,
Elena Machkasova

-- 
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/ee4d4e9d-5361-438d-b0eb-065c8034408cn%40googlegroups.com.


[racket-users] deleting terms of service for discourse group

2021-12-02 Thread 'John Clements' via Racket Users
Following up on feedback from y’all, we’ve deleted the terms of service for the 
racket discourse group. 

https://racket.discourse.group/tos

Hopefully this (lack of) TOS allays concerns about participation in the 
discourse group.

John

-- 
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/c97b732f-e31a-4081-ad4a-a1bfd6d39e2d%40mtasv.net.


Re: [racket-users] Anyone successfully filtering Italian spam?

2021-11-29 Thread 'William J. Bowman' via Racket Users
My spamassassin catches most of it, but also sometimes catches real list emails 
because it has stopped trusting racket-users. Some combination of bayes and 
txrep plugins are doing the heavy lifting, I think.

--
William J. Bowman

On Mon, Nov 29, 2021 at 05:45:37PM -0600, Nathaniel Griswold wrote:
> It’s getting through my filters, neither rspamd or my local client can catch 
> on to it.
> 
> Is there a good simple filter?
> 
> Nate
> 
> -- 
> 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/81262C45-D4BE-45DB-B126-5BD11274299A%40nan.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/YaVwusmUite/nAw0%40williamjbowman.com.


Re: [racket-users] Racket Discourse

2021-11-23 Thread 'John Clements' via Racket Users
I’m sorry to hear that! Several things to check/try

1) I see the confirmation email coming from “rac...@discoursemail.com”, with 
subject line "[Racket Discussions] Confirm your new account”

Maybe it’s in your junk folder?

2) You can always ignore the given url and just go to racket.discourse.group 
and sign up manually, perhaps that will work.

Let me know if I can help any further, I do know that people have signed up 
using gmail accounts.

John

> On Nov 23, 2021, at 12:25, damien...@gmail.com  
> wrote:
> 
> if i create an account following the link at the end of this message , i 
> never get verification email at my google address i specified.
> 
> On Sunday, November 21, 2021 at 7:09:21 PM UTC+1 johnbclements wrote:
> TL;DR: Go to 
> 
> https://racket.discourse.group/invites/okLTSrQw1T 
> 
> and sign up for Racket Discourse (https://racket.discourse.group/) 
> 
> # Thoughts behind the move: 
> 
> Over time, it has become steadily more apparent that email-only 
> mailing lists are an outdated communication medium for the Racket 
> community. More recent arrivals in our community have generally 
> chosen other platforms like slack or discord to carry on discussions. 
> As a result, the signal-to-noise ratio of the racket users mailing list 
> has dropped below the level of viability. 
> 
> In short, it’s time to give up on the mailing list. 
> 
> After a good deal of research, it looks like there’s room for a whole 
> bunch of discussion platforms for Racket, but it also seems as though 
> there should be a “permanent” one; it should be archived, it should be 
> searchable in its entirety, and it should not tie us to someone else’s 
> plan to monetize user data. 
> 
> Given these criteria, the winner is Discourse, an open-source 
> messaging platform built by Jeff Atwood, Robin Ward, and Sam 
> Saffron. It has a reasonable business model (they host projects like 
> ours unless they get really big, whereupon you can either host it 
> yourself or pay them to do it); it’s widely used by other language 
> communities; and it appears to do most of what we want. 
> 
> # So where can I sign up? 
> 
> Sign up here: https://racket.discourse.group/invites/okLTSrQw1T 
> 
> The discourse platform has been in a “soft opening” phase for about 
> two weeks now, since RacketCon, and we have about a hundred users. 
> You’re receiving this message because we’d like to have *YOU* there 
> as well. 
> 
> # Can I still receive messages like a mailing list? 
> 
> Yes, you can. I have it enabled myself! 
> To use discord as a mailing-list: 
> Sign up, go to Preferences > Email, and tick “Enable mailing list mode'. 
> 
> Yours, 
> 
> John Clements & Stephen De Gabrielle 
> 
> -- 
> 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/a1cc04f5-25f6-4d0e-aeda-a656c18e5604n%40googlegroups.com.

-- 
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/e869aa79-b8c8-4d51-9737-ebdc2c5eb88e%40mtasv.net.


Re: the end of the [racket-users] mailing list and the migration to Discourse as a forum for Racket

2021-11-22 Thread 'John Clements' via Racket Users
I think I agree with pretty much everything you’ve written here. 

I will note that your problem with sending email to the mailing list from a 
different address *is* one I’ve experienced, many hundreds of times. 

I think your #1 and your #5 is more or less what blog.racket-lang.org is. I see 
Discourse as our best choice for #2. For chat, it sounds like most folks like 
IRC, Slack, or Discord. I’m not generally in that market, so I don’t think my 
opinions are worth much, there. I think there’s some hope that discourse might 
help out with #4, as well. 

Best,

John 

> On Nov 22, 2021, at 16:05, Siddhartha Kasivajhula  wrote:
> 
> That first email reads like a cross between a mathematical proof and some 
> kind of satire. Good stuff :)
> 
> The broad communication needs seem to be:
> 
> (1) a bulletin board / a channel for announcements
> (2) a forum / a channel for discussions
> (3) chat / a realtime channel.
> (4) a knowledge base
> (5) a broadcast / external-facing medium
> 
> It sounds like the proposal here is to use Discourse for both (1) and (2). 
> All of the above become (4) if they are archived, but there is also the wiki 
> (which I didn't know about) and of course the website and docs. Anyone can 
> tweet @racketlang for (5), I guess. And we haven't really talked about (3) 
> yet.
> 
> Some considerations people have brought up include:
> 
> Noise: I agree that Discourse is likely to have more volume. As a result, 
> simply using it in mailing list mode isn't exactly a 1-to-1 replacement, 
> since the volume of emails would be higher, making it less appropriate for 
> announcements. It would be nice to be able to have more fine-grained controls 
> over which messages get emailed (e.g. in terms of category or activity). The 
> other (complementary, in my view) option is to use digest mode. In 
> traditional mailing lists we pick one or the other. In Discourse, it seems 
> that if you visit the site, it doesn't send you the digest for that day. It 
> would be nice if it could be configured to always send a digest, to actually 
> emulate mailing list behavior. Finally, I did notice that I wasn't able to 
> reply to a Discourse post from my phone. It looked like my phone email client 
> was using the default sender instead of the Discourse-specific one. I don't 
> recall that happening in similar situations before, but it's entirely 
> possible that this is a problem with my email client. In any case, with these 
> improvements, I do think Discourse could be compelling as a replacement for 
> the mailing list for most people.
> 
> Open source: I agree this is an important criterion (which is one reason 
> you'll find me on IRC rather than Discord or Slack). Phil's point that Google 
> Groups isn't open source while Discourse is, seems a compelling argument for 
> Discourse here.
> 
> Terms of service: Can't believe I signed my rights away to company_name 
> without even reading applicable_laws in jurisdiction_here.
> 
> 
> 
> 
> On Mon, Nov 22, 2021 at 9:19 AM Sage Gerard  wrote:
> Mozilla's notes on their own instance summarizes an email-exclusive
> workflow well.
> 
> https://discourse.mozilla.org/t/how-do-i-use-discourse-via-email/15279
> 
> On 11/22/21 12:16 PM, 'John Clements' via Racket Users wrote:
> > Yes, I believe that replies by email are currently enabled. Here, let me 
> > test that.
> >
> > …
> >
> > Oh, yeah… can’t do that, the incoming email address isn’t the one that I 
> > send from. Sigh. Perhaps someone else can try this?
> >
> > One thing that I know isn’t set up yet is starting a new topic by email. I 
> > know it’s possible, but somebody needs to read the docs and check what’s 
> > required in order to set it up.
> >
> > John
> >
> >> On Nov 22, 2021, at 11:56, Sage Gerard  wrote:
> >>
> >> Y'all are configuring Discourse to allow replies by emails too, right?
> >>
> >> On 11/22/21 11:00 AM, J. Ryan Stinnett wrote:
> >>> On Mon, 22 Nov 2021 at 15:25, Martin Weigele  wrote:
> >>> A discourse type forum - we had this discussions in other contexts again 
> >>> and
> >>> again - may be a better choice for persons who have the luxury they can
> >>> concentrate on very few thingies. For all others, mailinglists are a much
> >>> better choice, you can follow many developments in one place: your mail
> >>> client, with a completely standard UI.
> >>>
> >>> Discourse has a mailing list mode each user can choose to enable which 
> >>> allows them to receive every post to their mail client, so you can 
> >>> continue to use your mail client workflow for followi

Re: the end of the [racket-users] mailing list and the migration to Discourse as a forum for Racket

2021-11-22 Thread 'John Clements' via Racket Users
Yes, I believe that replies by email are currently enabled. Here, let me test 
that.

…

Oh, yeah… can’t do that, the incoming email address isn’t the one that I send 
from. Sigh. Perhaps someone else can try this?

One thing that I know isn’t set up yet is starting a new topic by email. I know 
it’s possible, but somebody needs to read the docs and check what’s required in 
order to set it up.

John

> On Nov 22, 2021, at 11:56, Sage Gerard  wrote:
> 
> Y'all are configuring Discourse to allow replies by emails too, right?
> 
> On 11/22/21 11:00 AM, J. Ryan Stinnett wrote:
>> On Mon, 22 Nov 2021 at 15:25, Martin Weigele  wrote:
>> A discourse type forum - we had this discussions in other contexts again and 
>> again - may be a better choice for persons who have the luxury they can 
>> concentrate on very few thingies. For all others, mailinglists are a much 
>> better choice, you can follow many developments in one place: your mail 
>> client, with a completely standard UI.
>> 
>> Discourse has a mailing list mode each user can choose to enable which 
>> allows them to receive every post to their mail client, so you can continue 
>> to use your mail client workflow for following messages over there as well.
>> 
>> - Ryan
>> -- 
>> 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/CA%2B952WrzFB-FVWzn0%3DmES3kLd5XsU6gXqG8Vi8gij7Fz0J_Qgw%40mail.gmail.com.
> 
> -- 
> 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/37a16e37-a38f-906f-3f7a-4c008e5a0a76%40sagegerard.com.

-- 
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/df2d0a47-804e-4275-a4b3-dbfd2116a702%40mtasv.net.


Re: [racket-users] Racket Discourse

2021-11-22 Thread 'John Clements' via Racket Users
Good questions:

1) Yes, Sam mentioned the discourse group at RacketCon, and there was some 
“hallway” discussion about it.
2) No, no sponsor was involved. Yikes! Indeed, I’m not aware that Racket *has* 
any sponsors currently, aside from the research and infrastructure grants that 
are being funded by the NSF et cetera.

John

> On Nov 22, 2021, at 09:52, Sage Gerard  wrote:
> 
> Thanks for checking on this. I'd expect something like a CoC more than a ToS 
> in this case, but terms are terms :)
> If you don't mind, I have a couple of follow up questions.
> 
>   • Were "rank-and-file" Racket contributors alerted to this change in 
> advance? Say, in a RacketCon speech? I may have missed it.
>   • Did a sponsor play any role in this transition?
> On 11/22/21 9:49 AM, John Clements wrote:
>> I’m actually very heartened to see the boilerplate here; it sounds like this 
>> is something we can edit, and not something imposed by Discourse. If that’s 
>> the case, then it certainly seems likely that we can find some language (or, 
>> more importantly, *lack* of language) that makes more of us happy.
>> 
>> I, for one, am shocked to see binding arbitration language in here: I think 
>> binding arbitration is one of the most revolting elements of corporate 
>> control in our society today, and if we were unable to remove the binding 
>> arbitration clause, I would likely abandon discourse myself.
>> 
>> Sounds like the next step is to come up with a TOS that’s acceptable to all, 
>> or find a way to remove it entirely.
>> 
>> John
>> 
>> 
>>> On Nov 22, 2021, at 04:54, Norman Gray 
>>>  wrote:
>>> 
>>> 
>>> Greetings.
>>> 
>>> On 22 Nov 2021, at 4:24, Sage Gerard wrote:
>>> 
>>> 
>>>> But I have to ask, who wrote the ToS? Who is "the company" in its
>>>> 
>>>> context? Discord? One of the Racket team's universities? A sponsor?
>>>> 
>>> I'm not sure who 'the company' is, either, but they appear to be called 
>>> 'company_name' (catchy!), and that users are notified that disputes can 
>>> only be arbitrated in city_for_disputes, under governing_law. *cough*
>>> 
>>> Such curiosities aside, all of that does represent unappealingly more 
>>> legalese than one expects for a mailing list.  But since the current list 
>>> is hosted at googlegroups, and since it's not obvious that Discourse Corp 
>>> is more predatory than Google Corp (indeed, the former is dispensing 
>>> freemium-ware rather than ad-ware, so are more attractive in terms of 
>>> business model), it feels irrational for me to be too put off by it.
>>> 
>>> Best wishes,
>>> 
>>> Norman
>>> 
>>> 
>>> --
>>> Norman Gray  :  
>>> https://nxg.me.uk
>>> 
>>> SUPA School of Physics and Astronomy, University of Glasgow, UK
>>> 
>>> --
>>> 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/BEC261BF-C274-4221-8F62-C77D181ED1EF%40glasgow.ac.uk
>>> .
>>> 

-- 
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/f00c26e6-f223-45d0-b725-f0b2fb421e4c%40mtasv.net.


Re: the end of the [racket-users] mailing list and the migration to Discourse as a forum for Racket

2021-11-22 Thread 'John Clements' via Racket Users
I’m … super confused by this message. Did I miss something? I feel like this 
message has a subtext that I’m completely missing.

John

> On Nov 22, 2021, at 08:06, Etan Wexler  wrote:
> 
> The stewards of Racket have decided that it’s time to give up on the mailing 
> list (that is, racket-users, to which this message is a contribution). The 
> stewards of Racket have designated another forum for Racket as the successor 
> to racket-users. This other forum for discussing Racket has as its basis the 
> software named “Discourse”, which is open‐source. Enlisting is prerequisite 
> to contributing to the Discursive forum for Racket. Enlisting is prerequisite 
> to receiving as Internet mail the contributions to the Discursive forum for 
> Racket. The stewards of Racket have published a facility for enlisting as a 
> participant in the Discursive forum for Racket.
> 

-- 
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/57281fc0-ae2e-409b-9df6-9b87efc35433%40mtasv.net.


Re: [racket-users] Racket Discourse

2021-11-22 Thread 'John Clements' via Racket Users
I’m actually very heartened to see the boilerplate here; it sounds like this is 
something we can edit, and not something imposed by Discourse. If that’s the 
case, then it certainly seems likely that we can find some language (or, more 
importantly, *lack* of language) that makes more of us happy.

I, for one, am shocked to see binding arbitration language in here: I think 
binding arbitration is one of the most revolting elements of corporate control 
in our society today, and if we were unable to remove the binding arbitration 
clause, I would likely abandon discourse myself.

Sounds like the next step is to come up with a TOS that’s acceptable to all, or 
find a way to remove it entirely.

John

> On Nov 22, 2021, at 04:54, Norman Gray  wrote:
> 
> 
> Greetings.
> 
> On 22 Nov 2021, at 4:24, Sage Gerard wrote:
> 
>> But I have to ask, who wrote the ToS? Who is "the company" in its
>> 
>> context? Discord? One of the Racket team's universities? A sponsor?
> 
> I'm not sure who 'the company' is, either, but they appear to be called 
> 'company_name' (catchy!), and that users are notified that disputes can only 
> be arbitrated in city_for_disputes, under governing_law. *cough*
> 
> Such curiosities aside, all of that does represent unappealingly more 
> legalese than one expects for a mailing list.  But since the current list is 
> hosted at googlegroups, and since it's not obvious that Discourse Corp is 
> more predatory than Google Corp (indeed, the former is dispensing 
> freemium-ware rather than ad-ware, so are more attractive in terms of 
> business model), it feels irrational for me to be too put off by it.
> 
> Best wishes,
> 
> Norman
> 
> 
> -- 
> Norman Gray  :  https://nxg.me.uk
> SUPA School of Physics and Astronomy, University of Glasgow, UK
> 
> -- 
> 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/BEC261BF-C274-4221-8F62-C77D181ED1EF%40glasgow.ac.uk.

-- 
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/0691253b-ef19-4534-b0ec-8faeca204807%40mtasv.net.


Re: [racket-users] Racket Discourse

2021-11-21 Thread 'John Clements' via Racket Users
Many thanks for your thoughts. I appreciate that your time and inbox space is 
at a premium, and I’ll try to be careful about posting things to more than one 
forum.

Best,

John Clements

> On Nov 21, 2021, at 22:53, Sorawee Porncharoenwase  
> wrote:
> 
> My personal opinion is that, if we want Discourse to be a replacement of the 
> mailing list, then we should treat it like one. Right now, it’s a combination 
> of the mailing list, wiki, FAQ site, and whatnot. And I don’t want one more 
> email in my inbox when someone decides to add an entry to the FAQ.
> 
> As concrete examples, consider:
> 
>   • 
> https://racket.discourse.group/t/urlang-is-javascript-with-a-sane-syntax/119
>   • https://racket.discourse.group/t/gui-builder-designer/151
> I’m not sure what’s the point of these posts in the context of the mailing 
> list. Stephen definitely knows MrEd designer and has been promoting it for 
> years, so this looks like his attempt to build a wiki/FAQ on Discourse. While 
> I really do appreciate Stephen’s effort into building and maintaining the 
> valuable wiki/FAQ at https://github.com/racket/racket/wiki, I personally 
> don’t think a mailing list is an appropriate medium for it. Urlang is great, 
> but I don’t understand why we are rehashing it now on Discourse. Will we also 
> see 1735 more posts to rehash every package on the package website in the 
> future?
> 
> Another issue is cross posting. Often posts are shared to all Slack, Discord, 
> Reddit, the current mailing list, and whatnot (and also in the other 
> direction). It makes sense to do that for event announcements. I’m not sure 
> the same can be said for other posts. They are inundating (at least to me), 
> especially if they happen a lot.
> 
> I understand that there's a spam problem on the current mailing list and in 
> fact have been complaining constantly on Slack. I actually even proposed to 
> Sam last year to consider Discourse as a replacement of the mailing list, so 
> I'm not against the software at all if that's what you worry about.
> 
> To be clear, no offense to anyone at all. It could be that my expectation of 
> the mailing list is far off from most people, and if that’s the case, I’d 
> simply excuse myself from it.
> 
> On Sun, Nov 21, 2021 at 3:42 PM Philip McGrath  
> wrote:
> I've long been in the basically-content-with-the-mailing-list camp, but I've 
> recently come around to the view that the status quo is untenable. I looked 
> into it after Racket 'Con and discovered the mailing list had shrunk 
> especially much for me, because the Google Groups spam filters were letting 
> through so much spam that Google spam filters on one hop of my receiving side 
> have been classifying a great deal of legitimate mailing list traffic as spam.
> 
> I haven't done much with Discourse yet, but it seems promising, and I hope it 
> works out.
> 
> I'd guess the list administrators have tried this already, but, just in case, 
> the Google Group settings should have a "Spam message handling" setting that 
> could be set to "Moderate without notifying content moderators" (see 
> https://support.google.com/groups/answer/2464926?hl=en#posting=%2Csettings-reference%2Cadvanced-settings-reference).
>  If this is the official moment for giving up on this mailing list, it would 
> probably be good to turn up these settings to some draconian level anyway, 
> just to leave one fewer spam target on the internet.
> 
> -Philip
> 
> On Sun, Nov 21, 2021 at 6:08 PM 'John Clements' via Racket Users 
>  wrote:
> Wait, you think that’s high traffic? Gee whiz, the mailing list *has* shrunk, 
> hasn’t it?
> 
> Okay, that was not an entirely serious reply, but I do think that in contrast 
> to the discord & slack channels, the discourse is likely to be searchable and 
> at least lightly curated six months from now. Also, if you take a look at the 
> mailing list archive 
> 
> https://www.mail-archive.com/racket-users@googlegroups.com/
> 
> … you’ll see a *shocking* amount of spam. Many of us don’t see this because 
> we have semi-reasonable spam filters, but others are putting up with what 
> looks like more than 50% spam on this list. That’s just not acceptable.
> 
> John
> 
> 
> > On Nov 21, 2021, at 14:14, Sorawee Porncharoenwase 
> >  wrote:
> > 
> > I could be in the minority here, but as an early proponent of Discourse to 
> > replace the mailing list (even before RacketCon), I feel reluctant to join 
> > it after observing it for a while. It has a very high traffic, with almost 
> > 100% of the contents being cross-posted everywhere else (and vice versa) 
> > anyway.
> > 
> > While I appreciate any efforts in

Re: [racket-users] Racket Discourse

2021-11-21 Thread 'John Clements' via Racket Users
Wait, you think that’s high traffic? Gee whiz, the mailing list *has* shrunk, 
hasn’t it?

Okay, that was not an entirely serious reply, but I do think that in contrast 
to the discord & slack channels, the discourse is likely to be searchable and 
at least lightly curated six months from now. Also, if you take a look at the 
mailing list archive 

https://www.mail-archive.com/racket-users@googlegroups.com/

… you’ll see a *shocking* amount of spam. Many of us don’t see this because we 
have semi-reasonable spam filters, but others are putting up with what looks 
like more than 50% spam on this list. That’s just not acceptable.

John


> On Nov 21, 2021, at 14:14, Sorawee Porncharoenwase  
> wrote:
> 
> I could be in the minority here, but as an early proponent of Discourse to 
> replace the mailing list (even before RacketCon), I feel reluctant to join it 
> after observing it for a while. It has a very high traffic, with almost 100% 
> of the contents being cross-posted everywhere else (and vice versa) anyway.
> 
> While I appreciate any efforts into promoting the site, I do think different 
> content has different appropriate mediums. For example, FAQs probably should 
> go to the wiki. There's no need to clutter anyone's inbox for this type of 
> content.
> 
> On Sun, Nov 21, 2021 at 10:09 AM 'John Clements' via Racket Users 
>  wrote:
> TL;DR: Go to
> 
>https://racket.discourse.group/invites/okLTSrQw1T
> 
> and sign up for Racket Discourse (https://racket.discourse.group/)
> 
> # Thoughts behind the move:
> 
> Over time, it has become steadily more apparent that email-only 
> mailing lists are an outdated communication medium for the Racket
> community. More recent arrivals in our community have generally 
> chosen other platforms like slack or discord to carry on discussions. 
> As a result, the signal-to-noise ratio of the racket users mailing list 
> has dropped below the level of viability.
> 
> In short, it’s time to give up on the mailing list.
> 
> After a good deal of research, it looks like there’s room for a whole
> bunch of discussion platforms for Racket, but it also seems as though
> there should be a “permanent” one; it should be archived, it should be
> searchable in its entirety, and it should not tie us to someone else’s
> plan to monetize user data.
> 
> Given these criteria, the winner is Discourse, an open-source
> messaging platform built by Jeff Atwood, Robin Ward, and Sam
> Saffron. It has a reasonable business model (they host projects like
> ours unless they get really big, whereupon you can either host it
> yourself or pay them to do it); it’s widely used by other language
> communities; and it appears to do most of what we want.
> 
> # So where can I sign up?
> 
> Sign up here: https://racket.discourse.group/invites/okLTSrQw1T
> 
> The discourse platform has been in a “soft opening” phase for about 
> two weeks now, since RacketCon, and we have about a hundred users. 
> You’re receiving this message because we’d like to have *YOU* there 
> as well.
> 
> # Can I still receive messages like a mailing list?
> 
> Yes, you can. I have it enabled myself!  
> To use discord as a mailing-list:
> Sign up, go to Preferences > Email, and tick “Enable mailing list mode'.
> 
> Yours,
> 
> John Clements & Stephen De Gabrielle
> 
> -- 
> 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/9d080367-1b70-4818-8e76-8c6714db404c%40mtasv.net.

-- 
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/4b85e73f-4233-4b77-8d06-96b4afdebc24%40mtasv.net.


[racket-users] Racket Discourse

2021-11-21 Thread 'John Clements' via Racket Users
TL;DR: Go to

   https://racket.discourse.group/invites/okLTSrQw1T

and sign up for Racket Discourse (https://racket.discourse.group/)

# Thoughts behind the move:

Over time, it has become steadily more apparent that email-only 
mailing lists are an outdated communication medium for the Racket
community. More recent arrivals in our community have generally 
chosen other platforms like slack or discord to carry on discussions. 
As a result, the signal-to-noise ratio of the racket users mailing list 
has dropped below the level of viability.

In short, it’s time to give up on the mailing list.

After a good deal of research, it looks like there’s room for a whole
bunch of discussion platforms for Racket, but it also seems as though
there should be a “permanent” one; it should be archived, it should be
searchable in its entirety, and it should not tie us to someone else’s
plan to monetize user data.

Given these criteria, the winner is Discourse, an open-source
messaging platform built by Jeff Atwood, Robin Ward, and Sam
Saffron. It has a reasonable business model (they host projects like
ours unless they get really big, whereupon you can either host it
yourself or pay them to do it); it’s widely used by other language
communities; and it appears to do most of what we want.

# So where can I sign up?

Sign up here: https://racket.discourse.group/invites/okLTSrQw1T

The discourse platform has been in a “soft opening” phase for about 
two weeks now, since RacketCon, and we have about a hundred users. 
You’re receiving this message because we’d like to have *YOU* there 
as well.

# Can I still receive messages like a mailing list?

Yes, you can. I have it enabled myself!  
To use discord as a mailing-list:
Sign up, go to Preferences > Email, and tick “Enable mailing list mode'.

Yours,

John Clements & Stephen De Gabrielle

-- 
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/9d080367-1b70-4818-8e76-8c6714db404c%40mtasv.net.


Re: [racket-users] How to learn the *core* of Racket?

2021-11-11 Thread 'John Clements' via Racket Users
> On Nov 11, 2021, at 03:04, Yushuo Xiao  wrote:
> 
> Thank you for your comprehensive answer! It helps a lot. I also read more 
> about Racket after I posted the question and now I think that the few special 
> forms (as stated in "fully expanded program") are the core. All languages 
> built in Racket will parse and convert their syntax into syntax objects 
> (S-expressions) and then expand to these special forms. Am I right?

That’s a true statement… but that set is by no means fixed. These core forms 
then get compiled into native code (in CS) or bytecode (in BC), and changing 
this core set is certainly possible. It’s probably wiser to think of these core 
forms as an intermediate representation language in a compiler. I would agree 
that it’s an important IR, in that it’s essentially a subset of the racket 
language itself, but it’s definitely not an immutable ideal.

Apologies as always if you knew all this already,

John Clements

> 
> On Sunday, November 7, 2021 at 6:53:53 AM UTC+8 david@gmail.com wrote:
> Hi Yushuo,
> 
> On Sat, Nov 6, 2021 at 5:33 AM Yushuo Xiao  wrote:
> I've learned some Racket, and can comfortably program in it, but I only 
> learned it as an ordinary language, much like Scheme. I know Racket is much 
> more than that, for its "language-oriented" features. Languages become a 
> first-class member in Racket, and to my understanding, even "#lang racket" is 
> just a language built on some core. What I want to know is, what's the very 
> core of Racket?
> 
> It depends on where you stop measuring.  You could argue that...
> 
> ...#lang racket  is the core, because it's what comes in the installation.  
> Things like gregor, struct-plus-plus, and csv-reading are packages that you 
> install from http://pkgs.racket-lang.org/ and are therefore outside the core.
> 
> ...#lang racket/base is the core, because it's the most limited set of Racket 
> that comes by default.  It mostly consists of only the basic list 
> manipulation functions, and if you want to use other things then you need to 
> include relevant libraries such as racket/match (giving you the 'match' 
> special form) or racket/format (giving you the ~a function), or racket-string 
> (giving you the string-length function), etc.
> 
> ...Raw lambdas and a few special forms are the core, because everything 
> compiles down to those.  (Approximately speaking.)
> 
> ...Lambda calculus is the core, because it's what all LISP descendants are 
> based on.
> 
> Once you start talking about other Racket languages with different syntax and 
> semantics, well then all bets are off.
> 
> 
> Does this help?
> 
> 
> I've noticed that in the Racket Reference there is a section "Fully Expanded 
> Programs", which seems the very core of Racket. But it still takes an 
> S-expression form, and apparently Racket allows language customization on the 
> syntax level. I wonder if the S-expression language is the core of Racket, or 
> the entire Racket has a different structure?
> 
> I would really appreciate it if anyone could explain it in a simple way or 
> could point out some good (and short) material for me to read. The Racket 
> Reference is too long, and I believe the core Racket can be well explained in 
> a much shorter piece of text, if I just look for a brief understanding.
> 
> Also my question may be confusing, because I don't understand Racket well at 
> all. Feel free to correct me or ask for clarification. Thanks in advance!
> 
> -- 
> 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...@googlegroups.com.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/racket-users/63b1134b-16e4-4447-828a-1e607013bd7cn%40googlegroups.com.
> 
> -- 
> 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/6929457c-459f-4c25-94c0-ea973b121c65n%40googlegroups.com.

-- 
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/228e0447-5d7e-4d88-870a-8aada5b31aa1%40mtasv.net.


[racket-users] Racket v8.3

2021-11-06 Thread 'John Clements' via Racket Users
Racket version 8.3 is now available from

https://racket-lang.org/


* Racket removes syntax arming and disarming in favor of a simpler
 system of protected syntax operations, along with other updates to the
 syntax system.

* DrRacket has improved support for custom #lang languages.

* Typed Racket improves precision for type-checking of non-polymorphic
  structures, existential types, and certain binding forms.

* Scribble HTML output gains a button to show / hide the table of
  contents on mobile platforms.

* Redex's stepper's GUI shows IO-judgment form rule names.

* Many bug fixes!


The following people contributed to this release:

Adam Zaiter, Alex Knauth, Alexis King, Ayman Osman, Ben Greenman, Bob
Burger, Bogdan Popa, Brian Adkins, Cameron Moy, Carl Eastlund, Dan
Holtby, Dominik Pantůček, Eli Barzilay, Ethan Leba, Fred Fu, Greg
Hendershott, Gustavo Massaccesi, J. Ryan Stinnett, Jason Hemann, Jay
McCarthy, Jesse Alama, Joel Dueck, John Clements, Jonathan Simpson,
Kartik Sabharwal, Laurent Orseau, Lehua Ding, Maciej Barć, Marc Burns,
Matthew Flatt, Matthias Felleisen, Michael Ballantyne, Mike Sperber,
Noah Ma, Paulo Matos, Pavel Panchekha, Philip McGrath, Robby Findler,
Ryan Culpepper, Ryan Sundberg, Sage Gerard, Sam Tobin-Hochstadt,
Shu-Hung You, Sorawee Porncharoenwase, Stefan Schwarzer, Stephen De
Gabrielle, Vincent St-Amour, William J. Bowman, minor-change, and yjqww6

Feedback Welcome

-- 
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/7a93648b-3e64-4c94-8932-eb8d1de887b2%40mtasv.net.


Re: [racket-users] How to discover a struct's interface without Dr Racket?

2021-10-29 Thread 'John Clements' via Racket Users
In the text below, you refer to the “public” interface. Can I ask what you mean 
by “public” in this context?

John

> On Oct 29, 2021, at 11:16 AM, Brian Beckman  wrote:
> 
> I believe that run time will be the most plausible use case. I may write 
> macros that refer to struct-procedure names at macro-writing time, but I 
> don't expect to invoke the struct procedures at macro-expansion time. My 
> primary issue is "discoverability:" how can I find out the interface of any 
> struct?
> 
> On Thursday, October 28, 2021 at 1:00:15 PM UTC-7 jackh...@gmail.com wrote:
> Are you intending to use the struct procedure names at compile time (such as 
> in a macro) or runtime?
> 
> On Tuesday, October 26, 2021 at 5:02:46 PM UTC-7 bc.be...@gmail.com wrote:
> I understand why structs are opaque, by default, but I want to discover the 
> public interface of some struct type, that is, a list of the procedures 
> defined by the struct.
> 
> Here is an example. Suppose I want to find out all the procedures defined on 
> an instance of the syntax struct
> 
> #'42
> 
> Dr. Racket shows an expander clicky that shows some formatted information 
> inside the instance :
> 
> 
> 
> Uncapitializing the names in the display reveals the interface:
> 
> (syntax-position #'42) ~~> 790
> (syntax-span #'42) ~~> 2
> (syntax-original? #'42) ~~> #t
> 
> etc.
> 
> I want to discover those procedure names in my racket program, not manually 
> by visually inspecting graphics in Dr Racket. 
> 
> I found this trick for structs that I define:
> 
> #lang racket
> (require (for-syntax racket/struct-info))
> (require racket/pretty)
> 
> (struct foo (a b))
> (begin-for-syntax
>   (displayln 
>(extract-struct-info
> (syntax-local-value
>  #'foo
> 
> ~~>
> 
> 
> 
> but it doesn't work for the syntax type
> 
> (begin-for-syntax
>   (displayln 
>(extract-struct-info
> (syntax-local-value
>  #'syntax
> 
> ~~>
> 
> 
> 
> I'd be grateful for advice and an example of how to get the interface of 
> "syntax" without Dr Racket and without grovelling docs.
> 
> -- 
> 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/8e4ca03e-e276-4c42-a662-4fcf7c994387n%40googlegroups.com.

-- 
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/281a49f3-7870-48ca-888b-d3e5002b0f24%40mtasv.net.


[racket-users] Trends in Functional Programming in Education 2022 call for submissions

2021-10-29 Thread 'Elena Machkasova' via Racket Users
TFPIE 2022 Call for papers
https://wiki.tfpie.science.ru.nl/TFPIE2022
(February 11th 2022, Krakow, Poland co-located with TFP 2022 and Lambda 
Days)

TFPIE 2022 welcomes submissions describing techniques used in the 
classroom, tools used in and/or developed for the classroom and any 
creative use of functional programming (FP) to aid education in or outside 
Computer Science. Topics of interest include, but are not limited to:

  FP and beginning CS students
  FP and Computational Thinking
  FP and Artificial Intelligence
  FP in Robotics
  FP and Music
  Advanced FP for undergraduates
  FP in graduate education
  Engaging students in research using FP
  FP in Programming Languages
  FP in the high school curriculum
  FP as a stepping stone to other CS topics
  FP and Philosophy
  The pedagogy of teaching FP
  FP and e-learning: MOOCs, automated assessment etc.
  Best Lectures - more details below

In addition to papers, we are requesting best lecture presentations. What's 
your
best lecture topic in an FP related course? Do you have a fun way to 
present FP
concepts to novices or perhaps an especially interesting presentation of a
difficult topic? In either case, please consider sharing it. Best lecture 
topics
will be selected for presentation based on a short abstract describing the
lecture and its interest to TFPIE attendees. The length of the presentation
should be comparable to that of a paper. In addition, the speaker can 
provide
commentary on effectiveness or student feedback.

Submissions

Potential presenters are invited to submit an extended abstract (4-6 pages) 
or
a draft paper (up to 20 pages) in EPTCS style. The authors of accepted 
presentations will have their preprints and their slides made available on 
the workshop's website. Papers and abstracts can be submitted via easychair 
at the following link:

https://easychair.org/conferences/?conf=tfpie2022

After the workshop, presenters are invited to submit (a revised version of) 
their
article for the formal review. The PC will select the best articles for 
publication
in the Electronic Proceedings in Theoretical Computer Science (EPTCS). 
Articles rejected for presentation and extended abstracts will not be 
formally reviewed by the PC.

Important Dates:

 Submission deadline: January 5th 2022, Anywhere on Earth.
 Notification: January 10th 2022 (Note: earlier submissions will receive 
earlier response)
 TFPIE Registration Deadline: TBA
 Workshop: February 11th 2022
 Submission for formal review: April 15th 2022, Anywhere on Earth.
 Notification of full article: June 1st 2022
 Camera ready: July 1st 2022

Program Committee:

Peter Achten, Radboud University, Netherlands
Stephen Chang, University of Massachusetts Boston, USA
John Hughes, Chalmers University of Technology, Sweden
Elena Machkasova (Chair) - University of Minnesota Morris, USA
Kristina Sojakova - INRIA, Paris, France
Melinda Tóth, Eötvös Loránd University, Budapest, Hungary

Registration information:

This year TFPIE takes place on the second day of the Lambda Days, 
concurrent with TFP. Participants will need to register for the Lambda 
Days. Please note that TFP and TFPIE have in-person attendance only. For 
registration fee, the deadlines, and the link to register see the Lambda 
Days web site:
https://www.lambdadays.org/lambdadays2022

Registration and attendance are mandatory for at least one author of every 
paper that is presented at the workshop. Presenters will have their 
registration fee waived.

Only papers that have been presented at TFPIE may be submitted to the 
post-reviewing process.

Best regards,
Elena Machkasova,

  --
Dr. Elena Machkasova
Associate Professor of Computer Science
Division of Science and Mathematics
University of Minnesota, Morris
Office: Sci 2325
(320) 589-6308
http://cda.morris.umn.edu/~elenam/
Pronouns: she/her/hers or any other

-- 
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/d5839f44-458a-4bc2-807f-8684b12ef303n%40googlegroups.com.


Re: [racket-users] [ANN] Splitflap: generating valid Atom and RSS feeds

2021-10-27 Thread 'Joel Dueck' via Racket Users
On Tuesday, October 26, 2021 at 1:39:21 PM UTC-5 zepp...@gmail.com wrote:

> To the extent that validation is a concern, gregor is (despite the 
> `tz/c` issue) much better, on the whole, than racket/base's `date` and 
> `date*` structs, which will happily let you construct things like "the 
> 31st of February." 
>

I fully agree with that. ...Didn't you mention on Slack while back that you 
had a replacement for gregor on a shelf somewhere? ;) 

-- 
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/77f80d13-2aa3-4b88-b175-6c39f2ce2ef7n%40googlegroups.com.


Re: [racket-users] [ANN] Splitflap: generating valid Atom and RSS feeds

2021-10-26 Thread 'Joel Dueck' via Racket Users


On Tuesday, October 26, 2021 at 12:30:59 PM UTC-5 Sage Gerard wrote:

> Yes, but I'm talking about code we were asked to give feedback on. I focus 
> on `tz/c` because it is documented as a flat contract that checks for "an 
> identifier from the IANA tz database <https://www.iana.org/time-zones>", 
> but it does not parse the timezone name to check correctness.
>
> My feedback says no validation occurs for the timezone name in a parameter 
> for Splitflap. Joel indicated that parameter will go away below, and I'm 
> glad to know of the tzinfo package. But if a limitation in gregor's 
> contracts would oblige you to use tzinfo for validation, then I'd want to 
> know that so that I can assess how much of gregor I really need. It still 
> seems like the timezone data is the hard part, so use a timezone dependency 
> instead of a dependency that misleads the user into incomplete validation
>
It does seem odd that tz/c uses string? instead of tzid-exists? I’m 
wondering if that could be changed without breaking a lot of stuff. If not, 
then it *might* be worth keeping my own feed-timezone parameter that allows 
only (integer-in -64800 64800). On the other hand, it is also true that if 
an invalid time zone is supplied anywhere along the way to building the 
feed data, an exception is going to occur before the feed is generated, 
which is what I care about for the most part.

In general I appreciate feedback like Sage’s from people who think a lot 
more carefully than I do about dependencies. I like knowing that if someone 
has differing time zones for different items within a feed, or cares about 
gap/overlap resolution, etc, I can let them use gregor to handle it. It's 
not something I ever encountered in building CMSs or publishing podcasts, 
but also you never know what a feed will be used for. I will probably 
experiment with reducing the dependency down to tzinfo/tzdata and using 
Racket’s native date structs.


-- 
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/ea7090cc-1ebf-40a3-a7e6-0634d038602en%40googlegroups.com.


Re: [racket-users] [ANN] Splitflap: generating valid Atom and RSS feeds

2021-10-26 Thread 'Joel Dueck' via Racket Users
On Tuesday, October 26, 2021 at 11:01:38 AM UTC-5 Sage Gerard wrote:

>
>- Assuming I have the right repository link, gregor's tz/c contract is 
>only (or/c string? (integer-in -64800 64800)) [1]. I can set the 
>feed-timezone parameter in Splitflap to an arbitrary string and the guard 
>won't stop me.
>
> Yep — I left feed-timezone out of the docs because I plan to remove it. 
Unless I'm missing something? in the end I think it's redundant to tzinfo's 
current-timezone parameter. 

-- 
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/d202c537-0173-42fd-b75f-082275c57426n%40googlegroups.com.


Re: [racket-users] [ANN] Splitflap: generating valid Atom and RSS feeds

2021-10-26 Thread 'Joel Dueck' via Racket Users


On Tuesday, October 26, 2021 at 6:51:56 AM UTC-5 Philip McGrath wrote:

> I'm not totally clear about all of the different sets of requirements 
> (RSS, Atom, and, de facto, Apple), but I thought there were more language 
> codes permitted than ISO 639-1 (e.g. 
> https://www.rssboard.org/rss-language-codes points to ISO 639-2, and 
> https://validator.w3.org/feed/docs/rfc4287.html#rfc.section.4.2.7.4 for 
> Atom points to RFC 3066. These standards also allow for the assignment of 
> new codes (and, at least for ISO 639-3, deprecation). I hope the right set 
> of codes might be in the one of the CLDR packages (also used by Gregor): if 
> so, I'd recommend getting it from there.
>

We could probably open it up to more codes for generic feeds, for sure. 
Podcast feeds are limited to ISO 639-1 by Apple. Also, system language 
detection would probably always be limited to ISO 639-1 for the foreseeable 
future, unless I find out that my existing method might encounter (and 
mis-handle) codes from other lists in some circumstances.
 

> On a different topic, for the XML stuff, is there a requirement that 
> embedded HTML be represented with the CDATA lexical syntax? 
>

I’m using CDATA for the traditional reason: it allowed me to punt on 
validating the internal content. If I didn’t use CDATA, I’d probably want 
to start handling strings and tagged xexprs differently. Strings would go 
in as `` and an exception should probably be raised if 
it can be determined (how?) that the string is actually a string of HTML. 
Tagged X-exprs would go in as `` with escaped HTML as 
you suggest. Or perhaps only tagged x-expressions should be allowed. Or 
perhaps strings should be coerced to a txexpr (by, e.g. putting them inside 
a 'div).
 

> everyone manipulating these feeds in Racket 
>

Although I make this possible, the design intent is that once you put stuff 
into a food-like struct, that’s the last step before generating the final 
feed (thus keeping all the guarantees of validation intact). I would hope 
that *content* in particular would not need more manipulation between the 
creation of a feed-item struct and the final output.
 

> (Tangentially, AIUI the convention is to use `#f` for the start and stop 
> fields when creating cdata and p-i structures in code, though apparently the 
> docs for `source` 
> <https://docs.racket-lang.org/xml/index.html#%28def._%28%28lib._xml%2Fmain..rkt%29._source%29%29>
>  
> say something about symbols.)
>

Indeed, since the structures returned by xexpr->xml use 'racket for those 
fields, I though mine ought to match.
 

> rather than using an ad-hoc encoding scheme for the entities Apple has odd 
> rules about, you can just replace them with symbols or `valid-char?`s and 
> let the library take care of everything. Well, my example code for that has 
> grown complete enough that I'll just make a PR shortly :)
>

Sounds good! Just bear in mind that Apple is not only picky about the 
characters it wants replaced but also about what you replace them with. 
E.g.  and not  for the copyright symbol. 

-- 
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/5b83ad5f-3be1-4bd7-a876-0184dafadbddn%40googlegroups.com.


Re: [racket-users] [ANN] Splitflap: generating valid Atom and RSS feeds

2021-10-25 Thread 'Joel Dueck' via Racket Users
Great feedback, thank you. I like all your suggestions.

   - Boolean arguments: great point, will do
   - MIME types: Yes, I should use/add a more complete extension→type 
   mapping, though I probably will continue not to validate MIME types against 
   the IANA list. (My somewhat erroneous note in the docs notwithstanding, it 
   turns out having a non-IANA MIME type or a valid but mismatched type in an 
   enclosure doesn’t actually cause feed validation errors.)
   - language-codes: yes this should be a value, not a procedure. Will 
   change it.
   - Contract boundaries: yes! switching to contract-out is on my list
   - Removing dependencies: yes, I see the appeal. I’m really not eager to 
   reimplement all the timezone handling and temporal comparison stuff in 
   gregor, though.

Joel

On Monday, October 25, 2021 at 6:36:30 PM UTC-5 Sage Gerard wrote:

> Thank you for this!!
>
> Feedback
>
>- I like your podcast-specific entries 
>- The validation logic is refreshing to see 
>- Re: boolean arguments, I'd stick to keyword arguments and ask for 
>any/c, not boolean?, in contracts. That way forms like (and ... (member 
>...)) won't bug users about a non-threatening contract violation, and it's 
>trivial to cast the value yourself. 
>- Unsure what licenses are compatible with Blue Oak. If you want more 
>licensing options re: IANA media type to extension mappings, here are some.
>- MIT: https://github.com/mime-types/mime-types-data 
>   - Apache 2.0 (From the horse's mouth): 
>   https://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types
>   - CC-BY-SA: Scrape MDN's table using the console on 
>   
> https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types
>  
>- I normally don't use functions like splitflap-version because I 
>can't assume that a package will define one. I'd use a program that 
> returns 
>a version of a given package. 
>- Why is language-codes a procedure? 
>- You have a lot of local contract boundaries, so values may get 
>checked more than necessary. 
>- Prefer example.com so you don't have to leak your URLs or make up 
>email addresses that actually go to an inbox. 
>- txexpr, gregor, and web-server dependencies don't look terribly 
>difficult to remove
>
>

-- 
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/cb2927c7-3d21-41c3-89c7-d6b73a9e53f9n%40googlegroups.com.


[racket-users] [ANN] Splitflap: generating valid Atom and RSS feeds

2021-10-25 Thread 'Joel Dueck' via Racket Users
This is a beta release of *splitflap*, a Racket library for generating 
valid Atom and RSS feeds, including podcast feeds.

   - Source: https://github.com/otherjoel/splitflap
   - Documentation (with quick tutorial): 
   https://docs.racket-lang.org/splitflap/index.html

The docs are substantially complete but I’m still working on them! Feedback 
welcome.

Joel

-- 
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/55a4e6de-1e08-4219-9675-31e5c598a38dn%40googlegroups.com.


Re: [racket-users] Weird test failures

2021-10-24 Thread 'Joel Dueck' via Racket Users
Dang it, I think you’re right. Known gotcha it is, and a rookie one at 
that. Thanks for taking time to look at it!

On Sunday, October 24, 2021 at 1:04:03 PM UTC-5 Sage Gerard wrote:

> I got all tests to pass by updating the first clause of pre-escape to use 
> equal?
>
> > (and (txexpr? x) (equal? "text" (attr-ref x 'type #f)))
>
> My hypothesis is that when you didn't have bytecode, the reference to the 
> literal string "text" just *happened* to be eq?. I couldn't say why.
> On 10/24/21 12:09 PM, 'Joel Dueck' via Racket Users wrote:
>
> This is driving me a little batty. I have a package on the package server, 
> and the package server shows that it is failing some tests[1]. 
>
> Here is the first test that fails:
>
> FAILURE
> name:   check-equal?
> location:   dust.rkt:101:2
> actual:
>   '(div (div ((type "text"))
>  "Judy's friend \"George\""
>  (div "Judy's friend \"George\"")))
> expected:
>   '(div (div ((type "text"))
>  "Judy%amp%apos;s friend %amp%quot;George%amp%quot;"
>  (div "Judy's friend \"George\"")))
>
> The check in question can be seen in dust.rkt on the Github repo [2]. 
>
> Here’s the weird part. This check does not fail on my local machine 
> (Racket 8.2 CS on Mac OS 11.6). Well…not true! It *usually* doesn’t fail on 
> my computer BUT sometimes checks in my tests.rkt which are dependent on 
> this one will start failing. When that happens, all I need to do is re-save 
> dust.rkt with no changes (to invalidate the compile cache) and re-run 
> tests.rkt and the checks all pass again.
>
> Of what known gotcha have I run afoul here? Or is it an unknown gotcha?
>
> The function which is the subject of the test is not complicated:
>
> ;; Recursively pre-escape any string entities in an x-expression that
> ;; are direct children of an element whose ‘type’ attribute is “text”
> (define (pre-escape x)
>   (cond 
> [(and (txexpr? x) (eq? "text" (attr-ref x 'type #f)))
>  (txexpr
>   (car x)
>   (get-attrs x)
>   (map (λ (c) (if (string? c) (pre-escape-entities c) (pre-escape c))) 
> (get-elements x)))]
> [(txexpr? x) (txexpr (car x) (get-attrs x) (map pre-escape 
> (get-elements x)))]
> [else x]))
>
> [1]: 
> https://pkg-build.racket-lang.org/server/built/test-fail/splitflap-lib.txt
> [2]: 
> https://github.com/otherjoel/splitflap/blob/11ddfebb96d13b4905d428939ba3bd9bd39e1caa/splitflap-lib/private/dust.rkt#L101-L102
>
> -- 
> 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...@googlegroups.com.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/racket-users/10b7621b-c366-4c78-ac86-f011d46a954fn%40googlegroups.com
>  
> <https://groups.google.com/d/msgid/racket-users/10b7621b-c366-4c78-ac86-f011d46a954fn%40googlegroups.com?utm_medium=email_source=footer>
> .
>
>

-- 
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/8ab8cf09-e226-4c62-a3bd-2c4dc898bfeen%40googlegroups.com.


[racket-users] Weird test failures

2021-10-24 Thread 'Joel Dueck' via Racket Users
This is driving me a little batty. I have a package on the package server, 
and the package server shows that it is failing some tests[1].

Here is the first test that fails:

FAILURE
name:   check-equal?
location:   dust.rkt:101:2
actual:
  '(div (div ((type "text"))
 "Judy's friend \"George\""
 (div "Judy's friend \"George\"")))
expected:
  '(div (div ((type "text"))
 "Judy%amp%apos;s friend %amp%quot;George%amp%quot;"
 (div "Judy's friend \"George\"")))

The check in question can be seen in dust.rkt on the Github repo [2]. 

Here’s the weird part. This check does not fail on my local machine (Racket 
8.2 CS on Mac OS 11.6). Well…not true! It *usually* doesn’t fail on my 
computer BUT sometimes checks in my tests.rkt which are dependent on this 
one will start failing. When that happens, all I need to do is re-save 
dust.rkt with no changes (to invalidate the compile cache) and re-run 
tests.rkt and the checks all pass again.

Of what known gotcha have I run afoul here? Or is it an unknown gotcha?

The function which is the subject of the test is not complicated:

;; Recursively pre-escape any string entities in an x-expression that
;; are direct children of an element whose ‘type’ attribute is “text”
(define (pre-escape x)
  (cond 
[(and (txexpr? x) (eq? "text" (attr-ref x 'type #f)))
 (txexpr
  (car x)
  (get-attrs x)
  (map (λ (c) (if (string? c) (pre-escape-entities c) (pre-escape c))) 
(get-elements x)))]
[(txexpr? x) (txexpr (car x) (get-attrs x) (map pre-escape 
(get-elements x)))]
[else x]))

[1]: https://pkg-build.racket-lang.org/server/built/test-fail/splitflap-lib.txt
[2]: 
https://github.com/otherjoel/splitflap/blob/11ddfebb96d13b4905d428939ba3bd9bd39e1caa/splitflap-lib/private/dust.rkt#L101-L102

-- 
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/10b7621b-c366-4c78-ac86-f011d46a954fn%40googlegroups.com.


[racket-users] PLDI 2022 Second Call for Papers

2021-10-13 Thread 'William J. Bowman' via Racket Users
Please distribute widely.

*Call for Papers*

2022 ACM Conference on Programming Language Design and Implementation (PLDI)
Mon 20 - Fri 24 June 2022
San Diego, California, United States
https://pldi22.sigplan.org/track/pldi-2022-pldi#Call-for-Papers

PLDI is a premier forum for programming language research, broadly construed, 
including design, implementation, theory, applications, and performance. PLDI 
seeks outstanding
research that extends and/or applies programming-language concepts to advance 
the field of computing. Novel system designs, thorough empirical work, 
well-motivated theoretical
results, and new application areas are all welcome emphases in strong PLDI 
submissions.

Reviewers will evaluate each contribution for its accuracy, significance, 
originality, and clarity. Submissions should be organized to communicate 
clearly to a broad
programming-language audience as well as to experts on the paper’s topics. 
Papers should identify what has been accomplished and how it relates to 
previous work.

Authors of empirical papers are encouraged to consider the seven categories of 
the SIGPLAN Empirical Evaluation Guidelines when preparing their submissions.
(http://www.sigplan.org/Resources/EmpiricalEvaluation/)

*Important Dates*
===
Fri 19 Nov 2021, Submission Deadline
Mon 7 Feb - Wed 9 Feb 2022, Author Response
Fri 25 Feb 2022, Author Notification

*Author Instructions*
==
https://pldi22.sigplan.org/track/pldi-2022-pldi#Call-for-Papers

Submission site: https://pldi2022.hotcrp.com/

*Organizing Committee*

General Chair: Ranjit Jhala, U. of California at San Diego
Program Chair: Isil Dillig, U. of Texas at Austin
Web Chair: Dan Barowy, Williams College
Publicity Co-Chairs: William J. Bowman, U. of British Columbia
Arjun Guha, Northeastern U.
Sponsorship Co-Chairs: Ravi Chugh, U. of Chicago
   Sasa Misailovic, U. of Illinois at Urbana-Champaign
Workshops Co-Chairs: Nadia Polikarpova, U. of California at San Diego
 Alexandra Silva, U. College London
Student Research Competition Co-Chairs: Tyler Sorensen, U. of California at 
Santa Cruz
Jubi Taneja, Microsoft Research
Artifact Evaluation Co-Chairs: Niki Vazou, IMDEA Software Institute
   Xinyu Wang, U. of Michigan

https://pldi22.sigplan.org/committee/pldi-2022-organizing-committee

--
William J. Bowman

-- 
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/YWcmolNG9ihOY7zx%40williamjbowman.com.


Re: [racket-users] rename-out not working as expected

2021-10-12 Thread 'William J. Bowman' via Racket Users
I think this is the expected behaviour of `rename-out`; you might want this 
library to change the dynamic displayed name:
  https://docs.racket-lang.org/static-rename/index.html

--
William J. Bowman

On Tue, Oct 12, 2021 at 03:07:13PM -0400, David Storrs wrote:
> ---
> ; test.rkt
> #lang racket
> (define (do-something) "ok")
> (provide do-something)
> 
> ; test2.rkt
> #lang racket
> (require "test.rkt")
> (provide (rename-out [do-something do-it]))
> 
> #lang racket
> (require "test2.rkt")
> do-it
> ---
> 
> The printed value is # although I was expecting
> #.  Have I done something wrong or simply misunderstood
> how rename-out works?
> 
> -- 
> 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/CAE8gKodiRBWPK5MfgYnOi_V%2B%3DwwFzBxtQK1qV2Mj-zPuHEXn9g%40mail.gmail.com.

-- 
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/YWXekUFzaEkaitiB%40williamjbowman.com.


Re: [racket-users] Rationale for package structure

2021-10-09 Thread 'Joel Dueck' via Racket Users
Ah I see! So is there some heuristic for when you should try to play nice 
with Minimal Racket? Is it, ideally, “always”? Or is it mainly if you’re 
likely to be using the package on a server, CI, etc?

On Saturday, October 9, 2021 at 1:58:33 PM UTC-5 sorawe...@gmail.com wrote:

> I think it's so that `raco pkg install mypkg-lib` won't install 
> `racket-doc` if you use Minimal Racket?
>
> If you don't split `mypkg` to `mypkg-lib` and `mypkg-doc`, but specify 
> `deps` and `build-deps` correctly, `raco pkg install --binary mypkg` won't 
> pull in `racket-doc` either. I don't know when this feature was added 
> though. Perhaps, it could be that the package splitting convention predates 
> the feature, and the convention persists.
>
> On Sat, Oct 9, 2021 at 10:58 AM 'Joel Dueck' via Racket Users <
> racket...@googlegroups.com> wrote:
>
>> I’ve always used the single collection format [1] in my packages.
>>
>> However, I see a lot of package authors will use a multi-collection 
>> format and split the library, documentation and maybe tests out into 
>> separate collections.
>>
>> What are the benefits of splitting the main library and its documentation 
>> into separate collections?
>>
>> [1]: 
>> https://docs.racket-lang.org/pkg/Package_Concepts.html#%28part._concept~3amulti-collection%29
>>
>> -- 
>> 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...@googlegroups.com.
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/racket-users/6ea9f50e-0d4f-4800-bc17-d31979a614cfn%40googlegroups.com
>>  
>> <https://groups.google.com/d/msgid/racket-users/6ea9f50e-0d4f-4800-bc17-d31979a614cfn%40googlegroups.com?utm_medium=email_source=footer>
>> .
>>
>

-- 
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/8c79a2bc-ab1a-4183-9f75-f52f37316f62n%40googlegroups.com.


[racket-users] Rationale for package structure

2021-10-09 Thread 'Joel Dueck' via Racket Users
I’ve always used the single collection format [1] in my packages.

However, I see a lot of package authors will use a multi-collection format 
and split the library, documentation and maybe tests out into separate 
collections.

What are the benefits of splitting the main library and its documentation 
into separate collections?

[1]: 
https://docs.racket-lang.org/pkg/Package_Concepts.html#%28part._concept~3amulti-collection%29

-- 
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/6ea9f50e-0d4f-4800-bc17-d31979a614cfn%40googlegroups.com.


Re: [racket-users] Restarting loop from exception handler breaks with-handlers, Ctrl+C?

2021-10-07 Thread 'William J. Bowman' via Racket Users
Ah of course, thanks!

On Thu, Oct 07, 2021 at 05:52:55PM -0700, Sorawee Porncharoenwase wrote:
> Typo: with-handlers*
> 
> On Thu, Oct 7, 2021 at 5:52 PM Sorawee Porncharoenwase <
> sorawee.pw...@gmail.com> wrote:
> 
> > I think you want with-handler*? According to the docs:
> >
> > with-handlers:
> >
> > Before any predicate or handler procedure is invoked, the continuation of
> > the entire with-handlers
> > <https://docs.racket-lang.org/reference/exns.html#%28form._%28%28lib._racket%2Fprivate%2Fmore-scheme..rkt%29._with-handlers%29%29>
> > expression is restored, but also parameterize-break
> > <https://docs.racket-lang.org/reference/breakhandler.html#%28form._%28%28lib._racket%2Fprivate%2Fmore-scheme..rkt%29._parameterize-break%29%29>ed
> > to disable breaks. Thus, breaks are disabled by default during the
> > predicate and handler procedures (see Breaks
> > <https://docs.racket-lang.org/reference/breakhandler.html>), and the
> > exception handler is the one from the continuation of the with-handlers
> > <https://docs.racket-lang.org/reference/exns.html#%28form._%28%28lib._racket%2Fprivate%2Fmore-scheme..rkt%29._with-handlers%29%29>
> > expression.
> >
> > with-handler*
> >
> > Like with-handlers
> > <https://docs.racket-lang.org/reference/exns.html#%28form._%28%28lib._racket%2Fprivate%2Fmore-scheme..rkt%29._with-handlers%29%29>,
> > but if a handler-expr procedure is called, breaks are not explicitly
> > disabled, and the handler call is in tail position with respect to the
> > with-handlers*
> > <https://docs.racket-lang.org/reference/exns.html#%28form._%28%28lib._racket%2Fprivate%2Fmore-scheme..rkt%29._with-handlers%2A%29%29>
> > form.
> >
> > On Thu, Oct 7, 2021 at 5:36 PM 'William J. Bowman' via Racket Users <
> > racket-users@googlegroups.com> wrote:
> >
> >> I have a little model of a server below. The server handles all
> >> exceptions, and restarts itself after some errors. It also handles break?,
> >> to actually exit when requested.
> >>
> >> While this server is running, if I press Ctrl+C before `(error 'foo)` is
> >> handled, the server exits correctly with 120. However, if I press Ctrl+C
> >> after `(error 'foo)` is handled, the `exn:break?` handler is never called,
> >> the server no longer responds to `Ctrl+C`, and (in this example) it
> >> eventually exits with status `1`.
> >>
> >> I cannot figure out why. As far as I can tell, this should always handle
> >> `Ctrl+C` by exiting with 120.
> >>
> >> > #lang racket/base
> >> >
> >> > (let loop ([n 0])
> >> >   (with-handlers ([exn:break? (lambda _ (exit 120))]
> >> >   [void
> >> >(lambda (exn)
> >> >  (printf "handled error: ~a~n" (exn-message exn))
> >> >  (loop (add1 n)))])
> >> > (displayln n)
> >> > (sleep 1)
> >> >     (cond
> >> >   [(zero? n) (error 'foo)]
> >> >   [(= n 5) (exit 1)])
> >> > (loop (add1 n
> >>
> >> --
> >> William J. Bowman
> >>
> >> --
> >> 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/YV%2BSWNpldfOB5tA3%40williamjbowman.com
> >> .
> >>
> >

-- 
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/YV%2BxxtvNutlP/NZC%40williamjbowman.com.


[racket-users] Restarting loop from exception handler breaks with-handlers, Ctrl+C?

2021-10-07 Thread 'William J. Bowman' via Racket Users
I have a little model of a server below. The server handles all exceptions, and 
restarts itself after some errors. It also handles break?, to actually exit 
when requested.

While this server is running, if I press Ctrl+C before `(error 'foo)` is 
handled, the server exits correctly with 120. However, if I press Ctrl+C after 
`(error 'foo)` is handled, the `exn:break?` handler is never called, the server 
no longer responds to `Ctrl+C`, and (in this example) it eventually exits with 
status `1`.

I cannot figure out why. As far as I can tell, this should always handle 
`Ctrl+C` by exiting with 120.

> #lang racket/base
> 
> (let loop ([n 0])
>   (with-handlers ([exn:break? (lambda _ (exit 120))]
>   [void
>(lambda (exn)
>  (printf "handled error: ~a~n" (exn-message exn))
>  (loop (add1 n)))])
> (displayln n)
> (sleep 1)
> (cond
>   [(zero? n) (error 'foo)]
>   [(= n 5) (exit 1)])
> (loop (add1 n

-- 
William J. Bowman

-- 
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/YV%2BSWNpldfOB5tA3%40williamjbowman.com.


Re: [racket-users] using neg-propositions in partition?

2021-10-05 Thread 'John Clements' via Racket Users
Ah! Thanks for the pointer. Should have looked in the issues. Yes, 2 filters 
certainly work fine.

John

> On Oct 5, 2021, at 4:45 PM, Ben Greenman  wrote:
> 
> There's an issue open about partition:
> https://github.com/racket/typed-racket/issues/138
> 
> Does `my-partition` work like you'd want? Based on Alex's last comment
> on the issue, it seems hard to give a predicate that matches the type.
> 
> 
> (Whenever I've wanted `partition` in typed code, I was always able to
> use 2 filters instead.)
> 
> On 10/5/21, 'John Clements' via Racket Users
>  wrote:
>> I was somewhat surprised to see today that I can’t use a predicate with both
>> positive and negative propositions in the way I would expect with
>> partition:
>> 
>>> (:print-type partition)
>> (All (a b)
>>  (case->
>>   (-> (-> b Any : #:+ a) (Listof b) (values (Listof a) (Listof b)))
>>   (-> (-> a Any) (Listof a) (values (Listof a) (Listof a)
>> 
>> 
>> Specifically, I would have expected the type to be something like this:
>> 
>> (All (a b c)
>>  (case->
>>   (-> (-> b Any : #:+ a) (Listof b) (values (Listof a) (Listof b)))
>>   ;; the second list must consist of 'c's:
>>   (-> (-> b Any : #:+ a #:- c) (Listof b) (values (Listof a) (Listof c)))
>>   (-> (-> a Any) (Listof a) (values (Listof a) (Listof a)
>> 
>> … so that if, say, I had a list of Elephants and Emus, that I could use
>> elephant? to split it into two lists: one of type (Listof Elephant) and one
>> of type (Listof Emu).
>> 
>> I tried to roll my own, and got pretty close:
>> 
>> (: my-partition
>>   (All (a b c)
>>(case->
>> ;; the second list must consist of 'c's:
>> (-> (-> b Any : #:+ a #:- c) (Listof b) (values (Listof a) (Listof
>> c)))
>> )))
>> 
>> (define (my-partition my-pred elts)
>>  (cond [(empty? elts)
>> (values '() '())]
>>[else
>> (define-values (stacks non-stacks)
>>   (my-partition my-pred (rest elts)))
>> (define f (first elts))
>> (cond [(my-pred f)
>>(values (cons f stacks)
>>non-stacks)]
>>   [else
>>(values stacks (cons f non-stacks))])]))
>> 
>> That is, I can do it for the case-> clause that I care about. Putting the
>> other two back in there causes it to fail type-checking. Is that the
>> problem, that TR can’t accommodate both flavors in the same type?
>> 
>> John
>> 
>> 
>> --
>> 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/aa1e77a8-9cc4-4f99-b413-1304daeec12b%40mtasv.net.
>> 

-- 
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/724d3012-b8e3-4be2-9ce1-fbc15cbd0bd6%40mtasv.net.


[racket-users] using neg-propositions in partition?

2021-10-05 Thread 'John Clements' via Racket Users
I was somewhat surprised to see today that I can’t use a predicate with both 
positive and negative propositions in the way I would expect with partition:

> (:print-type partition)
(All (a b)
  (case->
   (-> (-> b Any : #:+ a) (Listof b) (values (Listof a) (Listof b)))
   (-> (-> a Any) (Listof a) (values (Listof a) (Listof a)


Specifically, I would have expected the type to be something like this:

(All (a b c)
  (case->
   (-> (-> b Any : #:+ a) (Listof b) (values (Listof a) (Listof b)))
   ;; the second list must consist of 'c's:
   (-> (-> b Any : #:+ a #:- c) (Listof b) (values (Listof a) (Listof c)))
   (-> (-> a Any) (Listof a) (values (Listof a) (Listof a)

… so that if, say, I had a list of Elephants and Emus, that I could use 
elephant? to split it into two lists: one of type (Listof Elephant) and one of 
type (Listof Emu).

I tried to roll my own, and got pretty close:

(: my-partition
   (All (a b c)
(case->
 ;; the second list must consist of 'c's:
 (-> (-> b Any : #:+ a #:- c) (Listof b) (values (Listof a) (Listof c)))
 )))

(define (my-partition my-pred elts)
  (cond [(empty? elts)
 (values '() '())]
[else
 (define-values (stacks non-stacks)
   (my-partition my-pred (rest elts)))
 (define f (first elts))
 (cond [(my-pred f)
(values (cons f stacks)
non-stacks)]
   [else
(values stacks (cons f non-stacks))])]))

That is, I can do it for the case-> clause that I care about. Putting the other 
two back in there causes it to fail type-checking. Is that the problem, that TR 
can’t accommodate both flavors in the same type?

John


-- 
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/aa1e77a8-9cc4-4f99-b413-1304daeec12b%40mtasv.net.


[racket-users] racket/gui/base in sandboxes in places

2021-10-03 Thread 'William J. Bowman' via Racket Users
I'm trying to run sandboxes in places, but when the sandboxes need access to 
racket/gui (such as through 2htdp/universe), they get `cannot instantiate 
racket/gui/base' a second time`. I've tried initing racket/gui once in the 
server that starts the places, but this doesn't seem to work. (gui-available?) 
is still false in started places, and they still raise the exception when the 
sandbox tries to load the gui module.

I don't really need to run gui code in the sandbox, so I'm guessing the best 
workaround is to override `2htdp/universe` in the sandbox.

Anyone have either a solution, or a better workaround?

-- 
William J. Bowman

-- 
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/YVoM6JS2oCQhdvRq%40williamjbowman.com.


Re: [racket-users] What is the correct name for non-list parenthesized forms?

2021-09-24 Thread 'John Clements' via Racket Users
I think I wouldn’t say “accepts”; I usually reserve this term for functions, 
but that’s a minor quibble.

I think I would call these “clauses”, as in

“With-handlers allows the user to specify exception-handling clauses. Each one 
includes two parts: a predicate, indicating whether blah blah blah, and a 
handler, which is called blah blah blah.”

No?

John

> On Sep 24, 2021, at 11:28, David Storrs  wrote:
> 
> 
> 
> On Fri, Sep 24, 2021 at 1:49 PM Jay McCarthy  wrote:
> I think the word you're looking for is "syntax". Many people think that 
> languages like Racket "don't have syntax" or "have uniform syntax", but this 
> is an example of how that is incorrect. Each macro has its own unique syntax 
> and this is an example of how `let` has a unique syntax where `(` does _not_ 
> mean "apply a function" or "apply a macro".
> 
> As a poor analogy, many human languages have a wide set of phonemes and you 
> combine those in certain rules (like you can't have 27 consonant sounds in a 
> row) and then use them in wider situations that we call grammar. I like to 
> think that languages like C has lots of phonemes and little grammar, because 
> there are lots of rules about how to form "C words" but basically no rules 
> for how to form "C sentences", because there's a lot of uniformity in how 
> expressions and statements combine. In contrast, languages like Racket have 
> very few phonemes (this is what I think people mean why they say "there is no 
> syntax") but many varied rules (in fact, arbitrary, because macros can 
> customize them) for combining those smaller units.
> 
> So there's no specific term for this structure?  I was looking for a 
> standardized way to say something like "with-handlers accepts a group of 
> two-element groups where each subgroup consists of a predicate and an action."
> 
> Jay
> 
> --
> Jay McCarthy
> Associate Professor @ CS @ UMass Lowell
> http://jeapostrophe.github.io
> Vincit qui se vincit.
> 
> 
> On Fri, Sep 24, 2021 at 1:25 PM David Storrs  wrote:
> Racket has a number of forms that include what look like lists of lists but 
> are not.  For example:  (let ((foo 7) (bar 8)) ...)
> 
> What would the '(foo 7)' and '(bar 8)' elements be called?  Groups, maybe?
> 
> -- 
> 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/CAE8gKodX800fK45c_dyVFCNB-AKmYmK26DxC42ZRDVHdzJ2Q7g%40mail.gmail.com.
> 
> -- 
> 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/CAE8gKoeM6YYgpj-4Ey%2BoSSKRS%2BfMch3d0GDu85f9mwHmtxwVig%40mail.gmail.com.

-- 
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/11a531ce-22f2-4f23-8246-46c6c77ffae7%40mtasv.net.


[racket-users] Call for Tutorials and Workshops: PLDI 2022

2021-09-21 Thread 'William J. Bowman' via Racket Users
Please distribute widely:

# Call for Workshops and Tutorials

PLDI 2022 is a world-class forum for researchers and practitioners in 
programming language design and implementation. As in previous years, PLDI is 
soliciting proposals for co-located workshops and tutorials that will take 
place on Monday June 20th, and Tuesday June 21st. Please propose your workshop 
or tutorial via the submission system.

The following details will be asked on submission:

* Name of the workshop/tutorial.
* Duration of the workshop/tutorial.
* Organizers: names, affiliation, contact information, brief (100 words) 
biography.
* A short description (150-200 words) of the topic.
* Event format: workshop/tutorial; type of submissions, if any; review process; 
results dissemination.
* Expected attendance and target audience within the PLDI community.
* How you plan to foster an inclusive environment and promote a diverse 
attendance.
* Information on any previous iterations of the workshop or tutorial.

*Note:* Workshops must make their own acceptance decisions by April 21, 2022 if 
there will be proceedings (final versions due May 5, 2022), or May 5, 2022.

## Submission
Submission site: 
https://pldi22.sigplan.org/createProposal/d625158d-7188-4844-88cd-9bf71182aa9a

Workshops that would like their proceedings included in the ACM Digital Library 
must submit a proposal by November 18, 2021.

Workshops and tutorials that will have no formal proceedings should submit a 
proposal by November 30, 2021.

## Review

Proposals are reviewed by the Workshop and Tutorials Chairs, and if necessary, 
by the PLDI general chair.

* Proposals will be evaluated according to the relevance of the topic, the 
expertise and experience of the workshop organizers, and their potential to 
attract participants.
* Proposals submitted between November 18th and 30th will be evaluated on a 
first-come-first-served basis.

## Notification

We will notify workshop/tutorial acceptance by December 9th.

## Timeline

Submission deadline (with proceedings): November 18

Submission deadline (no proceedings): November 30

Notification: December 9

## Dissemination

A proposal should clearly state how the results of the workshop — i.e., 
published papers and other outcomes — will be made available to participants 
and others before and after the workshop event. The Workshops and Tutorials 
Chair will provide guidance to the organizers of accepted workshops that wish 
to publish proceedings in the ACM Digital Library. For those that choose to 
publish their papers in ACM Digital Library, please add the following text in 
the workshop call for papers and on the website:

*AUTHORS TAKE NOTE:* The official publication date is the date the proceedings 
are made available in the ACM Digital Library. This date may be up to two weeks 
prior to the first day of your conference. The official publication date 
affects the deadline for any patent filings related to published work. (For 
those rare conferences whose proceedings are published in the ACM Digital 
Library after the conference is over, the official publication date remains the 
first day of the conference.)

Workshops that elect to publish proceedings can do so in the ACM Digital 
Library with sponsoring by SIGPLAN. The application for SIGPLAN sponsorship 
includes reviewing the proposed program committee with the SIGPLAN Executive 
Committee, a process which the chairs will help facilitate.

## Workshop Co-Chairs
- Nadia Polikarpova, U. of California at San Diego
- Alexandra Silva, U. College London

-- 
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/YUo3Bf8aFrLcIBgm%40williamjbowman.com.


Re: [racket-users] Help debugging handin client connection problem

2021-09-19 Thread 'William J. Bowman' via Racket Users
I think I've debugged the issue, but it's only present in our locally modified 
version of the client, although the root cause could affects others. In case 
others have minor modifications to the client, or anyone modifies the client in 
the future:

It was a race condition between some error checking logic and connection 
initialization. If the error occured before the connection initialized, then 
the connection would be hung. I'm guessing this is related to the `go-sema` but 
I'm not entirely sure.

We added some additional error checking that happens at line:
  
https://github.com/racket/handin/blob/ac08937cc6b1eca8abe3d4d4df59876f95cbea17/handin-client/client-gui.rkt#L353
We simply checked that the current file was saved and raised an error if not:
> (unless filename
>   (report-error "File is not saved. Please save the file and try again."))

This occurs in parallel with initializing the connection:
  
https://github.com/racket/handin/blob/ac08937cc6b1eca8abe3d4d4df59876f95cbea17/handin-client/client-gui.rkt#L345

If the error checking raises an error before the connection is established, it 
seems that the connection logic completely hangs, and the connection can never 
be used.

We can't move the error checking BEFORE the initialization, since 
`report-error` relies on the `comm-cust` variable, which is initialized through 
mutation by `(init-comm)`.

Instead, I've moved the error reporting to happen AFTER the connection has 
definitely been established, right before a user tries to submit. This is a 
shame, since it principle it can happen in parallel with initialization, but I 
can figure out how to untangle this code enough to do that without risking the 
race condition.

--
William J. Bowman

On Sat, Sep 18, 2021 at 08:28:25PM -0700, 'William J. Bowman' via Racket Users 
wrote:
> I've confirmed it's definitely client side, by redirecting the handin 
> server's address to 127.0.0.1 in /etc/hosts, and listening with `nc -l`. The 
> handin client hangs on "Making secure connection ..." and nc display nothing 
> at all. A few restarts and `nc -l` displays a bunch of gibberish that I'm 
> guessing is the handin protocol, and killing `nc` triggers the handin client 
> to report a connection error.
> 
> So it's:
> - handin client side
> - maybe related to openssl
> - nondeterministic
> - when it occurs, it will recur until you restart DrRacket
> - when it doesn't occur, it will not recur until you restart DrRacket
> - affects 8.1 BC
> - affects 8.1 CS
> - affects 8.2.0.2 CS 
> - results in the client failing send anything to the network
> 
> --
> William J. Bowman
> 
> On Sat, Sep 18, 2021 at 08:05:10PM -0700, 'William J. Bowman' via Racket 
> Users wrote:
> > Since I'm currently experiencing the issue, I've been able to get some 
> > better data. I've managed to reproduce it in 8.2.0.2 CS, which suggests 
> > it's not https://github.com/racket/racket/issues/3804.
> > 
> > Restarting twice DrRacket hasn't helped, nor has resetting my wifi 
> > connection.
> > 
> > After connecting via a browser, I notice a lot of the following in the log 
> > that seem to correlate with my attempts in the browser:
> > > [-|2021-09-18T19:37:45] handin: unknown protocol: #"GET / HTTP/1.1"
> > > ...
> > > [-|2021-09-18T19:37:53] ERROR: ssl-accept/enable-break: accept failed 
> > > (error:1408F09C:SSL routines:ssl3_get_record:http request)
> > 
> > As expected, nothing seem to correlate with my attempts to connect from the 
> > handin plugin.
> > 
> > This makes me suspect the server, but I can't reconcile that with why 
> > there's nothing in the logs.
> > 
> > --
> > William J. Bowman
> > 
> > On Sat, Sep 18, 2021 at 06:59:43PM -0700, 'William J. Bowman' via Racket 
> > Users wrote:
> > > I just tried this, but I can't seem to connect.
> > >   http://cs110.students.cs.ubc.ca:7979/
> > > gives "connection reset", and 
> > >   https://cs110.students.cs.ubc.ca:7979/
> > > gives "secure connection failed".
> > > 
> > > There's no prompt to accept the certificate (which I wouldn't expect, 
> > > because we're using a CA signed certificate through Let's Encrypt, not a 
> > > self-signed certificate).
> > > 
> > > I'm currently experiencing the problem on my own client. I'm not sure if 
> > > that's related; I also couldn't connect from my phone.
> > > 
> > > --
> > > William J. Bowman
> > > 
> > > On Sat, Sep 18, 2021 at 09:24:05PM -0400, Sam Tobin-Hochstadt wrote:
> > > > Have you tried visiting the server with a browser? That should work,
> > > > although you'l

Re: [racket-users] Help debugging handin client connection problem

2021-09-18 Thread 'William J. Bowman' via Racket Users
I've confirmed it's definitely client side, by redirecting the handin server's 
address to 127.0.0.1 in /etc/hosts, and listening with `nc -l`. The handin 
client hangs on "Making secure connection ..." and nc display nothing at all. A 
few restarts and `nc -l` displays a bunch of gibberish that I'm guessing is the 
handin protocol, and killing `nc` triggers the handin client to report a 
connection error.

So it's:
- handin client side
- maybe related to openssl
- nondeterministic
- when it occurs, it will recur until you restart DrRacket
- when it doesn't occur, it will not recur until you restart DrRacket
- affects 8.1 BC
- affects 8.1 CS
- affects 8.2.0.2 CS 
- results in the client failing send anything to the network

--
William J. Bowman

On Sat, Sep 18, 2021 at 08:05:10PM -0700, 'William J. Bowman' via Racket Users 
wrote:
> Since I'm currently experiencing the issue, I've been able to get some better 
> data. I've managed to reproduce it in 8.2.0.2 CS, which suggests it's not 
> https://github.com/racket/racket/issues/3804.
> 
> Restarting twice DrRacket hasn't helped, nor has resetting my wifi connection.
> 
> After connecting via a browser, I notice a lot of the following in the log 
> that seem to correlate with my attempts in the browser:
> > [-|2021-09-18T19:37:45] handin: unknown protocol: #"GET / HTTP/1.1"
> > ...
> > [-|2021-09-18T19:37:53] ERROR: ssl-accept/enable-break: accept failed 
> > (error:1408F09C:SSL routines:ssl3_get_record:http request)
> 
> As expected, nothing seem to correlate with my attempts to connect from the 
> handin plugin.
> 
> This makes me suspect the server, but I can't reconcile that with why there's 
> nothing in the logs.
> 
> --
> William J. Bowman
> 
> On Sat, Sep 18, 2021 at 06:59:43PM -0700, 'William J. Bowman' via Racket 
> Users wrote:
> > I just tried this, but I can't seem to connect.
> >   http://cs110.students.cs.ubc.ca:7979/
> > gives "connection reset", and 
> >   https://cs110.students.cs.ubc.ca:7979/
> > gives "secure connection failed".
> > 
> > There's no prompt to accept the certificate (which I wouldn't expect, 
> > because we're using a CA signed certificate through Let's Encrypt, not a 
> > self-signed certificate).
> > 
> > I'm currently experiencing the problem on my own client. I'm not sure if 
> > that's related; I also couldn't connect from my phone.
> > 
> > --
> > William J. Bowman
> > 
> > On Sat, Sep 18, 2021 at 09:24:05PM -0400, Sam Tobin-Hochstadt wrote:
> > > Have you tried visiting the server with a browser? That should work,
> > > although you'll have to accept the certificate. It might also indicate 
> > > some
> > > aspect of the behavior.
> > > 
> > > Sam
> > > 
> > > On Sat, Sep 18, 2021, 7:13 PM 'William J. Bowman' via Racket Users <
> > > racket-users@googlegroups.com> wrote:
> > > 
> > > > I need some help debugging an issue with the handin package. The handin
> > > > plugin (client) displays “Making secure connection to  
> > > > …”,
> > > > and simply hangs. Closing the dialog and trying again never resolves the
> > > > issue.
> > > >
> > > > The only method that seems to resolve the issue, although 
> > > > inconsistently,
> > > > is restarting DrRacket, opening a new file, and trying to submit that 
> > > > new
> > > > file. This sometimes, but not always, enables the client to connect. 
> > > > Once
> > > > it does connect, the issue doesn't seem to recur for some time. The 
> > > > client
> > > > can make multiple successful submissions, at least until the end of 
> > > > lecture
> > > > (maybe related to the next time they disconnect/reconnect to the 
> > > > internet).
> > > >
> > > > We running Racket 7.8 on the server and 8.1 BC on the clients. We've 
> > > > seen
> > > > the issue occur on many operating system---old and new versions of 
> > > > macOS,
> > > > Windows 10, and at one report on Linux.
> > > >
> > > > I can't just upgrade the clients to 8.2, since there's a bug in 8.2 that
> > > > affects rendering inexact numbers in BSL, so I really want some 
> > > > confidence
> > > > about what the issue is before I start upgrading versions.
> > > >
> > > > Anecdotally, the problem seems more common this semester compared to the
> > > > previous semester, and we upgraded the clients to 8.1 this semester,
> > &

Re: [racket-users] Help debugging handin client connection problem

2021-09-18 Thread 'William J. Bowman' via Racket Users
Since I'm currently experiencing the issue, I've been able to get some better 
data. I've managed to reproduce it in 8.2.0.2 CS, which suggests it's not 
https://github.com/racket/racket/issues/3804.

Restarting twice DrRacket hasn't helped, nor has resetting my wifi connection.

After connecting via a browser, I notice a lot of the following in the log that 
seem to correlate with my attempts in the browser:
> [-|2021-09-18T19:37:45] handin: unknown protocol: #"GET / HTTP/1.1"
> ...
> [-|2021-09-18T19:37:53] ERROR: ssl-accept/enable-break: accept failed 
> (error:1408F09C:SSL routines:ssl3_get_record:http request)

As expected, nothing seem to correlate with my attempts to connect from the 
handin plugin.

This makes me suspect the server, but I can't reconcile that with why there's 
nothing in the logs.

--
William J. Bowman

On Sat, Sep 18, 2021 at 06:59:43PM -0700, 'William J. Bowman' via Racket Users 
wrote:
> I just tried this, but I can't seem to connect.
>   http://cs110.students.cs.ubc.ca:7979/
> gives "connection reset", and 
>   https://cs110.students.cs.ubc.ca:7979/
> gives "secure connection failed".
> 
> There's no prompt to accept the certificate (which I wouldn't expect, because 
> we're using a CA signed certificate through Let's Encrypt, not a self-signed 
> certificate).
> 
> I'm currently experiencing the problem on my own client. I'm not sure if 
> that's related; I also couldn't connect from my phone.
> 
> --
> William J. Bowman
> 
> On Sat, Sep 18, 2021 at 09:24:05PM -0400, Sam Tobin-Hochstadt wrote:
> > Have you tried visiting the server with a browser? That should work,
> > although you'll have to accept the certificate. It might also indicate some
> > aspect of the behavior.
> > 
> > Sam
> > 
> > On Sat, Sep 18, 2021, 7:13 PM 'William J. Bowman' via Racket Users <
> > racket-users@googlegroups.com> wrote:
> > 
> > > I need some help debugging an issue with the handin package. The handin
> > > plugin (client) displays “Making secure connection to  …”,
> > > and simply hangs. Closing the dialog and trying again never resolves the
> > > issue.
> > >
> > > The only method that seems to resolve the issue, although inconsistently,
> > > is restarting DrRacket, opening a new file, and trying to submit that new
> > > file. This sometimes, but not always, enables the client to connect. Once
> > > it does connect, the issue doesn't seem to recur for some time. The client
> > > can make multiple successful submissions, at least until the end of 
> > > lecture
> > > (maybe related to the next time they disconnect/reconnect to the 
> > > internet).
> > >
> > > We running Racket 7.8 on the server and 8.1 BC on the clients. We've seen
> > > the issue occur on many operating system---old and new versions of macOS,
> > > Windows 10, and at one report on Linux.
> > >
> > > I can't just upgrade the clients to 8.2, since there's a bug in 8.2 that
> > > affects rendering inexact numbers in BSL, so I really want some confidence
> > > about what the issue is before I start upgrading versions.
> > >
> > > Anecdotally, the problem seems more common this semester compared to the
> > > previous semester, and we upgraded the clients to 8.1 this semester,
> > > suggesting the clients are at fault.
> > >
> > > When this problem occurs, there is nothing in the log on the handin
> > > server, suggesting the client did not even manage to initiate the
> > > connection to the server. In particular, the server never seems to make it
> > > to this log line:
> > >
> > > https://github.com/racket/handin/blob/ac08937cc6b1eca8abe3d4d4df59876f95cbea17/handin-server/main.rkt#L679
> > > This is one the earliest log lines and before pretty much anything
> > > happens, so we're *PRETTY SURE* the client is blocking.
> > >
> > > Right now, my best guess is that we might be affected by this bug, which
> > > causes SSL ports to block incorrectly:
> > >   https://github.com/racket/racket/issues/3804
> > >
> > > If so, it would probably be in the client, unless `(ssl-addresses r)` can
> > > block in the same way on the server, since otherwise the above log line
> > > would execute.
> > >
> > > However, if it is the client, I don't have any explanation about why
> > > restarting DrRacket would workaround the bug, or why it sometimes doesn't
> > > work.
> > >
> > > I'd appreciate any help.
> > >
> > > --
> > > William J. Bo

Re: [racket-users] Help debugging handin client connection problem

2021-09-18 Thread 'William J. Bowman' via Racket Users
I just tried this, but I can't seem to connect.
  http://cs110.students.cs.ubc.ca:7979/
gives "connection reset", and 
  https://cs110.students.cs.ubc.ca:7979/
gives "secure connection failed".

There's no prompt to accept the certificate (which I wouldn't expect, because 
we're using a CA signed certificate through Let's Encrypt, not a self-signed 
certificate).

I'm currently experiencing the problem on my own client. I'm not sure if that's 
related; I also couldn't connect from my phone.

--
William J. Bowman

On Sat, Sep 18, 2021 at 09:24:05PM -0400, Sam Tobin-Hochstadt wrote:
> Have you tried visiting the server with a browser? That should work,
> although you'll have to accept the certificate. It might also indicate some
> aspect of the behavior.
> 
> Sam
> 
> On Sat, Sep 18, 2021, 7:13 PM 'William J. Bowman' via Racket Users <
> racket-users@googlegroups.com> wrote:
> 
> > I need some help debugging an issue with the handin package. The handin
> > plugin (client) displays “Making secure connection to  …”,
> > and simply hangs. Closing the dialog and trying again never resolves the
> > issue.
> >
> > The only method that seems to resolve the issue, although inconsistently,
> > is restarting DrRacket, opening a new file, and trying to submit that new
> > file. This sometimes, but not always, enables the client to connect. Once
> > it does connect, the issue doesn't seem to recur for some time. The client
> > can make multiple successful submissions, at least until the end of lecture
> > (maybe related to the next time they disconnect/reconnect to the internet).
> >
> > We running Racket 7.8 on the server and 8.1 BC on the clients. We've seen
> > the issue occur on many operating system---old and new versions of macOS,
> > Windows 10, and at one report on Linux.
> >
> > I can't just upgrade the clients to 8.2, since there's a bug in 8.2 that
> > affects rendering inexact numbers in BSL, so I really want some confidence
> > about what the issue is before I start upgrading versions.
> >
> > Anecdotally, the problem seems more common this semester compared to the
> > previous semester, and we upgraded the clients to 8.1 this semester,
> > suggesting the clients are at fault.
> >
> > When this problem occurs, there is nothing in the log on the handin
> > server, suggesting the client did not even manage to initiate the
> > connection to the server. In particular, the server never seems to make it
> > to this log line:
> >
> > https://github.com/racket/handin/blob/ac08937cc6b1eca8abe3d4d4df59876f95cbea17/handin-server/main.rkt#L679
> > This is one the earliest log lines and before pretty much anything
> > happens, so we're *PRETTY SURE* the client is blocking.
> >
> > Right now, my best guess is that we might be affected by this bug, which
> > causes SSL ports to block incorrectly:
> >   https://github.com/racket/racket/issues/3804
> >
> > If so, it would probably be in the client, unless `(ssl-addresses r)` can
> > block in the same way on the server, since otherwise the above log line
> > would execute.
> >
> > However, if it is the client, I don't have any explanation about why
> > restarting DrRacket would workaround the bug, or why it sometimes doesn't
> > work.
> >
> > I'd appreciate any help.
> >
> > --
> > William J. Bowman
> >
> > --
> > 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/YUZyWlsY9CdCDyPu%40williamjbowman.com
> > .
> >

-- 
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/YUaZj9v0Lch0jfMC%40williamjbowman.com.


[racket-users] Help debugging handin client connection problem

2021-09-18 Thread 'William J. Bowman' via Racket Users
I need some help debugging an issue with the handin package. The handin plugin 
(client) displays “Making secure connection to  …”, and simply 
hangs. Closing the dialog and trying again never resolves the issue.

The only method that seems to resolve the issue, although inconsistently, is 
restarting DrRacket, opening a new file, and trying to submit that new file. 
This sometimes, but not always, enables the client to connect. Once it does 
connect, the issue doesn't seem to recur for some time. The client can make 
multiple successful submissions, at least until the end of lecture (maybe 
related to the next time they disconnect/reconnect to the internet).

We running Racket 7.8 on the server and 8.1 BC on the clients. We've seen the 
issue occur on many operating system---old and new versions of macOS, Windows 
10, and at one report on Linux.

I can't just upgrade the clients to 8.2, since there's a bug in 8.2 that 
affects rendering inexact numbers in BSL, so I really want some confidence 
about what the issue is before I start upgrading versions.

Anecdotally, the problem seems more common this semester compared to the 
previous semester, and we upgraded the clients to 8.1 this semester, suggesting 
the clients are at fault.

When this problem occurs, there is nothing in the log on the handin server, 
suggesting the client did not even manage to initiate the connection to the 
server. In particular, the server never seems to make it to this log line:
  
https://github.com/racket/handin/blob/ac08937cc6b1eca8abe3d4d4df59876f95cbea17/handin-server/main.rkt#L679
This is one the earliest log lines and before pretty much anything happens, so 
we're *PRETTY SURE* the client is blocking.

Right now, my best guess is that we might be affected by this bug, which causes 
SSL ports to block incorrectly:
  https://github.com/racket/racket/issues/3804

If so, it would probably be in the client, unless `(ssl-addresses r)` can block 
in the same way on the server, since otherwise the above log line would execute.

However, if it is the client, I don't have any explanation about why restarting 
DrRacket would workaround the bug, or why it sometimes doesn't work.

I'd appreciate any help.

-- 
William J. Bowman

-- 
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/YUZyWlsY9CdCDyPu%40williamjbowman.com.


[racket-users] É PEDOFILO ASSASSINO: #PAOLOBARRAI DI CRIMINALISSIMA #TERRABITCOIN! IL MALAVITOSO LEGHISTA #LUCASOSTEGNI, POI INCARCERATO, STAVA SCAPPANDO A PORTO SEGURO (BRASILE), DOVE IL KILLER PAOLO

2021-09-16 Thread 'LORENZO PIACENTINI LAZARD MILAN' via Racket Users
É PEDOFILO ASSASSINO: #PAOLOBARRAI DI CRIMINALISSIMA #TERRABITCOIN! IL 
MALAVITOSO LEGHISTA #LUCASOSTEGNI, POI INCARCERATO, STAVA SCAPPANDO A PORTO 
SEGURO (BRASILE), DOVE IL KILLER PAOLO BARRAI HA RICICLATO PARTE DEI 49 MLN 
€ RUBATI DA LEGA LADRONA!

RAPISCE, INCULA ED UCCIDE TANTI BAMBINI: PAOLO BARRAI (NOTO COME "IL 
PEDOFILO DEL BITCOIN, DI LEGA LADRONA, DI STRAGISTA SILVIO BERLUSCONI 
#SILVIOBERLUSCONI E DI NAZISTA MARINA BERLUSCONI #MARINABERLUSCONI ")! 
SEMPRE A "SPENNARE" ECONOMICAMENTE I POLLI DEL WEB! FALSO, LADRO, 
TRUFFATORE! AZZERA I TUOI RISPARMI! NON AZZECCA MAI PREVISIONI IN BORSA! É 
NAZISTA OMICIDA E RICICLA SOLDI STRA ASSASSINI DI NDRANGHETA, CAMORRA, 
MAFIA, SACRA CORONA UNITA E LEGA LADRONA (OLTRE CHE DI PEDOFILO ASSASSINO 
SILVIO BERLUSCONI)!

SALVE. SONO ANDREAS NIGG. VICE PRESIDENT DI BANCA SAFRA SARASIN DI ZURIGO. 
E VI VOGLIO DIRE CON TUTTE LE MIE FORZE CHE...

IL LEGHISTA PEDOFILO ED ASSASSINO PAOLO BARRAI (NATO A MILANO IL 
28.6.1965), IL LEGHISTA INCULA ED AMMAZZA BAMBINI PAOLO PIETRO BARRAI (NOTO 
IN TUTTO IL MONDO COME IL PEDOFILO DEL BITCOIN) E' DA ANNI INDAGATO DA 
PROCURA DI MILANO, PROCURA DI LUGANO, PROCURA DI ZUGO, SCOTLAND YARD 
LONDRA, FBI NEW YORK, POLICIA CIVIL DI PORTO SEGURO (BR).

É DAVVERO PEDERASTA ED OMICIDA: PAOLO BARRAI DI CRIMINALE TERRA BITCOIN (O 
CRIMINALE TERRABITCOIN CLUB)! IL LEGHISTA DELINQUENTE LUCA SOSTEGNI, 
ARRESTATO, SCAPPAVA IN CITATA PORTO SEGURO (BR), OSSIA, GUARDA CASO, DOVE 
IL KILLER NAZISTA PAOLO BARRAI HA RICICLATO PARTE DEI 49 MLN € RUBATI DA 
LEGA LADRONA!

(ECCONE LE PROVE
https://oneway2day.files.wordpress.com/2019/01/indagatoaiutalelisteciviche.jpg
http://www.rotadosertao.com/noticia/10516-porto-seguro-policia-investiga-blogueiro-italiano-suspeito-de-estelionato
http://noticiasdeportoseguro.blogspot.com/2011/03/quem-e-pietro-paolo-barrai.html
 
)

É TRUFFATORE, PEDOFILO ED ASSASSINO: PAOLO BARRAI( O TRUFFATORE, PEDOFILO 
ED ASSASSINO PAOLO PIETRO BARRAI). DI CRIMINALE TERRA BITCOIN (ASSOCIAZIONE 
CON INTENTO DI FOTTERE, FREGARE, SPENNARE POLLI VIA INTERNET, IL TUTTO VIA 
NAZIFASCISTA SITO TELEGRAM) E CRIMINALISSIMO BLOG MERCATO LIBERO, ALIAS 
"MERDATO" LIBERO! INDAGATO, AL MOMENTO, DALLA PROCURA DI MILANO. COME PURE 
DA PROCURA DI LUGANO, SCOTLAND YARD LONDRA, FBI NEW YORK, POLICIA CIVIL DI 
PORTO SEGURO (BR).

TROVATE TANTI ALTRI VINCENTISSIMI DETTAGLI, A PROPOSITO DI QUESTO, QUI:
https://comp.lang.python.narkive.com/qkxGCaas/e-pedofilo-ed-assassino-paolo-barrai-di-criminale-terra-bitcoin-e-truffatore-spenna-i-polli-del-web-

-- 
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/8d276e03-62fe-465c-b7de-507d846ac3e4n%40googlegroups.com.


[racket-users] PLDI 2022 First Call for Papers

2021-09-08 Thread 'William J. Bowman' via Racket Users
Please distribute widely.

*Call for Papers*

2022 ACM Conference on Programming Language Design and Implementation (PLDI)
Mon 20 - Fri 24 June 2022
San Diego, California, United States
https://pldi22.sigplan.org/track/pldi-2022-pldi#Call-for-Papers

PLDI is a premier forum for programming language research, broadly construed, 
including design, implementation, theory, applications, and performance. PLDI 
seeks outstanding research that extends and/or applies programming-language 
concepts to advance the field of computing. Novel system designs, thorough 
empirical work, well-motivated theoretical results, and new application areas 
are all welcome emphases in strong PLDI submissions.

Reviewers will evaluate each contribution for its accuracy, significance, 
originality, and clarity. Submissions should be organized to communicate 
clearly to a broad programming-language audience as well as to experts on the 
paper’s topics. Papers should identify what has been accomplished and how it 
relates to previous work.

Authors of empirical papers are encouraged to consider the seven categories of 
the SIGPLAN Empirical Evaluation Guidelines when preparing their submissions. 
(http://www.sigplan.org/Resources/EmpiricalEvaluation/)

*Important Dates*
===
Fri 19 Nov 2021, Submission Deadline
Mon 7 Feb - Wed 9 Feb 2022, Author Response
Fri 25 Feb 2022, Author Notification

*Author Instructions*
==
https://pldi22.sigplan.org/track/pldi-2022-pldi#Call-for-Papers

Submission site: https://pldi2022.hotcrp.com/

*Organizing Committee*

General Chair: Ranjit Jhala, U. of California at San Diego
Program Chair: Isil Dillig, U. of Texas at Austin
Web Chair: Dan Barowy, Williams College
Publicity Co-Chairs: William J. Bowman, U. of British Columbia
Arjun Guha, Northeastern U.
Sponsorship Co-Chairs: Ravi Chugh, U. of Chicago
   Sasa Misailovic, U. of Illinois at Urbana-Champaign
Workshops Co-Chairs: Nadia Polikarpova, U. of California at San Diego
 Alexandra Silva, U. College London
Student Research Competition Co-Chairs: Tyler Sorensen, U. of California at 
Santa Cruz
Jubi Taneja, Microsoft Research
Artifact Evaluation Co-Chairs: Niki Vazou, IMDEA Software Institute
   Xinyu Wang, U. of Michigan

https://pldi22.sigplan.org/committee/pldi-2022-organizing-committee

-- 
William J. Bowman

-- 
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/YTjwBHFscbjUGnVE%40williamjbowman.com.


Re: [racket-users] Bootstrap on Racket

2021-09-04 Thread 'John Clements' via Racket Users
I use Greg Hendershott’s excellent and trouble-free ‘frog’ library. How would 
your code relate to this?

John

> On Aug 30, 2021, at 10:57, Dexter Lagan  wrote:
> 
> Hi again,
> 
>   I've been working on porting my Newstrap Web framework from newLISP to 
> Racket. I got most of it done and am about to start work on a router. Here's 
> what I got so far:
> 
> DexterLagan/rap: Combination of Racket and Bootstrap, RAP is a Web framework 
> aiming to produce good-looking pages with ease. (github.com)
> 
> based on Newsrap:
> 
> DexterLagan/newstrap: A fast, lightweight web framework written in newLISP. 
> (github.com)
> 
>   Does anybody know if something similar already exists? I looked around but 
> couldn't find anything production-ready (in Racket). I just want to know if 
> I'm wasting my time reinventing the wheel, or if there's value in having a 
> bunch of macros generate Bootstrap code. My first goal would be to have a 
> static site generator going, followed by a fully-featured framework for 
> production use.
> 
> Any and all feedback would help me greatly!
> 
> Dex
> 
> 
> -- 
> 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/473170ba-624a-4339-b499-9e936765603cn%40googlegroups.com.

-- 
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/75aa8867-0487-412e-9ce3-22edefb0a1e0%40mtasv.net.


[racket-users] Racket v8.2

2021-07-18 Thread 'John Clements' via Racket Users
--
Racket version 8.2 is now available from

https://racket-lang.org/


* Racket CS improved the performance of large-integer arithmetic.

* Racket has improved support for layered and tethered installation.

* Racket CS supports nonatomic allocation via ffi/unsafe.

* Cross-compilation works fully with the `raco cross` tool, which is
  distributed separately as the "raco-cross" package.
  
* DrRacket has performance improvements when editing files with
  picts containing large bitmaps.

* Typed Racket more consistently refines field types of non-polymorphic
  structs.

* Printing of values is unified across the teaching language
  implementations and the stepper.

The following people contributed to this release:

Alex Harsányi, Alex Knauth, Amirouche, Andrew Mauer-Oats, Bob Burger,
Bogdan Popa, Cameron Moy, Crystal Jacobs, Dale Vaillancourt, Diego
A. Mundo, Fred Fu, Greg Hendershott, Gustavo Massaccesi, Jack Firth,
Jamie Taylor, Jarhmander, Jason Hemann, Jay McCarthy, Jeffrey D. Swan,
Jens Axel Søgaard, Jesse Alama, John Clements, Laurent Orseau,
Lazerbeak12345, Matthew Flatt, Matthias Felleisen, Mike Sperber, Nada
Amin, Noah Ma, Oscar Waddell, Paulo Matos, Pavel Panchekha, Philip
McGrath, Ray Racine, Robby Findler, Ryan Culpepper, Sam Tobin-Hochstadt,
Shu-Hung You, Sorawee Porncharoenwase, Stephen Chang, Thorsten Blum,
Tony Garnock-Jones, WarGrey Gyoudmon Ju, William J. Bowman, Yu Fang,
and minor-change.

Feedback Welcome
--

-- 
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/d5696ad8-f2d2-4b58-8834-0f2a2e953403%40mtasv.net.


Re: [racket-users] Question from a beginner. Why Racket Over Scheme?

2021-07-13 Thread 'John Clements' via Racket Users
Allow me to be very slightly less cautious than Robby: it may not be clear from 
this text that nearly every BSL program is also a Racket program *and* a Scheme 
program. If you work through HtDP—or even a part of it—you will be, I claim,  
both a Scheme and a Racket programmer. (And perhaps also a better Python, C, 
and Haskell programmer).

In other words: if your concern is that HtDP will not teach you Scheme, you 
need not worry.

John

> On Jul 13, 2021, at 11:19, Robby Findler  wrote:
> 
> I would say that the stuff in HtDP is teaching you the fundamentals of 
> programming; it isn't (about) teaching you a specific programming language. 
> These fundamentals apply to any programming language you might wish to 
> program in. And, of course, the book does use a (set of) languages to teach 
> you, but that's more about having something so that you can practice than it 
> is about teaching you the specifics of BSL.
> 
> If your goal is to learn how to program, just in general, I think HtDP is the 
> book for you. If your goal is something else, then HtDP may not be for you.
> 
> I should also add that I think that the learning the fundamentals of how to 
> program is a wonderful thing and I am very happy that I have learned them. It 
> is even better than my job overlaps with my favorite hobby (which happens to 
> be programming); I consider myself extremely lucky because of that!
> 
> best,
> Robby
> 
> 
> On Tue, Jul 13, 2021 at 10:12 AM joseph turco  
> wrote:
> I see. The stuff in HtDP, does it transfer over to any Racket syntax?
> 
> On Tue, Jul 13, 2021 at 10:56 AM George Neuner  wrote:
> 
> On 7/13/2021 10:13 AM, joseph turco wrote:
>> Hello,
>> 
>> Im am looking at learning a programming language, and have been bouncing 
>> around with scheme/racket/dyalog APL/squeak. upon investigation of scheme 
>> and racket, i found that in regards to racket, there really isn't a 
>> "Beginners book" that teaches the language. The only beginner book i could 
>> really see being close to teaching the language is HtDP, but that doesn't 
>> technically teach racket, but BSL. For scheme, im able to find beginner 
>> books, unless im not looking deep enough. Maybe if you fine folk don't mind 
>> pointing me in the right direction? Please excuse my ignorance.
>> 
>> -- Joseph T
> 
> Welcome.
> 
> Racket[*] largely is based on Scheme, and so much of what you learn about 
> Scheme will transfer.  Racket supports R5RS and R6RS Scheme as legacy 
> languages, so you can learn about Scheme /using/ Racket and its tools.  Then 
> when you are more comfortable, you can transition to using the Racket module 
> language instead.
> 
> George
> [*]  At least the untyped Racket language.  Racket really is a /suite/ of 
> languages: there also is a typed Racket, a lazy Racket, and various DSLs 
> (domain languages) which compile to and (mostly) freely intermix with Racket.
> 
> 
> -- 
> 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/CADhp54TpmGXSVDTjbcL%3DYqxiQDmytrMotcxJ7oKgTnniPQOwmg%40mail.gmail.com.
> 
> -- 
> 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/CAL3TdONjgSWi3fpY9yAyvzpsFqW-cCzqQYCbhpUeMK_te_R49w%40mail.gmail.com.

-- 
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/76ed8878-cf98-4835-a87b-53d2a750676b%40mtasv.net.


Re: [racket-users] Question from a beginner. Why Racket Over Scheme?

2021-07-13 Thread 'John Clements' via Racket Users
Good to hear from you! There are actually a number of different books that I 
might suggest. In order to best direct you, it might be useful to know 
something about your programming background?

Best,

John Clements

> On Jul 13, 2021, at 10:13, joseph turco  wrote:
> 
> Hello,
> 
> Im am looking at learning a programming language, and have been bouncing 
> around with scheme/racket/dyalog APL/squeak. upon investigation of scheme and 
> racket, i found that in regards to racket, there really isn't a "Beginners 
> book" that teaches the language. The only beginner book i could really see 
> being close to teaching the language is HtDP, but that doesn't technically 
> teach racket, but BSL. For scheme, im able to find beginner books, unless im 
> not looking deep enough. Maybe if you fine folk don't mind pointing me in the 
> right direction? Please excuse my ignorance.
> 
> -- Joseph T
> 
> 
> -- 
> 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/CADhp54SQ%3DhwO1V%3DshEzNOpkFhn3tPg2vextUrXAEcSMf0vsgpA%40mail.gmail.com.

-- 
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/9a732155-e6fb-43a3-ad7e-979269a0473d%40mtasv.net.


Re: [racket-users] Racket Slack archive [help wanted]

2021-06-08 Thread 'John Clements' via Racket Users
Hearing about this for the first time, seems like a fantastic idea.

10 seconds of experience:

1) It wasn’t immediately clear to me that the links were the names of channels. 
It seems painfully obvious to me now, but perhaps it’s worth starting all the 
names with hashes?

2) Clicking on the channel name “general” appears to melt down somehow, 
presumably because the page is really really really big. Is pagination near the 
top of most-desired-new-features?

Again, I think it’s great that you’re doing this!

John

> On Jun 8, 2021, at 08:16, D. Ben Knoble  wrote:
> 
> In case you missed it/aren't on Slack:
> 
> The latest version of the Slack archive is up-and-running at 
> https://benknoble.github.io/racket-slack-archive/ (extends through roughly 
> 2021-06-07).
> 
> The site is now built using a mix of 
> - Racket (data processing, mostly the json, hash, and unzip modules)
> - Jekyll/Ruby (site-generation; a plugin makes pages out of all the channel 
> directories, which are then rendered via a set of HTML templates)
> 
> I have some todos to make a nicer experience, and help is welcome. Also if 
> anyone wants to start working porting the Jekyll + Ruby stuff to Racket, feel 
> free.
> 
> -- 
> 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/a8efd2e6-ffb9-48d3-8b98-2d3da9551e70n%40googlegroups.com.

-- 
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/b25be9f7-e01d-4f9e-a1dc-5d1c6b94cfd0%40mtasv.net.


Re: [racket-users] student produces absolutely bonkers environment lookup code

2021-05-13 Thread 'John Clements' via Racket Users
Yep, I think that’s probably on the money. I guess this is really a classic 
example of the problem with writing code using internet search.

Many thanks!

> On May 7, 2021, at 4:38 PM, Ben Greenman  wrote:
> 
> On 5/7/21, Shu-Hung You  wrote:
>> Not that I have any idea of what's going on, but interestingly, Typed
>> Racket's second ->* example has (1)(3)(4). The use of list* may be
>> possible if one follows the type (List* String Natural x) in the
>> example.
>> 
>> https://docs.racket-lang.org/ts-reference/type-ref.html?#%28form._%28%28lib._typed-racket%2Fbase-env%2Fbase-types-extra..rkt%29._-~3e%2A%29%29
>> 
>> Shu-Hung
> 
> +1, that example in the docs looks _very_ similar to the student code
> 
> -- 
> 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/CAFUu9R4SJ7OisUeH5mFxGHpycrxhKYNFuSMLLgSzKCprt2aQWQ%40mail.gmail.com.

-- 
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/36e88c8e-d2eb-43b5-8a8d-4144487fe347%40mtasv.net.


Re: [racket-users] Is there a good Racket DSL alternative to Image Magick?

2021-05-11 Thread 'John Clements' via Racket Users
Racket has the ability to read a variety of different image files. I would go 
first to 2htdp/image’s “bitmap/file” to read images. “save-image” can write 
images (but only as png files). I believe there are also an array of 
lower-level image manipulation functions that are likely to have a less 
friendly interface :).

Apologies in advance for any misleading information I might be providing….

John

> On May 11, 2021, at 1:09 PM, Robert Haisfield  
> wrote:
> 
> Alternatively, does the normal images function for Racket work? When I was 
> looking through the documentation I saw a lot about creating shapes but not 
> about using image files.
> 
> On Tuesday, May 11, 2021 at 2:03:33 PM UTC-6 Robert Haisfield wrote:
> Hmm does the video language work for image files? If so, then I think it 
> might work.
> 
> On Tuesday, May 11, 2021 at 9:03:35 AM UTC-6 Sage Gerard wrote:
> I hope that has what Robert is looking for, but I don't recognize that 
> speech. In fact, I have a false memory, because I'm not finding the speech 
> I'm looking for on https://con.racket-lang.org/2018/#speakers
> 
> On 5/11/21 10:19 AM, Bruce O'Neel wrote:
>> This might be it.
>> 
>> (seventh RacketCon): Leif Andersen -- Movies as Programs: The Story of a 
>> Racket - YouTube
>> 
>> 
>> 
>> 
>> 
>> 11 May 2021 15:30 Sage Gerard  wrote:
>> I don't know of one off hand, but I believe RacketCon 2018 (?) included a 
>> presenter that showed a PostScript-like DSL for designers and artists.  If 
>> pict not cover your needs, maybe dig into the presentations?
>> 
>> Failing that, can you show what you'd hope the syntax would look like? That 
>> would probably help point you in the right direction,
>> 
>> On 5/11/21 9:26 AM, Robert Haisfield wrote:
>>> I have to do a bunch of .jpg and .png image resizings and was looking for a 
>>> programmatic way to do it. Is their a Racket DSL for this? --
>>> 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...@googlegroups.com.
>>> To view this discussion on the web visit 
>>> https://groups.google.com/d/msgid/racket-users/0d576c32-7d4d-4944-9cbc-c12f04406fccn%40googlegroups.com.
>> -- ~slg --
>> 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...@googlegroups.com.
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/racket-users/6e3aacdc-015b-2484-3bee-0c08e3fb612d%40sagegerard.com.
>> 
>> -- 
>> 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...@googlegroups.com.
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/racket-users/1620742795-01b81de5d6862fd390ec60605ee3bc9d%40pckswarms.ch.
> --
> ~slg
> 
> 
> -- 
> 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/b6a89a78-c92c-41c1-960a-49d64d8a5366n%40googlegroups.com.

-- 
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/404c8fad-befc-4b01-8728-48ce9b912117%40mtasv.net.


Re: [racket-users] Racket v8.1

2021-05-09 Thread 'John Clements' via Racket Users
Ah! My apologies. I’ve added your name to our “preferred names” file, and I 
hope not to make this mistake again.

Thank you!

John

> On May 8, 2021, at 13:38, Dexter Lagan  wrote:
> 
> Hello sir,
> 
>  Thank you ! My name is actually Dexter Santucci. Apologies for the 
> confusion. My email address isn't telling.
> 
> Cheers!
> 
> Dexter
> 
> On Wednesday, May 5, 2021 at 6:39:22 PM UTC+2 johnbclements wrote:
> -- 
> Racket version 8.1 is now available from 
> 
> https://racket-lang.org/ 
> 
> 
> - DrRacket tabs can be dragged, and have new close buttons. 
> 
> - Racket CS supports cross-compilation using `raco exe`. 
> 
> - Racket CS supports Android on 32-bit and 64-bit ARM processors. 
> 
> - The database library supports running queries in OS threads. 
> 
> - Check-Syntax arrows correctly identify the definition site of 
> identifiers with contracts. 
> 
> - Racket CS performance has improved for structure predicates and 
> accessors 
> 
> - Racket CS is faster at multiplying extremely large numbers and 
> dividing large integers. 
> 
> - Racket CS allows callbacks to raise exceptions if they are annotated 
> with `#:callback-exns?`. 
> 
> - New ephemeron hash tables simplify the implementation of tables where 
> keys can refer to values. 
> 
> - Typed Racket supports for/foldr. 
> 
> - The stepper works for #lang htdp/*sl. 
> 
> - Struct signatures work for the ASL teaching language. 
> 
> The following people contributed to this release: 
> 
> Alex Harsányi, Alex Knauth, Alexander Shopov, Alexis King, Andrew 
> Mauer-Oats, Anish Athalye, Ben Greenman, Bert De Ketelaere, Bob Burger, 
> Bogdan Popa, Brian Adkins, Cameron Moy, David Van Horn, Dexter Lagan, 
> Dominik Pantůček, Fred Fu, Greg Hendershott, Gustavo Massaccesi, Hazel 
> Levine, Ismael Luceno, Jack Firth, Jarhmander, John Clements, Jörgen 
> Brandt, Laurent Orseau, Lazerbeak12345, Matthew Flatt, Matthias 
> Felleisen, Micah Cantor, Mike Sperber, Noah Ma, Patrick McCarty, Paulo 
> Matos, Pavel Panchekha, Philip McGrath, Philippe Meunier, R. Kent 
> Dybvig, Robby Findler, Ryan Culpepper, Ryan Kramer, Sam Tobin-Hochstadt, 
> Sergiu Ivanov, Shu-Hung You, Sorawee Porncharoenwase, Stephen De 
> Gabrielle, William J. Bowman, bmitc, xxyzz, yjqww6, and ymdarake 
> 
> Feedback Welcome 
> -- 
> 
> 
> -- 
> 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/e8e8ecff-79ad-4c33-ab37-6d98ca18baa7n%40googlegroups.com.

-- 
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/3aa00891-bcde-4cbd-879f-1da1781210e1%40mtasv.net.


[racket-users] student produces absolutely bonkers environment lookup code

2021-05-07 Thread 'John Clements' via Racket Users
Background: I teach a PL course, using Shriram’s PLAI. Many of the assignments 
require students to maintain an environment mapping symbols to values. Shriram 
illustrates a nice easy way to do this, as a list of two-element structures. 
You can also use an immutable hash. Fine. So I’m grading a student submission, 
and I come across this:

(: extend-environment* (-> Environment (Listof (List Symbol Value)) 
Environment))
(define (extend-environment* env kv)
  (let loop ([kv : (Listof (List Symbol Value)) kv]
 [env env])
(cond
  [(empty? kv) env]
  [else
   (let* ([kv-pair (first kv)]
  [new-env (KVEnvironment (first kv-pair) (second kv-pair) env)])
 (loop (rest kv) new-env))])))


;; Returns a new environment with old-env as parent
(: extend-environment (->* (Environment Symbol Value) #:rest-star (Symbol 
Value) Environment))
(define (extend-environment env key value . kv)
  (define kv* : (Listof (List Symbol Value))
(let loop : (Listof (List Symbol Value))
  ([kv : (Rec x (U Null (List* Symbol Value x))) (list* key value kv)])
  (if (empty? kv)
  '()
  (let* ([take-two (list (first kv) (second kv))]
 [drop-two (rest (rest kv))])
(list* take-two (loop drop-two))
  (extend-environment* env kv*))

This solution uses

1) a named let,
2) the list* function,
3) a ->* type with a #:rest-star argument, and
4) A custom rec type for alternating symbols and values.

To cap it all off, the student DOESN’T EVEN USE the extra hardware. This is the 
only use of extend-environment in the code:

(extend-environment e name arg)

So, uh, any idea where this code came from? 

:)

John 

-- 
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/ee31119c-aab4-48e4-94dd-39272dd34724%40mtasv.net.


Re: [racket-users] Tell require where to find C libraries ?

2021-05-06 Thread 'John Clements' via Racket Users
It looks to me like you probably need to edit your “config.rktd” file:

https://docs.racket-lang.org/raco/config-file.html?q=config.rktd#%28idx._%28gentag._67._%28lib._scribblings%2Fraco%2Fraco..scrbl%29%29%29

On my machine (macOS using macports), for instance I have do do this for every 
new installation of drracket:

- edit /config.rktd to contain
  (lib-search-dirs . (#f "/opt/local/lib”))

Let me know if I misunderstood your situation!

John Clements


> On May 6, 2021, at 3:54 AM, krs...@gmail.com  wrote:
> 
> 
> Hi!,
> 
> I am doing: (require taglib) and I get:
> > (require taglib)
> ; ffi-lib: could not load foreign library
> ;   path: libtag_c.so.0
> ;   system error: File not found
> ; [,bt for context]
> 
> I am on OpenBSD and that file is at:
> /usr/local/lib/libtag_c.so.3.0
> 
> How can I change my search path for C libs to be /usr/local ?
> 
> -- 
> 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/b8425f0a-6d45-4954-9e32-df51aa5151cbn%40googlegroups.com.

-- 
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/6c7c1827-2beb-4e05-a0f6-f26740a24544%40mtasv.net.


[racket-users] Racket v8.1

2021-05-05 Thread 'John Clements' via Racket Users
--
Racket version 8.1 is now available from

https://racket-lang.org/


- DrRacket tabs can be dragged, and have new close buttons.

- Racket CS supports cross-compilation using `raco exe`.

- Racket CS supports Android on 32-bit and 64-bit ARM processors.

- The database library supports running queries in OS threads.

- Check-Syntax arrows correctly identify the definition site of
  identifiers with contracts.

- Racket CS performance has improved for structure predicates and
  accessors

- Racket CS is faster at multiplying extremely large numbers and
  dividing large integers.

- Racket CS allows callbacks to raise exceptions if they are annotated
  with `#:callback-exns?`.

- New ephemeron hash tables simplify the implementation of tables where
  keys can refer to values.

- Typed Racket supports for/foldr.

- The stepper works for #lang htdp/*sl.

- Struct signatures work for the ASL teaching language.

The following people contributed to this release:

Alex Harsányi, Alex Knauth, Alexander Shopov, Alexis King, Andrew
Mauer-Oats, Anish Athalye, Ben Greenman, Bert De Ketelaere, Bob Burger,
Bogdan Popa, Brian Adkins, Cameron Moy, David Van Horn, Dexter Lagan,
Dominik Pantůček, Fred Fu, Greg Hendershott, Gustavo Massaccesi, Hazel
Levine, Ismael Luceno, Jack Firth, Jarhmander, John Clements, Jörgen
Brandt, Laurent Orseau, Lazerbeak12345, Matthew Flatt, Matthias
Felleisen, Micah Cantor, Mike Sperber, Noah Ma, Patrick McCarty, Paulo
Matos, Pavel Panchekha, Philip McGrath, Philippe Meunier, R. Kent
Dybvig, Robby Findler, Ryan Culpepper, Ryan Kramer, Sam Tobin-Hochstadt,
Sergiu Ivanov, Shu-Hung You, Sorawee Porncharoenwase, Stephen De
Gabrielle, William J. Bowman, bmitc, xxyzz, yjqww6, and ymdarake

Feedback Welcome
--

-- 
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/9660bf5e-49ee-4b71-8407-4e1fcde01b36%40mtasv.net.


[racket-users] Having trouble with HtDP design recipe at exercise 213

2021-05-05 Thread 'Because Of' via Racket Users
Greetings,

I'm working through HtDP alone and am currently stuck.  All the relevant code 
can be found here: 
https://gist.github.com/simalaia/d5b50e9a0bd36b89128aecb43de71cf8

As suggested in the book I start with  (insert-everywhere/in-all-words)  and 
design a new function with signature  1String Word -> List-of-Words  and the 
purpose statement "insert 1String into every position of Word", I get stuck 
here.

I used the table method to try and work out what the next function I need to 
design is, however everything I try results in me coming up with needing 
exactly the function that I started with, along with the problem that I started 
with.

Every attempt at directly solving it (but see below on how this 'solving' is 
being done) without an auxiliary function results in some tests failing.  For 
example  (f "x" (list "a")) -> (("x" "a") ("a" "x"))  but this fails when given 
length zero or two words.  I have not managed any improvements on this.

There seems to be a fairly obvious solution along the lines of  (map append 
(prefixes w) (map (λ (x) (cons s x)) (suffixes w)))  however that seems to 
require the simultaneous processing chapter and is based more on intuition than 
design.  I am, either way, not asking as to the solution for this problem.

What I can't work out is where my understanding of the design recipe is 
failing?  The implementation I have so far is based on my extrapolation from 
the list-of-lists recipe to how trees would likely be processed and based on a 
pure intuitive guess rather than systematic application of the recipe.  The 
table method also doesn't seem to be producing any results that I understand.  
Nor are the tests helping...

Hence, could someone assist with debugging my understanding of the recipe?

Regards.

-- 
Sent with https://mailfence.com
Secure and private email

-- 
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/1801521434.203448.1620219317116%40ichabod.co-bxl.


Re: [racket-users] limitation of TR contract translation?

2021-04-30 Thread 'John Clements' via Racket Users
Okay, submitted as bug. Many thanks to Matthias for reducing the example.

John

> On Apr 30, 2021, at 4:12 AM, Sam Tobin-Hochstadt  wrote:
> 
> This is a bug. It's not the the contract is unsatisfiable, it's that it's too 
> satisfiable. The contract system could probably make this work, but Typed 
> Racket should probably avoid this situation. 
> 
> Sam
> 
> On Fri, Apr 30, 2021, 2:07 AM 'John Clements' via Racket Users 
>  wrote:
> It seems that the conversion of TR types to contracts can result in contracts 
> like (or/c (cons/c any/c any/c) (cons/c any/c any/c)) that apparently cause 
> errors when run. 
> 
> I’m too tired to do a good job of providing a full example… no, actually, 
> it’s pretty easy. Run this program:
> 
> #lang racket
> 
> 
> (module foo typed/racket
> 
>   (provide val->autorun-table)
> 
>   (define-type Autorun-Result
> (U (Pair 'success Any)
>(Pair 'fail Any)))
> 
>   (define-type Autorun-Entry
> (List String Autorun-Result))
>   (define-predicate autorun-entry? Autorun-Entry)
> 
>   (define-type Autorun-Table (Listof Autorun-Entry))
>   (define-predicate autorun-table? Autorun-Table)
> 
>   (define (val->autorun-table [val : Any])
> : (U False Autorun-Table)
> (cond
>   [(list? val)
>(define first-bad (findf (compose not autorun-entry?) val))
>(when first-bad
>  (fprintf (current-error-port)
>   "not an expected autorun entry:\n~e\n"
>   first-bad))
>(cast val Autorun-Table)]
>   [else
>(error 'maybe-fetch-autorun-results
>   "result of read wasn't a list. moreinfo.")])))
> 
> (require 'foo)
> 
> (val->autorun-table '(("1234" (fail (zz 1234) (d 9)
> 
> 
> … see this error:
> 
> val->autorun-table: broke its own contract
>   two of the clauses in the or/c might both match: (cons/c any/c Any) and 
> (cons/c any/c Any)
>   produced: '(fail (zz 1234) (d 9))
>   in: the 2nd element of
>   an element of
>   a part of the or/c of
>   the range of
>   (->
>any/c
>(or/c
> #f
> (listof
>  (list/c
>   any/c
>   (or/c
>(cons/c any/c Any)
>(cons/c any/c Any))
>   contract from: (anonymous-module foo)
>   blaming: (anonymous-module foo)
>(assuming the contract is correct)
>   at: 38-unsaved-editor:20.11
> 
> 
> Basically, it looks like the type is getting simplified a bit as it’s being 
> translated into a contract, and unfortunately, the resulting contract is 
> unsatisfiable?
> 
> Is this a bug, or a known limitation?
> 
> John
> 
> 
> -- 
> 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/295471a4-99d9-4bbe-8e7b-351c1bb75e96%40mtasv.net.

-- 
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/090e59fd-3e81-4ab9-9eea-85d643d095ab%40mtasv.net.


[racket-users] limitation of TR contract translation?

2021-04-30 Thread 'John Clements' via Racket Users
It seems that the conversion of TR types to contracts can result in contracts 
like (or/c (cons/c any/c any/c) (cons/c any/c any/c)) that apparently cause 
errors when run. 

I’m too tired to do a good job of providing a full example… no, actually, it’s 
pretty easy. Run this program:

#lang racket


(module foo typed/racket

  (provide val->autorun-table)
  
  (define-type Autorun-Result
(U (Pair 'success Any)
   (Pair 'fail Any)))

  (define-type Autorun-Entry
(List String Autorun-Result))
  (define-predicate autorun-entry? Autorun-Entry)

  (define-type Autorun-Table (Listof Autorun-Entry))
  (define-predicate autorun-table? Autorun-Table)

  (define (val->autorun-table [val : Any])
: (U False Autorun-Table)
(cond
  [(list? val)
   (define first-bad (findf (compose not autorun-entry?) val))
   (when first-bad
 (fprintf (current-error-port)
  "not an expected autorun entry:\n~e\n"
  first-bad))
   (cast val Autorun-Table)]
  [else
   (error 'maybe-fetch-autorun-results
  "result of read wasn't a list. moreinfo.")])))

(require 'foo)

(val->autorun-table '(("1234" (fail (zz 1234) (d 9)


… see this error:

val->autorun-table: broke its own contract
  two of the clauses in the or/c might both match: (cons/c any/c Any) and 
(cons/c any/c Any)
  produced: '(fail (zz 1234) (d 9))
  in: the 2nd element of
  an element of
  a part of the or/c of
  the range of
  (->
   any/c
   (or/c
#f
(listof
 (list/c
  any/c
  (or/c
   (cons/c any/c Any)
   (cons/c any/c Any))
  contract from: (anonymous-module foo)
  blaming: (anonymous-module foo)
   (assuming the contract is correct)
  at: 38-unsaved-editor:20.11


Basically, it looks like the type is getting simplified a bit as it’s being 
translated into a contract, and unfortunately, the resulting contract is 
unsatisfiable?

Is this a bug, or a known limitation?

John


-- 
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/295471a4-99d9-4bbe-8e7b-351c1bb75e96%40mtasv.net.


Re: [racket-users] Add Link to the racket Discord to the racket website?

2021-04-22 Thread 'John Clements' via Racket Users
This is the second time I’ve heard of matrix.org this week. Time to check it 
out.

John

> On Apr 20, 2021, at 1:45 AM, Yury Bulka  
> wrote:
> 
> Just my 5 cents...
> 
> Recently I had to register on a discord "server" to ask a question
> within another community - and the experience was of a high barrier of
> entry. I needed to provide my age, confirm my email, then (that might be
> an issue of that particular "server" - I'm not sure) I was forced to
> wait 5 minutes before I could interact. Also I notice now that discord
> sends me email notifications that contain third-party tracking.
> 
> Another walled garden trying to make me an addict of their service.
> 
> The only thing I want to do now is delete any of my presence on discord.
> 
> The IRC + Matrix combination is much more open and inclusive I think.
> 
> And there is a question of transparency of governance and moderation of
> course.
> 
> --
> Yury Bulka
> https://mamot.fr/@setthemfree
> #NotOnFacebook
> 
> 
> 
> Adam Golding  writes:
> 
>> I'm not so sure now: https://groups.google.com/g/racket-users/c/SkJAKkQhlgw
>> 
>> 
>> On Mon, 19 Apr 2021 at 03:39, Adam Golding  wrote:
>> 
>>> seconded
>>> 
>>> On Sun, 18 Apr 2021 at 14:56, schle...@gmail.com 
>>> wrote:
>>> 
>>>> 
>>>> The racket discord is managed quite well, I think it should be added to
>>>> the racket website so that newcomers can find it easier, just a thought.
>>>> 
>>>> Maybe below the link to slack?
>>>> 
>>>> --
>>>> 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/a8e865db-f585-477d-b397-fceaa7cb3131n%40googlegroups.com
>>>> <https://groups.google.com/d/msgid/racket-users/a8e865db-f585-477d-b397-fceaa7cb3131n%40googlegroups.com?utm_medium=email_source=footer>
>>>> .
>>>> 
>>> 
> 
> -- 
> 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/87pmyp1gzf.fsf%40privacyrequired.com.

-- 
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/21c234c5-fd5b-4717-a9c0-40f2bd6df9c4%40mtasv.net.


[racket-users] Re: Understanding recursion in the function normalize-definition form the racket sources

2021-04-20 Thread 'Wayne Harris' via Racket Users
On Sat, 17 Apr 2021 05:02:00 -0700 (PDT)
Dan Synek  wrote:

> I am trying to implement a variation of define. In order to do that I am 
> trying to understand the source of the define macro in racket.
>  It calls a function normalize-definition which looks like this:
>   (define-values (normalize-definition)
> (case-lambda 
>  [(stx lambda-stx check-context? allow-key+opt?)
>   (let-values ([(id mk-rhs body)
> (normalize-definition/mk-rhs stx lambda-stx 
> check-context? allow-key+opt? #t)])
> (values id (mk-rhs body)))]
>  [(stx lambda-stx check-context?) (normalize-definition stx lambda-stx 
> check-context? #f)]
>  [(stx lambda-stx) (normalize-definition stx lambda-stx #t #f)])))
> 
> In the two last cases of the case-lambda there is a call to 
> normalize-definition. It is not a recursive call, since define-values 
> cannot be used recursively. I cannot find any other normalize-definition in 
> the modules required by the norm-define module.
>  If I try to enter a copy of the definition (renamed to 
> normalize-definition1) I get (as expected) that normalize-definition1 is 
> undefined.
> What is going on?

Beginner here.  I don't see the problem you seem to be referring to
here.  In this example below, I recursively define arglen using
define-values.  

#lang racket/base

(define-values (arglen)
  (case-lambda
[() 'no-list]
[(ls) (if (null? ls)
  0
  (+ 1 (arglen (cdr ls]))

case-lambda-recursion.rkt> (arglen)
'no-list
case-lambda-recursion.rkt> (arglen (list))
0
case-lambda-recursion.rkt> (arglen (list 1))
1
case-lambda-recursion.rkt> (arglen (list 1 1))
2
case-lambda-recursion.rkt> (arglen (list 1 1 1))
3
case-lambda-recursion.rkt> 


-- 
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/20210417093414.7527%40protonmail.com.


Re: [racket-users] Understanding recursion in the function normalize-definition form the racket sources

2021-04-17 Thread 'John Clements' via Racket Users
I’m confused by your assertion that define-values can’t be used recursively. 
Here’s a program that does this:

#lang racket

(define-values (fact)
  (λ (x) (if (= x 0) 1 (* x (fact (sub1 x))

(fact 14)

Am I misunderstanding your message?

John Clements

> On Apr 17, 2021, at 05:02, Dan Synek  wrote:
> 
> I am trying to implement a variation of define. In order to do that I am 
> trying to understand the source of the define macro in racket.
>  It calls a function normalize-definition which looks like this:
>   (define-values (normalize-definition)
> (case-lambda 
>  [(stx lambda-stx check-context? allow-key+opt?)
>   (let-values ([(id mk-rhs body)
> (normalize-definition/mk-rhs stx lambda-stx 
> check-context? allow-key+opt? #t)])
> (values id (mk-rhs body)))]
>  [(stx lambda-stx check-context?) (normalize-definition stx lambda-stx 
> check-context? #f)]
>  [(stx lambda-stx) (normalize-definition stx lambda-stx #t #f)])))
> 
> In the two last cases of the case-lambda there is a call to 
> normalize-definition. It is not a recursive call, since define-values cannot 
> be used recursively. I cannot find any other normalize-definition in the 
> modules required by the norm-define module.
>  If I try to enter a copy of the definition (renamed to 
> normalize-definition1) I get (as expected) that normalize-definition1 is 
> undefined.
> What is going on?
> 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.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/racket-users/ce5ce36e-03ee-44b1-a5ae-4f5a6e7b9d1en%40googlegroups.com.

-- 
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/3e1d308f-ab29-47e5-b42e-fdff07739645%40mtasv.net.


Re: [racket-users] Questions about multiple Racket installations...

2021-04-14 Thread 'William J. Bowman' via Racket Users
I use this: https://github.com/takikawa/racket-dev-goodies

When I need to switch, I just change PLTHOME to the right directory.

--
William J. Bowman

On Wed, Apr 14, 2021 at 11:06:15AM -0700, Don Green wrote:
>  I have several versions of Racket installed. 
> Is there a way to switch between using one version and another? Example: 
> use Racket 8
> then switch back to using Racket 7.
> 
> If there is no point in going back to a previous version, is there merit in 
> removing older versions.
> Thanks.  Don.
> 
> -- 
> 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/fcf25a75-cfe3-4ece-a65b-df55592845ean%40googlegroups.com.

-- 
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/YHdnLNIuNC24DLNM%40williamjbowman.com.


Re: [racket-users] Is this a good uninstall then install Racket plan...

2021-04-13 Thread 'John Clements' via Racket Users
What if he has directories that aren’t part of an installed package? That was 
my concern, and why I suggested manually deleting compiled subdirs.

John

> On Apr 13, 2021, at 18:58, Philip McGrath  wrote:
> 
> On Tue, Apr 13, 2021 at 8:21 PM 'John Clements' via Racket Users 
>  wrote:
> It sounds to me like the solution might be much much simpler than 
> re-installing an earlier version of racket. Here’s what I recommend.
> 
> 1) Delete all of the “compiled” subdirectories in your development path.
> 2) run “raco setup”.
> 
> I think you should be able to automate finding and updating the "compiled" 
> subdirectories by running:
> 
> raco setup --clean && raco setup
>  
> -Philip
> 
> -- 
> 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/01000178ce19df5f-46515da8-c86d-4a02-ad84-615dc7c8bc7d-00%40email.amazonses.com.

-- 
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/a2b3fb74-a80c-42fd-ab2f-1c7bd577a983%40mtasv.net.


Re: [racket-users] Is this a good uninstall then install Racket plan...

2021-04-13 Thread 'John Clements' via Racket Users
Thanks for clarifying!

It sounds to me like the solution might be much much simpler than re-installing 
an earlier version of racket. Here’s what I recommend.

1) Delete all of the “compiled” subdirectories in your development path.
2) run “raco setup”.

It seems likely to me that this will solve the problem you’re seeing, and is 
very unlikely to break anything that’s not currently broken.

There are other more complicated or refined versions of this, but at the end of 
the day, this error is probably solved by just moving the offending file out of 
the way.

John


> On Apr 13, 2021, at 5:16 PM, Don Green  wrote:
> 
> I have several versions of racket installed on Ubuntu linux at default linux 
> locations.
> I think I should uninstall them all.
> Then after downloading a PPA from the racket web site
> install the version I want to a single directory. (I would be downloading 
> version: 7.8)
> Does this sound like a plan sound okay?
> 
> I gather from the comments I have received from John Clements, that he 
> suspects I am having some sort of problem that is motivating the desire to 
> return to an earlier version
> of Racket. 
> 
> I believe the problem is where I have placed my racket code files.
> I've been putting off moving them and would like to continue putting off 
> moving them.
> 
> I inadvertently upgraded to Racket v8.0 a couple of days ago. 
> 
> Welcome to Racket v8.0 [cs].
> > (current-library-collection-paths)
> '(#
>   #
>   #)
> 
> My code files all begin here: /home/don/.plt-scheme/4.2.1/collects/...
> 
> Racket error message when I run:
> $ my-prog
> read-compiled-linklet: version mismatch  expected: "8.0"  found: "7.8"  in: 
> /home/don/.plt-scheme/4.2.1/collects/DG/all/a/b/fn/filename-from-path-and-filename/compiled/filename-from-path-and-filename_ss.zo
> 
> So, since my compiled file was compiled under Racket version 7.8, there is a 
> mismatch since the Racket now installed is Racket v. 8.0.  Thus the reason 
> I'd like to return to running Racket v. 7.8.
> Thanks for your advice.
> Don
> 
> 
> 
> 
> -- 
> 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/134d170b-500d-4959-b842-6d4713329ffdn%40googlegroups.com.

-- 
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/16be474f-ca60-480f-af73-6b6c5e9a4cc9%40mtasv.net.


Re: [racket-users] inadvertently upgraded Racket version. Would like to make an older installed version current.

2021-04-13 Thread 'John Clements' via Racket Users
Did you install racket using a package manager, perhaps from the racket PPA? 
(I’m guessing the answer is yes, since this seems like the most likely 
situation to have caused an unintentional upgrade.)

If so, I think you should generally get the right behavior from using that same 
package manager to reinstall the earlier version, and “pin” it using whatever 
mechanism your package manager provides.

If you have code that’s not a part of a package installed by raco pkg (or 
installed with the —link option), I can imagine needing to recompile some 
sources using raco setup.

I suppose I should first have asked this question: what’s your reason for 
installing the earlier version? I ask because if the issue is CS/BC, you should 
be aware that there is a BC version of 8.0 available.

Finally, let me apologize in advance if anything I’m telling you is partly or 
completely mistaken!

John

> On Apr 13, 2021, at 12:55 PM, infodeveloperdon  
> wrote:
> 
> Hi, I'm using linux Ubuntu.
> Don
> 
> On Tuesday, April 13, 2021 at 1:02:33 PM UTC-6 johnbclements wrote:
> raco pkg remove is definitely not what you want. 
> 
> In general, I know there are languages (ocaml, haskell, rust) that put their 
> package managers “outside” of the currently installed version, so it might 
> make sense that a package manager command could be used to change to an 
> earlier version of the language.  
> 
> In Racket, by contrast, the package manager is part of the installation, on 
> the “inside”. 
> 
> However, you can certainly have multiple versions of Racket installed at the 
> same time. 
> 
> The details of which one is “active”, and what that word even means, is 
> highly dependent on what operating system you’re using. 
> 
> What operating system are you using? 
> 
> John Clements 
> 
> > On Apr 13, 2021, at 11:29, infodeveloperdon  wrote: 
> > 
> > I inadvertently upgraded Racket version. Would like to make an older 
> > installed version current. 
> > So now when I start DrRacket v8 is current. 
> > Is there a command that makes a specified version current? 
> > Does 
> > raco pkg remove  
> > effectively make the previous version current? 
> > Thanks. Don. 
> > 
> > -- 
> > 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...@googlegroups.com. 
> > To view this discussion on the web visit 
> > https://groups.google.com/d/msgid/racket-users/a7577cff-a448-4e44-91b0-6d9d9e4557c5n%40googlegroups.com.
> >  
> 
> 
> -- 
> 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/729e46a6-9c39-4d56-b1d4-2d6a11e5d25en%40googlegroups.com.

-- 
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/bf17a551-cd79-4b2b-940a-a8189825a8ac%40mtasv.net.


Re: [racket-users] "You do not have permission to respond to author in this group."

2021-04-13 Thread 'John Clements' via Racket Users
Hmm… that’s a new one to me. It sounds like there’s a setting that can be 
toggled, I’m not quite sure what the ramifications of toggling that setting 
would be.

John

> On Apr 13, 2021, at 1:05 PM, Don Green  wrote:
> 
> "You do not have permission to respond to author in this group."
> upon clicking button [Respond To Author]
> in Google Groups/ Racket
> Is there a setting I can change or is just the way this group is configured 
> for all?
> Thanks
> Don
> 
> 
> -- 
> 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/bcee693a-fbac-4716-8d59-512f3fc889b2n%40googlegroups.com.

-- 
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/99eea91e-ea0e-4119-954c-2fcceb161161%40mtasv.net.


Re: [racket-users] inadvertently upgraded Racket version. Would like to make an older installed version current.

2021-04-13 Thread 'John Clements' via Racket Users
raco pkg remove is definitely not what you want.

In general, I know there are languages (ocaml, haskell, rust) that put their 
package managers “outside” of the currently installed version, so it might make 
sense that a package manager command could be used to change to an earlier 
version of the language. 

In Racket, by contrast, the package manager is part of the installation, on the 
“inside”.

However, you can certainly have multiple versions of Racket installed at the 
same time.

The details of which one is “active”, and what that word even means, is highly 
dependent on what operating system you’re using. 

What operating system are you using?

John Clements

> On Apr 13, 2021, at 11:29, infodeveloperdon  
> wrote:
> 
> I inadvertently upgraded Racket version. Would like to make an older 
> installed version current.
> So now when I start DrRacket v8 is current.
> Is there a command that makes a specified version current?
> Does 
> raco pkg remove 
> effectively make the previous version current?
> Thanks. Don.
> 
> -- 
> 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/a7577cff-a448-4e44-91b0-6d9d9e4557c5n%40googlegroups.com.

-- 
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/29ed9c53-483b-414c-8a56-3dd9e0c449ec%40mtasv.net.


Re: [racket-users] Werid contract violation blame erros

2021-04-09 Thread epi via Racket Users
Thank you, Robby,

This clarifies it a little bit. So far I've avoided reading about the racket 
module system in details, but I think now is as good time as ever.
April 7, 2021 10:40 PM, "Robby Findler" mailto:ro...@cs.northwestern.edu?to=%22Robby%20Findler%22%20)>
 wrote:
The short answer: you probably should use (provide (contract-out)) instead 
of define/contract.

The slightly longer answer: when you write a contract, you are not just 
describing what the legal inputs and outputs are, you are also establishing a 
*boundary* between two regions of code. In the case of define/contract, you are 
establishing a boundary between the function (here: f) and the module that it 
contains (here the file "a.rkt"). In the case of (provide (contract-out ...)) 
the boundary is between a.rkt and b.rkt.

The slightly uncomfortable answer: it is my (not completely solid yet) opinion 
that the boundary that is drawn for define/contract is perhaps not the right / 
best one. In a theoretical/mathematical sense it is a completely fine and 
completely defensible one. But it trips people up sometimes. (There are 
examples others have posted in the past that are perhaps even stranger than 
yours but boil down to the same specific design choice for define/contract.)

Robby
On Wed, Apr 7, 2021 at 2:10 PM epi via Racket Users 
mailto:racket-users@googlegroups.com)> wrote: 
Hello Racket users,

I am trying to understand a contract violation message that I am getting.
Here is the file a.rkt:

#lang racket
(provide f)
(define/contract (f a)
(-> boolean? any/c)
'())

and this is b.rkt:

#lang racket
(require "a.rkt")
(f 3)
I would expect that the caller is blamed for the contract violation, but the 
error message that I get is as follows:
f: contract violation
expected: boolean?
given: 3
in: the 1st argument of
(-> boolean? any/c)
contract from: (function f)
blaming: /home/epi/snippets/a.rkt
(assuming the contract is correct)
at: /home/epi/snippets/a.rkt:3.18
context...:
/usr/share/racket/collects/racket/contract/private/blame.rkt:347:0: 
raise-blame-error
/usr/share/racket/collects/racket/contract/private/arrow-higher-order.rkt:379:33
body of "/home/dan/snippets/blameme.rkt"

So, I am a bit surprised that the error message blames the file a.rkt.
What am I missing here?

--
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 
(mailto:racket-users%2bunsubscr...@googlegroups.com).
To view this discussion on the web visit 
https://groups.google.com/d/msgid/racket-users/149cfc632cd666ff1a92177dce90296b%40disroot.org
 
(https://groups.google.com/d/msgid/racket-users/149cfc632cd666ff1a92177dce90296b%40disroot.org).

-- 
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/78a0d4875c1fa7ac222a938c3f061588%40disroot.org.


[racket-users] Werid contract violation blame erros

2021-04-07 Thread epi via Racket Users
Hello Racket users,

I am trying to understand a contract violation message that I am getting.
Here is the file a.rkt:

#lang racket
(provide f)
(define/contract (f a)
  (-> boolean? any/c)
  '())

and this is b.rkt:

#lang racket
(require "a.rkt")
(f 3)


I would expect that the caller is blamed for the contract violation, but the 
error message that I get is as follows:


f: contract violation
  expected: boolean?
  given: 3
  in: the 1st argument of
  (-> boolean? any/c)
  contract from: (function f)
  blaming: /home/epi/snippets/a.rkt
   (assuming the contract is correct)
  at: /home/epi/snippets/a.rkt:3.18
  context...:
   /usr/share/racket/collects/racket/contract/private/blame.rkt:347:0: 
raise-blame-error
   
/usr/share/racket/collects/racket/contract/private/arrow-higher-order.rkt:379:33
   body of "/home/dan/snippets/blameme.rkt"

So, I am a bit surprised that the error message blames the file a.rkt.
What am I missing here?

-- 
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/149cfc632cd666ff1a92177dce90296b%40disroot.org.


Re: [racket-users] Is there a widget like QSplitter in Qt in our GUI library?

2021-03-31 Thread 'Killian Zhuo (KDr2)' via Racket Users
Thank you Laurent, that's exactly what I want!

 Greetings.

Killian Zhuo (KDr2, https://kdr2.com)

 

On Wednesday, March 31, 2021, 05:05:39 PM GMT+8, Laurent 
 wrote:  
 
 You probably want panel:vertical-dragable% [1] and panel:horizontal-dragable%. 
See a usage example here: 
https://gist.github.com/Metaxal/946aa17033c10e76c48a74127ae0b11b
[1] 
https://docs.racket-lang.org/framework/Panel.html?q=panel%3Avertical-dragable#%28def._%28%28lib._framework%2Fmain..rkt%29._panel~3avertical-dragable~25%29%29


On Wed, Mar 31, 2021 at 9:08 AM 'Killian Zhuo (KDr2)' via Racket Users 
 wrote:

I want to split a pane into two columns and make the columns resizable by 
dragging their joint border, in Qt, there's an established widget called 
QSplitter for this purpose. Is there one in Racket's GUI library? or how to 
implement it in the easiest way?
Thanks.
Greetings.

Killian Zhuo (KDr2, https://kdr2.com)



-- 
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/1465030713.1289147.1617178095348%40mail.yahoo.com.



-- 
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/CABNTSaFnzCuaYXmAYQez%2BoMvXr34KQZsaP58kDBXLEmv5qLrRQ%40mail.gmail.com.
  

-- 
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/571494630.1360477.1617203926593%40mail.yahoo.com.


[racket-users] Is there a widget like QSplitter in Qt in our GUI library?

2021-03-31 Thread 'Killian Zhuo (KDr2)' via Racket Users
I want to split a pane into two columns and make the columns resizable by 
dragging their joint border, in Qt, there's an established widget called 
QSplitter for this purpose. Is there one in Racket's GUI library? or how to 
implement it in the easiest way?
Thanks.
Greetings.

Killian Zhuo (KDr2, https://kdr2.com)

-- 
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/1465030713.1289147.1617178095348%40mail.yahoo.com.


[racket-users] Re: Racket on Corporate Desktop Windows

2021-03-30 Thread 'Wayne Harris' via Racket Users
"Bruce O'Neel" 
writes:

[...]

> But no GUI of course.
>   
> Well I had been building on MacOS for years following the instructions
> to build a Minimal Racket and then run
>   
> raco pkg install -i main-distribution
>   
> and it finally clicked that the instructions were almost identical for
> Windows.
>   
> raco pkg update --auto racket-lib raco pkg install -i
> main-distribution
>   
> just like the instructions said.  In my mind I thought "I don't have a
> build toolchain on Windows, so that won't work."  And I was wrong.  It
> works just fine on my locked down desktop and now I have a GUI Dr
> Racket as well.

Cool!  Thanks for sharing!

-- 
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/86h7kw7b91.fsf%40protonmail.com.


[racket-users] Re: [ANNOUNCE] Xiden is now in beta

2021-03-20 Thread 'Joel Dueck' via Racket Users
Racket’s existing package system doesn’t pose any felt problems for me, but 
I still find this project very interesting. 

On some future day when Xiden is out of beta, what are authors of “normal” 
Racket packages doing to make their packages available to Xiden users? For 
example, are we zipping, hashing and signing every “release” and uploading 
it somewhere (our own web server or a 3rd party catalog)? Or is the typical 
Xiden user manually creating their own catalogs and packages from others’ 
code after a thorough vetting? (Maybe if I were more familiar with Guix I 
would already know the answer to this)

On Friday, March 19, 2021 at 3:56:18 PM UTC-5 Sage Gerard wrote:

> Hi folks,
>
> About a year, 1384 commits, 489 tests, ~10k LOC, and 2" on my waistline 
> later, Xiden is in beta. An update is pending on the default catalog.
>
> https://github.com/zyrolasting/xiden
>
> Xiden is a dependency manager I wrote to support use cases that I could 
> not get working with `raco pkg`.
>
> Dependency management is hard, so Xiden was something I originally didn't 
> want to make. However, it ended up becoming one of my most aspirational 
> projects, and I'm proud of how it ended up. If you could take the time to 
> read a longer email, I'd like to share a bit about how it might be helpful 
> to you.
>
> ***
> Like Guix, Xiden supports deterministic and atomic installations. Unlike 
> Guix, Xiden is cross-platform.
>
> The Racket programs I write no longer have to assume that code comes in 
> collections (outside of the built-in ones).
>
> You can force dependencies of different versions to resolve to the same 
> data to avoid issues with non-eq? bindings [multiver].
>
> Dependencies are accessed by symbolic links with names defined by the 
> dependent. So if two packages are called "uri", you can still install them 
> both under names that are meaningful to you. Dependencies are fulfilled the 
> same way, regardless if the dependent is a human or more software.
>
> Explicit, affirmative consent is fundamental to Xiden's workings. The 
> default configuration is zero-trust (a.k.a. "Deny All"). Trust in 
> cryptographic hash functions and public keys (or any bytes lacking either) 
> *must* be declared to authenticate bytes from *any* source (even hard 
> coded!). Not doing so will cause Xiden to reject data, but print an error 
> that helpfully instructs you how to consent to the scenario. For those 
> wanting convenience, there are "blanket" configuration options to consent 
> to every instance of those scenarios. This makes Xiden a way to educate 
> users on the exact shape and nature of the risks they accept with something 
> from the Internet. In this sense, Xiden does not invent anything new with 
> security. It only aims to get ahead of the "Allow Some" arms-race in other 
> dependency managers like NPM.
>
> Customization comes from a plugin module. You can use a plugin to 
> integrate GPG, use a different archive format, or otherwise fill in gaps in 
> Xiden's functionality. Xiden keeps authentication and integrity checking 
> decoupled in this way so that users can transition on their own in the 
> event a smart person finds a collision in a CHF, or cracks a cipher. 
> Similarly, Xiden's data sources are any data type declared with a path to 
> an input port, including queries to a catalog. A neat effect of this is 
> that you can configure your own syntax for data sources in your command 
> lines.
>
> Even though I call Xiden a dependency manager, it is generalized enough to 
> be useful as a component for a CI system, as a self-hosted OS development 
> environment, or even as a back-end for a more specialized dependency 
> manager. 
>
> If this is something that interests you, please consider trying the 
> examples with the guide [ex][guide]. Like all software, Xiden is not 
> perfect, so I depend on your feedback to make Xiden better for you, and to 
> decide what interfaces should be declared stable.
>
> [ex]: https://github.com/zyrolasting/xiden/tree/master/examples
> [guide]: https://docs.racket-lang.org/xiden-guide@xiden/index.html
> [ethos]: 
> https://groups.google.com/g/racket-users/c/4iI-SanIbzk/m/sGHYijLPAAAJ
> [multiver]: 
> https://github.com/zyrolasting/xiden/tree/master/examples/01-differing-versions
>
> --
> ~slg
>
>

-- 
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/932af4c4-3713-4305-970b-e608e434a71en%40googlegroups.com.


Re: [racket-users] A dict? question

2021-02-27 Thread 'William J. Bowman' via Racket Users
Exactly. `'e` is a reader macro that gets read as `(quote e)`.
When it's already under a quote, the quoted quote is treated as a symbol:

> (dict-ref '('yay) 'quote)
'(yay)
> (quote ((quote yay)))
'('yay)
> '((quote yay))
'('yay)
> (dict-ref '((quote yay)) 'quote)
'(yay)

--
William J. Bowman

On Sun, Feb 28, 2021 at 01:45:56AM +0200, Yury Bulka wrote:
> Indeed,
> 
> > (dict-keys '('yay))
> '(quote)
> > (dict-values '('yay))
> '((yay))
> > (dict-ref '('yay) 'quote)
> '(yay)
> 
> So... this boils down to:
> 
> > (equal? '('yay) '((quote yay)))
> #t
> 
> --
> Yury Bulka
> https://mamot.fr/@setthemfree
> #NotOnFacebook
> 
> 
> 
> William J. Bowman  writes:
> 
> > try (dict-ref ‘(‘yay) ‘quote)
> 
> -- 
> 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/87k0qtf51n.fsf%40privacyrequired.com.

-- 
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/YDraI2UWIH3ejIN3%40williamjbowman.com.


Re: [racket-users] A dict? question

2021-02-27 Thread 'William J. Bowman' via Racket Users
try (dict-ref ‘(‘yay) ‘quote)

-- 
Sent from my phoneamajig

> On Feb 27, 2021, at 15:31, Yury Bulka  wrote:
> 
> Dear Racketeers,
> 
> I have noticed something I don't understand:
> 
>> (dict? '(yay))
> #f
>> (dict? '('yay))
> #t
>> (dict-ref '('yay) 'yay)
> ; dict-ref: no value for key: 'yay in: '('yay)
> 
> I'm puzzled - what makes '('yay) a dict compared to '(yay)?
> 
> (Running Racket 7.8 on Linux).
> 
> --
> Yury Bulka
> https://mamot.fr/@setthemfree
> #NotOnFacebook
> 
> 
> -- 
> 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/87mtvpf5pa.fsf%40privacyrequired.com.

-- 
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/B540457B-D95F-4C18-A978-90033951BA0C%40williamjbowman.com.


Re: [racket-users] Questions Regarding My First Program

2021-02-23 Thread 'John Clements' via Racket Users
I *always* use DrRacket… but I admit I may not understand the indenting part of 
your question. 

In DrRacket, when you hit the “tab” key, it should move the text on the line to 
the “correct” position, according to Racket’s indentation rules. Also, whenever 
you hit return, the cursor should be automatically indented to the appropriate 
column. Finally, you can highlight a block of text and hit “tab”, and it will 
all be re-indented.

Is this different from what you’re observing, or from what you’re expecting?

John Clements

> On Feb 23, 2021, at 4:05 PM, Sage Gerard  wrote:
> 
> I can't speak to DrRacket since I never use it, so I'll focus more on the 
> first question.
> 
> Functional programming typically deals with these considerations (among 
> others):
> 
>   • Write functions that return values purely in terms of arguments.
>   • Defer side-effects until you can't.
> A goal to make the program produce the same output given the same input, 
> every time.
> 
> One example would be to redefine `say` such that it doesn't immediately 
> print. Maybe just return the string you want said.
> 
> (define (say str)
>   (format "Chatbot: ~a\n" str))
> 
> (I'd personally use a struct representing a message, sender, etc. but that's 
> beside the point)
> 
> This change makes the function "pure" in that the same input returns the same 
> output, and there are no side-effects in doing so. But this creates a problem 
> where you need to "rope in" that value somewhere. How that happens depends on 
> the program. A program that reports download progress will handles 
> side-effects differently than a program that prints a report before stopping.
> 
> One approach is to update program state in the same (functional) way. If we 
> assume the chat history is a list, where the first element is the most recent 
> message, then this version of `say` adds a string to the chat.
> 
> (define (say chat-history str)
>   (cons (format "Chatbot: ~a\n" str) 
> chat-history))
> 
> I'd start with this kind of thinking until you get to the point where 
> side-effects are unavoidable. Since your program appears interactive, you can 
> still print in the loop. But think about what your program would be like if 
> you print ONLY in that loop.
> 
> Others can probably say more, but hopefully this helps you start.
> 
> On 2/23/21 5:59 PM, IF Karona wrote:
>> Hi everyone,
>> 
>> I am new here, and I have a couple of questions related to the code that 
>> follows this message.
>> 
>> 1. I want to learn functional programming. When it comes to solving the 
>> problem of making a simple chatbot such as this, is there an approach that 
>> is more consistent with functional programming?
>> 2. I would prefer to not have to use multiple spaces every time I want to 
>> indent. Does Dr. Racket have anything comparable to the tab functionality of 
>> other programs?
>> 
>> Thank you for letting me join your community!
>> 
>> Karona
>> 
>> ;example.rkt
>> 
>> #lang racket
>> 
>> (require racket/match)
>> 
>> (define (say str)
>> (printf "Chatbot: ~a\n" str))
>> 
>> (define (handle-input str)
>> (cond
>>   
>> [(regexp-match #px"(?i:Hello,* world!)" str)
>> (say "I would not know about the rest of the world, but I can 
>> hear \
>> you just fine.")]
>>   
>> [(regexp-match #px"(?i:I( am|'m) learning how to program in Racket,* 
>> world!)" str)
>> (say "Racket is a great language, and it is lovely that you are \
>> learning it, but does literally everyone need to know?")]
>> 
>> [(regexp-match #px".*,+\\s*world!" str)
>> (say "Did the whole world really need to hear that?")]
>>   
>> [else (say "Did you really just say something without addressing the 
>> \
>> world? I am so proud of you! :,)")]))
>> 
>> (let loop ()
>> (display "Input: ")
>> (define str (read-line (current-input-port) 'any))
>> (handle-input str)
>> (loop))
>> -- 
>> 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/2f107ab5-2efd-4c33-83f6-eb5751664cb6n%40googlegroups.com.
> --
> ~slg

[racket-users] When are rackunit tests delayed? (different between 7.8 and 8)

2021-02-22 Thread 'William J. Bowman' via Racket Users
Below is an example that behaves "correctly", as in all tests run and are
counted as failured or errors correctly, in Racket 7.8, but which crashes in
Racket 8.

> #lang racket
> 
> (require
>  rackunit
>  rackunit/log)
> 
> (define (suite1)
>   (test-suite
>""
>(test-begin
>  (check-not-equal? (error "actual") (error "expected")
> 
> (define (suite2)
>   (test-suite
>""
>(check-not-equal? (error "actual") (error "expected"
> 
> (module+ test
>   (require rackunit/text-ui)
> 
>   ;; Correctly counts the tests as errors in 7.8 and 8.0
>   (check-pred
>integer?
>(run-tests (suite1)))
> 
>   ;; Counts the tests as errors in 7.8, but crashes in 8.0
>   (check-pred
>integer?
>(run-tests (suite2)))
>
>   ;; Gets run in 7.8, but not in 8.0
>   (check-equal? 0 0))

This has something to do with when test-suite delays a test, which seems
inconsistent across the Racket versions.
I'm not sure whether the problem was some undefined behaviour in test-suite or
not.

I'm a bit confused about the semantics of test-suites and tests, since the
documentation claims a test (unlike a check) is delayed, yet test-case and
test-begin do not delay tests, while test-suite does produce a delayed suite of
tests.
However, test-begin DOES seem to delay a test in the context of a test-suite.

I'd appreciate any insight.

--
William J. Bowman

-- 
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/YDSeU7C3PUQzRdCk%40williamjbowman.com.


  1   2   3   4   5   6   7   8   9   10   >