00:00:59 coderdad [~coderdad@ip72-200-211-242.ok.ok.cox.net] has joined #scheme
00:02:16 -!- jld [jld@westworld.xlerb.net] has left #scheme
00:12:20 chrissbx [~chrissbx@69-196-180-202.dsl.teksavvy.com] has joined #scheme
00:13:08 -!- coderdad [~coderdad@ip72-200-211-242.ok.ok.cox.net] has quit [Quit: Computer has gone to sleep.]
00:16:52 replore [~replore@203.152.213.161.static.zoot.jp] has joined #scheme
00:17:38 -!- tupi [~david@139.82.89.24] has quit [Quit: Leaving]
00:22:15 azathoth99: chibi
00:23:27 PicoLisp: The Scalpel of Programming A Radical Approach to Software Development
00:23:28 If some programming languages claim to be the "Swiss Army Knife of Programming", then PicoLisp may well be called the "Scalpel of Programming": Sharp, accurate, small and lightweight, but also dangerous in the hand of the inexperienced.
00:23:28 Less is more! - The maxim is: Keep it simple, and the programmer in control!
00:23:28 Why PicoLisp? Short answer: Because PicoLisp has two characteristic features, which are not found to that extent in other languages: An integrated database Equivalence of code and data These two features, and how they are used in combination, make it worth to take a closer look at PicoLisp. Besides this, PicoLisp is a very simple and succinct, yet expressive language. And it is free (MIT/X11 License).
00:23:28 Integrated Database Database functionality is built into the core of the language. PicoLisp is a database query and manipulation language.
00:23:28 Database entities are first class objects. They are called "external symbols", because they are automatically fetched from database files when accessed, but otherwise behave like normal symbols.
00:23:28 This fetching from external files is completely transparent, the symbols "are just there", and there is no need (or even a function) to read or write them explicitly. Pilog (a built-in Prolog engine) is used as a query language.
00:23:29 It is possible with PicoLisp to build large multi-user databases, distributed across many machines or in a cloud. Such a database system can be optimally fine-tuned, because all its levels are under the developer's control.
00:23:29 Equivalence of Code and Data This is actually a feature of Lisp in general. However, PicoLisp really lives it. It makes it easy to write things like the HTML, PostScript or TeX libraries, exploring a syntax of nested function calls. This results in very succinct and precisely expressed programs.
00:23:30 For a closer explanation, see the article The Equivalence of Code and Data.
00:23:30 Expressiveness PicoLisp is a very expressive language. Programs are often much shorter and concise than equivalent programs written in other languages.
00:23:31 Examples of various programming tasks and their solutions can be found at rosettacode.org.
00:23:31 Efficiency PicoLisp uses (at least when compared to other Lisps) very little memory, on disk as well as in memory (heap space).
00:23:32 For example, the installation size in the OpenWRT distribution is only 575 kB (uncompressed), where the statically linked interpreter with 296 kB takes the largest part. Yet, it includes the full runtime system with interpreter, database, HTTP server, XHTML and JavaScript application framework, watchdog, and the debugger, PostScript and XML libraries.
00:23:55 Wow, pastespam.
00:24:30 sorry bout adat
00:24:33 http://synthcode.com/scheme/chibi/ this was meant
00:24:37 chiibi looks intersting
00:28:37 -!- samth [~samth@conference/djangocon/x-pvyngdxeyjphvwyd] has quit [Ping timeout: 240 seconds]
00:28:53 http://i.imgur.com/nZ1QT.jpg
00:31:51 -!- joyfulgirl is now known as testing
00:32:00 -!- testing is now known as joyfulgirl
00:46:48 -!- kilimanjaro [~kilimanja@unaffiliated/kilimanjaro] has quit [Ping timeout: 256 seconds]
00:47:01 -!- blackened [~blackened@ip-89-102-29-120.net.upcbroadband.cz] has quit [Quit: blackened]
00:48:02 picolisp is dynamically scoped, which for the most part is a huge pain in the ass
00:48:46 any advantages you may think it possesses are usually outweighed by the surprising behaviors it produces
00:49:32 -!- dnolen [~davidnole@71.249.142.141] has quit [Quit: dnolen]
01:02:29 realitygrill [~realitygr@76.226.210.74] has joined #scheme
01:05:23 turbofail: yeah i got the same impression, though i've never tried to use it.
01:05:31 -!- joyfulgirl [~ivy@unaffiliated/joyfulgirl] has quit []
01:07:47 leo2007 [~leo@119.255.41.67] has joined #scheme
01:07:58 rudybot: later tell jcowan LISP 1.5 had caar et al. ftp://ftp.informatimago.com/pub/free/develop/lisp/lisp15-0.0.2.tar.gz
01:07:58 minion: memo for jcowan: pjb- told me to tell you: LISP 1.5 had caar et al. ftp://ftp.informatimago.com/pub/free/develop/lisp/lisp15-0.0.2.tar.gz
01:11:33 pjb-: minion is no more, by the way.
01:12:41 tell that to rudybot. I thought that it would do the job itself, but it's as lazy as any other bot.
01:17:58 incubot: Later tell rudybot, "minion is no more."
01:18:06 chatting later)
01:18:30 Jesus.
01:21:26 githogori [~githogori@c-24-7-1-43.hsd1.ca.comcast.net] has joined #scheme
01:33:00 kilimanjaro [~kilimanja@unaffiliated/kilimanjaro] has joined #scheme
01:37:52 -!- gffa [~gffa@unaffiliated/gffa] has quit [Quit: sleep]
01:46:19 -!- rimmjob [~king@adsl-108-207-193-192.dsl.hstntx.sbcglobal.net] has quit [Quit: leaving]
01:49:57 -!- X-Scale [email@sgi-ultra64.broker.freenet6.net] has quit [Quit: Time left until the Epochalypse: 26yrs 12wks 2days 13hrs 23mins 35secs]
01:55:39 X-Scale [email@sgi-ultra64.broker.freenet6.net] has joined #scheme
02:12:21 -!- leo2007 [~leo@119.255.41.67] has quit [Read error: Connection reset by peer]
02:13:24 X-Scale` [email@89.180.128.169] has joined #scheme
02:15:01 -!- X-Scale [email@sgi-ultra64.broker.freenet6.net] has quit [Ping timeout: 240 seconds]
02:15:33 -!- X-Scale` is now known as X-Scale
02:25:31 -!- delian66 [~quassel@84.252.14.164] has quit [Read error: Connection reset by peer]
02:31:49 minion was mccarthy?! o_O
02:33:33 Who knew?
02:43:58 Transformer [~Transform@ool-4a59e397.dyn.optonline.net] has joined #scheme
02:45:00 -!- turbofail [~user@c-107-3-149-149.hsd1.ca.comcast.net] has quit [Ping timeout: 258 seconds]
02:45:55 -!- Transformer [~Transform@ool-4a59e397.dyn.optonline.net] has quit [Excess Flood]
02:47:15 -!- kilimanjaro [~kilimanja@unaffiliated/kilimanjaro] has quit [Ping timeout: 260 seconds]
03:05:05 no way
03:07:12 jcowan [~John@cpe-98-14-172-212.nyc.res.rr.com] has joined #scheme
03:09:56 *offby1* pats rudybot on the head
03:10:01 takes after 'is dad, 'e does
03:10:24 Gormless.
03:12:15 -!- MadMuppet006 [~MadMuppet@122-62-124-247.jetstream.xtra.co.nz] has quit [Quit: Leaving]
03:16:35 dnolen [~davidnole@cpe-98-14-92-234.nyc.res.rr.com] has joined #scheme
03:17:59 -!- realitygrill [~realitygr@76.226.210.74] has quit [Read error: Connection reset by peer]
03:18:08 realitygrill [~realitygr@76.226.210.74] has joined #scheme
03:19:17 jcowan_ [~John@cpe-98-14-172-212.nyc.res.rr.com] has joined #scheme
03:19:33 -!- djanatyn [~user@173-13-139-236-sfba.hfc.comcastbusiness.net] has quit [Ping timeout: 245 seconds]
03:19:40 -!- jcowan [~John@cpe-98-14-172-212.nyc.res.rr.com] has quit [Read error: Connection reset by peer]
03:21:38 djanatyn [~user@173-13-139-236-sfba.hfc.comcastbusiness.net] has joined #scheme
03:24:55 -!- djanatyn [~user@173-13-139-236-sfba.hfc.comcastbusiness.net] has quit [Read error: Connection reset by peer]
03:25:22 -!- jcowan_ is now known as jcowan
03:27:29 djanatyn [~djanatyn@173-13-139-236-sfba.hfc.comcastbusiness.net] has joined #scheme
03:28:49 Giomancer [~Gio@adsl-76-231-35-17.dsl.irvnca.sbcglobal.net] has joined #scheme
03:33:44 http://synthcode.com/scheme/chibi/ hmmm
03:36:50 -!- preflex [~preflex@unaffiliated/mauke/bot/preflex] has quit [Remote host closed the connection]
03:36:56 -!- MichaelRaskin [~MichaelRa@195.91.224.225] has left #scheme
03:38:26 preflex [~preflex@unaffiliated/mauke/bot/preflex] has joined #scheme
03:50:46 Transformer [~Transform@ool-4a59e397.dyn.optonline.net] has joined #scheme
03:51:03 -!- Transformer [~Transform@ool-4a59e397.dyn.optonline.net] has left #scheme
03:55:38 turon [~turon@choplifter.ccs.neu.edu] has joined #scheme
03:56:37 karlito [~karl@pool-108-17-80-180.pitbpa.fios.verizon.net] has joined #scheme
03:59:43 -!- kniu [~karl@pool-108-17-80-180.pitbpa.fios.verizon.net] has quit [Ping timeout: 248 seconds]
04:01:30 leo2007 [~leo@119.255.41.67] has joined #scheme
04:05:04 pyro- [~pyro@unaffiliated/purplepanda] has joined #scheme
04:05:12 _pyro_ [~pyro@zhaozhou.dcollins.info] has joined #scheme
04:16:37 -!- jcowan [~John@cpe-98-14-172-212.nyc.res.rr.com] has quit [Quit: Leaving]
04:18:56 copumpkin [~pumpkin@unaffiliated/pumpkingod] has joined #scheme
04:20:25 kilimanjaro [~kilimanja@ip24-251-16-3.ph.ph.cox.net] has joined #scheme
04:20:27 -!- kilimanjaro [~kilimanja@ip24-251-16-3.ph.ph.cox.net] has quit [Changing host]
04:20:27 kilimanjaro [~kilimanja@unaffiliated/kilimanjaro] has joined #scheme
04:20:58 coderdad [~coderdad@ip72-200-211-242.ok.ok.cox.net] has joined #scheme
04:22:22 -!- soveran [~soveran@186.19.214.247] has quit [Remote host closed the connection]
04:24:06 MichaelRaskin [~MichaelRa@195.178.216.22] has joined #scheme
04:30:45 samth [~samth@conference/djangocon/x-odrsdejtxhznnlvi] has joined #scheme
04:47:59 -!- coderdad [~coderdad@ip72-200-211-242.ok.ok.cox.net] has quit [Quit: Computer has gone to sleep.]
05:00:35 elderK [~k@pdpc/supporter/active/elderk] has joined #scheme
05:00:37 Hey peeps
05:01:00 -!- dnolen [~davidnole@cpe-98-14-92-234.nyc.res.rr.com] has quit [Quit: dnolen]
05:01:39 -!- Giomancer [~Gio@adsl-76-231-35-17.dsl.irvnca.sbcglobal.net] has quit [Quit: Pull the pin and count to what?]
05:02:30 -!- Hal9k [~Hal@unaffiliated/kusanagi] has quit [Ping timeout: 255 seconds]
05:02:30 Hey.
05:07:36 -!- annihilator [~rff@ip72-207-248-18.br.br.cox.net] has quit [Read error: Operation timed out]
05:12:59 Hal9k [~Hal@unaffiliated/kusanagi] has joined #scheme
05:13:53 What's up CKY?
05:13:56 long time no see, man
05:14:11 :) I'm on the phone so I'll be pretty unresponsive.\
05:16:29 *offby1* just learned about McCarthy now :-|
05:16:37 :-)
05:16:41 @elderK
05:16:44 :-( @offby1
05:17:18 bad week.
05:17:19 kvda [~kvda@124-149-101-221.dyn.iinet.net.au] has joined #scheme
05:17:26 Jobs and Dennis Ritchie.
05:18:04 Aye, aye.
05:18:34 Aye
05:18:38 I care more for DMR.
05:18:49 Read a bunch of his ol' papers.
05:19:35 elderK: You care more for dmr than McCarthy, is that what you meant?
05:19:53 'cuz that may not the best opinion to hold on this channel. ;-)
05:19:54 I care for DMR and McCarthy more than I care for Jobs.
05:20:00 Right. True.
05:20:14 as for DMR and McCarthy, they're both Gods in my eyes.
05:20:26 Quite.
05:20:32 My view is polytheistic rather than monotheist.
05:20:33 :)
05:20:58 Pondering implementation of Scheme with reader macros right now.
05:21:01 Grarh.
05:21:04 Anywho, how's life?
05:21:07 It's been ages!
05:21:10 I landed a job some time back, btw :)
05:21:13 Living in christchurch now.
05:21:14 Congrats!
05:21:20 ^_^
05:21:27 Been working here since April.
05:21:31 Cool. :-)
05:21:37 Downside is that I h aven't done any personal coding since, really.
05:21:37 I've been working for my current place for 3 years now.
05:21:45 and I feel like my codetelligence is rotting.
05:21:49 :) Wow
05:21:54 It's good, lots of challenging performance things to solve.
05:22:12 Lucky :P
05:22:20 What kind of problems do you come up against?
05:23:07 Well, so, on occasion our system will hang because it ran out of memory (and the GC is going crazy), or waiting on a database that's locked up, etc.
05:23:18 You guys use Lisp there?
05:23:20 Finding out what the causes of those things, and fixing them, is a big part of my daily job.
05:23:21 or something else?
05:23:23 No, we use Ruby and Java.
05:23:30 Fun :)
05:23:34 I seem to be just another grunt.
05:23:36 :-)
05:23:40 Oh, yes?
05:23:42 Fixing bugs in a giant mess of code that's been maintained for like, 20 years.
05:23:53 tensive thousand line functions...
05:23:56 code duplication left and right,
05:24:03 extensive use of databases with the SQL all raw in the main p rogram.
05:24:07 No views, no stored procedures used.
05:24:09 Do you get to refactor much? If you can refactor stuff, then you can find passion in cleaning up the code.
05:24:18 Not really.
05:24:20 Otherwise, it's like a living hell.
05:24:22 yeah
05:24:24 Also,
05:24:26 zero documentation, anywhere.
05:24:28 None, period.
05:24:29 No commenting/
05:24:31 Nothing.
05:24:33 No design...
05:24:38 Everything is so bad.
05:24:45 One file, 10,000ish lines
05:24:45 :-(
05:24:48 nothing but a single function with a giant if chain
05:24:51 about 40 levels of indentation
05:25:01 I wish I was exaggerating but I'm not. :(
05:25:07 Okay, so it's probably time to find new work, then. Or seriously ask management to put some effort into refactoring.
05:25:19 I had a project awhile back
05:25:25 Management forced me to use al ibrary they developed internally.
05:25:30 See, they're big on the .NET fad.
05:25:36 they thought that any program could be a library.
05:25:37 elderK: Sounds like you have a responsibility to pen a DailyWTF.
05:25:44 since you can load programs as assemblies.
05:26:03 so, I had to build a "backup" program using this other program as a base, a library, which it wasn't designed for. It swallowed all errors, everythin.
05:26:11 yagnb [~yaaic@211.140.5.110] has joined #scheme
05:26:16 spent weeks working aruond, ran over time, now I have to maintain this piece of shit I had to rigth myself.
05:26:21 And I've never felt more ashamed of my code in my life.
05:26:22 Period.
05:26:34 Yeah, you're working at the wrong place, then.
05:26:41 It's like, doing so many kludges to fix stupid fuckups in their code is taking it's toll on my mind.
05:26:44 *its
05:27:05 Basically, I'm hanging in there for refernces.
05:27:06 *references.
05:27:11 It's not worth it.
05:27:14 I got a stern talking to for using function pointers...
05:27:19 and references in C++
05:27:23 A place you don't want to work for, is a place you don't want references from.
05:27:36 Ie, so I wouldn't have to keep typing TDeviceRealTerminal::Instance().DBControl.ID
05:27:49 TDBTransaction &tr = TDeviceRealTerminal::Instance();
05:27:58 they have 200 character lines..
05:28:11 but aye.
05:28:15 and it provides a living.
05:28:19 Make 35000 a year...
05:28:22 started at 33k$
05:28:23 !!!!
05:28:28 Okay. Truth time.
05:28:32 Aye?
05:28:39 My first programming job, straight out of university, paid me $40k.
05:28:51 By the time I left, 3 years later, it was at $52k.
05:29:04 Not the best wages even by NZ standards, but better than what you're listing.
05:29:11 Aye.
05:30:18 elderK: So you're in a crappy job that's underpaying you. That can't work.
05:30:35 Other than keep l ooking for new jobs, there doesn't seem to be much I can do.
05:30:53 Then look for new jobs. But with more seriousness. :-)
05:31:00 Seriousness? :)
05:31:14 Yes. Hard to explain in a sentence.
05:31:24 Next tiem I get an interview, I'm going to ask more questions about their processes, that's for sure.
05:31:29 I mean, we use Borland RADSTudio
05:31:31 Embarcadero now.
05:31:33 It crashes constantly.
05:31:38 Hehehehehe.
05:31:39 The COMPILER crashes constantly.
05:31:43 Seriously, it's horrible.
05:31:50 On top of that, there's no real makefile system
05:31:53 or automated build system.
05:31:59 just a batch file...
05:32:14 and several programs are developed in older versions of Borland C++ Builder that don't run on newer OSes
05:32:15 so...
05:32:22 we have to load VMs to work on the older stuff that's still shipped.
05:32:30 (in the latest product releases)
05:32:34 and my manager, my immediate boss,
05:32:44 in a development meeting I explained the important of shared objects, libraries.
05:32:48 "I don't see the use in the overhead"
05:32:49 and it's like...
05:32:53 you've got to be fucking shitting me.
05:32:59 *elderK* stops ranting
05:33:00 Sorry.
05:33:14 A good workplace is one that doesn't constantly override their engineers without good reason.
05:33:22 If that doesn't describe your workplace, next.
05:33:36 The star program of the company was written by my boss in Delphi then in C++
05:33:38 all by himself.
05:33:40 it's his baby.
05:33:44 heh
05:33:45 aye
05:33:59 almost every fucking class ends in "Manager"
05:34:18 and he tells me how function pointers and shit are code-smells.
05:34:35 and how my removing duplication is only adding complexity.
05:34:39 nice and simple, just copy an dpaste.
05:34:40 bla bla bla
05:34:43 anywho\
05:34:45 I need a cigarette.
05:34:46 :)\
05:34:48 Heh.
05:37:40 -!- yagnb [~yaaic@211.140.5.110] has quit []
05:38:21 tali713` [~tali713@c-75-72-220-197.hsd1.mn.comcast.net] has joined #scheme
05:38:58 -!- tali713 [~user@c-76-17-236-129.hsd1.mn.comcast.net] has quit [Quit: ERC Version 5.3 (IRC client for Emacs)]
05:38:58 -!- tali713` is now known as tali713
05:40:08 elderK: No, you need a new job. Cigarettes are bad for your health.
05:40:41 Aye.
05:41:52 stelleg_ [442395ec@gateway/web/freenode/ip.68.35.149.236] has joined #scheme
05:42:54 noob question: how to use a quasiquote like `((X 0) (Y 1)) as let bindings?
05:43:53 stelleg_: you cannot, it's not designed for that.
05:44:20 stelleg_: quasiquote is designed to generate some data. A let binding is some code.
05:44:35 You could write a macro, and generate the let binding there, using the quasiquote.
05:44:59 pjb-: alright, I'll look into that
05:45:02 pjb-: thanks
05:45:29 stelleg_: What're you trying to do, anyway?
05:46:45 cky: pass a list of bindings as an argument explicitly
05:47:16 seemed like the quasiquotes would be a good fit
05:47:18 stelleg_: Let's step a level up: why do you want to do _that_?
05:47:37 stelleg_: (I'm going to go "5 whys" on you until I get to the real thing you're trying to do.)
05:47:44 cky: :)
05:49:10 cky: I'm trying to build a recursive evaluator, so I was going to pass the list of bindings through each recursive call
05:49:40 Well, your evaluator won't be using the host "let", will it? It operates on a different level. :-)
05:49:56 So you will need to implement a "let" for your evaluator, and for that, you can make it support taking your list of bindings, if you like.
05:50:30 good point
05:50:46 I guess I thought it would be a good intermediary step
05:50:56 to make it work with the built in let
05:50:56 Nah, it'll be all pain and no gain. ;-)
05:51:01 haha
05:51:37 my friend is a lisp addict and has alwas told me how easy it is to go back and forth between "data" and "code"
05:51:45 so I was hoping to get a taste of that in this case
05:52:02 always*
05:54:01 yep
05:55:28 your evaluator will also need to look up variables in something that's not its own lexical scope
05:56:14 but you can list a list that looks a bit like a let binding to represent a set of variables -- see ASSOC
05:56:21 stelleg_: I would advise you to read LiSP: Lisp in Small Pieces.
05:57:38 stelleg_: basically, (your-eval '(+ 2 3)) pjb-: thanks, I'll check that out
05:58:56 It presents 9 scheme implementations, from the simpliest interpreter to the most sophisticated compiler.
05:59:06 sweet
06:05:50 -!- leo2007 [~leo@119.255.41.67] has quit [Read error: Connection reset by peer]
06:07:39 khaliG [~khali@203.171.126.201.static.rev.aanet.com.au] has joined #scheme
06:24:19 confab [~win7@c-24-10-60-185.hsd1.ca.comcast.net] has joined #scheme
06:28:59 frhodes [~user@75-173-92-60.albq.qwest.net] has joined #scheme
06:43:13 -!- frhodes [~user@75-173-92-60.albq.qwest.net] has quit [Remote host closed the connection]
06:43:18 frhodes [~user@75-173-92-60.albq.qwest.net] has joined #scheme
06:48:49 gienah [~mwright@ppp121-44-94-226.lns20.syd6.internode.on.net] has joined #scheme
06:53:35 Hey, cky
06:53:46 any chance we can talk about Lisp implementation? :)
06:54:01 I'm working, but I can probably answer a thing or two.
06:54:30 Ah, okay :)
06:54:33 Well, reader macros.
06:55:01 The reader knows how to read by executing functions in the dispatch table, or whatever
06:55:14 but reader macros can also invoke read with the recursive-p argument true.
06:55:15 the thing is,
06:55:36 does the compiler take action to ensure that the process ends up being iterative rather than recursive?
06:55:39 like, blowing stack style?
06:56:25 because, implementation-wise, the recursiveness of it is hard for my mind to tackle. Not because I don't get recursion but because I can't see a way to make it iterative here. Reader macros calling the reader which could call the macro again and the like.
06:56:28 kniu [~karl@pool-108-17-80-180.pitbpa.fios.verizon.net] has joined #scheme
06:56:40 It's not iterative, in such cases.
06:56:40 unless the compiler's reader keeps a stack itself and stuf
06:56:42 *stuff
06:56:43 Is that a problem?
06:56:44 really?
06:56:50 Just surprise me.
06:57:07 leo2007 [~leo@119.255.41.67] has joined #scheme
06:58:18 Really?
06:58:59 well, kind of.
06:59:02 are scheme macroes in any way inferior to common lisp macroes? paul graham mentions some tidbit about such that disturbs me
06:59:10 Also, cky,
06:59:17 in the implementation of something like syntax-case or syntax-rules
06:59:28 That doesn't, at least to my mind, suffer from that same recursiveness doom.
06:59:36 -!- karlito [~karl@pool-108-17-80-180.pitbpa.fios.verizon.net] has quit [Ping timeout: 240 seconds]
06:59:43 azathoth99: Depends on which Scheme macro system you're talking about.
06:59:43 since, couldn't we expand the template - then read the output from teh template?
06:59:49 and if needed, re-expand
07:00:00 azathoth99: syntax-rules is very restricted. You will need another macro system to use alongside it if you want to do complicated things.
07:00:18 azathoth99: The most commonly-used two (AFAIK) are syntax-case and explicit renaming.
07:00:19 like syntax-case?
07:00:23 or er-macros
07:00:33 Either will do. :-)
07:01:24 elderK: Hmmmm. Re expanding and re-expanding.
07:01:55 :) See, I wanted to make a scheme compiler agaes ago
07:02:01 and did a bunch of research, if you recall.
07:02:06 mostly on lexing and the like, macro systems.
07:02:17 but, still much to be pondered :)
07:02:29 like, my initial idea was to use a giant DFA to do the lexing and reading and such
07:02:37 which could be redefined at runtime.
07:03:10 as for expanding over and over,
07:03:17 I mean, like,
07:03:27 a macro that expands to something that includes a call of the macro itself.
07:03:38 kind of say like cond having a cond inside of it, if the cond was a macro
07:06:03