00:02:57 -!- quintopia has joined. 00:08:27 Holy jesus fuck the Enterprise is fast. 00:08:34 Homework time 00:08:36 Warp 9 is about 1000c. Or 0.1 lightyears per *hour*. 00:08:38 I'm staying here, though 00:15:44 ... And the Federation is 8,000 lightyears wide. 00:15:56 Making travelling across the Federation take 9 years. 00:25:47 And Warp 10 is INFINITE SPEED 00:26:01 But when you go warp 10 you DE-EVOLVE OH NOOOOOSE 00:31:25 But then you get it on with your captain. 00:32:03 Time to stop farking around with Fark 00:32:08 And actually start working 00:32:22 (define (really?) #f) 00:32:41 (defun really () nil) 00:32:44 oops 00:32:47 (defun really-p () nil) 00:32:55 Or is it reallyp ? 00:33:26 Err wait 00:33:31 De-evolution was a different episode :P 00:33:38 And that notion ALMOST approaches making sense almost. 00:33:41 You HYPER-EVOLVE 00:34:27 Supposedly, the writer's point was that there's no such thing as de-evolution 00:34:28 iirc 00:46:26 -!- Lymia has joined. 00:47:41 Err wait 00:47:41 De-evolution was a different episode :P 00:47:41 And that notion ALMOST approaches making sense almost. 00:47:41 You HYPER-EVOLVE 00:47:46 Gregor: Err, warp ten makes you go all lizard. 00:48:07 Sgeo: The writer's point is that he should choke on a cock and die. Writing Threshold is unforgivable and warrants torture. 00:48:11 His words should be banned. 00:48:35 He feels remorse for what he's done, doesn't he? 00:48:54 IRRELEVANT 00:49:00 He must suffer for all eternity. 00:49:07 I should watch it... 00:50:04 No. 00:50:07 You really shouldn't. 00:50:09 You'd like it. 00:51:28 elliott_: Warp 10 also makes you have infinite velocity with finite energy (?), but only go a few fractions of a lightyear away. 00:53:03 Gregor: Err, warp ten makes you go all lizard. // yes, but that was by means of hyper-evolution. 00:53:31 pikhq_: But he could SEE EVERYTHING, and he THOUGHT his way back to Voyager maaaaaaaan *smokes more pot* 00:53:58 I like to think they invented an Infinite Improbability Drive, myself. 00:55:08 I should also try PHP, just to give elliott_ an anxiety attack 01:02:55 Although I have used PHP and made programs in PHP, it isn't very good. You can try if you want to though, see what it is. 01:12:11 For some reason, I thought zzo38 was a PHP fan. I guess using != liking 01:17:44 Wow 01:18:00 I'm just looking up sources to support what I already know, instead of learning from them 01:20:31 -!- augur has joined. 01:20:40 Google Maps has options for "avoid highways" and "avoid tolls", but no "avoid Chicago" 01:21:05 `addquote Google Maps has options for "avoid highways" and "avoid tolls", but no "avoid Chicago" 01:21:07 ​406) Google Maps has options for "avoid highways" and "avoid tolls", but no "avoid Chicago" 01:21:19 `quote 01:21:19 `quote 01:21:19 `quote 01:21:20 `quote 01:21:20 `quote 01:21:20 ​322) just because i'm homosexual doesn't mean i have sex with men. ...i'm also a paedophile [...] see if i'm a gay paedophile i don't have sex with men i have sex with BOYS 01:21:22 ​126) Darn, now I can't acknowledge the reference you were making. 01:21:22 ​276) [on Walter Bright] I went to chat with him after his talk at the ELC and he was like "hum, right - humans. How do they work again... oh, hi!" 01:21:23 ​318) gah, who'd have thought removing concurrency from algol could be so difficult 01:21:25 ​141) AnMaster: to any airbus plane. 3 passengers sadly died the most awesome thing ever. 01:21:28 our quotes sure do suck 01:21:31 sorry 01:21:32 i mean 01:21:34 our quotes are the best 01:21:34 ever 01:36:21 -!- dbc has quit (Ping timeout: 240 seconds). 01:39:55 * Sgeo bites his tongue 01:40:07 I'm about to recommend Subversion instead of Mercurial 01:40:17 * Sgeo feels like a traitor 01:40:52 (I'm writing this paper from the point of view of a hypothetical corporation that has never seen version control before) 01:41:35 * Sgeo changes his mind 01:43:10 I feel even worse for it being Joel who made me change my mind back towards Mercurial. 01:55:22 * Sgeo vaguely wonders if there's freely available autotuning software. According to Wikipedia, "Auto-tune" is a proprietary product :/ 02:05:16 Less than 2 hours to go 02:24:50 Sgeo: git git git git. 02:24:59 Why? 02:25:16 Well, rather, DCVS DCVS DCVS DCVS. 02:25:23 Erm, swap V and C. 02:25:49 Centralized version control is a fundamentally broken model. 02:25:58 Well, I'm not going to really describe how to take full advantage of D 02:26:06 Since I'm unsure of it mysef 02:26:09 myself 02:28:37 Why would you recommend D, anyways? 02:28:50 Well, unless they fixed the stupid. 02:29:29 As in, the "Distributed" of DVCS 02:29:33 Not as in the language 02:29:42 Oh. 02:29:57 When will there be an E language? 02:30:00 We have B, C, D 02:30:04 Oh, there is already 02:30:06 Learn git. 02:31:17 B,C,D,E,J,R 02:31:27 I'm sure there's plenty I'm forgetting. What are they? 02:33:48 -!- pikhq has joined. 02:36:40 -!- pikhq_ has quit (Ping timeout: 276 seconds). 02:42:26 My next few paragraphs will be: Subversion, Git, and Mercurial 02:45:18 Dangit, can't find any sources that give the brief overview that I do 02:46:01 * Sgeo looks for a glossary 02:46:23 * Sgeo finds one 02:54:32 There's no way in heck that I will reach 5 pages. It is simply impossible. 03:04:39 pikhq, you're going to kill me. I plan on vaguely being irritated at Git's history modification 03:04:53 Without any real sources to back up my claim that it's a ticking-off sort of thing 03:10:48 * Sgeo cites gitvsmercurial.com 03:11:19 * Sgeo gets the person's name off of whois 03:11:20 >.> 03:12:19 random question 03:12:38 i'm looking for a set of rules describing a turn-based strategy game that is very simple 03:12:40 maybe board-game level 03:12:45 -!- TeruFSX has joined. 03:12:52 Teru Atlantis? 03:13:02 something that'd be fun, with considerations for basic terrain features somehow and maybe a handful of units, at least one with ranged attacks 03:13:11 WTF that's not the phrase? 03:13:33 Oh, "Terra Atlantis"? 03:14:15 talkin to me? 03:14:38 No, just commenting on TeruFSX's name 03:14:48 o right 03:14:53 my name 03:15:01 do you really want me to explain my name 03:22:42 Meh 03:35:19 o.O 03:35:28 It is technically possible for a child to have 5 parents. 03:35:40 pikhq: How? 03:36:06 Biological father, biological mother, surrogate mother, adoptive father, adoptive mother. 03:37:05 I consider only their biological parents their real parents, but I guess what you said is possible. How many times have you found anything like this? 03:37:13 I have 2 and 1/4 pages 03:37:15 I needed 5 03:37:48 pikhq, what about multiple adoptive parents? 03:37:54 At least I have 10 sources. 03:38:52 -!- oerjan has joined. 03:39:04 Sgeo: Oh, let's go further — polygamous parents. 03:39:40 It is technically possible for a child to have as many parents as there are humans capable of entering into a marriage. 03:41:30 surely polyamorous counts too 03:41:40 unless two people who have a kid outside of marriage aren't parents 03:42:01 although, I wouldn't say that all polyamorous configurations would lead to everyone being a parent... 03:42:13 well that's obvious i guess 03:42:54 2.5 pages of bullshit 03:42:58 With 10 sources 03:43:08 No way would I be able to write 5 pages, I think. 03:43:33 Maybe namedrop some more VCSes? 03:43:39 Visual SourceCrap 03:43:53 (Note: Don't call "crap" things I have a limited awareness of) 03:44:36 Visual SourceSafe is definitely crap. 03:44:41 It is incapable of multi-user use. 03:45:05 Dear EasyBib: Now is NOT a good time to stop working 03:45:44 What do you need to write this report for? 03:46:29 Management Information Systems 03:46:33 the topic is from the spambots right? are those things still going? 03:46:45 It was a term project. I started it today. It's due in 12 minutes. 03:47:00 no, it seems that tightening captchas fixed it (before it only was for anonymous edits with links in) 03:48:02 And I thought *I* was a procrastinator. 03:49:04 I can't write anymore 03:49:10 I'm handing it in as is 03:51:10 Sgeo: No! Make it double-spaced! 03:51:15 zzo38, it is 03:51:39 Then make narrow margins! 03:52:06 That way it will fill 5 pages. 03:52:17 * Sgeo needs to make sure TurnItIn doesn't think I'm a plagiarist 03:52:35 How does it check? 03:52:39 No idea 03:52:51 Then don't use their service. 03:53:05 * Sgeo needs to make sure TurnItIn doesn't think I'm a plagiarist 03:53:09 what an amazing inversion of logic. 03:53:16 Plagiarism.org 03:53:16 Finally, Turnitin for students. Avoid accidental plagiarism. 03:53:20 accidental plagiarism 03:53:23 YOU CAN'T MAKE THIS SHIT UP 03:54:10 I was once accused of plagiarising by a professor, simply because I used big words. 03:54:40 Sgeo 03:54:44 have you considered 03:54:49 TRANSFERRING TO A PLACE THAT ISN'T A HEAP OF SHIT 03:57:21 I cited a page that says "Who the FUCK cares" 03:57:31 I feel ... weird, not bad weird, about that 03:57:38 -!- zzo38 has quit (Quit: 42). 03:57:47 well, if he's secretly a muslim, we'll be okay 03:57:49 jesus i wish xchat's ignore features were more usable this is killing me 03:57:59 quintopia, ...what? 03:58:00 oh shit 03:58:06 i was scrolled too far up 03:58:08 never mind 03:58:19 i thought i was only like a screen away from current 03:58:25 i was like...a day off :P 03:58:46 X-D 04:01:01 "He's probably just tired. Or a sociopath." 04:01:29 -!- oklofok has joined. 04:01:53 and with that, oklofok entered 04:02:18 -!- oklopol has quit (Ping timeout: 248 seconds). 04:03:22 -!- Zwaarddijk has quit (Ping timeout: 240 seconds). 04:04:04 -!- ineiros has quit (Ping timeout: 252 seconds). 04:04:08 Biological father, biological mother, surrogate mother, adoptive father, adoptive mother. 04:04:34 there's this woman of which the norwegian government made a half-example 04:04:39 hexample 04:04:57 she went to india to get a surrogate mother for her child (this is not legal to get done in norway) 04:05:40 intending to become a single mother. she didn't use her own eggs. 04:05:41 what isn't legal? 04:05:58 using surrogate mothers 04:06:19 weird 04:06:19 why 04:07:56 at least paying them for it. i'm not sure of the details. 04:08:25 anyway, since she's not even the biological mother, by norwegian law she is _not_ the parent. by indian law, she is. 04:08:43 left the twins in complete legal limbo 04:09:39 Would that leave them stateless? 04:09:40 she almost got permission to adopt them anyway, but she lied on the application and said it _was_ her eggs 04:09:40 you're a limbo 04:09:47 pikhq: yes 04:10:18 Well, fuck. 04:10:27 more like HATEless 04:11:10 well they showed some mercy after about a year, and let her adopt anyway. 04:11:24 * pikhq wonders why there's laws against altruistic surrogacy. At all. 04:12:46 so for most of that year she was stranded in an indian hotel room with twins without a legal visa 04:15:03 it was pretty clear that the government were going to let them in _eventually_. but making sure no one else would want to try and copy her. or be able to claim ignorance. 04:15:39 Hmm, seems that the Convention Relating to the Status of Stateless Persons does not cover in any way a stateless child of a stated person. 04:16:13 Oh, it's irrelevant, anyways. India is not signatory. 04:17:34 one _could_ point out that india's laws support a booming surrogate parent _industry_ 04:18:04 Easy as hell to cease that. Stop banning practices for no good reason! 04:18:30 hm 04:19:29 -!- Zwaarddijk has joined. 04:22:06 -!- ineiros has joined. 04:23:04 Whoa. 04:23:13 Whoa? 04:23:27 A third instance of eye evolution in the vertebrates. 04:23:33 Dolichopteryx longipes is a species of barreleye fish. It has evolved a second pair of eyes with distinct optics. 04:23:37 Using *reflective* optics. 04:23:52 * oerjan found an english article somewhat about it on an indian website http://www.csrindia.org/index.php/surrogate-motherhood 04:24:40 I don't think anyone's arguing against /unregulated/ surrogacy are they? 04:24:52 [asterisk]surrogacy, 04:25:00 (the barreleye fish, BTW, have transparent skulls) 04:26:32 elliott_: you mean _for_? 04:26:42 er, yes 04:26:46 shut up 04:27:01 * oerjan eyes elliott_ suspiciously 04:27:37 what 04:28:11 YOU SCARY LIBERTARIANS 04:28:41 yes absolutely a libertarian that is what i am 04:36:27 Scheme wiki has been hit by spam 04:39:22 abqbebrsbbsbbdbsbdbsbabqbqbqbqbqbqbqbq 04:42:42 i really want some 04:42:42 bread 04:54:17 "Turing Completeness Considered Harmful" 04:55:03 see also total FP :P 04:55:15 (define (spam) (spam) (spam)) 04:55:16 also all theorem provers 04:56:26 so is all the spam from that streak reverted? 04:56:32 we sort of went about it piecemeal 04:57:18 i tried to double check everything, and yesterday i asked ais523 to look over Special:New pages 04:57:39 so, hopefully 05:14:52 TIL about Louis Wain, a man whose cat paintings show the progression of his schizophrenia. (dangerousminds.net) 05:14:53 REDDIT 05:14:55 ARE YOU FUCKING KIDDING ME 05:19:08 PROBLEM? 05:20:16 I CANNOT FUCKING COUNT 05:20:18 THE NUMBER OF TIMES 05:20:20 I HAVE SEEN THAT BULLSHIT 05:20:22 ON THE INTERNET 05:20:31 AND I CAN COUNT IN EQUAL NUMBER THE AMOUNT OF TIMES I'VE SEEN IT REFUTED 05:20:47 Do you think I can unsubscribe from *every* subreddit? 05:23:26 yes. 05:24:04 Awesome. 05:24:07 I'm going to go do that now. 05:24:15 Then there'll be no crap at all on my frontpage. 05:24:37 you could add askscience, i hear it's pretty good 05:25:02 oerjan: Why would I want to see other people's ignorance? 05:25:13 Why are there sixty seconds in a minute, sixty minutes in an hour etc? And why does a second last the duration that it does? (self.askscience) 05:25:18 Why can't you make a perpetual spinning magnetic motor? (self.askscience) 05:25:26 If I have 20/20 vision and put on somebody's prescription glasses, will I basically see the way that they do? (self.askscience) 05:25:26 ic 05:25:33 oerjan: no, i do not think this would be a good subreddit to subscribe to. 05:25:48 too cynical to live, check 05:25:49 How does a dog know to make eye contact? With a human? (self.askscience) 05:25:50 it's magic 05:25:57 Cell phones are killing bees? Is this true? (self.askscience) 05:25:57 yes 05:26:01 Why is the sky a bright orange sky before a thunderstorm? (self.askscience) 05:26:02 god's wrath 05:26:06 Questions about the wave-particle duality in quantum mechanics (self.askscience) 05:26:08 ride the wave 05:26:11 you can't surf on particles 05:26:14 Can drinking distilled water exclusively be harmful? (self.askscience) 05:26:16 yes you will get drunk 05:26:20 Why do atomic explosions result in mushroom-shaped clouds? (self.askscience) 05:26:22 because god is getting high 05:26:26 How many Homo Sapien ancestors do I have (approximately)? (self.askscience) 05:26:29 about three, you inbred fuck 05:26:31 this is great 05:26:34 i should post all of these 05:26:49 iirc, Arc is one of the 3 despised-by-many-Lispers lisps? 05:26:56 There are three? 05:26:59 Along with newLisp and Clojure? 05:27:08 Most Lispers like Clojure. 05:27:10 elliott_: um are these actual posts and answers or have you never actually visited the subreddit? (i admit i rarely have) 05:27:14 Oh 05:27:22 oerjan: actual posts, I'm making up the answers because I hate these people 05:27:36 Sgeo: Anyway, Arc isn't hated much for its actual language, it's more pg's hyping and the subsequent utter letdown. 05:27:36 don't quit your day job 05:27:45 well it's the _answers_ i've heard are good 05:27:48 "utter letdown"? 05:27:52 The language itself is uninteresting/crappy, but it's too intwined with pg's ego as far as hatred goes. 05:28:05 Sgeo: um, he spent over five years saying he was working on a revolutionary lisp dialect that would last a hundred years 05:28:18 when it was released it was a few hundred lines of scheme code with shorter names for some functions, and an http server 05:28:25 not even any unicode support 05:28:34 (he literally said he wanted arc to last a hundred years) 05:28:43 oerjan: good answers to stupid questions? well that's not exactly a difficult business :D 05:28:44 -!- pikhq has quit (Read error: Operation timed out). 05:29:27 Wow 05:29:36 -!- pikhq has joined. 05:30:12 so basically arc is the proof that pg has hit his own whatever it was starting with b 05:30:27 book? 05:30:32 buxom 05:30:33 bastard 05:30:34 bark 05:30:39 no a word someone made up, possibly pg himself 05:30:45 bust 05:30:48 oerjan: blub 05:30:51 yes, pg made it up 05:30:52 that it was 05:33:53 I don't really remember why newLISP was hated, except for the memory management, and I think even I saw that something some newLISP defender said was... wrong somehow 05:34:59 it has no garbage collection, is uninteresting in most if not every way, and its creator and all its fans are evidently idiots as they try and scramble to justify this in the most terrible way possible 05:35:02 "BUT EVAL IS FAST" 05:35:13 (i'll let dynamic scoping slide as picolisp pulls it off) 05:36:10 "Dutch is like English from some alternative, backwards universe where hydrogen is replaced with vowels." 05:36:50 "@radekg Please don't insult COBOL like that. It's nowhere near as bad as ColdFusion. :-)" 05:36:54 http://programmers.stackexchange.com/questions/2846/which-programming-language-do-you-really-hate 05:37:01 don't 05:37:03 don't fucking ask 05:37:03 the question 05:37:05 you are about 05:37:06 to fucking ask 05:37:08 don't do it 05:37:15 or i will commit serious acts of violence against you and nobody will be able to stop me :( 05:37:20 such will the force of my facepalming be 05:37:26 elliott_, did you think I was about to ask if I should learn ColdFusion? 05:37:40 you were going to ask why it sucked 05:38:37 I assume it's more than just the XMLishness 05:38:50 (I had and read a book on ColdFusion once when I was young) 05:38:57 there's a non-xml thing too 05:38:58 why do i know this 05:38:59 fuck this 05:39:06 im going to get drunk and forget everything i know about codlfusion 05:40:02 You can't hide that easily 05:45:22 haha @ coldfusion 05:46:23 "Basic constructs of any decent language include the ability to specify a null value. You will find no such thing in ColdFusion, only hacks into it's Java layer (another questionable mess) and a ridiculous nod in the form of (cfqueryparam null="yes")." 05:46:40 Wow. That's... probably the only wrong reason to hate CF 05:46:51 (Not having nulls is _not_ a bad thing) 05:47:05 having no nulls and no maybe/option type certainly is 05:47:06 (Unless you can't handle their occasional use cases easily) 05:47:13 occasional? 05:47:19 Returning "maybe a value, or maybe not" is almost universal. 05:47:24 For instance, any kind of lookup. 05:47:45 Hm, true 05:50:01 obviously the superiorest way to fail is continuations, especially these modern and structured continuations called exceptions are particularly handy 05:50:43 non-local control flow ARE YOU CRAZY????? 05:51:00 but the locals are so dirty 05:51:37 also every monad can be implemented with continuations, see felleisen 05:52:32 there's a nice sigfpe post about that too 05:54:22 the one about how you could get monad syntax for any monad if it just worked for Cont? 05:54:49 something like that 05:55:03 yes I think so 05:57:51 hm is this the real Slava Pestov? http://www.reddit.com/r/programming/comments/6ikav/shortest_summary_of_the_release_of_arc_and_the/c03xxhe 05:59:40 yes. 05:59:48 * elliott_ said that without even clicking :) 06:00:11 also http://www.reddit.com/r/programming/comments/6ikav/shortest_summary_of_the_release_of_arc_and_the/c03y3l6 06:00:48 :D 06:35:23 -!- elliott_ has quit (Read error: Connection reset by peer). 06:38:53 -!- elliott has joined. 06:45:59 oerjan, he's even on irc here 06:46:33 mhm 06:46:50 but 33 hours idle 06:48:51 but like, he chats n' stuff 06:49:03 so you can totally orz him if you want 06:49:34 cheater666: well i was just wondering if the reddit account was real, is all 06:49:40 o ok 06:50:02 after all, he was making a pretty strong statement, there 06:50:07 ahahah 06:50:23 Orz (also seen as Or2, on_, OTZ, OTL, STO, JTO,[22] _no, _冂○,[23] 囧rz,[20] O7Z, _|7O, Sto, O|¯|_, and Jto[original research?]) is an emoticon representing a kneeling or bowing person 06:50:32 "original research" xD 06:51:00 oerjan, good programmers need a good kick in the butt if they're doing stupid shit 06:52:18 mhm 06:53:18 i don't think that applies very well to paul graham. he is one of those unreasonable people George Bernard Shaw spoke about. 06:53:36 which is wonderful when he is _right_, of course, but... 07:12:20 Bootable livecd for anonymity? Where have I heard that before... 07:17:08 Boo-table, the main building block of a ghost database. 07:17:29 stealing that kthx 08:11:42 -!- siracusa has quit (Ping timeout: 240 seconds). 08:13:16 -!- siracusa has joined. 08:14:51 -!- monqy has quit (Quit: hello). 08:55:16 -!- Vorpal has joined. 08:58:07 cheater666. 08:58:08 囧? 08:58:11 What language is that? 08:58:28 Looks like a mangled Chinese 4. 08:59:24 Ah, it is a kanji/hanzi 08:59:28 Must be the font. 09:01:57 adfgkjsdfb 09:12:50 -!- ais523 has joined. 09:28:24 hi ais523 09:29:04 hi 09:29:09 umm, I'm meant to be teaching a tutorial right now 09:29:13 but none of my students showed up 09:29:18 so I'm sitting in the room with a laptop 09:38:55 Is it the right room? 09:41:35 yes 09:41:54 I was slightly late, so I'm wondering whether they all turned up, decided I wasn't coming, and went home; or whether they never turned up in the first place 09:41:59 it's optional, because it's exam revision 09:42:25 and if they haven't turned up, I have to wonder if they don't need it, or they're really overconfident, or they're really lazy 09:46:54 Around here people generally wait for up to 10-20 minutes before giving up. 09:48:06 that's about how late I was, train issues 09:51:03 -!- oerjan has quit (Quit: leaving). 09:53:02 -!- FireFly has joined. 09:53:51 囧? <--- looks like a simple outline of a house inside a frame 09:54:49 ais523, that is not slightly late, that is quite a bit late 09:54:57 well, OK 09:56:28 ais523, slightly late: up to 5 minutes, a bit late: up 10 minutes, late: up to 15 minutes, quite a bit late: up to 25 minutes, very late: up to 45 minutes, extremely late: anything above that 09:56:48 I didn't know you could quantify vague adjectives that accurately 09:56:49 Is this an ISO standard? 09:56:54 fizzie, it should be! 09:57:10 ais523, then you learnt something new today 09:57:18 The late: when dead. 09:57:42 heh 09:59:49 ais523, actually that is the old system, in the new system it is preferred to give it in units of late (with metric prefixes), so you were 8 decilate 10:00:08 err 10:00:13 wait that was wrongt 10:00:14 wrong* 10:00:36 4/3 late in fact 10:01:00 wow, I suspended my laptop, came back to my office, unsuspended it, and was still connected to IRC 10:01:21 -!- augur has quit (Remote host closed the connection). 10:01:28 ais523, was that s2ram? 10:01:38 to RAM, yes 10:01:42 I wouldn't expect hibernation to work 10:01:54 I managed to pull out ethernet cable, untangle the cabling, plug it back in, and still be connected to irc 10:02:09 I'm a bit surprised it works with wireless and with s2ram though 10:02:25 the only thing that really surprises me is that the IP didn't change 10:02:31 (presumably, if it had, reconnecting automatically would have failed) 10:02:32 TCP's like that; I guess I've mentioned the "can hang-up the dialup connection and redial without IRC dropping" thing here earlier. 10:02:52 I'm well aware that TCP is capable of handling the connection break, though, as long as it's short enough that there's no pingout 10:02:53 fizzie, not that I remember 10:03:00 UDP is actually like that too, for different reasons 10:03:14 how comes UDP is like that hm 10:03:15 the connection doesn't actually exist, so a short enough interruption is indistinguishable from the connection breaking 10:03:34 ais523, that depends on the protocol on top of udp though 10:03:51 Vorpal: well, yes, but I'm talking if you just write a program that's pretty much raw UDP 10:03:54 as a chat server or something 10:04:10 Vorpal: Well, that was most of the story already, though I also did patch ircii to say "PING? PONG!" whenever the server pinged, so I could choose to do the disconnection immediately after a previous ping. 10:04:10 ais523, you could lose messages in the udp case (unlike the tcp case) 10:04:26 fizzie, haha 10:04:28 Vorpal: indeed, but for something like a chat server that's less of a problem 10:04:32 fizzie, why did you patch it like that 10:04:43 Vorpal: I think mIRC used to say it like that. 10:04:51 I see 10:04:57 IRC servers don't actually ping each other to check connection 10:04:57 (Some win3.11-age version of it, anyway.) 10:05:07 they just assume the pings, and send a constant stream of pongs 10:05:08 fizzie, why did you redial 10:05:25 ais523, you mean the server-server protocol? Well that varies between ircds 10:06:02 though sending keep alive messages is one way yes 10:07:15 Vorpal: That was a silly telephone call pricing thing. The local telephone company used to have fixed-price-per-call "evening" (17-08) local call prices; then after modems got all popular they changed it so that the "per-call" price only got you 30 minutes, after that it was some per-minute pricing. So the cheapest way to stay online was a series of ~30-minute calls. 10:07:51 fizzie: oh, that's why they do that? 10:08:10 in the UK, the phone cost for evening calls nowadays is something like 10p for the first hour, then 1p per minuts 10:08:12 fizzie, heh, did you do it by a script then? 10:08:12 *minute 10:08:36 and the phone company actually suggests redialing every hour for that reason 10:08:54 ais523, huh :D 10:09:02 why would they suggest it openly... 10:09:05 ais523: Well, I haven't seen any official rationale; but that's my guess, anyway, since it happened pretty soon after people started spending time online with several hours long phonecalls. 10:09:18 Vorpal: I think they're assuming that people assume that that's just how phones work 10:09:32 ais523, what? 10:09:46 that they need reconnecting? 10:09:47 fizzie: the other reason to do things like that is because most phone calls are very short, but people still have to pay for the whole first hour anyway 10:09:54 Vorpal: that they start costing more after an hour 10:10:04 uh I see 10:10:50 ais523: Well, I guess; but the per-call price here was only ~5 minutes worth of the per-minute pricing. (Which was actually I think the same per-minute price they used normally for the mon-fri 8-17 calls.) 10:10:54 anyway, modems are dead these days (outside development countries at least) 10:11:16 Vorpal: I didn't have a completely automated script since I wanted to time it for the pings, and hooking up pppd's time-elapsed counter with ircii's ping-checking sounded a bit overly elaborate. 10:11:25 fizzie: ditto here 10:11:35 well, PPP still survives in the form of PPPoE/PPPoA and such, oh and tethering over bluethooth at least 10:11:41 but it's because the per-minute pricing is insane, rather than because the first-hour price is cheap 10:12:13 and then, after a while, one of the phone companies came up with an "as many phone calls as you like, of any length, to one ISP for a flat rate" 10:12:28 and that's more or less how the monthly-cost internet connection came to the UK 10:12:41 heh 10:12:57 ais523, isn't monthly cost internet standard for anything that isn't dial-up? 10:13:07 I don't think I ever seen dial-up that is monthly cost 10:13:17 Vorpal: it is /nowadays/ 10:13:21 ais523, anyway at least in Sweden the ISPs are generally the phone companies 10:13:22 but it was pretty revolutionary then 10:13:30 especially as it was dialup back then 10:13:44 I think they did some sort of Internet-related phone-call deals here in Finland too. 10:14:00 and yes, in the UK nowadays, the ISPs, cable/satellite TV providers, phone companies, and even sometimes mobile phone companies are all the same 10:14:20 I think I remember the price too, it was £25 a month 10:14:30 ais523, well yes, mobile phone companies are mostly the same as land line ones, with a few that are mobile only 10:14:35 at least here 10:14:37 come to think of it, it's about that nowadays, although effectively cheaper because of inflation 10:14:52 Vorpal: here, there are several mobile only 10:15:09 ais523, there aren't all that many companies doing mobile phone here 10:15:23 and the largest landline company, BT, don't really do mobile phones (they do, technically, but only because they bought a mobile phone company and run it as a mostly separate unit) 10:15:31 there are quite a lot of major mobile phone companies in the UK 10:16:01 lets see, Telia, Tele2, Telenor, 3, Comviq, Halebop (owned my Telia, but targets a different market segment than Telia itself). 10:16:05 Seems that the current landline local call price here is... 0.012 eur/minute + 0.121 eur/call, with no special cases. Or possibly 0.0059 eur/minute with a different sort of deal. 10:16:12 maybe some more, but not any large ones 10:17:22 fizzie: wow, that's cheap by UK standards 10:17:37 I have no idea what landline price is 10:17:39 although probably the UK is cheap by the standards of some other countries 10:17:54 is here* 10:17:56 when I was in Canada, I tried to make an international call by payphone to the UK 10:18:10 and the way it worked was, you dialed the number first then the phone told you how much it would cost, and you either paid or hung up 10:18:15 ais523: 0.012 eur/minute + 0.121 eur/call translates to 1.046p/minute and 10.544p/call, which sounds like those prices you mentioned, with the exception that you start paying per-minute immediately at the start of the call even in the evenings. 10:18:39 when I tried, it took something like 5 minutes to work out the cost, and gave a number so large that I couldn't be reasonably expected to fit that many coins into my wallet to be able to pay it a coin at a time 10:18:51 fizzie: oh right, I muddled euros and eurocents 10:18:56 no wonder I thought your prices were cheap 10:19:12 ais523, hehe 10:19:23 ais523, it took 5 minutes to work out the cost!? 10:19:32 Vorpal: I think the phone wasn't doing it itself 10:19:47 I think it phoned up some central cost calculation location that had to work out how much a call to the UK was likely to cost 10:19:57 and for all I know, it was being done by hand rather than automatically 10:19:57 ais523, was it a human doing it then? 10:20:00 hm 10:20:08 weird 10:20:26 ais523, a computer would do it in a fraction of a second yeah 10:20:30 International telephony is a complicated thing. 10:20:53 I made a phone call from Hungary to the UK and that wasn't so bad 10:21:08 and was definitely calculated automatically, connection took no more than a couple of seconds longer than normal 10:21:34 expected since it would have to route in a complex way I guess 10:21:36 it was a bit more expensive than a typical landline connection, but that wasn't surprising 10:21:43 Mobile phone roaming abroad is also quite messy, protocol-wise, if I recall correctly from some telecommunications-basics lectures. The phone gets a temporary "virtual number" in the country-you're-visiting and so on. 10:21:56 fizzie, they do, huh 10:22:11 I suppose it was within Europe, though, and that's practically one country for some purposes 10:22:43 at least in Sweden there is no longer any difference between long distance/local within the country for rates 10:22:52 there is a difference between to landline / to mobile though 10:23:05 and of course international rates is the usual mess 10:23:20 We still have local/long-distance landline prices, it seems. 10:23:56 I don't think people are really making any new landline deals in any significant numbers, though. 10:24:09 hm 10:24:20 fizzie, what about ADSL? 10:24:30 it goes over landline after all 10:24:59 Well, okay, but that's usually sold (at least in here) as an internet-only service and without a telephone number + contract. 10:25:05 -!- BeholdMyGlory has joined. 10:25:46 fizzie: in the UK, the landline normally just comes with the house nowadays 10:25:48 I think new buildings tend to opt for some sort of fiber-based interwebbing anyway. I have no idea if they still install traditional telephone wiring though. 10:25:54 so new landline deals are mostly only made for new houses 10:26:08 and they have to have traditional telephone wiring so you can make an emergency call during a power cut 10:26:41 hm 10:27:22 Do you have some sort of "can make an emergency call even without a landline contract"? Because at least in here people have been busily giving those up. 10:27:22 has anyone here used any AST-based source code editors? 10:27:33 cheater_: I think Cheery was writing one 10:27:40 who's Cheery? 10:27:45 someone who was here a while back 10:27:56 i know someone's writing one for Haskell, but he's only talking about it and not really doing it 10:28:04 what do you guys think of the concept? 10:28:13 fizzie: if you make an emergency call from a mobile in the UK, any mobile operator in range has to pick it up and relay it, whether you have a contract with them or not 10:28:15 i think AST + vim style operation could be very cool 10:28:20 in fact, many phones can do it even without a SIM card 10:28:35 ais523: Sure, but that doesn't have anything to do with telephone wiring. 10:28:42 indeed 10:28:44 fizzie, I think you can call 112 no matter what in Sweden. Such as mobile carriers have to let them through by law even if you don't have a contract with them, or you are out of money on a pre-paid plan or whatever 10:28:56 for the telephone wiring, I imagine emergency calls would only work if it was physically connected to something at the other end 10:28:58 fizzie: well, technically, a sim card has got wires (well, conductors) in it 10:29:14 and iirc my mobile can call 112 without entering the PIN even 10:29:25 Vorpal: would suck if your PIN started 112 10:29:26 really? 10:29:29 or does the phone know about that? 10:29:31 on the enter-pin screen? 10:29:34 ais523, different button for call and for OK 10:29:35 :P 10:29:36 (e.g. do you have to press 1 1 2 green, or something like that?) 10:29:48 ais523: yes 10:30:06 112 is technically the emergency number in the UK too, although 999 still works, and probably will do forever 10:30:08 Percentage of homes with a landline telephone in Finland has dropped from 94% to 33% between 1995-2007; but I can't find any newer statistics. :/ 10:30:17 ais523, from google image search, this is my phone model: http://dansbandsfrun.bloggproffs.se/files/nokia-3120-classic-021.jpg 10:30:24 (I have the blackish one) 10:30:43 (112 is a much superior number from a physical point of view; it's harder to type by mistake on a keypad, and faster to dial on an old-fashioned rotary dial phone) 10:30:49 the blue - button above the call button is used for OK 10:31:48 ais523, on a non-rotary phone it is harder to get right if you are in a stressful situation, with 999 you can just mash one button a couple of times 10:32:13 still, when my little sister was very young she dialed 999 by mistake, because 9 was her favourite number 10:32:18 heh 10:32:21 The N900 "enter lock code" screen has a number pad and a "done" button; if you type in 112 as the code, an extra "emergency call" button appears above the "done" button. 10:32:21 and my parents had to explain what happened to the emergency response people 10:32:30 luckily, they were presumably quite used to that sort of thing happening 10:32:33 fizzie, heh 10:32:52 The SIM entry dialog might have a similar thing. 10:33:03 and it doesn't cost much money for them to answer a call and decide it isn't an emergency; it's only when they decide it is that it's really expensive 10:33:16 hmm, has anyone here made an actual emergency call, ever? 10:33:20 I have. 10:33:22 ais523, still hitting 9999 will still take you to emergency service, while I don't think 1112 or such will take you to the right place (presumably 1122 would though) 10:33:37 I did once (calling university security on their emergency number because a fight had broken out in the building I was in) 10:33:49 ais523, a fight at university, heh 10:33:52 -!- augur has joined. 10:33:54 how weird 10:33:55 fizzie: what was yours about? 10:34:02 Vorpal: indeed, and it was looking quite violent 10:34:16 ais523, I just wouldn't expect that in a university 10:34:26 I tried to stop it myself, but the fight just migrated into a lift (en-us:elevator) and shot off way out of the range where I could chase it 10:34:41 and in the end it was broken up by security 10:34:59 ais523, anyone you knew involved? 10:35:12 no 10:35:19 they were in my department, but I had no idea who they were 10:35:25 ais523: There was a fire alarm device going on in the apartment above us, and after it had been going on for 15 minutes or so without stopping I thought I'd better let the fire emergency people know about it. They sent a car to take a look. 10:35:28 ais523, students? faculty? 10:35:34 students 10:35:37 I see 10:35:44 fizzie: was it a fire? 10:36:12 ais523: Turned out the people living above us had for some really inexplicable reason an (indoors) fire alarm in their *balcony*, and perhaps the -25-degrees-Celsius temperatures or something had gotten it confused. 10:36:20 fizzie, uh wouldn't fire alarm in a university building be wired to automatically notify emergency services 10:36:22 fizzie: haha 10:36:23 at least around here they are 10:36:27 Vorpal: mostly they are over here 10:36:28 Vorpal: This was at home. 10:36:38 fizzie, oh I read that as department, not apartment 10:36:44 the last building I was in (not this one, the one with the Door) was originally wired up to the fire department 10:36:59 but they gave up after a while, as the builders kept drilling through fire alarm signal wires and calling out the fire engines as a result 10:36:59 ais523, originally? 10:37:08 heh 10:37:22 ais523, I seen a handful of false alarms at university myself 10:37:30 so now they have a system where the signal went to security control, and they'd check to see if it looked like an actual fire or manual call, and call the fire brigade themselves if it was actualy a fire 10:37:40 Vorpal: i would <3 to see uni faculty get it on 10:37:43 in my current department, the fire alarm has only ever gone off during actual fire drills 10:37:51 "take this, you LIBERAL FAG!" 10:37:55 although the burglar alarm goes off by mistake quite a bit 10:38:01 and can be annoying during lectures 10:38:34 ais523, I seen an electrician set off a burgler alarm next to a lab I was in at one point. 10:38:34 ais523: do you think an ast-based editor can be useful? 10:38:40 Vorpal: ^ 10:38:44 twice 10:38:50 with a few hours in between 10:38:53 cheater_: potentially, yes, but I likely wouldn't use one 10:39:00 you would think he would avoid doing it the second time 10:39:00 text has huge benefits 10:39:01 why would you not? 10:39:11 what sort of benefits? 10:39:22 Vorpal: maybe he failed at avoiding. 10:39:25 you can easily interpret it in a different way 10:39:31 rolled snake eyes on the critical roll 10:39:37 ais523: and? 10:39:45 ais523: how does that relate to source code? 10:39:55 I often line up columns with whitespace in my programs, for instance, so I can easily do edits going down the columns rather than across the rows 10:39:58 ais523: After our high school building was renovated (and a new wing built), there was a series of maybe 5 or so spurious fire alarms within a period of about two weeks. The emergency service people probably got quite bored about it. (And the first call was answered with real fire truck, maybe even a couple, while for the last one someone just came with a regular car to turn the thing off.) 10:40:01 which is an operation that makes no sense in an AST 10:40:11 ais523: no reason an ast-based editor couldn't do that 10:40:17 it's just display 10:40:30 cheater_: I'd say it wouldn't be AST-based if it did 10:40:32 lots of things can display serialized data in equal-width columns 10:40:35 i would say it is 10:40:40 it's about the navigation and editing 10:40:47 fizzie, lucky there wasn't a real fire then the last time 10:40:56 for example the space between the source items could, inside the editor, be zero-width 10:41:16 but it would not be displayed zero width, instead the right amount of space would be displayed 10:41:24 in this case, what's on screen != what's in the buffer 10:41:28 cheater_: but the columns aren't part of the AST at all 10:41:37 no, but they're part of the display 10:41:44 ais523, now design a language where columns would be part of the AST 10:41:46 no reason you can't have a render pass 10:41:46 (no clue how) 10:41:51 haha 10:42:02 Vorpal: they would be in DownRight 10:42:10 in fact, part of the reason that doesn't have an interp yet is that it doesn't have a syntax 10:42:12 Vorpal: um, befunge. 10:42:15 ais523, I'm not familiar with that language *checks esowiki* 10:42:22 I'm not sure if I put it there yet, but it's really simple 10:42:39 Vorpal: what do you think about an ast-based text editor? 10:42:42 it isn't there indeed 10:42:44 a program is a rectangular matrix, treated as a torus, and each cell contains a possibly empty string of "down" and "right" 10:42:56 ais523: so if the text editor does a render pass to line up things, are you happier with it? 10:42:57 running a program, you start by appending a copy of the contents of the first cell to a queue 10:43:04 i mean lining up columns is trivial 10:43:04 mhm 10:43:11 then what? 10:43:14 then continuously move in the program according to the queue, appending a copy of the contents of each cell as you go 10:43:25 that's it 10:43:29 but it's TC 10:43:39 ais523, that queue wouldn't grow more than 1 element would it? 10:43:45 say you have two lines like this: [1, 2, 555, 6, , 2, 1] and [1, 5, , 2, 77] <--- those two can be lined up trivially 10:43:46 each cell contains a string 10:43:49 aha 10:44:22 ais523, how do you know it is TC? 10:44:28 what i want is a language where the indentation of the line changes the scope it operates in, but lines still get executed from top to bottom 10:44:58 if the width and height of the matrix are coprime, it compiles neatly into more or less everything (that's not how I know it's TC, I proved it was TC by compiling cyclic tag into it) 10:45:10 cheater_: Python? 10:45:10 ah 10:45:12 for example: you could have an if branch which defines a new local scope. inside this if branch you could have a single line that's one indentation less than the rest of the if body. it makes the line operate on the context that the if clause was on. 10:45:14 ais523, Vorpal, what languages do you speak natively? 10:45:21 ah, right 10:45:26 ais523: no, python finishes blocks on encountering lesser indentation 10:45:28 ais523, so why would it not have an interpreter? 10:45:33 I think INTERCAL is the only program which has scopes that work like that, and it doesn't use indentation for scoping 10:45:37 augur: i speak native haskell 10:45:40 Vorpal: you could interpret it just fine 10:45:45 it just also happens to compile easily 10:45:45 :P 10:45:51 ais523: do you think this could be an interesting esolang? 10:45:57 it could be 10:46:01 but then, so could most other things 10:46:02 why? 10:46:05 augur, Swedish I guess. Though I manage quite well in English, and in some areas (compsci mostly) I know the words of things in English but not in Swedish. 10:46:08 at least it wouldn't be a boring BF derivative 10:46:10 ais523: why could it be? 10:46:20 Vorpal: ok 10:46:25 cheater_: because you only really need one new idea to make an interesting esolang 10:46:29 especially if you milk it to death 10:46:40 http://esolangs.org/wiki/Forte is my favourite example of that, among the esolangs I've designed 10:46:44 ais523: what other ideas could be used for this esolang? 10:46:46 ais523, so why is it not implemented, it should be easier than befunge even, 10:46:54 need a proper spec though 10:46:54 Vorpal: because it doesn't have a syntax 10:47:01 and thus you can't write programs in it 10:47:06 ah 10:47:17 ais523, a file format like befunge's would surely work? 10:47:30 well, there are strings in every cell 10:47:34 so you'd need to separate with tabs or something 10:47:45 (but then, it'd look ugly in an editor if your strings were more than 7 chars long) 10:47:49 wheres my finns :| 10:47:53 ais523, 3 you mean :P 10:48:11 ais523, actually I suggest space separation, if you can write downright 10:48:14 instead of down right 10:48:24 augur: What do you need a Finn for? 10:48:31 well, I don't think you'd write out the words 10:48:32 fizzie: data collection 10:48:42 maybe ↓ and → 10:48:43 ais523: you could use html 10:48:47 ais523, ah 10:48:48 ais523: and use html tables for the cells 10:48:51 which have the benefit of being easy to type on my keyboard 10:48:54 fizzie: i need some minor translations and judgements of grammaticality 10:48:54 ais523, well space separation then. 10:48:55 cheater_: that is an awful idea 10:49:03 ais523: that's exactly why it should be done 10:49:08 ais523, yes ↓→ are easy, just altgr-u/i 10:49:08 Vorpal: how would you distinguish an empty cell? 10:49:10 ais523: or better yet, excell spreadsheets 10:49:14 Vorpal: same combo as on here 10:49:31 ais523, hm... maybe a symbol representing that? 10:49:40 -, perhaps? 10:49:48 ais523, possibly 10:49:51 ais523: excel spreadsheets can be output to TSV, you don't need to look at the intermediate code 10:49:59 ais523, why not any symbol that isn't space, ↓ or → 10:50:03 augur: Well, if it doesn't take long, I can provide some; though I'm not always so good at judging grammaticality. (Finnish is anyway quite flexible about some things, especially if you just apply some poetic license.) 10:50:06 or enter 10:50:08 of course 10:50:16 ah, so you can put a comment in a cell to mark it as empty? 10:50:22 fizzie: are you a native finnish speaker, or a second language speaker? 10:50:30 augur: Native Finnish speaker, yes. 10:50:36 ais523, yes, why not 10:50:40 that might work 10:50:51 ais523, as long as there is no space in that comment of course 10:50:54 hmm, I vaguely want to write a downright -> BF compiler now, it shouldn't be too hard 10:50:58 ais523, since then it would be multiple cells 10:51:10 although simplest to insist on coprime width/height 10:51:17 ais523, I want to write a DownRight interpreter if you put up page on the wiki about it 10:51:25 ais523, why do they need to be co-prime? 10:51:35 as then you can use just one modulo operation to wrap both of them, rather than needing two 10:51:49 eh 10:51:52 how 10:52:01 say your program is 7 wide and 5 high 10:52:04 yes 10:52:15 you can map (x, y) to (5x + 7y) mod 35 10:52:20 and use it as an index to a lookup table 10:52:21 oh you mean one integer to track the position, right 10:52:28 then going down is adding 5, across is adding 7 10:52:43 *right is adding 7 10:52:54 ais523, solved too many crosswords? 10:53:05 heh 10:54:01 ais523, anyway, why compile to bf? 10:54:10 for fun, not for any particular reason 10:54:13 why esolang at all? 10:54:32 hm right 10:54:40 ais523, why not compile to feather? 10:54:50 or intercal 10:55:08 because a) that would be uninteresting given the nature of Feather, b) I still don't really get how Feather works yet 10:55:16 and INTERCAL generally makes a bad compilation target 10:55:25 ais523, in what way 10:55:37 I'd love to see a queue implemented in intercal 10:55:59 simplest way to do a queue in INTERCAL is two stacks 10:56:06 hm okay 10:56:18 you pop from the first and push on the second; if you try to pop from the first and it's empty, you reverse the second stack onto the first and continue 10:56:29 aha 11:10:11 -!- jix_ has quit (Read error: Connection reset by peer). 11:15:21 bbl 11:49:02 http://esolangs.org/wiki/DownRight is on the wiki now, anyway 12:02:49 ais523, hm what happens with leading whitespaces on a line? 12:02:58 it doesn't seem to be defined 12:03:03 at the start of a program, it isn't 12:03:17 ais523, at the start of a line I was considering 12:03:22 everywhere else, they end up as part of the whitespace that separated it from the line before 12:03:39 as it's a string of whitespace containing at least one vertical whitespace character 12:03:40 ah 12:04:03 ais523, btw real comments will likely end up like this foo_bar_quux 12:04:08 indeed 12:04:08 this:* 12:04:11 or maybe using dots 12:04:15 or that 12:04:30 ais523, what about weird unicode spaces 12:04:50 but it wouldn't be the first time esolangs had a bizarre comment syntax 12:04:57 well indeed 12:04:58 and I don't know 12:05:19 really, since when has Unicode support ever been consistent between implementations of a widely-implemented esolang? 12:05:21 ais523, what about a unicode zero width space, is that a whitespace or a comment? 12:05:39 there's an official definition of what is and what isn't whitespace somewhere, though 12:05:57 ais523, you mean, for esolangs, or in general? 12:06:09 the official definition's in general 12:06:19 ah 12:06:21 ISO? 12:06:28 I don't know 12:06:32 Unicode Consortium, most likely 12:07:32 ais523, at some point (not today) I might write a ↓→ compiler. Compiling to C probably, though dynamically growing queues in C sounds no fun 12:07:40 also um, how would one observe the state 12:09:00 ais523, languages with output are nice in that it is easier to test them 12:09:03 well, it's just halt/nonhalt 12:09:08 -!- FireFly has quit (Quit: swatted to death). 12:09:08 but it's easy enough to do debug output 12:09:15 ais523, could be halt-at-position 12:09:16 just print the sequence of downs and rights as they're popped 12:09:26 and maybe coordinates too 12:09:29 yeah 12:10:06 ais523, I can't see any way to optimise this language that isn't just evaluating it 12:11:23 some sort of static analysis? 12:11:48 ais523, I'm not sure how helpful it would be... 12:12:06 or what sort of thing you could extract from it 12:12:46 well, some downs/rights you could statically prove to always move to blank cells 12:13:01 so you could merge them into the downs/rights afterwards, as a sort of "move diagonally" or whatever 12:13:07 ais523, I guess the best way to do a queue in C would be a single-linked list and keeping a pointer to the end element, blergh 12:13:13 dynamic memory allocation 12:13:15 in C 12:13:33 no, the best way is to use a circular array and grow it if necessary, even if it means you have to copy the queue 12:13:48 ais523, hm, but wouldn't that depend on where they came from before, to know what was already in the queue? 12:13:49 that has much better cache properties, stores more compactly in memory, and requires much fewer allocations 12:14:09 hm 12:14:18 ais523, more painful to work with, but sure 12:14:38 ais523, I'd write the compiler in a HLL though 12:16:05 hmm, after spending several hours translating an algorithm from Haskell into OCaml 12:16:21 I concluded that the major difference between the languages is that Haskell's standard library was better, or at least easier to memorise 12:16:44 ais523, maybe you are just more used to haskell? 12:17:08 iirc ocaml has a very good compiler btw 12:17:08 Vorpal: it's more that I had to write lambdas a lot more in OCaml 12:17:17 hm 12:17:23 whereas in Haskell, normally there was a handy combinator I could just use 12:17:30 right 12:27:50 ais523, this is utterly useless: http://esolangs.org/wiki/Golang 12:27:55 too little information about it 12:28:14 Vorpal: see the talkpage 12:28:25 hm okay now that made me more confused 12:29:33 huh is WireWorld TC? 12:29:41 doesn't it has finite memory 12:29:49 (since the wires can't grow) 12:31:16 it is if you can have an infinite (and repeating) program 12:31:21 ah 12:31:37 probably most easily by making a Minsky machine 12:34:05 Speaking of which, at least my Google search puts the Esolang wiki "Minsky machine" article above the two Wikipedia results (titled "Register machine" and "Counter machine"). 12:35:20 -!- MigoMipo has joined. 12:42:31 Heh. 12:42:49 If you override __builtin__.str on eval.appspot.com, you override it's front page. 12:43:41 Lymia: presumably they didn't think that someone would do that 12:44:13 ais523, the front page was nyancat for a hile. 12:44:14 while* 12:49:04 Lymia, that is an empty page currently 12:49:32 Vorpal, somebody broke shell.appspot.com which it redirects to. 12:51:06 ah 13:12:46 -!- cheater666 has quit (Ping timeout: 240 seconds). 13:24:59 jesus why are macintoshes so annoyingly slow and inefficient 13:26:54 well no offense but have you considered that you might just be really quick and efficient yourself? 13:27:14 oklofok, hm? 13:27:37 Vorpal: birds are really cute when scavenging for food 13:27:48 -!- azaq23 has joined. 13:27:49 lifting stuff up with their little beakies 13:27:57 oklofok, what kind of birds 13:28:05 oh any kind i suppose 13:28:12 oklofok, even large birds? 13:28:26 those don't have small beaks after all 13:28:38 well i suppose just relatively small ones 13:28:53 oklofok, do you consider something like a crow to be relatively small? 13:29:03 yes 13:29:31 oklofok, eagles? 13:29:38 swans? 13:29:58 those might be pushing it 13:30:05 oklofok, ducks then? 13:30:16 hmm 13:30:25 they are smaller than swans certainly 13:30:38 maybe ducks are relatively small too 13:33:54 i just got the results from my last exam ever 13:33:57 yays 13:34:05 ah 13:34:21 oklofok, so you are done at university after this? 13:34:28 oklofok, what are you going to do then? 13:34:31 no i'm still doing my phd 13:34:34 ah 13:34:42 everything else i finished months and months ago 13:34:49 oklofok, so why this exam? 13:34:54 for funsies 13:34:56 but never again 13:34:57 I see 13:35:03 oklofok, what is your PHd about? 13:35:13 err that was weird caps 13:35:13 no clue! :D 13:35:19 oklofok, uh uh :P 13:36:23 there's a few fun open problems in cellular automata and finite state automata that would be fun to solve but they might not actually be very feasible 13:37:30 oklofok, such as? 13:37:50 cerny's conjecture, if there's a synchronizing word for a DFA, then there's one of length O(n^2) 13:38:12 synchronizing word = from any state, you go to one particular state, when reading that word 13:38:13 oklofok, I see, what is a synchronizing word in this context? 13:38:17 ah you beat me to it 13:38:42 oklofok, what is n in there? 13:38:46 number of states? 13:38:49 it's relatively easy to show O(n^3), but that's all that's known 13:38:49 yes 13:38:55 hm 13:38:55 hey oklofok 13:39:06 heys 13:39:12 hows life 13:39:43 it's okay, i haven't gotten a fix of mathoin for about a month now so if i don't get results soon i'll probably get depressed and die 13:39:50 oklofok, so that word has to be the same for any given state you are in hm 13:39:54 -!- azaq23 has quit (Ping timeout: 264 seconds). 13:39:59 Vorpal: yes 13:40:02 thus synchronizing 13:40:09 you synchronize every state to one 13:40:23 oklofok, well you could do one that would go to a known state and then to the state you want, I guess that one would be O(n^3) though? 13:40:28 wait no 13:40:31 that doesn't work hm 13:40:59 oklofok, interesting problem. How do you show the O(n^3) case? 13:41:01 oklofok: mathoin? 13:41:05 oh i get it 13:41:20 then there's the conjecture about periodic points in surjective CA, namely that they are "dense", that is, let G be a surjective CA, and let w be any word, then the conjecture says there's some (one-dimensional infinite) configuration x that contains w and is periodic in the sense that G^n(x) = x for some n > 0 13:41:42 augur: i wasn't sure fix was unambiguous enough so i had to do something like that 13:42:12 no that just made it worse XD 13:42:24 augur: shut up :( 13:42:28 :x 13:42:36 I TRIED MY BEST 13:42:44 Vorpal: erm let me think i haven't slept at all 13:42:49 ah 13:42:52 oklofok, never ever? 13:43:00 yeah so 13:43:00 :P 13:43:14 oklofok: I can prove O(2^n) quite easily 13:43:24 ais523: haha 13:43:27 and that's less than O(n^3) for small enough n 13:43:32 hah 13:43:42 ais523: you can do O(n^3) the same way, but you have to use a different modified graph 13:43:52 called the pair graph 13:43:53 oklofok: yes, I was thinking along those lines 13:43:59 as you don't need all sets, just prime subsets 13:44:10 huh 13:44:11 yeah, and in fact you don't need subsets 13:44:35 do you want to try and extrapolate from "pair graph"? 13:44:45 no I don't 13:44:48 I'm happy as I am, I think 13:44:59 since if you understand the powerset construction, then that's kinda obvious too 13:45:00 if I think about the problem seriously I'll hit the n^3 proof quite easily, I imagine 13:45:07 well okay 13:46:09 so the pair graph H constructed from G is, we have pairs of states as the new states, and (x, y) -> (z, w) in H with label a if x -> z and y -> w both with label a in G 13:46:28 that sounds like a concept stolen from category theory 13:46:30 hm 13:46:40 H is partitioned into the diagonal and... well, the rest 13:46:50 the diagonal is the vertices of the form (x, x) 13:47:04 now, synchronizing two states means finding a path from outside the diagonal to the diagonal 13:47:59 aha 13:48:15 hmm, I think wlog we can assume the transition graph is strongly connected 13:48:28 ais523, wlog? 13:48:30 as if it isn't, you can work on each half of the problem separately 13:48:33 without loss of generality 13:48:35 ah 13:48:46 ais523: no 13:48:50 it means that the result if you assume something also applies to the situation where you don't, just with terms reversed or something like that 13:48:55 if the graph is strongly connected, the result is obviously untrue 13:49:02 so that was implicitly assumed 13:49:02 no it isn't 13:49:16 if you think it isn't, you misunderstood the problem 13:49:22 oh 13:49:23 stronly 13:49:25 *strongly 13:49:26 sorry 13:49:27 say each state transitions to each other state, with a label depending on what it aims to 13:49:40 what did you think I'd said? 13:49:45 just missed strongly 13:49:49 ah, OK 13:49:54 that would make quite a difference 13:49:59 oklofok, yet you typed it? 13:50:05 that's not needed in the proof anyway 13:50:19 Vorpal: well i didn't miss the actual word 13:50:20 I know it isn't, just thought that it might be interesting aiming for a different sort of proof 13:50:26 oklofok, I see 13:50:32 ais523: oh you got the proof already? 13:50:42 no, I'm just brainstorming 13:50:51 huh 13:51:08 when aiming for a proof, I aim to come up with relevant-looking lemmas and conjectures first 13:51:09 basically you just note that n^2 steps is enough to unify *some* two vertices in case there exists a synchronizing word 13:51:13 even if I can't see why they'd matter 13:51:23 oklofok: oh, for the n^3, that's easy enough to work out 13:51:37 because if there's a synchronizing word, there will have to be a path from outside the diagonal to the diagonal in H, so there must be one of length at most n^2 13:51:46 yep 13:51:55 well, n(n-1), but that's the same thing because we're messing with big-O notation 13:51:56 oklofok, can there exist a synchronizing word for one target state but not for another in a graph? 13:52:04 Vorpal: really easily 13:52:12 ais523, hm okay 13:52:15 oh right 13:52:15 imagine a state machine with two states, and one letter in the input alphabet 13:52:26 Vorpal: not in a strongly connected graph, otherwise sure 13:52:26 there are only four such machines, two of them have that property 13:52:28 yeah I see A->B but no other one 13:52:41 (no other connection that is) 13:52:45 anyway, I should have eaten lunch hours ago 13:52:46 so I'll do that now 13:52:48 cya 13:52:53 -!- ais523 has quit (Remote host closed the connection). 13:53:26 anyhow so as i said, n^3 is sort of trivial, but it seems clear that n^2 is actually enough 13:53:42 oklofok, but you don't have a proof for it? 13:53:48 for n^2? 13:53:51 yeah 13:54:03 if you do, write your phd on that :P 13:54:04 yeah i think i scribbled that in my solution to the riemann hypothesis notes 13:54:26 oklofok, ah, like in the margin saying the margin was too small to contain that proof as well? ;P 13:55:06 no i managed to fit the whole proof, there was just enough space between my one-liner solution to the 4-color conjecture and my proof of god 13:55:22 ah I see 13:55:57 oklofok, did you have a go at the Church–Turing thesis too? 13:56:10 i considered it obvious enough, like the rest of the world 13:56:13 :P 13:56:26 oklofok, it isn't actually proven though 13:56:33 of course 13:57:47 WELL CAN ANYTHING REALLY EVERY BE PROVEN? 13:57:53 every. 13:58:01 oklofok, that is philosophy I think, not math 13:59:15 i have this thesis that topological limits are the true definition of approaching 13:59:51 let me demonstrate: if i have a point that goes towards another point, then we can put some open sets around one of them and, well, the rest is history 14:00:04 oklofok, eh 14:00:11 I know next to nothing about topology 14:00:27 oh well it was a stupid joke anyway 14:00:44 except that topologists likes to drink coffee from doughnuts ;P 14:00:47 like* 14:03:01 yes and cut off penises 14:03:35 ugh :P 14:25:25 4b2o$2o2bobo$o5bo$b5o$3bo! 14:25:29 Just in case anyone was wondering. 14:32:08 -!- azaq23 has joined. 14:33:17 tswett, what is that? 14:42:06 A still life. 14:42:27 I've never seen it before and it doesn't seem to have a LifeWiki article, probably because it's not notable. 14:43:01 I guess Mark Niemiec discovered it, if nobody else did before him.. 14:43:03 s/.././ 14:49:57 tswett, oh it is a GOL thingy 14:50:01 tswett, how does one read it 14:51:38 First line: four dead, two live. Next line: two live, two dead, live, dead, live. Next line: live, five dead, live. Next line: dead, five ilve. Next line: five dead, live. End. 14:52:16 ah I see 15:07:08 -!- cpressey has joined. 15:11:49 What's the appeal of ooc? It mystifies me that BitBucket includes it in its dropdown to select "what language is this project written in". While there is no mention of, say, Pure or Felix. 15:15:35 Of course BitBucket's search sucks so badly that I have no real idea how many projects there *are* written in ooc... I only see one that mentions ooc in its description, and it's one of those "learn you this language" tutorials. 15:15:40 -!- oerjan has joined. 15:15:57 Oh, and it's not even ooc :/ It's a tutorial on "Object-Oriented C" 15:19:33 and it crashed my browser 15:24:11 -!- ais523 has joined. 15:25:03 and it bit my sister, once 15:25:28 * oerjan mind boggles at ais523 managing to get the Unparseable spec to approach self-consistency 15:25:51 i wasn't even assuming it was a design goal at this point 15:26:56 oerjan: I'm still not convinced it's anywhere near self-consistent 15:27:06 but atm, I'm beginning to think of it as a constraint solving puzzle 15:27:19 find at least one execution path that doesn't break any of the rules 15:27:36 heh 15:28:14 I'm not yet sure if there's a program with multiple consistent interpretations 15:28:21 well if the inventor of Feather cannot make it, no one can 15:28:54 hey, I haven't invented Feather yet 15:29:13 (note: I may need access to clog's hard-drive so I can retroactively change the previous line if necessary) 15:30:53 obviously. 15:31:29 Today's reminder of how I'm pretty low on the pecking order of the world: "I am contacting you regarding your reservation in our hotel, we have a problem with your reservation. This problem ocured because of unexpected increasing of rooms in one group we are accommodating in the period of your reservation and we are not able to break this group. Therefore we have to move your reservation to another hotel in Prague, --" 15:32:14 I think the logic here goes "big group == large amount of money for the hotel == more important". 15:34:25 hmm, /me acts on advice honed over years on the Internet: if you're going to reply to someone you agree with, tell them you do, or they're going to assume you're arguing with them 15:36:29 -!- Sgeo has quit (Read error: Connection reset by peer). 15:37:35 ais523, on the network, it's a good idea to be strict in what you provide 15:38:01 cpressey: heh, are you trying to make this into something that's amusing just because it's said so often? 15:38:34 well, I was riffing on what I told you yesterday, re your   spambot 15:39:01 yep 15:39:16 being strictish in what you accept is a good way to keep out spambots, actually 15:39:19 -!- jix has joined. 15:53:11 :t tree 15:53:11 Not in scope: `tree' 15:53:17 @hoogle tree 15:53:17 module Data.Graph.Inductive.Tree 15:53:17 module Data.Tree 15:53:17 Data.Tree data Tree a 15:53:32 :t Tree 15:53:33 Not in scope: data constructor `Tree' 15:53:36 :t Node 15:53:36 forall a. a -> Forest a -> Tree a 15:54:07 > let n = Tree [n,n] in n 15:54:07 Not in scope: data constructor `Tree' 15:54:14 > let n = Node [n,n] in n 15:54:14 Occurs check: cannot construct the infinite type: 15:54:14 t = Data.Tree.Forest [... 15:54:26 erm 15:54:34 oh 15:55:00 It seems to me the bot can't see the Forest for the Trees. 15:55:02 > let n = Node () [n,n] in n 15:55:03 Node {rootLabel = (), subForest = [Node {rootLabel = (), subForest = [Node ... 15:55:50 > let x = [x] in x 15:55:51 Occurs check: cannot construct the infinite type: t = [t] 15:56:57 :t [x] 15:56:58 [Expr] 15:57:03 ! 15:57:04 fizzie: well, if the trees are dense enough, you can't see if they're an isolated thicket, or if there's an entire forest behind them 15:57:24 :t x 15:57:25 Expr 15:57:28 oh right 15:57:50 :t m 15:57:51 Expr 15:57:57 :t mzgbd 15:57:58 Not in scope: `mzgbd' 15:58:13 let mzgbd = [mzgbd] in mzgbd 15:58:22 > let mzgbd = [mzgbd] in mzgbd 15:58:23 Occurs check: cannot construct the infinite type: t = [t] 15:58:36 but at least it's not shadowing anything, am i right? 15:58:42 right 15:59:09 lists cannot recurse into their heads, only their tails 15:59:20 yeah, i was working on that angle 15:59:24 in my HEAD 16:00:14 > let mzgbd = (():mzgbd) in mzgbd 16:00:14 [(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),()... 16:00:38 # Compiler.find_connected_components_from_edge_inner ;; 16:00:40 - : 'a -> ('a * 'a) list -> int -> 'a list -> 'a list -> ('a * int) list -> 'a list list -> 'a list -> ('a * 'a list) list -> 'a list list = 16:01:01 for some reason, I seem to do stateful algorithms by passing all the components around by hand, rather than using monads or variables 16:01:16 I do that too 16:01:31 habit from when I learned Erlang, in my case 16:02:27 *Main> :t findConnectedComponents'' 16:02:28 eventually I get like "all these arguments are being passed everywhere and they always appear together -- let's make this a record" 16:02:29 findConnectedComponents'' :: (Eq a, Ord b, Num b) => a -> [(a, a)] -> b -> [a] -> [a] -> [(a, b)] -> [[a]] -> [a] -> (b, [a], [a], [(a, b)], [[a]]) 16:02:31 did it in Haskell too 16:02:50 the OCaml version was written more recently, though, and I rewrote it in CPS, which made it quite a bit simpler 16:02:57 I don't think I've every written something with *that* type 16:02:59 *ever 16:03:24 (the ('a * 'a list) list-typed argument in the OCaml version is actually a manually maintained call stack) 16:03:43 well, the "all these arguments are being passed everywhere" thing didn't really come up, as it was just one thicket of functions 16:04:25 (well, a manually maintained continuation stack, but I made "continuations-by-reference" by hand, because it was less insane than trying to do it automatically) 16:06:16 the major advantage of Haskell over OCaml is its standard library, IMO 16:06:27 it's much more relevant than the whole laziness and purity arguments 16:06:34 :t unique 16:06:35 Not in scope: `unique' 16:06:38 hmm 16:06:44 perhaps that isn't in the library after all? 16:06:46 I... don't know if I agree with that 16:07:00 But my use case for Haskell is probably not typical 16:07:00 ah indeed, I wrote it by hand 16:07:12 @hoogle unique 16:07:12 module Data.Unique 16:07:12 Data.Unique data Unique 16:07:12 Data.Unique hashUnique :: Unique -> Int 16:07:22 in fact, I even wrote member by hand, but I think mostly because I didn't know what it was called 16:07:28 ?ty nub 16:07:29 forall a. (Eq a) => [a] -> [a] 16:07:30 ?ty elem 16:07:31 forall a. (Eq a) => a -> [a] -> Bool 16:07:54 oerjan: I wanted something that deleted all items from a list that were the same as items that had occured previously in the list 16:08:00 @hoogle [a] -> [a] 16:08:00 Prelude cycle :: [a] -> [a] 16:08:00 Prelude init :: [a] -> [a] 16:08:00 Prelude reverse :: [a] -> [a] 16:08:03 ais523: nub 16:08:10 Deewiant: ah, is that what it's called? 16:08:11 nub indeed 16:08:14 I typically write my own map functions in Haskell 16:08:30 > nub [1,2,1,4,3,1,5,2,4,3,1,2,5,4,3] 16:08:30 [1,2,4,3,5] 16:08:32 ?ty map head . sort . group 16:08:33 forall a. (Ord a) => [a] -> [a] 16:08:42 other thing that catches me out a lot is that OCaml uses ; not , as a list separator 16:08:46 Err, group . sort 16:08:54 and that [1,2] is perfectly legal, and means [(1,2)] 16:09:04 i.e. a one-element list of tuples 16:09:21 cpressey: you should be aware that many of haskell's list functions have optimization rules 16:09:27 ML's syntax does not appeal to me 16:09:47 oerjan: er - I misspoke previously 16:09:55 the other thing I find myself doing a lot is having computations which are clearly monad-based, but as I'm in OCaml, doing it by hand using the definitions from the List monad 16:10:11 I typically define my own mapping data structures in Haskell 16:10:14 ah 16:10:36 I know I tend to define fmap for my own structures if it fits 16:10:41 because "Cafeteria See Your Food" 16:11:01 in fact, I even wrote member by hand, but I think mostly because I didn't know what it was called <-- sounds like you really need to learn to use hoogle :D 16:11:10 oerjan: that only works when online 16:11:13 I typically don't program when online 16:11:18 oh 16:11:23 :t member 16:11:24 Not in scope: `member' 16:11:37 @hoogle member 16:11:37 Data.IntMap member :: Key -> IntMap a -> Bool 16:11:37 Data.IntSet member :: Int -> IntSet -> Bool 16:11:37 Data.Map member :: Ord k => k -> Map k a -> Bool 16:11:43 in fact, all this work on compilers I've been doing recently (that's where the scary type signature from above comes from) has lead to an esolang idea 16:12:25 which is basically taking dependent typing to the extreme, and hoping the resulting language is TC adding nothing extra but a combined lambda/switch statement 16:12:38 I fear it may even end up computable 16:12:43 *uncomputable 16:13:05 or, more likely, the language itself TC, but the type system uncomputable 16:13:07 which would just be bizarre 16:14:12 the kind of all dependent types which are provably finite 16:14:16 or something 16:14:23 class Functor t => FunctorM t where 16:14:24 fmapM :: Monad m => (a -> m b) -> (t a) -> m (t b) 16:14:29 now I'm trying to figure out why I wrote that 16:14:35 I think I needed to cross fmap and mapM 16:14:38 and the library didn't obviously have it 16:14:41 it seems most of the research in type systems is to find type systems which are *decidable*, so finding ones that are undecidable probably is not difficult 16:14:48 @hoogle Monad m => (a -> m b) -> (t a) -> m (t b) 16:14:48 Data.Traversable mapM :: (Traversable t, Monad m) => (a -> m b) -> t a -> m (t b) 16:14:49 Data.Traversable forM :: (Traversable t, Monad m) => t a -> (a -> m b) -> m (t b) 16:14:49 Prelude mapM :: Monad m => (a -> m b) -> [a] -> m [b] 16:15:17 looks like I was reinventing Data.Traversable 16:15:40 oh, on the obvious basis that functors don't have to have a natural order 16:16:05 always repeat yourself always repeat yourself 16:16:17 so it can't be added to Functor generally, even though it would be useful 16:16:29 meanwhile, I read an actual paper about monads in the mathematical sense 16:16:33 and it was surprisingly like Haskell 16:18:06 purity is useful if you want your program to be math 16:19:14 yep 16:19:40 well, not always, some mathematical algorithms are described in terms of inherently imperative ideas 16:19:47 like the one above, which uses two stacks 16:19:52 I think INTERCAL is the only program which has scopes that work like that, and it doesn't use indentation for scoping 16:20:07 i think SML has that local ... in ... thing which might fit 16:20:14 (still not indented) 16:20:23 (it's a bit ridiculous that I even need an algorithm to find strongly connected components in a directed graph in a compiler...) 16:20:33 oerjan: actually, INTERCAL's scoping rules are different 16:20:35 or wait is that backwards 16:20:49 I misunderstood 16:21:01 the rule with INTERCAL, is that the scopes of different variables don't have to nest well, or indeed have any relation to each other 16:21:48 oh you mean with STASH etc.? 16:22:11 although that's not lexical 16:23:01 "inherently imperative"? I dunno about that concept... 16:23:10 nope, it's technically a form of dynamic scoping 16:24:07 and barely that, since you don't have to leave the scope in a consistent place even for a single variable iirc 16:24:33 but it can be used that way 16:26:37 well, it doesn't enforce well-nesting 16:26:46 but I don't see why that's intrinsically necessary for dynamic scoping 16:26:48 it's just a good idea 16:29:28 I'd like to see a filesystem where entire subtrees could be made read-only atomically 16:29:45 It would help me feel better about "sudo make install" 16:30:46 Eh, even then, there's usually a collection of files spread out across the system, like the binary in bin, and conf files in etc 16:30:55 -!- monqy has joined. 16:31:01 you could use fakeroot or something 16:31:38 cpressey: hm downright might be a good language for your java suite 16:32:05 I usually install stuff into my home dir, but there's always these silly projects that expect their dependencies in a 'systemwide' place 16:32:43 I normally install stuff in a dir parallel to the build 16:32:44 oerjan: link? also, it's too late: it's already in java :) 16:33:04 well, the next step is to release the source 16:33:11 let people tear it apart cruelly 16:33:18 and so on 16:33:20 cpressey: um downright is ais523's latest 2d-and-some esolang 16:33:24 cpressey: http://esolangs.org/wiki/DownRight 16:33:30 oh oh ok' 16:33:33 I think oerjan was suggesting implementing DownRight in the suite, not the suite in DownRight 16:33:48 i thought this was some new "JVM language" that yoob could be reimplemented in. gotcha 16:33:49 you'd think 16:34:07 I've never written a JVM-based language 16:36:36 yoiks. ok... 16:37:48 yeah, "matrix of strings" is a little bit of a stretch for yoob's UI, but since they don't change, that makes it easier 16:42:45 oklofok, even large birds? 16:43:06 your discussion has a disturbing lack of vultures 16:47:26 oerjan, but they are cute! 16:47:41 precisely! 16:53:23 epsoderrick puggammin laggages 16:54:50 on the other hand sometimes Data.Map is just what I need because I am teh lazy 16:55:05 but Data.Map is not lazy! 16:55:09 it's strict in the spine 16:55:57 *because I am teh GOLDBRICKERS 17:00:54 "Haskell, a malingering functional language" 17:01:49 your ma is lingering 17:02:47 (re maps: although, I do tend to write recursive functions which consume a list, over using folds, too.) 17:03:16 -!- Gregor has set topic: Conquest, War, Famine, Death and Herring Pasta | Logs: http://codu.org/logs/_esoteric/ and http://tunes.org/~nef/logs/esoteric/?C=M;O=D. 17:03:29 it's... i don't care about efficiency. i care about a certain kind of readabilty. 17:03:34 that's a very disturbing pasta 17:03:51 Well, it is a sign of the apocalypse. 17:03:52 using map, foldlrlr and such detract from the readability, because you have to know what all those li'l bastards do 17:05:10 Which is ironistical, since they're supposed to in fact add to the readability, precisely because you then immediately know what they actually do. 17:05:33 :t unique 17:05:33 Not in scope: `unique' 17:06:19 nolo contendere 17:06:30 cpressey: what do you want? 17:06:46 a pony 17:06:47 we already established there is no function by that name 17:07:02 that was just a demonstration 17:07:29 and that nub was what was originally intended by it 17:07:57 i... do I really have to explain my choreography? 17:09:06 :t no 17:09:07 Not in scope: `no' 17:09:17 foldlololololr 17:37:53 War, Famine, Pasta-lence and Death 17:38:29 *Pasta-lents 18:16:11 -!- wareya_ has joined. 18:17:42 -!- wareya has quit (Read error: Operation timed out). 18:46:47 in fact, I even wrote member by hand, but I think mostly because I didn't know what it was called <-- sounds like you really need to learn to use hoogle :D 18:46:47 oerjan: that only works when online 18:46:48 I typically don't program when online 18:46:51 cabal install hoogle 18:49:11 using map, foldlrlr and such detract from the readability, because you have to know what all those li'l bastards do 18:49:14 more readable than recursion. 18:50:01 fizzie: ping 18:50:19 oerjan: ping 18:50:24 recursion versus vocabulary, i guess 18:51:34 gnop 18:52:13 cpressey: recursion is low-level, like goto :) 18:52:19 and for loops 18:52:22 but to understand vocabulary you just have to understand vocabulary, while to understand recursion you first have to understand recursion 18:53:59 atm, I typically work out which of foldl and foldr I need by experiment 18:54:02 and can't change 18:54:37 "Type system: The type system is formally an enhanced version of the typed lambda calculus plus pattern matching." 18:54:41 because -- why pretend 18:55:30 pretend what 18:55:42 ais523: if the operation is associative, then you just use foldr if you need to handle infinite lists :P 18:55:58 although i guess ocaml forbids you from having those ;D 18:56:01 elliott: this is in OCaml 18:58:31 you know, I don't know, because there is no such thing as "*the* typed lambda calculus" from what I see 18:59:06 but I meant "why pretend your type system is anything except another programming language" 19:00:18 who pretends that? 19:00:24 there is "the simply typed lambda calculus" 19:00:49 There should be a typed lambda calculus for any adjective. 19:00:54 *adverb 19:00:57 however, the regular lambda calculus is a bad language for a type system 19:01:00 and then a heap of extensions 19:01:31 -!- Sgeo has joined. 19:01:33 oerjan: they probably meant "simply" but left it out 19:01:52 but who knows. i can't clone their git repo off github using their instructions. 19:02:15 they could also mean hindley/damas-milner 19:02:29 old git version? 19:02:56 no, their instructions are wack 19:03:15 github has ones thatw ork 19:03:29 what is it 19:03:51 felix 19:04:04 they make you run git submodule commands in order to build it! 19:04:09 oh noes? 19:04:23 and you need Python 3 19:04:26 fanTAStic 19:05:35 AND OCAML! 19:06:06 " Also, its not that the execution is meaningful up to the point where undefined behavior happens: the bad effects can actually precede the undefined operation." 19:06:14 o.O 19:06:45 my kind of execution model 19:06:54 if you use undefined behavior, the program may prevent the big bang from happening! 19:07:15 Daaaaaaaaaaaaaaaaaaaaaaaamn 19:07:29 obviously Gregor doesn't like that 19:07:39 Sgeo: why is that quote surprising 19:08:05 ... 19:08:33 How do bad effects precede the undefined operation? Is that just a theoretical idea, or can it actually happen in real implementations? 19:08:45 Sgeo: Consider optimisations. 19:09:00 Ah 19:09:44 it's a miracle that the universe has survived the invention of C, really 19:16:27 So, I should probably implement an esolang in such a way that it requires both Pure and Felix to be installed, in order to build. 19:17:01 build system in felix, testing system in pure 19:17:15 make the tests mandatory somehow 19:20:29 so many pathological perversions, so little time. 19:20:32 [[For example a C implementation has undefined behavior when: 19:20:32 An unmatched ‘ or ” character is encountered on a logical source line during tokenization.]] 19:20:35 :D 19:20:41 gotta make that into a feature somehow 19:21:03 "you can use ' in names, but only if you don't use character constants on the same line, and as long as you have an odd number of 's" 19:21:17 a C compiler that starts interpreting the file as iag source after that point 19:25:38 "Use of an uninitialized variable: This is commonly known as source of problems in C programs and there are many tools to catch these: from compiler warnings to static and dynamic analyzers. This improves performance by not requiring that all variables be zero initialized when they come into scope (as Java does). For most scalar variables, this would cause little overhead, but stack arrays and malloc'd memory would incur a memset of the stora 19:25:38 ge, which could be quite costly, particularly since the storage is usually completely overwritten." 19:26:15 Another solution: Make the language simply fail to compile if there's an unini... well, C can't be modified that way that easily, I guess 19:26:32 s/language/file/ 19:26:37 -Werror -Wno-uninitialized-somethingth 19:26:53 pretty sure gcc can do that 19:27:26 Oh. Well, that's a compile-time cost, not a runtime cost, so why not have the standard do that? 19:27:47 well, you can stil get around it 19:28:34 if (never_true) x = 9; 19:28:35 { int a; if (/* ...*/) { a = 0; } printf("%s", a); } 19:28:35 return x; 19:28:39 right 19:29:25 but oh, man, shaving off that instruction to zero out a when it wasn't really necessary 19:29:30 YOU MUST OPTOMIZE 19:29:44 that one instruction TOOK TIME that you'll NEVER HAVE BACK 19:29:50 cpressey: http://getsatisfaction.com/mojang/topics/minecraft_is_not_written_in_terse 19:30:34 10:04:10: Vorpal: Well, that was most of the story already, though I also did patch ircii to say "PING? PONG!" whenever the server pinged, so I could choose to do the disconnection immediately after a previous ping. 19:30:41 fizzie: You could ping the server instead; that works at least on freenode. 19:31:11 OK, so this was in the 90s but STILL. 19:32:01 elliott: actually, sending anything at all works on Freenode 19:32:10 but I'm not certain that other ircds work like that 19:33:29 heh 19:34:35 -!- pingveno has quit (Ping timeout: 248 seconds). 19:35:51 hmm, I was reading this article about undefined behaviour again (it's old, and may have been mentioned here before: http://blog.regehr.org/archives/213) 19:35:58 and then noticed the first post was by Michael Norrish 19:36:01 that was a little surprising 19:36:34 -!- pingveno has joined. 19:38:16 * pikhq wonders if anyone understands the GCC build system 19:40:09 OH DEAR GOD KILL IT WITH FIRE 19:40:29 * Sgeo decides that pikhq is it... 19:40:39 No, GCC's build system. 19:40:42 KILL IT WITH FIRE 19:41:12 * Sgeo wonders what asdf is like 19:41:37 "asdf" refers to something beyond slapping a keyboard in disgust? 19:41:54 Yes 19:42:04 pikhq: I vaguely understand some of it 19:42:17 It definitely needs replaced. 19:42:20 http://common-lisp.net/project/asdf/ 19:42:23 although my only method of tweaking it was to run it halfway through, then run a Perl script over some generated files, then complete it 19:42:38 it also gave me a huge catalogue of things to avoid when writing C-INTERCAL's, which solves much the same problem a lot better 19:43:01 Glibc's is perhaps worse. 19:43:02 :/ 19:43:04 "It is roughly what Common Lisp hackers use to build software where C hackers would use say GNU Make. " 19:43:42 glibc uses hand-written recursive Make. 19:43:44 With autoconf. 19:44:36 cpressey, is that very quotable for you? 19:44:39 oh, asdf 19:44:40 asdfasdfasdfasdfasdfasdfasdfasdf 19:44:42 cpressey: that's a terrible analogy 19:44:47 it's actually more like a package manager and module system combined 19:44:54 and a build system 19:44:57 it's 19:45:00 kind of complicated 19:45:01 as long as its hackers using it 19:46:42 I have to wonder about "another". Was there an earlier system in use before asdf took hold, or was there competition like OO systems for Scheme? 19:47:02 Remember: friends don't let friends recursive make. 19:47:24 i have a beautiful esolang here but it doesn't work because two-dimensional space doesn't have the properties i need or something 19:48:06 no, that's not true 19:48:13 just need to twist my head more 19:48:47 cpressey's head exploding in 1, 2, ... 19:51:22 * oerjan reverses the clock battery 19:51:39 cpressey's head exploding in 3, 2, ... 19:52:35 Chicken or Racket? 19:52:41 * Sgeo doesn't know how to decide 19:54:25 Sgeo: are you trying to lay an egg or hit a tennis ball? 19:55:02 :D 19:56:02 it's obviously one of his evil schemes 19:56:39 it'd be even eviller if it required both 19:57:06 * cpressey calls up the SPCA 19:59:09 chicken tennis 19:59:22 the original badminton 19:59:55 It is surprisingly difficult to find an up-to-date comparison of various Schemes 20:00:25 Sgeo: gatherer.wizards.com 20:00:43 (I did see one table, but considering that it had TCO as a column, I can only assume it's older than dirt) 20:01:03 i am teh confused 20:01:17 coppro, took me a minute to remember that Scheme is ... something to do wiith MtG 20:01:31 Apparently, it's a special card type? For use in certain formats, or what? 20:02:09 for use in an official multiplayer variant 20:02:35 Ah 20:03:03 I hope I'm right in assuming I had no school today 20:03:33 I want a new Scheme / One that won't make me sick / One that won't make me crash my cdr / Or make me feel three feet thick 20:04:15 no rplacd, check 20:04:36 Where oes the name rplacd come from, anyway? 20:04:48 At any rate, I think CLers these days just use setf instead 20:04:54 wait that's CL 20:05:18 *set-cdr! 20:05:29 Sgeo: what are you looking for in a Scheme? 20:05:39 Sgeo: replace c[d]r 20:05:51 I tend to look for one that runs Scheme programs, in which case, just about any of them work 20:06:26 Can be used to compile, or for long-running programs that can be modified while they're running. Nice FFI 20:06:35 hiiii 20:06:43 ajf is not an ffi. 20:06:58 wat 20:07:14 nor is ajf an asdf, i bet 20:07:23 or a qwertyuiop 20:08:48 but poiuy_qwert might be, if he were here 20:09:04 IT IS POSSIBLE 20:09:24 hmm 20:09:31 I want to make a new esoteric language 20:09:48 Any ideas from the ideas list that appeal to any of you particularly? 20:09:58 -!- oerjan has quit (Quit: Good night). 20:10:21 !c float a=0.0f; printf("%2x%2x%2x%2x", ((char*)a)[0], ((char*)a)[1], ((char*)a)[2], ((char*)a)[3]); 20:10:24 ​Does not compile. 20:10:32 !c int main(void) {float a=0.0f; printf("%2x%2x%2x%2x", ((char*)a)[0], ((char*)a)[1], ((char*)a)[2], ((char*)a)[3]);} 20:10:33 ​Does not compile. 20:10:41 what have I done wrong there? 20:10:43 fizzie you here 20:10:46 oh, missing an & 20:10:55 !c int main(void) {float a=0.0f; printf("%2x%2x%2x%2x", ((char*)&a)[0], ((char*)&a)[1], ((char*)&a)[2], ((char*)&a)[3]);} 20:11:07 !c int main(void) { printf("Hello world!"); return 0; } 20:11:45 ... 20:11:48 we have a C bot here? 20:11:48 !c asdf 20:11:49 ​Does not compile. 20:11:55 lol 20:12:00 ooh I should make a devperc bot 20:12:02 Well, this is distressing 20:12:03 :> 20:12:29 I think it just checks if C compiles or not 20:12:35 Oh 20:12:37 Boo 20:12:38 !c int main(void) {float a=0.0f; printf("%2x%2x%2x%2x\n", ((char*)&a)[0], ((char*)&a)[1], ((char*)&a)[2], ((char*)&a)[3]);} 20:12:44 nah, I was just describing its apparent behaviour 20:12:48 I'm adding a \n because stdio caching 20:13:09 but that doesn't seem to help either 20:13:13 !c int main(void) { printf("Is it legal to leave off the return like that?\n"); return 0; } 20:13:19 Sgeo: is in C99 20:13:20 !c printf("EGOBOT IS A FATTY FATTY FAT FAT"); 20:13:22 ​EGOBOT IS A FATTY FATTY FAT FAT 20:13:24 but only from main 20:13:27 ah, no int main() stuff? 20:13:28 Sgeo: you have rather uncompromising requirements. I don't know if you'll find a Scheme with all three of those. 20:13:34 !c float a=0.0f; printf("%2x%2x%2x%2x\n", ((char*)&a)[0], ((char*)&a)[1], ((char*)&a)[2], ((char*)&a)[3]); 20:13:36 ​0 0 0 0 20:13:43 ah, so 0.0f /is/ all-bits-zero? 20:13:45 cpressey, I think both Chicken and Racket fit. 20:13:54 !c parse_brainfuck("?"); 20:13:56 ​Does not compile. 20:14:09 fuck you EgoBot y u no support brainfuck 20:14:18 needs more brainfuck 20:14:20 obviously 20:14:21 !bf +[.+] 20:14:22 ​........ 20:14:22 Racket (/MzScheme) apparently has OK FFI, but I didn't know it even had a compiler 20:14:28 oh 20:14:31 hmm 20:14:35 !bf [] 20:14:46 Chicken is reputedly a fine compiler, but I don't know anything about its FFI 20:14:49 cpressey, um, well, at least there's a "Make Executable" option in DrRacket 20:15:18 !bf [.>] 20:15:20 "Make Executable" doesn't necessarily compile any code -- it can just link an interpreter together with the source 20:15:41 Don't know if that's what Racket does, but for other languages, that's the case 20:15:50 !bf [.+] 20:16:01 I think it just checks if C compiles or not 20:16:02 No? 20:16:03 It runs it. 20:16:14 !c puts("asdkjaf"); 20:16:15 !bf >+++++++++[<++++++++>-]<.>+++++++[<++++>-]<+.+++++++..+++.>>>++++++++[<++++>-] 20:16:15 ​Hello 20:16:16 elliott: I was remarking on the fact that nobody had got anything to happen but compile errors 20:16:16 ​asdkjaf 20:16:19 <.>>>++++++++++[<+++++++++>-]<---.<<<<.+++.------.--------.>>+. 20:16:25 lol 20:16:31 ah, no int main() stuff? 20:16:32 you can do that 20:16:34 dunno why it isn't working 20:16:50 perhaps it's checking for "int main()" literally, and I put (void) in the parens out of correctnes 20:16:51 !bf [+]. 20:17:13 !c int main() { printf("Checking ais523's hypothesis\n"); return 0; } 20:17:15 ​Checking ais523's hypothesis 20:17:26 ais523: not correctness 20:17:30 they are identical in a definition 20:17:37 it's in ANSI C /declarations/ that they differ 20:17:41 !c int main(void) { printf("Checking ais523's hypothesis\n"); return 0; } 20:17:43 and () is still perfectly valid, it just means something subtly different 20:17:44 ^^just in case 20:17:49 and can change the calling convention 20:17:59 (I think) 20:18:28 !c void main() { printf("Wouldn't it be funny if it allowed this?\n"); } 20:18:43 Aww 20:18:47 !c printf("\134ACTION hates all of you"); 20:18:49 ​\ACTION hates all of you 20:18:59 !c printf("%d", sizeof void); 20:19:00 ​Does not compile. 20:19:09 !c printf("%d", sizeof int); 20:19:10 ​Does not compile. 20:19:18 is my C that rusty? 20:19:25 !c printf("%d", sizeof(void*)); 20:19:26 ​8 20:19:41 cpressey: you need parens around the name of a type 20:19:42 !c printf("%d", sizeof(int)); 20:19:43 !c printf("%d", sizeof(int)); 20:19:44 ​4 20:19:45 ​4 20:19:45 !c printf("\001ACTION hates all of you"); 20:19:47 ​.ACTION hates all of you 20:19:47 cpressey: you need parens around the name of a type 20:19:48 lies 20:19:53 !c printf("\1ACTION hates all of you"); 20:19:54 elliott: inside sizeof, at least 20:19:55 ​.ACTION hates all of you 20:19:57 hmm 20:20:01 oh, is it just "sizeof x" that's valid 20:20:05 but it has to be "sizeof (int)"? 20:20:07 that's really weird 20:20:07 !c printf("%cACTION hates all of you",1); 20:20:09 ​.ACTION hates all of you 20:20:10 that's so stupid 20:20:15 !c printf("%d", sizeof 0); 20:20:16 !c printf("\u0001ACTION hates all of you"); 20:20:17 ​Does not compile. 20:20:18 ​4 20:20:25 but there are a handful of things in C that are that stupid, so, ok 20:20:29 hmm, I wonder what's wrong with my \u there? 20:20:37 !c printf("\001ACTION hates all of you\001",1); 20:20:39 ​.ACTION hates all of you. 20:20:39 !c int x; printf("%d", sizeof x); 20:20:41 ​4 20:20:50 egobot y u no allow "\u0001" 20:21:04 \001 shouldn't be turning into . unless EgoBot's deliberately filtering output, I think 20:21:05 stop using that fucking meme 20:21:07 !bf +. 20:21:08 ​. 20:21:13 it is deliberately filtering it 20:21:18 FFS have you been asleep the past forever days 20:21:20 !c putchar(1); printf("ACTION hates all of you"); putchar(1); 20:21:21 ​.ACTION hates all of you. 20:21:26 ffffffffffffffffffffffffffffffffff 20:21:31 he had to do it? 20:21:31 ajf, it won't work 20:21:35 are you all dense X_X 20:21:38 :< 20:21:41 OK 20:21:59 elliott, I'm not dense! 20:22:08 !c int a\u2C22a = 4; printf("%d\n", a\u2C22a); 20:22:09 ​Does not compile. 20:22:16 EgoBot: do you not even support C94? 20:22:27 :D 20:22:32 it's gnu99 IIRC 20:22:39 (the \u stuff is the Unicode version of trigraphs, really) 20:22:52 glagolitic capital letter spidery ha /is/ a letter, right? it even says so in its name 20:23:01 !c #include main() { while(1){ fork(); } } 20:23:40 !c #include main() { while(1){ fork(); printf("Forked!"); } } 20:23:41 hmm, I get parse errors from both GCC and clang on the declaration 20:23:41 !c char s??(10??); printf("%s", s); 20:23:42 ​Does not compile. 20:23:46 is it only Java where you can do that? 20:23:56 !c #include while(1){ fork(); printf("Forked!"); } 20:23:58 i believe so, ais523 20:24:02 yes 20:24:07 C uses 8-bit strings 20:24:09 !c char s??(10??); 20:24:10 ​Does not compile. 20:24:16 no trigraphs at all, eh 20:24:23 !c fork(); printf("Forked!"); 20:24:24 ​Forked! 20:24:30 a quick Internet search implies it's legal in at least C++ 20:24:35 !c while(1) { fork(); printf("Forked!"); } 20:24:42 but even g++ doesn't like it 20:25:10 !c int i; for (i = 0; i < 25; ++i) { fork(); printf("Forked!"); } 20:25:12 ​Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked! 20:25:23 !c int i; for (i = 0; i < 500; ++i) { fork(); printf("Forked!"); } 20:25:39 EgoBot y u no fork 20:25:44 !c int i; for (i = 0; i < 100; ++i) { fork(); printf("Forked!"); } 20:25:46 $ g++ test.c 20:25:46 ​Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Fo 20:25:47 test.c:1: error: stray ‘\’ in program 20:25:48 test.c:1: error: expected initializer before ‘u2C22a’ 20:25:51 !c int i; for (i = 0; i < 100; ++i) { fork(); printf("Forked!"); } 20:25:52 !c int i; for (i = 0; i < 100; ++i) { fork(); printf("Forked!"); } 20:25:52 !c int i; for (i = 0; i < 100; ++i) { fork(); printf("Forked!"); } 20:25:52 !c int i; for (i = 0; i < 100; ++i) { fork(); printf("Forked!"); } 20:25:53 !c int i; for (i = 0; i < 100; ++i) { fork(); printf("Forked!"); } 20:25:53 ​Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Fo 20:25:55 ais523: It's in C99, at least; "Universal character names [of the \u hex-quad and \U hex-quad hex-quad variety] may be used in identifiers, character constants and string literals ..." 20:25:55 !c int i; for (i = 0; i < 100; ++i) { fork(); printf("Forked!"); } 20:25:57 ​Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Fo 20:25:58 !c int i; for (i = 0; i < 100; ++i) { fork(); printf("Forked!"); } 20:26:00 ​Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Fo 20:26:00 !c int i; for (i = 0; i < 100; ++i) { fork(); printf("Forked!"); } 20:26:02 ​Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Fo 20:26:02 egads 20:26:03 !c int i; for (i = 0; i < 100; ++i) { fork(); printf("Forked!"); } 20:26:05 ​Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Fo 20:26:05 !c int i; for (i = 0; i < 100; ++i) { fork(); printf("Forked!"); } 20:26:07 ​Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Fo 20:26:08 !c int i; for (i = 0; i < 100; ++i) { fork(); printf("Forked!"); } 20:26:10 ​Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Fo 20:26:10 !c int i; for (i = 0; i < 100; ++i) { fork(); printf("Forked!"); } 20:26:12 Could you please stop that? 20:26:12 ​Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Fo 20:26:13 wait what 20:26:14 fizzie: yep, I just checked C++96 20:26:15 aaaaa 20:26:23 HOW DO I STOP IT?! 20:26:25 oh 20:26:30 ajf: it's not really a forkbomb if you have to do it manually 20:26:31 You stop it by stopping saying it. 20:26:38 ais523: true 20:26:43 anyway, g++ is definitely misparsing that 20:26:44 let's see 20:26:58 there's no way to parse it as \ followed by u2C22a 20:27:20 and Clang is counting the \ as a separate token too 20:27:28 do any compilers get that right? 20:28:02 !c int i; for (i = 0; i < 100; ++i) { if (fork()==0){while(1){fork();}}else{printf("Forked!");}} 20:28:04 ​Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Fo 20:28:13 awww yeaaah 20:28:17 FORKBOMBS 20:28:46 !c int i; for (i = 0; i < 100; ++i) { if (fork()==0){while(1){fork();}}else{printf("Forked!");}} 20:28:48 ​Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Fo 20:29:06 Why hasn't it broke yet? :< 20:29:44 even more bizarre: https://www.securecoding.cert.org/confluence/display/seccode/PRE30-C.+Do+not+create+a+universal+character+name+through+concatenation implies that \u0401 works on gcc, but I just tested it and it doesn't 20:29:51 ajf: because the processes are getting killed 20:29:57 by EgoBot's anti-stupidity sandbox 20:30:13 it detects stupidity and kills it 20:30:18 aww 20:30:19 hmm 20:30:23 Hmm 20:30:31 Racket's format doesn't have ~{ and ~}? 20:30:33 * Sgeo has a sad 20:30:40 !c int i; for (i = 0; i < 100; ++i) { if (fork()==0){while(1){fork(); print("Don't worry I'm not stupid. Honest. Please :<");}}else{printf("Forked!");}} 20:30:42 ​Does not compile. 20:30:51 !c int i; for (i = 0; i < 100; ++i) { if (fork()==0){while(1){fork(); printf("Don't worry I'm not stupid. Honest. Please :<");}}else{printf("Forked!");}} 20:30:53 ​Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Fo 20:31:02 ais523: muahahahaha 20:32:00 why the evil laugh? 20:32:09 because 20:32:22 even more bizarre: https://www.securecoding.cert.org/confluence/display/seccode/PRE30-C.+Do+not+create+a+universal+character+name+through+concatenation implies that \u0401 works on gcc, but I just tested it and it doesn't 20:32:23 I think I may break the sandbox 20:32:28 maybe GNU C lacks it specifically for some reason 20:32:28 If I can convince it 20:32:32 no, that's weird, GNU C is just extensions 20:32:44 ajf: wrong. 20:32:55 !c int i; for (i = 0; i < 100; ++i) { if (fork()==0){while(1){fork(); printf("I AM NOT STUPID. REALLY. YOU CAN BELIEVE ME. I AM SANE. SEE!");}}else{printf("Forked!");}} 20:32:57 ​Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Forked!Fo 20:33:19 ajf: you're about the twentieth person to try and break the well-tested sandboxing system EgoBot uses 20:33:20 good luck :P 20:33:24 !c int i; for (i = 0; i < 100; ++i) { printf("nya"); } 20:33:26 ​nyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanyanya 20:33:51 Could you possibly do the noisy stuff in a privmsg? 20:34:08 !c int i; for (i = 0; i < 10; ++i) { if (fork()==0){while(1){fork(); printf("---");}}else putchar('f');} 20:34:10 ​ffffffffff 20:34:12 !c int i; for (i = 0; i < 10; ++i) { printf("nya"); } printf("cat"); 20:34:13 (A non-channel privmsg if you want to be pedantic about it.) 20:34:14 ​nyanyanyanyanyanyanyanyanyanyacat 20:34:16 I just tried to make an executable with Racket 20:34:19 A very trivial thing 20:34:27 And it's 4.5MB 20:34:38 And it's only supposed to be able to run on my machine, so 20:35:05 !c int i; for (i = 0; i < 10; ++i) { printf("nya"); } printf("ncat"); 20:35:07 ​nyanyanyanyanyanyanyanyanyanyancat 20:35:19 http://pastie.org/1894499 this is 4.5MB 20:35:38 Sgeo: yup 20:36:09 i would bet what you have there is a copy of the Racket interpretr with that code just kind of slapped in 20:36:18 ais523: "GCC currently only permits universal character names if -fextended-identifiers is used, because the implementation of universal character names in identifiers is experimental." 20:36:25 if that's good enough for what you want to do, though, go for it 20:36:32 !c int i; printf("http://reddit.com/r/"); for (i = 0; i < 7; ++i) { printf("f"); } for (i = 0; i < 12; ++i) { printf("u"); } printf("/"); 20:36:33 ​http://reddit.com/r/fffffffuuuuuuuuuuuu/ 20:36:34 fizzie: good to know 20:36:45 ajf: 7 then 12, is it? 20:36:52 I know it's defined numbers, I just can never remember what they are 20:36:53 yes 20:37:03 ais523: f7u12 20:37:04 yes. 20:37:24 I find that easy to remember 20:37:28 -!- FireFly has joined. 20:40:12 And the version for distribution results in a .zip file, which contains a .exe and some .dlls 20:43:03 -!- TeruFSX has quit (Ping timeout: 240 seconds). 20:44:20 !c char i; for (i = 0; i < 256; ++i) { putchar(i); } 20:44:48 !c int i; for (i = 0; i < 256; ++i) { putchar(i); } 20:45:17 !c int i; for (i = '\n'; i < 256; ++i) { putchar(i); } 20:45:25 !c int i; for (i = 'A'; i < 256; ++i) { putchar(i); } 20:45:27 ​ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ 20:45:57 yay 20:46:36 !c int i; for (i = ' '; i < 256; ++i) { putchar(i); } 20:46:38 ​!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ 20:46:47 YAAAAAAAAAAAYYYYY 20:47:05 !c int i; for (i = ' '; i <= '~'; ++i) { putchar(i); } 20:47:07 ​!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ 20:47:16 yay full printable characters 20:47:42 !c int i; for (i = ' '; i <= '~'; ++i) { putchar(i % 7); } 20:47:44 ​... 20:47:57 lol 20:48:23 !c int i; for (i = 0; i <= '~'-' '; ++i) { putchar(i % 7+' '); } 20:48:25 ​!"#$%& !"#$%& !"#$%& !"#$%& !"#$%& !"#$%& !"#$%& !"#$%& !"#$%& !"#$%& !"#$%& !"#$%& !"#$%& !"# 20:48:32 :> 20:49:56 ajf: Note: the above is undefined behavior, and the compiler would be entirely correct in killing you and all that you love. 20:50:23 what's undefined about that? 20:50:50 Arithmetic on characters. 20:50:57 I am aware 20:51:17 but I don't care in the slightest 20:51:27 !c int i; for (i = 0; i <= '~'-' '; ++i) { putchar(i % '\n'+' '); } 20:51:29 ​!"#$%&'() !"#$%&'() !"#$%&'() !"#$%&'() !"#$%&'() !"#$%&'() !"#$%&'() !"#$%&'() !"#$%&'() !"#$ 20:51:50 !c int i; for (i = 0; i <= '~'-' '; ++i) { putchar(i % 17+' '); } 20:51:52 ​!"#$%&'()*+,-./0 !"#$%&'()*+,-./0 !"#$%&'()*+,-./0 !"#$%&'()*+,-./0 !"#$%&'()*+,-./0 !"#$%&'() 20:51:54 erm 20:51:57 is it UB? 20:52:00 I thought it just had unspecified results 20:52:04 apart from digits 20:52:08 afaik, you are right 20:52:10 which are contiguous 20:52:12 Oh, right, it's not actually UB. 20:52:13 and digits are unspecified too 20:52:46 luckily, IBM's horribe EBCDIC also has '0' to '9' contiguous 20:52:52 but yes it is not portable code 20:53:03 portable across machines, but not charsets 20:53:28 But who uses charsets without an ASCII subset these days, anyways? 20:53:41 no sane person 20:53:45 except IBM 20:53:49 wait they aren't sane 20:53:53 my statement holds true 20:54:21 Unless backwards compatibility is needed, they're using UTF-16. 20:54:27 Even on mainframes. 20:54:42 well 20:54:47 UTF something 20:54:52 UTF-16. 20:54:57 may be 32 or 8 in some cases 20:55:08 Okay, true. 20:55:18 And they never really use UTF-EBCDIC. Go figure. 20:55:19 or Japn 20:55:27 Japn‽ 20:55:27 they use SHIFT-JIS 20:55:30 JAPN 20:55:34 *JAPAN 20:55:38 uh 20:55:50 Shift-JIS is outmoded in Japan, anyways. 20:55:59 still widely usd 20:56:01 :/ 20:56:14 *Not to mention* it was designed specifically to have an ASCII subset. 20:56:17 Why? Han unification 20:56:26 (actually, a JIS X 0201 subset) 20:56:42 (which itself has an ASCII subset) 20:57:12 ajf: There are no current OSes that use Shift-JIS. 20:57:58 Correct, but many web pages are encoded in it 20:58:09 And legacy applications 20:58:12 日本はShiftJISをする 20:58:24 Which leaves it as a *legacy charset*. 20:58:28 i.e. outmoded. 20:58:30 true 20:58:36 However some CHOOSE to use it. 20:58:42 Han Unification 20:58:50 That's a piss-poor reason. 20:59:13 Felix... can't seem to... read from stdin. 20:59:51 Especially considering that Shift-JIS refers to a JIS encoding standard which defines its characters in terms of Unicode codepoints, meaning that Shift-JIS also has Han unification. 21:00:17 ok, NOW it can. what did i change? 21:00:43 OH OH OH 21:00:56 if you never use the variable in which you stored the input, it gets OPTOMIZED AWAY 21:01:17 X-D 21:01:20 Nice. 21:03:55 ajf: Oh, yeah, and there's the nice property that Shift-JIS is a motherfucking *terrible* character encoding. 21:04:05 ikr 21:04:25 wait 21:04:38 JIS defines its chars in terms of Unicode codepoints? 21:04:39 hmm 21:04:47 Sound's like china's charset 21:04:48 It didn't originally, but it does now. 21:04:56 Really just a Unicode transformation 21:05:06 The JIS charsets are *defined as* subsets of Unicode. 21:05:28 I'd argue it works in reverse 21:05:39 Unicode was based on other charsets 21:05:50 Yes, I'm aware. 21:06:46 Defined such that converting into Unicode has an inverse, for any used charset. 21:06:59 yep 21:07:09 most of that inverse is "untranslatable" though 21:07:47 The idea is that if you convert a string into Unicode, you can then convert that exact string back *from* Unicode. 21:08:27 Obviously, converting arbitrary strings from Unicode and then back is not really feasible. 21:08:59 Unless you want Unicode to be a subset of ASCII, that is. :P 21:09:06 hmm 21:10:10 Hmm, maybe I should make a version of whitespace that uses all unicode spacing chars 21:10:19 * pikhq continues to wonder why JIS X 0208 stuck ¥ in the space where \ usually goes 21:10:29 Erm, s/208/201/ 21:10:45 so that windows users could enjoy really fun paths 21:10:52 pikhq: no 21:10:55 oh, 201 21:11:16 space restrictions I'd guess 21:11:21 ajf: such a language already exissts I believe 21:11:40 ajf: http://esolangs.org/wiki/Unispace 21:11:45 ajf: No, there's actually a lot of unusued space. 21:11:53 :/ 21:11:56 Well, "a lot" in the context of an 8 bit encoding. 21:12:11 ok, it's not exclusively unicode, it still has ascii space and newline in it 21:12:50 not what I meant 21:12:59 I meant utilize all spacing characters in unicode 21:13:03 including the ascii ones 21:13:07 that does what I want 21:15:56 Well, today I implemented Deadfish in Pure and Felix, and it made me want to do extremely nasty things to all programming language designers and maintainers the world over. 21:18:02 C++ templates are the best language 21:18:14 cpressey: What's wrong with Pure though? 21:18:17 My experience with it was pleasant. 21:18:31 (printf "%s " ">>>") 21:18:34 That seems a little... redundant. 21:19:07 Versus (printf ">>> ") that is. 21:19:11 Not as much as is wrong with Felix, that's for sure 21:19:18 main a = (printf "%s " ">>>") $$ (main (fish (limit a) (gets))); 21:19:19 Oh, try it! 21:19:21 I think this could be 21:19:28 I'm sure it could be shorter 21:19:33 I'm not golfing, here 21:19:33 main a = printf ">>> " $$ main (fish (limit a) gets) 21:19:35 Or such 21:19:40 Oh, I'm just talking about readability 21:19:43 The excessive parents are kind of ugly. 21:19:49 printf with one argument seems to not exist 21:19:56 Maybe there's puts or similar 21:19:58 limit a = if a == 256 || a < 0 then 0 else a; 21:20:01 Hmm, I think Pure has guards too 21:20:03 Not so sure about that, though 21:20:05 puts appends a newline iirc 21:20:18 fish a "o" = a when puts (str a) end; <-- More nitpicking, but isn't "when" used for guards?? 21:20:26 Seems weird to use it for incidental effects but I dunno 21:20:27 oh, probably. feel free to further, uh, Pure-ify it :) 21:20:31 I'm no Pure programmer :P 21:20:36 I'll play around with it though 21:20:42 I sure hope Pure has a binary 21:20:49 the manual said 'when' could be used like that :) 21:21:03 Oh, then it's probably idyomatticke. 21:21:09 Great, only Windows binaries. 21:21:29 it didn't *encourage* that use, but... yes. 21:23:04 I guess the main thing about both of them (but especially Felix) is that input and output (especially input) are an afterthought. Hey, let's just wrap the C API. And let's not really document it. Who would want to read input from a user, anyway? 21:24:58 -!- Sgeo has quit (Ping timeout: 246 seconds). 21:25:02 meanwhile i'm designing esolangs in which I can't figure out how to accomplish useful recursion :/ 21:25:42 psht 21:25:46 try doing input in C++ templates 21:25:53 #define PROGRAM i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,o,s,i,o,i,i,i,i,i,i,i,s,s,s,o 21:25:55 that's all i get 21:26:51 -!- Sgeo has joined. 21:28:41 yeah the designers of the C++ template really should have done a better job considering input 21:28:46 *template system 21:30:29 s/done a better job considering input/been shot/ 21:31:42 that works too 21:34:58 ais523: you forgot to add downright to the language list btw 21:35:16 uses require import using include! 21:35:20 elliott: ah, OK 21:35:26 I'll do it myself if nobody else does first 21:35:49 oh dear, we do not have a mathematica Deadfish 21:36:02 hmm, I'm assuming mathematica even has standard input 21:36:13 although arguably it should just look like Deadfish[{i,i,i,s,o}] 21:36:33 http://reference.wolfram.com/mathematica/ref/Input.html 21:37:13 "interactively reads in one Mathematica expression." 21:37:23 InputString is more like it 21:37:30 InputString[">>> "] or similar 21:38:08 pikhq: I added that quote to bash.org 21:38:15 err 21:38:17 what quote? 21:38:27 21:29 < cpressey> yeah the designers of the C++ template really should have done a better job considering input 21:38:30 21:29 < cpressey> *template system 21:38:31 and who is so delusional to think that bash ever accepts new quotes any more? :) 21:38:33 21:31 < pikhq> s/done a better job considering input/been shot/ 21:38:37 ajf: we have our own quote database... 21:38:40 `quote 21:38:43 ​352) django is named after a person? thought it would be a giraffe or something 21:38:53 meh 21:38:59 add it to that too 21:39:08 Not funny enough :P 21:39:17 I lol'd 21:39:18 :/ 21:39:34 `quote django 21:39:36 ​352) django is named after a person? thought it would be a giraffe or something 21:39:43 thankfully only one 21:39:53 `addquote `quote django ​352) django is named after a person? thought it would be a giraffe or something thankfully only one 21:39:54 ​407) `quote django ​352) django is named after a person? thought it would be a giraffe or something thankfully only one 21:40:14 `quote django 21:40:16 ​352) django is named after a person? thought it would be a giraffe or something \ 407) `quote django ​352) django is named after a person? thought it would be a giraffe or something thankfully only one 21:40:26 NOW ITS ALL CRAZY-LIKE 21:40:27 thankfully only two 21:40:51 there's no way that would fit on one line so i'm not even going to try and add it 21:40:52 or however it works 21:40:56 `addquote `quote django ​352) django is named after a person? thought it would be a giraffe or something \ 407) `quote django ​352) django is named after a person? thought it would be a giraffe or something thankfully only one thankfully only two 21:40:58 wow 21:40:58 ​408) `quote django ​352) django is named after a person? thought it would be a giraffe or something \ 407) `quote django ​352) django is named after a person? thought it would be a giraffe or something thankfully only one thankfully only two 21:41:04 yeah these are quality 21:41:08 -!- MigoMipo has quit (Read error: Connection reset by peer). 21:41:13 `quote 21:41:13 `quote 21:41:13 `quote 21:41:14 ​190) It's like mathematicians, where the next step up from "trivial" is "open research question". "Nope... No...This problem can't be done AT ALL. This one--maybe, but only with two yaks and a sherpa. ..." 21:41:15 ​135) like, just like I'd mark "Bob knob hobs deathly poop violation EXCREMENT unto;" as English alise: that's great filler ais523: well it contains all the important words in the english language... 21:41:16 ​278) mtve, now he's an expert idler. mtve: kitty kitty kitty 21:41:21 `addquote yeah the designers of the C++ template system really should have done a better job considering input s/done a better job considering input/been shot/ 21:41:22 ​409) yeah the designers of the C++ template system really should have done a better job considering input s/done a better job considering input/been shot/ 21:41:31 wrong formatting ;D 21:41:33 `delquote yeah the designers of the C++ template system really should have done a better job considering input s/done a better job considering input/been shot/ 21:41:35 No output. 21:41:36 erm 21:41:40 `delquote ​409 21:41:41 * elliott fixes 21:41:42 No output. 21:41:47 `addquote yeah the designers of the C++ template system really should have done a better job considering input s/done a better job considering input/been shot/ 21:41:49 ​410) yeah the designers of the C++ template system really should have done a better job considering input s/done a better job considering input/been shot/ 21:41:52 ugh 21:41:57 `delquote ​409 21:41:58 and my name wrong 21:41:59 No output. 21:42:02 wtf 21:42:04 `url bin/delquote 21:42:06 ​http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/bin/delquote 21:42:08 oh 21:42:09 my bad 21:42:10 :/ 21:42:27 Gregor: your fake character breaks url detection here 21:42:32 and it even copies with it, so it wouldn't load in my browser 21:42:45 progress 21:43:03 ampersand please 21:43:09 `run delquote ​409 2>&1 21:43:10 never mind 21:43:11 ​/tmp/hackenv.24269/bin/delquote: line 3: ​409: syntax error: operand expected (error token is "​409") 21:43:16 x_X 21:43:24 when did that break 21:43:41 ok wait 21:44:03 `run sed -i 's/[ "$((id+0))" = "$id" ]/expr "$1" + 0 >/dev/null 2>&1/' bin/delquote 21:44:05 No output. 21:44:11 gah 21:44:19 `run sed -i 's/\[ "$((id+0))" = "$id" \]/expr "$1" + 0 >/dev/null 2>&1/' bin/delquote 21:44:21 No output. 21:44:26 sffkldmc 21:44:30 now why isn't this working 21:44:32 oh wait 21:44:39 `run stfu 21:44:41 No output. 21:44:43 `run x=9; echo "$((x+9))" 21:44:45 ​18 21:44:48 hmm 21:45:03 `run sed -i 's/[ "\$((id+0))" = "\$id" ]/expr "$1" + 0 >/dev/null 2>&1/' bin/delquote 21:45:05 No output. 21:45:05 oh wait 21:45:05 argh 21:45:15 `run sed -i 's|[ "\$((id+0))" = "\$id" ]|expr "$1" + 0 >/dev/null 2>&1|' bin/delquote 21:45:17 No output. 21:45:20 oijsgdfkgfdklghlkdfgj 21:45:32 #!/bexpr "$1" + 0 >/dev/null 2>i1n/sh 21:45:32 expr "$1" + 0 >/dev/null 2>i1d=$1 21:45:32 [expr "$1" + 0 >/dev/null 2> 1"$((id+0))" = "$id" ] || exit 1 21:45:32 heaexpr "$1" + 0 >/dev/null 2>d1 -n $((id-1)) quotes >quotes.new 21:45:32 taexpr "$1" + 0 >/dev/null 2>i1l -n +$((id+1)) quotes >>quotes.new 21:45:32 expr "$1" + 0 >/dev/null 2>d1iff quotes quotes.new >/dev/null && exit 1 21:45:34 mvexpr "$1" + 0 >/dev/null 2> 1quotes.new quotes 21:45:36 echoexpr "$1" + 0 >/dev/null 2> 1'*poof*' 21:45:38 holy shit 21:45:42 `help 21:45:44 Runs arbitrary code in GNU/Linux. Type "`", or "`run " for full shell commands. "`fetch " downloads files. Files saved to $PWD are persistent, and $PWD/bin is in $PATH. $PWD is a mercurial repository, "`revert " can be used to revert to a revision. See http://codu.org/projects/hackbot/fshg/ 21:45:55 `revert 291 21:45:56 Done. 21:46:07 `run sed -i 's|\[ "\$((id+0))" = "\$id" \]|expr "$1" + 0 >/dev/null 2>&1|' bin/delquote 21:46:08 No output. 21:46:15 expr "$1" + 0 >/dev/null 2>[ "$((id+0))" = "$id" ]1 || exit 1 21:46:17 sodjgogojgoidfgjdg 21:46:19 `revert 291 21:46:21 Done. 21:46:24 `run sed -i 's|\[ "\$((id+0))" = "\$id" \]|expr "$1" + 0 >/dev/null 2>\&1|' bin/delquote 21:46:26 No output. 21:46:29 ... 21:46:33 `run sed -i 's|\[ "\$((id+0))" = "\$id" \]|expr "$1" + 0 >/dev/null 2>\&1|' bin/delquote 21:46:34 oh good 21:46:35 No output. 21:46:43 `delquote ​409 21:46:44 No output. 21:46:47 seiojgnkoiredk nioekjoighfd 21:46:50 `run delquote ​409 21:46:51 No output. 21:47:03 SO MUCH HATE 21:47:49 Notorious Norwegian bank robber Seiojgnkoiredk Nioekjoighfd, 49, was convicted today of... 21:47:56 :D 21:48:30 `quote 409 21:48:32 ​409) yeah the designers of the C++ template system really should have done a better job considering input s/done a better job considering input/been shot/ 21:48:49 good job 21:49:15 it isn't working 21:49:22 no clue why -- wait 21:49:35 `run sh -c 'id=9; echo $((id+9))' 21:49:37 ​18 21:49:39 osdijfndopg 21:50:16 today I learned 9+9 is 18 21:52:57 -!- ajf has changed nick to ajf|offline. 21:53:06 goodnight. 21:55:36 I need a third dimension in which I can express formal and actual parameters or NO [USEFUL] RECURSION FOR ME. 21:56:07 or maybe i just need SPECIAL ARROWS 21:56:40 does... does Eightebed distinguish = in an expression and a statement? 21:56:43 aaaaaaaaaaaaaaa 21:56:51 a = (a = a); 21:57:23 I... think so? 21:57:37 it does, seemingly 21:57:39 scary 21:57:39 a = 1; <-- assignment. if (a = 3) <-- equality 21:57:41 like basic 21:57:49 yeah but can you do "a = (b = c)" in BASIC? 21:58:02 I don't remember 21:58:23 btw, I think you could use the least significant bit of the pointer as the valid flag, since all pointers are even on every OS ever 21:58:29 maybe you already do, dunno 21:58:36 I don't 22:00:55 hmm, it's TC right? 22:01:52 I don't think so, because of bounded memory, but aside from that, it should be. 22:01:58 Well 22:02:06 actually, there is no bound on pointer size, so maybe it is 22:02:09 I don't see anything mandating finite pointers, yeah 22:02:15 I think you could avoid the mark phase. 22:02:55 Keep a table; pointers are indices into this table. The table entries consist of the pointer, the valid flag, and finally, a list of (plain regular non-Eightebed) pointers to places where this pointer is referenced on the heap. 22:03:07 Then all you need to do is append to that list whenever you assign a variable to a pointer. 22:03:18 Then "free" is just O(n) in the number of aliases. 22:03:27 Which looks even less like a garbage collector. 22:04:03 I think I remember thinking of something like that and rejecting it. 22:04:20 Because it wouldn't work or because it's lame? :) 22:04:31 actually, wait, you do not even need the list of aliases 22:04:33 I think the question was, how would you manage the table? 22:04:35 -!- aloril has quit (Ping timeout: 250 seconds). 22:04:36 since the valid bit is in the table 22:04:49 cpressey: Same way any allocator works. 22:04:57 Use a free list. 22:05:18 Well, feel free to implement it and see 22:05:28 Hmm... 22:05:30 I'm done with Eightebed unless there's another hole 22:05:59 I think you could actually just store the data inline with the table, come to think of it. 22:06:05 So this is literally like writing your own memory allocator. 22:07:29 Yeah. 22:07:39 If you have a flat memory space, then just store the valid bit before every block of memory. 22:07:46 Then when dereferencing, just add one to the pointer. 22:07:54 Or even, have the bit one /before/ the data, and checking validity is just 22:07:59 if ([asterisk](ptr-[one])) 22:08:04 When do you know you can re-use the memory? 22:08:53 oh, hmm 22:08:59 -!- pikhq_ has joined. 22:09:14 cpressey: that is problematic :) 22:09:21 similarly, in the table solution, you could never reuse table entries 22:09:30 ok so here's the revised table solution 22:09:35 the table just keeps the real pointer and all the aliases 22:09:41 but the indexes into the table keep the valid bit 22:09:47 then free is again O(n) on number of aliases 22:09:55 and you can reuse table entries as soon as freeing, because it's never used again 22:09:58 because the valid bits go off 22:10:22 multiple indexes into same table cell? 22:10:31 each index has its own valid bit? 22:10:50 yep 22:11:00 how do i know some other index doesn't think this table cell is still valid 22:11:11 table = map from int -> {pointer, list of aliases} 22:11:15 free(index) := { 22:11:28 detagged := detag(index) // detags the valid bit 22:11:35 -!- pikhq has quit (Ping timeout: 240 seconds). 22:11:37 for alias in table[detagged].aliases { 22:11:52 tag-as-invalid deref(alias) 22:11:53 } 22:11:58 add detagged to table-free-list 22:11:59 } 22:12:15 cpressey: some other index? 22:12:19 the table stores all aliases to this index 22:12:28 whenever you assign an index to a variable, you go add it to the alias list in the table 22:12:56 and if you store that index in a structure? 22:13:10 define structure? 22:13:16 allocated memory. 22:13:25 basically it seems as if you are marking as you go 22:13:44 then that point of the structure gets added to the alias list 22:14:34 your free is O(n) because you're caching the references in the list 22:14:48 yep 22:14:56 but it's better than a whole heap traversal 22:15:37 ok, well, if optimizing a loophole response to an offhand claim is your cup of tea, go for it 22:15:52 the idea for me was for it to be done at all 22:15:59 i'm just saying that it sounds like less of a loophole :) 22:16:06 it's more like refcounting this way 22:16:23 refcounting still sounds like GC to me 22:16:24 -!- aloril has joined. 22:17:09 yes but istr part of gregor's complaint being that it's a colossally slow free() like this 22:17:26 whereas O(n) in aliases is pretty okay 22:17:42 well, it's "well known" that refcounting is "faster than" mark-and-sweep 22:17:59 yes but it's not obvious that refcounting applies to eightebed :) 22:18:06 especially since its a list rather than a number here 22:18:23 ok 22:18:57 i'm working on something else and this doesn't really interest me, is all 22:20:02 though I'm still far from convinced that storing a pointer into allocated memory in these lists is safe, as well 22:20:13 hmm 22:20:20 well it could store (table index, offset) instead :) 22:20:24 what about when that chunk is no longer valid? how did you get rid of that reference from all lists it might have been in? 22:20:41 you wouldn't have to, I think 22:20:46 alternatively 22:20:49 if you store (table index, offset) 22:20:55 then you could add it to the alias list etc 22:21:02 so i guess it's not quite O(n) heh 22:24:11 -!- Vorpal has quit (Quit: ZNC - http://znc.sourceforge.net). 22:27:19 00:23:42: oerjan: i'll read your papers when i've gathered some additional ownage. 22:27:20 00:23:52: i mean, those crazy mathematical papers of yours 22:27:21 00:27:07: oerjan: in fact, i'll promise to read them 2012, if we both are still around. 22:27:24 -!- BeholdMyGlory has quit (Read error: Connection reset by peer). 22:28:02 can i see your papers please, citizen oerjan 22:30:23 anyway, I'm happy. I think I figured out how to do recursion in my new language 22:30:39 protip: lambda abstractions 22:30:44 01:13:42: sex and shit, definitely already done... puppies and sex, sure... puppies and shit, obviously... I guess you do have to go all three to find a new genre 22:30:45 01:14:09: hmm, i actually haven't seen anything with all three 22:30:52 cpressey: those are pretty cool 22:30:54 lambdas that is 22:34:57 -!- FireFly has quit (Quit: swatted to death). 22:35:47 -!- augur has quit (Remote host closed the connection). 22:35:58 ahhhhhhahahahahaha 22:36:34 wat 22:37:38 the thing oerjan said about counting down for my head to explode which i can;t find in my scrollback 22:37:45 it applies now. 22:37:47 BOOM 22:37:50 -!- cpressey has quit (Quit: leaving). 22:38:39 that cpressey guy sure is weird 22:38:58 boom 22:40:02 -!- Slereah has quit (*.net *.split). 22:40:02 -!- HackEgo has quit (*.net *.split). 22:40:03 -!- Gregor has quit (*.net *.split). 22:43:26 -!- Slereah has joined. 22:43:26 -!- HackEgo has joined. 22:43:26 -!- Gregor has joined. 22:49:07 -!- augur has joined. 23:07:28 hmm 23:11:56 -!- augur has quit (Remote host closed the connection). 23:26:58 From your side, that was a minor netsplit. 23:27:03 From my side, that was ULTIMATE NETSPLIT. 23:27:19 Your MOM is the ultimate netsplit. 23:27:35 Wow, why does Pure have macros. 23:27:39 It's already a term rewriting language. 23:27:44 "The difference between macros and functions is that macros are not compiled but expanded at compile time, and the resulting code is then compiled. (This is the usual reason to introduce macros.) In this way, macros can be used for adding optimization to the code as well as for avoiding repetitive code." 23:27:54 Oh come on, surely you can do inlining. 23:31:48 "As the author of PURE says, "if you really need Haskell, you know where to find it."" 23:33:35 "(In the Haskell language, special techniques are used in this case to trick the compiler into thinking that several calls to gets need to be compiled in a certain order.)" 23:33:37 No they're not? 23:33:45 I guess the creator of Pure didn't write this because damn it's stupid. 23:34:33 Maybe e's referring to the IO monad? 23:35:05 It does not apply to the IO monad. 23:35:12 Wow holy shit Pure's gets is ugly. 23:53:26 is pure a good language 23:55:42 -!- ais523 has quit (Read error: Connection reset by peer). 23:56:15 monqy: Maybe. 23:56:49 I tried to look at their example code but their whatever is configured improperly and I downloaded them instead 23:56:55 so I'm not bothering 23:57:52 monqy: The IO support seems lame, but the actual language is interesting. 23:57:55 It's the successor of Q. 23:58:06 Continuations may be just what Active Worlds bots need 23:58:17 I can't believe I didn't see it earlier 23:58:19 monqy: It's essentially pure term-rewriting, but compiled and efficient. 23:59:25 active worlds? is that one of your virtual reality obsessions? you're the guy who has those right? 23:59:51 yes on all accounts