***cadmium.libera.chat sets mode: +o ChanServ
<tohoyn>I'll repost the following messages since they don't appear in the log: <tohoyn> manumanumanu: Theme-D implements functional iterators as a module <chrislck>I'm always confused when matching lists: (match lst ((a . b) etc)) vs (match lst ((a b ...) etc)) <flatwhatson>> (match lst ((a . b) etc)) vs (match lst ((a b ...) etc)) <RhodiumToad>(a . b) matches a proper or improper list, whereas (a b ...) matches only a proper list <RhodiumToad>i.e. (1 . 2) will match the first but not the second <chrislck>match again: what's the deal with these "ooo" or "***" <chrislck>ok: ooo is placeholder for ... ..1 or ___ O_o <RhodiumToad>in the description of the match syntax, ... is part of the metasyntax whereas ooo means a literal ... <RhodiumToad>i.e. (pat_1 ... pat_n pat_n+1 ooo) in the metasyntax means something like (foo bar baz ...) <RhodiumToad>the one that took me ages to work out was not in match but rather in syntax rules, where ... ... is special <manumanumanu>yeah, the first time you see that one it is a bit of a mindfuck <RhodiumToad>leoprikler: in the template part of a syntax rule, (... BLAH) means the same as BLAH but without ... being treated specially <manumanumanu>now that r7rs syntax-rules has an extra ellipsis argument, the need for that has been drastically reduced <RhodiumToad>still, there's an example in the docs which _uses_ it, without explanation <RhodiumToad>basically the inner syntax-rules wants to be [(return vals ...) (escape vals ...)] but since it's inside an outer syntax-rules, it uses (... ...) in place of ... <RhodiumToad>that example probably should have been using call/ec, too <manumanumanu>that one could be rewritten using srfi-46-styled ellipsis as well.