<tautologico>
Perl-style regexes usually include notation extensions that make the expressions denote languages that are not regular, according to formal language theory
joebobjoe has joined #racket
joebobjoe has quit [Ping timeout: 250 seconds]
<jcowan>
It's really only the backrefs that make the language not regular. Everything else is just syntactic sugar.
<tautologico>
yes, most expressions do denote regular languages
g00s has joined #racket
dddddd has quit [Remote host closed the connection]
pie__ has joined #racket
rnmhdn has joined #racket
mahmudov has quit [Ping timeout: 240 seconds]
pie___ has quit [Ping timeout: 268 seconds]
pierpal has quit [Read error: Connection reset by peer]
<lf94>
The same function can even be used for trees, I'm pretty sure
<lf94>
(I will be 100% sure later :))
<lf94>
cobax: Nice. One question, and this is something I was stuck on this morning. general recursion (fixpoint operator) <- how do you stop the recursion?
<lf94>
Shouldn't it eval forever
<lf94>
I'm sure there is a way
<lf94>
But it is definitely not obvious
<cobax>
lf94: I'm not sure. maybe you could jump to the continuation before the recursive operator was invoked?
badkins has joined #racket
<lf94>
Not sure what you mean
<lf94>
But this is why I went another route: explicitly defining how many "iterations" I need for something
<lf94>
i.e. 5 ....
<lf94>
If someone "passes" a list structure, it is not unreasonable to know the size
pierpal has joined #racket
<lf94>
I guess the next cool thing to do: create a function to count a list size, and use this count to run a function that many time.
<lf94>
(length list) ((cycle)(transform)) (list)
<lf94>
Is call-by-push-value very new?
<lf94>
This Paul Levy person is beyond me
orivej has quit [Ping timeout: 246 seconds]
<lf94>
How do you become this intelligent
<cobax>
indeed
pierpal has quit [Quit: Poof]
pierpal has joined #racket
<lf94>
Hm, call-by-push-value seems...to introduce too much
<lf94>
I think call-by-need is nice
hjek has quit [Read error: Connection reset by peer]
evdubs has quit [Remote host closed the connection]
evdubs has joined #racket
hjek has joined #racket
sauvin has quit [Read error: Connection reset by peer]
ea7ababe has joined #racket
sauvin has joined #racket
ubLIX has joined #racket
ea7ababe has quit [Quit: ERC (IRC client for Emacs 26.1)]
orivej has joined #racket
<rain1>
i have a macro theory question.. what flaws or disadvantages does syntactic closures have? is there some place they fall short
<rain1>
I think I found the answer
<rain1>
>The distinction between the binding table and the compile-time environment is important for a purely “syntactic” view of binding, where a term can be expanded, manipulated, transferred to a new context, and then expanded again. Some approaches to macros, such as syntactic closures (Bawden and Rees 1988) and explicit renaming (Clinger 1991), tangle the binding and environment facets of expansion so that
<rain1>
terms cannot be manipulated with the same flexibility.
ubLIX has quit [Quit: ubLIX]
<rain1>
i can't really visualize an example of that though
<rain1>
so im not 100% sure what it maens
endformationage has quit [Quit: WeeChat 2.3]
ubLIX has joined #racket
hjek has quit [Quit: Leaving.]
<jcowan>
rain1: All I can say is that Will Clinger told me that he listened to Bawden and Rees themselves arguing about the correct semantics of a particular sc-macro, and that's why Larceny has syntax-case and explicit renaming but not syntactic closures.
<jcowan>
Personally I think syntax-rules, possibly supplemented by syntax parameters, is quite enough to go on with. If I want to write a whole compiler, I'll write it in Scheme, not in a macro language.
<rain1>
I love syntax rules but there are times where i want to use scheme procedures in my macros