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