
You could do what Rosette does: https://docs.racket-lang.org/rosette-guide/sec_bools_ints_reals.html

That’s a good idea.

Small Happy DrRacket story. I lived with a family many decades ago. Three sisters survive; their parents are gone. Unfortunately, the sisters are not very good with math, or they sort of are, but not with any precision. They called me for help trying to settle an estate. Some of the sisters were owed money for expenses, one owed money to the estate. A sister was willed a special specific amount. Then there was another bank account to liquidate in uneven percentages. All this had to be figured out by the next morning when they went to the bank, because the sisters were flying off to different destinations. It ended up being quite simple, but the way it was explained to me at first, it was incredibly complicated. So I shared my screen, brought up DrRacket, gave various amounts names, and set up the calculations. As I explained my reasoning, which I thought was simpler than theirs, they did not initially believe it could be that simple. I went from complicated names for things to simpler names as the picture became clearer to me, and to them. DrRacket’s little arrows pointing to where things are used were immensely helpful. When I renamed something, they could see exactly how that affected everything else. In the end they were quite happy, I gave them the program and the output and they took that to the bank.

If my module provides a syntax binding that conflicts with one from scribble/manual, how can I specify to Scribble to use my module’s binding in defform
?

I figured it out: use declare-exporting
.

I asked this question over a year ago here and got the correct answer but I lost it, thanks again for your patience: What is the raco package command to migrate installed library packages from an earlier version of Racket to the latest one I just installed (7.9). Thanks!

raco pkg migrate

Alternatively, you can use the GUI interface in DrRacket

Another Scribble question: say that there is a grammar fragment that appears frequently in some macros, is there a way to define its grammar in one place, then link to it in the grammars of the macros?

It worked. Just had to add the <from> version number onto your raco command. Thanks again.

You can do what match
does (the pat
fragment in particular) (https://docs.racket-lang.org/reference/match.html).

Alternatively, you can document the fragment in one form, and reference to the fragment in another form. This is how various forms of syntax-parse
shares the parse-option
.

I think I’ll try the second option, because I want to be able to hyperlink to the fragment definitions.

Same for how case-lambda
and #%plain-lambda
share formals


Oh, this referencing doesn’t create a hyperlink though.

I wish it does, but currently it doesn’t.

New slogan inspired by @gknauth’s story above. “Racket, you can take it to the bank!”

They literally did. pay-1: 226963.66
pay-2: 167771.17
pay-3: 208715.17
sum: 603450.00

Of course this could have been done with any computer language. But when I was adding a bunch of things together, this syntax helped: (+ n1 n2 n3 ... nn)
and then in DrRacket, the arrows were great during the renaming phase, agreeing to use names for things that everyone understood. I developed the code with my names, then I used the arrows & renaming to pick names that were meaningful to them, and the arrows helped them believe that the right amounts were being used in the right places. I big source of the errors they had been seeing turned out to be from them mistyping the same values into a calculator and (suprise!) getting results that kept changing. I convinced them to write each number down just once and give things names. Pretty basic stuff, except they were dealing with their mother’s estate, and that is never an easy task.

What are these arrows you are referring to? When do they appear in Dr. Racket? I’ve switched over to Emacs so I haven’t used Dr. Racket in a while, but I don’t remember arrows … Cool story though!

Is there a way to build a “blue box” without using a standard definition form?


I was able to get the documentation to work more-or-less how I hoped it would.

Should be named DrArrows!

@phanthero If you haven’t checked “Right-click, Rename” feature of DrRacket, I urge you to give it a try, it’s awesome

@filip626 has joined the channel

Alright I guess I’ll install DrRacket after getting rid of it for so long XD

I was wondering why Racket was created. When I try to explain it to others, I sometimes say it was made to teach fundamental functional programming to those new to coding. But sometimes I will also say it was a language made to create languages (DSLs, etc), a language-oriented language. Now, obviously, creating languages is not a concept we might teach those who have just started programming, so I was wondering what the founders of the language were thinking when they designed Racket.
Was it initially a teaching language that eventually evolved into a more “language-oriented” language?

You might be interested in this blogpost that talks about some of the origin story: https://blog.racket-lang.org/2020/05/racket-is-25.html\|https://blog.racket-lang.org/2020/05/racket-is-25.html

This needs to be a blog post

Modern IDE editor has similar feature called “highlight occurrences”. But typically only highlights without showing arrows.

Can Emacs recreate Dr. Racket’s highlight occurences, refactor and other things Dr. Racket can do? I haven’t read the documentation for Racket Mode or Emacs that extensively, but usually the question is just a matter of finding the right option lol

It’s like spreadsheet. A free form spreadsheet!

It seems that several goals are mixed. This caused some some confusion. I think it’s better to divide different goals into different plugins.

Hmm, so from the blog, it seems that the initial goal was to make functional programming accessible to everyone since it wasn’t as widely used. I wonder when the following became the slogan for “Racket” instead of something more teaching oriented then. So is it true that the “language orientation” was an evolution rather than the starting goal?

Is it possible to make parameterize
faster? My program has no thread at all. Would getting rid of thread cell support help with performance?