←2012-12-09 2012-12-10 2012-12-11→ ↑2012 ↑all
00:04:12 -!- nooga has quit (Ping timeout: 265 seconds).
00:15:35 <shachaf> @where pondoc
00:15:35 <lambdabot> 10 43' 0" North, 125 0' 0" East
00:15:48 <shachaf> oerjan
00:16:22 <oerjan> SPEAK UP
00:16:54 <shachaf> OERJAN
00:16:56 <oerjan> @where pandoc
00:16:56 <lambdabot> http://sophos.berkeley.edu/macfarlane/pandoc/
00:17:09 <oerjan> @where pundoc
00:17:10 <lambdabot> I know nothing about pundoc.
00:17:14 <shachaf> @where pondoc
00:17:14 <lambdabot> 10 43' 0" North, 125 0' 0" East
00:17:27 <oerjan> @where panda
00:17:27 <lambdabot> I know nothing about panda.
00:21:59 -!- sebbu has joined.
00:22:00 -!- sebbu has quit (Changing host).
00:22:00 -!- sebbu has joined.
00:28:08 -!- sebbu has quit (Ping timeout: 244 seconds).
00:38:25 -!- augur has joined.
00:39:06 -!- sebbu has joined.
00:39:10 -!- sebbu has quit (Changing host).
00:39:10 -!- sebbu has joined.
01:03:36 -!- zzo38 has joined.
01:09:56 -!- monqy has joined.
01:30:09 -!- zzo38 has quit (Remote host closed the connection).
01:40:57 <oerjan> :t (^?)
01:40:58 <lambdabot> s -> Getting (First a) s t a b -> Maybe a
01:41:26 <oerjan> :t just
01:41:27 <lambdabot> Not in scope: `just'
01:41:27 <lambdabot> Perhaps you meant `_just' (imported from Control.Lens)
01:41:34 <oerjan> :t _just
01:41:36 <lambdabot> (Applicative f, Prismatic k) => k (a -> f b) (Maybe a -> f (Maybe b))
01:42:43 <oerjan> :t identity
01:42:44 <lambdabot> Not in scope: `identity'
02:12:20 -!- augur has quit (Read error: Connection reset by peer).
02:12:53 -!- augur has joined.
02:37:26 -!- augur has quit (Remote host closed the connection).
02:43:17 <kmc> you do it to yourself
02:45:02 -!- kmc has set topic: Yes I'll tell you, I'll tell you why I'm lying here... but God forgive me... and God help us all... because you don't know what you ask of me. | http://codu.org/logs/_esoteric/.
02:49:53 -!- oerjan has set topic: Yes I'll tell you, I'll tell you why I'm lying here... but God forgive me... and God help us all... because you don't know what you ask of me. | http://codu.org/logs/_esoteric/.
02:50:00 <oerjan> inb4 elliott rage
02:50:40 <shachaf> What happened?
02:51:08 <oerjan> space de-expansion
02:51:31 <shachaf> I see.
02:51:36 -!- tswett has joined.
02:51:38 -!- shachaf has set topic: Yes I'll tell you, I'll tell you why I'm lying here... but God forgive me... and God help us all... because you don't know what you ask of me. | http://cоdu.org/logs/_esoteric/.
02:52:05 <kmc> tricksy
02:52:21 <oerjan> > "Yes I'll tell you, I'll tell you why I'm lying here... but God forgive me... and God help us all... because you don't know what you ask of me. | http://cоdu.org/logs/_esoteric/"
02:52:22 <lambdabot> mueval: recoverEncode: invalid argument (invalid character)
02:52:39 <oerjan> > "Yes I'll tell you, I'll tell you why I'm lying here... but God forgive me... and God help us all..."
02:52:41 <lambdabot> "Yes I'll tell you, I'll tell you why I'm lying here... but God forgive me....
02:53:01 <oerjan> > " because you don't know what you ask of me. | http://cоdu.org/logs/_esoteric/"
02:53:01 <lambdabot> mueval: recoverEncode: invalid argument (invalid character)
02:53:11 <monqy> > ord 'о'
02:53:11 <lambdabot> mueval: recoverEncode: invalid argument (invalid character)
02:53:12 <oerjan> > " because you don't know what you ask of "
02:53:13 <lambdabot> " because you don't know what you ask of "
02:53:35 <oerjan> > "me. | http://cоdu.org/logs/_esoteric/"
02:53:35 <lambdabot> mueval: recoverEncode: invalid argument (invalid character)
02:53:42 <oerjan> > "me. | http://cоdu"
02:53:43 <lambdabot> mueval: recoverEncode: invalid argument (invalid character)
02:53:53 <oerjan> > ".org/logs/_esoteric/"
02:53:54 <kmc> binary search itt
02:53:55 <lambdabot> ".org/logs/_esoteric/"
02:54:00 <shachaf> oerjan: I suspect there are more efficient ways of figuring that out.
02:54:03 <oerjan> > "tp://cоdu"
02:54:04 <lambdabot> mueval: recoverEncode: invalid argument (invalid character)
02:54:20 <oerjan> > "me. | ht"
02:54:21 <monqy> it's easy when you're url hilighter stops at the problem о
02:54:22 <lambdabot> "me. | ht"
02:54:36 <oerjan> > "tp://c"
02:54:37 <lambdabot> "tp://c"
02:54:46 <oerjan> > "du"
02:54:47 <lambdabot> "du"
02:54:49 -!- shachaf has set topic: Yes I'll tell you, I'll tell you why I'm lying here... but God forgive me... and God help us all... because you don't know what you ask of me. | http://cоdu.оrg/lоgs/_еsоtеric/.
02:55:09 <monqy> now the о is in codu and esoteric, shachaf?
02:55:29 <kmc> я,я
02:55:32 <monqy> it's 1px off of o in my font
02:55:38 <shachaf> monqy: oh no
02:55:51 <shachaf> fix your font
02:55:54 <monqy> no
02:55:58 <monqy> "nо"
02:56:03 -!- shachaf has set topic: Yes I'll tell you, I'll tell you why I'm lying here... but God forgive me... and God help us all... because you don't know what you ask of me. | http://сodu.оrg/lоgs/_еsotеric/.
02:56:20 <monqy> oh no what did you do
02:56:47 <shachaf> øh nø
03:01:27 -!- Sgeo|web has joined.
03:12:44 <quintopia> wtf. shachaf.
03:12:49 <quintopia> вхыыыыыыыыыы
03:16:37 <kmc> ḧẗẗp̈:̈/̈/̈c̈öd̈ü.̈ör̈g̈/̈l̈ög̈s̈/̈_̈ës̈öẗër̈ïc̈/̈
03:17:01 <shachaf> What did the : do?
03:17:09 <kmc> ?
03:17:25 <shachaf> Hmm, I guess none of the punctuation has diæreses.
03:17:42 <shachaf> Or maybe my font is just messed up!
03:17:52 <kmc> something weird happened in copy-paste-land
03:18:08 <Bike> "COMBINING_DIAERESIS" sounds like a disease.
03:18:45 <shachaf> Sounds rather painful, in fact.
03:18:45 <Bike> D:
03:18:49 <Bike> how long do i have to live, doc
03:20:09 <kmc> oh i blame mosh
03:20:14 <shachaf> Uh oh.
03:20:28 <kmc> the umlauts disappear if i cat the same file inside mosh
03:20:36 <kmc> on a different server though
03:20:40 <shachaf> Those are umlauts?
03:20:40 <kmc> so maybe it's a locale difference
03:20:50 <kmc> they're dots anyway
03:21:03 <kmc> is вхыыыыыыыыыы supposed to be like "whyyyyyyyyyyyy"
03:22:52 -!- Phantom__Hoover has quit (Read error: Connection reset by peer).
03:23:23 <shachaf> GHC recompiles much more quickly when you touch the RTS than when you touch the compiler.
03:23:40 <shachaf> I suppose it doesn't have to recompile the compiler at all.
03:23:58 <kmc> yeah
03:24:01 <kmc> compiling Haskell is slow
03:24:28 <shachaf> And you don't need to do the stage1/stage2 thing.
03:24:34 <shachaf> Well, I guess you don't really need that anyway.
03:28:05 <shachaf> Gregor: So should the new quote database keep an ordering?
03:28:11 <shachaf> I think ordered quotes are silly.
03:28:55 <Gregor> Ordering per se isn't important, but numbering or otherwise having short, easy-to-remember IDs is, and ordering seems to be the best way to do that.
03:29:03 <Gregor> Except of course that then we keep deleting them, breaking it.
03:29:16 <shachaf> No, we're going to make a new system where a quote is identified by a hash.
03:29:18 <shachaf> (Of the quote.)
03:30:17 <Gregor> ... how about no.
03:30:31 <shachaf> Gregor: ... how about yes?
03:30:32 <Gregor> Unless it's like a decimal hash of no more than four digits.
03:30:38 <shachaf> It'll be base 32.
03:30:41 <shachaf> > 32^2
03:30:42 <lambdabot> 1024
03:30:44 <shachaf> > 32^3
03:30:45 <lambdabot> 32768
03:30:56 <shachaf> Three characters should be plenty.
03:31:16 * oerjan gently reminds people of the birthday paradox
03:31:24 <shachaf> Yes, I know.
03:31:29 <c00kiemon5ter> :)
03:31:36 <shachaf> We've already gone through it and figured out how long they need to be.
03:31:43 <shachaf> > 1.2 * sqrt(32^3)
03:31:44 <lambdabot> 217.2232031805074
03:31:47 <shachaf> > 1.2 * sqrt (32^4)
03:31:48 <lambdabot> 1228.8
03:31:58 <shachaf> Anyway we'll just take the shortest unique prefix each time.
03:32:01 <shachaf> That's "good enough".
03:32:05 <Gregor> I mean, I'm not gonna stop anybody, I have little investment and the whole point of HackEgo is do whatever you want, but *eh*
03:32:22 <shachaf> elliott: Tell Gregor.
03:32:40 <Gregor> It's just not memorable at all.
03:32:48 <shachaf> What's not memorable?
03:33:15 <Gregor> Three to four base-32 digits.
03:33:15 <shachaf> <Gregor> I've forgotten already.
03:33:21 <quintopia> i like the idea
03:33:34 <shachaf> I think it's just as memorable as three digits.
03:33:44 <quintopia> although i'm fine with just assigning them increasing integers that don't change when one is deleted
03:33:45 <shachaf> Because people are inefficient at remembering things from a small alphabet. :-(
03:33:47 <c00kiemon5ter> imo a sequence is simpler, "colission-free" and easier to remberer
03:33:59 <Gregor> Jumping from decimal to anything more than about base 12 and it becomes impossible.
03:34:05 <quintopia> that's the database way to do it
03:34:23 <Bike> just have people type in the whole quote when they want to retrieve the quote.
03:34:26 <Gregor> Yeah, just not deleting numbers seems like the sensible way to go.
03:35:17 <shachaf> If by sensible you mean unsensible?
03:35:30 <shachaf> Bike's suggestion is good.
03:35:49 <Gregor> Yeah, being memorable, sequential AND constant, that'd be terrible.
03:36:54 <shachaf> The number shouldn't be part of the quote!
03:36:59 <shachaf> That'd mess the whole thing up.
03:37:55 <Gregor> ... dahell? Who's suggesting that? Or are you just pissy about the fact that order of addition affects quote identification?
03:37:57 <oerjan> i say quotahto, you say quotayto
03:40:02 <quintopia> i have a suggestion
03:40:13 <quintopia> you specify an id when you add a quote
03:40:21 <quintopia> if it's not unique, it doesn't get added
03:40:33 <quintopia> then people decide what's memorable
03:41:33 <Sgeo|web> And make it not indicate whether or not it was added, and hide the quote list for 24 hours after an attempted addition
03:41:41 <Sgeo|web> And 24 hours before an attempted addition
03:43:05 <quintopia> brilliant!
03:43:08 <shachaf> Even quintopia's suggestion is better.
03:44:48 <Gregor> How about do whatever the fuck you want because HackEgo isn't a democracy, it's anarchy.
03:45:27 <shachaf> Good point.
03:45:34 <shachaf> monqy: what do i want
03:46:49 <monqy> ?????hi
03:47:44 * kmc throws a chair through the nearest starbucks window
03:48:04 <shachaf> monqy: hi
03:49:04 <Sgeo|web> kmc: what if the nearest Starbucks is miles away?
03:49:09 <Sgeo|web> Is the nearest Starbucks miles away?
03:49:48 <oerjan> come and see the violence inherent in the system
03:51:17 <Gregor> HELP! HELP! I'M BEING OPPRESSED!
03:51:41 <oerjan> `quote reference
03:51:44 <HackEgo> 94) <Warrigal> Darn, now I can't acknowledge the reference you were making.
03:52:05 <oerjan> how wonderfully meta
03:54:55 <tswett> I have a great idea.
03:54:55 <lambdabot> tswett: You have 1 new message. '/msg lambdabot @messages' to read it.
03:55:12 <tswett> Let's assign each quote a number according to the order in which it was added.
03:55:46 <kmc> look deep into its soul
03:55:49 <kmc> `quote
03:55:50 <HackEgo> 396) <oklofok> mixing drinks together is like taking all of mozart's works and listening to all of them at once <oklofok> and in general a drink - and most foods - are kind like taking a song and then just taking the average of the notes and listening to it for three minutes. <oklofok> olsner: the point is you don't have to be the composer yourse
03:55:58 <kmc> `quote
03:56:00 <HackEgo> 48) <GregorR> ??? <GregorR> Are the cocks actually just implanted dildos? <GregorR> Or are there monster dildos and cocks? <GregorR> Or are both the dildos and cocks monster?
03:56:05 <kmc> `quote
03:56:07 <HackEgo> 516) <Phantom_Hoover> Yeah, Bashir, just sit there drinking, rather than diagnosing the carpenter mauled in that tragic bonobo accident.
03:56:10 <kmc> `quote
03:56:12 <HackEgo> 119) <CakeProphet> how does a "DNA computer" work. <CakeProphet> von neumann machines? <Phantom_Hoover> CakeProphet, that's boring in the context of DNA. <Phantom_Hoover> It's just stealing the universe's work and passing it off as our own.
03:56:15 <kmc> `quote
03:56:17 <HackEgo> 290) <elliott> <Yahweasel> <Vorpal> that one doesn't make a lot of sense outside context. Unless it is supposed to be a rather lame joke about STD as in HIV, and so on // HELLO WELCOME TO QUOTE DATABASES 101
03:56:36 <kmc> `delquote 290
03:56:42 <HackEgo> ​*poof* <elliott> <Yahweasel> <Vorpal> that one doesn't make a lot of sense outside context. Unless it is supposed to be a rather lame joke about STD as in HIV, and so on // HELLO WELCOME TO QUOTE DATABASES 101
03:57:25 <tswett> `quotwe395
03:57:26 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: quotwe395: not found
03:57:38 <tswett> Why is my terminal being slow. Stop being slow, my terminal.
03:59:40 <Gregor> `ls
03:59:41 <HackEgo> bin \ canary \ egobot.tar.xz \ foo \ interps \ karma \ lib \ paste \ quotes \ share \ wisdom \ zalgo \ zalgo.hi \ zalgo.hs \ zalgo.o
03:59:54 <Gregor> > "Hi"
03:59:56 <lambdabot> "Hi"
04:01:38 <tswett> `quote 395
04:01:39 <HackEgo> 395) <oklofok> mixing drinks together is like taking all of mozart's works and listening to all of them at once <oklofok> and in general a drink - and most foods - are kind like taking a song and then just taking the average of the notes and listening to it for three minutes. <oklofok> olsner: the point is you don't have to be the composer yourse
04:01:41 <quintopia> `quote 290
04:01:42 <HackEgo> 290) <elliott> A priori one cannot say that post hoc ergo propter hoc the diminishing returns would give; yet under quid pro quo one can agglutinate fabula and sujet into vagrancies untold. <elliott> See? I'm intellectual.
04:02:13 <shachaf>
04:02:15 <shachaf> `quote
04:02:15 <shachaf> `quote
04:02:15 <shachaf> `quote
04:02:15 <shachaf> `quote
04:02:16 <HackEgo> 710) <fizzie> I saw a MythBusters show about that. (Or I guess it maybe was a tree.)
04:02:17 <HackEgo> 193) <zzo38> Invent the game called "Sandwich - The Card Game" and "Professional Octopus of the World" (these names are just generated by randomly)
04:02:17 <HackEgo> 245) <fizzie> Phantom_Hoover: I have just one tvtropes page open in elinks, but my tvtropes.txt "queue" has 38 tvtropes.org URLs waiting for processing.
04:02:17 <HackEgo> 859) <Taneb> Gordon Moore's expected lifespan doubles every 18 months
04:02:18 <shachaf> `quote
04:02:19 <HackEgo> 371) <Sgeo_> "system is fairly sane <Sgeo_> <elliott> imagine if the roomba was called the Robotic Magic Vacuum <Sgeo_> <elliott> would you object to that being trademarked <Sgeo_> <monqy> I mean <Sgeo_> <monqy> phrase trade" <Sgeo_> oops
04:02:25 <tswett> elliott, naturally, forgot to take into account the varying efficacies of arbitrational vantages.
04:02:42 <Sgeo|web> elliott: monqy tswett despite not on list, Fiora
04:03:21 <tswett> Are you talking about that potato I read?
04:06:03 <Sgeo|web> Yes
04:06:12 <Sgeo|web> Well, I don't know if you've read the potato
04:06:14 * tswett nods.
04:08:53 <oerjan> `run quote 395 | fmt -w80 | tail -1
04:08:55 <HackEgo> knows what sequences of drinks taste the best
04:09:10 <oerjan> `run quote 395 | fmt -w80 | tail -3
04:09:12 <HackEgo> of the notes and listening to it for three minutes. <oklofok> olsner: the \ point is you don't have to be the composer yourself <oklofok> not everyone \ knows what sequences of drinks taste the best
04:09:30 <tswett> This fan fic seems good enough overall, but it has a couple of blemishes.
04:09:39 <tswett> "You fiddle through the pantry, reaching in deep, standing on one foot for balance."
04:27:32 <Gregor> wtf
04:27:55 <Sgeo|web> Gregor: you should read potatoes
04:35:00 -!- epicmonkey has joined.
04:39:25 <oerjan> potato reading, the new fad of scrying
04:47:13 -!- epicmonkey has quit (Read error: Operation timed out).
04:50:42 -!- WeThePeople has joined.
04:59:29 <WeThePeople> hi
05:00:36 <monqy> hi
05:00:43 <shachaf> `hi
05:00:45 <HackEgo> hi
05:00:52 <tswett> hi
05:00:54 <shachaf> monqy: hello
05:01:25 <shachaf> monqy: have you heard return to the neverhood
05:02:36 <Gregor> `welcome WeThePeople
05:02:38 <HackEgo> WeThePeople: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page. (For the other kind of esoterica, try #esoteric on irc.dal.net.)
05:02:45 <Gregor> Damn it, it's TOO FAST now.
05:03:01 <shachaf> Is it?
05:03:02 <shachaf> `welcome
05:03:04 <HackEgo> Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page. (For the other kind of esoterica, try #esoteric on irc.dal.net.)
05:03:10 <shachaf> Seems slow enough to me.
05:03:12 <shachaf> `welcome
05:03:13 <HackEgo> Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page. (For the other kind of esoterica, try #esoteric on irc.dal.net.)
05:03:19 -!- WeThePeople has left ("Leaving").
05:03:21 <Gregor> > "It's not appreciably slower than lambdabot!"
05:03:22 <lambdabot> "It's not appreciably slower than lambdabot!"
05:03:28 <shachaf> > "hi"
05:03:29 <lambdabot> "hi"
05:03:35 <shachaf> @@ @echo @echo hi
05:03:35 <lambdabot> echo; msg:IrcMessage {msgServer = "freenode", msgLBName = "lambdabot", msgPrefix = "shachaf!~shachaf@unaffiliated/shachaf", msgCommand = "PRIVMSG", msgParams = ["#esoteric",":@@ @echo @echo hi"]}
05:03:36 <lambdabot> rest:"echo; msg:IrcMessage {msgServer = \"freenode\", msgLBName = \"lambdabot\", msgPrefix = \"shachaf!~shachaf@unaffiliated/shachaf\", msgCommand = \"PRIVMSG\", msgParams = [\"#esoteric\",\":@@ @
05:03:36 <lambdabot> echo @echo hi\"]} rest:\"hi\""
05:03:45 <Gregor> Although apparently lambdabot becomes hyper-instantaneous on second request or something???
05:03:49 <Gregor> Or maybe I'm just lagged.
05:03:49 <Bike> woah man
05:03:56 <Gregor> @ping
05:03:56 <shachaf> hi Bike
05:03:57 <lambdabot> pong
05:04:06 <shachaf> @botsnark
05:04:06 <lambdabot> :)
05:04:06 <Bike> hi shachaf
05:04:09 <shachaf> hi
05:04:23 <shachaf> Bike: have you learned lens yet
05:04:34 <Bike> what is lens
05:04:43 <shachaf> @where lens
05:04:43 <lambdabot> I know nothing about lens.
05:04:47 <shachaf> !!!
05:04:55 <shachaf> @where+ lens https://lens.github.com/
05:04:55 <lambdabot> Done.
05:04:57 <Bike> gosh
05:05:02 <Sgeo|web> http://www.amazon.com/dp/B003L7WF7A/?tag=047-20
05:05:03 <shachaf> "whoops"
05:05:05 <shachaf> @where+ lens http://lens.github.com/
05:05:05 <Sgeo|web> That's not a 9
05:05:05 <lambdabot> I will never forget.
05:05:20 <Bike> okay well that link is - oh, no https
05:05:21 <shachaf> Sgeo|web: ?tag
05:05:22 <shachaf> ?
05:05:24 <shachaf> Really?
05:05:27 <shachaf> Don't ?tag= us!
05:05:31 <Sgeo|web> I have no idea what tag= is
05:06:12 <oerjan> it means u steel awr mohnee!
05:06:12 <shachaf> I'm sure.
05:06:22 <Sgeo|web> I got the link from http://www.thisiswhyimbroke.com/ if that's relevant, maybe the tag is some referral thing?
05:06:35 <shachaf> It is.
05:06:40 <Bike> man this doesn't even have any polynomials above the second degree does it
05:06:42 <Bike> pathetic!
05:06:58 <shachaf> Bike: are you still talking about lens
05:07:09 <Sgeo|web> I'm mostly just facepalming about the 3(pi-.14) thing
05:07:32 <Bike> I don't think lens has polynomials. Am I wrong.
05:07:35 <Sgeo|web> Maybe they put that just above where the 9 normally is, in just the right spot?
05:08:01 <oerjan> > sqrt 1221
05:08:03 <lambdabot> 34.942810419312295
05:08:13 <shachaf> Bike: It has algebraic types.
05:08:19 <Bike> Sgeo|web: bla bla Do Irrationals Really Exist?? bla bla
05:08:31 <shachaf> Bike: Sure they exist.
05:08:32 <Sgeo|web> > (1221) ** (1/11)
05:08:34 <lambdabot> 1.9081412268565665
05:08:35 <shachaf> Well, the computable ones do.
05:08:46 <Sgeo|web> > (1221) ** (1/111)
05:08:48 <lambdabot> 1.0661252990161068
05:08:49 <Bike> the multiple question marks are supposed to indicate that it's not meant as a serious question or worth talking about
05:08:52 <Sgeo|web> Wait what
05:08:53 <Bike> and: does type algebra have polynomials?
05:09:03 <Bike> i didn't think it did.
05:09:04 <shachaf> Bike: My answer was not completely serious either.
05:09:14 <Bike> blast, i should have known
05:09:37 <Sgeo|web> > 2 *** 3
05:09:38 <lambdabot> No instances for (GHC.Num.Num (a0 b0 c0), GHC.Num.Num (a0 b'0 c'0))
05:09:38 <lambdabot> aris...
05:09:40 <Sgeo|web> > 2 ** 3
05:09:41 <lambdabot> 8.0
05:09:49 <Bike> what the hell does three asterisks denote?
05:09:54 <Sgeo|web> Typos.
05:10:06 <shachaf> A thing with functions on tuples.
05:10:15 <Bike> oh. i was hoping tetration for shits/giggles
05:10:25 <shachaf> > (+1) *** (*2) $ (8,5)
05:10:26 <Sgeo|web> :t (***)
05:10:26 <lambdabot> (9,10)
05:10:27 <lambdabot> Arrow a => a b c -> a b' c' -> a (b, b') (c, c')
05:11:18 <shachaf> > (f *** g) (x,y) -- better
05:11:20 <lambdabot> Ambiguous type variable `c0' in the constraints:
05:11:20 <lambdabot> (GHC.Show.Show c0)
05:11:20 <lambdabot> ...
05:11:26 <shachaf> oh no
05:11:32 <Bike> you're doing that just to amuse me, correct
05:11:34 <shachaf> > (f *** g) (x,y) :: (Expr,Expr)
05:11:34 <oerjan> > 1221/111
05:11:35 <lambdabot> (f x,g y)
05:11:36 <lambdabot> 11.0
05:11:37 <Bike> :(t ****)
05:11:43 <Bike> wow, what was that, me.
05:11:43 <shachaf> :(t
05:11:48 <Bike> :t (****)
05:11:49 <lambdabot> Not in scope: `****'
05:11:49 <lambdabot> Perhaps you meant one of these:
05:11:49 <lambdabot> `***' (imported from Control.Arrow),
05:11:49 <oerjan> ...it's some weird elementary school division symbol
05:11:55 <Bike> ÷
05:12:02 <Bike> :t ÷
05:12:02 <lambdabot> fd:9: commitBuffer: invalid argument (invalid character)
05:12:08 <Bike> bull shit
05:12:10 <oerjan> Bike: no, not that. on the clock.
05:12:14 <shachaf> ÷ works fine except that lambdabot is broken.
05:12:46 <Sgeo|web> Ok, I can't get the thing at position 11 on that clock to actually equal 11 with either obvious interpretation
05:12:48 <monqy> I think I've seen that clock
05:12:52 <shachaf> hi
05:12:59 <monqy> oh was the clock linked in here
05:13:04 <monqy> I guess i'll see if I've seen it
05:13:05 <Bike> anyway, sgeo, obviously the point is to give it to math majors so that you can watch them explode atchu
05:13:33 <shachaf> > let f g x = g (g x) in f f f f (+1) 0
05:13:34 <lambdabot> 65536
05:13:38 <shachaf> > let f g x = g (g x) in f f f f f (+1) 0
05:13:40 <lambdabot> *Exception: stack overflow
05:13:41 <Sgeo|web> ...oy
05:13:42 <oerjan> Sgeo|web: i said it's a weird division symbol
05:13:43 <Sgeo|web> *oh
05:13:58 <Sgeo|web> Right, the thingy for long division
05:13:59 <Sgeo|web> derp
05:14:21 <monqy> explode in what sense
05:14:25 <Sgeo|web> I should learn to pay attention
05:14:46 <Sgeo|web> But 3(pi - .14) != 9
05:15:07 <Bike> monqy: the sense ending with you covered in principia mathematica symbology written in blood
05:15:08 <shachaf> > 3(pi - 0.14)
05:15:10 <lambdabot> 3
05:15:18 <monqy> oh i havent seen that clock
05:15:20 <Bike> what now sgeo
05:15:21 <monqy> but i've seen another clock
05:15:37 <monqy> people also buy Math Jokes 4 Mathy Folks [Paperback]
05:15:37 <Bike> > pi
05:15:39 <lambdabot> 3.141592653589793
05:15:52 <Bike> oh, parse thing.
05:15:58 <Sgeo|web> Oh, I see what shachaf did
05:16:11 <Sgeo|web> > 3 0
05:16:13 <lambdabot> 3
05:16:46 <Bike> «Some philosophers might take issue with such a Platonist view of the world - this belief in an absolute and eternal reality beyond human existence - but to my mind that is what makes them philosophers and not mathematicians
05:16:52 <Sgeo|web> The scary thing is that it shouldn't even LOOK like multiplication to our eyes in that context but it does
05:17:03 <Bike> why shouldn't it?
05:17:04 <monqy> i'm going to find some math jokes in this book
05:17:07 <monqy> watch out, mathy folks
05:17:30 <Sgeo|web> Bike: because Haskell doesn't have a thing where things next to eachother like that is multiplication
05:17:39 <monqy> What's the difference between an economist and a confused old man with Alzheimer's?
05:17:56 <Bike> obviously, but it's close enough
05:17:58 <oerjan> monqy: BEATS ME
05:17:59 <monqy> The economist has a calculator.
05:18:30 <shachaf> Bike: Haskell has a thing where "x y" means "x"
05:18:32 <shachaf> > 1 2
05:18:34 <lambdabot> 1
05:18:35 <shachaf> > 1 "hello"
05:18:36 <lambdabot> 1
05:18:39 <shachaf> > pi 8
05:18:41 <lambdabot> 3.141592653589793
05:18:46 <shachaf> > pi 1 2 3 4 "hello"
05:18:48 <lambdabot> 3.141592653589793
05:18:49 <oerjan> > 7 8 9
05:18:50 <lambdabot> 7
05:18:52 <Bike> is that actually a haskell thing or is it a parse thing, because i'm used to parsers giving up like that
05:19:01 <Bike> also i didn't need five examples but thanks
05:19:05 <shachaf> It's a misleading lambdabot thing.
05:19:14 <Bike> makes more sense
05:19:15 <monqy> ps why does lambdabot have that thing
05:19:22 <shachaf> Actually "x y" means what "x(y)" usually means.
05:19:31 <shachaf> monqy: because cale. dont ask questions monqy!!!!!
05:19:38 <oerjan> because pointwise arithmetic is useful, in principle
05:19:42 <pikhq> monqy: Caleskell confuseth
05:19:48 <Bike> «No instance for (Num (t -> t1)) arising from the literal `3' at <interactive>:1:0-2» bullshit
05:19:54 <pikhq> :t (.)
05:19:55 <lambdabot> Functor f => (a -> b) -> f a -> f b
05:19:56 <monqy> remember when caleskell had a funky type signature for flip, and (.) was fmap
05:20:01 <shachaf> @ty (.)
05:20:02 <Bike> actually can you have functions named 3
05:20:03 <lambdabot> Functor f => (a -> b) -> f a -> f b
05:20:04 <shachaf> øh nø
05:20:05 <monqy> oh it's still fmap.......
05:20:06 <Bike> i would like that
05:20:09 <oerjan> :t flip
05:20:09 <monqy> :t flip
05:20:10 <pikhq> monqy: Still is!
05:20:10 <lambdabot> (a -> b -> c) -> b -> a -> c
05:20:11 <lambdabot> (a -> b -> c) -> b -> a -> c
05:20:15 <monqy> at least they fixed flip
05:20:15 <shachaf> Bike: Yes.
05:20:20 <quintopia> happy birthday ada byron?
05:20:20 <Bike> rad
05:20:25 <shachaf> 3 actually means "fromInteger (3::Integer)"
05:20:51 <Bike> :t fromInteger
05:20:52 <lambdabot> Num a => Integer -> a
05:21:03 <Bike> so, it's just a thunk that returns 3.
05:21:17 <oerjan> ...that's not the point.
05:21:29 <Bike> ?
05:21:50 <oerjan> > (3 :: Double, 3 :: Int, 3 :: Complex Float)
05:21:51 <lambdabot> (3.0,3,3.0 :+ 0.0)
05:21:59 <Bike> ok, 3 as an integer?
05:22:11 <shachaf> instance Num MyValue where fromInteger :: Integer -> MyValue; fromInteger x = whatever
05:22:23 <oerjan> no, as whatever type you want
05:22:26 <shachaf> > 1 2
05:22:27 <lambdabot> Could not deduce (GHC.Num.Num (a0 -> t))
05:22:27 <lambdabot> arising from the ambiguity chec...
05:22:35 <Bike> then what's with the ::Integer in shachaf's type signature
05:22:39 <Bike> :t 3
05:22:40 <lambdabot> Num a => a
05:22:48 <shachaf> Bike: (3::Integer) is my special syntax for the Integer value 3.
05:23:03 <shachaf> Which isn't polymorphic or anything. It's just an integer.
05:23:13 <Bike> that is what i assumed
05:23:23 <shachaf> @ty (3::Integer)
05:23:24 <lambdabot> Integer
05:23:25 <shachaf> @ty 3
05:23:26 <lambdabot> Num a => a
05:23:27 <Bike> i'm pretty confused right now because i thought things made sense and then they didn't
05:24:09 <pikhq> Bike: Basically, you can define an unusual instance of Num and get functions out.
05:24:13 <Bike> maybe learning haskell from a brainfuck derivative/glasswork channel was a mistake.
05:24:42 <shachaf> Wait, which channel are you talking about?
05:24:43 <oerjan> Bike: basically, 3 means you expect it to when you use it as an Integer. for any other type, it gets converted with fromInteger.
05:24:57 <Bike> this channel. jokingly.
05:25:11 <Bike> because it's nominally about esoteric languages and more often about lenses.
05:25:14 <oerjan> this is not _necessarily_ a thunk, since it could be done at compilation.
05:25:36 <Bike> oerjan: i can't parse "means you expect it to". means you expect it to what?
05:25:45 <oerjan> oops
05:25:50 <oerjan> *means what you
05:26:13 <hagb4rd> @ty pi
05:26:14 <lambdabot> Floating a => a
05:26:25 <hagb4rd> @ty a
05:26:26 <lambdabot> Expr
05:26:38 <shachaf> Hmm.
05:26:57 <shachaf> This person in #haskell decided that https://en.wikipedia.org/wiki/Monad_(functional_programming) should be their introduction to Haskell.
05:26:58 <Bike> so, 3 as a literal is "polymorphic"? for what i imagine is a different definition of "polymorphic" than i remember from C++ in 21 Days
05:27:15 <pikhq> Yes, 3 is polymorphic.
05:27:20 <Bike> shoulda been Monad_(category_theory)
05:27:23 <Bike> and ok cool
05:27:39 <Bike> is literal 3.0 polymorphic?
05:27:46 <pikhq> @ty 3.0
05:27:46 <shachaf> Yes, but less so.
05:27:47 <lambdabot> Fractional a => a
05:27:54 <shachaf> (Unless you use the GHC extension I wrote!)
05:27:58 <shachaf> (Which might be in 7.8?)
05:28:00 <Bike> Only morphs to types of floats?
05:28:11 <shachaf> Fractional.
05:28:13 <Bike> wow, what a badly constructed thought that was
05:28:17 <shachaf> Floating points are the devil.
05:28:19 <Bike> you can use it as a ratio?
05:28:35 <oerjan> > 3.0 :: Rational
05:28:36 <lambdabot> 3 % 1
05:28:54 <Bike> boy, i hope i can look forward to a generation of programmers using float syntax and thinking accurately that they have a rational
05:28:54 <oerjan> that's the fundamental meaning, everything else is converted from that type
05:29:03 <pikhq> Floats are the devil, and should not be considered numbers.
05:29:12 <shachaf> That's not float syntax, Bike.
05:29:18 <shachaf> That's decimal syntax.
05:29:22 <Bike> well, in programming it usually is.
05:29:37 <shachaf> There are many well-behaved types that can express 3.1.
05:29:44 <shachaf> Floating point values are not among them.
05:29:48 <Bike> i am aware
05:29:52 <monqy> > x-- // decrement x
05:29:53 <lambdabot> x
05:30:01 <monqy> now x is decremented
05:30:11 <Bike> i'm just imagining someone arguing bout using 3.0 in a non-haskell program and insisting that it's accurate
05:30:24 <pikhq> 0.1 does not have an exact representation as a float. Joy.
05:30:51 <shachaf> > x++//increment x
05:30:53 <Bike> what if it's a base ten float, eh, don't be so computerbound!
05:30:53 <lambdabot> x + 1
05:31:12 <shachaf> Bike: Floats are computerbound.
05:31:20 <hagb4rd> > --x
05:31:21 <shachaf> "cerebro"
05:31:21 <lambdabot> not an expression: `--x'
05:31:22 <pikhq> I don't deal in base 10.
05:31:46 <Bike> not necessarily, you'd just have to be entertainingly nuts to use floats outside of 'em
05:31:51 <Sgeo|web> But all bases are base 10
05:32:06 <shachaf> Not true.
05:32:24 <Bike> mm?
05:32:30 <Sgeo|web> 2i ?
05:32:42 <Bike> what would "all bases are base 10" even mean
05:32:53 <pikhq> Sgeo|web: Not if you follow Postel's Law.
05:33:25 <shachaf> monqy: are you going to learn lens on 12-12-12
05:33:31 <Sgeo|web> For any base b, the string "10" in that base represents b. (Might not be true for all bases, but surely for base two, ten, sixteen, etc)
05:33:33 <monqy> shachaf: maybe
05:33:52 <monqy> we won't know until then now will we !
05:33:58 <Bike> boring
05:34:13 <oerjan> shachaf: no, he'll learn it on 12-21-12, which will cause the end of the world.
05:34:24 <hagb4rd> lol
05:34:30 <shachaf> oerjan: edwardk's talk is on 12-12-12
05:34:36 <Sgeo|web> "10" in base 2i is 2i
05:34:37 <oerjan> ah.
05:34:39 <Sgeo|web> So, no problems there
05:35:05 <shachaf> what about base 1
05:35:20 <shachaf> what about base balanced ternary!!
05:35:38 <Sgeo|web> Is base 1 even a base?
05:35:43 <oerjan> balanced ternary is fine
05:35:44 <shachaf> `run allquotes | grep Jafet
05:35:44 <Bike> now i want to go read taocp2 again, thanks shachaf
05:35:44 <Sgeo|web> I'll grant balanced ternary
05:35:46 <HackEgo> 835) <Jafet> I wonder if Red Alert 4 will use MMIX \ 860) <Jafet> The world needs better healthcare, social justice and wealth distribution, but a monads library for clojure surely won't hurt
05:35:50 <Bike> Sgeo|web: it's unary. tallymarks.
05:36:09 <shachaf> oerjan: I suppose that's still 3.
05:36:21 <shachaf> Bike: I haven't read any of it!
05:36:22 <shachaf> Should I?
05:36:27 <Bike> it's pretty rad
05:36:33 <shachaf> Also should I go to http://www-cs-faculty.stanford.edu/~uno/musings.html on Friday?
05:36:35 <Bike> maybe you should wait for knuth to slightly unfuck his language though
05:36:35 <oerjan> now fibonacci base may have some trouble there
05:36:49 <Bike> anyway i mention it because he goes into floats
05:36:50 <oerjan> 10 is probably 2, i guess
05:36:57 <Bike> lots of fun stuff, like how they're not associative or whatever
05:37:04 <Bike> or even commutative? i forget
05:37:11 <shachaf> They're nothing desirable.
05:37:34 <Bike> well, they're useful in many contexts, just, as long as you know they're approximate
05:37:36 <hagb4rd> <Sgeo|web>Is base 1 even a base? <-- could be a problem with the notification of zero
05:37:44 <Bike> which most people don't
05:37:46 <Bike> so
05:37:51 <oerjan> ieee floats are commutative, afair
05:38:09 <shachaf> What's commutative?
05:38:17 <Bike> does that include snans and infinities, i wonder
05:38:22 <oerjan> x+y = y+x, x*y = y*x
05:38:29 <shachaf> OK, so both + and *
05:38:40 <oerjan> (i was about to change = to == until i remembered nan :P)
05:38:41 <shachaf> Hmm, that's unexpected.
05:39:19 -!- SingingBoyo has joined.
05:39:27 <oerjan> s/afair/iiuc/
05:39:39 <oerjan> shouldn't leave the impression i actually read the standard
05:40:04 <pikhq> Not associative though.
05:41:19 <oerjan> i think that having addition be both commutative, associative and satisfy x+(-x) = 0 on a finite set of representations basically means you _must_ wrap around at some point.
05:41:36 <oerjan> *all of
05:42:19 <shachaf> Associativity is way more important than commutativity.
05:43:14 <oerjan> or even with just associativity, 1+1+1+1+...+1 must repeat at some point.
05:43:29 <oerjan> wait, who needs associativity, even.
05:44:04 <oerjan> 1+(1+(1+(...))) must repeat at some point, given a bounded size representation.
05:46:38 <oerjan> for ieee, that presumably happens once you reach 1+x == x by rounding.
05:47:26 <oerjan> while things like Word32 can wrap around back to 0
05:48:58 <oerjan> if you have the property (-1)+(1+x) == x for all x, then you are guaranteed wraparound to the beginning.
05:49:35 <Bike> "Many serious mathematicians have attempted to analyze a sequence of floating point operations rigorously, but have found the task so formidable that they have tried to be content with plausibility arguments instead." knuth you're not helping
05:49:36 <shachaf> C int never repeats
05:50:14 <oerjan> shachaf: ok i guess undefined behavior also works
05:54:25 <Bike> hm, we do have ((u+v)-u)+((u+v)-((u+v)-u)) = u+v I guess
05:54:31 <Bike> that's pretty much as good as associativity, right
05:54:53 <oerjan> we do?
05:55:03 -!- augur has joined.
05:55:17 <shachaf> @check \u v -> ((u+v)-u)+((u+v)-((u+v)-u)) == u+(v::Double)
05:55:19 <lambdabot> Not in scope: `myquickcheck'
05:55:41 <Bike> according to knuth. the proof's maybe a paragraph if you want me to dump it.
05:56:23 <Bike> What does check do?
05:56:33 <oerjan> crashes horribly
05:56:46 <Bike> I thought that was just lambdabot messing with shachaf.
05:56:48 -!- augur has quit (Read error: Connection reset by peer).
05:56:54 <oerjan> @check \u v -> ((u+v)-u)+((u+v)-((u+v)-u)) == u+(v::Double)
05:56:56 <lambdabot> Not in scope: `myquickcheck'
05:57:00 -!- augur has joined.
05:57:01 <oerjan> OR WITH EVERYONE
05:57:05 -!- augur has quit (Read error: Connection reset by peer).
05:57:08 <shachaf> When it's not broken, @check will generate random inputs and check that your thing holds.
05:57:12 <Bike> Lambdabot, you should be a bit nicer.
05:57:20 <Bike> Golly, that doesn't seem that rigorous.
05:57:28 -!- augur has joined.
05:57:44 <shachaf> Bike: Good enough for programmers, right?
05:57:53 <Bike> damn straight
05:58:34 <oerjan> it's good for that "not obviously false" feeling
06:00:15 <oerjan> also for that "obviously false" feeling, in other cases
06:00:40 <oerjan> (oh my poor ZipList Monad ;_;)
06:00:40 <shachaf> That feeling is good.
06:01:16 <hagb4rd> the other is false
06:01:49 <Bike> > (\u v -> ((u+v)-u)+((u+v)-((u+v)-u))) (3.79::Double) (14::Double)
06:01:50 <lambdabot> 17.79
06:02:07 <Bike> > (\u v -> ((u+v)-u)+((u+v)-((u+v)-u))) (-4818::Double) (.3::Double)
06:02:08 <lambdabot> <hint>:1:58: parse error on input `::'
06:02:08 <hagb4rd> @ty obviously good
06:02:09 <lambdabot> Not in scope: `obviously'
06:02:09 <lambdabot> Not in scope: `good'
06:02:16 <Bike> ok
06:02:56 <Bike> i think one success and one parse error counts as a proof
06:03:14 -!- FreeFull has quit.
06:03:38 <Bike> relatedly, haskell doesn't allow .whatever, huh.
06:03:56 <shachaf> .whatever is evil.
06:04:12 <Bike> are you some kind of decimal paladin, shachaf
06:04:56 <Bike> > (\u v -> ((u+v)-u)+((u+v)-((u+v)-u))) (-4818::Double) (0.3::Double) anyway this one works too
06:04:58 <lambdabot> Not in scope: `anyway'Not in scope: `this'Not in scope: `one'
06:04:58 <lambdabot> Perhaps you ...
06:05:08 <shachaf> The Decimal Paladin
06:05:10 <Bike> or would if i understood how lambdabot's parsey cutoff thing wored, which I don't.
06:05:11 <shachaf> Base ten a true story.
06:05:17 <oerjan> for a certain value of works.
06:05:27 <shachaf> Bike: It doesn't actually do a cutoff thing.
06:05:28 <Bike> considering what "decimate" means it's appropriate, I think
06:05:29 <shachaf> At all.
06:05:45 <Bike> So what's with the > 3 4 thing.
06:05:57 <Bike> > (\u v -> ((u+v)-u)+((u+v)-((u+v)-u))) (-4818::Double) (0.3::Double) -- sing a song
06:05:58 <lambdabot> -4817.7
06:05:59 <shachaf> > 3 4
06:06:01 <lambdabot> Could not deduce (GHC.Num.Num (a0 -> t))
06:06:01 <lambdabot> arising from the ambiguity chec...
06:06:02 <oerjan> Bike: that's not parsing, that's type hackery
06:06:04 <shachaf> nothin'
06:06:10 <shachaf> It doesn't work.
06:06:21 <oerjan> > 3 4
06:06:22 <lambdabot> Could not deduce (GHC.Num.Num (a0 -> t))
06:06:22 <lambdabot> arising from the ambiguity chec...
06:06:29 <oerjan> what did shachaf do now.
06:06:30 <Bike> well, i'm confused now, but it's a lambdabot confusion and not a haskell confusion, so i'm gonna go ahead and not care
06:06:45 <shachaf> Bike: I got Cale to change it back to normal.
06:06:52 <shachaf> So now lambdabot is just a little more normal.
06:06:57 <oerjan> :t (.)
06:06:58 <lambdabot> Functor f => (a -> b) -> f a -> f b
06:07:02 <shachaf> Not *that* much, oerjan.
06:07:03 <oerjan> a _little_.
06:07:28 <Bike> so, why's this channel use such an apparently weird evalbot (speaking of which i thought dot was compose, why would it be fmap)
06:07:49 * oerjan belatedly swats shachaf for the base ten pun -----###
06:08:33 <shachaf> oerjan: Whew.
06:08:44 <oerjan> Bike: fmap = (.) for functions.
06:09:00 <shachaf> Bike: Mapping a function over the result of another function is like composing the two functions.
06:09:00 <oerjan> so it's a simple generalization.
06:09:08 <shachaf> simple AND WRONG
06:09:22 <Bike> ugh, and here i was thinking i almost maybe understood functors
06:10:15 <Bike> "(((u+v)-v)+v)-v = (u+v)-v" anyway all of knuth's identities here kind of suck
06:11:11 <oerjan> Bike: just wait until you learn how functions are a Monad.
06:11:13 <Bike> oh, and that's only even valid for certain rounding modes. lovely.
06:11:40 <Bike> they're monads because they're functors and they form a monoid, right
06:11:58 <oerjan> ...
06:12:11 <oerjan> MAYBE
06:12:17 <Bike> look when i say something stupid you can say "that's fucking stupid", it'll do me more good than some ellipses
06:12:24 <oerjan> O KAY
06:12:30 <Bike> thanks oerjan
06:12:51 -!- TeruFSX has quit (Quit: Leaving).
06:13:25 <oerjan> > (do x <- sin; y <- cos; return (x^2+y^2)) 42
06:13:27 <lambdabot> 1.0
06:14:14 <Bike> any particular reason you wrote that as a sequence instead of just an expression?
06:15:48 <shachaf> Do demonstrate what was going on with (r ->)
06:15:52 <oerjan> > liftM2(+)((^2)<$>sin)((^2)<$>cos) 42 -- OKAY
06:15:53 <lambdabot> 1.0
06:15:59 <shachaf> s/D/T/
06:16:36 <Bike> i was just wondering if using the extra variables was supposed to fuck up accuracy or something
06:17:03 <oerjan> this was not a float demonstration, it was a function monad demonstration.
06:17:36 <Bike> oh, wow. i really fucked that up!
06:18:02 <fizzie> > (sin >>= \x -> cos >>= \y -> return (x^2+y^2)) 42 -- see, it's much clearer if you don't involve a "do" in it
06:18:03 <lambdabot> 1.0
06:20:25 -!- Sgeo|web_ has joined.
06:20:33 <Bike> muh, in local ghci the do thing doesn't work, says functions aren't a monad I think
06:20:44 <shachaf> :m + Control.Monad.Instances
06:20:47 <shachaf> Also upgrade your GHC
06:21:31 <Bike> oh my, it's a full version number behind the one y'all yelled at gregor bout earlier.
06:21:34 <monqy> alt. use Reader
06:21:41 <monqy> "same thing"
06:21:42 -!- Sgeo|web has quit (Ping timeout: 245 seconds).
06:22:38 <shachaf> monqy: "not the same thing"
06:22:47 <monqy> "almost the same thing"
06:23:05 <monqy> or are you doing something wacky here......
06:23:33 <Bike> "The Monad.Reader is an electronic magazine about all things Haskell. It is less formal than journal, but more enduring than a wiki-page or blog post" cool
06:25:06 -!- Yonkie has joined.
07:28:09 -!- epicmonkey has joined.
07:31:59 -!- oklopol has joined.
07:51:01 <Jafet> > (1 - 1e-18) ** 6e16
07:51:03 <lambdabot> 1.0
07:51:20 <Jafet> > exp (- 6e16 * 1e-18)
07:51:21 <lambdabot> 0.9417645335842487
07:56:50 -!- Arc_Koen has quit (Quit: Arc_Koen).
08:11:00 -!- Nisstyre-laptop has quit (Ping timeout: 264 seconds).
08:11:53 -!- Yonkie has quit (Ping timeout: 252 seconds).
08:12:18 -!- epicmonkey has quit (Ping timeout: 250 seconds).
08:23:02 -!- GreyKnight has joined.
08:25:45 <Sgeo|web_> http://www.undefined.net/1/0/?strip=562
08:25:49 <Sgeo|web_> No he wouldn't.
08:26:05 <Sgeo|web_> A spiral pattern that,,, also... has another form of movement
08:26:12 <Sgeo|web_> Should be sufficient for him to escape eventually
08:26:46 <Sgeo|web_> Hmm, although might be difficult to do that while panicky and scared and no reference points
08:28:19 <GreyKnight> So he could escape as long as the featureless white plain has a feature on it? :v
08:29:58 <Sgeo|web_> The idea is that he would go down into it to see how far down it goes
08:30:40 <GreyKnight> I was just wondering if I might've misread
08:30:59 <GreyKnight> So you mean *moving* in a spiral
08:31:08 <GreyKnight> (In fact you even used the word "movement")
08:31:37 <Sgeo|web_> yes
08:31:40 * GreyKnight swats himself -----###
08:31:42 <oerjan> living humans have trouble walking in a straight line without a reference point.
08:32:03 <Sgeo|web_> But if the spiral happened to be horizontal, it wouldn't work, so would also need... another direction of movement too
08:32:19 <Bike> so what you're saying is he needs to ballet through hell.
08:32:25 <oerjan> he wouldn't have a way of ensuring that he was actually moving in a spiral.
08:32:27 -!- nooga has joined.
08:33:13 <oerjan> otoh pure random movement _should_ get him back to the surface eventually :P
08:34:10 <Bike> living humans are bad at randomness too! gosh, we're so incompetent.
08:34:14 <GreyKnight> "You'll probably get back in finite time! What are you complaining about?!"
08:34:23 <GreyKnight> What a whiner :v
08:34:46 <Sgeo|web_> The character was never human.
08:34:51 <Sgeo|web_> Not that that necessarily helps
08:35:00 <Bike> wait shit wasn't he an electron
08:35:07 <Bike> they're not half bad at random
08:35:24 <GreyKnight> Looks like we have a winning plan
08:35:40 <shachaf> GreyKnight: Uh... oerjan does the swatting around here.
08:36:17 <Sgeo|web_> Bike: a molecule
08:36:35 * GreyKnight cattle-prods shachaf -----***
08:36:49 <Bike> hm, i wonder. in three dimensions random motion will get you away and all, but what about the direction? if hell extends infinitely downwards would he still be stuck there forever?
08:40:53 <Sgeo|web_> Help I'm readdicted to 1/0
08:40:58 <oerjan> random motion will get you back along any one or two axes, so he should get back to the surface.
08:41:30 <oerjan> although probably not at the same point, but he can just go randomly along the surface.
08:41:38 <oerjan> *then he can
08:41:54 <GreyKnight> Thus reducing the problem to a 2D random walk :-)
08:42:18 -!- GreyKnight has quit (Quit: brb).
08:42:25 <shachaf> Sgeo|web_: I was getting addicted to not knowing what you were addicted to.
08:42:28 <Bike> but then he'll return to his starting point!
08:42:29 <shachaf> But now I'm having withdrawal.
08:42:46 <oerjan> Bike: i thought that was the idea
08:42:56 <Bike> I mean, his starting point for eruption from the surface.
08:43:10 <oerjan> sure, as well as to any other point on the surface.
08:43:23 <Bike> bah.
08:43:28 <Bike> he should just fly up and look.
08:43:31 <Sgeo|web_> fwiw, there's a large dead bear that's been converted into dirt on the surface
08:43:40 <oerjan> ...that sounds like a better idea XD
08:43:55 <Bike> dead bears are always a good idea.
08:43:58 -!- GreyKnight has joined.
08:44:32 <GreyKnight> Sgeo|web_: so you thought you'd come and get us (re)addicted too? THANKS
08:45:32 <monqy> : )
08:45:42 <Bike> obviously what we need is tailsteak's hamsteaks fanart instead
08:48:28 <GreyKnight> :t 1 / 0
08:48:30 <lambdabot> Fractional a => a
08:50:00 <Bike> > signum 1/0
08:50:02 <lambdabot> Infinity
08:50:16 <Bike> unhelpful.
08:50:22 <oerjan> precedence
08:50:49 <Bike> > signum (1/0)
08:50:50 <lambdabot> 1.0
08:51:04 <Bike> that seems bad.
08:51:17 <GreyKnight> :t signum
08:51:19 <lambdabot> Num a => a -> a
08:51:25 <oerjan> i'd assume that's correct ieee behavior?
08:52:33 <Bike> hm, so it is. bother bother
08:52:42 <GreyKnight> > signum 1
08:52:43 <lambdabot> 1
08:52:57 <GreyKnight> So it goes to float because of the infinity?
08:53:07 <oerjan> no, because of the /
08:53:11 <Bike> :t signum (1/0)
08:53:12 <lambdabot> Fractional a => a
08:53:20 <Deewiant> > signum (-1/0)
08:53:22 <lambdabot> -1.0
08:53:27 <Bike> is that a float? i thought i just learned it was just a rational
08:54:18 <Bike> > (0 :+ 1) / 0
08:54:20 <lambdabot> NaN :+ NaN
08:54:24 <GreyKnight> > signum(2/2)
08:54:26 <lambdabot> 1.0
08:54:31 <GreyKnight> Hm!
08:54:35 <oerjan> it's a Double. Rational is just the type used for interpreting decimal notation _before_ converting it to the actual type.
08:54:44 <Bike> botheration.
08:54:55 <Bike> > (1 :+ 1) / 0
08:54:55 <GreyKnight> > 2/2
08:54:56 <lambdabot> NaN :+ NaN
08:54:57 <lambdabot> can't find file: L.hs
08:55:10 <GreyKnight> wat
08:55:19 <Bike> L is so overrated
08:55:23 <oerjan> the default default declaration is "default (Integer, Double)"
08:55:26 <Bike> > signum NaN
08:55:28 <lambdabot> Not in scope: data constructor `NaN'
08:55:45 <Deewiant> > map signum [1/0, -1/0, 0/0, -0/0]
08:55:46 <lambdabot> [1.0,-1.0,-1.0,-1.0]
08:55:47 <oerjan> except sometimes it's "default ((), Integer, Double)"
08:55:52 <GreyKnight> > 2 / 2
08:55:54 <lambdabot> 1.0
08:56:00 <GreyKnight> Oh, there we go
08:56:12 <GreyKnight> Hm I hadn't expected that
08:56:14 <Bike> > signum (-0/0) -- negative 1, hopefully
08:56:16 <lambdabot> -1.0
08:56:20 <Bike> woo
08:56:27 <oerjan> that L.hs message is essentially just a lambdabot race condition of some sort.
08:56:32 <GreyKnight> (Well, I had after the discussion above, but not previously)
08:56:36 <Sgeo|web_> > signum (1/-0)
08:56:38 <lambdabot> Not in scope: `/-'
08:56:38 <lambdabot> Perhaps you meant one of these:
08:56:38 <lambdabot> `-' (imported from P...
08:56:43 <Sgeo|web_> > signum (1/ -0)
08:56:43 <Bike> Hah.
08:56:45 <lambdabot> Precedence parsing error
08:56:45 <lambdabot> cannot mix `GHC.Real./' [infixl 7] and prefix...
08:56:49 <Sgeo|web_> > signum (1/ (-0))
08:56:51 <lambdabot> -1.0
08:57:48 <oerjan> wait, nan's have well-defined signs?
08:58:01 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
08:58:21 <Bike> don't think so?
08:58:42 <Deewiant> Yes, NaNs have a sign bit.
08:58:51 <GreyKnight> Yep
08:59:00 <GreyKnight> :t /
08:59:02 <lambdabot> parse error on input `/'
08:59:04 <fizzie> IEEE nans do have signs.
08:59:06 <GreyKnight> :t (/)
08:59:07 <lambdabot> Fractional a => a -> a -> a
08:59:09 <GreyKnight> Oops
08:59:10 <Deewiant> Alas, 0/0 seems to produce a negative NaN.
08:59:22 <fizzie> Whether it's "well-defined" is another matter.
08:59:28 <oerjan> > signum (0/0)
08:59:29 <lambdabot> -1.0
08:59:45 <oerjan> it's conceivable it is comparing it to 0 in haskell
08:59:59 <oerjan> rather than using whatever the C function is
09:00:20 <fizzie> copysign.
09:00:24 <Deewiant> signbit.
09:00:44 <oerjan> @src RealFloat
09:00:44 <lambdabot> Source not found. I feel much better now.
09:00:52 <GreyKnight> Okay, so 2/2 evaluates to a Fractional because Haskell doesn't want to have two possible result types for (/)
09:00:57 -!- Bike has quit (Quit: leaving).
09:01:01 <fizzie> Well, either.
09:01:02 <Deewiant> But signbit seems to give 128 for both 0.0/0 and -0.0/0 here.
09:01:27 <oerjan> GreyKnight: um Fractional isn't a type, it's a type class. there are several types it can give.
09:01:51 <GreyKnight> Er right
09:01:57 <shachaf> This is the best type class:
09:01:58 <shachaf> @src Real
09:01:58 <lambdabot> class (Num a, Ord a) => Real a where
09:01:58 <lambdabot> toRational :: a -> Rational
09:02:02 <GreyKnight> (Told you I wasn't very good at Haskell :v)
09:02:03 <shachaf> Isn't it great?
09:04:43 <GreyKnight> I am just trying to figure out why 2/2 doesn't end up as an integer
09:05:09 <oerjan> because Integer isn't a member of the Fractional type class
09:05:09 <Deewiant> Because of the type of (/) you looked at earlier.
09:05:14 <Deewiant> And that.
09:05:35 <oerjan> > 2 `div` 2
09:05:36 <lambdabot> 1
09:05:43 <oerjan> that's integral division
09:06:07 <Deewiant> > 2 `quot` 2
09:06:09 <lambdabot> 1
09:06:13 <Deewiant> That's faster in general
09:06:15 <oerjan> > 2 `quot` 2 -- or this, different on ne... dammit Deewiant
09:06:16 <lambdabot> 1
09:06:32 <GreyKnight> Okay, so I was on the right track, just s/type/type class/ :-P
09:06:33 <oerjan> ...gative numbers.
09:07:41 <oerjan> making things polymorphic over different number types was one of the main original reasons type classes were invented. then they found fancier uses.
09:11:46 <fizzie> 0xffffffff is the NaNniest (single-precision) NaN.
09:11:50 <fizzie> (It's also negative.)
09:12:12 <Sgeo|web_> elliott: monqy Fiora
09:12:30 <shachaf> Do you people even read that thing?
09:12:42 <GreyKnight> Sgeo|web_: Sgeo|web_ Sgeo|web_
09:14:12 -!- Yonkie has joined.
09:15:24 <fizzie> For the record, at least my ghci's signum does not actually look at the sign bit; http://sprunge.us/eUPP -- all NaNs are negative.
09:16:25 <shachaf> signum x | x == 0.0 = 0 | x > 0.0 = 1 | otherwise = negate 1
09:16:30 <shachaf> Good old GHC.
09:16:50 <Deewiant> fizzie: Methinks you're doing it wrong, or then my libc is also doing it wrong.
09:17:19 <shachaf> That's the Report's definition, of course.
09:17:45 <Deewiant> fizzie: Scratch that, I was doing it wrong.
09:19:44 <fizzie> Deewiant: http://sprunge.us/hfiP -- it even prints as -nan.
09:20:02 <Deewiant> Yes, I was doing it wrong.
09:20:39 <Deewiant> Using 'unsigned long long' like that is also doing it somewhat wrong, though it doesn't seem to matter there.
09:21:19 -!- GreyKnight has quit (Quit: bbl).
09:22:39 <fizzie> What else except the usual things (not exactly defined representations for either unsigned long long or double) is wrong with it?
09:23:17 <fizzie> (I would've used uint64_t but was writing it in cat > tmp.c and hadn't remembered to #include <stdint.h>.)
09:24:09 <Deewiant> Hmm, I thought at least C11 would've mandated IEEE 754 but I guess not.
09:24:26 -!- epicmonkey has joined.
09:24:50 <Deewiant> In that case it's a crapshoot anyway. I thought 'double' would be guaranteed 64 bits.
09:24:55 -!- epicmonkey has quit (Remote host closed the connection).
09:25:32 <fizzie> I *could've* added #ifndef __STDC_IEC_559__ #error "uh what are you *on* there?" #endif to it.
09:26:12 <Deewiant> You still need uint64_t, making sure its sizeof is 8 and CHAR_BIT is 8.
09:26:37 <fizzie> I don't think I need those last two.
09:26:42 <Deewiant> Or I guess you can be CHAR_BIT agnostic as long as uint64_t is an exact multiple of it.
09:26:54 <Deewiant> Doesn't that avoid padding bits? Or are those included in CHAR_BIT.
09:27:16 <fizzie> uint64_t cannot have padding.
09:27:31 <Deewiant> Oh, that's mandated? Well that's convenient.
09:27:37 <fizzie> If it exists at all, it must be a multiple of CHAR_BIT.
09:27:44 <fizzie> It's not mandated to exist, though. :p
09:28:02 <Deewiant> Right, but if it doesn't it's a compilation error so that's fine.
09:28:24 <fizzie> I also don't think even __STDC_IEC_559__ mandates that byte order needs to be the same for 'double' and 'uint64_t', which would be an issue for the few systems where CHAR_BIT < 64.
09:28:51 -!- Yonkie has quit (Ping timeout: 276 seconds).
09:30:00 <Deewiant> 'double' in that case has a known order, though, so you just need to write your integer rightly.
09:31:56 <fizzie> (Two's-complement is also mandated for the fixed-width intN_t, for the record.)
09:34:50 -!- Yonkie has joined.
09:35:27 <fizzie> "The coin toss is the most platykurtic distribution" -- that's an awesome word.
09:35:57 <Deewiant> Platykurtic vs. leptokurtic.
09:37:14 <fizzie> Platykurtic platypus. (An Ubuntu code name?)
09:37:27 <Yonkie> vote for ubuntu, let's submit idea to them
09:37:38 <fizzie> Maybe for their next go-around; they already did a P.
09:40:15 <fizzie> Hrm. I reloaded the webmail, and the page was replaced by an otherwise-empty page except for the words "The custom error module does not recognize this error."
09:44:51 <Sgeo|web_> Help I slept for around 8 hours during the day and I can't seem to fall asleep now
09:45:10 <Sgeo|web_> Although I have a 4 page essay due on Tuesday and had plans to spend Monday working on it
09:48:04 -!- oerjan has quit (Quit: Sleep? What a ridiculous concept.).
09:55:52 -!- epicmonkey has joined.
09:57:06 -!- epicmonkey has quit (Remote host closed the connection).
10:07:31 <hagb4rd> sgeo: you could start working on it now, till you get tired
10:08:05 <hagb4rd> the best method to get sleepy is still to try staying awake
10:12:31 -!- epicmonkey has joined.
10:13:00 -!- epicmonkey has quit (Remote host closed the connection).
10:29:06 -!- micahjoh1ston has joined.
10:29:09 -!- nortti_ has joined.
10:29:23 -!- elliott_ has joined.
10:31:51 -!- augur_ has joined.
10:34:02 -!- augur has quit (*.net *.split).
10:34:02 -!- ion has quit (*.net *.split).
10:34:02 -!- elliott has quit (*.net *.split).
10:34:02 -!- nortti has quit (*.net *.split).
10:34:02 -!- micahjohnston has quit (*.net *.split).
10:41:20 -!- ion has joined.
10:43:07 -!- epicmonkey has joined.
10:44:57 -!- epicmonkey has quit (Remote host closed the connection).
10:49:00 -!- copumpkin has joined.
10:55:04 -!- epicmonkey has joined.
11:06:02 -!- evitable has joined.
11:11:50 -!- yiyus_ has changed nick to yiyus.
12:06:54 -!- Jafet has quit (Ping timeout: 240 seconds).
12:07:22 -!- Jafet has joined.
12:19:13 <fizzie> @tell zz038 Remember when you wanted { union { float f; unsigned u; }; f = 1.0f; dosomething(u); } be valid C, or at least a GCC extension? Turns out it in fact *is* valid C++.
12:19:13 <lambdabot> Consider it noted.
12:20:06 <shachaf> fizzie: It is?
12:21:16 <fizzie> It is.
12:21:28 -!- nortti_ has changed nick to nortti.
12:22:09 <fizzie> "An union of the form [thing like that] is an anonymous union. -- For the purposes of name lookup, the members of the anonymous union are considered to have been defined in the scope in which the anonymous union is declared."
12:22:14 <fizzie> (C++03.)
12:22:52 <shachaf> Oh, I thought you meant using one value of the union after setting a different one.
12:23:06 <fizzie> It even gives an example of void f() { union { int a; char *p; }; a = 1; p = "Jennifer"; } "Here a and p are used like ordinary (nonmember) variables, but since they are union members they have the same address."
12:24:00 <fizzie> No, just the scoping; but using one value after setting a different one is legal C99 and C11, assuming reinterpreting the representation does not end up with a trap representation. (Don't know about C++ in that case.)
12:27:00 <fizzie> (Ref. C11 footnote 95: "If the member used to read the contents of a union object is not the same as the member last used to store a value in the object, the appropriate part of the object representation of the value is reinterpreted as an object representation in the new type as described in 6.2.6 (a process sometimes called ‘‘type punning’’). This might be a trap representation." ...
12:27:06 <fizzie> ... Footnotes are non-normative, but the footnote is the only thing they added (in C99 TC-something, I think), so clearly they believe it's already deducible from the normative text. C99 did remove the explicit mention of it being undefined that C89 had.)
12:27:52 <shachaf> Oh, C89 is the one true C.
12:29:10 <fizzie> shachaf: http://www.iso.org/iso/catalogue_detail.htm?csnumber=17782 "Status: X Withdrawn"
12:29:35 <nortti> shachaf: no, k&r c is
12:30:13 -!- SingingBoyo has quit (Ping timeout: 248 seconds).
12:31:18 -!- epicmonkey has quit (Ping timeout: 264 seconds).
12:33:03 <fizzie> Maybe I should clarify, though.
12:33:08 <fizzie> @tell zzo38 That is, the name lookup is done the way you wanted, with the members being considered defined in the scope in which the union is declared. I have not checked whether C++ makes it undefined to read an union member that was not the one last written to.
12:33:09 <lambdabot> Consider it noted.
12:38:06 -!- Sgeo|web has joined.
12:41:18 -!- Sgeo|web_ has quit (Ping timeout: 245 seconds).
12:45:47 -!- epicmonkey has joined.
12:54:57 -!- sebbu has quit (Read error: Connection reset by peer).
12:55:26 -!- sebbu has joined.
12:56:57 -!- boily has joined.
13:01:32 -!- carado has joined.
13:33:59 -!- ion has quit (Ping timeout: 240 seconds).
13:34:42 -!- ion has joined.
13:50:40 -!- variable has quit (Ping timeout: 240 seconds).
13:51:09 -!- variable has joined.
14:01:35 -!- augur_ has quit (Remote host closed the connection).
14:29:18 -!- epicmonkey has quit (Ping timeout: 252 seconds).
14:32:19 -!- augur has joined.
14:55:16 -!- evitable has quit (Ping timeout: 245 seconds).
15:24:23 -!- FreeFull has joined.
15:27:14 -!- Taneb has joined.
15:27:40 <Taneb> Help
15:27:40 <Taneb> Sugar
15:27:40 <Taneb> Aaah
15:27:45 <monqy> hi
15:31:39 -!- ogrom has joined.
15:31:57 <Taneb> But yeah, I've had about 120% of my recommended daily sugar intake in the past 5 minutes
15:34:14 <Taneb> And I'm not good at sugar
15:34:28 <kmc> why did you do a thing like that
15:34:52 <Taneb> I really fancied some coke
15:35:16 <Taneb> And now this 1.5L bottle is 2/3 empty
15:35:31 * Fiora prepares the insulin shots
15:37:10 <Taneb> I probably ought to modernize the family-tree library I wrote
15:37:57 <Taneb> It uses data-lens
15:39:42 <Taneb> Except I don't have Cabal here
15:40:26 <fizzie> I've heard there is no cabal.
15:40:57 <Taneb> Which will certainly explain why it isn't here
15:41:10 <Taneb> Oh no
15:41:17 <Taneb> It's going to get creepy here soon
15:41:26 <Taneb> Like, deserted school creepy
15:43:16 -!- mroman has quit (Ping timeout: 240 seconds).
15:43:19 -!- Sgeo|school has joined.
15:43:23 -!- mroman has joined.
15:43:35 <Sgeo|school> I'm suddenly having visions of code I write being used by tryclj.com
15:44:07 <kmc> Sgeo|school joins and immediately says something about clojure
15:44:08 <kmc> take a shot
15:44:23 <Taneb> kmc, but I've already had too much coke!
15:44:30 <Taneb> And I don't have a shot glass
15:44:36 <kmc> alcohol balances out sugar/caffeine, everyone knows that
15:44:42 <kmc> [nb: not actually true]
15:46:12 <Fiora> if my experience generalizes I can imagine you conking out in about 1 hour :P
15:46:24 <Fiora> (due to sugar)
15:46:42 <Taneb> Okay, that will give me 17 minutes to wake up again
15:47:15 -!- elliott_ has changed nick to elliott.
15:49:54 <elliott> Gregor: hi, ping
15:51:24 -!- Sgeo|school has quit (Quit: Page closed).
15:53:50 -!- elliott has set topic: apparently people did dumb things to the topic so here's a new one http://codu.org/logs/_esoteric/.
16:00:36 -!- FreeFull has set topic: apparently people did dumb things to the topic so here's a new one | Why not just have +t | http://codu.org/logs/_esoteric/.
16:07:52 -!- elliott has set topic: apparently people did dumb things to the topic so here's a new one http://codu.org/logs/_esoteric/.
16:08:18 <elliott> `run echo -e '\00314test'
16:08:20 <HackEgo> ​4test
16:08:26 <elliott> `run echo -e '\003 14test'
16:08:27 <HackEgo> ​ 14test
16:08:35 <elliott> `run echo -e '\e14test'
16:08:36 <HackEgo> ​14test
16:08:39 <elliott> hm what is ^C
16:09:33 <monqy> 3 according to a thing i found online
16:11:06 <elliott> how'd i do \003 without the 1 getting included after tho
16:11:10 <elliott> if only this was haskell and i had \&
16:11:27 <monqy> oh
16:12:23 <monqy> `run echo -e '\000314test'
16:12:24 <HackEgo> test
16:12:30 <elliott> cheating
16:12:31 <elliott> & thx
16:16:27 <Fiora> http://www.extremetech.com/computing/142881-ibm-creates-first-cheap-commercially-viable-silicon-nanophotonic-chip hmm, nanophotonics
16:17:33 <elliott> > 1 :: (Int,Int)
16:17:34 <lambdabot> No instance for (GHC.Num.Num (GHC.Types.Int, GHC.Types.Int))
16:17:34 <lambdabot> arising fro...
16:17:51 <monqy> was did there used to be an instance
16:18:36 <elliott> yes
16:21:44 <FreeFull> > (1,1) :: (Int,Int)
16:21:46 <lambdabot> (1,1)
16:23:10 <monqy> yes
16:26:08 <elliott> `run hg diff -c 1002 | patch
16:26:12 <HackEgo> patching file quotes \ Reversed (or previously applied) patch detected! Assume -R? [n] \ Apply anyway? [n] \ Skipping patch. \ 1 out of 1 hunk ignored -- saving rejects to file quotes.rej
16:26:22 <elliott> right
16:26:24 <elliott> `rm quotes.rej
16:26:27 <HackEgo> No output.
16:26:28 <elliott> `run hg diff -c 1002 | patch -R
16:26:33 <HackEgo> patching file quotes
16:26:47 <elliott> cool it works
16:26:50 <elliott> `hg log
16:26:51 <HackEgo> changeset: 1017:b1a219757d6a \ tag: tip \ user: HackBot \ date: Mon Dec 10 16:26:33 2012 +0000 \ summary: <elliott> hg diff -c 1002 | patch -R \ \ changeset: 1016:e960263d7a5f \ user: HackBot \ date: Mon Dec 10 16:26:27 2012 +0000 \ summary: <elliott> rm quotes.rej \ \ changeset: 1015:1cef8e6fa7e9
16:26:58 <elliott> cool it
16:26:59 <elliott> "works"
16:31:16 <Gregor> elliott: Why ping
16:31:25 <elliott> Gregor: I... forget.
16:31:36 <elliott> Gregor: oh right I was going to ask if hackego could support ansi colours but it already does???
16:31:43 <Gregor> It does, yes.
16:31:54 <Gregor> The only characters it rejects now are \x00 and \x01.
16:32:05 <Gregor> Err, wait X-D
16:32:06 <elliott> you should remove the dumb botloo pprefix thing imho
16:32:12 <Gregor> I keep forgetting what we're talking about.
16:32:26 <Gregor> ANSI colors it doesn't filter, but it's not like they'll work for most IRC clients.
16:32:31 <Gregor> mIRC colors work too.
16:32:49 <Taneb> Don't remove the botloo prefix!
16:32:59 <Taneb> We'll end up with botpoo all over the channel
16:34:17 <monqy> :[
16:34:36 -!- Arc_Koen has joined.
16:35:12 <elliott> Gregor: right I meant mIRC
16:35:17 <elliott> Gregor: P.S. please remove the botloop thing it's so dumb
16:49:33 <Gregor> Never.
16:49:53 <elliott> ok but how about change your mind
16:50:00 <Gregor> Mmmmm
16:50:14 <Gregor> I'll CONSIDER scheduling a change of heart.
16:55:02 <elliott> thanks
17:04:13 -!- Taneb has quit (Ping timeout: 245 seconds).
17:06:02 -!- sebbu has quit (Read error: Connection reset by peer).
17:06:29 -!- sebbu has joined.
17:10:09 -!- nooga has quit (Ping timeout: 252 seconds).
17:23:00 -!- GreyKnight has joined.
17:44:50 <GreyKnight> headache + train with screeching brakes = headache^2
17:50:37 -!- nooga has joined.
17:58:11 -!- nooga has quit (Ping timeout: 252 seconds).
18:02:17 -!- Bike has joined.
18:34:23 <hagb4rd> hm..headache + train with no screeching brakes = no head
18:35:08 <GreyKnight> On the plus side, no headache anymore
18:35:15 <hagb4rd> right
18:36:30 <hagb4rd> but i guess i know what you're talking about.. have some trails directly in front of my window
18:36:43 <hagb4rd> just waiting for the right train to jump on
18:36:59 <hagb4rd> someone elses train
18:39:44 -!- Phantom_Hoover has joined.
18:45:28 <GreyKnight> @quote
18:45:28 <lambdabot> <cbeust_> says: Looks more like lenses reinvented Java Beans.
18:45:56 <elliott> what
18:45:59 <GreyKnight> HaskellBeans :-D
18:46:03 <elliott> @forget <cbeust_> Looks more like lenses reinvented Java Beans.
18:46:03 <lambdabot> Done.
18:46:13 <GreyKnight> D-:
18:46:27 <nortti> does anyone here know where to find gcc 0.9 or 1.0?
18:47:18 <GreyKnight> elliott, can you explain lenses?
18:47:45 <elliott> depends on how much haskell you know
18:47:58 <GreyKnight> All I know is they have something to do with getting a stab
18:48:10 <GreyKnight> I am not too great with Haskell (yet)
18:51:13 -!- Phantom__Hoover has joined.
18:51:36 <elliott> do you know about functors and applicative functors
18:54:02 <shachaf> You don't need to "know about functors and applicative functors" to understand lenses.
18:54:16 <elliott> you need to know about fucntors and applicative functors to understand lens
18:54:18 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
18:54:24 <elliott> maybe GreyKnight was referring to lenses in general though
18:55:41 <GreyKnight> Hm I did not know there was a difference
18:56:05 <GreyKnight> Functors I know about
18:56:32 <GreyKnight> I will take lenses in general please!
18:56:36 <elliott> well you can think of a lens from a to b as a getter and setter pair
18:56:41 <elliott> (a -> b, a -> b -> a)
18:56:46 <elliott> for instance
18:57:03 <elliott> you have (a,b) -> b, (a,b) -> b -> (a,b)
18:57:08 <elliott> get (a,b) = b
18:57:13 <elliott> set (a,b) b' = (a,b')
18:57:24 <elliott> so you have a SimpleLens (a,b) b
18:57:47 <elliott> that's all there is to regular old lenses, really
18:57:57 <elliott> plus some obvious laws like get (set x y) = y
18:58:14 <elliott> you can, e.g. create a lens for each field of a record, which can both get the value in that field from a record and set it to something else
18:58:26 <elliott> and you can compose them
18:58:29 <GreyKnight> Does the name "lens" have some significance I'm not grasping?
18:58:38 <elliott> so for instance
18:58:46 <elliott> data SomeRecord = SomeRecord { a :: Int, b :: Int }
18:58:53 <elliott> er
18:58:56 <elliott> data SomeRecord = SomeRecord { a :: (Int,Int), b :: Int }
18:59:25 <elliott> let's say you have a lens for the a field of that record (here you have get rec = a rec; set rec newA = rec { a = NewA })
18:59:36 <elliott> you can compose that with the lens for the second element of a tuple (which I showed above)
19:00:05 <elliott> and get the resulting lens acts like: get (SomeRecord { a = (1,2), b = 3 }) --> 2
19:00:19 <elliott> set (SomeRecord { a = (1,2), b = 3 }) 4 = SomeRecord { a = (1,4), b = 3 }
19:00:42 <elliott> you can just use this representation: data Lens a b = Lens { get :: a -> b, set :: a -> b -> a }
19:00:52 <elliott> then get :: Lens a b -> a -> b, set :: Lens a b -> a -> b -> a
19:01:18 <GreyKnight> And presumably you could construct lenses to access the other Ints in SomeRecord in the obvious fashion
19:01:23 <elliott> yes
19:01:26 <shachaf> GreyKnight: It lets you "focus" on some particular part of a structure.
19:01:38 <GreyKnight> Ah, bad puns. Okay.
19:01:44 <hagb4rd> or just any computed function of that field..right?
19:01:50 <elliott> compose :: Lens a b -> Lens b c -> Lens a c; compose lens1 lens2 = Lens { get = \x -> get lens2 (get lens1 x); set = \x y -> ...try writing this... }
19:01:57 <elliott> (I want you to try writing it because I'm too lazy to.)
19:02:03 <kmc> shachaf: my new laptop has shipped after all
19:02:08 <kmc> and the charge is back on the card
19:02:10 <kmc> so no free laptop :(
19:02:25 <elliott> Anyway the lens library itself uses the same basic ideas, but it uses a fancier representation that lets you write a lot of operations on them more nicely and compose them more conveniently and stuff.
19:02:48 <elliott> But lenses in general are very simple, you can just think of them as a getter-setter pair.
19:03:06 <GreyKnight> Prisms are a related concept, right?
19:03:14 <elliott> yes
19:03:22 <GreyKnight> (presumably more punnage)
19:03:59 <elliott> if a lens is: (a -> b, a -> b -> a), you can think of a prism as: (b -> a, a -> Maybe b)
19:04:05 <elliott> they're actually more closely related than it looks
19:04:17 <elliott> but showing that involves slightly more complicated types
19:04:33 <elliott> a prism is basically a first class "constructor"... you can put a value in a constructor and possibly take it out
19:04:37 <elliott> so for
19:04:37 <elliott> data Foo = A Int | B String
19:04:42 <elliott> you have Prism Foo Int, Prism Foo String
19:04:53 <elliott> (A, \x -> case x of A y -> Just y; _ -> Nothing)
19:04:59 <elliott> and (B, \x _> case x of B y -> Just y; _ -> Nothing) respectively
19:06:38 <GreyKnight> Hm how come prisms use a -> Maybe b whereas lenses use a -> b ?
19:06:43 <GreyKnight> Or wait
19:07:18 <elliott> you can't really see that they're related with those definitions
19:07:41 <GreyKnight> Lost my train of thought, stupid headache
19:08:27 <hagb4rd> yea, it's still not clear but thank for the kickstart elliott
19:09:05 <hagb4rd> at least i have basic idea now
19:09:30 <GreyKnight> Also they really do look like Haskell's answer to JavaBeans :-)
19:10:01 -!- nooga has joined.
19:10:50 <hagb4rd> they seem to be the fashion of this winter
19:11:08 <hagb4rd> everyone is talking about
19:11:19 <kmc> tomorrow is the ceremonial ground breaking on the boston Green Line Extension
19:11:45 <kmc> they are going to spend 7 years and one billion dollars to extend an existing light rail line about 6km along an existing rail corridor
19:12:03 <kmc> assuming there are no additional delays or cost overruns, of course
19:13:11 <GreyKnight> Sounds legit
19:14:24 -!- monqy has quit (Quit: hello).
19:14:53 -!- GreyKnight has changed nick to apparently.
19:15:13 -!- apparently has changed nick to GreyKnight.
19:17:24 -!- nooga_ has joined.
19:20:30 <hagb4rd> fashion
19:20:43 <hagb4rd> oops
19:20:54 -!- nooga has quit (Ping timeout: 256 seconds).
19:21:01 <hagb4rd> dumidumidum *sing
19:21:19 <GreyKnight> hagb4rd is wearing this season's Lens, a stunning little ensemble with functor trim
19:21:40 <GreyKnight> Give us a twirl
19:21:52 <hagb4rd> damn
19:21:57 <hagb4rd> i'm looking good
19:26:00 -!- nooga_ has quit (Ping timeout: 256 seconds).
19:26:00 <GreyKnight> Hm we have Lens and Prism... what about Mirror?
19:26:23 <GreyKnight> It could implement reflection-like abilities :-)
19:26:29 <shachaf> There is Iso.
19:27:00 * elliott sort of likes the idea of renaming Iso to Mirror
19:27:12 <elliott> it avoids the abbreviation and analogises well with Lens/Prism
19:27:26 <hagb4rd> indeed
19:28:54 <hagb4rd> we should talk with the marketing guys to change this
19:34:06 <hagb4rd> anyway..you may swat me hard, i'm still not really convinced haskell could be used to implement bigger software projects.. at least while not employing a bunch of scientists as programmers
19:34:25 <kmc> i think the 'lens' logo should be http://upload.wikimedia.org/wikipedia/en/thumb/3/3b/Dark_Side_of_the_Moon.png/220px-Dark_Side_of_the_Moon.png
19:35:45 <elliott> Haskell is already used to implement bigger software projects by non-scientists though
19:35:53 <elliott> so your claim is too absurd to even need rebutting
19:38:41 <hagb4rd> the reference list litarature is a small time
19:41:10 <hagb4rd> elliott are you a student of computer science or sth?
19:41:18 <arcatan> personally, i'm not really convinced c++ could be used to implement bigger software projects...
19:41:40 <kmc> i'm not really convinced that bigger software projects can be implemented
19:41:48 <elliott> hagb4rd: depends on your definition of "student"
19:42:01 <arcatan> on second thought, yes, kmc, i'm not convinced of that either
19:42:04 <elliott> I think the idea of implementing bigger software projects in C is more unthinkable than doing so in Haskell anyway, and evidently that happens
19:42:10 <elliott> oh arcatan beat me to it
19:42:14 <elliott> "C/C++"
19:43:58 <hagb4rd> no i'm really not into some religious war or sth..it's just that 70 to 80 percent of software-costs is mostly spent on maintance
19:44:18 <hagb4rd> and the code i've seen so far seems not be easy maintained
19:44:49 <elliott> and your average Haskell program can well be more easily maintainable than your average C program, assuming competent people for both tasks
19:45:16 <elliott> it is very easy to get lots of things wrong in C that just aren't possible to get wrong in Haskell, and experts get these things wrong all the time
19:45:17 <hagb4rd> ight
19:45:22 <elliott> hence the existence of segfaults for reasons other than compiler bugs
19:45:22 <olsner> this discussion is quite elucidating
19:45:40 <elliott> quite hallucinating
19:48:27 <hagb4rd> yep the experts you are talking about are at first not easy to get, and for this reason not very cheap.. i guess the technique u choose to implement a software solution cannot be decided in general for all time
19:49:06 <hagb4rd> would you agree so far
19:50:10 <kmc> it's not impossible to get those things wrong in haskell either
19:50:31 <kmc> but you are only exposed to those errors in a small subset of the code you write
19:50:42 <elliott> kmc: well it is impossible for a Haskell 2010 program, compiled with a non-buggy compiler, that does not use the FFI, to segfault
19:50:59 <kmc> sure but real programs use the FFI
19:51:03 <elliott> admittedly, those conditions are not usually true
19:51:12 <elliott> but it's nothing compared to the fact that a C program uses the FFI every line :p
19:52:21 <Deewiant> It is quite possible for said Haskell 2010 program to terminate saying e.g. "head: empty list" or "fromJust: Nothing"
19:52:46 <Deewiant> Which is hardly better than a segfault
19:52:53 <Gregor> This is why I think JavaScript made a mistake in not letting you dereference or call undefined.
19:52:54 <kmc> it is better
19:53:01 <elliott> Deewiant: that is better in several ways
19:53:10 <Gregor> If they'd just made those return undefined, then it would barrel on endlessly no matter what you did :)
19:53:11 <kmc> a segfault is just a lucky outcome of undefined behavior
19:53:15 <elliott> for one, there is no security risk
19:53:22 <elliott> at least not the kind segfaults imply
19:53:41 <Deewiant> Right, that can matter in some contexts
19:53:47 <elliott> for two, you know that program will always output that under those conditions -- it is "reasonable behaviour", not just stuff going wrong
19:54:01 <elliott> for three you get a useful error message :P
19:54:16 <elliott> of course, that doesn't mean partial functions are a good thing
19:54:22 <elliott> but they're a lot less bad of a thing
19:54:39 <kmc> it's weird to pick Haskell as the exemplar memory safe language
19:54:56 <Deewiant> Re. two: in practice you usually know the other program will always segfault as well :-P
19:55:02 <elliott> I was just using memory unsafety as an obvious, universal example of something C does really badly
19:55:03 <kmc> no
19:55:05 <kmc> no no no no no no
19:55:09 <kmc> Deewiant: no no no no no no no
19:55:27 <Deewiant> kmc: Do elaborate
19:55:34 <hagb4rd> last but not least if youthe everyday software programming is that sophisticated.. (it's almost boring) as many of
19:55:34 <arcatan> i wonder what are the biggest headaches experienced by the real maintenance programmers working on e.g. C++ or Java projects
19:55:37 <olsner> elliott: C does unsafety very *well*, you mean?
19:55:40 <kmc> a segfault is a lucky outcome of undefined behavior
19:55:43 <kmc> sometimes you don't get lucky
19:55:45 <elliott> olsner: good point
19:55:48 <arcatan> and how much programming language features affect that
19:56:08 <kmc> sometimes you get slightly wrong results
19:56:12 <kmc> sometimes you get permanent data corruption
19:56:17 <kmc> sometimes you get exploitable security holes
19:56:19 <Deewiant> kmc: In practice if it segfaulted once it usually will segfault the second time as well
19:56:27 <Deewiant> Or I don't know, usually in my programs
19:56:28 <kmc> C programmers who treat segfaults as the worst case outcome scare the fuck out of me
19:56:44 <kmc> sure "usually" meaning 99% of the time
19:56:44 <hagb4rd> lol
19:56:50 <kmc> but now run that program in production for 10 years
19:56:55 <kmc> and also expose it to adversarial attackers
19:57:02 <kmc> some weird shit will happen
19:57:12 * elliott bets that 99% is more like 50% in the presence of pthreads.
19:57:12 <Deewiant> That's a situation I wouldn't want to put a C program in
19:57:30 <kmc> so you would not use C in production or for anything with security requirements
19:57:30 <elliott> Deewiant: sounds like an argument Haskell's failure conditions are better
19:57:31 <Deewiant> Re. three: there are more tools for finding the cause of segfaults than for "fromJust: Nothing" :-P
19:57:40 <Deewiant> elliott: I'd say it's situational
19:57:59 <Deewiant> Sometimes you care about not segfaulting, sometimes it's not that big a deal
19:58:11 <Deewiant> not having the possibility of segfault*
19:58:20 <kmc> again "segfault" is the symptom and it's the mildest of all symptom
19:58:31 <Deewiant> I'm not disagreeing with you on that
19:58:33 <elliott> if a segfault isn't a problem I don't see how head [] can be
19:58:35 <kmc> it's like if i said it's ok to get AIDS because having a cough is not so bad
19:58:48 <Deewiant> Non sequitur
19:58:53 <kmc> hella sequitur
19:58:56 <hagb4rd> exactly.. i'm sure haskell has its advatages.. in many use cases
19:59:09 <elliott> can we just say "invalid memory access" instead of "segfault" instead
19:59:19 <Deewiant> elliott: I'd rather see a C segfault than a Haskell 'head []' when developing something unless GHC's debugging facilities have improved to the point that I can find the latter quickly
19:59:30 <elliott> you can use -xc to get a backtrace these days
19:59:43 <Deewiant> ghc: unrecognised flags: -xc
19:59:44 <Deewiant> But okay
19:59:48 <elliott> another point is that it's a lot easier to write Haskell that doesn't use partial functions than it is to write a C program that has no risk of segfault
19:59:48 <kmc> it's a RTS flag
20:00:04 <Deewiant> ghc: the flag -xc requires the program to be built with -prof
20:00:16 <Deewiant> That's a bit annoying but oh well
20:00:24 <kmc> again it's weird that this discussion of memory safety is "C vs Haskell" and not "C vs almost every other language"
20:00:36 <elliott> well it was a C vs. Haskell thing
20:00:42 <kmc> i agree that GHC's debugging and error-finding tools are shitty
20:00:44 <elliott> just the subject ate the ject
20:00:53 <elliott> originally said the subsubject ate the subject but decided that was redundant
20:00:55 <Deewiant> elliott: And yes, it is, but it's not easy :-P Now you have to be very careful about all library code etc
20:00:58 <arcatan> if we're still talking about long-term software projects started today, I don't think that C will be the language of choice for many of them
20:01:09 <kmc> a lot of Haskell tools suck even though these problems should be easier in Haskell
20:01:12 <kmc> just because it is a niche language
20:01:12 <elliott> Deewiant: I'm like 10x more paranoid of C libraries than Haskell libraries
20:01:57 <Deewiant> kmc: Right, much (all? I forget) of my argument regards the tooling
20:02:14 <Deewiant> elliott: Sure, I didn't say C is any easier :-)
20:02:51 -!- ogrom has quit (Read error: Connection reset by peer).
20:04:13 -!- Sgeo|web has quit (Ping timeout: 245 seconds).
20:04:32 <elliott> anyway I would rather maintain a badly-written Haskell program than a badly-written C program at the very least
20:04:51 <hagb4rd> you're hired!
20:05:12 <kmc> i don't necessarily agree with that elliott
20:05:32 <Deewiant> If they're equally large, I'm not so sure either
20:05:59 <kmc> my idea of a badly-written Haskell program is that 10 people worked on it, and each one thought they were super clever, but also fundamentally misunderstood at least one aspect of the language
20:06:13 <kmc> and so it will be full of excessively clever things that don't quite make sense and don't fit together
20:06:27 <kmc> in other words more like C++ than C
20:07:12 <kmc> C has a lot of problems and badly written C code is a nightmare, but it doesn't have this problem in particular
20:07:17 <kmc> it does depend on context though
20:07:41 <kmc> if security is extremely important, and the program will be exposed to lots of malicious input, i will still prefer the badly written haskell code
20:07:49 <elliott> I think it's generally easier to make a Haskell program less dumb.
20:07:58 -!- fungot has quit (Ping timeout: 246 seconds).
20:08:04 <elliott> if security is extremely important I'd rather not be maintaining the program whatever language it's in :P
20:08:06 <kmc> or else treat the C program as untrusted and heavily sandbox it
20:08:38 <hagb4rd> it's that code should be understood and basically easy read if possible.. so putting 10 lines of code into one that makes you look pretty clever is the one of the worst case scenarios when it comes to maintenance
20:08:53 <hagb4rd> (in real life)
20:09:58 <kmc> yeah
20:10:09 <kmc> and haskell doesn't have to be written that way, but it often is
20:10:20 <kmc> because most people writing haskell are excited beginners and not seasoned professionals
20:10:58 -!- lambdabot has quit (Ping timeout: 245 seconds).
20:11:32 <elliott> well you can do exactly the same in C
20:11:33 <kmc> however 1 really clever function that gets used 50 times is better than 50 separate simple functions
20:11:46 <elliott> and I'd prefer to refactor the Haskell
20:11:54 <hagb4rd> and i admit my first impression of haskell was that there are ways to express things shorter without loosing readability
20:12:51 <hagb4rd> especially handling data stuff
20:14:06 <hagb4rd> thanks to the guys that implemented the lambda calculus in c#.. that would be the next i miss in c
20:15:00 <hagb4rd> i'm sure the one thing elliott hates more than c is c#
20:15:02 <hagb4rd> :p
20:15:09 <kmc> huh
20:15:14 <kmc> C# is a pretty good language
20:15:16 <kmc> it is memory safe
20:15:35 <kmc> it supports many styles well, including expressive functional programming
20:16:07 <kmc> it has LINQ
20:16:10 <hagb4rd> yea
20:16:15 <hagb4rd> linq is great
20:16:28 <hagb4rd> and mono is evolving pretty well so far
20:16:52 <kmc> that's good
20:20:30 -!- nooga has joined.
20:40:43 -!- GreyKnight has quit (Quit: You hit the grey light. It explodes!).
20:44:12 -!- boily has quit (Read error: Connection reset by peer).
20:49:53 -!- sebbu2 has joined.
20:49:53 -!- sebbu2 has quit (Changing host).
20:49:53 -!- sebbu2 has joined.
20:50:11 -!- boily has joined.
20:50:17 * hagb4rd puts some self-made xmas cookies into the channel
20:53:06 -!- variable has quit (Quit: I found 1 in /dev/zero).
20:53:37 -!- sebbu has quit (Ping timeout: 265 seconds).
20:53:43 <hagb4rd> eat!
20:53:48 <hagb4rd> they are not poisoned
20:58:20 -!- boily1 has joined.
21:01:13 -!- augur has quit (Remote host closed the connection).
21:01:41 -!- boily has quit (Ping timeout: 255 seconds).
21:01:58 -!- boily1 has changed nick to boily.
21:03:31 -!- Sgeo|web has joined.
21:05:24 -!- variable has joined.
21:11:57 <kmc> "Apple Maps 'is life-threatening' to motorists lost in Australia heat"
21:12:02 <kmc> -- BBC
21:14:22 <elliott> it's not life-threatening, just 'life threatening'
21:17:04 <fizzie> A Finnish paper had that (well, similar) headline today too.
21:17:15 <fizzie> Guns don't kill people, Apple Maps kill people.
21:17:24 <olsner> Australia kills people
21:17:24 <fizzie> (That wasn't the headline.)
21:18:32 <elliott> I think fizzie should write the headlines
21:19:05 -!- ais523 has joined.
21:20:14 <fizzie> We just bought Helsinki-Imatra-Helsinki train tickets (that's about 250 km one way) for two, and they cost substantially less than the local regional traffic tickets we'll need to get to the Helsinki Central Railway Station.
21:20:45 <kmc> heh
21:21:06 <kmc> with ryanair and such, you can spend less on a plane ticket than on getting to the airport :)
21:21:13 <kmc> i've also taken a $2.50 metro ride to a $1 intercity bus
21:21:24 <fizzie> They're running this "advent calendar" thing where there's every day a new (A, B) pair and a set of particular trains between those points, and it costs fixed 1.50 eur/person.
21:22:05 <fizzie> And of course it's only valid if bought during that day.
21:22:07 <fizzie> (The local traffic trip is something like 3.37 eur or thereabouts when bought with the RFID card dealie.)
21:22:32 <kmc> cool
21:22:53 <kmc> so you have to go on the day of purchase? do they list the city pairs ahead of time?
21:23:35 <fizzie> No, you just have to purchase today; the travel times vary a bit, but for today's deal it was something like January 7th to January 31st.
21:24:09 <fizzie> (And therefore the routes aren't revealed in advance, of course.)
21:24:18 -!- augur has joined.
21:24:52 <Gregor> elliott: Heeeeeeeeeeeeeeeeeeeeeeeey here's a thought.
21:25:04 <elliott> oh god
21:25:05 <Gregor> elliott: http://phantomjs.org/ + some glue code = modern textmode browser.
21:25:09 -!- augur has quit (Remote host closed the connection).
21:25:10 <fizzie> We did have to take the 07:12am train instead of the more human-friendly 10:12am one since the other one was already sold out (it's 11:25pm here so today's deal was quite old), but still.
21:25:15 -!- augur has joined.
21:25:25 <elliott> that was
21:25:33 <elliott> quite far away from any thought I was expecting you to tell me
21:25:48 <kmc> by "local traffic tickets" do you mean a local train or something else?
21:25:50 <elliott> "PhantomJS is an optimal solution for" not sure they know what "optimal" means
21:25:51 <Gregor> elliott: Probably over a year ago we (or perhaps not you at all) were discussing how shitty text mode browsers are ;)
21:25:59 <elliott> it might have been me
21:26:01 <elliott> they are very shitty
21:26:07 <kmc> a beautiful, elegant, awesome browser that celebrates craftsmanship
21:26:16 <elliott> kmc++
21:26:32 <elliott> Wait, what is that referencing? I thought I knew but now I don't.
21:27:35 <olsner> internet explorer, right?
21:28:46 <kmc> https://addons.heroku.com/bonsai
21:29:28 <elliott> nice
21:29:47 <fizzie> kmc: The Helsinki/Espoo/Vantaa/Kauniainen regional area has pretty much just one type of tickets for trains/subway/buses/trams, so I mean those. (There's one price for in-city traffic, and another for the four-city zone... and then it gets more confusing, since the regional traffic... conglomeration sells bus-and-train tickets also for the neighbour municipalities, while the railway company ...
21:29:53 <fizzie> ... sells train-only tickets for those places, with completely different pricing schemas; but that's not really relevant any longer; and anyway who'd want to go there?)
21:30:17 <fizzie> (Uh, and Kauniainen counts as Espoo for the purposes of local traffic, because it's an enclave city kind of thing. Finland's last one, in fact.)
21:30:37 <kmc> ok
21:31:06 <elliott> fizzie: did you count where you'd need to put those ...s
21:31:18 <fizzie> I think by 2015 they have a new thing where they set up new fare zones and forget the actual city boundaries, since they're not terribly logical. (The new zones are roughly circular bands around the Helsinki centrum.)
21:31:24 <fizzie> elliott: No, it was splitlong.pl.
21:31:43 <elliott> fizzie: it does that???
21:31:46 <elliott> that's fancy
21:32:08 <fizzie> Well, it puts what you /set splitlong_line_end to the end, and splitlong_line_start to the start.
21:32:20 <fizzie> But they default to " ..." and "... ". (Or maybe the spaces are implicit.)
21:32:31 <fizzie> (No, they're explicit.)
21:33:12 <fizzie> You could have splitlong_line_end of "\" and splitlong_line_end of "" for a kind of a programmer's approach.
21:34:04 <elliott> splitlong_line_end = "HEY WAIT A SECOND JUST GONNA INSERT A LINEBREAK HERE"
21:34:12 <elliott> splitlong_line_end = "OK AS I WAS SAYING: "
21:34:16 <elliott> er
21:34:22 <elliott> I copied the mistake from fizzie's line
21:35:18 <Gregor> Wow, elliott, that's a HEY WAIT A SECOND JUST GONNA INSERT A LINEBREAK HERE
21:35:23 <Gregor> OK AS I WAS SAYING: great idea.
21:35:47 <fizzie> You want that kind of a loop.
21:36:12 <fizzie> (I don't know what happens if you do set them long enough to result in that.)
21:36:21 <fizzie> (I suspect it's going to explode.)
21:39:36 -!- SingingBoyo has joined.
22:18:36 -!- Nisstyre-laptop has joined.
22:27:39 -!- Gregor has quit (Excess Flood).
22:27:47 -!- Gregor has joined.
22:30:29 -!- boily has quit (Quit: Poulet!).
22:31:49 <kmc> "Sundown is a zero-dependency library composed of 3 .c files and their headers. No dependencies, no bullshit."
22:31:52 <kmc> yeah fuck that "code reuse" bullshit
22:32:13 <kmc> real hackers etc
22:32:39 <elliott> I see kmc has never tried to install an edwardk package
22:34:22 <shachaf> kmc: Does it still depend on a C compiler?
22:34:30 <shachaf> If so I won't use it.
22:34:38 <kmc> Real Hackers can compile C by hand
22:34:40 <ion> kmc: hah
22:34:45 <kmc> otherwise how would you know it's secure?!?!?
22:36:11 <hagb4rd> one more and i start to think it was ironic :p
22:36:23 <shachaf> kmc: Did you hear NumInstances is out of lambdabot?
22:36:57 <kmc> oh?
22:36:58 <kmc> cool
22:37:00 <kmc> story?
22:37:29 <shachaf> It was confusing someone in here.
22:37:32 <shachaf> I told Cale it was confusing.
22:37:35 <shachaf> He took it out.
22:37:40 <kmc> cool!
22:37:52 <shachaf> And now 14:32 <edwardk> man shachaf is the death of fun in #haskell ;)
22:39:46 <olsner> shachaf is the death!
22:42:12 -!- SingingBoyo has quit (Ping timeout: 264 seconds).
22:43:48 <FireFly> Is Caleskell documented anywhere?
22:44:53 <elliott> L.hs
22:44:55 <olsner> documented only in the cries of horrified and confused beginners
22:45:13 <kmc> just avoid lambdabot on Malbolge Mondays
22:45:20 <kmc> when @run runs Malbolge instead of Haskell
22:47:17 <Bike> @run 2+2
22:47:27 <Bike> :(
22:54:56 <olsner> `? finnish
22:54:58 <HackEgo> Finnish suomalaiset ei Perkeleistä on hakkapeliittaan. Ei saa peittää. Parasta ennen!
22:55:16 <shachaf> elliott!!!!!!!!
22:55:21 <shachaf> Did you write the new `quote?
22:55:39 <elliott> $ wc -l qdb.py
22:55:40 <elliott> 120 qdb.py
22:56:01 <shachaf> So?
22:56:03 <shachaf> Upload it!
22:57:44 <olsner> 120 lines! for adding a line of text to a text file?
23:00:38 -!- oerjan has joined.
23:13:26 <oerjan> `addquote <GreyKnight> headache + train with screeching brakes = headache^2 <hagb4rd> hm..headache + train with no screeching brakes = no head <GreyKnight> On the plus side, no headache anymore
23:13:29 <HackEgo> 862) <GreyKnight> headache + train with screeching brakes = headache^2 <hagb4rd> hm..headache + train with no screeching brakes = no head <GreyKnight> On the plus side, no headache anymore
23:20:20 -!- epicmonkey has joined.
23:21:54 <oerjan> `addquote [after discussing Haskell lenses] <hagb4rd> they seem to be the fashion of this winter <<GreyKnight> hagb4rd is wearing this season's Lens, a stunning little ensemble with functor trim
23:21:57 <HackEgo> 863) [after discussing Haskell lenses] <hagb4rd> they seem to be the fashion of this winter <<GreyKnight> hagb4rd is wearing this season's Lens, a stunning little ensemble with functor trim
23:21:58 <oerjan> oops
23:22:00 <oerjan> `revert
23:22:02 <HackEgo> Done.
23:22:18 <oerjan> `addquote [after discussing Haskell lenses] <hagb4rd> they seem to be the fashion of this winter <GreyKnight> hagb4rd is wearing this season's Lens, a stunning little ensemble with functor trim
23:22:21 <HackEgo> 863) [after discussing Haskell lenses] <hagb4rd> they seem to be the fashion of this winter <GreyKnight> hagb4rd is wearing this season's Lens, a stunning little ensemble with functor trim
23:22:36 <elliott> oerjan: "discussing lens", surely.
23:22:41 <elliott> well, I guess it was just lenses in general
23:22:42 <oerjan> OKAY
23:22:45 <elliott> but they're not Haskell-specific!
23:22:57 <hagb4rd> hi oerjan
23:23:06 <oerjan> perhaps that should go in lam... oh it's not here
23:23:10 <oerjan> hi hagb4rd
23:23:30 <oerjan> `delquote 863
23:23:35 <HackEgo> ​*poof* [after discussing Haskell lenses] <hagb4rd> they seem to be the fashion of this winter <GreyKnight> hagb4rd is wearing this season's Lens, a stunning little ensemble with functor trim
23:24:10 <oerjan> `addquote [after discussing lens] <hagb4rd> they seem to be the fashion of this winter <GreyKnight> hagb4rd is wearing this season's Lens, a stunning little ensemble with functor trim
23:24:13 <HackEgo> 863) [after discussing lens] <hagb4rd> they seem to be the fashion of this winter <GreyKnight> hagb4rd is wearing this season's Lens, a stunning little ensemble with functor trim
23:26:59 <Gregor> JEEZ guys, double space.
23:27:01 <Gregor> IT'S IMPORTANT.
23:27:48 <oerjan> <elliott> but it's nothing compared to the fact that a C program uses the FFI every line :p <-- that darn C-to-C ffi, so convenient but dangerous
23:28:21 <oerjan> hm? no double space around [...] in..cisions
23:29:03 <oerjan> hm wrong word.
23:29:29 <elliott> Gregor: that quote follows the standards.
23:29:51 <oerjan> yay!
23:29:55 <olsner> cuts in the quote = incisions, makes sense
23:29:58 * oerjan wasn't entirely sure himself
23:30:29 <Gregor> `echo HALP GUYS I'M TOO FAST
23:30:30 <HackEgo> HALP GUYS I'M TOO FAST
23:30:39 <elliott> Gregor: want me to de-optimise hackego?
23:30:44 <olsner> who cares if it's the right word if it means something vaguely similar to what you mean
23:31:00 <Gregor> It would be cool if UML could be made to blow up if you try to write.
23:31:02 <shachaf> echo 'echo sleep 0.1 >> .bashrc' >> .bashrc
23:31:20 <Gregor> Blow-up-on-write is clearly the best write policy.
23:31:38 <elliott> Gregor: You can do that
23:31:40 <elliott> just use a custom FS
23:31:55 <elliott> shouldn't be very long with FUSE
23:32:18 <elliott> Gregor: in fact you could unionfs the normal FS and a FUSE empty-but-stops-everything-on-any-write FS
23:32:35 <Gregor> 'snot a bad idea.
23:33:05 <Gregor> I'm not sure whether the current slowdown is mostly launching UML or `hg status` though. If it's the former, then there's not much point to piling more on that ;)
23:33:10 <elliott> presumably the latter would send a message to the hackego supervisor stuff
23:33:13 <elliott> which would then kill -9
23:33:31 <elliott> Gregor: well it should be easy to time them with python
23:33:48 <elliott> Gregor: I forget, what does your UML use as init?
23:33:49 <Gregor> But I'm sooooo laaaaazy :(
23:33:56 <Gregor> Its own custom thing.
23:34:07 <Gregor> init just mounts some shit then runs what you asked.
23:34:22 <elliott> Right, I was wondering what the init itself is
23:34:25 <elliott> So I could micro-optimise it
23:34:53 <Gregor> I doubt that it's the problem, probably the kernel is, but: https://bitbucket.org/GregorR/umlbox/src/802cc63695cab6922b1b1f8c7815612c4f8dc3a4/init.c?at=default
23:35:26 <elliott> Gregor: Oh right, you could probably save a good amount of time by stripping down the kernel
23:35:45 <Gregor> ^^´
23:35:52 <Gregor> I was trying to figure out if I can remove the bogomips calculation.
23:35:56 <Gregor> That's pretty retarded and takes time.
23:35:58 <Gregor> Can't find it though.
23:36:04 <Gregor> Or rather, can't find an option for it.
23:38:01 <elliott> Gregor: it occurs to me that you don't necessarily need to use hg status
23:38:12 <elliott> you could compare the dir trees with diff or something
23:38:16 <elliott> I suspect hg status is not super-optimised
23:38:29 <Gregor> Quite probably.
23:38:31 <elliott> `run tree | paste
23:38:36 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.1294
23:38:56 <Gregor> | `-- \357\274\267\357\274\245\357\274\254\357\274\243\357\274\257\357\274\255\357\274\245 lolwut
23:38:57 <elliott> Gregor: in fact... it may be that how UML/UMLBox works means files always change inode on being modified?
23:39:04 <oerjan> fizzie: found fungot failure, fix fast!
23:39:06 <elliott> that would let you check whether anything changed superfast
23:39:27 <Gregor> elliott: I doubt it.
23:39:28 <elliott> Gregor: Why is all the EgoBot stuff in HackEgo...
23:39:34 <Gregor> elliott: I'm working on merging them.
23:39:57 <elliott> You could at least put them in a separate bin directory so the `/! separation could be maintained and `ls bin` didn't give a bunch of crap
23:40:11 -!- fungot has joined.
23:40:21 <Gregor> *waaaah*
23:40:25 <oerjan> fizzie: fabulous!
23:40:27 <Gregor> ^^
23:40:48 <Gregor> (Note: I don't WANT to maintain the `/! separation)
23:41:04 <elliott> well you can still separate the paths
23:41:11 <olsner> how is fungot's twitter stream doing these days?
23:41:11 <fungot> olsner: this is prob a premature question... but what would it do? where were you from?
23:41:14 <Gregor> Yeah, I could.
23:41:19 <fizzie> olsner: Offline. :/
23:41:19 <FireFly> Gregor: maybe that's your unicode goat in UTF-8
23:41:22 <elliott> interps/ too
23:41:30 -!- epicmonkey has quit (Ping timeout: 264 seconds).
23:41:34 <elliott> anyhow
23:41:35 <Gregor> FireFly: 's not that many characters...
23:41:36 <elliott> `run rm paste/*
23:41:37 <Gregor> *bytes
23:41:38 <fizzie> olsner: I keep forgetting to restart the poster script.
23:41:39 <elliott> that should speed things up
23:41:44 <HackEgo> No output.
23:41:44 <Gregor> Heh
23:41:59 <elliott> `revert
23:42:02 <elliott> probably not a good idea
23:42:04 <HackEgo> Done.
23:42:30 <elliott> Gregor: by the way what should I call hg diff -c "$1" | patch -R
23:42:41 <FireFly> Ahaha
23:42:46 <Gregor> elliott: backout?
23:42:49 <FireFly> Gregor: it's WELCOME
23:42:55 <elliott> I was thinking "undo"
23:42:59 <Gregor> FireFly: X-D
23:43:14 <Gregor> elliott: backout is the mercurial name for a similar operation.
23:43:52 <Gregor> `WELCOME FireFly
23:43:54 <oerjan> <elliott> probably not a good idea <-- wait why not
23:44:02 <elliott> oerjan: because logs
23:44:07 <HackEgo> ​/hackenv/bin/perl: 3: Cannot fork
23:44:08 <elliott> Gregor: I bet HackEgo would be faster if it used git
23:44:14 <Gregor> elliott: Quite probably.
23:44:16 <oerjan> elliott: are the logs in paste/ ?
23:44:21 <elliott> Gregor: I like how you broke "perl".
23:44:25 <elliott> With the EgoBot stuff.
23:44:27 <Gregor> elliott: But I'm still not sure if hg is even the slow part.
23:44:30 <Gregor> Ohlol X-D
23:44:33 <Gregor> `run rm bin/perl
23:44:36 <HackEgo> No output.
23:44:40 <Gregor> I was wondering wtf was going on there X-D
23:44:40 <oerjan> oh you mean references from the logs to paste/
23:44:47 <Gregor> `WELCOME FireFly
23:44:53 <Gregor> Perfect.
23:44:55 <FireFly> Oh, thanks
23:45:00 <elliott> `help
23:45:00 <HackEgo> Runs arbitrary code in GNU/Linux. Type "`<command>", or "`run <command>" for full shell commands. "`fetch <URL>" downloads files. Files saved to $PWD are persistent, and $PWD/bin is in $PATH. $PWD is a mercurial repository, "`revert <rev>" can be used to revert to a revision. See http://codu.org/projects/hackbot/fshg/
23:45:03 <FireFly> I'll make sure to check out that wiki
23:45:11 <elliott> Gregor: P.S. nice Unicode failure pls fix?
23:45:23 <Gregor> I don't have any clue why that happened X-D
23:45:29 * elliott thinks rm bin/perl is a bit of an incomplete solution to this problem...
23:45:38 <elliott> I note that this is a good argument for the !/` distinction :P
23:45:43 <Gregor> `url bin/WELCOME
23:45:44 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/bin/WELCOME
23:46:00 <Gregor> Dahell?
23:46:01 <elliott> Gregor: The Unicode failure is on HackEgo's part
23:46:05 <olsner> rm bin/perl must be a step in the right direction though
23:46:08 <elliott> "INFORMA��"
23:46:14 <elliott> You should .decode('utf-8') before length-limiting
23:46:28 <elliott> I guess you need a loop since IRC's bounds are probably byte-based
23:46:31 <Gregor> No, I just want Python to treat it as raw, 8-bit crap.
23:46:31 <olsner> (but beware, there may be more copies of perl)
23:46:46 <elliott> Gregor: ...so you want that to be fucked up?
23:47:04 <Gregor> elliott: Cutting off mid-character is not a significant problem.
23:47:34 <Gregor> OHWAIT is it displaying like that because it cut off mid-character so my client went “ehhhh Latin-1”
23:47:36 <Gregor> X-D
23:48:33 <Gregor> `run WELCOME Gregor | head -c 3
23:48:35 <HackEgo> ​G
23:48:40 <Gregor> Tee hee, tee hee ^^
23:48:52 <olsner> ah, I guess that's why it's broken for me too
23:49:10 <elliott> `run echo $LANG
23:49:11 <HackEgo> No output.
23:49:12 <Gregor> I was kinda hoping that output wouldn't have to be valid UTF-8 though...
23:49:14 <elliott> Gregor: fix that :(
23:49:40 <Gregor> elliott: I will, but not whilst at work.
23:50:02 <Gregor> I'll try to make it so that if it fails to decode as UTF-8, it just does bytewise limiting.
23:50:31 <elliott> by "that" I meant LANG being unset
23:50:37 <Gregor> Oh
23:50:43 <Gregor> LANGuage is for losers though.
23:50:51 <elliott> it'd fix the head -c 3 thing
23:51:05 <Gregor> I chose 3 precisely so it'd output what I expected X-D
23:51:12 <elliott> yes but it's still a bug
23:51:16 <Gregor> >: (
23:51:22 <elliott> problem with limiting UTF-8ly is that it's hard to maintain byte bounds without just chopping off one char at a time until it's fixed
23:52:41 -!- zzo38 has joined.
23:53:26 <fizzie> LANGuid LANGuages.
23:54:14 <Gregor> elliott: I'm thinking, (1) decode as UTF-8. If it doesn't decode, just use bytes. (2) Cut it off to a byte limit, then decode in a mode I'm hoping Python provides, “throw bad shit away”, (3) Re-encode and send
23:55:09 <elliott> Gregor: That sounds much worse than just while len(encoded) < limit: str = str[:-1]; encoded = str.encode('utf-8')
23:55:33 <elliott> (After you do pre_decoded_str = pre_decoded_str[:limit]; str = pre_decoded_str.decode('utf-8'))
23:55:39 <elliott> (So most of the time it'll never even get into that loop)
23:55:56 <Gregor> elliott: I want to preserve incorrect strings.
23:56:04 <fizzie> It does have that mode, though, unless I misremember.
23:56:11 <Gregor> Ohwait, no, you mean for (2).
23:56:13 <zzo38> What are you trying to decode?
23:56:15 <Gregor> No, mine is considerably more efficient.
23:56:19 <elliott> er, I mean
23:56:23 <elliott> after you do str = str[:limit]
23:56:35 <elliott> Gregor: Throwing bad shit away is so gross :(
23:57:22 <Gregor> elliott: Bad shit only occurs at the end of the string because you cut it off.
23:57:30 <Gregor> I only run (2) if the whole string is valid.
23:57:57 <elliott> :(
23:57:59 <elliott> you are gross & bad
23:58:49 <Gregor> `locale
23:59:01 <Gregor> Fixed.
23:59:27 -!- sebbu has joined.
23:59:46 -!- sebbu has quit (Changing host).
23:59:46 -!- sebbu has joined.
←2012-12-09 2012-12-10 2012-12-11→ ↑2012 ↑all