
@leif no, this one is some basic fixes for the macro debugger for the new expander. OTOH, this would be a good time for me to finish up and merge the other PR too.

It would be. ^.^

@ryanc here’s hoping that the new expander makes it possible to fix macro hiding :)

@samth @ryanc @michael.ballantyne I thought it was a little more fundamental of a problem than that?

My understanding was that it’s not fundamental, just hard — it used to work

I just discovered the Server:Racket book. Immediately bought it. Very happy to see more books on Racket, especially ones that get people doing things right away and then leading them down the yellow brick road, to adventure, Oz, and home.

i bought it, but havent read any of it

oh i might use it soon though!

integrate it + pollen for my new blog muhahahaha

i also never read that game programming in racket book at all

Haven’t checked out the game programming book yet, but I will. But the server book I hope will be useful. I have lots of little and some big Racket programs, I want to get some of them up on the web, I have a few fairly vanilla Racket webapps, but I’m always interested in what the “cool kids” are doing these days with their webapps written in Racket. At work, I try to keep up with developments in the Scala world, but I use Racket at work too, when it makes sense, e.g., when I want to create DSLs or I don’t need to hook into the Java ecosystem at all.

For a toy project I am experimenting with, I am interested in using a CLOS-like object system. I know Swindle exists, but its documentation has never been converted to Scribble, and I know little about it. Is it worth looking at? And are there any other CLOS-like object systems implemented for Racket?

At some point there was something like tinyclos for racket

Swindle is a full life experience rather than just a library

that is the impression I got from it, yes

I am thinking of implementing something like tinyclos in a way that might play nicely with some of Racket’s idioms, but I’m not sure I’ll actually get around to it

what’s the history of swindle anyway?

That would certainly be a cool thing to have

Swindle was implemented by Eli Barzilay to try to get as faithful a version of clos as possible

Long long ago

It was then re-implemented by him with the “new” expander around 2005 (sic) which was much simpler than the initial version

I will admit that I am thinking about this because I started by trying to use racket/class
and just found it kind of unpalatable (sorry matthew and robby)

Does Racket include a topological sorting algorithm anywhere in the distribution?

I don’t know about topological sorting, but Peter Norvig just released a pile of Lisp code from his PAIP book on GitHub: https://github.com/norvig/paip-lisp

Note, I haven’t checked this code, just googled: https://rosettacode.org/wiki/Topological_sort#Racket

@lexi.lambda out of curiosity - what are your main points of contention re: racket/class

@samth: That’s the best description of swindle I’ve ever seen. :)

@githree I don’t loathe it as much as I probably make it seem, but for my particular use, I would like multiple dispatch, so racket/class
is immediately disqualified.

@lexi.lambda I was actually hoping you would say multiple dispatch as this is one I would gladly welcome - btw have you been dog feeding your own implementation (the one on your blog)?

No, I haven’t. The implementation in my blog post is a toy; I have considered taking it off the package server multiple times to give up the multimethod
name. I doubt anyone is using it (and I kind of hope they aren’t). Part of this project might involve combining that approach with something more featureful and CLOS-like.

why doesn’t racket have a polymorphic collection processing library again? or does it now?

@joelmccracken because implementing one isn’t the main obstacle, adapting documentation and interfaces in common libraries to work in terms of it by default is


oh beautiful

so it does currently exist

disclaimer: I wrote it, but I don’t really use it

oh?

i started googling for it and saw you wrote some document about generics in racket on a wiki somewhere

tsort
from the graph
library is the closest I know of

#lang swindle
(defclass a ())
(defclass b ())
(defclass c (a b))
(defclass d (b a))
(defclass e (c d))
stderr:
top-sort: invalid constraints
wonderful

Interestingly, Swindle appears to just straight-up ship tinyclos in swindle/tiny-clos
.