00:01:16 empty set 9.1 00:01:29 haskell 00:01:30 LOL 00:02:03 soupdragon: your "haskell → make comment about haskell sucking" rule is becoming very boring very quickly. 00:02:29 that's just because your a haskell sympathizer 00:02:50 I use a real language (LISP) which can do more than just compute factorials 00:03:11 soupdragon: ... You call that a real language? It's not even functional! 00:03:12 why would anyone want that 00:03:50 functional programming Doesn't Work, see the popular blog post by popular blogger 00:04:30 soupdragon: Said popular blogger is dumber than a a sack of bricks. 00:04:33 pikhq: soupdragon likes agda, he's just trolling you 00:04:39 incredibly successfully 00:04:40 And just as willfully ignorant. 00:04:42 I would never use agda!!! 00:04:51 Alright, then. 00:04:52 I'm strictly into dynamic languages 00:04:55 Imma go back to my functional C. 00:05:04 functional C is a myth. 00:05:17 the only thing C is good for is computing kernels 00:05:50 that didn't work quite as wel :( 00:05:54 No, no, no. For loops are a myth. 00:06:05 if you use for loops you are educated evil 00:06:17 Good thing I don't. 00:06:40 real languages have a simulataneous for-loop recursion combinator 00:07:05 Like... Map? 00:08:06 It would be fun having a language which enforces parallelism 00:08:11 i.e. its map is strictly parallel map 00:10:02 it would be perfect for implementing a bug-free, efficiently multithreaded real-time clock + infix calculator hybrid application 00:10:13 woah 00:11:32 i just broke soupdragon's BRAIN 00:12:05 yeah that was like when the guy went through the worm hole and it turned out the planet of the apes was earth 00:12:31 everything just turned upside down and inside out 00:12:49 for an instant everything was one 00:14:17 deep, man 00:14:19 deep 00:14:26 deepseq 00:14:31 (lol) 00:22:09 actually 00:22:18 you could achieve that just by making all the base functions parallel 00:22:22 like, if (:) is parallel 00:22:26 then the basic map definition is too 00:22:42 that's clever 00:22:57 so as long as you don't offer seq, you have a totally parallel language 00:23:10 of course, io becomes a "little" difficult 00:24:07 ehird: Eh, main :: InputStream -> OutputStream. 00:24:27 pikhq: heh, that has the amusing consequence that all the program's computation is done in parallel in the background 00:24:31 unless it depends on IO 00:24:37 Heheh. 00:24:38 in which case it starts as soon as the relevant variable is available 00:24:41 actually, that's kinda cool 00:24:45 optimal use of cpu 00:29:55 I ought to spec poop sometime. 00:41:18 ehird: making _everything_ parallel has the slight disadvantage that threading overhead completely eats up any performance gain 00:41:37 oerjan: well, a sufficiently smart compiler will sequentialise small expressions. 00:41:43 QED 00:41:59 A sufficiently smart compiler will replace your program with a constant expression. 00:42:07 not if it depends on user input! 00:42:11 also, those sufficiently smart compilers are impossible to make 00:42:28 oerjan: ask Omega to write them. 00:42:29 A sufficiently smart compiler will force user input to allow for this. 00:42:29 at current technology anyway 00:42:32 Problem solved by virtue of singularity 00:45:06 -!- soupdragon has quit ("Leaving"). 00:53:21 -!- augur has quit (Read error: 110 (Connection timed out)). 01:01:51 -!- coppro has joined. 01:15:45 -!- coppro has quit (Remote closed the connection). 01:16:12 -!- coppro has joined. 01:20:50 -!- oklofok has quit (Read error: 54 (Connection reset by peer)). 01:28:18 Someone ask me about ehirdOS! 01:28:19 -!- Pthing has joined. 01:29:58 ehird: About ehirdOS? 01:30:45 I did not enquote that! 01:33:29 Fine, fine. 01:33:29 ehird: ehirdOS? 01:34:00 pikhq: ehirdOS! Be more specific, that's like saying "X." to Prolog. 01:34:29 ehird: What, exactly, is there about ehirdOS that is making you state "Someone ask me about ehirdOS!"? 01:34:46 It's awesome and revolutionises computation and yeah. 01:35:02 Anything new regarding the matter? 01:35:25 -!- augur has joined. 01:37:25 pikhq: Well, I thought about it more and changed my mind a bit and stuff. 01:37:28 Nothing too specific. :P 01:39:28 ehird: Details, por favor? 01:42:20 pikhq: About ehirdOS or the changes? 01:42:31 Bear in mind that it's ephemeral enough that it never really changes, only its... location in... concept... space. 01:42:34 Regarding the changes. 01:43:35 You are a tricksy, difficult fellow. 01:43:41 Can't you ask me something general and timeless? :P 01:44:03 How many roads must a man go down? 01:44:56 I really want to shoot you sometime. 01:44:59 *you now 01:45:12 :P 01:45:20 (↑ This is your brain trying to degeneralise types.) 01:45:22 (Any questions?) 01:46:02 I point my gun at your foot. I pull the trigger. 01:46:12 I will, in a bit, observe your foot. 01:46:17 Expect pain. 01:47:15 * pikhq observes ehird's foot 01:47:39 * pikhq hears the evaluation of pullTrigger :: Gun -> IO a 01:47:41 let foot' = shoot foot in foot' `seq` () 01:49:46 I love freenode's infinite timeouts 01:50:24 -!- augur_ has joined. 01:50:36 I love your mom 01:50:40 :| 02:04:17 okay SOMEONE ask about ehirdOS 02:04:22 :| 02:05:17 Even if it's augur_ 02:05:27 Not coppro though, I don't feel like _defending_ it :D 02:05:27 no. 02:06:55 :D 02:09:45 -!- coppro has quit ("I am leaving. You are about to explode."). 02:10:08 -!- coppro has joined. 02:11:48 -!- augur has quit (Read error: 110 (Connection timed out)). 02:14:17 -!- anmaster_l has quit (Read error: 60 (Operation timed out)). 02:17:53 -!- Slereah_ has quit. 02:18:45 I'm so weird 02:18:56 I'm finally done with school for the semester and I feel nothing less than an urge to do more math 02:19:04 (actual schoolwork math, not fun math) 02:20:19 -!- augur_ has quit (Read error: 104 (Connection reset by peer)). 02:20:24 -!- augur has joined. 02:27:53 coppro: okay fine ask me about ehirdOS 02:27:56 I DEAL WITH WHAT I CAN GET 02:28:26 but that is not schoolwork math, so clearly he is not interested 02:28:27 ehird: How much time is it taking away from Amend? 02:28:49 coppro: Brain time, a fair amount. Coding time? You're kidding me; no way is it ready for coding yet. 02:28:57 ehirdOS is the first known instance of the First System Syndrome. 02:28:57 :P 02:29:08 My roadmap includes terms like "in ten years". 02:29:15 (imaginary insofar as it's only in my head) 02:29:24 coppro: also, *amend 02:29:31 oh ok 02:43:57 -!- augur has quit (Read error: 104 (Connection reset by peer)). 02:44:19 -!- augur has joined. 03:31:06 -!- MizardX has quit (Connection timed out). 04:05:01 -!- augur has quit (Read error: 54 (Connection reset by peer)). 04:05:41 -!- augur has joined. 04:18:09 -!- coppro has quit ("I am leaving. You are about to explode."). 04:46:39 -!- augur has quit (Read error: 60 (Operation timed out)). 05:06:22 -!- Slereah has joined. 05:22:08 -!- ehird has quit (Read error: 60 (Operation timed out)). 05:23:22 -!- augur has joined. 05:46:35 -!- coppro has joined. 05:58:52 -!- oerjan has quit ("Good night"). 06:32:41 -!- coppro has quit (Remote closed the connection). 07:06:27 -!- kar8nga has joined. 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:48:15 -!- Pthing has quit (Remote closed the connection). 09:02:26 -!- Slereah_ has joined. 09:04:28 -!- ais523 has joined. 09:12:22 -!- Slereah has quit (Read error: 110 (Connection timed out)). 09:39:57 -!- Pthing has joined. 09:47:07 -!- comex has quit (Read error: 110 (Connection timed out)). 10:05:25 -!- anmaster_l has joined. 10:16:09 -!- rodgort has quit (Client Quit). 10:17:50 -!- rodgort has joined. 11:22:06 wow, /Evince/ has crash recovery? 11:22:15 that's unexpected, it makes hardly any sense for a document /reader/ 11:27:31 -!- BeholdMyGlory has joined. 11:35:33 -!- MizardX has joined. 11:37:03 oh no, i gave someone a terminal size virus 11:55:05 Is that a terminal (size virus) or a (terminal size) virus? 12:02:01 (terminal size) virus 12:02:15 basically, someone was playing a terminal game via dgamelaunch with an 80x26 terminal 12:02:25 other people who wanted to watch them therefore also had to set their terminal to 80x26 12:02:33 because it was so similar to 80x24, they forgot to set it back 12:02:40 so when playing games themselves, they also used 80x26 12:02:42 etc 12:13:15 ais523, what? really? 12:13:20 about crash recovery that is 12:13:25 AnMaster: yes 12:13:37 I think it remembers where in the page you'd scrolled to 12:13:43 so you don't lose your place in a long document if your computer crashes 12:14:06 because it was so similar to 80x24, they forgot to set it back <-- 80x25 you mean? 12:14:30 AnMaster: 80x24 is standard terminal size on Unices 12:14:32 -!- Pthing has quit (Remote closed the connection). 12:14:33 80x25 is a DOS size 12:14:47 ais523, linux vt is 80x25 by default iirc? 12:15:00 AnMaster: VT102 is 80x24 12:15:02 and that's what everyone emulates 12:15:05 assuming VGA console, not framebuffer one (which is usually much higher) 12:15:24 ais523, everyone uses a much larger terminal window though in practise 12:15:31 not for everything 12:15:43 I use 80x24 when termcasting, to make it easier for other people to watch 12:15:45 my konsole is 150x40 or so usually 12:15:48 on my laptop 12:15:53 a bit taller on my destkop 12:15:58 desktop* 12:16:09 ais523, termcasting? 12:16:21 how do you do that 12:16:26 AnMaster: streaming a termrec so that other people can watch what you're doing 12:16:36 hm 12:16:41 it's mostly done by roguelike players and developers, for some reason 12:16:48 probably they're used to using ttys rather than GUI programs 12:16:52 ais523, is that how it works on NAO? 12:16:53 *streaming a ttyrec 12:16:55 AnMaster: yes 12:17:39 mhm 12:18:13 ais523, also, how well does ttyrec work with ncurses programs? 12:18:24 (does nethack use ncurses?) 12:18:24 as well as with anything else 12:18:33 ais523, even with ncurses mouse support being used? 12:18:36 so long as the person who wrote the program doesn't call refresh() all the time 12:18:42 AnMaster: that's an input 12:18:49 termcasting streams only output 12:18:51 ais523, what does refresh() do in ncurses now again 12:19:01 actually updates the screen 12:19:04 most other commands just update memory 12:19:18 ttyrecs get very big if the screen is redrawn repeatedly, rather than in batches 12:19:32 as to your question a while back, NetHack might or might not use curses depending on the build 12:19:37 one reason to not use ncurses: common function names used with no ncurses-specific prefix 12:19:41 bad API basically 12:19:42 there are three different terminal drivers there, and I think only one uses curses 12:19:46 a lot of them are even macros 12:23:03 Speaking of the curses API and Nethack; win/tty/terminfo.c from Nethack: http://pastebin.com/m42a4a870 12:23:12 A snippet of it, anyway. 12:24:43 -!- kar8nga has quit (Remote closed the connection). 12:25:33 -!- nodd has joined. 12:46:56 -!- kar8nga has joined. 12:50:48 -!- FireFly has joined. 12:59:11 -!- Pthing has joined. 13:16:41 fizzie: I think that file isn't always used in a standard compile, though 13:16:44 just to add to the fun 13:19:59 ais523: "ttyrecs get very big if the screen is redrawn repeatedly" — is it completely uncompressed or something? 13:20:10 yes 13:20:21 it is completely uncompressed 13:20:21 That's a bit unfortunate 13:20:31 ttyrecs normally get bz2's later 13:20:38 much like tarballs are .tar.gz 13:20:46 let one format worry about representing the data, the other about making it small 13:21:20 Well yes, so does the bigness matter much if you can stream it straight to a compressor 13:22:29 it matters because when termcasting, ttyrecs are streamed uncompressed 13:22:49 Yes, see, and that's the unfortunate bit :-P 13:23:09 hmm, probably termcasting should be done with ssh rather than telnet 13:23:18 it rarely uses a specialist program to receive the stream, you see 13:23:26 and ssh can send compressed, telnet can't 13:23:32 lYep 13:23:35 -l 13:24:48 much like tarballs are .tar.gz <-- .tar.bz2 is equally common 13:24:54 at least, since a few years 13:25:03 well, same point applies 13:25:21 .tar.Z isn't seen much these days 13:25:27 Deewiant, indeed 13:25:33 .tar.lzma is getting more common 13:25:38 still not very common yet 13:26:29 and only place I have seen pax in is ick 13:27:06 let one format worry about representing the data, the other about making it small <-- so you suggest websites should use .bmp.bz2? 13:27:15 rather than gif or png or such 13:27:23 AnMaster: that's effectively what formats like gif or png are, though 13:27:24 well, some other format would be needed for transparency 13:27:32 ais523, not really for png I would say 13:27:41 but yes, .bmp.bz2 would be a reasonable image format if bmp didn't have truly awful headers 13:28:00 ais523, png encoding is complex to say the least. 13:28:15 I'm pretty sure 4 bit grayscale is possible 13:28:16 it makes sense to use a compression format designed specifically for images, too 13:28:26 rather than something generic like bz2 13:28:27 8 bit grayscale + 8 bit alpha too 13:28:32 and that requires information about what you're compressing 13:28:52 so if you have an image format and compression algo that basically need to be used together, why not give it a single filename 13:28:59 ais523, hm. I believe png does use deflate after doing various delta encoding 13:30:18 ais523, also, tiff supports deflate. It even supports row-diff encoding. krita supports saving as the latter, but gimp does not (as far as I have found). Gimp can still open row-diff encoded tiff 13:30:35 AnMaster: you're starting to sound like zzo38, stop it 13:30:47 ais523, what bit was like zzo? 13:30:54 ais523: Re. "why not give it a single filename", exactly, why not do ttyrec like this ;-) 13:31:01 the line above the one I made 13:31:05 Deewiant: you could, I suppose 13:31:13 ais523, I meant, what part of it 13:31:21 more to the point is that ttyrec shows signs of having been written in about 10 minutes, and was good enough for the job 13:31:26 sentence structure? Word choice? 13:31:33 AnMaster: sentence structure, I think 13:31:42 ais523, I can't pinpoint the issue in it 13:31:44 and the semantic relations between the sentences there 13:31:58 hm okay 13:32:25 anyway, krtia is painful to use I find, still, it is better than gimp due to actually supporting what I need 13:33:07 (which is: 16-bit integer per channel and 32-bit floating point per channel) 13:33:22 and non-sRGB of course 13:33:28 gimp supports that partly 13:33:31 but not very well 13:33:56 ais523, ^ 13:34:09 me, v 13:34:11 ais523, btw did you see the news about google in china 13:34:26 AnMaster: everyone in the country's seen the news about google in china, I think 13:34:31 ais523, ah 13:34:32 probably everyone in the world but some of the Chinese 13:34:38 it's all over the tech news, all over the non-tech news 13:34:40 s/some/most/ 13:34:49 ais523, it was in the morning newspaper today 13:34:55 exactly 13:35:06 didn't reach the front page due to the earth quake in Haiti 13:35:35 (is that how it is spelt in English too?) 13:35:44 yes, it is 13:36:03 also why isn't it spelled, or even spellt? 13:37:53 irregular verb, most languages have them 13:37:58 and they rarely follow a pattern 13:38:01 ais523, yes, still irritating 13:38:12 in this case, it's most likely "spelt" because that's close to how the verb in question would be conjugated in German 13:38:25 oh? interesting 13:38:42 English has stolen grammar as well as words from all sorts of other languages 13:38:58 but German's one of the more common inspirations 13:39:04 is there any laptop where the built-in speakers are actually of decent quality? 13:40:45 probably not, given that speaker quality is mostly a function of size 13:40:55 and it's hard to fit a large speaker into a small laptop 13:41:33 hm 13:41:48 ais523, if that is so, how comes there are headphones that are very good quality 13:41:57 I mean, studio headphones 13:41:58 "spelled" is valid 13:42:10 Deewiant: but unusual, and I think it might even have a different meaning from "spelt" 13:42:15 English is weird 13:42:32 oh yeah there was some other word like that I ran across recently 13:42:33 No, I'm pretty sure it's just the US style 13:42:48 ah yes: "I spelt the word 'wierd' but I was wrong", vs. "my name is spelled 'ais523'" 13:42:53 I think, at least 13:42:54 the other meaning was as some tool for making paper (historical, not used nowdays iirc) 13:42:58 forgot what word it was 13:43:20 a clue is technically a small wooden ball used to help with making clothes from wool 13:43:26 ais523: wiktionary at least confirms my thoughts that they're equivalent but led is US and t is UK 13:43:26 presumably, if you were clueless, it was substantially harder 13:43:33 Deewiant: ah 14:21:18 -!- oerjan has joined. 14:28:03 snowing again 14:28:05 sigh 14:28:26 in this case, it's most likely "spelt" because that's close to how the verb in question would be conjugated in German 14:28:41 i would suspect s/German/Anglo-Saxon/ 14:28:42 oerjan: is this going to be an insightful comment or a terrible pun? 14:28:46 ah, insightful comment 14:29:05 hey, even i get to make those on occasion 14:29:17 I'm talking about Old German here, probably before it was split into Low German and High German 14:29:20 they _are_ both descended from proto-Germanic, after all 14:29:26 Anglo-Saxon was based on Low German, I think 14:29:33 hm maybe 14:29:49 so for all I know, we're both right 14:29:58 I'm slightly disappointed at the lack of a terrible pun, though 14:30:12 although one of the headlines in the paper a couple of days ago was so a pun so bad it physically hurt 14:30:40 on the other hand, Norwegian frequently varies between -t and -d as ending, for supposedly regular verbs 14:31:27 (sometimes -a to, i think that was -ad originally) 14:31:35 what is the English name for those (most commonly yellow) vehicles that aren't used to dig in the ground, but to load sand and such into trucks 14:31:47 but then so does english, when you look at pronunciation 14:32:04 AnMaster: most commonly known by the brand name of the major manufacturer, JCB 14:32:08 I'm not entirely sure what the generic name is 14:32:11 hm it's still -ad/-ade in swedish isn't it 14:32:16 hm 14:32:21 Backhoe? 14:32:21 oerjan, what is? 14:32:31 past verb endings 14:32:35 for some verbs 14:32:55 Deewiant: You do dig ground with a backhoe. 14:33:09 As far as I know, anyway. 14:33:47 JCB's listed in wiktionary as a case of trademark erosion: http://en.wiktionary.org/wiki/JCB 14:33:50 ais523: what was that pun in the paper 14:34:07 ais523, there is one clearing away all the snow that has ended up on the sidewalks after being cleared away from the streat. Filling up trucks (that operate in a round robin fashion, that is to say, one is being filled up while the other two are being driven to/from wherever they dump the snow) 14:34:08 oerjan: it was an article about a Cher impersonator 14:34:13 called "Cher and Cher-alike" 14:34:30 I guess you don't need to clear away the snow in UK to prevent flooding when it melts 14:34:32 I have a feeling that they thought up the headline first, then tried to engineer a story to apply it to 14:34:40 considering how little snow there usually is there ;P 14:34:44 ...oh... does that even make sense to a non-geek :D 14:35:02 oerjan: yes, but it contains a cultural reference you possibly missed 14:35:07 for some verbs <-- well yes 14:35:07 hm? 14:35:12 AnMaster: we do get flooding when it melts, but we get flooded quite a lot anyway, with rain 14:35:21 hah 14:35:25 so I think the efforts go more towards dealing with all the water when it's in water form rather than snow form 14:35:40 right 14:36:11 ais523: well cher-alike = share-alike is what i thought, which is afaik license terminology 14:36:27 about 15 meters (length along sidewalk that is) worth of snow seems to fill up one truck 14:36:28 oerjan: "share and share alike" is an English phrase 14:36:33 oh 14:36:37 I think the licence name is a reference to the same phrase 14:36:51 ok then 14:37:38 actually not just the sidewalk, the street is considerably wider after they cleared it away 14:37:52 (the snow, not the street) 14:38:48 "sidewalk" is a US term, the UK equivalent is "pavement" 14:38:58 annoyingly, "pavement" has a US meaning too, making it rather ambiguous 14:39:33 AnMaster: it _is_ nice to actually be able to walk on the sidewalk rather than in the middle of the road too, so i'm not sure it is just flooding :D 14:40:24 although without a flooding issue it might very well be an easier target for those inevitable cost-cuttings 14:41:35 which it already is, around here 14:43:56 one advantage of the really cold weather we've got now is that the snow stays mostly as is rather than turning into the ice that makes everyone complain about bad clearing 14:49:33 oerjan, it is nice to be able to actually have two cars meet on the road 14:49:45 as in, the snow was (almost) preventing that 14:51:14 * oerjan might have remembered that if he actually drove a car :) 14:51:52 well, i guess busses actually have that problem even worse 14:52:09 it seems people have been walking on the canal over here, judging by the footprints 14:52:28 ais523: no mysterious breaks in the ice at the end? 14:52:33 although, some people got arrested for reckless driving after trying to drive a car down a canal, with the ice breaking beneath them 14:52:35 oerjan: not for the people 14:53:57 ais523, there are winter roads over lakes in Sweden 14:54:11 well, some years. This year definitely 14:54:32 ais523, also getting arrested for that doesn't seem like their largest issue 14:54:45 Lake-ice-roads exist here too. 14:54:58 * oerjan sees Steve has found something to wrestle 14:55:18 AnMaster: well, they survived 14:55:22 Though I'm not aware of any here in southern Finland; but there's one across Pielinen. 14:55:25 ais523, did the car? 14:56:12 AnMaster: it's still in the canal, as far as I know 14:57:25 ais523, well, that seems like a pretty large issue 14:57:48 Coincidentally, they've apparently just (Jan 10th) checked the ice for that particular road; seems there's 23-31 cm of ice there right now. 14:57:49 I think the jailtime / large fine is likely to be just as large 14:58:09 hm 14:58:48 fizzie, there is one to an island in Hjälmaren. in north/south direction it would be slightly south of stockholm (but near the middle of the country in east/west direction at that point 14:58:55 (roughly)) 14:59:14 (It's quite a shortcut: the road-distance from the nearby skiing resort thing to the geographically-closest town shrinks from 76 km to 14 km when they open the (7 km) road.) 15:01:00 It doesn't seem to be open right now; they open it when the ice thickness reaches 40 cm. And there are all kinds of restrictions; maximum vehicle weight 3000 kg, minimum distance between vehicles 50 m, no overtaking or stopping. 15:02:32 fizzie, and low speed I assume 15:02:35 -!- sebbu2 has joined. 15:02:51 50 km/h, I think. So yes. 15:03:04 Here's also a photo, although it's spectacularly boring: http://www.tiehallinto.fi/pls/julia/docs/9679.JPG 15:03:12 I think the lake roads here are at 40 km/h or such 15:03:13 I mean, it's just flat snowy field. 15:03:31 fizzie, there is even a tree there 15:03:36 are you sure it is correct? 15:03:54 Yes, they stick branches to the snowbanks to mark the road a bit. 15:03:59 That's not much of a tree. 15:04:01 ah 15:04:28 fizzie, you get trees of that size if you go far enough north in Sweden 15:05:22 -!- kar8nga has quit (Remote closed the connection). 15:08:51 -!- sebbu has quit (Read error: 60 (Operation timed out)). 15:08:52 -!- sebbu2 has changed nick to sebbu. 15:09:18 Oh, a colleague from work had photographed those snowy trees better; the university campus has some outdoor tree-lighting going on. http://ouzo.kuvat.fi/kuvat/Muuta/Talvi10/Otaniemi1201-007.jpg for example. 15:10:20 Actually http://ouzo.kuvat.fi/kuvat/Muuta/Talvi10/Otaniemi1201-013.jpg was the one I *meant* to give as an example. 15:10:39 Because it has that "facility management and security" sign in a spooky-ish environment. 15:17:06 -!- zeotrope has joined. 15:30:46 fizzie, nice they added Swedish text too 15:30:55 -!- soupdragon has joined. 15:31:30 Well, it's an official sort of a language. 15:31:49 We have mandatory Swedish exams as a part of the university degree and all. 15:45:47 -!- Cerise_ has changed nick to Cerise. 15:46:07 -!- oerjan has quit ("leaving"). 15:46:17 -!- Cerise has changed nick to Guest32065. 16:16:41 -!- soupdragon has quit ("Leaving"). 16:28:16 -!- ehird has joined. 16:36:45 "Helpful hint: Every time you think the answer to a practical question is the Halting Problem, you are most likely wrong. 16:36:46 No, really. Every time." 16:39:42 -!- nodd has quit ("( www.nnscript.com :: NoNameScript 4.2 :: www.regroup-esports.com )"). 16:45:18 Also, NP-complete. NP-complete is only about the worst cases, the best and usual cases can be clearly subexponential. 16:48:09 -!- nodd has joined. 16:48:15 -!- Pthing has quit (Remote closed the connection). 16:50:13 -!- nodd has quit (Read error: 54 (Connection reset by peer)). 16:50:33 -!- nodd has joined. 16:51:17 -!- kar8nga has joined. 16:59:53 No, really. Every time." <-- how do you mean? 17:00:08 1. It's a quote, thus the quote marks. 17:00:15 2. What do you mean, "how do you mean"? 17:00:18 oh right splot over two lines 17:00:23 split* 17:00:38 didn't notice that the quote didn't end with the first line 17:02:09 ehird, as in, I'm pretty sure that "you can't parse all perl (perl 5 at least) code without executing it" seems like a good example of a practical problem where the answer is a result of the halting problem 17:02:40 That's not a practical problem. After all, people *do* parse and manipulate Perl source code, or rather Perl documents (I think that's the right terminology). 17:03:00 perl documents XD 17:03:18 [[The purpose of PPI is not to parse Perl Code, but to parse Perl Documents. By treating the problem this way, we are able to parse a single file containing Perl source code "isolated" from any other resources, such as libraries upon which the code may depend, and without needing to run an instance of perl alongside or inside the parser.]] 17:03:21 ehird, and esolangs in general is not a practical problem by that definition 17:03:25 And people actually use it. 17:03:32 AnMaster: Of course esolangs aren't practical... 17:03:51 ehird, *some* esolang are almost practical 17:03:57 Not really. 17:04:33 befunge98 comes to mind as being one of the almost practical ones 17:05:22 hm btw, has anyone considered a 2D intercal. While I admit I'm not certain about how, I do have a few vague ideas. 17:05:48 (it would probably be non-deterministic 17:05:58 ) 17:06:01 AnMaster: there's IFFI 17:06:11 ais523, well I meant in intercal itself 17:06:27 befunge + iffi works pretty intercal-like 17:06:32 at least, it has the same control structures 17:06:41 Befunge98 is barely esoteric, though. 17:06:48 ais523, the interpreter would execute the code either horizontally or vertically, possibly alternating between lines/columns 17:06:50 hm 17:06:57 *Befunge-98 17:07:01 needs more work I admit 17:07:02 It's hideously complex, like ALGOL 68. 17:07:09 And it's certainly not easy to use. 17:07:17 But it doesn't really have any weirdly esoteric features. 17:07:33 ehird, nothing wrong with complexity. Not every esolang has to be a tarpit 17:07:49 I never said that. 17:07:56 I was just saying that its complexity is not an esoteric aspect. 17:08:20 It's just a hideously complex language that isn't all that comfortable to code in. All its esotericness is inherited from Befunge-93. 17:08:33 So I'd call Befunge-93 an esolang, but Befunge-98 more of an... honorary esolang extension. 17:08:38 The things it adds to -93 aren't esoteric. 17:08:39 ehird, isn't k pretty esoteric? 17:08:51 Okay, k, granted. Lots of languages have strange features, though :P 17:08:56 considering it can do 0,2,3,4,... repeats 17:08:59 but not 1 17:09:03 and there are all the other issues with it 17:09:05 *though. 17:09:09 AnMaster: Yes, but that's just spec issues. 17:09:11 Meh. 17:09:21 I just don't see -98 as bringing anything particularly esoteric to the table given -93. 17:09:26 Confusion, yes, but not esotericness. 17:09:36 ehird, you could put down at least a number of "issues" with intercal to the spec 17:09:43 INTERCAL* 17:09:55 Yes, but INTERCAL has plenty of oddities besides. 17:10:00 well yes 17:10:12 I'm not saying -98 is a boring language or anything. 17:10:19 ehird, also what about TOYS? 17:10:25 I just don't think that the things it adds to -93 are sufficiently esoteric for it to count as esoteric apart from its -93 heritage. 17:10:31 AnMaster: That's not part of the language. 17:10:40 ehird, it is a catseye fingerprint 17:10:51 So? 17:11:21 ehird, you could say it is a standard extension 17:11:36 but sure, if you don't count fingerprints it is more limited 17:11:39 Keyword extension. 17:11:54 Python's stdlib could have a change_the_entire_semantics_of_the_language() function; that doesn't make Python esoteric. 17:12:00 (Although it makes the stdlib maintainer insane.) 17:12:26 ehird, what about {} for python. Isn't that a pretty esoteric usage of python? 17:12:43 and if you consider that, perligata and so on... 17:13:00 ais523: can you explain to AnMaster the difference between an esolang and an esoteric abuse of a language, please? 17:13:02 thanks 17:13:20 ehird, of course I know the difference 17:13:27 ehird: looks like I don't have to 17:13:34 "esoteric usage" is quite different from "esolang", of course 17:13:54 although if there are rules to the usage, it's possible that you can make an esolang that's a subset of a real lang 17:14:12 ehird, anyway befunge98 is esoteric IMO. Sure, not as much as INTERCAL is. brainfuck isn't very esoteric either. Sure it is a tarpit, but it doesn't really have any features not found in other languages 17:14:25 Scheme with CALL-WITH-CURRENT-CONTINUATION, DYNAMIC-WIND, WITH-VALUES, VALUES and a LAMBDA restricted to make it sub-TC. 17:14:33 With the subset as a whole being TC. 17:14:35 *That* would be fun. 17:14:59 AnMaster: Brainfuck gets its esotericness out of sheer programmer pain, I think. It isn't very esoteric, though. 17:15:03 Anyway, yes, -98 is an esolang. 17:15:13 it's tarpitty, which is normally considered separately from esotericness 17:15:13 But, if you took just the -98 parts, and ignored what it inherits from -93? Nah. 17:15:16 and has an eso syntax 17:15:19 So I think -93 is what deserves the credit there. 17:15:29 ehird: that would be /very/ eso, the flow control would be nicely weird, etc 17:15:40 imagine Befunge without < > ^ v or any of the other 93 commands 17:15:47 ehird, befunge is quite painful to code in too. I definitely agree that brainfuck is worse though 17:15:55 "EVOM"(...) 17:16:01 It lets you move around! 17:16:09 heh 17:16:28 ais523, actually you could use x still 17:16:32 yes, I suppose so 17:16:40 ais523, but testing would only be with w 17:16:41 or [ and ] 17:16:45 and you couldn't do a logical not 17:16:47 or were they 93 too? 17:16:48 ais523, or that 17:16:52 ais523, they weren't iir 17:16:53 iirc* 17:17:06 logical not can be emulated with other operators 17:17:07 how does w work? 17:17:11 i.e. what does it do? 17:17:40 ehird, pop a and b, compare, do like ] or [ if the differ (depending on which is greatest. Just go straight ahead if they are the same 17:17:53 What do ] and [ do? 17:18:13 ehird, [ turns pi/2 radians counter-clockwise 17:18:18 ] does the same but clockwise 17:18:33 I think you mean π½. 17:18:39 ehird, this becomes quite confusing if the IP isn't traveling cardinally 17:18:52 Anyway, hmm 17:18:56 So not is just == false 17:19:00 0 is false, right? 17:19:13 So 0w is not. 17:19:15 Well. 17:19:18 Rather, something like 17:19:20 ehird, hm no 17:19:23 0w(it's false, so push true) 17:19:25 it is "is different or same as 0" 17:19:37 ehird, also there is nothing that says 0 is false afaik 17:19:39 ? 17:19:58 Okay, what's false? 17:20:03 Anyway, what does "is different or same as 0" mean? 17:20:05 That's a tautology. 17:20:26 ehird, as in, I don't believe boolean-ess is used much by the befunge core functions. Apart from logical not 17:20:35 ehird, at least not if you remove the 93 part 17:20:55 but yes 0 is false in the 93 part. if that is what you meant 17:21:03 So, what is the semantics of "not"? 17:21:07 Bitwise not, do you mean? 17:21:17 *what are the semantics 17:21:33 ehird, logical not. But *as I said* it is befunge93, and wouldn't exist in this "98 added features only" subset 17:21:50 I thought we were discussing that subset, no? 17:22:06 Yes. 17:22:13 I was talking about implementing logical not in the subset. 17:22:19 Does 98-only have a way to compare? 17:22:22 Can you use w to do ==? 17:22:29 ehird, 98-only to compare is w 17:22:44 w is the three-way compare, you can do anything with it 17:22:44 and as I said it goes straight ahead if equal 17:22:44 Right, well, (x==false) is not 17:22:50 So use w to do ==false, like I said 17:23:04 If it does the true branch, push true 17:23:07 If it does the false branch, push false 17:23:09 Done 17:23:21 ehird, there is no addition or substraction in this 98-only subset 17:23:29 You don't need it... 17:23:32 nor multiplication, division or modulo 17:23:36 So? 17:23:40 and the numbers 0-9 doesn't exist 17:23:42 only a-f 17:23:52 so 0w won't work 17:23:54 Sure they do 17:23:58 ' 17:24:03 Deewiant, good point 17:24:32 See, we just totally esoed up. 17:24:50 ehird, still you claiming that this subset isn't very esoteric is quite wrong. It is possibly more esoteric than 93 was. Considering it will have SGML spaces in stringmode, but not have an actual string mode for example 17:25:35 This subset on its own is highly esoteric. 17:25:42 ehird, indeed 17:25:43 My point is that in 98 = 93 + 98subset, 17:25:50 the 98subset doesn't contribute much to the overall esotericness of 98. 17:26:34 actually, someone should totally make an 98subset interpreter 17:26:34 The 98subset can't do much without fingerprints 17:27:00 Why not 17:27:02 would be a couple of minutes worth of adding #ifdef to cfunge to do it for example 17:27:08 Deewiant, well yes 17:27:14 It's probably TC 17:27:17 with fingerprints it isn't very eso any longer 17:27:21 Due to k and # and all that kind of thing 17:27:25 No # 17:27:26 ehird, # isn't there 17:27:28 Er, right 17:27:33 Okay, due to k and w, and, stuff. 17:27:33 No stdio makes it a pain 17:27:34 Do you mean IOwise? 17:27:35 k is yes 17:27:45 Just have a real-time view of the stack :P 17:27:49 No math is a pain 17:27:50 there is no stdio 17:27:56 there is file io however 17:27:56 :D 17:28:03 AnMaster: So open /dev/stdout 17:28:05 And /dev/stdin 17:28:05 No p and g is a pain 17:28:06 Problem solved 17:28:10 Deewiant: Who needs 'em 17:28:28 People who don't enjoy pain 17:28:30 ehird, alas it won't work that way, since it open (truncate mode), writes, closes 17:28:41 Do it do /dev/tty then 17:28:43 ehird, for input it will lock up until ctrl-d 17:28:49 Deewiant: Why are they coding Befunge 17:28:53 since it reads the whole file 17:28:59 *Do it to 17:29:00 Because Befunge is fun 17:29:01 AnMaster: Oh well 17:29:03 Just only do batch input 17:29:08 Deewiant: Then use something other than Befunge-98subset 17:29:36 ehird, I also have some doubts about /dev/tty, but I'm not certain about that 17:29:37 Like all of 98? ;-P 17:29:47 Deewiant, :D 17:29:47 Deewiant: Precisely 17:30:08 AnMaster: Relying on w so much will be fun 17:30:11 Spiral programs! 17:30:17 ehird, anyway, the fact that there is no math without fingerprints for 98subset makes me wonder what you can actually compute 17:30:35 Well, we have branching (w) 17:30:36 and that you can only read/write one char ahead of yourself to funge-space now 17:30:37 Do we have looping? 17:30:51 Deewiant, s jumps over right? 17:30:51 Can you do w and [/] to get back to where you started? 17:30:55 Geometrically 17:31:02 AnMaster: yes 17:31:03 ehird: yes 17:31:07 ehird was that [, /, ] ? 17:31:09 Then you have conditional loops. 17:31:11 AnMaster: [ and ] 17:31:13 right 17:31:18 So we have branches, loops, and we can push things to the stack. 17:31:25 ehird, btw I don't believe there is pop stack any more 17:31:30 nor swap 17:31:32 n 17:31:35 there is "clear all" though 17:31:39 Deewiant, I was getting to that 17:31:44 but pop is "pop one" 17:32:03 So, branching, loops and constants. What about manipulation; we need some sort of arithmetic-like operation. 17:32:04 With u and a lot of messing around it's probably possible to do the basic stack ops 17:32:04 Ah. 17:32:06 y 17:32:07 :D 17:32:11 y could be useful 17:32:12 Wasting a lot of memory and CPU in the process 17:32:12 Somehow 17:32:18 Deewiant, that hurts to think about 17:32:22 Wasting? I call it putting to good use 17:32:24 You'll be shuffling lots of stacks 17:32:29 Deewiant, indeed 17:32:33 We really need a compiler for this to work out where to place everything for w :P 17:32:43 This is why lack of p and g is also a pain 17:32:58 We fucking get it, Deewiant. 17:33:00 98subset is a pain. 17:33:03 That's the whole point. :P 17:33:05 No temporaries, you only have a stack of stacks of which you can access the top 17:33:06 indeed 17:33:19 We have r 17:33:20 The topmost element of the topmost stack, that is 17:33:21 r might be useful 17:33:30 I find r completely useless 17:33:32 Deewiant, there is s and ', but making use of that would require approaching the code one way to set the variable and another way for reading it 17:33:37 Hahaha 17:33:39 We don't have space 17:33:44 You have ; 17:33:47 Same difference 17:33:48 We do have z though 17:33:56 Yeah, that too 17:34:10 The programs will be very sleepy. 17:34:13 zzzzzzzzzz 17:34:19 AnMaster: That's true... but not necessarily useful 17:34:24 oh btw we have fungespace, but not inside a 80x25 area from origo 17:34:31 :-D 17:34:31 as in, we would have a hole there 17:34:32 AnMaster: Okay, now that's ridiculous. 17:34:37 All programs have to be outside the initial 80x25 area 17:34:41 Befunge-98 completely redefines Funge-Space itself. 17:34:51 By that argument, Befunge-98 doesn't have an IP 17:34:53 ehird, yes, but we can't use the 93 area in it 17:34:57 Because -93 had one too 17:35:00 Erm 17:35:05 *-98subset 17:35:06 ehird, oh indeed, it only has one after the first t 17:35:07 -93 had a PC 17:35:08 XD 17:35:10 -98 has an IP 17:35:13 and what Deewiant said 17:35:16 (Or more IPs) 17:35:25 Befunge-93 had stacks 17:35:27 QED 17:35:31 ehird, "stack" 17:35:32 it had a single 17:35:35 Yes 17:35:38 And Befunge-98 has a stack, too 17:35:40 In fact, it has many 17:35:41 -93 had a stack, -98 has a stack stack 17:35:42 All of them must go 17:35:45 We must do all operations using only stack stacks. 17:35:49 ehird, no, only the first one 17:35:56 ooh that is better 17:35:58 They're all stacks identical to -93's. 17:36:03 THEY MUST BE ABOLISHED 17:36:25 so we have a stack of non-existent stacks 17:36:30 existent? existant? 17:36:34 spelling? 17:36:39 So how do we do bits on the stack 17:36:44 WhatStack stack that is 17:36:48 Extant 17:37:31 Deewiant: Shush you 17:37:36 Deewiant, sure? existent seems to mean what I meant according to define: 17:37:40 AnMaster: non-existent 17:37:40 same for extant though 17:37:48 Deewiant is just concising 17:37:57 still in existence; not extinct or destroyed or lost; "extant manuscripts"; "specimens of graphic art found among extant barbaric folk"- Edward ... 17:37:57 wordnetweb.princeton.edu/perl/webwn 17:37:57 He probably thinks his editor automatically inserts indention at the start of code lines, too 17:38:09 WordNet is not an acceptable dictionary. 17:38:14 ehird, why not? 17:38:22 Still in existence; Currently existing; not having disappeared; Still alive; not extinct 17:38:23 en.wiktionary.org/wiki/extant 17:38:25 and a lot more too 17:38:35 Because it takes an awful lot of people to make a good dictionary. WordNet does many non-dictionary things and does not have an awful lot of people. 17:38:42 Nor does it profit solely because of its dictionary activities. 17:38:50 ehird, there is still http://en.wiktionary.org/wiki/extant 17:39:15 I didn't say the definition was incorrect. 17:39:20 :D 17:40:09 anyway if we do have stack and complete funge space 17:40:32 Let's say that the rule is that only *commands* in Befunge-93 are removed. 17:40:42 The spec doesn't really make sense without Befunge-93's infrastructure. 17:40:46 ehird, the funge space hole *is* funny though 17:40:52 Yes, yes :P 17:41:02 It would work as a good garbage collector 17:41:13 All cells of funge-space are continually drawn to that whole 17:41:14 the only stack operation we have is "clear stack" (that is, as listed in the section "Stack Manipulation" of the 98 spec) 17:41:18 If you want to use data, you have to pull it back 17:41:22 Tada, funge GC 17:41:25 pop, duplicate and swap are all gone 17:41:36 ehird, heh 17:41:36 Also a completely ecologically friendly method of waste disposal 17:42:03 What about n 17:42:05 Isn't n some fancy thingy 17:42:10 n is clear stack 17:42:30 just removes all item on the current stack 17:43:10 *items 17:43:14 Simple solution, then 17:43:16 Pop is just 17:43:24 Move all items except the top one to another stack 17:43:25 ehird, we do still have = which is basically system() (and behaviour is equally implementation defined to system(). spec says it could be system() or it could be something else) 17:43:26 Clear stack 17:43:29 Pop stack 17:43:32 Or whatever 17:43:35 ehird, hm 17:43:42 AnMaster: Clearly = should execute Befunge-93 code 17:43:47 haha 17:44:12 aaaaaaaaaab{a} is $ I think 17:44:22 For a non-empty stack 17:44:22 Deewiant: ...:D 17:44:27 Deewiant, that many a? 17:44:28 it should execute unefunge 17:44:40 Deewiant: Best code snippet ever 17:44:44 Well, alternatively '<0x1>{'} 17:44:45 ais523, unefunge-98subset? 17:44:50 Deewiant: That's better :P 17:45:01 No, let's keep to printable characters here. :P 17:45:05 But if you want to stick to ASCII, 10*a it is 17:45:08 *let's stick 17:45:26 Deewiant: That only works on 32-bit funges, doesn't it? 17:45:39 ehird, how so? 17:46:00 -!- ais523 has quit (Remote closed the connection). 17:46:05 I can't figure out how it couldn't work in 64-bit too 17:46:26 Doesn't it rely on integer overflow to get 1? 17:46:33 ehird, no 17:46:38 Not at all? 17:46:45 I thought by '<0x1> you meant it was equivalent 17:46:46 But okay 17:46:51 ehird, well it does the same 17:46:58 '<0x1> means ' followed by the byte 0x1 17:47:08 Yes, I know. 17:47:09 ehird, the first one pushes a lot of crap values on the stack so you can pop them 17:47:15 since you can't pop just one 17:47:16 I don't see where overflow is implied 17:47:16 Ah, I see. 17:47:28 abcdeabcdeb{a} 17:47:29 Deewiant: I thought you were using a/b to make a really big number then push it over the edge, so that it pushes 1 17:47:31 Maybe that's easier to type 17:47:32 same as '<0x1> 17:47:42 ehird, you can't do that 17:47:44 To combine numbers I'd need something like * 17:47:48 Which we don't have :-P 17:47:49 I know 17:47:49 ehird, since you can't combine them 17:47:49 yeah 17:47:51 I was just guessing 17:47:53 ] 17:47:56 d 17:48:01 (That d deleted that line; shut up.) 17:48:12 oh I was just about to say we have both ] and d still 17:48:17 We can always specify unicode to make life simpler 17:48:22 'ä to push 228 17:48:56 Deewiant, ä is in ISO-whatever too? 17:49:07 Deewiant: With our control flow, life will never be simple. 17:49:10 Stop breaking the spec :P 17:49:15 btw we can't actually use x instead of <>v^ 17:49:16 well 17:49:22 we can but only for useless deltas 17:49:35 since we can't get 1 on stack without non-printable stuff 17:49:37 AnMaster: Sure, but that breaks once you go over 255 :-P 17:49:42 Deewiant, true 17:49:47 ehird: Unicode is easy to support 17:49:55 Deewiant, we wouldn't want that 17:50:01 makes things too easy 17:50:07 Deewiant: But it's not spec. 17:50:23 It's quasispec 17:50:24 s/not/not in the/ 17:50:27 Deewiant: Don't care. 17:50:50 I can see you don't 17:50:53 ehird, as I said, we do have x to set delta to a dx/dy pair. But we can't set it to any useful delta 17:50:57 I'm just saying, it can be done if you want to. 17:51:00 I find this quite amusing for some reason 17:51:29 And since you can't reset the delta in any way except with another x, you're screwed if you end up on that road 17:51:35 Since ][ just rotate 17:52:01 Just never do it, then 17:52:14 We only need 2D for w, and [ and ] to branch back :P 17:52:14 Pretty much, yep 17:52:20 ehird, like file IO can only write 10-15 * 10-15 bytes. (those are ranges, not minus) 17:52:29 Fine by me! 17:53:02 AnMaster: We're allowing ASCII so ' can give you some other values 17:53:07 well you can write less since it strips trailing whitespace 17:53:11 Deewiant, oh good point 17:53:14 forgot that 17:53:26 still, rather limited I fear 17:53:32 This is the best esolang ever 17:53:39 hrrm wait, how are we supposed to set binary/text mode? 17:53:44 Don't. 17:53:45 we can't push either 0 or 1 there 17:53:53 so thus we can't do output 17:53:58 since the parameter won't be valid 17:54:04 0 is gettable with an empty stack 17:54:13 Deewiant, well depends on order 17:54:14 But difficultly 17:54:19 * AnMaster checks the spec 17:54:27 Let's see here 17:54:31 Deewiant, stack stack? 17:54:43 Deewiant, the flag is in the middle 17:54:46 abcdeabcdea{b} pushes 0... maybe 17:55:03 "Also, if the least significant bit of the flags cell is high, o treats the file as a linear text file; that is, any spaces before each EOL, and any EOLs before the EOF, are not written out. The resulting text file is identical in appearance and takes up less storage space. " 17:55:04 hm 17:55:11 well okay looks like we can get it 17:55:12 No, wait 17:55:14 since it is a bitmask 17:55:34 This is basically abcde{}lang 17:55:35 :P 17:55:36 f for example is 1 in LSB isn't it? 17:56:00 and e would be 0 in LSB 17:56:01 so yeah 17:56:08 strange parameters for the flag, but it would work 17:56:25 also, hrrm does cfunge actually only check that bit *looks* 17:56:52 abcdeabcdea{b}abcdeabcdeb{a}abcdeabcdeb{a}abcdeabcdeb{a}abcdeabcdeb{a}abcdeabcdeb{a}abcdeabcdeb{a}abcdeabcdeb{a}abcdeabcdeb{a}abcdeabcdeb{a}abcdeabcdeb{a} 17:56:55 That pushes 0 17:56:58 :D 17:56:59 I love you. 17:57:17 There's probably an easier way 17:57:19 ah it does 17:57:20 textfile = (bool)(stack_pop(ip->stack) & 1); 17:57:21 there 17:57:22 :D 17:57:29 Certainly once you have a zero already 17:57:30 (why did I explicitly cast it??) 17:57:51 Deewiant: I expect my98sbst.98s ASAP 17:58:04 Deewiant, also I can't follow in that code 17:58:06 (MYcology 98 SuBSeT . 98 Subset) 17:58:44 ehird, I doubt it. It would require completely restructuring and rewriting almost everything 17:59:15 Deewiant, can you get a 4? 17:59:18 ehird: Trivial enough: implement all of 98 passing mycology.b98, then enable subset mode and run through mysubsan.98s (MYcology SUBset SANity.98 Subset), which just checks that the 93 ones reflect 17:59:23 otherwise you would be unable to use almost all fingerprints 17:59:26 AnMaster: No 17:59:30 well okay 17:59:34 I don't think, anyway 17:59:38 so no currently existing fingerprints 17:59:39 ehird, ^ 17:59:50 since you can't push the 4 for number of bytes used for it 17:59:56 AnMaster: Yes you can 17:59:59 It's modular arithmetic 18:00:08 Deewiant, it is bitshift iirc? 18:00:10 You don't have to use "AMOR"4 18:00:30 Deewiant, well yes 18:00:32 You can use "FOOBARBAZQ"a or whatever that happens to give the same result 18:00:52 Deewiant: It'd check that crazy a/b/{/} combos work, though. 18:00:55 Deewiant, are you certain it isn't bitshift? 18:01:07 Deewiant, if so, you need to do something about mycology: 18:01:09 while (fpsize--) { 18:01:09 fprint <<= 8; 18:01:09 fprint += stack_pop(ip->stack); 18:01:09 } 18:01:16 is my code to pop the fingerprint it seems 18:01:31 Same difference 18:01:40 fprint is still not a bigint, it wraps 18:01:47 true 18:01:54 AnMaster: And nope: it's "multiply by 256" 18:02:01 That's just your premature optimization there 18:02:21 Deewiant, bitshift by 8 would the the same though 18:02:37 Yes, it does, and your compiler realizes that as well :-P 18:02:53 Deewiant, I found the bitshift an easier way to think about it 18:03:26 Deewiant, also are you certain? tcc only does constant folding, nothing else 18:03:26 I find it easier to do what the spec says :-P 18:03:52 (not that tcc handled some of the C99 constructs last time I checked, which was over a year ago iirc) 18:03:56 s/your compiler/your optimizing compiler/ 18:04:17 right 18:04:47 Deewiant, that would qualify gcc. gcc is optimising. But using it in -O0 is not 18:05:27 anyway 18:05:45 ooh I know how you could get low numbers 18:05:49 not reliably though 18:05:51 from y 18:06:04 Yes, I said that before. 18:06:07 (that y would be useful) 18:06:09 Deewiant, by careful testing with w you could probably locate a 4 in there 18:06:17 Yay, you get a random low number and you can't inspect what it is :-D 18:06:26 Deewiant, you can compare it to a and 0 18:06:37 Yes, exactly 18:06:39 and then if you find 9 numbers in between 18:06:40 -!- MigoMipo has joined. 18:06:40 "I have a number between 1 and 9" 18:06:45 then you can sort them relative each other 18:06:54 and establish which is which 18:07:02 of course you might not find all those 18:07:10 Hmm, actually, it's much easier than that isn't it 18:07:16 Since y gives stuff like stack size 18:07:20 oh 18:07:21 right 18:08:00 Deewiant, it would be a lot more interesting if you had to guess them though 18:08:13 this is brilliant 18:08:13 and, what number is stack size at 18:08:25 I mean, are you certain you can actually *reach* the stack size? 18:08:31 Easily enough 18:08:33 We have $ 18:08:38 Deewiant, not $ iirc? 18:08:45 isn't $ in 93? 18:08:53 He showed an implementation of it. 18:08:56 Using a/b/{}. 18:08:58 oh right 18:08:59 abcdeabcdea{b} 18:09:00 indeed 18:09:01 true 18:09:53 Deewiant, I think abcdefabcde{b} looks nicer 18:10:02 But that doesn't work. 18:10:05 oh true 18:10:09 You need a on TOS when you do { 18:10:12 the last a has to be the same 18:11:42 Deewiant, the 23rd item is number of items on the stack 18:11:44 I think 18:12:29 New challenge: Write 23 18:12:51 ehird, y then pop 22 items. then s to store that value somewhere 18:12:59 and use that 18:13:03 Pop? 18:13:06 With that really long snippet? 18:13:08 ehird, yes 18:13:11 22 times 18:13:15 Biggest hello world EVAR 18:13:20 ehird, no 18:13:25 hello world would be: 18:13:58 -!- augur has quit (Connection timed out). 18:14:10 'd'r'o'w' 'o'l'l'e'H followed by some file IO stuff 18:14:20 since you can't do stdio 18:14:23 or rather 18:14:48 just use o on Hello world somwhere in the funge space 18:14:57 placed at an accessible position of corse 18:14:59 like 10,10 18:15:36 *course 18:15:52 indeed 18:16:36 The 10th y element is the IP's x-position 18:16:38 we still have ;; and j don't we? 18:16:50 That's an easy way to get many things 18:16:58 Deewiant, oh nice. Would work as to find out 23 and then more easily work from there 18:17:17 -!- jpc has joined. 18:17:30 since actually creating a lookup table just with that would take quite a bit of space 18:17:54 ehird, btw, we have threads, and quit. But we do not have exit 18:18:06 exit (@) is from befunge93 18:18:17 ehird, this means we can never exit a thread once we started it 18:18:18 That actually sucks ass :-D 18:18:20 AnMaster: q 18:18:25 ehird, q ends program yes 18:18:26 ehird: Quit the program 18:18:28 Ah. 18:18:28 but @ ends thread 18:18:35 Oh well, just make it do nothing forever 18:18:42 or use a thread pool 18:18:53 parking them in some loop 18:19:00 And releasing them how exactly 18:19:09 With p? Oh wait WE DON'T HAVE THAT 18:19:09 :-P 18:19:15 Deewiant, s? 18:19:35 Then you have to go there yourself 18:19:44 And park them all in somewhat direction locations 18:19:46 Deewiant, not from the same direction 18:19:47 Hmm, what 18:19:50 Different locations* 18:20:22 -!- kar8nga has quit (Remote closed the connection). 18:20:37 Deewiant, what about something like: 18:20:39 ] ] 18:20:39 s]' 18:20:39 ] ] 18:20:44 if they travel clockwise 18:20:50 s/ /z/g 18:20:55 Deewiant, well yes 18:20:58 but you get the idea 18:21:17 You'll end up with two threads in the same place 18:21:29 Deewiant, depends on timing 18:21:31 But that works, I suppose 18:22:01 Deewiant, the second thread could use another s to fork one off to another direction then overwrite that s with a z 18:22:03 But how will you close the pool behind you? :-P 18:22:18 Meh, tricky 18:22:29 Deewiant, have a non-cardinal thread to overwrite it with a z? 18:22:31 or something 18:22:47 :-D 18:22:58 Deewiant, you could have it bounce between two r or such 18:23:16 so it overwrites it every... uh... hrrm no 18:23:24 you need to make it loop 18:23:27 it can't bounce 18:23:34 -!- kar8nga has joined. 18:23:35 or it would overwrite it's 'z 18:23:39 in 'zs 18:24:23 Deewiant, however I'm unsure how you would do: #^t thing 18:24:26 since you don't have # 18:24:35 ^ can easily be replaced 18:24:40 oh wait 18:24:41 we have j 18:24:44 that works 18:25:34 ehird, Deewiant: I suspect 98s would result in very sparse code in part, and very very dense in other parts. Verbose everywhere though 18:26:20 JavaFunge 18:26:29 hah 18:26:37 Deewiant, 93 has ? right? 18:26:43 -!- soupdragon has joined. 18:26:43 if so we wouldn't have any randomness 18:26:44 Yep 18:26:57 well actually 18:26:59 we could 18:27:04 we have y and y has date/time 18:27:12 just code our own PRNG from that in 98s 18:27:19 ehird, will you implement that? ;P 18:27:37 You can, certainly 18:27:47 A bad RNG is really easy, anyway 18:28:12 ehird, I was about to suggest mersenne twister 18:28:58 ehird: Without +-*/%? 18:29:09 Deewiant: Well, you'll need those elsewhere anyway 18:29:12 Deewiant, btw, how does [ and ] work with respect to trefunge? 18:29:36 Deewiant, ignoring the z component? 18:29:51 A simple PRNG will use code something like R = (A * R1 + B) mod(C): R1 = R: R = R / C. Primes are usually used for constants A, B, and C. Most languages have provisions for placing a seed value in R1 before calling the PRNG but it isn't needed and some PRNGs may not bother with the additive constant B. 18:29:51 AnMaster: Always rotate on the z axis 18:29:55 oh right 18:29:56 there 18:30:11 Put the date/time into R1, pick some nice primes for A, B and C (steal from mersenne twister or something), and we're done 18:30:36 ehird, we don't have *+/ or modulo though 18:30:39 in 98s 18:30:49 So implement them 18:30:56 hm, lookup table? 18:30:57 You're gonna need them sometime anyway 18:31:03 Heh, I was going to suggest using a power of two for C 18:31:05 So you could bitshift 18:31:06 But, uh, prime 18:31:13 AnMaster: Think simpler 18:31:16 ehird, no bitshift in core 98 18:31:16 + is just xor with overflow 18:31:20 nor 93 18:31:22 so well 18:31:24 * is just + loop 18:31:31 / is just repeated minusing 18:31:36 ehird: Where will you get xor 18:31:37 Well, / and mod actually 18:31:38 ehird, there is no - either though 18:31:38 together 18:31:42 Deewiant: Don't know, that's your problem 18:31:48 Yeah, see, and that's a problem. :-P 18:31:56 ehird, step 1: implement xor in 98s 18:32:09 not even full 98 has it except in some fingerprint 18:32:18 and that is an mkry fingerprint isn't it? 18:32:27 unless ORTH or TOYS had it 18:32:30 Yeah, one of his has it. (If not two.) 18:32:52 (a xor b) is just ((a and not b) or ((not a) and b)) 18:32:58 I've already said how to do not with w 18:33:03 and/or are up to you 18:33:06 Bitwise not with w? 18:33:09 Also, we need a way to extract the lowest bit from a number 18:33:15 it was logical not 18:33:17 Deewiant: Adding just xors one bit 18:33:19 not bitwise not 18:33:21 which is the same as logical operations 18:33:24 Then we check if it overflows 18:33:27 And if so, go on to the next bit 18:33:37 Yeah, if you could extract the lowest bit 18:33:40 Which you can't 18:33:44 actually, why not represent numbers in a different way. Like size of stacks 18:33:51 Hmm, actually, haha 18:34:03 As we established, o's binary mode depends on the lowest bit 18:34:06 AnMaster: Yeah, I was thinking that 18:34:08 Deewiant: ...:D 18:34:10 Deewiant: I love you. 18:34:12 Deewiant, oh my 18:34:20 Deewiant, o + i? 18:34:20 So write something with o, read it back with i, and see whether there's a trailing space 18:34:26 indeed 18:34:26 * ehird dies laughing 18:34:37 Deewiant, that's a wonderful way 18:34:46 just beware of race conditions with t 18:34:49 Best way to get number % 2 ever 18:34:51 have one file per thread 18:34:53 This is the most beautiful language I've ever seen. 18:35:33 Deewiant, however that might not work 18:35:39 remember, i and o are optional 18:35:51 you can check them with 1y however 18:35:53 but 18:36:03 checking that bitmask of 1y would be a problem 18:36:15 probably easier to check for i and o reflecting 18:36:29 Deewiant, r isn't in 93 is it? 18:36:43 if it is, then r would be unimplemented and thus reflect 18:36:51 if it isn't then r would be implemented as reflect 18:37:02 which is quite ridiculous 18:37:09 Yes, r is useless, as said. :-P 18:37:25 Deewiant, well, it is more like "reserved to always reflect" 18:37:30 in normal 98 18:38:22 Yes, r is useless, as said. :-P 18:38:30 mhm 18:39:34 Deewiant, was unimplemented defined to reflect in 93? 18:39:40 Not sure 18:39:49 What language are you discussing? 18:39:53 *Main> html head_ body 18:39:54 18:39:56 *Main> html head_ head_ 18:39:58 (type error) 18:39:59 Woot. 18:40:05 Befunge-98's subset without Befunge-93 instructions 18:40:15 Ah 18:40:16 This is going to be the first HTML generation engine that makes liberal use of type theory. 18:40:20 Deewiant, if so, then one could argue that r was implemented in 93 too (even if it wasn't explicitly) and thus should not be in 98s. Instead if should be unimplemented in 98s and reflect 18:40:21 ;D 18:40:31 -!- augur has joined. 18:40:42 Well, there's a minor distinction in that interpreters can warn on unimplemented instructions 18:40:45 ehird, don't you agree? 18:40:50 Deewiant, oh indeed good point 18:41:12 -!- augur has quit (Read error: 104 (Connection reset by peer)). 18:41:16 Attributes are going to be a bitch, I wonder how to do attributes 18:41:21 Ooh, perhaps those dynamic variable things 18:41:25 Wait, nah 18:41:27 They have sucky syntax 18:41:40 -!- augur has joined. 18:41:47 ehird, downside is that everyone will use the same code snippet at the start of 98s programs 18:41:55 It'd be (let ?title = "Poop land"; ?width = 34 in magic []) 18:42:11 ehird, which will be: get 4 using y. Load various fingerprints to make life simpler 18:42:14 (let ?src = "http://..." in img) 18:42:18 AnMaster: NO 18:42:20 No fingerprints :( 18:42:22 Fingerprints suck 18:42:26 ehird, fingerprints aren't in 93 18:42:30 so they have to be in 98s 18:42:33 Yes, but it's bad style to use them. 18:42:41 Besides, all the defined fingerprints are 98 fingerprints. 18:42:44 98s isn't 98. 18:42:48 Therefore they aren't 98s fingerprints. 18:42:50 I rest my case. 18:43:03 ehird, well actually using crazy fingerprints should be okay in 98s 18:43:10 for a suitable value of crazy 18:43:54 Nothing too useful 18:44:01 Deewiant, hm? 18:44:26 Deewiant, ROMA would be very useful for 98s (instead of almost completely useless in 98) 18:44:49 I find that fits with the language 18:45:01 useless stuff becomes useful, useful stuff becomes useless 18:45:13 it seems to be a good summary of the differences between 98 and 98s 18:45:19 Not really 18:45:22 FIXP gives you math 18:45:28 As do FPSP, FPDP 18:45:28 http://sprunge.us/ONFI I can't believe it's not a very poor functional language! 18:45:37 BOOL as well, if it's defined as bitwise and not logical 18:45:42 Deewiant, I didn't say it applied to everything 18:45:43 IMTH 18:45:48 so you do use a gc 18:45:49 also I don't implement BOOL 18:45:53 Deewiant, which one is IMTH? 18:45:59 soupdragon: for his lists, yes 18:45:59 Integer MaTH 18:46:07 LONG also does 18:46:09 Deewiant, don't think I implement that one either 18:46:14 ICAL as well 18:46:15 and LONG I definitely don't implement 18:46:19 what if you make lists out of lambda? 18:46:19 pikhq: there's actually a certain elegance to that code 18:46:23 ICAL I don't remember if I did 18:46:25 what soupdragon said 18:46:33 SETS does, if you like peano arithmetic 18:46:33 cons = \x.\y.\f.f x y 18:46:41 can lambdas return lambdas? 18:46:45 I guess so 18:46:47 Sure. 18:46:55 Deewiant, again, I don't implement that 18:46:59 I don't think I mentioned CPLI 18:47:02 Deewiant, I probably will when I have time 18:47:05 Who cares what you implement? :-P 18:47:05 CPLI I implement 18:47:11 I could replace all those functions with closures. 18:47:18 Deewiant, will ccbi support a 98s mode? 18:47:21 I'm just saying that lots of fingerprints make 98s "practically 98" 18:47:27 pikhq: that technically could break, right? 18:47:39 ehird: *Technically*, yes. 18:47:40 Would be easy enough to add 18:47:56 Though it's unlikely: this is all working because my lambdas have no need for a trampoline. 18:47:59 Deewiant, cool. Don't remember to remove string mode but keep the SGML spaces! 18:48:10 err 18:48:11 XD 18:48:13 That doesn't matter 18:48:13 "don't forget" 18:48:13 GCC isn't about to start doing trampolines for everything. 18:48:20 Spaces don't exist 18:48:30 pikhq: Do I have to do { return x; } or can I just do x? 18:48:35 (Do you accept patches?) 18:48:57 Deewiant, in ' they do 18:49:10 ehird: I'm pretty sure both are valid. 18:49:12 Deewiant, also, elsewhere they reflect 18:49:14 Yes, and SGMLness doesn't apply there 18:49:26 Deewiant, you didn't get the joke did you? 18:49:31 this uses some new extention? inline functions? 18:49:32 Also, because of spaces reflecting it's a bit trickier to add 18:49:34 Is it ({ or is it just ( {? 18:49:36 not inline.. 18:49:39 i.e. does the spacing matter 18:49:41 soupdragon: nested 18:49:41 Spaces aren't handled as instructions 18:49:42 it's old 18:49:44 very old 18:49:58 AnMaster: Spaces reflecting removes wraparound, bw 18:49:59 btw* 18:50:00 ehird: Where? 18:50:02 pikhq: also, "void* _" grr. 18:50:03 void *_ 18:50:05 Both are in use. 18:50:06 Also, I just mean in general 18:50:07 Deewiant, oh right 18:50:08 in gcc 18:50:10 is ( 18:50:11 that's seems like a major issue 18:50:11 { 18:50:13 } 18:50:14 ) 18:50:16 acceptable 18:50:20 Not really 18:50:28 ehird, your opinion 18:50:28 ? 18:50:34 You can use ; still, it just means that by default you bounce off edges 18:50:36 There's no space 18:50:48 ehird: Yeah. 18:50:49 ehird, then there is no wrap around 18:50:49 Also, what Deewiant said 18:50:53 that's the point 18:50:55 hm 18:50:59 Deewiant, ah yes 18:51:17 anyway cfunge implements space as an instruction that skips forward to the next non-space 18:51:20 ehird: Oh, right. void *_ instead of void *THROW it is. 18:51:35 (handling t interaction correctly) 18:51:50 I mean void* __LAMBDA__ 18:51:58 Ah. That. 18:52:00 pikhq: I'm implementing a variation on yours that's more awesome and also uses the GNU coding conventions just to make it even more ridiculouser 18:52:05 however this would mess up k handling 18:52:09 GNU coding conventions? Lispers scared. 18:52:14 This? Haskellers scared! 18:52:30 pikhq, THROW? 18:52:42 AnMaster: Throwaway argument. 18:52:47 pikhq, oh right 18:53:07 The first argument of a lambda is the closed variable, even if you don't close any variables. 18:53:16 What's the GNU convention for a type name? 18:53:17 Foo? 18:53:32 ehird, you think any of us here use that convention? 18:53:36 AnMaster: :D 18:53:43 pikhq: Actually, I'd make your code C++ 18:53:48 Then you can do (, char *s) 18:53:49 :D 18:53:52 * pikhq looks at info standards 18:53:55 ehird, oh? 18:53:56 ehird: Heheheh. 18:53:59 Or just, you know, do ()void *_, char *s 18:54:02 ehird, what does that do in C++ 18:54:06 *(void *_, char *s) 18:54:07 AnMaster: in C++, 18:54:14 yes? 18:54:20 /*int argc*/, int foo, /*char **argv*/ 18:54:22 works 18:54:30 so that the arguments stay the same and you can uncomment it, but you ignore some 18:54:31 okay... 18:54:54 ehird, do they take up a space with respect to calls to the function? 18:55:07 ehird: It appears that it's just type_name_t for the GNU convention. 18:55:18 as in, will foo(myargc, myfoo, myargv) 18:55:20 still work 18:56:19 pikhq, that's a poor choice. Isn't *_t semi-reserved for future C standards? 18:57:42 What's the GNU convention for argument continuations? 18:57:47 AnMaster: Yes, that's the point (re: C++) 18:57:54 Erm 18:57:56 Not argument continuations 18:57:59 macro continuations 18:58:01 As in, what column? 18:58:16 pikhq, shouldn't you implement foldl/foldr? 18:58:43 ehird: "Undefined". 18:58:47 AnMaster: Probably. Just haven't. 18:58:53 pikhq, ah 18:58:58 pikhq, what is that header called? 18:59:16 AnMaster: "lambda.h"? 18:59:21 and: I challenge you to make a portable version of it, using just c99 (+ gc I guess) 18:59:28 Impossible. 18:59:37 ehird, sure? 18:59:41 The lambda definition is impossible. 18:59:44 pikhq: Uh, I had a question but I've almost forgotten it. 18:59:46 AnMaster: Absolutely. 18:59:46 hm okay 18:59:51 pikhq: Oh yeah. 18:59:55 pikhq: Does it say anything about whether to use 18:59:55 ehird, no horrible macro tricks 18:59:56 ? 18:59:56 ( 18:59:57 You can make the closures portably, though. 18:59:59 AnMaster: stfu for a sec 19:00:00 ( 19:00:02 { 19:00:03 ... 19:00:05 } 19:00:06 pikhq, oh? 19:00:06 ) 19:00:08 or 19:00:09 ({ 19:00:13 ... 19:00:15 }) 19:00:17 AnMaster: Closure is just function + pointer. 19:00:22 oh good point 19:00:29 just will be more verbose 19:00:57 ehird: No mention. 19:01:51 ehird, isn't ({ one symbol there? as in += isn't + = 19:02:00 AnMaster: Yeah, I asked pikhq but he said it was two. 19:02:05 strange 19:03:05 It's just a compound statement enclosed in parens. 19:03:32 * ehird goes for ({ 19:03:33 Less ugly. 19:03:43 It appears that's the unstated convention. 19:05:32 So is foo_t just the typedef of struct foo in the GNU conventions? 19:05:36 They're so complicated... 19:05:56 Kinda. 19:05:56 98s instructions (summary): '();=[]abcdefhijklmnoqrstuwxyz{} and A-Z 19:06:00 space is not part of it 19:06:20 did I miss any? 19:06:24 Heh, it actually calls function definitions defun. 19:06:27 Lisp on the brain! 19:06:39 Heheh. 19:06:52 void * (*func)(); 19:06:53 This should be 19:06:56 void *(*func)(...); 19:07:04 No? 19:07:20 Yeah. 19:07:21 ehird, try indent(1) with gnu settings 19:07:31 Erm, how do you save-buffer-as in Emacs? 19:07:33 AnMaster: Good idea. 19:07:42 ehird, not sure how much it does inside macros 19:07:57 ehird, what about M-x save-buffer-as RET ? 19:08:04 (assuming that command is called that) 19:08:09 Does not exist. 19:08:29 struct fib_close_t *fib_close = xgc_malloc(sizeof(fib_close)); 19:08:34 pikhq: why not simply make struct closure end in 19:08:38 void *closed[0]; 19:08:39 ? 19:08:46 That way, you don't need malloc at all. 19:08:52 And can cast a struct in. 19:09:07 ehird: C-x C-w 19:09:08 ehird, using C-h k and then the menu in emacs it tells me that runs the command write-file 19:09:11 -!- kar8nga has quit (Remote closed the connection). 19:09:13 Also, tempting. 19:09:16 that is for save as 19:09:36 (write-file filename &optional confirm) 19:09:47 hm 19:09:57 bound to C-x C-w 19:09:59 ehird, ^ 19:10:29 it would have been easy to find out by yourself 19:10:38 (enabling menu bar temporarily as I did) 19:11:30 But the menu bar sucks. 19:11:49 I just pulled out my dead-tree Emacs manual. 19:11:50 * ehird wonders whether the alignment should be 19:11:53 FN(..., 19:11:55 my whole life is just a failure continuation 19:11:57 { 19:11:58 or 19:12:00 FN(..., 19:12:01 { 19:12:11 ehird: Second. 19:12:11 (i.e., is it considered part of the call, or a function definition and thus a control structure?) 19:12:17 pikhq: But we're extending C! :'( 19:12:19 pikhq, you have such a manual? 19:12:24 heh 19:12:24 AnMaster: Yes. 19:12:25 It's more like rms' beloved Lisp now! 19:12:31 pikhq, old? 19:12:34 Okay, what about the return then 19:12:35 return FN(... 19:12:37 or 19:12:38 ehird: Hmm. 19:12:39 return 19:12:40 FN(... 19:12:41 I think the latter 19:12:44 AnMaster: Emacs 22. 19:13:05 pikhq, not that old then. I didn't know you could get such manuals 19:13:06 and why 19:13:16 pikhq hates trees. 19:13:33 pikhq, does it include anything the online docs is missing? 19:13:36 AnMaster: Part of being an FSF member. 19:13:41 And no. 19:14:02 pikhq, good thing you aren't member of some "save the forests" group as well 19:14:09 Heheh. 19:14:09 also huh @ you being an FSF member 19:14:10 I already made that joke. 19:14:36 pikhq: Any opinions on the return indentation? 19:14:40 return LAMBDA(...) 19:14:41 or 19:14:43 return 19:14:44 ehird: Not really. 19:14:44 LAMBDA(...) 19:14:47 I'd read the GNU style guide, but ugh 19:14:48 ehird, no? you were that he hates trees. I joked that "good your interest didn't conflict then" 19:14:49 I hate it 19:15:03 AnMaster: That's... the same joke. 19:15:12 ehird: Just write code and then run indent on it 19:15:13 ehird: The GNU style guide isn't even all that detailed. 19:15:14 ehird, isn't it "return LAMBDA ()" 19:15:16 in gnu style 19:15:28 I thought they did space between function and parameter list 19:15:39 except for _() in gettext 19:15:44 maybe I misremember 19:15:45 AnMaster: It's a macro. 19:15:48 You can't do that with macros. 19:15:53 Deewiant: Alright. 19:15:56 ehird, oh good point 19:16:12 Deewiant, indent iirc doesn't do much reformatting inside macros 19:16:25 The GNU style guide also "conveniently" prevents replacing a function with a macro. :P 19:16:39 pikhq: http://sprunge.us/YLOS Are you *sure* you prefer the indented version? 19:16:50 pikhq, oh? that's crazy 19:17:07 ehird, yeargh 19:17:12 ehird: Yeargh. 19:17:15 AnMaster: Using different naming conventions for functions and macros: THAT'S CRAZY 19:17:18 Yeargh! 19:17:23 pikhq: Which is more GNU-like, is the question, though. 19:17:24 I think the latter. 19:17:25 pikhq, stop copying me 19:17:50 ehird, oh I thought he meant you weren't allowed to do #define FOO somefunction 19:17:53 ehird: Emacs gives me the first when set for GNU. 19:18:23 pikhq: Yes, but we're adding a new control structure here. 19:18:26 So there's a conflict of sorts. 19:18:40 Erm. s/first/second/ thinko. 19:19:17 Oh wait, the params should be on the next line 19:19:20 GNU style, after all. 19:19:26 pikhq: Erm, right, switch what I said too. 19:19:41 ehird: Just go with the second. 19:19:46 It feels most GNU. 19:20:00 I'm just gonna Go With Indent, because I can't be arsed to think about this stuff. :P 19:20:06 Hahah. 19:20:14 ehird, which one is indent of those two? 19:20:20 I don't know; haven't run indent yet. 19:20:31 Btw, C-x C-v RET is useful for reloading a file. 19:20:35 ehird, on linux or os x? iirc os x has *bsd indent 19:20:38 which is different 19:20:41 By the way, your definition of cons there won't work. 19:20:42 iirc 19:20:54 pikhq: Yeah, no closing 19:21:00 Hmm 19:21:02 ehird: Yeah. 19:21:05 If you have a structure ending in a [0] array 19:21:06 Can you do 19:21:12 struct foo = { ..., {1,2,3} }; 19:21:17 and have it automatically allocate the right space on the stack? 19:21:27 ehird, why [0]. GCC manual recommends one uses [] from C99 instead 19:21:35 AnMaster: Okay, fine, []. 19:21:43 ehird: I'm pretty sure you can. 19:21:47 pikhq: Sweet. 19:21:58 pikhq, really? that surprises me 19:22:05 This will be the WORST C FILE EVER 19:22:31 Actually, not "pretty sure". 100% positive. That's a GNU extension to compound literals. 19:22:44 AnMaster: GCC does many a surprising thing. 19:22:44 pikhq, oh so it won't work in pure c99? 19:22:53 It's like I'm programming in the worst functional language ever invented 19:22:53 that bit I meant 19:22:56 And I love it 19:23:01 AnMaster: Probably not. 19:23:03 ehird: Heheheh. 19:23:06 pikhq: Wait a second. 19:23:07 pikhq, hm 19:23:10 Your thing doesn't have typed return values. 19:23:13 That is lame fuck. 19:23:17 I'm adding them to my thing. 19:23:27 ehird: Yeah, it's all void *. 19:23:33 Hmm. 19:23:39 Then again, that would require that I make a macro that defines a structure. 19:23:41 I had a very, very hacked together thing. 19:23:42 ehird, but then a lambda that returns a+b won't work for both float and int will it? 19:23:42 That isn't very GNU at all. 19:23:56 AnMaster: It won't with (void *), either. 19:24:01 ehird, good point 19:24:25 AnMaster: It's still "typed", the compiler just *can't* do any type checking on it. 19:24:40 ah like that you mean 19:24:41 right 19:24:52 I was thinking "like tgmath.h" 19:26:15 pikhq: You know, I should probably make this closure_t *. 19:26:26 Currently, a cons cell is passing around three machine words. Everywhere. 19:26:34 (The function pointer and the car and cdr pointers.) 19:27:07 ehird: Yeah, probably should. 19:27:23 But that'd make things inconvenient, so I won't. 19:27:43 Mmm. Oh, the malloc'ing you'd have to do. 19:28:03 Incidentally, with mine, this works: 19:28:15 LAMBDA(NULL, (), printf("foo"); printf("bar\n")) 19:28:21 Look ma, no braces! 19:28:32 Works with mine, too. 19:28:39 Nope. 19:28:48 Because it won't return the value the latter printf returns. 19:28:49 :) 19:28:50 lambda(NULL, (void*_, int *x), x && printf("%i ", *x)) 19:29:27 Sure it will. It will then get treated as a void*. 19:29:35 Sorry, no. 19:29:53 ... Explain yourself? 19:29:54 {\ 19:29:55 __VA_ARGS__;\ 19:29:57 };\ 19:29:59 No "return", see? 19:30:04 I do "return ({ __VA_ARGS__; });". 19:30:18 Actually, body, not __VA_ARGS__. 19:30:19 And that prevents you from returning within the lambda. 19:30:19 But whatever. 19:30:28 Who said it does? 19:30:43 ehird, wait, why does a cons cell need a closure? Isn't it *only* car and cdr in general? 19:30:47 return inside of a return borks. 19:30:52 AnMaster: I'm implementing cons cells as closures. 19:30:56 >:) 19:30:57 ehird, aha 19:30:59 That's the only reason I *don't* have the lambda in a return ({ }). 19:30:59 crazy 19:31:16 Hey, it's common... in the lambda calculus. 19:31:21 pikhq: Alright then. 19:31:30 ehird, correction: "crazy for C" 19:31:37 AnMaster: This whole thing is crazy for C. :P 19:31:40 well yes 19:31:46 it is crazy for most lisps too 19:32:16 ehird: Also, I'm pretty sure GCC implicitly returns the last value. 19:32:18 Hmm... What happens if you use NULL in place of a void *[]? 19:32:26 Erm. Value of the last statement. 19:32:39 pikhq, in statement expressions? 19:32:55 or, in general? 19:33:13 AnMaster: In general. 19:33:25 the later would be batshit insane while still not breaking the C standard (since not using return to return from a non-void function is undef 19:33:49 *latter 19:33:56 inded 19:33:58 indeed* 19:34:03 What's so batshit insane about it, other than that you *really* shouldn't rely upon it? 19:34:05 ehird, cold fingers doesn't help spelling 19:34:13 [19:31] Hmm... What happens if you use NULL in place of a void *[]? 19:34:16 I guess breakage. 19:34:33 pikhq, because it breaks if the types are incompatible 19:34:53 AnMaster: Why yes, yes it does. 19:34:55 what if you have something that has the value 4 but you should return a struct on the stack (not even a pointer to a struct) 19:35:11 Then clearly you're going to break shit. 19:35:22 If the return value is not ignored. 19:35:25 pikhq, with no different warning that not using return at all 19:35:33 afaik 19:35:40 So don't do that. 19:36:18 ehird, my point was that implicit return won't warn for such issues other than the usual about falling of end of non-void func 19:36:54 ehird: ... Yes. What else would it do? 19:36:56 Erm. 19:36:58 AnMaster: 19:37:52 "I'm warning you that the following is a dumb idea!: struct foo bar = *((struct foo*)((void *)&4));" 19:39:12 pikhq, was that a gcc warning? 19:39:28 ... No. 19:39:28 -!- nooga has joined. 19:39:33 pikhq, why the quotes 19:39:36 I'm asking you "what the hell do you expect, *that*?" 19:40:02 pikhq, I doubt that &4 would even compile 19:40:16 what the hell does it mean to take the address of an integer literal 19:40:19 Probably not. 19:40:31 &({int x=4;}), however. 19:40:41 (unless it is implicitly cast to a pointer) 19:40:42 Whoa, lots of errors. 19:40:48 pikhq, hm what is that? 19:41:03 pikhq, taking the address of a statement expression I see 19:41:06 but what the hell does that do 19:41:08 closure.c:46:6: error: macro "LAMBDA" passed 4 arguments, but takes just 3 19:41:11 ffffffffffff 19:41:12 uuuuuuuuuuuuuuuu 19:41:20 ... 19:41:23 Same thing as ({int x=4;&x;}) 19:41:27 ({ void * __function (void *_, closure_t list, closure_t closure) { { return ({ closure_t __closure = (list); __closure.function (__closure.closed, ({ void * __function (void **_) { { return nil; } } (closure_t) { __function, ({ }) }; }), ({ void * __function (void **_, void *car, void *cdr) { { return ({ closure_t __closure = (cons); __closure.function (__closure.closed, ({ closure_t __closure = (closure); __closure.function (__closure.closed, car); }), 19:41:28 ({ closure_t __closure = (map); __closure.function (__closure.closed, cdr); })); }); } } (closure_t) { __function, ({ closure }) }; })); }); } } (closure_t) { __function, ({ }) }; }); 19:41:33 ehird, spam! 19:41:33 This is going to be fun to debug. 19:41:37 AnMaster: Two lines. 19:41:40 ehird: i've installed plan9 in qemu but i can't start rio ;[ any ideas? 19:41:44 ehird, I didn't mean line count 19:41:48 ehird, I meant what was in it 19:41:51 nooga: see the plan 9 wiki for common problems, other than that, too vague 19:41:54 AnMaster: Don't care. 19:41:58 ehird: Oh dear. 19:42:00 ehird, also try indent on that from the error 19:42:11 AnMaster: But then the line numbers won't match up. 19:42:14 it should help split it over lines 19:42:28 ehird, well then, split it on several lines some other way before the error 19:42:34 Aha, indent exposed the error. :D 19:42:34 maybe take gcc -E output 19:42:37 and use that directly 19:42:43 ehird, my suggestion worked then :P 19:42:44 Well. Sort of. 19:42:50 indent appears to... balk... on my macros. 19:42:51 ehird: i've read that wiki ;p 19:42:58 ehird, wow 19:43:08 As in "holy mother of fuck why is intending so much". 19:43:13 struct cons_closed { 19:43:15 void *car; 19:43:16 void *cdr;}; 19:43:18 struct 19:43:19 cons_closed * 19:43:21 :D 19:43:21 cell = 19:43:22 Yeah, see, that bit of nesting ended, indent. 19:43:24 wonderful 19:43:33 It gets so awesome near the end 19:43:39 Literally 3 letters of text 19:43:54 what is that code? 19:44:00 http://sprunge.us/AHFC 19:44:03 Behold... the INDENTOFAIL. 19:44:06 ehird, it reminds me of how the C99 construct: struct x y = { .foo = 1, .bar = 2 } messes up astyle 19:44:07 nooga: My version of pikhq's closures in C. 19:44:12 well it has to be split over several lines for it 19:44:17 Good god it's so pretty. 19:44:18 it goes something like: 19:44:21 struct x y = { 19:44:23 ); closure_t map = LAMBDA ( 19:44:25 { 19:44:25 .foo = 1, 19:44:26 } 19:44:28 , 19:44:29 (void 19:44:31 *_, 19:44:33 .bar = 2} 19:44:36 iirc 19:44:36 I don't think indent actually has any idea what my code is. 19:44:46 ehird, agreed 19:44:52 Ahahah. 19:44:56 It seems that indent sucks. 19:45:04 I think I'll try AnMaster's beloved astyle :P 19:45:05 ehird, try astyle with gnu setting 19:45:06 Use Emacs' indent routines. They're... Maintained. 19:45:23 ehird, unless you use .foo in struct initialisers it works well 19:45:27 I had to indent my macros manually :( 19:45:32 Emcas tried to make them flat and linear 19:45:33 what do you mean closures in C? 19:45:42 nooga: No, nooga, it is not something that should actually be used. 19:45:43 nooga: Just that. 19:45:51 don't encourage him :| 19:45:55 ..... 19:45:59 link him to the code 19:46:03 NO, DON'T 19:46:06 oh, yes, please 19:46:08 I might end up maintaining what he barfs out 19:46:16 nooga, http://sprunge.us/AHFC 19:46:17 i'm just curious 19:46:22 ehird, what? 19:46:24 That's not working code, though 19:46:31 ehird, exactly 19:46:32 That's my 50-thousand-compile-errors code 19:46:34 :P 19:46:43 ehird, yes I tried to help you 19:46:43 -_- 19:46:50 http://sprunge.us/ONFI 19:46:53 nooga, use logs if you want to find working code 19:46:54 meh 19:46:57 * AnMaster glares at pikhq 19:47:01 If you're going to write anything like that, DONT USE C. 19:47:16 pikhq, this should go to IOCCC 19:47:20 That there code will break if I squint at it wrong. 19:47:23 after some obfuscating 19:47:25 oh wait 19:47:28 not portable 19:47:30 forget it 19:47:40 Most flagrant violation of the rules, yeah? 19:47:49 Okay, astyle only breaks, instead of breaking horribly. 19:47:53 yeah, AnMaster is right about that IOCCC 19:47:53 closure_t cons = 19:47:54 LAMBDA( { }, 19:47:56 (void *_, void *car, void *cdr), 19:47:57 { 19:48:01 Unless that's actually how it should be indented. 19:48:03 ehird, it has to be portable C code for IOCCC 19:48:06 so it won't work indeed 19:48:11 AnMaster: Yes, and plenty of people break the IOCCC rules. 19:48:15 There's even an award for breaking the rules. 19:48:26 oh true 19:48:37 And the "portable C" bit is a judging criteria, not a rule. 19:48:40 ehird, wait, wasn't the award for "having to change the rules for the next year"? 19:48:45 No. 19:48:49 That was just one occasion. 19:48:51 ah 19:49:24 struct cons_closed { 19:49:26 void *car; 19:49:27 ehird, I didn't say astyle was perfect. It just seems to manage fairly well on my code. 19:49:27 void *cdr; 19:49:29 }; 19:49:32 Thanks for pointing out my error, astyle. 19:49:35 No thanks for not fixing it. 19:49:45 ehird, it can't possibly fix it 19:49:56 it isn't supposed to change the semantics 19:50:01 I mean the { on the same line. 19:50:04 ); closure_t map = LAMBDA ( 19:50:06 { 19:50:07 } 19:50:09 , 19:50:10 (void 19:50:12 *_, 19:50:13 Erm 19:50:15 closure_t nil = 19:50:16 LAMBDA( { }, 19:50:17 ehird, what? 19:50:18 (void *_, closure_t nil_closure, closure_t cons_closure), 19:50:19 { 19:50:23 Now that thar is a bug. 19:50:27 ({ being at column 0) 19:50:28 -!- coppro has joined. 19:50:29 inside a function 19:50:48 ehird, well yes. But I don't think it ever says it supports GCC extensions specifically 19:51:36 ehird, I really don't blame any tool for failing at this lambda code 19:51:52 AnMaster: ... Brackets inside of the arguments to a macro is not a GCC extension. 19:52:06 pikhq, oh that I thought he meant ({ 19:52:10 he said he did 19:52:14 -!- ehird_ has joined. 19:52:15 int main(int argc, char **argc) { {printf("Hello, world!\n");} } 19:52:23 "char **argc" 19:52:23 ^ That's valid C90. 19:52:26 wat. 19:52:31 ... Thinko. 19:52:32 no it's not :P 19:52:34 int main(int argc, char **argv) { {printf("Hello, world!\n");} } 19:52:43 You forgot the return 0; 19:52:46 :D 19:52:52 indeed 19:52:58 int main(int argc, char **argv) { {printf("Hello, world!\n");}; return 0; } 19:53:03 Or just: 19:53:07 ehird@meson:~/src/c-closures$ gcc -E closure.c | cat -n | astyle --style=gnu 19:53:09 Time to get to work. 19:53:10 int main(int argc, char **argv) { {return printf("Hello, world!\n");} } 19:53:11 pikhq, also maybe astyle thinks it is a function call? 19:53:19 pikhq, just a guess 19:54:08 ehird_, btw I think http://sprunge.us/AHFC looks that insane partly due to trying to keep inside 80 columns 19:54:18 ); closure_t nil = LAMBDA ( 19:54:20 No excuse for that 19:54:24 The definition ended and it didn't realise it 19:54:25 And partly because it never denests. 19:54:26 Ever. 19:54:30 No it does 19:54:39 (nil_closure);} 19:54:40 ); closure_t map = LAMBDA ( 19:54:42 See?! :P 19:54:57 Also, that code actually breaks my code, because LAMBDA is a macro. :D 19:55:06 Ð 19:55:11 :Ð 19:55:19 ehird_, then why are you writing that? 19:55:27 yay, rio works 19:55:32 AnMaster: I'm not. 19:55:34 indent is. 19:55:37 ehird_: Apparently they can't be assed to write a parser. 19:55:46 ehird_, you mean it modified the meaning of the source? 19:55:46 And instead, just write a tokeniser. 19:56:02 it is possible it doesn't parse it into an AST 19:56:11 (or similar) 19:56:17 It most definitely isn't parsing it. 19:56:17 instead just going on simpler rules 19:56:25 pikhq, hm yeah 19:56:32 well, what about emacs indention 19:56:42 didn't someone say it did better? 19:56:47 does it parse it, or just tokenize it? 19:56:51 tokenise* 19:57:01 Emacs' indentation seems to work just fine on my lambda stuff. 19:57:01 closure.c:47:6: error: macro "LAMBDA" passed 4 arguments, but takes just 3 19:57:06 Okay, so this is the pre-preprocessed line number. 19:57:45 ehird_, I would be surprised if line numbers didn't became messed up with the lambda macro in errors 19:57:50 become* 19:58:08 No, because the preprocessed output does not have that many lines. 19:58:09 QED. 19:58:15 -!- ehird has quit (Read error: 60 (Operation timed out)). 19:58:25 -!- BeholdMyGlory_ has joined. 19:58:26 return LAMBDA; 19:58:30 Thanks for pinpointing my error, gcc. 19:58:32 -!- ehird_ has changed nick to ehird. 19:59:02 ehird: Tried using clang? 19:59:06 lol :P 19:59:10 can it handle these extensions? 19:59:18 No but really, it did pinpoint my error. 19:59:22 Yes. 19:59:29 clang supports most of GNU C. 19:59:41 Keyword most :P 20:00:22 Argh. Nested functions aren't supported by clang. 20:00:37 (yet) 20:01:18 -!- BeholdMyGlory has quit (Nick collision from services.). 20:01:23 However, clang has lambda. 20:01:41 Your mother has lambda. 20:01:51 TOUCHE METHINKS 20:02:06 But... gcc, I only pass three arguments there. 20:02:08 Wait, is (foo, 20:02:10 bar) 20:02:11 not one argument in cpp? 20:02:14 (With the parens in the argument) 20:02:35 "# clang does not support nested functions; this is a complex feature which is infrequently used, so it is unlikely to be implemented anytime soon." 20:03:02 ehird: I think it is... 20:03:08 My code doesn't work *without* that... 20:03:45 But I mean, with the newline. 20:04:23 http://sprunge.us/CLDg 20:04:28 How on earth does this pass four arguments to LAMBDA? 20:04:40 Ah. I dunno. 20:05:21 ehird: Y'know, when you've got this working, you should make it so that it can also conditionally use blocks instead. 20:05:57 And... I dunno how it thinks that's four args. 20:06:22 ... { car, cdr } // That might be it. 20:06:46 But... why? 20:06:48 >_< 20:07:17 I dunno. 20:08:00 Anyway, it's the only call that does it 20:08:06 Hmm 20:08:11 It's the only call closing over more than one variable 20:09:53 ({ car, cdr }) fixes it. 20:12:27 closure.c:57: error: non-static initialization of a flexible array member 20:12:29 pikhq: Poop. 20:12:30 Huh. Clang has the option -fcatch-undefined-behavior. 20:13:14 ehird: :/ 20:13:32 closure.c:29: warning: initialization from incompatible pointer type 20:13:33 Abuh? 20:14:02 hahaaaaaaa! it works1!1! 20:14:03 Abuh? 20:16:29 closure.c:57: error: incompatible types when returning type ‘closure_t’ but ‘void *’ was expected 20:16:32 >_< 20:16:32 -!- BeholdMyGlory_ has changed nick to BeholdMyGlory. 20:17:40 ehird: I think you need a pointer. 20:17:52 Or I could just give up 20:18:30 Also true. 20:20:22 * pikhq suggests making LAMBDA malloc 20:21:51 I might. 20:29:19 argh why did the cold folding thing in kate suddenly turn a kind of brownish orange 20:29:20 main.c:125: error: incompatible type for argument 3 of ‘range’ 20:29:22 FFFUUUUU 20:29:51 * pikhq wonders when closure* and closure* became incompatible types 20:30:06 pikhq, what did you change? 20:30:26 AnMaster: I made lambda malloc. 20:30:42 pikhq, ah 20:30:50 pikhq, gc_malloc ? 20:30:53 or whatever it was called 20:30:56 Yeah. 20:31:06 pikhq, can you return a closure yet? 20:31:33 AnMaster, I already could. 20:31:34 pikhq, also Huh. Clang has the option -fcatch-undefined-behavior. <-- sounds nice, does it work well? 20:31:47 pikhq, how? doesn't trampolines mess it up? 20:32:02 I write my nested functions so as to avoid the usage of trampolines. 20:32:03 AnMaster: It catches some stuff; not a ton 20:32:25 coppro, mhm. Is this in the last release? Or only in svn? 20:32:33 clang version 1.0 (https://llvm.org/svn/llvm-project/cfe/branches/release_26 ) 20:32:39 says my version from arch repos 20:32:49 * AnMaster looks the docs 20:32:56 AnMaster: not sure 20:33:12 not in man page or --help at least 20:33:38 documentation doesn't exactly get update on a regular basis 20:33:53 not in my manpage either 20:33:56 coppro, you could auto generate man page docs from the option parsing code 20:33:57 as in 20:33:57 and I'm on trunk 20:34:17 you have them defined somewhere, include a short help string in there 20:34:32 then generate the options section in the man page from it 20:34:37 feel free to submit a patch 20:35:15 coppro, I believe gcc does this. Also I don't have the time currently at least. 20:35:20 (for the next few months) 20:35:38 AnMaster: if we did everything GCC did, we'd use macros instead of a type system 20:36:00 coppro, is it in --help for you? 20:36:12 no 20:37:14 i = i++ - ++i; <-- that is undef iirc? 20:37:20 Yes 20:37:25 coppro, does it catch it? 20:37:38 if so then my clang silently ignores that flag 20:38:32 AnMaster: it does not, but that's not the purpose of the flag 20:38:38 the flag adds runtime checks 20:38:41 ah 20:38:53 GCC has it too 20:38:54 well, clang-cc doesn't accept it 20:38:59 and clang ignores it silently 20:39:23 coppro, no "-fcatch-undefined-behavior" in my man gcc 20:39:29 or what did you mean 20:39:48 AnMaster: it may be a 4.5 thing 20:40:07 but I remember the revision log note said it came from GCC 20:40:08 coppro, last I tried 4.5 it produced a broken executable at -O0 for cfunge iirc. 20:40:15 that was a few months ago 20:40:28 also iirc I found a matching bug report about it 20:41:08 (it was after lto branch had been merged, I know that, since it was the reason I tried out 4.5) 20:42:39 ehird, is it possible to use both web and irc at the same time on iphone? I guess it is, since it is such an advanced phone. 20:43:07 no 20:43:15 coppro, what? 20:43:18 that's broken 20:43:24 you can only run one application at once 20:43:36 Yes, actually. 20:43:42 Most IRC apps include their own browser. :P 20:43:43 coppro, broken, can't most other high end smart phones do it? 20:43:47 ehird, -_- 20:43:47 you can pop out for some functions, but if you start a new application, it closes the old one 20:43:49 Anyway, IRC is not an intended use of the iPhone. 20:43:52 It's an edge case. 20:43:55 I was just going to mention the possibility of a client with a browser 20:43:58 Even my not-so-high-end phone can multitask 20:44:08 Almost all usecases don't require multitasking apps and it makes things simpler. Yes, it's a sore need 20:44:12 but I know that this has been the subject of much costernation at work (we have an iPhone app) 20:44:14 but it rarely comes up in practice i find 20:44:24 my old nokia can't, but well, it isn't a smartphone. 20:45:38 but then, won't you have 20 different browser UIs that all look differently and use different bookmarks? 20:45:58 plus a lot of coding effort 20:46:11 and code duplication, and buggy web browsers 20:46:27 ehird, what about IM though 20:46:33 that can't be too rare on iphone 20:46:57 AnMaster: IM and IRC are the only cases 20:47:00 And they're pretty much identical 20:47:01 So IM 20:47:03 is the only case 20:47:10 And they just include a browser; a non-optimal, but functional, hack. 20:47:13 Apart from that... basically never used. 20:47:18 Also, they all reuse Safari's core. 20:47:22 ah that helps 20:47:22 Which basically does everything but the URL bar for them. 20:47:42 Admittedly you don't get URL completion or bookmarks, but... it's mostly just for tapping links that people say. 20:48:28 also, I wanted multi tasking more than once on my phone 20:48:42 like checking the schedule while editing an sms 20:48:49 without having to store it as a draft 20:49:05 just flip over to the calendar would be nice 20:49:51 ehird, that is another use case, see? 20:50:57 * AnMaster adds an entry on his mental list of "reasons to not buy an iphone" 20:52:44 Nobody cares 20:53:15 I do 20:53:54 -!- coppro has quit (Remote closed the connection). 20:57:55 did i ever tell you guys about that time i got into an argument with some numbskull who insisted that it's impossible to detect any sort of non-termination in a computer program? 20:59:52 augur: So, you've solved the halting problem? 20:59:54 Amazing. 21:00:06 no :| 21:00:15 not a generate detector of non-termination 21:00:30 but something that can, for at least one non-terminating program, tell that its not terminating 21:00:36 Ah. 21:00:59 augur can you tell me about it 21:01:02 e.g., say, the javascript non-terminating-program-detector: program == "while (true) {}" 21:01:13 So, something that can say "this terminates", "this doesn't terminate", or "fuck if I know". 21:01:21 and shazam, it detects precisely one non-terminating program 21:01:33 -!- coppro has joined. 21:01:33 Yeah, that's pretty trivial to write. Bit more difficult to make one that's even vaguely useful, but hey. 21:01:34 he was arguing with me that its impossible to detect ANY non-terminating programs 21:01:45 augur what about the guy what was he saying 21:01:55 ^^^ 21:02:16 he said that to detect a specific kind of non-termination was to solve the halting problem 21:02:30 he didnt relize that the halting problem was about detecting arbitrary non-termination 21:03:12 and that since humans could detect some kinds of non-termination, we therefore are super-turing-complete 21:03:51 so you think he didn't undertand halting problem 21:04:09 did you manage to break through it 21:04:22 no :( 21:04:35 how did you try 21:05:06 i just tried to explain to him that the halting problems is the problem of deciding, for all programs, whether or not they halt 21:05:28 and that being able to tell if _one particular program_ halts is not a solution to the halting problem 21:05:35 we were talking about dependent types, i think 21:05:51 you see this one: program == "while (true) {}" 21:05:55 this was before i realized i was talking about dependent types 21:06:19 and i was talking about the idea of a program error finder that would be able to tell you, prior to execution, that your program would have certain kinds of errors 21:06:23 maybe he was thinking about extensionally equivalent to this (which would be solving halting problem), but you were meaning intensional (which would not solve halting problem) 21:06:25 and he was like LOL HALTING PROBLEM DUMMY 21:06:59 hm how does dependent types relate? 21:07:28 well, it would involve partially tracing through evaluation paths 21:07:44 to find places where they could lead to an error 21:08:06 and you'd want to basically avoid circular traces, and he thought that doing this would require that you solve the halting problem 21:08:42 this is getting way too complex for me to follow 21:08:57 :P 21:08:57 Looks to me like you'd only solve the halting problem for a certain finite-state machine. Which is not merely possible, but rather easy. 21:09:13 Well, except that the state might be hard to store. :P 21:09:15 yeah it was a really stupid discussion 21:09:18 he was an idiot. 21:09:48 are you sure 21:10:13 yes. 21:10:16 okay 21:12:11 tgrep, btw. 21:12:17 >_< 21:12:24 what? 21:12:26 you dont like tgrep? 21:12:56 augur 21:13:02 what? :| 21:13:10 if dependent types came into it he was probably talking about something more refined 21:13:18 no, he wasnt. 21:13:32 was i arguing with you? i dont think i was. so stop trying to defend this person. :| 21:13:32 but it seems weird that he would say "LOL HALTING PROBLEM DUMMY" because that suggests he already knew the answer 21:14:12 I don't think I am defending them 21:14:17 you really are 21:14:23 YOU'RE A LITTLE EICHMANN 21:14:39 lol.,.,. 21:14:43 :p 21:14:49 tgrep! 21:15:08 >< 21:15:16 what? 21:15:21 tgrep is cool! 21:15:30 augur, I'm just interested in these discussions 21:16:02 like, when someone is wrong but they know they are right 21:19:51 it's a very interesting phenomena to me, when its genuine 21:20:11 phenomenon 21:20:43 -!- Guest32065 has changed nick to Cerise. 21:22:24 anyway 21:22:25 TGREP! :D 21:22:33 ;_; 21:22:57 http://www.stanford.edu/dept/linguistics/corpora/material/tgrep1-intro.pdf 21:30:09 * pikhq tried converting that lambda example to use GMP. 21:30:23 I then found out that GMP doesn't much care for garbage collection. 21:30:39 You can force it to, but it just seems wrong... 21:34:57 and i was talking about the idea of a program error finder that would be able to tell you, prior to execution, that your program would have certain kinds of errors <-- ITYM static analysis? 21:35:10 :/ 21:35:16 AnMaster: maybe 21:35:18 I don't think he meant static analysis 21:35:26 augur, then what if not that? 21:35:51 of course it depends on how you define static analysis 21:36:32 trying to work out types in a dynamically typed language and then finding contradiction? The erlang static analyzer "dialyzer" does that. 21:36:48 soupdragon, would you included that in your definition of static analysis? 21:37:18 AnMaster: i don't mean that 21:37:27 actually what he said IS static analysis 21:38:07 soupdragon, you don't consider what I described as static analysis? 21:38:25 I'm not worried about whether or not it's static analysis 21:38:39 the point is it doesn't make sense to say ITYM like that 21:39:04 because it wasn't like he said "fledermaus" and meant "baseball bat" 21:40:10 soupdragon, what is a "fledermaus"? It sounds like the Swedish word "fladdermus" which is en:bat 21:40:14 as in the animal 21:40:28 it means bat :p 21:40:40 so considering things, I'm guessing German or similar language 21:40:47 yes 21:41:39 -!- dbc has quit (Client Quit). 21:42:40 tgrep <-- what is tgrep? A variant of grep(1) I guess. but can't find it in the package repo 21:42:44 tree grep 21:43:07 like, when someone is wrong but they know they are right <-- we usually call it "being misinformed" 21:43:16 :/ 21:43:20 augur, interesting 21:43:31 augur, how does it work and on what file format 21:43:49 augur, btw it isn't in ubuntu either 21:43:54 augur, do you have a link? 21:43:55 it's not being misinformed 21:44:14 -!- dbc has joined. 21:44:31 soupdragon, oh? so you claim that won't be the symptoms of being misinformed? 21:44:49 it's related but more specific and not the same thing 21:45:08 soupdragon, what is it then. (max three irc lines) 21:45:18 uuuuuuuuuuuh 21:45:34 I already wrote a description 21:45:45 then you tried to summarize it and lost some of the detail 21:45:47 soupdragon, yes, but what is it called 21:45:54 plan9 is awesome but bizzare 21:45:57 and what else than being misinformed can it be 21:46:01 -!- MigoMipo has quit (Read error: 104 (Connection reset by peer)). 21:46:10 as in, list one (1) other subset 21:46:18 that is disjoint 21:46:31 from being misinformed 21:48:06 very well, ignore it then 21:48:12 soupdragon, ^ 21:48:14 ignore what? 21:48:43 soupdragon, what else than being misinformed can it be. I asked for you to list one other thing it can be 21:49:17 that doesn't overlap with being misinformed 21:49:18 you can call this misinformed like you can call a breezy meadow of poppies 'pretty' but you lose information when you do this 21:49:41 soupdragon, that isn't an answer 21:50:06 or rather, it is a nonsensical answer 21:50:21 really 21:51:32 yes. 21:51:52 soupdragon, how hard can it be to list a case or example of that thing you described that isn't "being misinformed" 21:55:12 I can't explain this 21:55:51 AnMaster if you had a terrible nightmare about ghouls and ghosts and everyone was a zombie except you in the whole world and there is this whole long story that means so much to you 21:56:00 AnMaster, then you tell your mom and she goes "oh you had a nightmare" 21:56:08 but 'nightmare' doesn't explain it because it was so much more 21:56:13 do you know what I mean ? 21:56:16 soupdragon, no 21:56:23 nightmare is a good summary of it 21:56:29 also, I'm grown up 21:56:33 not some 7 year old 21:56:36 you said no way too fast 21:56:43 you are just responding to me without thinking 21:56:45 soupdragon, as in, I never experienced that 21:56:48 and yes I was considering it 21:56:57 it's a hypothetical situation you didn't have to live through it 21:57:08 soupdragon, I had nightmares 21:57:20 I know that they can be nasty especially when you are young 21:57:35 this isn't about nightmares 21:57:37 but nightmare still explains the issue. You might need to add a modifier like "really bad" 21:57:40 in front 21:57:45 but apart from that, it is a good summary 21:59:26 soupdragon, and providing a counter example where the summary in question doesn't fit is all that you need to convince me 22:00:13 -!- augur has quit (Read error: 110 (Connection timed out)). 22:01:58 soupdragon, besides (considering this in a set theory way), you originally said it was a disjoint phenomenon " it's related but more specific and not the same thing" then later you seemed to indicate it was a proper subset " then you tried to summarize it and lost some of the detail" 22:02:31 this is not set theory 22:03:10 soupdragon, true. but considering (possibly overlapping) classes of things using set theory works in my experience 22:03:52 I found it a useful "tool" in understanding how things are related. 22:03:59 ok 22:05:44 yay, I managed to keep a high average in calculus! 22:07:04 coppro, the joke I thought of that line would be too long winding and far fetched 22:07:14 so I'm not going to mention it 22:07:19 s/mention/say/ 22:07:31 coppro, instead I wonder if you refer to marks in some course 22:07:41 I do 22:08:10 coppro, hey you are supposed to ask what the joke was 22:08:19 not gonna! 22:08:26 then I'll tell it anyway 22:08:29 well the idea 22:08:50 about it being the average value in some specific problem in a calculus assignment 22:09:17 like, say, average of a function in a given interval or whatever. 22:09:27 coppro, ^ 22:09:38 what do you mean by calculus 22:09:48 coppri 22:09:58 soupdragon: high school calculus 22:10:03 oh ok 22:10:14 what can you integrate 22:10:59 well, officially I haven't gotten there yet 22:11:06 ok 22:11:18 can you do epsilon-delta proofs? 22:11:25 soupdragon, rotational bodies? 22:11:33 I remember that being quite fun 22:11:41 from back in the equiv of high school 22:11:43 yeah 22:11:47 soupdragon: I understand the epsilon-delta definition, but I haven't tried to apply it 22:11:51 fun as in "a hell of a task" 22:11:55 ;P 22:12:25 coppro so basically differentiating expressions made from +,-,*,/,x,numbers,various primitive functions and composition?? 22:12:41 soupdragon: yeah, that's about as far as I've actually gotten 22:12:44 that would be high school level 22:12:49 wow I could program a computer to do that 22:12:58 (note that I can do better than this; I'm just talking about where I am in the course) 22:12:59 so could you I'm sure 22:13:01 the epsilon-delta stuff is more like university level isn't it? 22:13:05 soupdragon, ^ 22:13:13 at least in Sweden it is 22:13:13 iirc 22:13:27 AnMaster, yeah you are right I guess so 22:13:29 coppro, where you from UK or US? 22:13:36 AnMaster: .ca 22:13:38 ah 22:14:37 most mathematics education is like "here is how to do this thing... in case you absolutely need to apply this and there is no computer ANYWHERE" 22:14:42 which is... pointless 22:14:42 this course goes about as far as integration by parts, plus an optional unit on differentiation and integration of exponential/logarithmic functions 22:14:49 no, it's not pointless 22:15:01 you need to know what the computer does 22:15:08 this is why so many people are bad programmers 22:15:34 ehird I'm really curious about the possibility of a mathematics course that assumed you were a skilled programmer 22:15:36 What the computer does is not what you are taught to do mentally 22:15:47 That is because the algorithms you use mentally are only useful for trivial examples and are also shit 22:15:52 Therefore they are useless 22:15:57 no, but you need to understand how to get from point a to b 22:16:00 ehird, like what if you could just not learn any of the crap like differentation and multiplication -- program it into the computer and see what's left 22:16:10 coppro: an asinine phrase without an associated argument, signifying nothing. 22:16:12 you know? the real creative stuff that matters - what you can't put into code 22:16:26 maybe people are scared because they might find out there's nothing left 22:16:35 soupdragon: I assume you didn't mean multiplication as a separate thing there :P 22:16:41 "2*2? Um, let me get my iPhone." 22:16:49 ehird, no that's exactly what I mean 22:16:55 a person should know how to do basic math 22:16:59 even if they never have to use it 22:17:02 Just hypotheticall, a context where there's no reason you should bother working out 2*2 yourself 22:17:04 I'm shit at mental arithmetic, I'm just really slow at it 22:17:14 and I refuse to spend hours listening to a times table 22:17:16 I hope you're fast with 2*2 22:17:19 yes :P 22:17:24 Great, you pass 22:17:45 i love how if you ever question "why do i need to be able to multiply such large numbers in my head" they say something like "hurr finances" 22:17:54 because calculators will be BANNED by the time you grow up, sonny boy 22:17:57 BANNED 22:18:10 what is the point of finances if not as a fun mental arithmetic exercise 22:18:11 multiplying large numbers in your head seems unnecessary 22:20:19 hellooo 22:21:11 but knowing how to differentiate elemental functions is important 22:21:20 :( 22:21:44 coppro: I don't think so. 22:21:52 ehird: then you are wrong 22:22:34 Nice to know you've abandoned attempting to reappropriate asinine phrases as arguments; I'd prefer it were replaced with arguments, though, instead of the lack of them. 22:22:52 ehird, how can you argue against "THOU HAST WRONG" 22:23:10 ehird: fun fact: this is exactly what you do in arguments 22:23:20 anyways, you don't learn things you don't understand 22:23:23 ehird you should think about my idea :( 22:23:40 it is vital that you understand the basics of something before moving on to the advanced stuff 22:23:46 or else it doesn't stick 22:24:11 ehird, I want to know what it would be like if computers were sort fo like a fundamental part of peoples unconcious thinking -- instead of programming your brain to do these menial tasks we could program an on board computer, and just focus on the real mathematics .. do you know what I mean here? 22:25:37 brains are computers 22:25:50 coppro: You can learn how differentiation works by programming the algorithm, and stepping through it. 22:25:58 ehird -_- 22:26:09 soupdragon: i'm just trolling you. 22:27:58 come on 22:28:01 this is a cool idea 22:28:20 you read ekhads geometry book? 22:28:25 no 22:28:37 oh yeah I forgot you can't read, sorry 22:28:50 indeed. 22:28:56 http://www.math.rutgers.edu/~zeilberg/GT.html 22:29:15 ehird im just kidding because you still haven't read metamorphosis :P 22:29:20 i know 22:29:46 cool it's an acronym 22:29:54 PGAETBSBEXIVC2050BDZ 22:30:13 um I don't see what it is for? 22:30:25 Plane Geometry An Elementry ..? 22:30:33 yep! 22:30:36 look at the big letters in the title 22:30:38 it's elementary. 22:30:51 I don't get it :( 22:31:00 some of the letters are big, see 22:31:04 and when I expand an acronym like 22:31:06 POOP = 22:31:12 Posh OOgs Pallating 22:31:13 see? 22:31:15 you're not good at being cool 22:31:15 it's hilarious 22:31:16 laugh, btich 22:31:18 *bitch 22:31:22 was I trying to be cool 22:31:25 I usually aim for incoherent 22:31:33 I'll find someone else to talk to 22:31:40 (probably not actually) 22:35:44 ehird that sucked actually 22:36:00 why did you do that 22:36:26 * coppro wanders off to do a unit on trig functions 22:37:18 soupdragon: stop whining 22:37:45 ehird: that doesn't answer my question 22:38:07 ehird: you are making me feel like you are just some kind fo haskell fanboy 22:38:33 soupdragon: welcome to the world of ehird 22:38:41 soupdragon: what are you even talking about, what did I do 22:38:46 what did I do that's so bad? 22:39:04 that I don't know 22:39:07 ehird I was trying to talk about something I actually care about and you are just trolling me, probably because I don't often say serious things 22:39:53 soupdragon: the problem with talking to you is that everything has to be serious if you care about something 22:40:02 random side jokes are equated to being a dick 22:40:20 and you get all upset about trolling and then turn around later and do it yourself 22:41:08 except that it's difficult to tell if stuff like [15:25:25]coppro: You can learn how differentiation works by programming the algorithm, and stepping through it. is sarcastic or not on the Internet 22:41:09 ehird fuck off all you did was take the piss out of me for 100 lines of chat 22:41:10 it happens 22:41:34 ehird, that's not "everything has to be serious for queen soupdragon" that's just being an ass 22:42:09 soupdragon: i did not take the piss out of you for 100 lines 22:42:12 anyway I give up you're obviously just going to continue trolling to save face 22:42:15 actually, scratch that 22:42:20 I'm going to pick up a marksheet 22:42:23 I don't know what's wrong with you but you're massively overreacting to things I didn't do 22:42:23 then do more math 22:42:24 there's no way you are going to suddenly start acting okay after this 22:42:28 and talking is not going to help anything 22:42:34 cool it's an acronym 22:42:35 PGAETBSBEXIVC2050BDZ 22:42:36 I'm pretty sure you're either a total troll or mentally unstable 22:42:39 brains are computers 22:42:48 incase you didn't realize what you were saying 22:43:01 2 random lines I joked about when seeing the page, and 1 that I immediately said I was kidding after. 22:43:06 Does that equate to 100 lines of cold-blooded trolling? 22:43:27 first 2 were definitely a sarcasm 22:43:32 okay then 22:43:38 I take back what I said about 200 lines 22:45:17 you said 100 lines. 22:48:53 most mathematics education is like "here is how to do this thing... in case you absolutely need to apply this and there is no computer ANYWHERE" <-- it might happen, post-catastrophe. Plus someone has to know how to implement it all 22:49:22 I never said don't teach them the algorithm 22:49:32 Plus, that's irrelevant to initial education 22:49:45 You think a typical schoolkid could survive a post-apocalyptic world? 22:49:47 pff 22:51:31 I don't think anyone can survive apocalyptic 22:51:42 not even a typical schoolkid 22:54:23 ehird, good point 22:54:57 * pikhq shakes a fist at OSCAR 22:55:13 I'm applying existential quantification, flexible contexts, multiple-parameter type classes, flexible instances and functional dependencies to the problem of generating HTML. 22:55:15 ehird, also, what about when you need to check that you didn't get short changed while in a ship 22:55:15 what's OSCAR? 22:55:17 shop* 22:55:18 XD 22:55:22 I am a true Haskell programmer. 22:55:31 yeah I can see that you are a haskell programmer 22:55:34 AnMaster: Yep, that involves differentiation...? 22:55:34 that seems like a reasonable example of having to know basic arithmetic 22:55:36 typical haskell programmer 22:55:43 ehird, oh I thought you said "initial" 22:55:48 sorry that was mean 22:55:49 soupdragon: Hey, it's verified that the document is valid at compile-time. 22:55:53 That's valuable. :P 22:55:53 meaning, up to 10 years old or such 22:56:03 I did say initial 22:56:06 meaning like pre-university 22:56:09 ehird, ah 22:56:17 I thought more like primary or whatever you call it 22:57:11 I'm going to make a preprocessor to generate this code 22:57:13 It is rather gnarly 22:57:23 ehird, what about having to figure out how fast the water level will raise in the bath if the tap is broken. So you know how much time you have to get hold of a plumber 22:57:25 And I only have three tags implemented :P 22:57:31 that would be a differential eqation 22:57:33 equation* 22:57:37 AnMaster: lol 22:57:54 ehird, assume also that electricity failed or such 22:59:20 though by the time you figured it out you could instead have gone down and turned off the main where the pipes goes into the house...) 22:59:45 Quite. 22:59:46 ehird, what do you call that thing? 22:59:58 I don't know. Boiler? 22:59:59 it's the same word as "tap" in Swedish 23:00:02 ehird, no 23:00:11 I didn't really read your sentence. 23:00:13 ehird, I meant the cut off of cold water 23:00:21 "tap", apparently. 23:00:28 there is a thing to cut it off where the water pipes goes into the house yeah 23:00:44 ehird, hm okay 23:00:46 -!- BeholdMyGlory has quit (Remote closed the connection). 23:00:48 ehird, found it with google? 23:00:52 yeah 23:00:54 google translate 23:00:55 hahahahahaha it works 23:00:57 excellent 23:01:19 ehird, well it is "kran" for both in Swedish 23:01:39 but that doesn't mean both meanings have the same word in English 23:01:48 Apparently cock is one of the meanings of kran in Swedish 23:01:54 is it? 23:01:55 Type-safe HTML generation with existential quantification, flexible contexts, multiple-parameter type classes, flexible instances, functional dependencies and undecidable instances. It works! 23:02:01 AnMaster: 23:02:01 ehird, kran is also slang for nose I know 23:02:02 1. CRANE 23:02:04 2. TAP 23:02:05 3. FAUCET 23:02:07 4. COCK 23:02:08 5. STOPCOCK 23:02:10 6. BIBCOCK 23:02:11 7. CRAB 23:02:13 ...? 23:02:15 where is that from 23:02:16 hm 23:02:24 google translate 23:02:30 it lists alternatives? 23:02:35 didn't know that 23:05:42 ehird, apperently "BIBCOCK" and "STOPCOCK" are plumbing related 23:06:53 Oh. 23:06:55 ehird, "cock" can also be a sort of valve 23:06:56 it seems 23:07:02 I thought bibcock was like a bib, but you put it on your penis. 23:07:05 apart from being a bird I mean 23:07:11 To keep your penis clean, I guess. 23:07:22 OBVIOUS ISN'T IT 23:07:23 ehird, bib being short for bibliography? 23:07:30 Short for bib :P 23:07:35 whatever bib is 23:08:28 "# Ballcock, a mechanism for filling water tanks" <-- the innuendo potential is extreme 23:09:09 "I was just putting my ballcock in the water tank, but it broke, so I took it out." 23:09:15 "Then I put it in again. And in, and out, in, out, in, out." 23:09:21 "Why are you looking at me funny?" 23:09:27 ehird, it is the thing that is used in toilets I think 23:09:32 to make them stop when it is filled up 23:09:55 see http://en.wikipedia.org/wiki/Ballcock 23:10:45 the talk page mentions it 23:11:57 -!- oerjan has joined. 23:12:18 oerjan, do you usually log read? I forgot 23:12:19 also hi 23:12:56 i usually search for my nick in the logs. i only log read if it's fairly short (which it isn't today) 23:13:00 fuckityfuckityfuck, I think my whole architecture is broken 23:13:00 and hi 23:13:33 ehird, for what? 23:13:40 ehird, OS? Editor? Something else? 23:13:42 i find no instances of my nick between my leaving and joining today, fwiw 23:14:01 oerjan: do you know how to fix problems that involve a complex intertwining of existential quantification, flexible contexts, multiple-parameter type classes, flexible instances, functional dependencies, undecidable instances and impredicative types? 23:14:09 AnMaster: actually, I'm just trying to generate HTML. 23:14:16 ehird, oh 23:14:19 words to the effect of "no" 23:14:22 the HASKELL way! 23:14:25 ehird: No more crazy C lambda? 23:14:25 plan9 plan9 plan9 plan9 plan9 23:14:37 pikhq: c lambda is like a pinch, this is like being bludgeoned 23:14:39 or something 23:14:42 Ah. 23:15:00 the end goal is something that'll let you use HTML literals in haskell source code and it'll be totally type-safe 23:15:02 like 23:15:07 oerjan, how many ballcocks are there in your house/apartment? 23:15:16 XD 23:15:16 what is a ballcock 23:15:26 oerjan, what do you think? 23:15:35 foo path = do (w,h) <- imageInfo path; return 23:15:53 pikhq: and it'll be foo :: FilePath -> Element IMG 23:15:55 oerjan, I would assume at least one 23:15:59 it _sounds_ dirty, but that could be misleading. and even if it _is_ dirty i wouldn't know precisely what it means 23:15:59 possibly more 23:16:01 where "w" and "h" there actually have to be integers 23:16:05 it'd desugar to something like 23:16:07 oerjan, "Ballcock, a mechanism for filling water tanks" 23:16:12 oerjan, used in toilets 23:16:19 indeed... 23:16:21 well, gravity operated ones 23:16:29 return (img ! src path ! width w ! height h) 23:16:49 and if any of the html or compositions of html in your entire program resulted in any invalidity it'd go beep and be sad. 23:17:18 oerjan, it sounds like the perfect innuendo 23:18:38 well my apartment has 1 toilet. perhaps the hot water tanks? there are two. 23:18:40 no idea what kind of design any of them use 23:18:41 so i assume <= 3 23:19:13 oerjan, not sure about them either 23:19:18 oerjan, also tanks? 23:19:28 isn't there usually just one? 23:20:04 oerjan, btw me making an actual dirty remark like that is almost zero 23:20:06 AnMaster: There exists more than one toilet. 23:20:16 pikhq, in the world? yes certainly 23:20:43 pikhq, otherwise there would be infinite problems with a long queue 23:20:58 ehird: btw i did see some functional language for typesafe xml or whatever somewhere 23:20:59 If there were only one water tank, one would say "ballcock, a mechanism for filling the water tank". 23:21:04 oerjan: yeah cduce 23:21:10 the annoying thing is i've *done* this in haskell before 23:21:13 Because there exists more than one, one says "ballcock, a mechanism for filling water tanks". 23:21:19 pikhq, I quoted that from wikipedia 23:21:33 pikhq, if you mean oerjan, "Ballcock, a mechanism for filling water tanks" 23:21:44 Yes, and you were wondering why "water tanks" rather than "water tank". 23:22:20 Or I should stop IRCing while getting up every few seconds. 23:22:33 there might be more than one such language 23:22:38 pikhq, heh? 23:22:56 Should definitely stop IRCing while getting up every few seconds. 23:23:03 pikhq, it was on the disambig page for "cock" 23:23:14 Heh. 23:23:15 AnMaster: i am not sure why there are two tanks. _possibly_ one is for the landlady, i don't know if she has any tank elsewhere 23:24:10 anyway cock has so many meanings that there are lots of possible ways to use it for innuendo 23:24:27 anyone has a non-digital wrist watch in here? 23:24:51 -!- augur has joined. 23:24:52 * oerjan raises hand 23:24:56 faen 23:25:15 oerjan, "may contain cocks" 23:25:17 nooga: fy, ikke bann i kanalen 23:25:20 in this case 23:25:38 " * A part of a clock or watch used to support an outrigger bearing for a gear or lever 23:25:38 * Balance cock, supports the balance wheel in a watch" 23:25:52 I don't think http://en.wikipedia.org/wiki/Bracket_clock applies here 23:26:00 oh 23:26:09 i'm sorry 23:26:34 oerjan, fan också. får man inte säga en djävla svordom? 23:27:13 yea? 23:27:20 nooga, ? 23:27:37 AnMaster: i had the same question 23:27:51 (bracket clocks apparently have/had "fly cocks") 23:28:37 AnMaster: nei for pokker 23:29:19 ............ 23:29:37 oerjan, pokker? 23:29:44 AnMaster: btw is it optional whether or not to spell djävla with a d? 23:29:47 -!- iamcal has quit (Read error: 104 (Connection reset by peer)). 23:29:57 oerjan, I may have typoed it 23:30:02 it could be jävla 23:30:09 I don't normally write it 23:30:12 heh 23:30:20 pokker is a swear word, of course 23:30:32 oerjan, it is "djävulen" though 23:30:33 is javla something like 'damn' ? 23:30:44 or mostly, "for pokker" is a swear phrase 23:30:51 nooga, "djävulen" = "the devil" 23:31:12 oerjan, "poker"? 23:31:19 for pokker means something like dammit i think 23:31:21 oerjan, there is nothing like it in Swedish 23:31:33 woohoo, I've already done two parts of this assignment already 23:31:39 oerjan, dammit being more mild? 23:31:40 or? 23:31:52 not actually done them, but two sections are stuff I already took 23:31:53 i think it's related to pox, the disease 23:31:58 ah 23:32:19 (kopper in norwegian but may have been pokker historically?) 23:32:25 oerjan, don't think there is anything similar in Swedish 23:32:37 ehird: for what it's worth to you, I do think that putting calculus and the other high-level math course side-by-side so that there's lots of duplication between them is dumb 23:32:39 koppor in Swedish iirc 23:33:00 how about errr.... fjandin ? 23:33:06 is there such word? 23:33:14 nooga, negatory for Swedish 23:33:24 AnMaster: i'm not sure if my watch contains a cock, i expect it contains only minimal mechanical parts 23:34:18 nooga, the closest word I can think of is "fjantig" which isn't a swear word at all, rather it means ~silly (not exactly though) 23:34:30 oh 23:34:33 oerjan, battery driven? These modern people 23:34:59 oerjan, when I was young it was uphill both ways along the pendulum! 23:35:32 in a snowstorm! 23:35:52 See also: 23:35:52 * Cock (surname) 23:35:52 * Cocks (surname) 23:35:59 ouch 23:36:08 Cockburn especially. 23:36:42 ehird, what? really? 23:36:45 as a name? 23:36:51 Pronounced "cohburn". 23:37:22 hah 23:38:48 ehird, how is "cox" pronounced 23:38:48 nooga: fjandin looks similar to fienden (the enemy), could it be an old norse word? 23:39:02 uhm, let me see 23:39:13 AnMaster: Cocks. 23:39:24 and it also looks similar to fanden/faen, meaning the devil, quite possibly they all have that as origin... 23:39:26 YES! IT WORKS! 23:39:41 ehird, poor Alen Cox... 23:39:44 *Main> :t decompose (html head_ body) 23:39:45 decompose (html head_ body) 23:39:47 :: (String, [Attribute HTML], [Element]) 23:39:48 AnMaster: *Alan 23:39:50 Alan* 23:39:50 Also Russ Cox 23:39:52 ehird, yeah 23:40:04 ehird, who? 23:40:12 Plan 9 dude. 23:40:19 Wrote plan9port, also had a large part in Go. 23:40:22 ah 23:40:25 swtch.com 23:40:36 no wp article on him 23:41:20 so? 23:41:21 oh "cocktail" that would have high innuendo potential if it wasn't such a well known word 23:41:25 nooga: also old norse ~= icelandic, so could be that too 23:41:32 he also wrote the popular article http://swtch.com/~rsc/regexp/regexp1.html 23:41:41 http://www.youtube.com/watch?v=s7uw5bXzE7I#t=0m43s 23:41:51 actually you're right 23:41:58 it was icelandic 23:42:04 -!- cal153 has joined. 23:42:45 http://en.wiktionary.org/wiki/hver_fjandinn 23:42:49 huh 23:42:56 ehird, 20 seconds for that regex in perl? 23:43:03 how the heck did he write it... 23:43:48 basically the same as norwegian "hva faen", i take 23:44:14 AnMaster: RTFA 23:44:17 hm 23:44:36 also, http://en.wiktionary.org/wiki/fjandi 23:44:56 the disadvantage of NFAs is that you can't do backreferences in the regexp 23:44:59 i.e. (foo)...\1... 23:45:06 ehird, can it be expanded with all the features of PCRE and such though? I'll bookmark it for tomorrow. going to sleep now 23:45:09 but by the time you use one of those... whip out a parser, dude 23:45:11 AnMaster: no. 23:45:23 ehird, ah, that's a minor issue. 23:45:26 Not really 23:45:31 Most uses of regexps are much simpler 23:45:37 Most of the other uses are abuses 23:45:51 ehird, I often use lookahead and lookbehind at least 23:46:01 both negative and positive 23:46:50 and back references is common too 23:47:08 still, using the fastest one possible would be nice 23:49:33 -!- Pthing has joined. 23:55:44 -!- augur has quit (Read error: 110 (Connection timed out)).