endobson has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
Lowl3v3l has joined #racket
endobson has joined #racket
jellie has joined #racket
jellie has quit [Read error: Connection reset by peer]
urbanslug has joined #racket
happy_gnu has left #racket [#racket]
urbanslug has quit [Ping timeout: 272 seconds]
urbanslug has joined #racket
urbanslug has quit [Read error: Connection reset by peer]
urbanslug has joined #racket
urbanslug has quit [Ping timeout: 265 seconds]
endobson has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
urbanslug has joined #racket
urbanslug has quit [Ping timeout: 268 seconds]
urbanslug has joined #racket
urbanslug has quit [Read error: Connection reset by peer]
ZombieChicken has joined #racket
pierpal has joined #racket
Fernando-Basso has joined #racket
MustardCheese has joined #racket
krono has quit [Read error: Connection reset by peer]
krono has joined #racket
badkins has joined #racket
badkins has quit [Ping timeout: 260 seconds]
MustardCheese has quit [Ping timeout: 260 seconds]
soegaard has joined #racket
YuGiOhJCJ has joined #racket
pierpal has quit [Read error: Connection reset by peer]
pierpal has joined #racket
MustardCheese has joined #racket
kritixilithos has quit [Quit: quit]
<MustardCheese>
I can't seem to find any reference to recursive macros anywhere. Are they possible?
orivej has joined #racket
davidl_ has quit [Read error: Connection reset by peer]
Naptra has joined #racket
evdubs_ has joined #racket
evdubs has quit [Ping timeout: 240 seconds]
<erkin>
MustardCheese: Recursive macros are not only possible but sometimes necessary.
<MustardCheese>
What a relief
<erkin>
I assume you're talking about `syntax-rules' and its successors.
<MustardCheese>
Can you recurse while using syntax-case or must you use syntax-rules ?
<erkin>
`syntax-case' is a superset of `syntax-rules', so yes.
<erkin>
Consider an implementation of `or'. The first two rules are ((or) #t) and ((or var) var), obviously enough. The most important rule would be ((or var rest ...) (if var var (or rest ...))).
<erkin>
So if you have (or foo bar baz), it first expands to (if foo foo (or bar baz)), then (if foo foo (if bar bar (or baz))), then (if foo foo (if bar bar baz)).
dddddd has joined #racket
<MustardCheese>
Gotcha
<erkin>
You can pretty much make most recursive idioms in Scheme work with macros, including writing helper macros.
Trieste has quit [Ping timeout: 265 seconds]
<erkin>
For instance, consider a macro that takes some values, reverses them and returns them as values. You can use the "helper procedure with an accumulator" idiom. `reverse-values' would be ((reverse-values arg ...) (reverse-values-aux (arg ...) ())) and `reverse-values-aux' would be ((reverse-values-aux () (acc ...)) (values acc ...)) and ((reverse-values-aux (arg arg* ...) (acc ...)) (reverse-values-aux (arg* ...) (arg acc ...))).
Trieste has joined #racket
<erkin>
Okay, that's a bit messy to explain in an IRC message.
<erkin>
By the way, I recommend using `syntax-rules' over other macro systems if possible and falling back to the other systems if it falls short (ie you need to break hygiene).
<erkin>
A `syntax-rules' macro can be trivially ported to `syntax-case'/`syntax-parse' if needed.
<MustardCheese>
Right. I'll port this syntax-case macro over to syntax-rules, then
<MustardCheese>
It seems as though this syntax-rules macro cares not for my `begin-for-syntax` definitions earlier in the file
<erkin>
Can you post the code?
<erkin>
Racket implements `syntax-rules' in terms of `syntax-case' so using one or the other shouldn't affect anything outside.
<MustardCheese>
It's a bit of a mess at the moment but I'll try and post all the relevant bits
<MustardCheese>
So I can presumably use one of these source location tools to convert syntax into a source location struct
orivej has quit [Ping timeout: 268 seconds]
soegaard has quit [Quit: soegaard]
soegaard has joined #racket
pierpal has quit [Remote host closed the connection]
soegaard has quit [Quit: soegaard]
soegaard has joined #racket
MustardCheese has quit [Ping timeout: 260 seconds]
pierpal has joined #racket
pierpal has quit [Ping timeout: 240 seconds]
pierpal has joined #racket
pierpal has quit [Read error: Connection reset by peer]
pierpal has joined #racket
pierpal has quit [Read error: Connection reset by peer]
pierpal has joined #racket
soegaard has quit [Quit: soegaard]
pierpal has quit [Quit: Poof]
pierpal has joined #racket
nullcone has quit [Quit: Connection closed for inactivity]
wingsorc has joined #racket
soegaard has joined #racket
pierpal has quit [Ping timeout: 260 seconds]
pierpal has joined #racket
orivej has joined #racket
Trieste has quit [Ping timeout: 240 seconds]
Trieste has joined #racket
badkins has joined #racket
endformationage has joined #racket
badkins has quit [Ping timeout: 268 seconds]
endobson has joined #racket
MustardCheese has joined #racket
pierpal has quit [Ping timeout: 260 seconds]
dbenoit has joined #racket
endobson has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
<dbenoit>
how often are the package index scribble docs regenerated?
pierpal has joined #racket
sagax has quit [Remote host closed the connection]
kritixilithos has joined #racket
vraid has joined #racket
emacsen has joined #racket
<emacsen>
hey all. I have some questions about Racket on Windows. Namely what configuration would I need to tell Racket to use mingw-w64 for compiling Racket libraries that need C modules?
sagax has joined #racket
nullcone has joined #racket
aidalgol has quit [Ping timeout: 268 seconds]
MustardCheese has quit [Ping timeout: 260 seconds]
kritixilithos has quit [Quit: quit]
efm has quit [Remote host closed the connection]
efm has joined #racket
soegaard has quit [Quit: soegaard]
soegaard has joined #racket
gendarme has joined #racket
gendarme has quit [Remote host closed the connection]
gendarme has joined #racket
gendarme has quit [Remote host closed the connection]
gendarme has joined #racket
ArthurStrong has quit [Quit: leaving]
dbenoit has quit [Ping timeout: 240 seconds]
<greghendershott>
emacsen: I don't know but some months ago I tried both Linux Racket in WSL, and, running Windows Racket from Linux programs in WSL, and ISTR both worked fine.
<greghendershott>
magit on emacs on Windows makes me sad b/c git is slow on Windows b/c launching program on Win is slow
<greghendershott>
So I was experimenting with running Linux Emacs (and magit and git) in WSL, but actually running Racket for Windows as well as Racket for Linux
<emacsen>
greghendershott, I'm not actually talking about running applications, but rather using libraries that need C libraries built, and I need to do it without any Linux emulation
<emacsen>
That is without WSL or VM or any of that
<greghendershott>
I guess I confused mingw-64 with msys2