
Racket News – Issue 31 - pmatos
https://racket-news.com/2020/05/racket-news-issue-31.html
======
mark_l_watson
I would like to see wider adoption of Racket. I spent six weeks earlier this
year evaluating and comparing Racket, LispWorks Common Lisp, and Swift for an
application [1] I am working on. I ended up not choosing Racket, but it was a
very close decision.

As a modern Lisp, Racket really has it all: vibrant user and dev community,
portable GUI support, easy to make standalone applications, and great
libraries.

[1] [http://knowledgegraphnavigator.com/](http://knowledgegraphnavigator.com/)

~~~
tjr
Can you share, what was the deciding factor against Racket?

~~~
147
Not OP but for me, I wanted to write http server applications and I was put
off by having to specify the http response status messages and timestamps. I'm
wondering why something slightly higher level isn't built into the standard
lib.

~~~
Bogdanp
You don’t have to specify those things yourself unless you want to manually
construct a response struct. There are helpers like response/xexpr and
response/output that construct responses for you.

This article might help: [https://defn.io/2020/02/12/racket-web-server-
guide/](https://defn.io/2020/02/12/racket-web-server-guide/)

~~~
147
But if I wanted to say return a 404 I don't want to have to specify "Not
Found" along with it every time.

~~~
Bogdanp
As of a couple releases ago, the message gets set according to the status code
so this code would behave as expected:

    
    
        (response/xexpr #:code 404 '(h1 "Not Found"))

------
klibertp
Interesting[1]:

> This library defines disposables, composable first-class producers of values
> with associated external resources that must be allocated and deallocated
> such as database connections. Several safe abstractions are provided to
> consume disposable values while ensuring their associated resources are
> deallocated after use.

Apparently, disposable supplement custodians to work better for cleaning up
externally allocated resources. I found the concept of custodians powerful,
but not _quite_ powerful enough, so it's good to see some work done in this
area.

[1] [https://docs.racket-
lang.org/disposable/Basic_Disposable_API...](https://docs.racket-
lang.org/disposable/Basic_Disposable_API_and_Concepts.html)

------
pontusrehula
A lot of new MIDI packages :p

    
    
      rs(src/pkg) is a live coding tool that lets you sequence MIDI using Racket.
    
      fuzzy-search(src/pkg) is a live coding tool that lets you sequence MIDI using Racket.
    
      planning(src/pkg) is a live coding tool that lets you sequence MIDI using Racket.

~~~
baldfat
I started using Racket for some MIDI a few months ago. Racket is a great
little music play ground.

------
rudolfwinestock
Related: The Racket Stories news aggregator focuses on the Racket programming
language, including news such as the original post.

[https://racket-stories.com/](https://racket-stories.com/)

------
iddiid
Long time ago hygienic macros move me to decide to farewell racket. Common
Lisp, clojure or scheme allow me to program in Lisp when I have some code to
do. So I don't look back to racket. /rant

Edited: Hygienic macros are powerful but as an user of a computer language and
not as a researcher I find them very difficult to grasp compared to Common
Lisp macros. And this is only the tip of the iceberg, what is down is that the
language is more oriented to researcher than to get things done. Should I work
in Northwest University, I would appreciate a lot those complexity and make
progress in the field, but that is not my cup of tea now. I don't have
problems to program in Haskell or any other language, but I don't buy racket
complexity.

~~~
jdormit
What don't you like about Racket macros? AFAIK Racket has the most advanced
macro hygiene system out of any of the other languages you mentioned - it
guarantees that all macros are hygienic by default, as opposed to other Lisps
which require you to manually call (gensym) or use special syntax in your
macro to guarantee that macro symbols don't shadow existing bindings.

~~~
iddiid
From (1) Fear of Macros ( this is from someone that mainly program in racket,
not my personal opinion)

But the moment I stepped past routine pattern-matching, I kind of fell off a
cliff into a terminology soup. I marinaded myself in material, hoping it would
eventually sink in after enough re-readings. I even found myself using trial
and error, rather than having a clear mental model what was going on. Gah.

(1) [https://www.greghendershott.com/fear-of-
macros/all.html](https://www.greghendershott.com/fear-of-macros/all.html)

My personal opinion: I think racket is more an ivory tower for researcher,
many for northwest university. “PLT” refers to the group that is the core of
the Racket development team. PLT consists of numerous people distributed
across several different universities in the USA.

As I am getting older I should prefer some middle ground between racket and
go. Hygienic macros are difficult to understand in this context, that is I
don't want to buy the power of hygienic macros, it is over sold.

Anyway, I admire Mattew Flatt efforts in compilation tecniques and the author
of Beautiful Racket.

~~~
klibertp
So, what is it that you don't like about Racket macros? The quote doesn't
explain it. Is it the fact that there are some concepts to learn before you
can use them effectively?

> that precludes hygienic macros.

The fact that you are so fixated on hygiene as problematic, but can't really
explain _why_ you think it's like this, is a huge red herring.

------
mindB
The videos for the "European Lisp Symposium" appear to just be random
30-second clips. Am I missing something?

[https://www.twitch.tv/elsconf/videos](https://www.twitch.tv/elsconf/videos)

~~~
slightwinder
Videos of the streams are gone. Likely this account had no status to make them
available for a longer time:

[..]Twitch Partners, Twitch Prime and Twitch Turbo users will have their
broadcasts saved for 60 days before being deleted. All other broadcasters will
have their broadcasts saved for 14 days before they are deleted.[..]

Source: [https://help.twitch.tv/s/article/video-on-
demand?language=en...](https://help.twitch.tv/s/article/video-on-
demand?language=en_US)

I hope someone made backups. I think are ways to reupload those videos, or
make them longer available. I looked at some other streamers archive, and some
do have way older videos under the highlights-section available.

------
dependenttypes
I really wish that racket had something similar to the c preprocessor's #line.

~~~
samth
You can do that with `syntax/loc` when you're writing macros.

