00:01:46 <oklopol> hmm. how advanced is introduction to algorithms, and why clrs?
00:01:54 <fizzie> Well, it's the classic.
00:02:03 <fizzie> And it's called CLRS because of the authors.
00:02:04 <oklopol> yes but i haven't read it. i assume you have
00:02:44 <fizzie> Well, it's no Knuth. So it's not very advanced-advanced. But it's (maybe) good to have a reference book of them basics, just in case.
00:03:13 <fizzie> The first edition was abbreviated CLR; the second edition added an author and a letter in the abbrev.
00:03:20 <oklopol> does it prove algos, or just state them?
00:04:07 <fizzie> Something like that. It's not *that* formal, but it's no cookbook either.
00:04:31 <ehird> http://pastie.org/364233.txt?key=9rpypyo03fxtfukjimeq
00:04:35 <fizzie> There's a reasonable amount of work done on computing worst-case asymptotic effectiveness and things like that.
00:04:40 <ehird> Bracism->Python translator.
00:04:44 <ehird> Written in Bracism, of course. :-P
00:04:55 <oklopol> well yes, but that's much easier than correctness proofs, ime
00:05:13 <ehird> wait actually i broke it fuck
00:05:27 <ehird> bsmntbombdood: cleverly
00:05:35 <ehird> ill show the non-obfuscated source
00:06:17 <ehird> just need to fix this one bug
00:06:34 <fizzie> oklopol: Sure, that's probably why they've bothered to do them.
00:07:06 <ehird> bsmntbombdood: http://pastie.org/private/wqoy0vq8pdrfkapgzgg
00:07:15 <ehird> should be fairly easy to figure out how it works
00:07:16 <oklopol> because ordos and the like are often pretty much just arithmetic, with a small layer of explanation
00:07:55 <oklopol> i read *an* introduction to algorithms at some point i think
00:08:07 <oklopol> i mean skimmed through it because i already knew all the algos
00:09:31 <oklopol> no actually there were a few trees i didn't know about, these things where you have the strings as paths in a tree, and can thus check what's in the dict etc.
00:09:38 <oklopol> but anyway, i wonder what book that was
00:10:17 <ehird> bsmntbombdood: see how it works?
00:10:20 <oklopol> it was really big, but most of it was sample code, which was written in C# i think, and thus took the bulk of the book (levenshtein was like 3 pages)
00:10:42 <ehird> bsmntbombdood: :D, basically, it only triggers a block if you have a colon, whitespace, then a {, BUT
00:10:51 <ehird> it only does that trigger if the last { seen entered a block
00:11:00 <ehird> so {...} doesn't enter a block, no colon
00:11:09 <ehird> since the last { seen didn't open a block
00:11:19 <ehird> it's an essentially foolproof algorithm
00:12:02 <fizzie> CLRS code samples are all in their own pseudo-code thing.
00:12:19 <ehird> pseudo-code is a great evil.
00:12:56 <fizzie> The book's web page has their LaTeX macro for typesetting that pseudo-code, I've used it a couple of time for presentation slides and stuff.
00:13:37 <ehird> fizzie are you IRL buds with lament I have this fucked up view of #esoteric, and all the ops know each other.
00:13:56 <fizzie> ehird: No. I don't even know which country lament is from.
00:14:03 <ehird> he lives in canada.
00:14:10 <ehird> but he's russian iirc
00:14:28 <ehird> He's like a superhero
00:14:34 <ehird> "LAMENT! He lives in canada...
00:14:36 <ehird> But he's RUSSIAN!"
00:14:50 <oklopol> yeah, i wonder why that was such a crucial detail
00:15:04 <oklopol> i mean i'm australian, but i don't mention it much
00:15:13 <ehird> lament has inherent russian-nature
00:15:23 <ehird> wait oklopol are you really australian
00:15:35 <oklopol> ehird: how really are we talking?
00:15:36 <fizzie> From the people in the nick-list I only IRL-know ineiros. And I might've seen Deewiant accidentally, since we're in the same university.
00:15:42 <ehird> oklopol: like, really
00:15:53 <ehird> fizzie: wait you know ineiros the famous idler? WHOAAAAAAAAA.
00:16:04 <ehird> he's been idle _thirty two days_
00:16:44 <oklopol> i haven't seen esotericers irl, not even myself
00:16:44 <fizzie> Not on the IRCnet side of the fence.
00:16:50 <oklopol> at least directly and completely
00:17:01 <ehird> IRCnet is a crazy finnish thing.
00:17:09 <ehird> oklopol: there needs to be an #esoteric meetup sometime :|||||||
00:17:39 <fizzie> It's not that Finnish. Although I haven't seen statistics.
00:18:02 <fizzie> There are .de people around, at least.
00:20:53 <fizzie> Seems to be sort-of losing in popularity: http://irc.netsplit.de/networks/details.php?net=IRCnet&submenu=years when compared to the trend in http://irc.netsplit.de/networks/details.php?net=freenode&submenu=years
00:21:46 <ehird> Freenode has only had 52041 users max?
00:22:23 <fizzie> Well, it's not a big network.
00:22:37 <ehird> It feels like one of the biggest...
00:22:59 <fizzie> :wolfe.freenode.net 266 fasdfa :Current global users: 44083 Max: 52254
00:23:28 <fizzie> Must sleeps now, night.
00:24:38 <bsmntbombdood> does that mean they can use reference-counting for gc?
00:25:45 <oklopol> you can still have circular references that go out of scope
00:26:09 <ehird> bsmntbombdood: easy
00:26:37 <ehird> newtype Foo = Foo Foo
00:26:45 <oklopol> yeah it's not like types are that crucial in haskell :P
00:27:16 <ehird> bsmntbombdood: in fact, circular structures are very good for haskell programs
00:27:22 <ehird> e.g. a fold over an infinite list is an interesting control structure
00:27:59 <oklopol> bsmntbombdood: take this with a grain of salt though, i'm not feeling all that bright today, there might be some other optimizations for gc at least, given immutability.
00:28:28 <oklopol> i just haven't thought or read about it, and clearly you can at least do what makes mutable stuff circumvent refcounting.
00:31:45 <bsmntbombdood> http://www.amazon.com/Garbage-Collection-Algorithms-Automatic-Management/dp/0471941484
00:39:39 <kerlo> http://product.half.ebay.com/_W0QQcpidZ405747QQprZ305965
00:40:09 <ehird> Garbage collection has progressed a loooooong way since then.
00:40:28 <kerlo> "Visible shelf wear -- may have some notes/markings on pages" - $32.00
00:41:15 <ehird> lofl: lolling on the floor laughing?
00:41:26 <ehird> laughing on the floor louding?
00:41:43 <kerlo> Loudly on the floor laughing.
00:41:48 <kerlo> I am loudly on the floor.
00:41:48 <ehird> kind of like oko then
00:50:05 <GregorR> I see that my name has been said, so I look up through history to see in what context it was said, and am subjected to THAT :P
01:09:08 <MizardX> ehird: I think I got the persistance of triggers working. http://dpaste.com/110549/
01:09:46 <MizardX> just need to call bot.save_callbacks() to save, and it is loaded upon restart
01:11:54 -!- Corun has quit ("Leaving").
01:13:52 <MizardX> ehird: Strangely, the issue with the topic-change doesn't seem to have any obvious solution. The bot sends the TOPIC-command to the server, which responds with the standard ":nick!user@host TOPIC #chan :...", but the topic doen't seem to get changed anyway.
01:17:57 -!- seabot has quit (Read error: 113 (No route to host)).
01:37:49 <bsmntbombdood> is something besides bsmntbombdood developing bsmnt_bot ?!?!
01:48:29 <MizardX> well... ehird asked me to make added triggers persistant
01:51:30 <psygnisfive> ive begun coding the interp for my language :o
02:31:27 <comex> >>> ['a', 'b', 'C'].each().upper()
02:38:57 <kerlo> I no longer like Python.
02:39:44 <kerlo> Then again, you can do wild things like that in Haskell, too.
02:39:52 <comex> I got the idea from IO
02:40:20 <kerlo> You mean you can actually do that in Haskell?
02:40:48 <comex> however, implementing it in python required using ctypes to get at the internal dict :D
02:41:13 <comex> I don't know haskell :(
02:41:19 <comex> I'm afraid to learn it because then I will forget about prolog
02:41:37 <kerlo> newtype Each a = Each [a]; instance Stuff a => Stuff (Each a) where f (Each a) = Each (map f a)
02:42:01 <kerlo> Where Stuff is an arbitrary class, and f is an arbitrary class variable thingy.
02:42:26 <comex> I'll get back to you on that when I understand Haskell. ;)
02:43:03 * kerlo ponders the continuous functions in Sierpinsky space
02:45:48 <kerlo> Sierpinski, rather.
02:53:05 <kerlo> Oh, cool, a function to the Sierpinski space is continuous if and only if the set of functions it maps to 1 is open.
02:54:04 -!- GreaseMonkey has joined.
03:40:38 -!- bsmnt_bot has quit (Excess Flood).
04:00:15 <bsmntbombdood> it's sooo esoteric even though it was intended as a serious language
04:24:27 -!- puzzlet_ has quit (Read error: 60 (Operation timed out)).
04:25:34 -!- puzzlet has joined.
04:45:38 <GregorR> bsmntbombdood: HELP ME WRITE ZEE
04:46:22 <GregorR> ZEE is a game I'm writing, it stands for Zoom-Enhance-Extrapolate. It's a parody of those scenes in spy movies where they magically ... well, zoom, enhance and extrapolate images.
04:46:27 <GregorR> It's sort of an image-maze game.
04:47:15 <GregorR> You don't believe that they exist? :P
05:27:38 -!- oerjan has joined.
06:25:36 <oerjan> so you did solve your parsing problem?
06:25:51 <psygnisfive> oh, no, that wasn't for this yet. im going to need to solve it eventually.
06:26:00 <oerjan> what kind of parsing is it?
06:26:24 <oerjan> LR parsing or recursive descent, or what?
06:28:12 <oerjan> anyway, the thing is that when you recognize a non-terminal token, you should know what tokens it consists of.
06:28:46 <oerjan> so you can build the tree out of the trees for the subtokens at the same time...
06:29:15 <psygnisfive> im not entirely sure how you mean that but ok :P
06:29:52 <oerjan> well consider LR parsing. you have some tokens on the stack, and recognize that they form a non-terminal production
06:30:17 <oerjan> so you do a reduction, perhaps after considering lookahead
06:31:02 <oerjan> now, if you already have the trees for the subtokens built up, you can just combine them to get the tree for the replacement non-terminal
06:32:09 <oerjan> once more: you build the trees _while_ you are recognizing tokens, not afterwards
06:33:23 <oerjan> each token comes with its subparse tree
06:39:06 -!- bsmnt_bot has joined.
06:39:11 -!- bsmnt_bot has quit (Remote closed the connection).
06:50:35 -!- Alt-255 has joined.
06:50:44 -!- Alt-255 has quit (Remote closed the connection).
06:51:26 -!- Alt-255 has joined.
06:52:23 -!- Alt-255 has quit (Remote closed the connection).
06:53:36 -!- Alt-255 has joined.
06:53:40 -!- Alt-255 has quit (Remote closed the connection).
06:53:59 -!- Alt-255 has joined.
06:54:06 -!- Alt-255 has quit (Remote closed the connection).
06:55:12 -!- Alt-255 has joined.
06:55:18 -!- Alt-255 has quit (Remote closed the connection).
07:17:18 -!- oerjan has quit ("leaving").
07:41:42 -!- kerlobot has joined.
07:52:02 -!- ehird has quit (K-lined).
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:02:06 -!- psygnisf_ has joined.
08:02:16 -!- psygnisf_ has changed nick to psygnisfive_.
08:02:16 -!- GregorR has quit (Remote closed the connection).
08:02:39 -!- psygnisfive_ has changed nick to psygnisfive__.
08:02:57 -!- psygnisfive__ has changed nick to psygnisfive_.
08:03:43 -!- psygnisfive_ has changed nick to psygnisfive_____.
08:03:50 -!- psygnisfive_____ has changed nick to p5.
08:03:56 <AnMaster> * ehird has quit (K-lined) <-- wow, why?
08:04:11 -!- p5 has changed nick to cygnus5.
08:04:27 <MizardX> maybe too many Excess Flood...
08:04:57 <fizzie> Heh, and he's always saying that Freenode admins do nothing.
08:05:33 -!- AntiGravityBot has joined.
08:11:25 -!- ehird has joined.
08:11:37 -!- ehird has quit (K-lined).
08:11:39 <AnMaster> what the heck did you do to get klined...
08:11:56 <AnMaster> MizardX, maybe too many clients from one host?
08:12:00 -!- AntiGravityBot has quit (Remote closed the connection).
08:12:18 -!- AntiGravityBot has joined.
08:13:37 -!- psygnisfive has quit (Read error: 110 (Connection timed out)).
08:21:20 -!- AntiGravityBot has quit (Remote closed the connection).
08:21:29 -!- cygnus5 has changed nick to psygnisfive.
08:22:31 -!- AntiGravityBot has joined.
08:22:47 <psygnisfive> i now have a bot that runs most of my little language. :D
08:28:30 -!- AntiGravityBot has quit (Remote closed the connection).
08:34:30 -!- puzzlet has quit (Remote closed the connection).
08:34:34 -!- puzzlet has joined.
08:47:29 -!- GregorR has joined.
08:57:01 -!- ais523 has joined.
08:57:34 -!- GreaseMonkey has quit ("Client Excited").
09:00:43 -!- ais523 has quit (Client Quit).
10:29:16 -!- puzzlet has quit (Remote closed the connection).
10:29:25 -!- puzzlet has joined.
11:06:34 <oklopol> GregorR: It's sort of an image-maze game. <<< like, all you can do is zoom, but only some parts of the picture contain details you can actually zoom to?
11:11:49 <oklopol> somehow the fractal's structure hints where the path continues
11:12:02 <oklopol> and at the end, there's a little winking smiley
11:12:16 <oklopol> so you know you finally did it.
11:16:42 <AnMaster> a lot of games are way too weak on the plot I think
11:17:12 <AnMaster> However, I'm not good at making up game plots myself...
11:18:00 <AnMaster> oklopol, well, not "need" indeed. But it wouldn't hurt.
11:18:20 <oklopol> it would hurt, it would just distract from the games' actual problems
11:18:45 <AnMaster> oklopol, well, you could include it as "background info" or something
11:18:48 <oklopol> well okay, i'm not saying anything bad about tetris, but chess doesn't really work as a computer game.
11:18:58 <oklopol> because you can't build on it.
11:19:09 <oklopol> it's always the same, change it, and it simply isn't chess anymore.
11:19:20 <AnMaster> oh that would be fun, chess with trench digging!
11:19:20 <oklopol> thus it's more of a puzzle imo
11:19:43 <oklopol> puzzle-typey game, not the kind that's fun to play with the computer
11:21:41 <AnMaster> oklopol, http://en.wikipedia.org/wiki/Trench_warfare
11:22:13 <AnMaster> oklopol, also add hitpoints to the chess pieces
11:22:29 <oklopol> i just thought you wanted to reroute rivahs or something.
11:22:41 <AnMaster> oklopol, now, at which point is it no longer chess? :D
11:22:59 <oklopol> i'd say pretty much instantly, and that's my point
11:24:14 <oklopol> it's not a very continuous game, on any level, it breaks easily, in a way
11:24:49 <oklopol> well okay not that easily, i guess this is more about what i consider the chess philosophy to be.
11:27:03 <oklopol> chess is more of an algorithmic game, you can't continuously add challenge to it, as material, i guess is my point.
11:28:26 <oklopol> the only way you can safely add challenge is to make the AI gradually better, but, well, first of all that doesn't really have a continuing feel to it. and second of all AI isn't inherently very gradually enhancable.
11:28:52 <oklopol> it just isn't all that visible how good the AI is, at least to me. it just sometimes wins, sometimes not.
11:29:10 <oklopol> i mean unless you're really good at chess, which i obviously am not.
11:31:22 <oklopol> tetris is pretty easy to build on, the general idea of dropping shit into a pile with rewrite rules is used quite a lot
11:32:16 <oklopol> not directly though, ofc, if you just increased the size of the dropped objects, and kept them random, you'd never get a complete row
11:32:45 <oklopol> you'd have to add fuzzy row removing
11:32:54 <oklopol> which again isn't very tetrisy.
11:33:32 <oklopol> but, if the puzzles were handmade, or, well, even just generated more sensibly, you could even have continuous tetris
11:33:58 <oklopol> of course, if you fucked up, you might never be able to get the piece destroyed.
11:34:08 <oklopol> because it might not fit anything else
11:35:23 <oklopol> of course closed, having holes would make it kinda hard to remove the insides (impossible, assuming the pieces can't roll around, which isn't tetrisy again)
11:44:51 <AnMaster> oklopol, you could also make something like, tetris but remove blocks of same colors if they are large enough
11:45:46 <AnMaster> oh yes... http://kfouleggs.sourceforge.net/
11:46:21 <oklopol> yes, that's the most common rewrite-rule-pile-based game.
12:08:58 -!- ais523 has joined.
13:11:47 -!- ehird has joined.
13:13:06 -!- bsmnt_bot has joined.
13:13:08 -!- bsmnt_bot has quit (Remote closed the connection).
13:26:02 -!- ais523 has quit (Client Quit).
13:26:42 <ehird> 17:13:52 <MizardX> ehird: Strangely, the issue with the topic-change doesn't seem to have any obvious solution. The bot sends the TOPIC-command to the server, which responds with the standard ":nick!user@host TOPIC #chan :...", but the topic doen't seem to get changed anyway.
13:27:10 <ehird> 18:40:48 <comex> however, implementing it in python required using ctypes to get at the internal dict :D
13:27:12 <ehird> no, it really didn't
13:27:18 <ehird> you can implement that trivially
13:28:31 <ehird> Anyway, I was offline when I was klined.
13:28:34 <ehird> I am asking #freenode now.
13:29:04 <MizardX> ehird: No. If I look at the console window (running the bot locally), the bot gets the standard response for successful topic change, but I don't see that in my normal IRC client.
13:29:17 <ehird> MizardX: That's very wtf.
13:34:21 <ehird> told me to email kline@freenode.net..
13:34:23 <ehird> I love indirection.
13:34:32 -!- ais523 has joined.
13:34:49 <ehird> Why'dya think I got klined twice overnight?
13:35:16 <ais523> which network? Freenode?
13:36:04 <ehird> I've sent an email to kline@freenode.net.
13:36:29 <ehird> ais523: are there automatic K-lines
13:36:34 <ais523> maybe some nick that yours is linked to got hijacked?
13:37:19 <fizzie> There used to be automatic K-lines on joining known botnet control channels, but that probably doesn't apply.
13:37:36 <ais523> also on joining GNAA channels
13:37:41 <ais523> hmm... do you have autojoin on invite?
13:38:02 <ehird> 13:36 <ais523> maybe some nick that yours is linked to got hijacked?
13:38:02 <ehird> 13:36 <ais523> and went mad?
13:38:09 <ehird> Considering the hostname was eso-std.org I very much doubt it.
13:38:12 <ais523> that combination seems to be an obvious way to get someone klined, if it works
13:38:17 <ehird> And I do not have autojoin on invite because it was my _freaking bouncer_
13:38:23 <ehird> Also, I've joined #gnaa on freenode before. No kline.
13:38:26 <ais523> anyway, in a lecture, I'd better go
13:38:30 -!- ais523 has quit (Client Quit).
13:40:00 <Slereah> What, #gnaa does not have hot african sex?
13:49:53 -!- ehird has quit (K-lined).
13:51:46 <fizzie> Maybe they didn't like his tone in the email.
13:52:53 <oklopol> maybe he should ask his big brother for help
14:06:28 -!- seabot has joined.
14:12:09 -!- seabot has quit (Remote closed the connection).
14:29:31 -!- seabot has joined.
14:35:21 -!- seabot has quit (Remote closed the connection).
15:03:14 -!- KingOfKarlsruhe has joined.
15:15:52 -!- MigoMipo has joined.
15:16:38 -!- join has joined.
15:17:06 -!- join has changed nick to Guest21688.
15:18:01 -!- Guest21688 has changed nick to Slereah_.
15:22:05 -!- puzzlet has quit (Remote closed the connection).
15:22:10 -!- puzzlet has joined.
15:23:26 -!- FireFly has joined.
15:24:53 -!- ehird_ has joined.
15:24:59 <ehird_> The fuckers. I'm still fucking banned.
15:25:06 <ehird_> God, freenode is a bunch of incompetend retards.
15:27:50 <fizzie> You'd better watch that mouth of yours, they'll be k-lining you for calling them retards.
15:29:32 <ehird_> It'd be nice if they, say, unbanned me while trying to fix it.
15:29:40 <ehird_> Instead of "contact our shitty issue tracker so we can ignore it".
15:32:01 -!- Slereah has quit (Read error: 110 (Connection timed out)).
15:45:42 -!- KingOfKarlsruhe has quit (Remote closed the connection).
15:51:56 -!- jix has joined.
16:02:13 -!- dbc has joined.
16:03:51 <comex> how do you propose this be trivially implemented
16:04:35 <comex> specifically, you can't just do list.foo = 'bar'
16:08:24 <ehird_> each([1,2,3]) is so bad? :P
16:08:55 <ehird_> also im ehird_ cuz ehird got k-lined.
16:21:01 <comex> because it requires thinking you're going to use "each" before typing out the list
16:21:08 <comex> this is a laziness construct
16:21:12 <ehird_> " what is cursor positioning "
16:21:21 <comex> however, obviously its uses in python are limited
16:21:57 <ehird_> clearly we should all use scheme
16:22:04 <comex> in io you can do, say, list(foo, bar, baz) each setNumber(x += 1)
16:22:08 <ehird_> clearly we should all use scheme
16:30:46 -!- MigoMipo has left (?).
16:43:47 -!- ais523 has joined.
16:59:25 -!- oerjan has joined.
16:59:55 <ais523> we need some chance at symmetry here...
17:00:28 <ehird_> so, now taking bets as to when freenode will de-kline my bouncer again
17:01:10 <ehird_> nothing, read the logs
17:01:16 * ais523 vaguely wonders why the desktop background on the Windows computer next to me says "Please Check Monitor For Updated Password"
17:01:21 <ehird_> freenode are incompetent maximus
17:02:00 <ais523> my guess is it's something to do with the practice on the lecture hall computers that they use of putting a guest username/password onto the monitor so visiting lecturers can log in
17:02:02 <oerjan> = incompetentissimus, iirc
17:02:07 <ais523> and it's somehow been deployed over here by mistake
17:02:23 <ais523> there isn't a username/password on this monitor
17:02:43 <ais523> but then, weirder was the time when I came to a similar computer and it was apparently off
17:02:55 <ais523> none of the LEDs on the front looked on (but it was sunny and I couldn't tell for certain)
17:03:01 <ais523> neither the keyboard nor mouse did anything
17:03:16 <ais523> the only thing that made me wonder if it was really off was the Windows XP screensaver on the monitor
17:03:24 -!- ehird_ has set topic: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.
17:03:37 <ehird_> ... guess it got klined too
17:04:27 <oerjan> perhaps bsmnt_bot was the reason
17:04:38 <ais523> was it going on a rampage, I wonder?
17:04:44 <ais523> it could be controlled by arbitrary people...
17:04:56 <ehird_> I doubt it, it didn't quit as k-lined
17:05:01 <ehird_> just as connection reset by remote
17:05:07 <ehird_> whereas I was explicitly auto-klined
17:05:10 <ehird_> or, umm, klined by a fucktard
17:05:19 <ehird_> but i'd prefer to think its incompetent programming
17:07:22 <GregorR> Chess plot: You are the king of a great empire, but for years there has been diplomatic tension with the empire just down the road. Now, their fury at you for completely duplicating their army in every detail has heatened so that they've declared war! Neither of your armies are very large (you have enough people to recruit a huge army, but then it wouldn't be an exact duplicate of your neighbors!), so this singular battle will likely determine the vic
17:07:24 <GregorR> tor in the war. Now, send your footsoldiers to their almost certain doom, as they are but pawns in ... oh, never mind. Welcome to the world of CHESS!
17:07:50 <ais523> GregorR: so why can you only move one a turn?
17:08:14 <GregorR> That has nothing to do with the plot, that's just a game rule.
17:08:24 <GregorR> The plot never actually explains the rules, that would be nonsensical.
17:08:40 <ais523> ah, it's just a chess-inspired film
17:08:44 <ehird_> http://groups.google.co.uk/group/net.micro.pc/msg/993d3e017d041ed4
17:08:48 <ehird_> The first me too post. EVER.
17:08:48 <ais523> you should make Tetris: the Movie
17:08:53 <ais523> I've wanted someone to make that for ages
17:08:59 <ehird_> A plague upon csu-cs!casterli.
17:09:00 <ais523> ehird_: how do you know it's the first ever?
17:09:18 <ehird_> http://www.google.com/googlegroups/archive_announce_20.html
17:09:34 <ais523> did Deja really archive usenet right from the start?
17:09:40 <oerjan> <AnMaster> 1) Chess 2) Tetris
17:09:55 <ais523> so there may have been a me-too that wasn't archived and got lost
17:09:56 <ehird_> but near-complete usenet archives are available
17:10:04 <ehird_> and they were mostly meta-discussion about usenet, really
17:10:07 <ais523> fwiw, someone might have written X-No-Archive: yes\n\nMe, too!
17:10:14 <oerjan> ass for (2), there is the sunken city of Tetris in Triangle and Robert...
17:10:21 <ehird_> yeah um I don't think people used those headers back then ais523 :P
17:10:40 <GregorR> ehird_: Somebody extremely psychic could have :P
17:11:14 <ehird_> http://groups.google.com/group/net.lang.c/msg/66008138e07aa94c
17:11:59 * oerjan recalls seeing a chess-inspired film on TV once. it ended with nuclear war iirc
17:12:16 <ehird_> HOW ABOUT A NICE GAME OF CHESS?
17:12:18 <ais523> "Many people (even Brian Kernighan?) have said that the worst feature of C is that switches don't break automatically before each case label. This code forms some sort of argument in that debate, but I'm not sure whether it's for or against."
17:12:23 <ehird_> oerjan was referencing that.
17:12:24 <ais523> A famous quote, it's nice to see the original
17:12:54 <ehird_> Seeing people talk about having written C for 10 years, around 10 years before I was born, is eerie.
17:13:06 <ais523> ehird_: just reading pre-C89 C is eerie
17:13:15 <ais523> some of that would have been written before I was born
17:13:21 <ais523> and the code you're talking about is even older than that
17:14:03 <ehird_> > MacOS app that can run on MacOS8 *WILL* run on MacOSX.
17:14:55 <ais523> because Apple don't need to stick to an insane backward-compatibility system to try to convince the rest of the world that all computers really are like that
17:18:16 -!- CakeProphet has quit ("lol").
17:19:58 <ehird_> ais523: how come there aren't any old replies to things like http://groups.google.com/group/comp.os.minix/browse_thread/thread/e3df794a2bce97da/2194d253268b0a1b?#2194d253268b0a1b ?
17:20:09 <ehird_> did people not reply in those days? Or are they just lost from the archive?
17:20:23 <ais523> quite possibly not archived
17:20:33 <ais523> Usenet is not very conducive to archiving, the way it's designed
17:20:48 <ais523> you need to be someone big like Google who's connected to more or less everyone to get the whole thing
17:21:06 <ehird_> I'm pretty sure archiving Linus's message was Deja's work.
17:21:23 <ehird_> Well, depends if it's older than Deja.
17:21:23 <ais523> I'd be surprised if Deja managed to get the whole of every thread
17:21:41 <ais523> besides, the discussion may have moved to whatever the old-fashioned equivalent of comp.sources was
17:21:46 <ais523> when he posted the source on Usenet
17:21:46 <ehird_> ? iirc some guy with vms experience.
17:21:48 <ais523> that used to be common
17:21:50 <ehird_> Why am I not surprised?
17:23:10 * ais523 finds http://mauke.ath.cx/stuff/poly.html on proggit
17:23:14 <ais523> which is actually esolang-related
17:24:15 <ais523> is 0 true for the purposes of ?: in Ruby?
17:24:19 <ais523> that source seems to imply it is
17:24:27 <ehird_> ais523: Only false and nil have falsity in Ruby.
17:24:38 <ehird_> (After all, why is 0 false? It's just another number.)
17:24:39 <ais523> clever way to detect Ruby vs. Perl then
17:24:43 <ais523> in code which is almost the same in both of htem
17:25:20 <ehird_> if you leave http://mauke.ath.cx/stuff/poly.html open for a while
17:25:25 <ehird_> to I'm a javascript-generated HTML page
17:25:37 <ais523> it detects all sorts of other things, too
17:25:42 <ais523> scripts enabled is one
17:25:51 <ais523> but it also detects whether you're using trigraphs, in the C
17:26:25 <ais523> actually, I vaguely wonder how Perl6 knows to run just that code
17:26:29 <ais523> is everything else commented out for it
17:26:34 <ais523> or does it have a program-starts-here line?
17:26:34 <ehird_> mauke is a #haskell and ##C denizen FWIW, he's pretty fun
17:26:43 <ehird_> ais523: Same way as all the programs: clever commenting.
17:26:52 <ehird_> and polyglotty snippets
17:27:06 <ais523> we should go for an esolang-only polyglotting record
17:27:20 <ais523> luckily, there are lots of joke lines which autopolyglot into anyhting
17:27:23 <ehird_> I have to say, the fact that it's a Whitespace program is just beautiful.
17:27:36 <ehird_> Polyglots have been done, but not effing whitespace ones.
17:27:46 <ais523> whitespace is quite good for polyglotting into things, really
17:27:57 <ais523> hmm... it's valid HQ9+, ofc
17:28:04 <ais523> but it could be meaningful valid HQ9+ with a couple of tweaks
17:28:09 <ais523> although it would just say hello world
17:29:09 <ais523> ok, that C99 check is just insane
17:31:06 <ehird_> it's also a valid oklotalk program :-D
17:32:07 <ais523> what does it do in oklotalk?
17:32:19 <ais523> AFAICT, it's a Kimian quine in some versions of INTERCAL
17:32:25 <ehird_> But every string of characters is syntactically valid oklotalk.
17:32:35 <ehird_> And oklotalk has no runtime errors.
17:32:49 <ehird_> So it does _something_, possibly nothing.
17:56:09 <ehird_> think my boouncer is still k-lined?
17:58:40 <ehird_> ais523: blognomic is impossible
17:59:54 <ehird_> wrong channel: it's a protest againt my k-line :-P
17:59:56 <ehird_> and because it's so effing fast
18:05:27 <ehird_> http://unix-tree.huihoo.org/V3/usr/man/man1/chdir.1.html
18:05:33 <ehird_> I am so glad they shortened the name
18:06:57 <oerjan> shortened the name of what?
18:09:45 <ehird_> i found two old bots of mine yesterday/today.
18:09:48 <ehird_> who wants to play with em
18:10:52 <ehird_> everyone loves bots right?
18:12:16 <ehird_> nope, KajirBot and seabot
18:12:28 <ehird_> seabot was in here yesterday: it gave birth to Bracism
18:12:46 <ehird_> so, let's say hello to KAJIRBOT
18:12:58 -!- KajirBot has joined.
18:13:03 <KajirBot> feed, help, kill, ps, q, tell, time
18:13:23 <KajirBot> sorry, i haven't eaten something before. have you got ten black holes?
18:13:32 <KajirBot> sorry, i haven't eaten mushrooms before. have you got ten black holes?
18:13:40 <KajirBot> sorry, i haven't eaten lhc before. have you got ten black holes?
18:13:51 <KajirBot> sorry, i haven't eaten sth before. have you got pizza?
18:14:00 <ehird_> how pointless. but endearing.
18:14:01 <KajirBot> feed, help, kill, ps, q, tell, time
18:14:04 <KajirBot> Right now, it is 2009-01-19, 18:14 GMT
18:14:34 <ehird_> Okay, um, that is pretty much all it does.
18:14:41 <ehird_> .q This is like a real AI.
18:15:03 <ais523> ehird_: that looks to me like a bad elizabot
18:15:13 <fungot> ais523: that's good though if it's going so slowly that i think
18:15:17 <ehird_> ais523: it just adds a ? and swaps I/you :-) and am/are :-)
18:15:19 <ais523> .q that's good though if it's going so slowly that i think
18:15:19 <KajirBot> that's good though if it's going so slowly that you think?
18:15:27 <fungot> ehird_: ( ( out if she does move you know i didn't know that mm th- there's no other circumstances that uh people are not even computer literate they don't even touch the tip of the iceberg when it comes
18:15:40 <ehird_> .q fungot, will you marry me?
18:15:40 <fungot> ehird_: even seen it and have thought nothing maybe their first thought would've been okay there's a helen of troy okay there's a helen of troy okay there's a helen of troy okay there's a bunch of ' em
18:15:41 <fungot> KajirBot: unfortunately i guess you would have a lot to do with
18:15:41 <ais523> ehird_: Kajirbot doesn't respond to its name, though, it seems
18:16:15 <ehird_> there's a way to break this
18:16:27 <ehird_> q = re.sub(re.compile(r' %s ' % a, re.I), ' %s___ ' % b, q)
18:16:27 <ehird_> q = re.sub(re.compile(r' %s ' % b, re.I), ' %s ' % a, q)
18:16:27 <ehird_> q = re.sub(re.compile(r' %s___ ' % b, re.I), ' %s ' % b, q)
18:16:45 <ehird_> Bot review: good code, cute, but lacks features.
18:17:07 -!- seabot has joined.
18:17:15 <ehird_> This is seabot. He is pretty advanced:
18:17:16 <KajirBot> feed, help, kill, ps, q, tell, time
18:17:19 <seabot> karma: karma karma+ karma-
18:17:19 <seabot> meta: load reload unload
18:17:24 <seabot> seabot has a karma of 2
18:17:44 <ehird_> @python if 1 == 1: { print "[broken implementation of] bracism!" }
18:17:44 <seabot> [broken implementation of] bracism!
18:17:52 <seabot> <bound method MagicGlobals.__import__ of <a big brother>>
18:17:55 <ehird_> @python __import__('sy')
18:17:58 <ehird_> @python __import__('sys')
18:18:23 <seabot> <bound method MagicGlobals.__builtins__ of <a big brother>>
18:18:25 <ehird_> @python __builtins__()
18:18:26 <seabot> NameError: global name 'builtins' is not defined
18:18:31 <seabot> NameError: name 'builtins' is not defined
18:18:40 <seabot> karma: karma karma+ karma-
18:18:40 <seabot> meta: load reload unload
18:19:53 <seabot> declare foo as pointer to function returning void
18:20:02 <ais523> it should manage it without the variable names
18:20:19 <ehird_> because cdecl(1) doesn't
18:20:24 <ais523> @cdecl int getchar(), c[16], i;
18:20:44 <AnMaster> I mean I don't find C types very hard unless extreme
18:20:47 <ehird_> the name seabot cames from the fact that I made it for ##free-c and it was originally written in C
18:20:55 <ehird_> AnMaster: meh, bot features are fluff
18:20:58 <ehird_> might as well pile them up
18:21:04 <AnMaster> like function pointers to function pointers that take arrays of function pointers or whatever
18:21:27 <seabot> AnMaster has a karma of 0
18:21:45 <seabot> oklopol's karma raised to 1.
18:21:46 <seabot> oklopol's karma raised to 2.
18:21:47 <seabot> oklopol's karma raised to 3.
18:21:47 <seabot> oklopol's karma raised to 4.
18:21:47 <seabot> oklopol's karma raised to 5.
18:21:50 <seabot> oklopol's karma raised to 6.
18:21:52 <seabot> oklopol's karma raised to 7.
18:21:54 <seabot> oklopol's karma raised to 8.
18:21:56 <seabot> AnMaster's karma raised to 1.
18:21:57 <seabot> oklopol's karma raised to 9.
18:21:59 <seabot> oklopol's karma raised to 10.
18:22:02 <seabot> oklopol's karma raised to 11.
18:22:05 <seabot> oklopol's karma raised to 12.
18:22:07 <seabot> oklopol's karma raised to 13.
18:22:14 <ehird_> you cant change your own karma!!
18:22:17 <seabot> You can't change your own karma, silly.
18:22:19 <ehird_> it specifically forbids it
18:22:25 <seabot> You can't change your own karma, silly.
18:22:47 <ehird_> but it always worked for me
18:22:51 <seabot> egobot has a karma of -1
18:22:58 <seabot> AnMaster's karma raised to 2.
18:23:18 <AnMaster> ehird_, do you lower case one and then compare or something?
18:23:18 <ehird_> if norm == msg.sender.nick:
18:23:18 <ehird_> msg.respond("You can't change your own karma, silly.")
18:23:21 <seabot> AnMaster's karma raised to 3.
18:23:21 <seabot> AnMaster's karma raised to 4.
18:23:21 <seabot> AnMaster's karma raised to 5.
18:23:25 -!- seabot has quit (Remote closed the connection).
18:23:30 <ais523> ehird_: easy to get round it, anyway
18:23:36 -!- seabot has joined.
18:23:38 <seabot> AnMaster's karma lowered to 4.
18:23:38 <seabot> AnMaster's karma lowered to 3.
18:23:39 <seabot> AnMaster's karma lowered to 2.
18:23:41 <seabot> AnMaster's karma lowered to 1.
18:23:41 <ehird_> (just balancing it out sry)
18:23:49 <seabot> AnMaster's karma raised to 2.
18:23:54 <ais523> ^bf ,[.,]!@karma+ ais523
18:23:55 <seabot> ais523's karma raised to 1.
18:24:00 <seabot> ais523's karma lowered to 0.
18:24:03 <ais523> ehird_: you should probably block bots
18:24:07 <seabot> ais523's karma raised to 1.
18:24:29 -!- ehird_ has changed nick to ehird.
18:24:30 <seabot> seabot's karma raised to 3.
18:24:43 <seabot> Unloaded the karma plugin.
18:24:49 <AnMaster> ehird, about that kline, too many connections from the same host could cause it
18:25:03 <fungot> ehird: ( ( noise yeah)) the one that's not conspicuous if they're ah laughter you know laughter stuff and ' cause she's packing))
18:25:03 <fungot> seabot: ( ( mm mhm mhm)) especially in the afternoon then it would come on fnord laughter laughter mm noise noise))
18:25:22 <ehird> @python while True: { print "lol
18:25:22 <seabot> SyntaxError: EOL while scanning string literal (<irc>, line 2)
18:25:26 <ehird> @python while True: { print "lol" }
18:25:26 -!- seabot has quit (Excess Flood).
18:25:45 -!- seabot has joined.
18:25:57 <seabot> karma: karma karma+ karma-
18:25:57 <seabot> meta: load reload unload
18:26:01 <seabot> Unloaded the cdecl plugin.
18:26:03 <seabot> Unloaded the help plugin.
18:26:05 <seabot> Unloaded the karma plugin.
18:26:07 <seabot> Unloaded the python plugin.
18:26:09 <seabot> Unloaded the meta plugin.
18:26:14 <ehird> Now it does NOTHING :-D
18:26:41 -!- seabot has quit (Remote closed the connection).
18:26:47 <ehird> Anyway, enough seabot.
18:26:51 -!- seabot has joined.
18:26:53 <ehird> Let me find another bot for us to enjoy!
18:27:03 <ehird> I have sooo many...
18:27:46 -!- olsner has joined.
18:27:51 <ehird> Ooh, old Endeavour./
18:28:00 <ehird> TypeError: __init__() got an unexpected keyword argument 'conn'
18:29:02 <ehird> Let's try that again.
18:29:08 -!- Endeavour has joined.
18:29:15 -!- Endeavour has quit (Remote closed the connection).
18:30:39 <ehird> bot.seen[input.nick] = (datetime.now(), input.target, input.text)
18:30:41 <ehird> is the failing line
18:30:48 <ehird> String or Integer object expected for key, unicode found
18:30:53 <ehird> just need to str() i guess
18:32:16 -!- Endeavour has joined.
18:32:22 -!- Endeavour has quit (Remote closed the connection).
18:34:29 -!- ais523 has quit (Remote closed the connection).
18:34:52 <AnMaster> I mean I would have thought maybe 2.3 or 2.2
18:35:11 <ehird> It was for this channel. :-P
18:35:20 <ehird> I only arrived here 2007 and I htink this bot is early-2008.
18:35:36 <ehird> AnMaster: python 2.4 is circa 2004
18:35:44 <ehird> So, 2.3 would have been 2003 or so
18:35:48 <ehird> 2.2 would have been about 2000
18:36:16 <ehird> 2.5 came out in 2006.
18:36:23 <ehird> So 2.4 only lasted 2 years or so.
18:36:52 <AnMaster> so it only lasted a single year?
18:37:04 <ehird> Well, I think it came out in 2002 :P
18:37:09 <ehird> I was just giving rough years.
18:37:20 <AnMaster> every second year new minor release?
18:37:32 <ehird> Seems about right.
18:37:47 <ehird> AnMaster: they do quite a few really-minor (toddler?) releases inbetween
18:38:10 <AnMaster> ehird, "micro" I think is the real name, though "toddler" is funnier
18:38:28 <AnMaster> btw postgresql call the second digit "major" and the third "minor"
18:38:33 <AnMaster> I have no idea what they call the first
18:38:37 <ehird> In this line, I propose a new term for "early adopter": "pedophile".
18:39:15 <ehird> Well, those early adopters are a dirty bunch.
18:39:38 * oerjan recalls Paul Erdos called children "epsilons"
18:39:42 <AnMaster> that would fit, at least for the period around 15 years
18:40:38 <ehird> Well I give up on endeavour.
18:40:42 <ehird> Let's find another bt.
18:40:50 <oerjan> endeavours are useless
18:40:56 <AnMaster> ehird, how many do you have in total
18:41:02 <ehird> AnMaster: like 50 :-P
18:41:03 <ehird> # bastard: fuck goddamn
18:41:03 <ehird> # released into the public domain by tusho, 2008
18:41:07 <ehird> Best. Comment header. Ever.
18:41:16 <ehird> I think I recall the discussion surrounding it.
18:41:24 <ehird> I think we were trying to come up with the most horrible IRC client ever.
18:41:34 <ehird> And I decided to run sed over netcat.
18:42:29 <oerjan> so, was it worse than telnet? :D
18:42:39 <ehird> oerjan: it's only 1 lines long, I never got around to it :P
18:43:36 <ehird> _10 = PRINT("HELLO, WORLD!"), GOTO(10)
18:43:40 <ehird> Valid Python code.
18:44:15 <ehird> http://pastie.org/364879
18:44:53 <AnMaster> ehird, that one doesn't work in the general case does it?
18:45:26 <AnMaster> could you have more than one label there
18:45:42 <AnMaster> to actually make control flow with it
18:45:44 <ehird> _10 = PRINT("HELLO, "), GOTO(20)
18:45:48 <ehird> _20 = PRINT("WORLD!"), GOTO(10)
18:45:58 <ehird> ctx = globals()['_'+str(self.i)]
18:46:13 <ehird> AnMaster: no, but you could make something like CALL(func, 1, 2)
18:46:34 <AnMaster> also am I right this works through some sort of reflection?
18:46:43 <ehird> ctx = globals()['_'+str(self.i)]
18:47:34 <AnMaster> what does the syntax _10 = classname(...), otherclass(...) do in python?
18:47:54 <ehird> a, b is (a,b), a tuple (like a list but immutable)
18:48:00 <ehird> _10 is just a random variable name
18:48:03 <ehird> that looks like a line number
18:48:36 <comex> even better on python 3 where exec is a function
18:48:49 <ehird> that makes no difference
18:48:57 <comex> well, you could lowercase it if you want in that case
18:49:25 <ehird> This botte looks like it works
18:49:33 <ehird> Specifically, botte.old/
18:49:39 <ehird> (I have 50 bots named botte, none of which work)
18:49:51 <ehird> ./lib/botte/client.rb:24:in `run': undefined method `feed' for #<Botte::Connection:0x559c4> (NoMethodError)
18:49:53 <AnMaster> ehird, you keep all bots in under one directory?
18:49:53 <comex> sed over netcat? lovely
18:50:10 <ehird> AnMaster: i keep everything in ~/Code/<name>/
18:50:24 <ehird> it's a freaking huge dir
18:50:41 <comex> I keep things organized by subject
18:50:52 <comex> $ ls /usr/src/b | wc -l
18:50:58 <AnMaster> comex, I keep them by size since my ~/src is too small
18:51:24 <comex> /usr/src/b is my "wii stuff" directory
18:51:25 <ehird> AnMaster: i doubt it
18:51:32 <ehird> how can you write 135 programs about /b/
18:51:45 <comex> (did that work, because konversation fucked up)
18:51:48 <comex> [13:51] <-> #esoteric> /usr/src/b is my "wii stuff" directory
18:52:07 <comex> also, I daresay it wouldn't be very hard
18:53:10 <AnMaster> you broke it's format string somehow?
18:53:48 <ehird> konversation does that
18:54:24 <comex> I typed /msg #esoteric
18:54:33 <ehird> /* "offensive programming" */
18:54:33 <ehird> printf("You SUCK! Go to HELL!\n");
18:54:37 <ehird> -- ~/Code/c-cont/cont.c
18:54:54 <comex> also, ehird: with konversation for normal channel messages I just get a standard layout
18:54:55 <ehird> (yes, real continuations for C)
18:55:06 <AnMaster> ehird, also. pastebin that code
18:55:08 <ehird> void restore_context(void) {
18:55:08 <ehird> cont_t *old = gcont;
18:55:08 <ehird> gcont = old->next;
18:55:10 <ehird> exec_context(old);
18:55:35 <ehird> Not strictly my code, I'm afraid: it was someone else's toy that I cleaned up the code of (it didn't compile)
18:55:42 <ehird> I wrote programs actually using it.
18:55:45 <ehird> For example, a factor(1).
18:55:53 <ehird> It was basically prolog-style.
18:56:00 <AnMaster> if possible I would very much like to see it
18:56:05 <ehird> TRY(x) -- Returns x, generally.
18:56:14 <ehird> If after a TRY, a FAIL; happens somewhere
18:56:20 <ehird> then we backup to the next TRY, and keep executing after it
18:56:24 <ehird> until the try points are exhausted
18:56:26 <ehird> at which point we fail
18:56:38 <ehird> AnMaster: the actual continuation library was stack smashing
18:56:47 <ehird> The API definition:
18:56:47 <ehird> #define FAIL restore_context()
18:56:47 <ehird> #define TRY(x) if (!save_context()) return x
18:57:00 <ehird> You also had to have a main looking like this:
18:57:02 <ehird> int main(int argc, char **argv)
18:57:03 <ehird> { cont_main(main_, argc, argv);
18:57:13 <ehird> where main_ is your real main function
18:57:17 <ehird> because it needs to grab a stack pointer
18:57:24 <ehird> so then it can't return while the program goes
18:57:38 <ehird> comex: "Stack smashing isn't portable"
18:57:43 <AnMaster> ehird, there are some tricks for getting stack pointer anyway. Boehm-GC does such stuff
18:57:47 <ehird> but it works on just about everything
18:57:56 <ehird> AnMaster: right, but you need to get a base stack pointer
18:58:05 <AnMaster> ehird, err, let me see if stack smashing works here :D
18:58:23 <AnMaster> or upload a project with it or so
18:58:27 <ehird> comex: it doesn't use asm.
18:58:35 <AnMaster> comex, not very odd, the only thing I can think of where it would break is SPARC
18:58:38 <ehird> AnMaster: it actually uses longjmp
18:58:42 <comex> yeah, but the stack can go different directions and shit
18:58:51 <ehird> AnMaster: and here's the oh god part
18:58:56 <ehird> it messes with the jmp_buf
18:59:01 <ehird> comex: you can detect that, the code doesn't but you can
18:59:20 <ehird> portable, n. works on shit
18:59:40 <AnMaster> ehird, jmp_buf format is "implementation defined", I'm pretty sure about that
18:59:51 <ehird> it doesn't actually mess with the jmp_buf
19:00:02 <ehird> it just uses the jmp_buf to restore the registers
19:00:07 <ehird> with setjmp/longjmp
19:00:21 <ehird> first it mangles the stack to restore it
19:00:24 <ehird> then it does a longjmp
19:00:29 <ehird> since the longjmp just contains the position in the stack
19:00:34 <ehird> it jumps to the right place on the newly-mangled stack
19:00:36 <ehird> and returns the registers
19:00:46 <ehird> so it makes longjmp do its bidding, without mangling the jmp_buf :-D
19:00:53 -!- GregorR has quit (Remote closed the connection).
19:00:55 <ehird> gotta find the original author of this code
19:00:58 <AnMaster> ehird, this would fail on SPARC I'm pretty sure
19:01:26 <AnMaster> ehird, I can't imagine this working with SPARC's moving register window thingy
19:01:43 <AnMaster> sadly I don't have a sparc to test on
19:02:18 <ehird> First, here's factor.c
19:02:27 <ehird> AnMaster: http://pastie.org/private/rm5gexu9dbovkfi3jch4g
19:03:08 <ehird> Note: rather inefficient :-P
19:03:15 <ehird> Specifically, in that it's copying the stack each integer it tries.
19:03:40 <ehird> AnMaster: yes, that's just the demo program
19:04:14 <AnMaster> that wouldn't be me however ;P
19:05:06 <ehird> AnMaster: http://pastie.org/private/yaoobsjszqr9ufddh9znfg
19:05:13 <AnMaster> ehird, idea: use this and boehm-gc at the same time, watch star collide
19:05:23 <ehird> source is mostly the other guyses, but with my cleanup and stuff
19:05:28 <ehird> examples are all mine
19:06:35 <ehird> AnMaster: fibs.c doesn't actually use it for prolog-style backtracking OFC
19:06:39 <ehird> it just uses it as a continuation
19:06:55 <ehird> generally you want multiple continuations that you can resume at your will and pass around, ofc
19:07:03 <ehird> left as an excersize to the reader :-P
19:07:17 <ehird> printf("fib(%i) = %i\n", i++, fib());
19:07:17 <ehird> if (i <= 10) FAIL;
19:07:25 <AnMaster> I'm splitting files atm, let see
19:07:34 <ehird> is possibly one of the most perverse behaviors of c code ever witnessed
19:08:14 <ehird> AnMaster: running those programs through cpp may help
19:08:53 <ehird> Note that I think getcontext/setcontext of posix ucontext may actaully do exactly what this code does.
19:09:06 * ehird runs one of these programs in gdb for shits 'n giggles
19:09:37 * ehird step step step step
19:09:53 <AnMaster> hm it works work -fstack-protector-all for amb at least
19:10:07 <ehird> Ha. Your stack protector is foiled!
19:10:18 <MizardX> Heh. I found python 1.5.2 on one of my school's servers. :)
19:10:21 <AnMaster> ehird, it is for buffer overwriting on normal return
19:10:33 <ehird> AnMaster: It's not a long jump.
19:10:37 <ehird> It actually modifies the memory on the stack.
19:10:40 <ehird> It just copies it in place.
19:10:41 -!- KingOfKarlsruhe has joined.
19:10:47 <ehird> the longjmp is only needed for restoring registers
19:10:55 <ehird> the stack smashing would work just as well without of it
19:11:15 <AnMaster> ehird, yes and there is no way stack smash protection can work for that case
19:11:20 <AnMaster> since it doesn't return normally
19:11:35 <AnMaster> ehird, oh btw, does it work on sparc?
19:11:48 <AnMaster> ==17012== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 4 from 1)
19:12:02 <ehird> The elk scheme implementation does continuations in a similar way, I think it has its own special setjmp/longjmp implementation in asm
19:12:04 <AnMaster> all of them are f*ing valgrind clean!
19:12:51 <AnMaster> ==17022== 4,560 (2,240 direct, 2,320 indirect) bytes in 10 blocks are definitely lost in loss record 3 of 4
19:12:52 <AnMaster> ==17022== at 0x4A0743E: malloc (vg_replace_malloc.c:207)
19:12:52 <AnMaster> ==17022== by 0x4008AE: get_context (in /home/arvid/irc/c-cont/fibs)
19:12:52 <AnMaster> ==17022== by 0x40091B: save_context (in /home/arvid/irc/c-cont/fibs)
19:12:56 <ehird> AnMaster: I am dubious as to valgrind's ability to track memory over stack smashing.
19:13:00 <ehird> Perhaps it's messing up.
19:13:09 <AnMaster> ehird, yes I agree, but that is a heap allocation
19:13:14 <ehird> hmm, you're right.
19:13:15 <ehird> it never calls free()
19:13:18 <ehird> but it does malloc stuff
19:13:31 <ehird> so that'll be a problem if you do like 50 thousand continuation sets :-P
19:14:06 <AnMaster> ehird, yes, to support enterprise grade applications it need to avoid leaking memory
19:14:27 <ehird> wow, oklotalk is so pretty.
19:14:41 <ehird> it uses the § symbol.
19:14:52 <AnMaster> ehird, btw I saw Try/Catch in C today
19:15:02 <ehird> It's just a setjmp/longjmp.
19:15:09 <ehird> it's a legitimate thing
19:15:17 <AnMaster> and that makes me even more sad
19:15:30 <AnMaster> ehird, btw: http://rafb.net/p/lwMx7W92.html
19:15:52 <ehird> It's a bit bloated :-P
19:16:50 <ehird> That's because it has to come after a try.
19:17:05 <ehird> you have a try, then a catch
19:17:25 <AnMaster> because it breaks code folding in this editor :,(
19:18:18 <AnMaster> ehird, you laughed at something I said? YES!
19:19:05 <AnMaster> ehird, btw have you seen the build systems (yes plural) of libpng?
19:20:00 <AnMaster> there are 1) lots of makfiles like makefile.gcc, makfile.vms and what not, around 40 or so I think, 2) autoconf 3) cmake. All in parallel
19:20:26 <AnMaster> sure 2 at once when you are changing, but 3 at once... from such different periods
19:20:59 * ehird is a fan of the "just make it, if there's a system issue change the vars in the makefile" approach
19:22:22 <AnMaster> ehird, well that is what optipng uses, and you need to change in several makefiles, since it uses one for the main program, one for the included and modified libpng, one for (again modified) zlib, and one for some "pngxtern"
19:22:33 <AnMaster> and I needed to debug something, so 4 places to add -g, compile
19:22:39 <AnMaster> find out it passes -s in LDFLAGS
19:22:41 <ehird> then that is not my system :-P
19:22:49 <ehird> then that is not my system :-P
19:22:57 <AnMaster> find that make clean does not work as advertised
19:23:17 <AnMaster> I mean, autoconf would be a step up
19:23:30 <ehird> Note that you can do system detection in plain make.
19:23:39 <ehird> with things like uname :_P
19:24:11 <ehird> nmake is almost gnu make, IIRC
19:24:20 <ehird> admittedly no uname :-)
19:24:24 <ehird> just run the windows specific command and check that
19:24:25 <AnMaster> ehird, err no it is microsoft make with a totally different syntax
19:24:33 <ehird> no, iirc, you're wrong.
19:24:49 <AnMaster> ehird, well I might be, it was years since I last had to deal with it
19:25:14 <AnMaster> ehird, and I don't have any windows around
19:25:15 <ehird> cool, my old DDoSing program
19:25:41 <AnMaster> wtf... dev-dotnet/gluezilla? (something depended on it. trying to figure out what the heck it is
19:26:06 <ehird> this ddos program was a random fuzz checker too :P
19:26:20 <ehird> it catted /dev/urandom to nc massively parallely
19:26:37 <AnMaster> WTF. What happened to the package dep graph
19:27:05 <AnMaster> first time gentoo package manager broke for me ever. And that is since 2004
19:27:16 <AnMaster> (that is when I started using gentoo)
19:28:30 <AnMaster> http://rafb.net/p/PnQjW524.html
19:28:38 <AnMaster> I have no clue what the hell happened
19:29:20 <AnMaster> well the mono one was easy to fix
19:37:28 -!- MigoMipo has joined.
19:42:22 -!- Corun has joined.
19:46:51 <MizardX> Heh. There's a module called tabnanny in Python :)
19:53:01 -!- sebbu2 has joined.
19:53:35 -!- sebbu has quit (Read error: 60 (Operation timed out)).
19:53:41 -!- sebbu2 has changed nick to sebbu.
19:54:52 <AnMaster> ehird, is there something like "perldoc" but for python?
20:07:07 -!- kar8nga has joined.
20:11:27 -!- KingOfKarlsruhe has quit (Remote closed the connection).
20:38:13 -!- kar8nga has quit (Read error: 110 (Connection timed out)).
20:42:52 -!- Corun has quit ("This computer has gone to sleep").
21:03:34 -!- kar8nga has joined.
21:10:43 -!- GregorR has joined.
21:11:07 -!- GregorR has set topic: This topic unintentionally left unblank..
21:36:53 -!- MigoMipo has quit ("QuitIRCException: MigoMipo out of IRC").
21:39:53 -!- Corun has joined.
22:01:54 <ehird> http://blog.uncool.in/2009/01/19/computer-science-fail-higher-education-in-india/
22:01:58 <ehird> … Linux is basically a DOS based OS.
22:02:04 <ehird> A compiler is a software that converts code written in a particular programming language to machine code. To compile a program, you must hit ALT+F9.
22:02:08 <ehird> The first high level language was Ada, also known as Smalltalk
22:04:23 <ehird> Additional lulz: http://www.reddit.com/r/programming/comments/7qvdj/the_first_high_level_programming_language_was_ada/
22:06:41 <oklopol> A compiler is a software that converts code written in a particular programming language to machine code. To compile a program, you must hit ALT+F9. <<< xD
22:07:42 <oklopol> "a proof is a sequence of easily verifiable steps, in formal mathematics axioms or rules derived from them... to prove you use a pencil and you write "->"'s that mean "follows from""
22:08:03 <oklopol> well okay that had a few errors, but joke should be correct anyway.
22:09:22 <psygnisfive> so, oklopol, i now have a semi-workable version of my language :)
22:09:37 <oklopol> cooooool. i have a few new books \o/
22:09:54 <oklopol> psygnisfive: is it the graph thing
22:09:56 -!- ehird has set topic: how much could a if a could ?.
22:09:56 <psygnisfive> shall i bring my bot in here so you can poke at it? :P
22:10:08 <oklopol> of course, i should go read soon.
22:10:11 <psygnisfive> the graph thing is my linguistics project :p
22:10:41 -!- AntiGravityBot has joined.
22:11:10 -!- AntiGravityBot has quit (Remote closed the connection).
22:11:21 -!- AntiGravityBot has joined.
22:11:34 <ehird> you restarted it to change the ident?
22:12:28 <psygnisfive> it sort of works for what i want. i need to improve it tho. its just prototyped right now.
22:12:33 <oerjan> STOP BEING NEUROTIC OR I'LL SPANK YOU. OH WAIT.
22:12:38 <ehird> psygnisfive: AntiGravityBot.
22:12:40 <ehird> how do you use it.
22:12:44 <ehird> or does it just sit there.
22:13:00 <ehird> agbot: crash fucker
22:13:18 <ehird> agbot: (1 / 0) + 2
22:13:39 <psygnisfive> *** is its current way of saying "this is not possible"
22:13:41 -!- kar8nga has quit (Read error: 60 (Operation timed out)).
22:14:00 <ehird> psygnisfive: um, Infinity+1 is very well defined
22:14:31 <psygnisfive> Infinity itself is not defined in the system. its relying on the ruby's math facilities to do math, see
22:14:38 <oerjan> AntiGravityBot: SUPPORT TAB COMPLETION YOU INFIDEL!
22:14:44 <psygnisfive> so it does 1 / 0 and ruby kicks back Infinity
22:14:59 <ehird> psygnisfive: now make its prefix its actual nick
22:15:03 <psygnisfive> and this gets converted back into a string
22:15:12 -!- AntiGravityBot has quit (Remote closed the connection).
22:15:19 -!- agbot has joined.
22:15:20 <ehird> what is interesting about it
22:15:26 <ehird> i'm not seeing anything more than basic arithmetic atm
22:15:40 <agbot> defined: fac 0 = 1
22:15:52 <ehird> you can define functions
22:15:52 <agbot> defined: fac N = N*(fac (N-1))
22:15:59 <ehird> when does it get interesting?
22:16:09 <ehird> agbot: fac 10000000
22:16:23 <ehird> and it'll run until we get bored.
22:16:31 -!- agbot has quit (Remote closed the connection).
22:16:41 <ehird> so where's the interesting part
22:16:46 -!- agbot has joined.
22:16:57 <oklopol> psygnisfive: now is there any of that nondeterministic stuff?
22:17:06 <agbot> defined: X my== X = true
22:17:14 <oklopol> ehird: when was the last time you made anything interesting? :P
22:17:17 <ehird> that is ugly syntax.
22:17:19 <agbot> defined: _ my== _ = false
22:17:21 <ehird> oklopol: all the time :P
22:17:23 <ehird> I just never release it.
22:17:57 <oklopol> ehird: if you don't finish and release it, it never existed.
22:18:00 <psygnisfive> but the point is that its using full blown unification based pattern matching on its rules
22:18:04 <ehird> where's the interesting part psygnisfive
22:18:17 <ehird> oklopol: like oklotalk
22:18:23 <psygnisfive> you can define things like lists ground up, in a sense.
22:18:32 <ehird> psygnisfive: you mean like in any language ever?
22:18:32 <agbot> defined: first nil = error
22:18:38 <ehird> not impressed yet.
22:18:46 <psygnisfive> im not trying to impress you, funnily enough
22:18:47 <oklopol> the point was i was just referring to my own incapability to finish a project after realizing how to finish it.
22:19:04 <ehird> psygnisfive: i was assuming it was esoteric in some kind of way.
22:19:17 <ehird> you know, since you were talking about the lang in #esoteric. and brought the bot here
22:19:22 <oklopol> knew you couldn't just play along, people lose some sense of spotting sarcasm when you attack them
22:19:25 <psygnisfive> its esoteric in the sense that its thue with syntactic variables.
22:19:26 <oerjan> psygnisfive: that's impossible anyhow :D
22:19:50 <psygnisfive> so if thue as eso then this is mildly less so :P
22:19:50 <ehird> oerjan: your puns are pretty impressive
22:20:09 <agbot> defined: a X = a X
22:20:17 -!- agbot has quit (Remote closed the connection).
22:20:23 <psygnisfive> thanks, you sent it into an infinite loop :P
22:20:26 -!- agbot has joined.
22:20:32 <psygnisfive> thats another thing im going to change in the next version
22:20:33 <ehird> agbot: ¡¶§¶åß®†∞¶ÂfiflÂÍfl
22:21:21 <psygnisfive> would it help if i explained the language? :P
22:21:43 <ehird> that generally helps.
22:21:46 <adimit> I had fun with that thing today already
22:22:45 <psygnisfive> ()[]{} are all individual symbols any time they appear. () is used to group things into trees in the text -- the interp never sees parens themselves
22:22:45 <oerjan> psygnisfive: if it's thue-based shouldn't the order of equations be irrelevant?
22:23:06 <psygnisfive> anything starting with a capital letter is a syntactic variable
22:23:51 <psygnisfive> oh, in defining things? no. because variables + pattern matching introduces certain issues
22:24:04 <ehird> psygnisfive: can you make it trace
22:24:09 <ehird> thue is only fun if you see every step
22:24:30 <psygnisfive> also, non-alphanumerics produce separate symbols. so a+b is a, +, c. a++b is a, ++, b, etc.
22:24:48 <psygnisfive> and each _ is a dummy variable that uniformly matches anything but doesnt unify
22:25:06 <psygnisfive> ehird: im going to do those things in the next version. its very primitive right now.
22:25:17 <ehird> adding tracing cannot possibly be hard.
22:25:33 <ehird> you have a step function, and a step-until-constant function, so just add an irc output in the step
22:25:45 <psygnisfive> but the way i evaluate it currently is using recursive evaluation, as opposed to iterative.
22:25:59 <psygnisfive> the next version will be properly iterative so itll work better.
22:26:10 <ehird> ok, I'll come back in 5 years
22:26:34 <ehird> it takes you two weeks to rewrite an interpreter for that?
22:26:38 <psygnisfive> schools going to start and i have stuff to do before then. i only worked on this yesterday because i wanted to experiment
22:26:51 <psygnisfive> no no writing the interpreter isnt what takes time dude
22:26:51 <ehird> sheesh, gimme the code and I'll add a trace
22:27:10 <psygnisfive> no, its horrible code. and you dont understand the garbage i put into it. and its not even close to working properly
22:27:32 <psygnisfive> when its more mature ill start distributing code.
22:27:33 <ehird> I've patched oklopol's awful code before.
22:27:40 <ehird> There is absolutely no way yours is worse.
22:28:04 <psygnisfive> ehird: im sure you have. and im sure mine could easily be worse. but im self-conscious about my code.
22:28:14 <ehird> oklopol: oklotalk-- or something I think
22:28:36 <oklopol> oklotalk-- is quite good code on a conceptual level.
22:28:42 <ehird> psygnisfive: well, I'd play with it if it traced.
22:28:44 <oklopol> of course, it's not very pretty
22:28:47 <ehird> oklopol: yeah. on a conceptual level ::::P
22:28:52 <ehird> hey oklopol when do we get oklotalk
22:29:04 <psygnisfive> ehird: give me a little bit to do that and you can play all you want.
22:29:15 <psygnisfive> right now i have to go back to working on my database project.
22:29:22 <oklopol> i'm trying to get myself to add at least a few hours of coding to my weeks, it's simply dropped out with all the university shit
22:29:33 <psygnisfive> i have to build this db system, analyze the data, and then also do some work on my ling project
22:29:39 <oerjan> oklotalk will be finished in _good_ time before duke nukem forever, i'm sure
22:29:46 <psygnisfive> cause ive slacked a bit this past month :p
22:29:50 <oklopol> ehird: oklotalk will probably not be my next language to complete.
22:30:03 <ehird> oklopol: yeah but if you did oklotalk the other langs could be written in oklotalk.
22:30:31 <oklopol> at least clue and a simple version of muture should probably appear before it
22:30:55 <psygnisfive> oh also, the interp is running inside textmate, which means its probably slow, so infinite loops are painful on my system.
22:31:04 <oklopol> ehird: true. if i made all of it, then probably yes. also that would be insanely cool.
22:31:41 <ehird> oklopol: then you could just, like, write oklotalk in oklotalk
22:31:48 <ehird> bootstrapping? who gives a fuckshit
22:31:52 <ehird> I run programs in my mind
22:32:43 <ehird> yes. wells are holes with water.
22:37:56 <ehird> < Prodego> yes, and you really shouldn't be /on/ the network while klined
22:38:11 -!- ehird has quit ("leaving").
22:39:42 <oklopol> i have to leave, 00:37 and i haven't gotten pretty much anything done. irc is so fucking addictive.
22:40:27 -!- olsner has quit (Remote closed the connection).
22:44:49 -!- ehird has joined.
22:45:03 <ehird> Freenode are hostile, incompetent fucks failing to run a shitty network.
22:45:21 -!- sriracha has joined.
22:45:29 <oerjan> are you really supposed to be here? ;D
22:46:40 <ehird> No, being here is against freenode policy at the moment -- and I don't give a shit because it's the fault of a shitty auto-Kliner written by the incompetent fucks.
22:46:46 <ehird> sriracha: disregard me.
22:46:51 * oerjan is actually having to remind himself how unimportant this is, otherwise he would be angry on ehird's behalf
22:47:12 <ehird> sriracha: not much at the moment, collectively, it seems
22:47:17 <ehird> not that I can speak on behalf of this channel.
22:47:24 <ehird> Although that would be neat. If I could.
22:47:31 <ehird> I'm scaring the newbie aren't I. Oh dear.
22:48:01 <ehird> Okay I'll pass this on to oerjan :P
22:48:44 <ehird> Well, sriracha looks new to me.
22:48:57 <oerjan> fungot, say hello to our newbie
22:48:57 <fungot> oerjan: okay well we can we walk pretty much everywhere so it was really
22:49:19 <fungot> Available: agora alice darwin discworld europarl ff7 fisher* ic irc lovecraft pa speeches ss wp
22:49:21 <fungot> Selected style: irc (IRC logs of freenode/#esoteric, freenode/#scheme and ircnet/#douglasadams)
22:49:26 <ehird> fungot: be slightly more coherent
22:49:26 <fungot> ehird: i don't read much of cll lately :) hot showers seem so much better :)
22:49:33 <fungot> ehird: now calamari has set up a poll about the most useless key, sysrq is currently tied for the lead, anyway? who needs to learn how to write it
22:49:43 <ehird> sriracha: Have you sacrificed the obligatory amount of goats yet?
22:50:09 <sriracha> i'm more of a sacrificing kittens and puppies type of person...
22:50:49 <ehird> The cuter the better!
22:51:09 <sriracha> wow...what did i get myself into
22:51:12 <oerjan> wait, is this one of those actual magick guys we sometimes get when our topic is misleading?
22:51:24 <ehird> sriracha: what brings you here?
22:51:36 <sriracha> i was actually trying to figure out how to use IRC
22:51:51 <ehird> Well, you've come to the right place! Sort of. Kinda. :-)
22:52:16 <ehird> We're actually about esoteric programming languages. (How boring, right? :|)
22:52:38 -!- ehird has set topic: LGOS.
22:52:39 -!- ehird has set topic: LOGS.
22:52:46 <sriracha> don't know much about programming
22:52:58 <AnMaster> I should make a bot that screams that if someone edits topic and the logs are missing
22:53:04 <ehird> sriracha: Neither do we, that's why we're here (ok, that's a bad joke :-P)
22:53:08 <adimit> sriracha: here is the place to learn it.
22:53:18 <ehird> adimit: um that might be a bad choice of place :D
22:53:34 <adimit> why, I learned bass on a six-string fretless...
22:53:46 <sriracha> whoa...how'd you guys send a message to me directly like that?
22:53:51 <AnMaster> <ehird> fungot: oic <-- what did cll mean?
22:53:51 <kerlo> %eval (The logs are missing!)
22:53:52 <sriracha> or better put...what's the command?
22:53:53 <fungot> AnMaster: ok what it was when i first saw it i knew it once but must not have been merged and info on how too view it.
22:53:59 <kerlo> That was pretty useless.
22:54:06 <ehird> /msg person message.
22:54:12 <ehird> If you want a new window for them, /query person.
22:54:54 -!- oerjan has set topic: Logs: http://tunes.org/~nef/esoteric.
22:55:16 <ehird> um, he's a newbie.
22:55:20 <ehird> stop being elitist.
22:55:20 <oerjan> AnMaster: well he (or maybe she) said that
22:55:43 <ehird> oerjan: sneaky topic
22:55:43 <AnMaster> ehird, hey you are like that to me when it comes to some stuff
22:56:06 <ehird> oerjan: it's http://tunes.org/~nef/logs/esoteric
22:56:21 -!- oerjan has set topic: Logs: http://tunes.org/~nef/logs/esoteric.
22:57:00 <fizzie> AnMaster: I think CLL was comp.lang.lisp.
22:57:21 <ehird> say hi to the person who randomly came in here when trying to figure out how to use irc!
22:57:28 -!- BeholdMyGlory has joined.
22:57:41 <fizzie> Hi to anyone who's hi-able, although I'll be gone in half an hour or so.
22:58:00 <ehird> who isn't hi-able?
22:58:07 <sriracha> i'm assuming you guys more or less know each other?
22:58:13 <AnMaster> ehird, well... there is also #,0 pretty common to get there by mistake
22:58:28 <oerjan> sriracha: for a certain value of "know"
22:58:38 <ehird> sriracha: not really
22:58:40 <oerjan> i've never met any of the others in person
22:58:43 <fizzie> oerjan: You mean the biblical sense of "know", I guess?
22:58:55 <ehird> but there's not many people in here so we know pretty much all the non-idlers.
22:59:02 <ehird> fungot is a bot by the way.
22:59:02 <fungot> ehird: sure, tomorrow. i thought the wrong way.
22:59:13 <AnMaster> ehird, have you tried the channel #2,000? Very newbie friendly I heard
22:59:15 <ehird> [a computer program that sits on IRC.]
22:59:22 <ehird> AnMaster: yeah that was funny in like 2006
22:59:44 <AnMaster> ehird, actually I have seen it work, using some strange unicode thing instead of , on a network that allowed that
23:00:25 <AnMaster> ehird, since I could join it by copy and paste by not by typing :P
23:00:35 <AnMaster> (until I found out a bit later)
23:03:56 -!- agbot has quit (Remote closed the connection).
23:05:46 <oerjan> ^ul ((hum de dum de)S:^):^
23:05:46 <fungot> hum de dum dehum de dum dehum de dum dehum de dum dehum de dum dehum de dum dehum de dum dehum de dum dehum de dum dehum de dum dehum de dum dehum de dum dehum de dum dehum de dum dehum de dum dehum de dum dehum de dum dehum de dum dehum de dum dehum de dum dehum de dum dehum de dum dehum de dum dehum de dum dehum de dum d ...too much output!
23:07:12 <fungot> what what what what what what what what what what what what what what what what what what what what what what what what what what what what what what what what what what what what what what what what what what what what what what what what what what what what what what what what what what what what what what what what what ...too much output!
23:07:25 <lament> ^ul ((...too much output! )S:^):^
23:07:25 <fungot> ...too much output! ...too much output! ...too much output! ...too much output! ...too much output! ...too much output! ...too much output! ...too much output! ...too much output! ...too much output! ...too much output! ...too much output! ...too much output! ...too much output! ...too much output! ...too much output! ...t ...too much output!
23:07:49 <lament> ^ul ((oo much output! ...t)S:^):^
23:07:49 <fungot> oo much output! ...too much output! ...too much output! ...too much output! ...too much output! ...too much output! ...too much output! ...too much output! ...too much output! ...too much output! ...too much output! ...too much output! ...too much output! ...too much output! ...too much output! ...too much output! ...too m ...too much output!
23:08:22 <lament> ^ul ((put! ...too much out)S:^):^
23:08:23 <fungot> put! ...too much output! ...too much output! ...too much output! ...too much output! ...too much output! ...too much output! ...too much output! ...too much output! ...too much output! ...too much output! ...too much output! ...too much output! ...too much output! ...too much output! ...too much output! ...too much output! ...too much output!
23:09:40 -!- CakeProphet has joined.
23:09:44 <kerlo> %eval (((s i) i) ((s i) i))
23:09:47 <fizzie> In retrospect, "out of patience" would have been more accurate there.
23:09:50 <kerlobot> ((loop i) (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i
23:10:29 <kerlo> I think I want to look up the Y combinator.
23:10:55 <ehird> I think we scared sriracha away.
23:11:11 <kerlo> %eval ((((s s)k)((s(k((s s)(s((s s)k)))))k) foo)
23:11:36 <kerlo> %eval (((s s)k)((s(k((s s)(s((s s)k)))))k)
23:12:37 <kerlo> %eval (((s s)k)((s(k((s s)(s((s s)k)))))k))
23:12:38 <kerlobot> [l (z) ((((s (k ((s s) (s ((s s) k))))) k) z) ((k ((s (k ((s s) (s ((s s) k))))) k)) z))]
23:12:47 <kerlo> %eval ((((s s)k)((s(k((s s)(s((s s)k)))))k)) foo)
23:12:48 <kerlobot> (foo (((s ((s s) k)) (k foo)) ((k ((s (k ((s s) (s ((s s) k))))) k)) foo)))
23:13:00 <kerlo> %eval (((s s)k)((s(k((s s)(s((s s)k)))))k))
23:13:00 <kerlobot> [l (z) ((((s (k ((s s) (s ((s s) k))))) k) z) ((k ((s (k ((s s) (s ((s s) k))))) k)) z))]
23:13:11 <kerlo> %eval (hold (((s s)k)((s(k((s s)(s((s s)k)))))k)))
23:13:11 <kerlobot> (hold (((s s) k) ((s (k ((s s) (s ((s s) k))))) k)))
23:13:22 <kerlo> I'm too lazy to add spaces myself.
23:13:51 <comex> there should be a language whose valid programs are KH(A^n)N, where the number of As is converted to opcodes
23:15:43 <oerjan> ^ul (A)(~:(A)*~(KH)~*(N)*S~:^):^
23:15:43 <fungot> KHANKHAANKHAAANKHAAAANKHAAAAANKHAAAAAANKHAAAAAAANKHAAAAAAAANKHAAAAAAAAANKHAAAAAAAAAANKHAAAAAAAAAAANKHAAAAAAAAAAAANKHAAAAAAAAAAAAANKHAAAAAAAAAAAAAANKHAAAAAAAAAAAAAAANKHAAAAAAAAAAAAAAAANKHAAAAAAAAAAAAAAAAANKHAAAAAAAAAAAAAAAAAANKHAAAAAAAAAAAAAAAAAAANKHAAAAAAAAAAAAAAAAAAAANKHAAAAAAAAAAAAAAAAAAAAANKHAAAAAAAAAAAAAAAAAAAAAANKHAAA ...too much output!
23:15:52 <oerjan> ^ul (A)(~:(A)*~(KH)~*(N )*S~:^):^
23:15:53 <fungot> KHAN KHAAN KHAAAN KHAAAAN KHAAAAAN KHAAAAAAN KHAAAAAAAN KHAAAAAAAAN KHAAAAAAAAAN KHAAAAAAAAAAN KHAAAAAAAAAAAN KHAAAAAAAAAAAAN KHAAAAAAAAAAAAAN KHAAAAAAAAAAAAAAN KHAAAAAAAAAAAAAAAN KHAAAAAAAAAAAAAAAAN KHAAAAAAAAAAAAAAAAAN KHAAAAAAAAAAAAAAAAAAN KHAAAAAAAAAAAAAAAAAAAN KHAAAAAAAAAAAAAAAAAAAAN KHAAAAAAAAAAAAAAAAAAAAAN KHAAAAAAA ...too much output!
23:16:19 <ehird> ^ul ( ...too much output!)S(()S:^):^
23:16:20 <fungot> ...too much output! ...out of time!
23:16:26 <ehird> ^ul ( ...out of time!)S(()S:^):^
23:16:27 <fungot> ...out of time! ...out of time!
23:16:48 <kerlo> %temp ((lambda (fix) input) (((s s) k) ((s (k ((s s) (s ((s s) k))))) k)))
23:17:16 <kerlo> Used lambda instead of l.
23:17:24 <kerlo> %temp ((l (fix) input) (((s s) k) ((s (k ((s s) (s ((s s) k))))) k)))
23:17:35 <comex> out of curiosity, what is that?
23:18:21 <kerlobot> [l (z) ((((s (k ((s s) (s ((s s) k))))) k) z) ((k ((s (k ((s s) (s ((s s) k))))) k)) z))]
23:18:49 <kerlo> That sets the evaluation template. Any expression you give to kerlobot is substituted for input in the template before it's used.
23:20:04 <kerlo> Let's see, I want the function to take itself, then take an argument, then return the argument a'd to itself... or something like that, anyway.
23:20:35 <kerlo> %eval ((fix (l (self) (l (x) (a x self)))) 3)
23:20:35 <kerlobot> (3 ((s ((s s) k)) (k (l (self) (l (3) (a 3 self))))) ((k ((s (k ((s s) (s ((s s) k))))) k)) (l (self) (l (3) (a 3 self)))))
23:20:44 -!- sriracha has left (?).
23:21:55 <kerlo> It doesn't evaluate self before passing it to a.
23:22:15 <kerlo> I wonder how to do that...
23:24:05 <kerlo> Eh, SillyLisp isn't for serious programming anyway. That's what SaneLisp is for.
23:24:54 <kerlo> How many times have I mentioned that I don't know why SKI calculus in SillyLisp works?
23:25:33 <oerjan> well basically each of S, K and I happen to work
23:25:44 <kerlobot> [l (x) (l (y) (l (z) ((x z) (y z))))]
23:26:20 <oerjan> variable capture is not a problem as long as you only pass closed expressions
23:26:55 <oerjan> when variable definitions shadow each other
23:27:06 <oerjan> which is the problem you get when you don't rename
23:27:16 <kerlo> Do you know how variable substitution in SillyLisp works?
23:27:43 <oerjan> i assume you are just doing it naively
23:27:56 <kerlo> Pretty naively, yes.
23:28:08 <oerjan> ignoring alpha conversion
23:28:11 <ehird> %eval ((l (x y) x) y foo)
23:29:42 <kerlo> (k foo), where foo is an arbitrary expression, will evaluate to [l (y) foo]. If foo contains any y's, those will be replaced when that's applied to something.
23:30:02 <kerlobot> [l (x) (l (y) (l (z) ((x z) (y z))))]
23:30:16 <comex> I have absolutely no idea what you guys are doing :(
23:30:18 <oerjan> however, if ... oh wait
23:30:27 <oerjan> hm there could be a problem
23:30:55 <oerjan> if foo contains both y's and what y's are replaced with
23:30:58 <kerlo> s doesn't contain anything at all!
23:31:21 <kerlo> It's only when it's evaluated that stuff happens.
23:31:32 <oerjan> so you don't expand s and k until they are applied, yeah that makes things safe
23:32:08 <kerlo> I don't expand anything at all unless it's evaluated.
23:33:28 <kerlo> Evaluating (x y z . . .) causes x to be evaluated. After something is evaluated, the result is also evaluated, effectively. Also, f causes some stuff to be evaluated.
23:33:39 <oerjan> %eval ([l (x) (x x)] s)
23:34:06 <kerlo> %eval ((l (x) (x x)) s)
23:34:14 <kerlo> Using brackets is cheating. :-P
23:35:07 <oerjan> i thought there was some difference
23:35:48 <kerlo> %eval ((l (foo) (I AM A HOT DOG)) (l (foo) (no ain't)))
23:36:07 <kerlo> I always get those mixed up.
23:36:10 <ehird> Makes sense to me.
23:36:25 <kerlo> %eval ((l (foo) (l (foo) (no ain't))) (I AM A HOT DOG))
23:36:25 <kerlobot> (l ((I AM A HOT DOG)) (no ain't))
23:36:36 <kerlo> %eval ((l (foo) [l (foo) (no ain't)]) (I AM A HOT DOG))
23:36:47 <kerlo> The brackets protect l's first argument from substitution.
23:38:59 <kerlo> Which is cheating, of course.
23:39:04 <kerlo> So, I'll be more specific.
23:39:42 <kerlo> About f evaluating stuff, that is.
23:40:49 -!- BeholdMyGlory has quit ("godnatt på er").
23:41:00 -!- FireFly has quit ("Later").
23:41:02 <kerlo> (f func e list), where list is a non-empty list, evaluates func and (f func e <the tail of list>) before evaluating its result.
23:42:37 <comex> "l" is lambda, what is "s"?
23:42:47 <kerlo> %eval (f (THIS IS FUN, EH MATE) e (1 2 3 4 54 5 6 7 8 9 0 10))
23:42:47 <kerlobot> ((THIS IS FUN, EH MATE) 1 ((THIS IS FUN, EH MATE) 2 ((THIS IS FUN, EH MATE) 3 ((THIS IS FUN, EH MATE) 4 ((THIS IS FUN, EH MATE) 54 ((THIS IS FUN, EH MATE) 5 ((THIS IS FUN, EH MATE) 6 ((THIS IS FUN, EH MATE) 7 ((THIS IS FUN, EH MATE) 8 ((THIS IS FUN, EH MATE) 9 ((THIS IS FUN, EH MATE) 0 ((THIS IS FUN, EH MATE) 10 e))))))))))))
23:42:47 <kerlobot> [l (x) (l (y) (l (z) ((x z) (y z))))]
23:43:28 <kerlobot> ((l (fix) input) (((s s) k) ((s (k ((s s) (s ((s s) k))))) k)))
23:45:17 <comex> %eval ((l x (x)) x)
23:45:22 <kerlobot> ([l (y) (l (z) ((x z) (y z)))])
23:45:33 <comex> %eval ([l x (x)] x)
23:45:38 <kerlo> l takes a list as its first argument.
23:45:43 <kerlo> Your argument is invalid.
23:45:51 <comex> how am I supposed to know that :)
23:45:55 <comex> %eval ((l (x) (x)) x)
23:46:01 <comex> %eval ((l (x) (x x x)) x)
23:46:03 <comex> %eval ((l (x) (x x x)) y)
23:46:28 <ehird> oh shit, freenode have a link to these logs as part of my email about the kline
23:46:36 <ehird> think I could get clog to erase the anti-freenode lines?
23:47:40 <kerlo> ehird: what were you klined for?
23:47:44 <comex> %eval (s (k y) (k z) x)
23:47:44 <kerlobot> ([l (x) (l (y) (l (z) ((x z) (y z))))] (k y) (k z) x)
23:48:00 <ehird> kerlo: nothing: I was offline when it was done.
23:48:18 <kerlo> Why are you saying "oh shit", then?
23:48:32 <kerlo> comex: the SKI functions don't really like it when you pass x, y and z to them.
23:48:40 <kerlo> %eval (s (k Y) (k Z) X)
23:48:41 <kerlobot> ([l (x) (l (y) (l (z) ((x z) (y z))))] (k Y) (k Z) X)
23:48:51 <kerlo> Though apparently they handled it well this time.
23:48:54 <ehird> kerlo: cuz I called freenode incompetent fucks in the log that I linked them
23:49:36 <kerlo> freenode without you would be... different.
23:49:51 <ehird> 'sthat a word for "better"? ;)
23:50:08 <ehird> oerjan: Harsh, man. Harsh.
23:50:31 <comex> %eval (l (x) (x x))(l (x) (x x))
23:50:38 <comex> %eval ((l (x) (x x)) (l (x) (x x)))
23:50:47 <kerlo> That terminated quickly.
23:51:10 <comex> %eval ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((x
23:51:19 <kerlo> Now what did you expect that to accomplish?
23:51:41 <kerlo> Anyway, it can handle recursion to a depth of 1000. If you want to hang it, use really wide recursion.
23:52:29 <kerlo> loop is nothing special.
23:52:57 <kerlo> Here, let me make it siller.
23:53:00 -!- oerjan has quit ("Good night").
23:53:13 <kerlo> Creamy is the puff.
23:53:13 -!- kerlobot has quit (Read error: 104 (Connection reset by peer)).
23:53:20 -!- kerlobot has joined.
23:53:33 <kerlo> %temp ((l (fix) input) (((s s) k) ((s (k ((s s) (s ((s s) k))))) k)))
23:54:50 <ehird> http://lca2srv30.epfl.ch/sathe/data/emacs_learning_curves.png
23:54:57 -!- kerlobot has quit (Read error: 104 (Connection reset by peer)).
23:55:54 -!- kerlobot has joined.
23:56:24 <kerlo> I wonder why it did that.
23:56:30 <kerlo> %eval ((l (x) (x x)) (l (x) (x x)))
23:56:46 <kerlo> Oh, I didn't even save it.
23:56:46 -!- kerlobot has quit (Read error: 54 (Connection reset by peer)).
23:56:52 -!- kerlobot has joined.
23:56:54 <kerlo> %eval ((l (x) (x x)) (l (x) (x x)))
23:57:29 -!- kerlobot has quit (Read error: 104 (Connection reset by peer)).
23:57:36 -!- kerlobot has joined.
23:57:39 <kerlo> %eval ((l (x) (x x)) (l (x) (x x)))
23:57:40 <kerlobot> ((IT IS LOOP SORRY) (l (x) (x x)))
23:57:47 <kerlo> Worth spamming the channel for, isn't it.
23:58:07 <ehird> %eval ((s i i) (s i i))
23:58:07 <kerlobot> (([l (x) (l (y) (l (z) ((x z) (y z))))] i i) (s i i))
23:58:13 <ehird> %eval (((s i) i) ((s i) i))
23:58:20 <kerlobot> (((YOU ARE LOOP SORRY) i) (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i
23:58:20 <ehird> IT IS LOOP SORRY???????
23:58:26 <ehird> YOU ARE LOOP SORRY?
23:58:37 <kerlo> Yeah, sometimes it says YOU ARE LOOP SORRY instead.
23:58:40 -!- Corun has quit ("This computer has gone to sleep").
23:58:42 <kerlo> For, um, diagnostic reasons.