←2013-02-26 2013-02-27 2013-02-28→ ↑2013 ↑all
00:01:08 -!- SirCmpwn has joined.
00:05:42 -!- carado_ has changed nick to carado.
00:25:19 -!- carado has quit (Ping timeout: 246 seconds).
00:45:40 -!- augur has joined.
00:46:14 -!- augur has quit (Read error: Connection reset by peer).
00:46:37 -!- augur has joined.
00:53:47 <quintopia> why do you need my time ais523
00:54:10 <ais523> quintopia: ?
00:54:17 <ais523> oh, timezone?
00:54:20 <quintopia> yeah
00:54:23 <ais523> wanted to know if you were American
00:54:29 <ais523> I find it hard to remember who is and who isn't
00:54:36 <quintopia> yes i am and poor me
00:54:39 <ais523> and it's sometimes relevant in conversations about nationalities
00:54:45 <quintopia> i don't find it hard at all...there are so few of us here :)
00:58:07 <quintopia> gregor, me, kallisti, and sgeo i'm sure of, and i think maybe kmc and pikhq. not sure about a handful of others because they've never mentioned it.
00:58:35 <elliott> there are actually 80 people here
00:58:40 <elliott> well, including bots
00:58:50 <Gregor> fungot: What timezone are you in?
00:58:50 <fungot> Gregor: you make it to do? ( i have an idea
00:59:04 <quintopia> if we could just say "americans raise your hand" and actually expect them to do it
00:59:06 <ais523> Gregor: it doesn't respond to ctcp time, but I assume the same timezone as fizzie
00:59:13 <ais523> quintopia: you wouldn't be able to see
00:59:35 <quintopia> ais523: i mean their irc ACTION hands of course
01:00:05 <Gregor> Mmmm, gimme some o' dat CTCP ACTION.
01:02:21 <kmc> we all living in america
01:02:23 <kmc> america ist wunderbar
01:02:33 <kmc> srsy though yes I live in the USA
01:02:39 <Bike> what is a hand
01:03:33 -!- otro_viajero7 has joined.
01:04:11 <quintopia> that thing that a handlebar is designed to have wrapped around it
01:04:41 -!- SDr has left.
01:09:43 -!- GOMADWarrior has joined.
01:30:22 -!- Arc_Koen has quit (Quit: Arc_Koen).
01:31:58 -!- ais523 has quit.
01:37:21 -!- copumpkin has joined.
01:37:57 -!- Phantom_Hoover has quit (Remote host closed the connection).
02:24:07 -!- lambdabot has quit (Remote host closed the connection).
02:27:52 -!- otro_viajero7 has quit (Ping timeout: 252 seconds).
02:28:20 -!- lambdabot has joined.
02:29:39 -!- lambdabot has quit (Remote host closed the connection).
02:34:10 -!- lambdabot has joined.
02:38:27 -!- GOMADWarrior has quit (Ping timeout: 276 seconds).
02:56:33 <quintopia> kmc: WHEN IS THIS GOING TO HAPPEN https://github.com/keithw/mosh/issues/12
02:57:03 <kmc> reconnection probably never
02:57:10 <kmc> automatic killing of old sessions, maybe
02:57:29 <Gregor> That's what screen is for ;)
02:57:34 <kmc> what i want is a way for the client to associate an ID with a session, and any old session with that name is killed
02:57:58 <kmc> and then you use screen
02:58:09 <kmc> in fact you can use "mosh hosh -- screen -dR foo" today
02:58:16 <kmc> and it accomplishes that
02:58:27 <quintopia> i do use screen
02:58:35 <shachaf> mosh hosh screen -dRSU irc
02:58:35 <kmc> but it doesn't handle my use case, which is that I have two Mosh connections (laptop and desktop) and want to bounce the same screen between them, without reconnecting mosh
02:58:50 <quintopia> but i cant connect to a still attached session from another host via mosh
02:59:02 <kmc> why not?
02:59:10 <quintopia> or in general if a server is already running
02:59:12 <kmc> you can detach it using screen -D, or you can use screen multi-attach with -x
02:59:31 <quintopia> i can detach it once i'm connected
02:59:39 <quintopia> but i can't connect to the mosh server
02:59:41 <kmc> is the problem that you don't have enough ports?
03:00:30 <quintopia> i opened up one port for mosh
03:00:40 <kmc> ok, then you'll need to open more if you want to do it this way
03:00:52 <kmc> or you could hack around it
03:01:04 <kmc> mosh host --server=~/whatever/my-script-which-kills-mosh-server-and-then-launches-a-new-one
03:01:49 <quintopia> how would the multiport solution work
03:02:42 <kmc> well ideally you would open some number of UDP ports starting at 60000
03:02:50 <kmc> you need as many as you are going to have concurrent mosh sessions
03:03:03 <kmc> then you just do 'mosh host' and it picks the lowest port in the range 60000-61000 which is not in use
03:03:10 <quintopia> will it automatically increment port nu oh cool
03:03:35 <kmc> with recent mosh you can also do 'mosh host -p 30000-30010' or whatever to use another range
03:03:42 <kmc> with older mosh you can only specify a single number for -p
03:04:06 <shachaf> kmc: I found out the a͜a͜a͜a͜a͜a͜a͜a͜a͜a͜a thing is from screen, not mosh.
03:04:09 <kmc> aha!
03:04:16 <kmc> also shachaf should i be using screen -U and why?
03:04:24 <kmc> is this for IUTF8?
03:04:34 <shachaf> I don't remember.
03:04:37 <kmc> shachaf: did you read nelhage's termios posts?
03:04:49 <shachaf> I don't think so.
03:04:54 <kmc> you should
03:06:34 <shachaf> Next time I restart my IRC session I'll try tmux.
03:06:55 <shachaf> screen doesn't do 4-byte UTF-8 codepoints, either. :-(
03:07:18 <oerjan> @hoogle augment
03:07:18 <lambdabot> GHC.Exts augment :: (forall b. (a -> b -> b) -> b -> b) -> [a] -> [a]
03:07:18 <lambdabot> Data.Graph.Inductive.Query.MaxFlow augmentGraph :: (DynGraph gr, Num b, Ord b) => gr a b -> gr a (b, b, b)
03:07:32 <shachaf> lambdabot lost its quote database. :-(
03:07:38 <oerjan> WAT
03:07:47 <shachaf> Cale restored it to one that's a couple of years old or so.
03:08:05 <Bike> i don't remember lambdabot's being good
03:08:06 <shachaf> I told him he should make backups but I don't think it ever happened.
03:08:18 <shachaf> I should go through the #haskell logs and reädd them.
03:08:27 <Bike> i'm sorry
03:08:52 <shachaf> ï'm sörrÿ
03:09:03 <oerjan> @messages
03:09:03 <lambdabot> You don't have any new messages.
03:09:44 <shachaf> Cööl pëöplë tÿpë lïkë thïs, rïght?
03:10:01 <Bike> metal
03:10:52 <shachaf> never metalinguistic who didn't annoy me
03:10:55 <zzo38> I found out now that in Windows you can do auto-completion on the command history by F8 key. What is the function to do that in Linux?
03:11:04 <shachaf> Hmm, s/ic//
03:14:30 <oerjan> ah right augment is instead of build when you already have the final part of the resulting list
03:14:41 <oerjan> like in the rule for (++)
03:14:51 <shachaf> Sgeo_: 19:14 <brucem> shachaf: where is Sgeo?
03:14:58 <shachaf> (In #dylan.)
03:18:50 -!- oerjan has quit (Quit: leaving).
03:24:19 -!- c00kiemon5ter has joined.
03:39:02 -!- wareya has quit (Read error: Connection reset by peer).
03:39:47 -!- wareya has joined.
03:41:07 <shachaf> Sgeo_: Oh boy, are you going to hlpe the Dylan folks?
03:41:14 <shachaf> You should!
03:41:27 <Sgeo_> If I could get the internal motivation too
03:41:34 <Sgeo_> Also dealing with a crisis wrt my Tcl bot
03:41:41 <Sgeo_> And the Senior Project
03:42:01 <shachaf> imo help them
03:50:17 <shachaf> Sgeo_: help is he trying to rope me into that dylan craziness
03:50:20 <shachaf> what's going on
03:51:02 <Sgeo_> shachaf, it's easy, just use an XML parser to parse an xml file into a Dylan object
03:51:28 <Bike> i assume read forms a monoid
03:51:39 <shachaf> An XML parser is just a monoid in the monoid of monoid monoids.
03:53:29 <Bike> aren't we all?
03:53:37 -!- jix has quit (*.net *.split).
03:53:37 -!- ion has quit (*.net *.split).
03:55:42 -!- jix has joined.
03:55:42 -!- ion has joined.
04:24:57 <zzo38> Do you know if Linux as auto-complete of command history and which key activates it if so?
04:25:24 <shachaf> The kernel?
04:26:06 <quintopia> zzo38: from the command line, press up to get the previous command and keep pressing up for more
04:28:23 <zzo38> Yes I know that but I mean if you type something and want to find only the line starting by what you typed in.
04:28:37 <Bike> presumably that would be part of your shell, not linux
04:28:44 <zzo38> shachaf: I don't mean the kernel (which is really the part called "Linux", I know) I mean the shell used in Linux systems
04:28:50 <shachaf> Lots of shells are.
04:28:51 <shachaf> bash?
04:28:58 <shachaf> If so, maybe try ^R
04:30:09 <zzo38> I happen to have bash even on this computer, so I tried it, and no that is not quite it either.
04:30:58 <zzo38> Is there UNIX shells which includes some of the DOS/Windows command-line editing functions?
04:33:12 <zzo38> Windows removed the function of F5 in the command-line though, it seem, and I liked that one too.
04:36:15 <Sgeo_> What did F5 in the command line do?
04:36:45 <zzo38> Enter into the command history without executing the command.
04:37:14 -!- monqy has joined.
04:40:43 -!- monqy has quit (Client Quit).
04:41:26 <shachaf> @ask monqy What happened to your quit message?
04:41:27 <lambdabot> Consider it noted.
04:42:05 <kmc> that's odd
04:42:11 <Jafet> honqy
04:42:15 <kmc> in bash I will put a # at the beginning of a line if I want to save it for later
04:42:34 <shachaf> kmc: Alt-shift-3
04:42:53 <kmc> nice
04:42:59 <kmc> didn't know that
04:43:01 <kmc> tychaf
04:46:20 <zzo38> O, yes, ALT+SHIFT+3 does automatically put # at the beginning and then enter into the command history; I didn't know that either and it works too on MinGW.
04:48:16 <Jafet> `addquote <zzo38> I happen to have bash even on this computer
04:48:26 <HackEgo> 975) <zzo38> I happen to have bash even on this computer
04:48:37 <Bike> Kinda meh, don't you think?
04:48:56 <zzo38> But I think GNU readline is far more complicated than the command-line editing ought to be and still lacks whatever seem importance to me.
04:48:59 <zzo38> Bike: Probably.
04:49:11 <zzo38> Jafet: Well, I use Windows command-line too.
04:49:12 <trout> so use libedit
04:49:20 <Jafet> Is readline turing complete
04:49:22 <trout> which makes about 100x more sense than GNU readline
04:59:13 -!- linuxnewb2 has quit (Quit: linuxnewb2).
05:01:16 <quintopia> wait what. alt-shift-3 doesn't just type a # right there in the middle of the line?
05:01:22 <zzo38> I would like one license by LGPL, and including the DOS and Windows command-line features including DOS F5, and a few other things such as a different tab completion and "APC" code command. Do you know if there is anything similar? I might try to write one some day but still I want to know if there is similar.
05:01:53 <kmc> what's APC?
05:02:24 <zzo38> The "Application Program Command" control code
05:03:27 <zzo38> My idea of the purpose of it is to have a terminal program in X or a window system might use it to open a graphical file selection window.
05:03:39 <zzo38> (Although, it can also be used for other purposes, or none at all)
05:07:35 <kmc> i don't think i've ever been using a command line program and thought to myself "what this command line program really needs is a graphical file selection window"
05:07:42 <kmc> but maybe that's just me
05:09:33 <zzo38> I don't think the command-line needs it either, but it might be useful in a windowing system.
05:15:55 <zzo38> Although UTF-8 follows the principle of extended ASCII, some programs using it don't, and I don't like this.
05:16:27 <zzo38> The principle of Extended ASCII means that: all ASCII bytes (0x00 to 0x7F) have the same meaning in all variants of extended ASCII, bytes that are not ASCII bytes are used only for free text, not for tags, keywords and other features having special meaning to the interpreting software.
05:17:08 -!- monqy has joined.
05:17:56 <quintopia> and then they left me tied there to the bedpost. they never did come back with jello.
05:18:00 <quintopia> oh, hi monqy
05:18:14 <Bike> that's like the oldest joke on irc
05:18:20 <Bike> people were making that joke as the soviet union fell
05:18:22 <monqy> hi
05:18:22 <lambdabot> monqy: You have 1 new message. '/msg lambdabot @messages' to read it.
05:18:26 <monqy> another??
05:18:35 <monqy> shachaf: did my quit message chagne
05:18:45 <monqy> shachaf: maybe it's because i quit so quickly
05:18:49 <shachaf> maybe
05:18:54 <shachaf> 20:40 -!- monqy [~help@pool-98-108-214-230.snloca.dsl-w.verizon.net] has quit [Client Quit]
05:18:56 <monqy> because of unexpected
05:19:02 <shachaf> turbulence?
05:19:03 <monqy> yeah i think thats what happens when you quit too quick
05:19:14 <quintopia> Bike: that's not the proper response if you recognize it
05:19:21 <quintopia> Bike: how jaded are you anyway
05:19:34 <Bike> as jaded as twelve sixteen-year-olds put together
05:19:39 <Bike> in a pile of sixteen-year-olds
05:20:53 <monqy> is the pile just these twelve or are there more in the pile
05:21:14 <quintopia> and more importantly
05:21:19 <Bike> Just the twelve, monqy.
05:21:25 <quintopia> are they wearing clothing?
05:21:35 <quintopia> and are they sexually attracted to one another?
05:22:09 <Bike> Most sixteen-year-olds are wearing clothing, but overall the chance of two randomly selected sixteen-year-olds considering each other sexually attractive is probably negligible.
05:22:36 <monqy> does this change if they're in a pile
05:23:09 <Bike> Probably.
05:23:21 <Bike> The pile is metaphorical. I have not actually put twelve sixteen-year-olds together into a pile.
05:23:29 <monqy> shachaf: hi shachaf
05:23:32 <shachaf> monqy: what window # is #esoteric for you in irssi
05:23:38 <monqy> why do you ask
05:23:46 <shachaf> "just curious........"
05:24:11 <quintopia> why only asking monqy?
05:24:12 <monqy> does that mean you're just curious or do you have the ulterioer motives
05:24:33 <shachaf> maybe i have an ulteriœr motive
05:24:39 <shachaf> what's it to you
05:24:42 <monqy> anyway it's #3
05:24:58 <shachaf> oh
05:24:59 <quintopia> i think he's attracted to your sexy hairy wrists
05:25:01 <shachaf> what's #2
05:25:06 <monqy> #2 is a secret
05:25:10 <shachaf> oh no
05:25:14 <shachaf> what's #4
05:25:18 <monqy> crawl
05:25:22 <shachaf> which # is /query lambdabot
05:25:42 <monqy> usually 11 or 12 when it happens
05:25:59 <kmc> Bike: i like your reference to the IRC logs of the fall of the soviet union
05:26:02 <Sgeo_> It's been a while sincce Ive beeen in ##crawl
05:26:21 <monqy> remember when you were in ##crawl and you were trying to play mfie or something but you were bad at it
05:26:37 <Bike> kmc: they're good logs i think
05:27:52 <quintopia> shachaf: what # is esoteric for you
05:28:02 <shachaf> 11
05:28:33 <quintopia> how many of the first ten are on freenode
05:28:58 <shachaf> This is my "freenode-only" irssi.
05:29:23 <pikhq> This is actually #3 for me, too.
05:29:23 <lambdabot> pikhq: You have 2 new messages. '/msg lambdabot @messages' to read them.
05:29:29 <pikhq> #2 is #plof
05:29:43 <shachaf> monqy: is #2 /query or a channel
05:30:30 <pikhq> #2 used to be #bitlbee, but I've not used that in a while.
05:30:44 <monqy> shachaf: channel. secret channel
05:30:52 <shachaf> oh no
05:31:53 <quintopia> my #2 is &bitlbee. #esoteric is 9. 3 of the other first 10 are also freenode (#4, #6, and #11)
05:32:13 <monqy> shachaf: the reason i wondered about you asking about my channel numberings is you asked just 3 minutes after i moved my 10 to its rightful place (from 2) since i havent bothered figuring out how to fix channel numbering on connect, after accidentally saying "wmove 10" in it
05:32:14 <Bike> But how many are dal?
05:32:19 <quintopia> NOEN
05:32:21 <monqy> im not on dal thankfully
05:32:31 <pikhq> (I finally got sick of bitlbee; currently using Pidgin... But I wanna find a terminal client again.)
05:32:33 <Bike> monqy: You just do /layout save and then /save.
05:32:44 <monqy> Bike: i think i've tried that? i'll try again
05:32:45 <shachaf> monqy: oh
05:32:48 <pikhq> (sadly, IM protocols don't much like being logged in from multiple locations.
05:32:49 <pikhq> )
05:32:50 <shachaf> monqy: "no, just a coincidence"
05:32:53 <shachaf> monqy: what's #10
05:33:02 <monqy> also a secret channel
05:33:08 <Bike> Gosh.
05:33:15 <quintopia> monqy: there is a setting where it automatically saves channel layout whenever you join and move and stuff
05:33:21 <quintopia> works great for me
05:33:31 <shachaf> monqy are all your channels secret
05:33:40 <monqy> only those 2 i think?
05:33:41 <Bike> Maybe #esoteric is secret.
05:33:50 <Bike> Have we ever seen monqy's other channels and #esoteric in the same room?
05:33:52 <quintopia> i don't see a +s
05:34:05 <Bike> Does +s even do anything on freenode?
05:34:38 <monqy> i mean "secret" as in "im not going to blab about them that would be dumb and their members probably wouldnt appreciate that"
05:35:32 <quintopia> oh monqy is a usian also eh
05:35:48 <quintopia> we're still a minority
05:36:09 <monqy> are you stalking me!!
05:36:44 <shachaf> monqy everyone in this channel is a "big fan of" you
05:36:49 <quintopia> no, that would require me actually following you around or something
05:36:55 <kmc> i use finch for IM stuff and irssi for IRC
05:36:55 <quintopia> the hidden cameras do that just fine
05:37:06 <kmc> finch is... okay
05:37:10 <kmc> it's probably full of security holes
05:37:13 <kmc> oh well
05:37:14 <kmc> YOLO
05:38:01 <Bike> kmc do you work in a profession where it's possible someone will target you and find all your IM contacts and impersonate you
05:38:14 <quintopia> does finch support IM encryption
05:38:16 <kmc> i don't know
05:38:23 <kmc> sometimes i talk about computer security online
05:38:28 <kmc> someone might try to hack me for lols
05:38:34 <kmc> i'm not particularly concerned, just a little
05:39:15 <kmc> i should probably convert that server to a hardened system with grsecurity and such
05:39:20 <kmc> because it doesn't have to do much and it would be fun
05:39:25 <tswett> `quote
05:39:26 <HackEgo> 865) <zzo38> If you write in the text using Unicode then how are you supposed to know if you mean seraphim have seven eyes or do they have ten?
05:39:34 <kmc> :D :D :D
05:39:34 <quintopia> `quote
05:39:35 <HackEgo> 537) <Taneb> I think this has taught us one thing. We can't teach itidus20 lambda calculus by comittee
05:39:38 <Bike> best question
05:39:50 <Bike> wow someone on this channel didn't know lambda calculus huh
05:40:02 <quintopia> `quote
05:40:03 <HackEgo> 459) <oerjan> sllide: @ is an OS made out of only the finest vapour
05:40:12 <quintopia> `quote
05:40:14 <HackEgo> 634) <Phantom_Hoover> The reason the cute animals collection includes pictures of intestines is that cute animals have to have intestines.
05:40:15 <kmc> oh wow Bike did you not overlap with itidus at all
05:40:23 <Bike> unfortunately i did not
05:40:25 <quintopia> `quote
05:40:27 <HackEgo> 512) <fungot> elliott_: it's a machine that looks like you!
05:40:31 <Bike> i've been assuming itidus was a long time before me
05:40:32 <quintopia> :D
05:40:33 <Sgeo_> Should I watch Quantum Leap?
05:40:36 <shachaf> `pastequotes itidus
05:40:38 <Bike> like when the soviets were still around or something
05:40:39 <tswett> Yeah, man. Unicode really ought to have the character "CYRILLIC LETTER N-OCULAR O" for all natural numbers N.
05:40:42 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.2134
05:40:55 <Bike> tswett: all ordinals, you mean
05:41:11 <tswett> All order types, you mean.
05:41:15 <Bike> given what angels are like i think one having omega one NK eyes is pretty reasonable
05:41:41 <kmc> proposal to allocate plane 3 of the UCS as Combining Multiocular Variation Indicator Plane
05:41:54 <kmc> 2^16 eyes should be enough for anyone
05:42:32 <Bike> -- bill gates, angel of the lord
05:42:45 -!- TeruFSX has quit (Ping timeout: 276 seconds).
05:42:48 <kmc> at least this finch is build with -fPIC and stack-protector and stuff
05:42:56 <kmc> yay ubuntu yay kees cook (who is no longer at ubuntu)
05:43:00 <tswett> I dunno. I think we should be able to talk about seraphim with 808,017,424,794,512,875,886,459,904,961,710,757,005,754,368,000,000,000 eyes.
05:43:30 <Bike> I'm pretty sure that exact number is in the Zohar.
05:43:37 <Bike> Probably how tall Metatron's dick is in cubits or something.
05:43:47 <kmc> c.c
05:43:57 <Bike> Hey, it's true.
05:44:03 <Bike> Probably.
05:44:04 <kmc> i learned from Kevin Smith movies that the Metatron has no dick
05:44:09 <tswett> The presence of that number in the Zohar would be proof of... something amazing.
05:44:16 <Bike> Really? Why?
05:44:24 <kmc> angel
05:44:25 <kmc> i don't know
05:44:30 <Bike> I meant at tswett.
05:44:35 <tswett> Because that number wasn't discovered until the 20th century.
05:44:38 <Bike> The Hebrews had all kinds of big numbers. There's basic combinatorics in the I-forget-the-nth-fucking-text.
05:44:53 <Bike> Oh is it something weird like the order of the monster group or some shit
05:44:57 <quintopia> i think this one is the best
05:44:59 <Bike> probably ancient aliens
05:45:01 <tswett> Yeah, something like that.
05:45:05 <quintopia> `quote 752
05:45:06 <HackEgo> 752) <fungot> itidus21: hey, hey, hey, hey, hey, hey, hey, hey, hey, hey, hey, hey, hey, hey, hey, hey, hey, hey, hey, hey, hey, hey, hey, hey, hey, hey, hey, hey, hey, hey, hey, hey, hey, hey, hey, hey, hey, hey, hey, hey, hey, hey, hey, hey, hey, hey, hey, hey, hey, hey, hey, hey, hey, hey, hey, hey, hey, hey, hey, hey, hey, hey, hey, hey, hey, h
05:45:26 <shachaf> monqy: what do you think of "the monqy fandom"
05:45:28 <Bike> @google 808017424794512875886459904961710757005754368000000000
05:45:29 <lambdabot> http://en.wikipedia.org/wiki/Monster_group
05:45:30 <lambdabot> Title: Monster group - Wikipedia, the free encyclopedia
05:45:34 <shachaf> where we write fanfics and stuff
05:45:39 <Bike> ...I guessed correctly?
05:45:46 <monqy> shachaf: i dont undersatnd it
05:46:03 <shachaf> monqy: "nobody understands fandoms"
05:46:10 <shachaf> except Fiora??
05:46:53 <Bike> Maybe it being in the Zohar wouldn't be too remarkable. 13th century is basically like the 20th century anyway.
05:47:06 <shachaf> > 20 - 13
05:47:07 <lambdabot> 7
05:47:10 <shachaf> Yep.
05:47:17 <Bike> http://en.wikipedia.org/wiki/Sefer_Yetzirah <-- This is the one with combinatorics.
05:49:25 <shachaf> It's easy to confuse itidus with a Markov chain bot.
05:49:48 <Bike> That's a mean thing to say.
05:50:06 <tswett> fungot: hey, say something.
05:50:06 <fungot> tswett: while 1: self.raw("quit")
05:50:34 <tswett> fungot: are you set to do Markov chains out of computer code or something?
05:50:34 <fungot> tswett: how do you tell which to pick up
05:50:47 <tswett> fungot: nope, I guess that was some fluke or something.
05:50:47 <fungot> tswett: ( not that i recommend it for others. ( those are the prototypes. mouse regions. i won't ask why you do it
05:50:56 <Bike> Looks like lisp.
05:51:07 <shachaf> fungot: what's the difference between itidus and you
05:51:07 <fungot> shachaf: it's /you/! wasting energy is a sign you may want to refresh my memory.
05:51:12 <shachaf> gasp
05:51:20 <shachaf> ^style
05:51:20 <fungot> Available: agora alice c64 ct darwin discworld enron europarl ff7 fisher fungot homestuck ic irc* iwcs jargon lovecraft nethack pa qwantz sms speeches ss wp youtube
05:51:33 <quintopia> i dunno
05:51:37 <quintopia> itidus was a bit funnier
05:51:47 <quintopia> fungot is never intentionally funny
05:51:48 <fungot> quintopia: or did it end up? i would have to create your own instruction set. on fnord stuff is less a matter of reading through existing codebases and yanking out bits of code.
05:53:02 <Bike> And now mean to fungot too. This is so cruel.
05:53:03 <fungot> Bike: i predict a rather shocking result!" to multiple-value :) even if that exception happens, i don't
05:54:43 <Sgeo_> ^list
05:54:43 <fungot> Taneb atriq Ngevd Fiora nortti Sgeo ThatOtherPerson alot
05:54:48 <quintopia> Bike: it's okay to be mean to befunge code. it deserves it.
05:54:57 <Sgeo_> er
05:55:08 <Bike> :(
05:55:20 <Sgeo_> Not a false alarm
05:55:34 <quintopia> befunge code doesn't tear arms out of sockets
06:05:26 -!- sirdancealot7 has quit (Remote host closed the connection).
06:40:17 <shachaf> @hug monqy
06:40:17 <lambdabot> http://hackage.haskell.org/trac/ghc/newticket?type=bug
06:40:25 <monqy> hi
06:40:29 <shachaf> oops
06:40:33 <shachaf> did i accidentally @bug monqy
06:40:40 <shachaf> sry
06:40:42 <monqy> :☺)
06:40:54 <shachaf> (☺:
06:45:35 -!- monqy has quit (Quit: hello).
06:46:19 <Bike> Hey! He fixed his quit message. That's nice.
06:47:07 <shachaf> @ask monqy good job on the quit message
06:47:08 <lambdabot> Consider it noted.
06:58:27 <zzo38> Does teletext have music?
07:30:58 -!- epicmonkey has joined.
07:33:55 -!- DHeadshot has quit (Ping timeout: 248 seconds).
07:37:02 -!- DHeadshot has joined.
07:44:03 -!- epicmonkey has quit (Ping timeout: 248 seconds).
07:56:19 -!- sirdancealot has joined.
07:56:20 -!- impomatic has quit (Quit: http://about.me/john_metcalf).
07:56:56 -!- epicmonkey has joined.
08:05:32 -!- nooga has joined.
08:06:07 -!- Bike has quit (Quit: Reconnecting).
08:06:13 -!- Bike_ has joined.
08:14:28 -!- DHeadshot has quit (Read error: Connection reset by peer).
08:14:41 -!- DHeadshot has joined.
08:22:57 -!- nooga has quit (Ping timeout: 248 seconds).
08:31:15 -!- azaq23 has quit (Quit: Leaving.).
08:50:40 -!- nooga has joined.
09:05:27 -!- otro_viajero7 has joined.
09:07:50 -!- Arc_Koen has joined.
09:08:03 -!- Arc_Koen has quit (Client Quit).
09:08:20 -!- FreeFull has quit.
09:31:33 -!- otro_viajero7 has quit (Quit: ChatZilla 0.9.88.2 [Firefox 14.0.1/20120713134347]).
09:32:02 <zzo38> [1] Statement #2 is false. [2] Statement #1 is true. [3] All three of these statements are false.
09:33:50 <Lumpio-> [4] Statements #1 through #3 are silly.
09:35:25 <zzo38> Yes, that, also, I guess.
09:38:36 <zzo38> [5] Oops, I forgot. Statement #5 is also silly.
09:38:55 <shachaf> Is statement 4 silly?
09:38:59 <Bike_> what are all these numbers for
09:39:14 <shachaf> Bike: you don't have a proper appreciation for numbers
09:39:23 <Bike_> :(
09:39:36 <shachaf> numbers don't need to be for anything
09:39:40 <shachaf> pragmatist
09:39:41 <Slereah_> [6] there is no statement 7
09:39:54 <shachaf> maybewordsshouldbeseparatedlikethis
09:42:00 <Bike_> this is some existential shit here
09:45:00 <shachaf> universal
09:49:51 <nooga> maybe sentences should be s-exps
09:55:45 <fizzie> (ROOT (S (ADVP (RB Maybe)) (NP (NNS sentences)) (VP (MD should) (ADVP (RB also)) (VP (VB be) (NP (NNS s-exps)))) (. .)))
09:56:20 <fizzie> (Parse tree courtesy of the Stanford parser.)
09:56:43 <nooga> yeah
09:56:53 <nooga> that's what i thought about
09:57:02 <FireFly> At least it'll resolve the grammar ambiguities
09:57:15 <Bike_> Syntactic ambiguities are the spice of life.
09:57:40 <nooga> oh
09:57:52 <nooga> (. .)
09:58:05 <nooga> \___/
10:01:26 -!- Bike_ has quit (Quit: leaving).
10:05:34 -!- impomatic has joined.
10:48:03 -!- Sgeo_ has quit (Read error: Connection reset by peer).
10:48:35 -!- Sgeo has joined.
11:15:42 -!- nooga has quit (Ping timeout: 264 seconds).
11:18:57 -!- zzo38 has quit (Remote host closed the connection).
11:20:22 -!- Phantom_Hoover has joined.
11:28:59 <shachaf> Sgeo: Did you help the nice Dylan folks?
11:29:38 <Sgeo> I'm busy this week
11:29:39 <Sgeo> Kind of
11:58:28 -!- Arc_Koen has joined.
12:11:25 -!- carado has joined.
12:28:14 -!- doesthiswork has quit (Quit: Leaving.).
12:38:22 -!- TeruFSX has joined.
13:07:05 -!- TeruFSX has quit (Read error: Connection reset by peer).
13:16:51 -!- carado_ has joined.
13:21:38 -!- carado_ has quit (Ping timeout: 246 seconds).
13:41:09 -!- flayke has joined.
13:43:01 -!- flayke has left.
13:44:54 -!- boily has joined.
13:54:43 -!- cuttlefish has joined.
13:56:48 -!- c00kiemon5ter has quit (Remote host closed the connection).
13:57:01 -!- c00kiemon5ter has joined.
14:06:27 -!- cuttlefish has quit (Remote host closed the connection).
14:06:46 -!- metasepia has joined.
14:07:25 -!- metasepia has quit (Remote host closed the connection).
14:07:39 -!- boily has changed nick to metasepia.
14:11:37 -!- metasepia has changed nick to boily.
14:12:00 -!- metasepia has joined.
14:13:24 <boily> good morning all. sorry for the nickname juggling. looks like somebody else registered cuttlefish with nickserv half a fortnight ago.
14:13:35 <elliott> :'(
14:13:43 <elliott> I miss cuttlefish already
14:14:57 <boily> I now own metasepia, so further nickchanges shouldn't be necessary.
14:15:57 <elliott> maybe they will forget about it and you can get cuttlefish back.
14:17:20 <Phantom_Hoover> what if you ask them very nicely
14:18:24 -!- c00kiemon5ter has quit (Remote host closed the connection).
14:18:40 -!- c00kiemon5ter has joined.
14:26:23 -!- carado has quit (Ping timeout: 246 seconds).
14:27:42 <boily> at least, the new nickname is in honour of https://en.wikipedia.org/wiki/Metasepia_pfefferi
14:27:58 -!- carado_ has joined.
14:34:01 <Sgeo> Maybe you could pay them for the nick (not a serious suggestion)
14:47:39 -!- FreeFull has joined.
14:49:16 <boily> Sgeo: depends with what I pay them with.
14:52:10 <fizzie> ^ignore
14:52:10 <fungot> ^(EgoBot|HackEgo|toBogE|Sparkbot|optbot|lambdabot|oonbotti|cuttlefish|jconn)!
14:52:21 <fizzie> ^ignore ^(EgoBot|HackEgo|toBogE|Sparkbot|optbot|lambdabot|oonbotti|metasepia|jconn)!
14:52:21 <fungot> OK.
14:52:39 <fizzie> (I really should do the HackEgo-style zero-width space prefix trick.)
14:56:12 <elliott> you should really not
14:56:17 <elliott> I loathe that trick
14:56:17 <boily> toBogE, Sparkbot and optbot are new to me. whose are they?
14:57:40 <elliott> optbot was mine
14:57:45 <elliott> it inspired fungot's babble
14:57:45 <fungot> elliott: not sure either
14:58:21 <Sgeo> Is that the most coherent thing fungot has ever said?
14:58:22 <fungot> Sgeo: you must be confusing php with perl, but i'm not sure that's a bad idea!". and if anyone works out a better formatting routine.
14:59:34 <boily> the planetary alignment must be special today. fungot makes waaaaay too much sense.
14:59:35 <fungot> boily: redefinitions are just lame... they don't work... they execute all the code that used random-integer instead: that was my point
14:59:44 <boily> I rest my case.
17:11:20 -!- esowiki has joined.
17:11:52 -!- esowiki has joined.
17:11:53 -!- glogbot has joined.
17:11:54 -!- glogbackup has left.
17:11:56 -!- esowiki has joined.
17:11:56 -!- esowiki has joined.
17:11:58 -!- glogbackup has quit (Excess Flood).
17:13:17 -!- Gregor has joined.
17:13:38 -!- Gregor has changed nick to Guest6050.
17:14:11 -!- Guest6050 has changed nick to Gregor.
17:15:00 <ais523> there is something very weird about people deducing the way Iranian nuclear plants function via reverse-engineering Stuxnet
17:18:08 <tromp_> quintopia: it may be that if w occurs in thue-morse, then it occurs within the first O(length(w)) bits
17:25:44 <Sgeo> fmap _ = unsafeCoerce
17:26:15 -!- Phantom___Hoover has joined.
17:26:28 -!- DHeadshot has quit (Ping timeout: 248 seconds).
17:27:41 <Sgeo> h1 >>= f = h1 >> f
17:27:41 <Sgeo> (error "Text.Blaze.Internal.MarkupM: invalid use of monadic bind")
17:29:04 <kmc> sucks
17:29:06 <Taneb> Today I was vaguely tempted to write Haskell bindings to the Apache Wave client API thing
17:29:14 <kmc> is this one of those "monads" that's actually a monoid?
17:29:36 <Sgeo> kmc, yes
17:29:41 <kmc> :(
17:30:06 <Sgeo> kmc, would it have been acceptable to make a Writer monad out of it, and suggest people use that? Why don't these people do that, if that would have been better?
17:30:19 <kmc> i don't know why they don't do that
17:30:42 <FreeFull> kmc: As in, a monoid that doesn't obey monad rules?
17:31:04 <ais523> err, I didn't even think monads were monoids, necessarily
17:31:15 <kmc> they aren't
17:31:18 <kmc> and that's not what i mean FreeFull
17:31:25 <ais523> oh right, MonadPlus = monad that is also a monoid?
17:31:33 <Sgeo> kmc, https://github.com/jaspervdj/blaze-markup/blob/master/src/Text/Blaze/Internal.hs
17:31:42 <FreeFull> Aren't monads monoids in the category of endofunctors?
17:31:51 <Taneb> I think if m is a Monad, (a -> m a) is a Monoid
17:31:52 <ais523> `? monad
17:32:00 <HackEgo> Monads are just monoids in the category of endofunctors.
17:32:01 <kmc> what i mean is the abuse of 'do' notation where you write do { x; y; z } instead of [x,y,z], basically, and you never write "v <- x"
17:32:05 <ais523> FreeFull: I meant in Hask
17:32:12 <ais523> not in Endofunctor
17:32:21 <kmc> this usually means you're given some monad that's an abstract type, and all the "primitives" are of type "M ()"
17:32:30 <FreeFull> Taneb: Can you make a Monoid instance for that?
17:32:39 <Sgeo> kmc, would it be more acceptable if it were Writer though? Because it's tempting, and Writer would be a real monad
17:33:00 <kmc> so you never need to use (>>=), and (>>) is basically taking over for mappend
17:33:07 <ais523> oh wow I just read scrollback to see what the conversation was about
17:33:07 <FreeFull> kmc: Abuse of do notation is bad
17:33:10 <Gregor> `run echo 'Doodads are just duoids in the category of endofunctors.' > wisdom/doodad
17:33:14 <HackEgo> No output.
17:33:15 <ais523> that… isn't a monad
17:33:16 <Gregor> `run ln -s doodad wisdom/doodads
17:33:20 <HackEgo> No output.
17:33:23 <ais523> it may fulfil the Haskell definition
17:33:27 <ais523> sort of
17:33:35 <ais523> does it even obey the monad laws?
17:33:43 <FreeFull> ais523: I don't think it would
17:33:44 <Taneb> newtype EndoM m a = EndoM {appEndo :: a -> m a}; instance Monad m => Monoid (EndoM m a) where mempty = EndoM return; mappend (EndoM a) (EndoM b) = EndoM (a >=> b)
17:33:53 <Gregor> `? doodad
17:33:55 <HackEgo> Doodads are just duoids in the category of endofunctors.
17:34:02 <Sgeo> return ignores its argument...
17:34:02 <Gregor> *sage nod*
17:34:02 <kmc> anyway people do this a lot because they like the 'do' notation
17:34:08 <kmc> syntax over semantics :(
17:34:10 <ais523> I'm not even sure what "fmap _ = unsafeCoerce" does
17:34:16 <FreeFull> Taneb: Ah, so you can but you need a newtype
17:34:16 <Taneb> `? d-modules
17:34:18 <HackEgo> D-modules are just modules over the ring of differential operators. Taneb invented them.
17:34:20 <kmc> Sgeo: yes, I think it would be better with Writer, but I haven't thought about it in detail
17:34:21 <Sgeo> ais523, that was in an instance declaration
17:34:21 <Taneb> FreeFull,
17:34:21 <Taneb> yes
17:34:53 <kmc> FreeFull: the fact that monads are monoids in the category of endofunctions has basically nothing to do with this
17:34:53 <Taneb> You could do it without newtypes if you use a bunch of extensions, but you really, REALLY, shouldn't
17:35:01 <kmc> endofunctors*
17:35:11 <kmc> i wonder if you know what it means
17:35:31 <elliott> Writer is slower
17:35:40 <ais523> perhaps because I can't figure out what unsafeCoerce does outside the context of Haskell
17:35:42 <elliott> blaze-html does the fake monad for notation thing
17:35:58 <FreeFull> @hoogle (Monad m) => [a -> m a] -> a -> m a
17:35:59 <lambdabot> Data.Generics.Aliases extM :: (Monad m, Typeable a, Typeable b) => (a -> m a) -> (b -> m b) -> a -> m a
17:35:59 <lambdabot> Data.Generics.Aliases mkM :: (Monad m, Typeable a, Typeable b) => (b -> m b) -> a -> m a
17:35:59 <lambdabot> Data.Data gmapM :: (Data a, Monad m) => (forall d. Data d => d -> m d) -> a -> m a
17:36:14 <ais523> do notation should clearly randomly permute the input to something else that would have the same meanings if the monad laws were satisfied
17:36:21 <Sgeo> FreeFull, ... some sort of fold with (>=>) ?
17:36:29 <ais523> hmm… this would never happen in Agda, assuming that Agda monads come with proof that they obey the monad laws
17:36:35 <FreeFull> Sgeo: Yeah
17:36:38 <kmc> :t foldr (>=>) return
17:36:40 <FreeFull> Was wondering if it had a name
17:36:47 <kmc> @type foldr (>=>) return
17:36:53 <lambdabot> Monad m => [c -> m c] -> c -> m c
17:36:54 <lambdabot> Monad m => [c -> m c] -> c -> m c
17:37:25 <Sgeo> :t foldl (>=>) return
17:37:26 <lambdabot> Monad m => [b -> m b] -> b -> m b
17:39:22 <Sgeo> Doesn't F#'s syntax for using monads also support monoids? Or am I misremembering?
17:39:36 <Sgeo> Because IIRC "computation expressions" don't just support monads
17:39:39 <ais523> I didn't realise F# had syntax for monads
17:39:47 <ais523> it's a strict language with a defined evaluation order
17:39:54 <ais523> so it doesn't need dedicated monad syntax nearly as much as Haskell
17:40:26 -!- sirdancealot has quit (Read error: Connection reset by peer).
17:41:02 <kmc> monads aren't really about evaluation order
17:41:13 <kmc> nor are they about purity
17:41:39 -!- ais523 has quit (Quit: kernel update, rebooting).
17:41:46 <kmc> lots of useful 'styles of computation' can be written as monads
17:41:49 <elliott> #esoteric is the #haskell retirement home where you can have all the same arguments you did in #haskell but at a slower, more relaxed pace
17:41:49 <oonbotti> Nothing here
17:41:51 <kmc> nondeterminism, parsing, whatever
17:41:54 <elliott> and with fewer whippersnappers
17:42:01 <kmc> elliott: yup
17:43:02 <kmc> in Haskell, laziness was the motivation for pure functions, and pure functions were the motivation for monadic IO, and monadic IO was the motivation for generic monads
17:43:12 <kmc> but each of these ideas is useful beyond its original motivation
17:43:34 <kmc> C# also has something vaguely monad-like in LINQ
17:43:54 <Sgeo> LINQ syntax also allows peaking at the AST I think?
17:43:59 <kmc> yes
17:44:00 <Sgeo> Or... something
17:44:15 <kmc> and that makes it more useful that Haskell's 'do' for deep EDSLs
17:44:40 <kmc> it's really good that the syntax you use to query a database and the syntax you use to do an ordinary list comprehension in memory are the same
17:44:56 <kmc> this is a constant frustration with e.g. the Django ORM in Python
17:45:19 <kmc> we all want to write list comprehensions, but a list comprehension making a bunch of individual database queries is terribly slow
17:45:30 -!- ais523 has joined.
17:45:58 <kmc> so you have to express your joins, filters, etc. in totally different and slightly awkward syntax
17:46:04 <Sgeo> The Haskell package that inspired LINQ used things like .>. I think
17:46:14 <kmc> i didn't know it was inspired by a specific Haskell package!
17:46:45 <Sgeo> Well, partly inspired
17:46:50 -!- Phantom___Hoover has quit (Ping timeout: 255 seconds).
17:47:15 * Sgeo looks for it
17:48:09 -!- Phantom___Hoover has joined.
17:49:41 <Sgeo> http://stackoverflow.com/a/1418200
17:49:53 <Sgeo> "LINQ was inspired by HaskellDB, as Erik Meijer has numerously stated, e.g. in Confessions of a Used Programming Language Salesman (Getting the Masses Hooked on Haskell), so it is not in itself a new concept. "
17:51:07 <FreeFull> Didn't haskell do pure IO before having monadic IO
17:51:20 <FreeFull> Or is my history wrong
17:51:38 <kmc> yeah it was like 'interact' basically
17:52:04 <kmc> 'main' was a function that took a lazy list of IO results and produced a lazy list of things to do
17:52:08 <kmc> it didn't work very well
17:52:30 -!- doesthiswork has joined.
17:53:10 <Gregor> doesthiswork: No, it doesn't work, you're not here.
17:53:37 <doesthiswork> there is always the logs
17:53:57 <Gregor> Well, I control the logs, sooooooooooooo >: )
17:55:29 <Sgeo> kmc, one of the Blaze examples uses forM_, so it's not just for do syntax...
17:55:48 <kmc> well ok
17:56:14 <Sgeo> Although not sure I would trust using functions like that when the monad laws are broken
17:56:39 <kmc> but there must be a similar function for monoids
17:56:51 <FreeFull> :t forM_
17:56:52 <elliott> :t foldMap
17:56:53 <lambdabot> Monad m => [a] -> (a -> m b) -> m ()
17:56:54 <lambdabot> (Foldable t, Monoid m) => (a -> m) -> t a -> m
17:57:08 <kmc> yeah that
17:57:15 -!- sirdancealot has joined.
17:57:18 <FreeFull> So flip foldMap
17:57:35 <FreeFull> And it works for things that aren't lists too
18:02:02 <boily> `quit
18:02:04 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: quit: not found
18:02:04 -!- boily has quit (Quit: Poulet!).
18:02:18 -!- boily has joined.
18:02:36 -!- metasepia has quit (Remote host closed the connection).
18:02:45 -!- metasepia has joined.
18:03:41 -!- azaq23 has joined.
18:03:43 -!- augur has quit (Remote host closed the connection).
18:03:54 -!- azaq23 has quit (Max SendQ exceeded).
18:04:31 <FreeFull> `pkill
18:04:33 <HackEgo> pkill: No matching criteria specified \ Usage: pkill [-SIGNAL] [-fvx] [-n|-o] [-P PPIDLIST] [-g PGRPLIST] [-s SIDLIST] \ [-u EUIDLIST] [-U UIDLIST] [-G GIDLIST] [-t TERMLIST] [PATTERN]
18:04:47 <FreeFull> `pkill -9 a
18:04:51 <HackEgo> pkill: No matching criteria specified \ Usage: pkill [-SIGNAL] [-fvx] [-n|-o] [-P PPIDLIST] [-g PGRPLIST] [-s SIDLIST] \ [-u EUIDLIST] [-U UIDLIST] [-G GIDLIST] [-t TERMLIST] [PATTERN]
18:05:01 <FreeFull> `run pkill -9 a
18:05:03 <HackEgo> pkill: 2 - Operation not permitted \ pkill: 45 - Operation not permitted \ pkill: 70 - Operation not permitted \ pkill: 71 - Operation not permitted \ Killed
18:05:17 <FreeFull> I wonder what it killed
18:05:24 <ais523> nothing useful
18:05:32 <ais523> there's a separate set of processes for each command you run
18:05:36 <ais523> `run echo $$
18:05:38 <HackEgo> 284
18:05:39 <ais523> `run echo $$
18:05:41 <HackEgo> 284
18:05:44 <ais523> see?
18:06:59 <kmc> every command to HackEgo boots a separate User Mode Linux machine, and then merges any filesystem changes using Mercurial
18:07:07 <kmc> it's awesomely insane
18:07:13 <kmc> `uptime
18:07:15 <HackEgo> ​ 18:07:14 up 0 min, 0 users, load average: 0.00, 0.00, 0.00
18:07:16 <elliott> if you told someone on IRC your IRC bot booted up linux for every single command you run on it
18:07:20 <elliott> in like the 90s
18:07:25 <elliott> what would they say
18:07:41 <kmc> that you're lying most likely
18:07:48 <Taneb> Huh
18:07:49 <Gregor> "Boot" is true but enormously misleading.
18:07:55 <Taneb> On Tumblr, '>' does something
18:08:02 <Taneb> No, '.' does
18:08:39 <kmc> Gregor: why? just because UML is lightweight?
18:09:16 <Gregor> Because when I hear "boot" I imagine a BIOS loading a bootloader which loads a kernel and then starts up, not a kernel running as a usermode process which has very little startup to do on its own.
18:09:54 <Gregor> The actual word doesn't mean that, but by the same token you can say that you "boot up" a shell every time you run a shell script. It's not a lie, but why would you use that term *shrugs*
18:10:15 <kmc> because it's the term usually used for starting an instance of Linux?
18:10:24 <kmc> if anything, i think the "machine" part is more misleading
18:10:41 <Gregor> Oh, heh, T.B.H. I didn't even notice that word X-D
18:10:41 -!- nooodl has quit (Ping timeout: 248 seconds).
18:10:42 <Gregor> But yes.
18:10:43 * kmc downloads and boots TCCBOOT
18:11:13 <elliott> Gregor: IMO make HackEgo use qemu for extra security
18:11:43 <ais523> elliott: hmm
18:11:43 <boily> elliott: I'd go with vagrant, just because it's more points at scrabble.
18:11:51 <ais523> in the 90s I didn't have such a good idea of what Linux was
18:11:53 <Gregor> Qemu which boots to a Debian instance which in turn runs umlbox?
18:11:59 <kmc> i assume everyone here has seen tccboot and also jslinux
18:12:17 <Gregor> kmc: jslinux was cooler when I did the same thing with MIPS a year earlier.
18:12:25 <kmc> heh
18:12:27 <kmc> is it online?
18:12:32 <Gregor> http://codu.org/jsmips/
18:12:39 <Gregor> Oh, yes, but not there X-D
18:12:43 <elliott> Gregor: I remember when it was MMIX
18:12:52 <ais523> I was actually explaining the difference between UNIX and Linux to a student today, because they asked
18:13:00 <Gregor> OK, I guess it's not especially online any more X-D
18:13:04 <Gregor> kmc: It was then ;)
18:13:14 <kmc> did you pick MIPS because it's one of the simpler arches with a full GNU/Linux stack?
18:13:28 <kmc> and what are the platform interfaces like? presumably there are a lot to choose from
18:13:41 <Gregor> I actually didn't implement the whole architecture, just the ISA, and I didn't run a kernel, just had JS respond directly to syscalls.
18:13:46 <Gregor> So I didn't REALLY do the same as jslinux.
18:13:55 <kmc> ah
18:14:03 <Gregor> But you could compile C code to the browser and run it at semi-reasonable speed *shrugs*
18:14:07 <kmc> so what do you mean by "just the ISA"
18:14:18 <Gregor> Just the instruction set.
18:14:35 <kmc> i saw a paper where they implemented C, C++, etc. for JVM by using gcc to compile to MIPS and then translating that to JVM bytecode
18:14:55 <kmc> Gregor: what parts of the architecture did you not implement, then
18:14:57 <Gregor> Yup. NestedVM was the latest version of that stack I recall.
18:15:03 <Gregor> kmc: Everything other than the instruction set X-D
18:15:10 <kmc> meaning what? memory management?
18:15:16 <Gregor> Memory management I have.
18:15:30 <Gregor> But no buses, no disks, no graphics, etc.
18:15:34 <kmc> ok
18:15:41 <kmc> i don't consider that part of "MIPS architecture"
18:15:41 <Gregor> Everything that would be a syscall in a normal OS jumps to JS code.
18:15:46 <kmc> unless MIPS is specified in an unusual way
18:15:46 <Gregor> Ah.
18:15:51 <elliott> Gregor: you never listened to me when I told you to get X-on-canvas running :(
18:16:03 <Gregor> elliott: Sure I did, I just didn't do it ;)
18:16:05 <kmc> lots of CPU architectures come on many different platforms
18:16:10 <Gregor> kmc: Well, you can't boot Linux without them, so that makes jslinux incomparable ;)
18:16:32 <kmc> x86 is kind of an anomaly in that when people say x86 they usually mean "PC compatible" and then you have a BIOS with disk, keyboard, etc., and probably a PCI bus, etc
18:16:38 <kmc> but even for x86 there are plenty of exceptions
18:16:55 <kmc> OLPC XO-1 isn't PC-compatible; neither are SGI's huge NUMA machines
18:17:47 <kmc> neither is that fucking custom 80186 dev board from the embedded systems class from hell
18:17:48 <elliott> i think the olpcs are pc-compatible nowadays
18:17:52 <kmc> maybe
18:17:53 <elliott> because they run fucking windows :(
18:17:56 <kmc> i guess they caved and... yeah
18:18:08 <elliott> i hear it was more "negroponte" rather than "they"
18:18:09 <kmc> maybe they dual-boot between Open Firmware and BIOS
18:18:15 <kmc> shrug
18:21:18 -!- copumpkin has quit (Ping timeout: 252 seconds).
18:21:29 -!- Bike has joined.
18:22:28 -!- copumpkin has joined.
18:25:26 -!- c00kiemon5ter has joined.
18:25:44 -!- azaq23 has joined.
18:25:52 -!- azaq23 has quit (Max SendQ exceeded).
18:28:45 -!- azaq23 has joined.
18:35:29 <elliott> maximum . map abs = abs . maximum, right?
18:35:35 <elliott> ignoring floating point weirdness and such
18:35:40 <coppro> elliott: no
18:35:43 <coppro> {-2, 1}
18:35:48 <elliott> oh
18:35:49 <elliott> I'm an idiot
18:35:52 <elliott> I thought abs was rounding??
18:35:54 <elliott> for a brief second
18:36:01 <Bike> good second
18:39:48 -!- Taneb has quit (Ping timeout: 264 seconds).
18:41:52 <olsner> abs rounds to the value closest to the absolute value
18:43:37 <Bike> @src maximum
18:43:38 <lambdabot> maximum [] = undefined
18:43:38 <lambdabot> maximum xs = foldl1 max xs
18:44:00 <elliott> I like how that undefined clause is pointless.
18:44:36 <mroman> Out of 10 Random Wikipediapages 7 are people.
18:44:42 <Bike> > fold1 max []
18:44:44 <lambdabot> Not in scope: `fold1'
18:44:44 <lambdabot> Perhaps you meant one of these:
18:44:44 <lambdabot> `foldl1' (importe...
18:44:49 <Bike> > foldl1 max []
18:44:51 <lambdabot> *Exception: Prelude.foldl1: empty list
18:45:03 <Bike> > maximum []
18:45:05 <lambdabot> *Exception: Prelude.maximum: empty list
18:45:07 <boily> does deriving Ord in Haskell guarantee a total order, or at least a lattice?
18:45:10 <Bike> useful
18:45:24 -!- sebbu has quit (Ping timeout: 248 seconds).
18:46:57 -!- Taneb has joined.
18:47:43 -!- augur has joined.
18:48:00 <Taneb> Well, my C code core-dumps
18:48:27 <Taneb> But it's climbed the -Wall
18:49:21 <Gregor> That's easy to fix.
18:49:23 <Gregor> ulimit -c 0
18:49:26 <Gregor> Tada, doesn't core-dump.
18:49:35 <coppro> Taneb: try the -Wextra
18:49:39 <ais523> Gregor: it still says (core dumped)
18:49:44 <ais523> it just doesn't save the core anywhere
18:49:46 <ais523> Taneb: also try valgrind
18:49:47 <coppro> Taneb: or, if you're using clang, try -Weverything
18:49:54 <Gregor> ais523: It doesn't for me...
18:49:54 <coppro> which actually does *all*
18:50:04 <ais523> Gregor: does for me
18:50:09 <ais523> although, hmm
18:50:13 <ais523> perhaps it depends on whether it's -Sc or -Hc
18:50:21 <ais523> coppro: yeah, but some of them are bad ideas
18:50:26 <ais523> or very specific
18:50:38 -!- Phantom___Hoover has quit (Ping timeout: 255 seconds).
18:50:47 <ais523> splint has warning levels higher than is remotely sane, and is buggy enough that you could never expect to comply with them
18:50:50 <ais523> also complains about system headers
18:50:58 -!- Phantom___Hoover has joined.
18:51:49 <Gregor> ais523: http://sprunge.us/WMUd
18:52:24 <coppro> ais523: yeah
18:52:41 <coppro> ais523: -Weverything is literally everything, including style warnings and the like
18:52:46 <coppro> not recommended for human consumption
18:52:56 <Gregor> I s'pose since it's the shell that interprets the SIGCHLD, it could determine intelligently whether a core had been dumped and just change the message *shrugs*
18:53:39 -!- sebbu has joined.
18:59:12 <Taneb> coppro, I'm using gcc
19:00:14 <Taneb> Hmm
19:01:29 <Taneb> ais523, should I take your warning as a "here's splint, give it a go", or an "avoid at all costs"
19:01:29 -!- c00kiemon5ter has quit (Remote host closed the connection).
19:01:46 -!- c00kiemon5ter has joined.
19:01:50 <ais523> Taneb: take it as "splint is a good idea in theory but too buggy for practical use"
19:02:02 <Taneb> Use it right now y/n
19:02:12 <ais523> also, it has many of the same ideas as Rust does, except Rust is a language and Splint is a linter
19:02:24 <ais523> Taneb: it can't hurt
19:02:52 <Taneb> (it gets past -Wextra)
19:03:19 <Taneb> splint hits a parse error...
19:03:21 <elliott> ais523: that bodes terribly for either rust or splint
19:03:25 <coppro> what gets past -Wextra?
19:03:30 <Taneb> coppro, my program
19:03:47 <Taneb> It compiles with -Wall -Werror -Wextra
19:03:54 <ais523> elliott: for splint, probably; I even think of Rust as a fixed version of C+Splint
19:04:03 <ais523> oh yeah, splint hits parse errors a lot
19:05:27 <coppro> ais523: what do you think of Rust?
19:06:07 <Taneb> It hits a parse error because I'm using gmp
19:06:08 <Gregor> coppro: He thinks of it as a fixed version of C+Splint.
19:06:17 <ais523> coppro: I like it
19:06:22 <ais523> or Gregor's answer
19:06:23 -!- Phantom___Hoover has quit (Ping timeout: 255 seconds).
19:07:05 <Taneb> "thanks, split"
19:07:42 -!- Phantom___Hoover has joined.
19:08:52 -!- c00kiemon5ter has quit (Remote host closed the connection).
19:09:23 -!- c00kiemon5ter has joined.
19:12:35 -!- Phantom___Hoover has quit (Ping timeout: 244 seconds).
19:13:34 -!- Phantom___Hoover has joined.
19:13:35 -!- c00kiemon5ter has quit (Ping timeout: 255 seconds).
19:14:18 <Taneb> Okay, I have no idea how to get splint and gmp to play nice
19:15:09 <Taneb> :(
19:15:12 <elliott> probably you don't
19:18:17 <ais523> there is a chance that someone else has an idea, somewhere else in the world
19:18:30 -!- Phantom___Hoover has quit (Ping timeout: 252 seconds).
19:18:36 <Bike> poor bastard
19:18:46 <olsner> it is unlikely that anyone has any idea anywhere
19:19:41 <Taneb> http://www.mail-archive.com/lclint-interest@virginia.edu/msg00303.html looks like the same thing
19:21:44 <Taneb> Ooh, that's a prettier core dump
19:23:23 <Taneb> http://hastebin.com/wegaqedudo.txt
19:27:42 -!- Phantom___Hoover has joined.
19:28:21 -!- monqy has joined.
19:31:35 -!- nooga has quit (Ping timeout: 255 seconds).
19:32:03 <Taneb> You can tell a lot about me from that paste
19:32:14 <Taneb> Firstly, I use multiple pastebins
19:32:31 <Bike> hello vdso.... if that is your real name..........
19:32:41 -!- Phantom___Hoover has quit (Ping timeout: 256 seconds).
19:33:13 <elliott> :t intercalate
19:33:15 <lambdabot> [a] -> [[a]] -> [a]
19:33:43 <Taneb> Bike...
19:33:46 <monqy> :t intersperse
19:33:48 <lambdabot> a -> [a] -> [a]
19:34:03 <Bike> :t interplanetary
19:34:05 <lambdabot> Not in scope: `interplanetary'
19:34:55 <ion> intersPerse
19:35:10 <boily> Bike: interplanetary is too far away to be in scope.
19:36:32 <Bike> :(
19:36:45 <Bike> :t intergalactic
19:36:46 -!- oerjan has joined.
19:36:47 <lambdabot> Not in scope: `intergalactic'
19:37:08 -!- epicmonkey has quit (Ping timeout: 248 seconds).
19:37:11 <Taneb> :t interfamilial
19:37:13 <lambdabot> Not in scope: `interfamilial'
19:37:32 <oerjan> now wat
19:37:52 <boily> oerjan: Bike tried to be spacial.
19:38:05 <oerjan> a common mistake.
19:38:41 <Bike> :( (
19:39:02 <oerjan> <Bike> i assume read forms a monoid <-- assume a spherical monoid in a Void
19:41:07 <oerjan> <shachaf> @ask monqy What happened to your quit message? <-- quit messages are censored if you haven't been logged on long enough, hth
19:41:50 <oerjan> (3 minutes and 28 seconds are presumable not long enough.)
19:41:50 <olsner> if the one who quits hasn't been logged on long enough?
19:41:55 <oerjan> yes
19:41:56 <olsner> or the one who reads the quit message?
19:42:26 -!- Phantom___Hoover has joined.
19:42:54 <oerjan> olsner: yes.
19:43:00 <olsner> oerjan: ok
19:43:24 -!- metasepia has quit (Ping timeout: 264 seconds).
19:44:35 -!- boily has quit (Ping timeout: 256 seconds).
19:46:45 <elliott> yes and no I think
19:47:23 <FreeFull> :t interracial
19:47:24 <lambdabot> Not in scope: `interracial'
19:47:53 <Bike> o:
19:48:07 -!- metasepia has joined.
19:48:08 -!- boily has joined.
19:51:42 -!- Phantom___Hoover has quit (Ping timeout: 264 seconds).
19:52:34 -!- Phantom___Hoover has joined.
19:52:55 -!- carado_ has quit (Ping timeout: 246 seconds).
19:58:03 -!- Phantom___Hoover has quit (Ping timeout: 244 seconds).
19:59:46 <oerjan> `factor 808017424794512875886459904961710757005754368000000000
19:59:47 <HackEgo> factor: `808017424794512875886459904961710757005754368000000000' is too large
19:59:51 <oerjan> LAME
20:00:01 <Taneb> 2
20:00:22 <boily> ~eval primeFactors 123
20:00:23 <metasepia> [3,41]
20:00:24 <oerjan> i don't think that's its complete prime factorization, Taneb
20:00:32 <boily> ~eval primeFactors 808017424794512875886459904961710757005754368000000000
20:00:33 <metasepia> [2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,5,5,5,5,5,5,5,5,5,7,7,7,7,7,7,11,11,13,13,13,17,19,23,29,31,41,47,59,71]
20:00:35 <Taneb> oerjan, it's a start
20:01:04 <oerjan> metasepia 1, HackEgo 0.
20:01:40 -!- carado has joined.
20:01:46 <oerjan> is metasepia a reference to the claim cuttlefishes don't have color vision
20:02:16 <Taneb> ~eval 7 ^. re (_Just . _Left . enum) :: Maybe (Either Char Bool)
20:02:18 <metasepia> Error (1): Couldn't match type `GHC.Types.Int' with `GHC.Types.Char'
20:02:18 <metasepia> Expected type: Control.Lens.Internal.Review.Reviewed
20:02:18 <metasepia> t0 (Data.Functor.Identity.Identity t0)
20:02:18 <metasepia> -> Control.Lens.Internal.Review.Reviewed
20:02:18 <metasepia> GHC.Types.Int (Data.Functor.Identity.Identity GHC.Types.Char)
20:02:19 <metasepia> Actual type: Control.Lens.Internal.Review.Reviewed
20:02:19 <metasepia> t0 (Data.Functor.Identity.Identity t0)
20:02:20 <metasepia> -> Control.Lens.Internal.Review.Reviewed
20:02:20 <metasepia> GHC.Types.Int (Data.Functor.Identity.Identity GHC.Types.Int)
20:02:28 <Taneb> ~eval 7 ^. re (_Just . _Left . from enum) :: Maybe (Either Char Bool)
20:02:29 <metasepia> Just (Left '\a')
20:02:36 <Taneb> ~eval 49 ^. re (_Just . _Left . from enum) :: Maybe (Either Char Bool)
20:02:37 <metasepia> Just (Left '1')
20:02:41 <boily> oerjan: it's name after Metasepia Pfefferi.
20:02:48 <boily> s/e\b/ed/
20:02:58 <oerjan> ah
20:04:14 <boily> created a github project earlier this morning, just to be sure.
20:05:00 <elliott> i still miss cuttlefish
20:05:09 <FreeFull> Does metasepia use the primes package or something else?
20:05:35 <oerjan> ~eval (0$0 `primeFactors`)
20:05:35 <metasepia> Error (1): The operator `Data.Numbers.Primes.primeFactors' [infixl 9] of a section
20:05:36 <metasepia> must have lower precedence than that of the operand,
20:05:36 <metasepia> namely `GHC.Base.$' [infixr 0]
20:05:36 <metasepia> in the section: `0 $ 0 `primeFactors`'
20:05:53 <Taneb> ~type (+)
20:05:54 <metasepia> --- Possible commands: dice, duck, echo, eval, fortune, metar, ping, yi
20:06:03 <Taneb> boily, you know what to do
20:06:26 <oerjan> ~type (+)==()
20:06:27 <metasepia> --- Possible commands: dice, duck, echo, eval, fortune, metar, ping, yi
20:06:31 <oerjan> ~eval (+)==()
20:06:32 <metasepia> Error (1): Couldn't match expected type `a0 -> a0 -> a0' with actual type `()'
20:06:33 <boily> Taneb: I'm reading RFC 2812 for now, I still have to reimplement that IRC client stack for it to support SSL.
20:06:35 <FreeFull> :t (+)
20:06:37 <lambdabot> Num a => a -> a -> a
20:06:47 <FreeFull> ~duck
20:06:48 <metasepia> --- ~duck query
20:06:48 <metasepia> --- Query information from Duck Duck Go
20:06:57 <Taneb> ~duck Hexham
20:06:57 <FreeFull> ~duck longest pie
20:06:58 <metasepia> --- No relevant information
20:06:58 <metasepia> --- No relevant information
20:07:05 <Taneb> ~duck Northumberland
20:07:05 <metasepia> n the northernmost county of England, on the North Sea: hilly in the north and west, with many Roman remains, notably Hadrian's Wall; shipbuilding, coal mining.
20:07:21 <boily> any and all suggestions, desires, opinions and other wishes you can come up with will probably be readily accepted and implemented.
20:07:35 <FreeFull> ~duck programming language
20:07:36 <metasepia> A programming language is an artificial language designed to communicate instructions to a machine, particularly a computer.
20:07:46 <Taneb> boily, can you make a DOS version of HackEgo?
20:08:12 <elliott> ~botsnack
20:08:12 <metasepia> --- Possible commands: dice, duck, echo, eval, fortune, metar, ping, yi
20:08:16 <elliott> boily: it needs ~botsnack.
20:08:22 <boily> what's botsnack?
20:08:24 <elliott> @botsnack
20:08:24 <lambdabot> :)
20:08:31 <Taneb> `botsnack
20:08:33 <HackEgo> ​:-D
20:08:36 <Taneb> ^botsnack
20:08:49 <Taneb> fungot why
20:08:49 <fungot> Taneb: i mean that in the ' save as text' shows bold text. whoops.
20:09:00 <Taneb> !botsnack
20:09:09 <Taneb> EgoBot why
20:09:12 <Taneb> #botsnack
20:09:23 <Taneb> Who was #
20:09:24 -!- ogrom has joined.
20:09:51 <boily> ok, so: 1. Implement an IRC stack; 2. Add botsnack; 3. Kill Morgoth.
20:10:13 <Taneb> boily, can I take this opportunity to say that it's okay for metasepia to use '~' because Pietbot sucked?
20:10:43 <ais523> + is thutubot
20:10:48 <boily> somebody else was using ~ besides me?
20:10:52 <Taneb> Yeah, me
20:10:55 <Taneb> Pietbot
20:10:57 <Taneb> It sucked
20:11:09 <Taneb> It couldn't quite run deadfish programs
20:11:23 <boily> I boldly reaffirm my possession and exclusive usage of ~!
20:11:43 <oerjan> `botsnack
20:11:44 <boily> Taneb: uhm. ok. I... uhm... well... uh... that's quite an impressive achievement, if I may say so.
20:11:45 <HackEgo> ​:-D
20:12:41 <oerjan> !addinterp botsnack sh echo "^_^"
20:12:42 <EgoBot> ​Interpreter botsnack installed.
20:12:45 <oerjan> !botsnack
20:12:47 <EgoBot> ​^_^
20:13:33 -!- sirdancealot has quit (Remote host closed the connection).
20:13:38 <oerjan> ^prefixes
20:13:38 <fungot> Bot prefixes: fungot ^, HackEgo `, EgoBot !, lambdabot @ or ?
20:13:45 <Taneb> ?botsnack
20:13:46 <lambdabot> :)
20:13:53 <oerjan> ^show prefixes
20:13:53 <fungot> (Bot prefixes: fungot ^, HackEgo `, EgoBot !, lambdabot @ or ?)S
20:14:19 <oerjan> ^def prefixes ul (Bot prefixes: fungot ^, HackEgo `, EgoBot !, lambdabot @ or ?, thutubot +, metasepia ~)S
20:14:20 <fungot> Defined.
20:14:23 <oerjan> ^prefixes
20:14:23 <fungot> Bot prefixes: fungot ^, HackEgo `, EgoBot !, lambdabot @ or ?, thutubot +, metasepia ~
20:14:31 <oerjan> !show prefixes
20:14:31 <Bike> +botsnack
20:14:31 <EgoBot> underload (Bot prefixes: fungot ^, HackEgo `, EgoBot !, lambdabot @ or ?)S
20:14:45 <oerjan> !delinterp prefixes
20:14:46 <EgoBot> ​Interpreter prefixes deleted.
20:14:58 <oerjan> ^addinterp prefixes underload (Bot prefixes: fungot ^, HackEgo `, EgoBot !, lambdabot @ or ?, thutubot +, metasepia ~)S
20:15:04 <oerjan> !addinterp prefixes underload (Bot prefixes: fungot ^, HackEgo `, EgoBot !, lambdabot @ or ?, thutubot +, metasepia ~)S
20:15:04 <fungot> oerjan: let it equal that from the bf algorithms page. i'm thinking about
20:15:05 <EgoBot> ​Interpreter prefixes installed.
20:15:18 <oerjan> `cat bin/prefixes
20:15:20 <HackEgo> ​#!/bin/sh \ echo 'Bot prefixes: fungot ^, HackEgo `, EgoBot !, lambdabot @ or ?'
20:15:37 <Bike> All the other bots should just query HackEgo, clearly.
20:15:56 <oerjan> `sed -i '2s/$/, thutubot +, metasepia ~/' bin/prefixes
20:15:58 <HackEgo> Usage: sed [OPTION]... {script-only-if-no-other-script} [input-file]... \ \ -n, --quiet, --silent \ suppress automatic printing of pattern space \ -e script, --expression=script \ add the script to the commands to be executed \ -f script-file, --file=script-file \ add the contents of script-
20:16:06 <oerjan> `run sed -i '2s/$/, thutubot +, metasepia ~/' bin/prefixes
20:16:08 -!- Phantom___Hoover has joined.
20:16:09 <HackEgo> No output.
20:16:13 <oerjan> `prefixes
20:16:15 <HackEgo> Bot prefixes: fungot ^, HackEgo `, EgoBot !, lambdabot @ or ?, thutubot +, metasepia /tmp
20:16:16 <oerjan> !prefixes
20:16:17 <EgoBot> Bot prefixes: fungot ^, HackEgo `, EgoBot !, lambdabot @ or ?, thutubot +, metasepia ~
20:16:23 <oerjan> ...wat
20:16:27 <boily> uhm...
20:16:34 <oerjan> `revert
20:16:37 <HackEgo> Done.
20:16:50 -!- nooga has joined.
20:17:00 <oerjan> `run sed -i '2s/$/, thutubot +, metasepia \~/' bin/prefixes
20:17:04 <HackEgo> No output.
20:17:08 <oerjan> `prefixes
20:17:10 <HackEgo> Bot prefixes: fungot ^, HackEgo `, EgoBot !, lambdabot @ or ?, thutubot +, metasepia /tmp
20:17:15 <boily> ...
20:17:25 <oerjan> `echo ~/
20:17:27 <HackEgo> ​~/
20:17:33 <oerjan> `run echo '~/'
20:17:35 <HackEgo> ​~/
20:17:43 <oerjan> huh
20:18:03 <oerjan> `revert
20:18:06 <HackEgo> Done.
20:18:07 <oerjan> `prefixes
20:18:09 <HackEgo> Bot prefixes: fungot ^, HackEgo `, EgoBot !, lambdabot @ or ?
20:18:30 <oerjan> `run sed -i '2s_$_, thutubot +, metasepia \~_' bin/prefixes
20:18:34 <HackEgo> No output.
20:18:36 <oerjan> `prefixes
20:18:38 <HackEgo> Bot prefixes: fungot ^, HackEgo `, EgoBot !, lambdabot @ or ?, thutubot +, metasepia /tmp
20:18:43 <oerjan> ffuu
20:18:44 <Bike> awesome.
20:18:50 <Bike> `run echo 'hi' | sed 's/hi/~/'
20:18:51 <oerjan> `revert
20:18:51 <boily> as we say, «bin là».
20:18:51 <HackEgo> ​~
20:18:53 <HackEgo> Done.
20:19:45 <elliott> oerjan: tip: cat bin/prefixes
20:19:49 <oerjan> `run echo 'hi' | sed 's/hi/ ~/'
20:19:51 <HackEgo> ​ ~
20:20:00 <oerjan> `cat bin/prefixes
20:20:01 <HackEgo> ​#!/bin/sh \ echo 'Bot prefixes: fungot ^, HackEgo `, EgoBot !, lambdabot @ or ?'
20:20:16 <oerjan> ...
20:20:21 <elliott> @ or ?', blah blah ~
20:20:22 <Bike> `run sed -i '2s_$_, thutubot +, metasepia \~_' bin/prefixes
20:20:26 <HackEgo> No output.
20:20:28 <elliott> no god dammit
20:20:31 <Bike> `cat bin/prefixes
20:20:32 <HackEgo> ​#!/bin/sh \ echo 'Bot prefixes: fungot ^, HackEgo `, EgoBot !, lambdabot @ or ?', thutubot +, metasepia ~
20:20:34 <Bike> yes god dammit.
20:20:35 <boily> ah!
20:20:37 <Bike> Yes.
20:20:39 <boily> at last!
20:20:41 <boily> :D
20:20:46 <elliott> `revert
20:20:48 <HackEgo> Done.
20:20:49 <elliott> boily: no it's not working :P
20:21:01 <boily> elliott: toé mon espèce de...
20:21:17 <Bike> I swear, this channel actually makes me want to figure out ed some time, because it couldn't possibly be more bullshit than sed.
20:21:19 * boily swats elliott with a random cephalopod
20:21:41 <oerjan> `run sed -i '2s_'$_, thutubot +, metasepia ~'\''_' bin/prefixes
20:21:43 <HackEgo> sed: -e expression #1, char 8: unterminated `s' command
20:21:45 <oerjan> ff
20:21:57 <oerjan> `run sed -i '2s_'\''$_, thutubot +, metasepia ~'\''_' bin/prefixes
20:22:01 <HackEgo> No output.
20:22:04 <oerjan> `prefixes
20:22:06 <HackEgo> Bot prefixes: fungot ^, HackEgo `, EgoBot !, lambdabot @ or ?, thutubot +, metasepia ~
20:22:07 <elliott> you fools. you think you can figure out unix
20:22:10 <oerjan> whew
20:22:16 <elliott> you know nothing!
20:22:30 <Bike> elliott: Lucky for me I don't actually do things that I want to do.
20:25:18 <monqy> metasepia??
20:25:30 <elliott> monqy: its like cuttlefish but not called cuttlefish
20:25:33 <elliott> instead it has a worse name
20:25:35 <monqy> ah...
20:25:45 <oerjan> ) 2+2
20:25:46 <jconn> oerjan: 4
20:25:51 <oerjan> OH NO
20:26:05 <oerjan> !blsq 1
20:26:05 <blsqbot> 1
20:26:32 <monqy> i should make a bot where the prefix is >. that's not used right
20:26:54 <oerjan> `run sed -i '2s_'\''$_, jconn ), blsqbot !'\''_' bin/prefixes
20:26:58 <Bike> i like having bots that respond to their name
20:26:59 <HackEgo> No output.
20:27:00 <oerjan> `prefixes
20:27:01 <HackEgo> Bot prefixes: fungot ^, HackEgo `, EgoBot !, lambdabot @ or ?, thutubot +, metasepia ~, jconn ), blsqbot !
20:27:08 <Bike> so you can do "HackEgo, make me a pie" or w/e
20:27:11 <oerjan> ^prefixes
20:27:11 <fungot> Bot prefixes: fungot ^, HackEgo `, EgoBot !, lambdabot @ or ?, thutubot +, metasepia ~
20:27:12 <monqy> what happened to preflex
20:27:33 <oerjan> !delinterp prefixes
20:27:34 <EgoBot> ​Interpreter prefixes deleted.
20:28:00 <elliott> monqy: well mauke left
20:28:03 <monqy> rip
20:28:08 <oerjan> oh fff
20:28:23 <oerjan> cannot add jconn with underload :P
20:28:42 <elliott> bf_txtgen time
20:28:55 <Gregor> monqy: You should use » as a prefix.
20:30:18 <monqy> could use ☺ as a prefix
20:30:19 <oerjan> !bf_txtgen Bot prefixes: fungot ^, HackEgo `, EgoBot !, lambdabot @ or ?, thutubot +, metasepia ~, jconn ), blsqbot !
20:30:19 <fungot> oerjan: fnord doesn't have magus available. when you use it, then?
20:31:02 <monqy> good bf_txtgen
20:31:30 <oerjan> !addinterp prefixes sh echo 'Bot prefixes: fungot ^, HackEgo `, EgoBot !, lambdabot @ or ?, thutubot +, metasepia ~, jconn ), blsqbot !'
20:31:31 <fungot> oerjan: s/ whi/ who/ that's an error to use car on a string
20:31:32 <EgoBot> ​1111 +++++++++++[>++++++>+++>++++++++++>+++++++++<<<<-]>.>>+.+++++.<-.>----.++.>++.+.+++.<++++++.>----.<-----.<<--------.--------------------------.>>>+.<++.>++++++++.-------.<------.+++++.<<.>>>---------.<<++++++++++++.<.>++++++++++++++++++++++++++++.>>+++.++.<---------.<---.>>++++.<++++.<<.>>>-------.<<<++++++++++++.------------.>.>>+++++++.<.<---.>>++++++++.+++++.<<<.+.+++++++++++.------------.>>---.<+++++++++++++++++++++++++++++++.>+.<+.++.---.+.>++.>.<<<.>-
20:31:43 <boily> ☺ is a good choice, IMHO. just have to remember it's U+263A.
20:31:47 <oerjan> SOMETHING TELLS ME IT GOT CUT OFF
20:31:53 <oerjan> !echo hi
20:31:54 <EgoBot> hi
20:32:04 <oerjan> !prefixes
20:32:05 <EgoBot> Bot prefixes: fungot ^, HackEgo `, EgoBot !, lambdabot @ or ?, thutubot +, metasepia ~, jconn ), blsqbot !
20:32:21 <oerjan> !bf +++++++++++[>++++++>+++>++++++++++>+++++++++<<<<-]>.>>+.+++++.<-.>----.++.>++.+.+++.<++++++.>----.<-----.<<--------.--------------------------.>>>+.<++.>++++++++.-------.<------.+++++.<<.>>>---------.<<++++++++++++.<.>++++++++++++++++++++++++++++.>>+++.++.<---------.<---.>>++++.<++++.<<.>>>-------.<<<++++++++++++.------------.>.>>+++++++.<.<---.>>++++++++.+++++.<<<.+.+++++++++++.------------.>>---.<+++++++++++++++++++++++++++++++.>+.<+.++.---.+.>+
20:32:22 <EgoBot> Bot prefixes: fungot ^, HackEgo `, EgoBot !, lambdab
20:32:48 <oerjan> SEEMS IMPRACTICAL
20:33:05 <Gregor> lol
20:33:22 <Gregor> What IS lambdab's prefix anyway???
20:35:03 <oerjan> `run interp 'bf_txtgen Bot prefixes: fungot ^, HackEgo `, EgoBot !, lambdabot @ or ?, thutubot +, metasepia ~, jconn ), blsqbot !' >prefs
20:35:03 <fungot> oerjan: http://www.kollektiv-hamburg.de/forcer/ test.html could you upload it to fnord
20:35:08 <HackEgo> exec: 4: ibin/bf_txtgen: not found
20:35:14 <oerjan> AAAAAAAAAAAAAAAAAaaa
20:35:48 <oerjan> `ls interp
20:35:51 <HackEgo> ​/bin/ls: cannot access interp: No such file or directory \ /bin/ls: cannot access interp: No such file or directory
20:35:52 <oerjan> `ls interps
20:35:53 <HackEgo> 1l \ 2l \ adjust \ axo \ befunge \ bfjoust \ bf_txtgen \ boof \ build.sh \ cfunge \ c-intercal \ clc-intercal \ dimensifuck \ egobch \ egobf \ fukyorbrane \ gcccomp \ gforth_quit \ ghc \ glass \ glypho \ kipple \ lambda \ lazyk \ linguine \ Makefile \ malbolge \ pbrain \ qbf \ rail \ rhotor \ sadol \ sceql \ trigger \ udage01 \ underload \ unlambda
20:36:09 <oerjan> `ls interps/bf_txtgen
20:36:11 <HackEgo> CompareIndividuals.class \ Individual.class \ textgen.class \ textgen.java \ textgen.tar.gz
20:36:53 -!- atriq has joined.
20:36:55 <oerjan> `cat bin/interp
20:36:56 <HackEgo> ​#!/bin/sh \ CMD=`echo "$1" | cut -d' ' -f1` \ ARG=`echo "$1" | cut -d' ' -f2-` \ exec ibin/$CMD "$ARG"
20:37:06 -!- Taneb has quit (Disconnected by services).
20:37:09 -!- atriq has changed nick to Taneb.
20:37:56 <oerjan> `ls ibin
20:37:59 <HackEgo> 1l \ 2l \ adjust \ asm \ axo \ bch \ befunge \ befunge98 \ bf \ bf16 \ bf32 \ bf8 \ boolfuck \ c \ cintercal \ clcintercal \ cxx \ dimensifuck \ forth \ glass \ glypho \ haskell \ k \ kipple \ lambda \ lazyk \ linguine \ malbolge \ pbrain \ qbf \ rail \ rhotor \ sadol \ sceql \ sh \ trigger \ udage01 \ underload \ unlambda \ whirl
20:38:05 <Taneb> Good news!
20:38:06 <oerjan> `ls
20:38:08 <HackEgo> bin \ brainfuck.fu \ canary \ dbg.out \ dkVb20VL \ egobot.tar.xz \ etc \ factor \ foo \ foo.err \ foo.out \ ibin \ interps \ karma \ lib \ paste \ prefs \ quines \ quotes \ radio.php?out=inline&shuffle=1&limit=1&filter=*MitamineLab* \ sgfoobar \ share \ slist.rej \ src \ sudo \ %sudo \ test \ wisdom \ zalgo.hs
20:38:13 <Taneb> My program no longer segfaults and coredumps!
20:38:18 <Taneb> Probably!
20:38:27 <Gregor> It now coredumps due to some other fault?
20:38:36 <Taneb> It space leaks
20:38:43 <Gregor> PROBLEM: SOLVED
20:38:44 -!- nooga has quit (Ping timeout: 255 seconds).
20:38:51 <oerjan> Gregor: why isn't bf_txtgen in ibin/
20:38:59 <Gregor> Excellent question.
20:39:02 <Gregor> I haven't an excellent answer.
20:39:05 <Gregor> `ls bin/bf*
20:39:06 <HackEgo> ​/bin/ls: cannot access bin/bf*: No such file or directory \ /bin/ls: cannot access bin/bf*: No such file or directory
20:39:10 <Gregor> 'snot there either.
20:39:13 <Gregor> Nowait
20:39:15 <Gregor> `run ls bin/bf*
20:39:16 <HackEgo> ​/bin/ls: cannot access bin/bf*: No such file or directory \ /bin/ls: cannot access bin/bf*: No such file or directory
20:39:20 <Gregor> Still not there.
20:41:05 <oerjan> `run find | grep txtgen
20:41:08 <HackEgo> ​./.hg/store/data/interps/bf__txtgen \ ./.hg/store/data/interps/bf__txtgen/_compare_individuals.class.i \ ./.hg/store/data/interps/bf__txtgen/_individual.class.i \ ./.hg/store/data/interps/bf__txtgen/textgen.class.i \ ./.hg/store/data/interps/bf__txtgen/textgen.java.i \ ./.hg/store/data/interps/bf__txtgen/textgen.tar.gz.i \ ./interps/bf_txtgen \
20:41:32 <oerjan> `run find | grep txtgen | grep -v '[.]hg'
20:41:35 <HackEgo> ​./interps/bf_txtgen \ ./interps/bf_txtgen/CompareIndividuals.class \ ./interps/bf_txtgen/Individual.class \ ./interps/bf_txtgen/textgen.class \ ./interps/bf_txtgen/textgen.java \ ./interps/bf_txtgen/textgen.tar.gz
20:41:48 <Gregor> I probably didn't import it correctly.
20:41:52 <Gregor> s/probably/clearly/
20:42:03 <oerjan> `run find | grep txtgen | grep -v '[.]hg' | grep -v '[.]/interps/'
20:42:06 <HackEgo> No output.
20:42:38 -!- sirdancealot has joined.
20:43:11 <oerjan> boily: i see no other solution than you changing your prefix to ( i'm afraid
20:43:30 <elliott> oerjan: how about hide a ) at the end of the list
20:43:34 * boily preciously guards his shiny and wiggly ~
20:43:36 <Taneb> Wait
20:43:38 <elliott> wait
20:43:39 <elliott> never mind
20:43:43 <Taneb> Pietbot never had ~
20:43:45 <Taneb> It had )
20:43:51 <Taneb> "whoops"
20:43:55 <oerjan> or maybe blsqbot could do it, it's overlapping with EgoBot anyway
20:44:33 <monqy> how about we invent a bot that uses (
20:44:40 <oerjan> oh wait hm
20:45:11 <oerjan> !prefixes
20:45:12 <EgoBot> Bot prefixes: fungot ^, HackEgo `, EgoBot !, lambdabot @ or ?, thutubot +, metasepia ~, jconn ), blsqbot !
20:46:49 -!- carado has quit (Ping timeout: 246 seconds).
20:48:47 <boily> ~metar CYUL
20:48:47 <metasepia> CYUL 272045Z 05014KT 5/8SM R06L/3000FT/D R06R/3500FT/N SN OVC003 00/M00 A2980 RMK SN5SF3 SLP093
20:50:06 <oerjan> oh hm
20:50:38 <oerjan> ^rainbow
20:50:50 <oerjan> ^rainbow HOWDOESTHISWORKAGAINTESTINGHO
20:50:50 <fungot> HOWDOESTHISWORKAGAINTESTINGHO
20:50:57 <oerjan> ^show rainbow
20:50:57 <fungot> +3>4+6[->+8<],[<4.>[->+>+<2]>2-[-[-[-[-[-[-[<[-]>[-]]]]]]]]<[-<+>2+<]<+>4.[-<2+>3+<]<2+2.[-]>.>2[-<+>]<2,]
20:52:02 <oerjan> Testing
20:52:31 <boily> ^rainbow FWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFLFLBLBLBLBLBLBLBLBL!
20:52:32 <fungot> FWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFLFLBLBLBLBLBLBLBLB ...
20:52:40 <monqy> hi
20:52:50 <oerjan> oh wait that lack of dummy thing...
20:53:17 <oerjan> (semi-portable, that is)
20:53:40 <oerjan> Testing
20:53:45 <oerjan> nope
21:00:08 <oerjan> `ls interps/bf_txtgen
21:00:10 <HackEgo> CompareIndividuals.class \ Individual.class \ textgen.class \ textgen.java \ textgen.tar.gz
21:00:27 <oerjan> `run java interps/textgen.java test
21:00:32 <HackEgo> Exception in thread "main" java.lang.NoClassDefFoundError: interps/textgen/java \ Caused by: java.lang.ClassNotFoundException: interps.textgen.java \ at java.net.URLClassLoader$1.run(URLClassLoader.java:217) \ at java.security.AccessController.doPrivileged(Native Method) \ at java.net.URLClassLoader.findClass(URLClassLoader.java:205) \ at java.
21:00:53 <oerjan> !sh ls
21:00:54 <EgoBot> interps \ lib \ slox
21:01:00 <oerjan> !sh ls interps
21:01:01 <EgoBot> 1l \ 2l \ Makefile \ adjust \ axo \ befunge \ bf_txtgen \ bfjoust \ boof \ c-intercal \ cat \ cfunge \ clc-intercal \ dimensifuck \ egobch \ egobf \ fukyorbrane \ gcccomp \ gforth_quit \ ghc \ glass \ glypho \ kipple \ lambda \ lazyk \ linguine \ malbolge \ pbrain \ qbf \ rail \ rhotor \ sadol \ sceql \ trigger \ udage01 \ underload \ unlambda \ whirl
21:01:12 <oerjan> !sh ls interps/bf_txtgen
21:01:13 <EgoBot> CompareIndividuals.class \ Individual.class \ textgen \ textgen.class \ textgen.java \ textgen.tar.gz
21:01:23 <oerjan> !sh ls ..
21:01:24 <EgoBot> multibot_cmds
21:01:47 <oerjan> !sh ls ../..
21:01:47 <EgoBot> egobot.hg
21:01:53 <oerjan> !sh ls ../../..
21:01:54 <EgoBot> egobot
21:01:57 <oerjan> !sh ls ../../../..
21:01:58 <EgoBot> bin \ dev \ etc \ home \ lib \ lib64 \ opt \ proc \ tmp \ usr
21:02:10 <oerjan> Gregor: ok where the fuck is ibin in EgoBot
21:02:26 <Gregor> Nowhere.
21:02:31 <Gregor> You'd have to get it from the repo.
21:03:02 <Gregor> http://codu.org/projects/egobot/hg/index.cgi/file/ffe171208ae9/multibot_cmds/scmds/bf_txtgen
21:04:15 <oerjan> `ls lib/interp
21:04:17 <HackEgo> lib/interp
21:04:39 <oerjan> `fetch http://codu.org/projects/egobot/hg/index.cgi/raw-file/ffe171208ae9/multibot_cmds/scmds/bf_txtgen
21:04:41 <HackEgo> 2013-02-27 21:04:40 URL:http://codu.org/projects/egobot/hg/index.cgi/raw-file/ffe171208ae9/multibot_cmds/scmds/bf_txtgen [125/125] -> "bf_txtgen" [1]
21:04:54 <oerjan> `mv bf_txtgen ibin
21:04:56 <HackEgo> mv: missing destination file operand after `bf_txtgen ibin' \ Try `mv --help' for more information.
21:05:08 <oerjan> `run chmod a+x bf_txtgen; mv bf_txtgen ibin
21:05:13 <HackEgo> No output.
21:05:44 <oerjan> `run interp 'bf_txtgen Bot prefixes: fungot ^, HackEgo `, EgoBot !, lambdabot @ or ?, thutubot +, metasepia ~, jconn ), blsqbot !' >prefs
21:05:45 <tswett> Futari arukidasu.
21:06:05 <HackEgo> No output.
21:06:14 <oerjan> `wc prefs
21:06:15 <HackEgo> ​ 1 3 1116 prefs
21:06:19 <oerjan> O_O
21:06:36 <Gregor> `java
21:06:40 <HackEgo> Usage: java [-options] class [args...] \ (to execute a class) \ or java [-options] -jar jarfile [args...] \ (to execute a jar file) \ where options include: \ -d32 use a 32-bit data model if available \ -d64 use a 64-bit data model if available \ -server to select the "server" VM \ The d
21:06:51 <Gregor> `cat prefs
21:06:52 <HackEgo> 1104 +++++++++++++++[>++++++++>++++>+++++++>+++++++<<<<-]>>++++++.>++++++.<<----.>----------------------------------.<----.>>+++.<<-----------.+.>>>.<++++++.<<-.>>-----.<++++++++++++++++++++++++++.--------------------------.<+.>>++.>+++++.<<<+.>>>+.<-.<.>----------------------.<++++++++++++.------------.>----------------------.<<------.>+++++++++++
21:07:06 <Gregor> `run cut -d' ' -f2 prefs
21:07:07 <HackEgo> ​+++++++++++++++[>++++++++>++++>+++++++>+++++++<<<<-]>>++++++.>++++++.<<----.>----------------------------------.<----.>>+++.<<-----------.+.>>>.<++++++.<<-.>>-----.<++++++++++++++++++++++++++.--------------------------.<+.>>++.>+++++.<<<+.>>>+.<-.<.>----------------------.<++++++++++++.------------.>----------------------.<<------.>+++++++++++++
21:07:13 <Gregor> `run cut -d' ' -f2 prefs > prefs.bf
21:07:16 <HackEgo> No output.
21:07:28 <oerjan> Gregor: um what are you doing
21:07:51 <oerjan> `url prefs
21:07:53 <Gregor> Getting out the bf?
21:07:54 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/prefs
21:08:51 <oerjan> Gregor: i'm hand massaging it anyway
21:09:00 <oerjan> to get it into fungot
21:09:08 <Gregor> Oh
21:09:20 <Gregor> `prefixes
21:09:21 <HackEgo> Bot prefixes: fungot ^, HackEgo `, EgoBot !, lambdabot @ or ?, thutubot +, metasepia ~, jconn ), blsqbot !
21:09:29 <Gregor> We should have a more automated way of doing this X-D
21:09:48 <oerjan> it's just that HackEgo was the easiest place to get the full bf_txtgen output
21:09:51 <elliott> if only the bots could query each other
21:09:52 <elliott> RIGHT GREGOR
21:10:00 <oerjan> > 1104/3
21:10:06 <lambdabot> 368.0
21:10:15 <Gregor> elliott: Badurpdurpdurp
21:10:34 <oerjan> ^help
21:10:34 <fungot> ^<lang> <code>; ^def <command> <lang> <code>; ^show [command]; lang=bf/ul, code=text/str:N; ^str 0-9 get/set/add [text]; ^style [style]; ^bool
21:11:23 <FreeFull> http://slant.co/topics/what-are-your-favorite-hidden-features-of-haskell/opinions/user-defined-control-structures I didn't think that anyone would define ? like that
21:11:37 <oerjan> ^str 0 set +++++++++++++++[>++++++++>++++>+++++++>+++++++<<<<-]>>++++++.>++++++.<<----.>----------------------------------.<----.>>+++.<<-----------.+.>>>.<++++++.<<-.>>-----.<++++++++++++++++++++++++++.--------------------------.<+.>>++.>+++++.<<<+.>>>+.<-.<.>----------------------.<++++++++++++.------------.>----------------------.<<------.>++++++++++++++++++++++++++++++++++
21:11:37 <fungot> Set: +++++++++++++++[>++++++++>++++>+++++++>+++++++<<<<-]>>++++++.>++++++.<<----.>----------------------------------.<----.>>+++.<<-----------.+.>>>.<++++++.<<-.>>-----.<++++++++++++++++++++++++++.--------------------------.<+.>>++.>+++++.<<<+.>>>+.<-.<.>----------------------.<++++++++++++.------------.>----------------------.<<------.>++++++++++++++++++++++++++++++++++
21:11:43 <oerjan> ^str 0 add +++++++++++++++++++++++++++++++++.>>----.<---.<++++.++++++++.>-------------------------------------.<<-.>>++++++++++++.------------.<<---------------------------.>>>----.<<.<---.>.+++++.>.+.+++++++++++.------------.>+++++.-----------.++++++++++++.-----------.++.---.+.+++++++++++++.<<.>.<<--.>>.>.<<--.>.>------------------------------------------------.--------------
21:11:43 <fungot> Added.
21:11:50 <oerjan> ^str 0 add -----.<.<++.<++++++++++++++++++++++++++++++++++++++++.>+.-.+.<------.+++++++++++++.>-.>.>-.+.<.<<--.--------.>.<----.>-.<++++.+++++++++++.>----------.--------.>.<<++++++++++++++.>>>.<.<+++++++++.>+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.<+++++.-..>>------------.+++++++++.+++.------------.<-.<--.<-----------.--.>>.+++++++++++++.<<+++.>>>.+.
21:11:50 <fungot> Added.
21:11:58 <oerjan> ^def prefixes bf str:0
21:11:58 <fungot> Defined.
21:12:03 <oerjan> ^prefixes
21:12:03 <fungot> Bot prefixes: fungot ^, HackEgo `, EgoBot !, lambdabot @ or ?, thutubot +, metasepia ~, jconn ), blsqbot !
21:12:12 <elliott> toot
21:12:38 <oerjan> fizzie: PLEASE SAVE
21:12:42 <Gregor> You could add a command to HackEgo that would, in a file, give you the complete list of commands needed to update all the bots.
21:12:51 <oerjan> is he even online
21:13:11 <oerjan> Gregor: heh
21:14:37 <FreeFull> Doesn't allow nesting like C's ?: does though
21:14:43 -!- AnotherTest has quit (Ping timeout: 256 seconds).
21:16:17 <shachaf> oerjan: iih, tyfti
21:16:27 <FreeFull> Also apparently you can use >>= instead of concatMap
21:16:33 <oerjan> shachaf: wat
21:16:39 <oerjan> oh
21:16:44 <FreeFull> Although I think concatMap is clearer in intent
21:16:48 <oerjan> shachaf: YW
21:16:56 <boily> shachaf: is that finnish?
21:17:07 <oerjan> iihtyftillä
21:17:20 <boily> thät definitely is finnish.
21:17:41 <oerjan> seriösly
21:18:56 <shachaf> it indeed helps
21:19:00 <shachaf> thank you for that information
21:19:04 <shachaf> htdrify
21:19:49 <oerjan> shachaf: well i for one am not one to stop anyone from dating female yetis.
21:20:42 -!- sebbu2 has joined.
21:21:03 <oerjan> @tell fizzie please ^save fungot thanks
21:21:03 <lambdabot> Consider it noted.
21:21:09 <FreeFull> > let 5 = 6 in 5
21:21:10 <lambdabot> 5
21:21:35 <shachaf> ^save
21:21:54 <oerjan> shachaf: i do not believe it responds to you hth
21:22:05 <tromp_> > let False = True in False
21:22:05 -!- ogrom has quit (Quit: Left).
21:22:22 * FreeFull pokes lambdabot
21:22:35 <oerjan> ~eval let False = True in False
21:22:36 <metasepia> False
21:22:37 <lambdabot> False
21:22:48 <oerjan> lambdabot: TOO LATE
21:22:54 <shachaf> > compadre "shachaf" "fizzie"
21:22:56 <lambdabot> EQ
21:23:00 -!- sebbu has quit (Ping timeout: 272 seconds).
21:23:14 <oerjan> los compadres banditos
21:23:20 <FreeFull> What's the definition of compadre?
21:23:32 <FreeFull> compadre = EQ ??????
21:23:39 <shachaf> @ty compadre
21:23:40 <FreeFull> ????????????????????????????
21:23:41 <lambdabot> Ord b => b -> b -> Ordering
21:24:03 <Taneb> > compadre 1 0
21:24:03 <oerjan> > compadre "shachaf" "hitler"
21:24:05 <lambdabot> can't find file: L.hs
21:24:05 <lambdabot> EQ
21:24:08 <Taneb> > compadre 1 0
21:24:11 <lambdabot> EQ
21:24:13 <Taneb> > compadre 1 1
21:24:14 <FreeFull> > compadre "" "R"
21:24:17 <lambdabot> EQ
21:24:19 <lambdabot> EQ
21:24:19 <Taneb> > compadre 1 2
21:24:25 <lambdabot> EQ
21:24:34 <Taneb> Have concluded that it always returns EQ
21:24:36 <FreeFull> It probably is compadre a b = EQ
21:24:44 <boily> :t compadre
21:24:49 <lambdabot> Not in scope: `compadre'
21:24:53 <lambdabot> Perhaps you meant `compare' (imported from Data.Ord)
21:24:53 <FreeFull> With a type annotation that adds the Ord restraint
21:25:01 <oerjan> Taneb: i think that can be deduced from the type, and how it behaves on those tested numbers
21:25:13 <Taneb> oerjan, that's what I tested
21:25:27 <FreeFull> oerjan: Well, just returning EQ wouldn't add the Ord constarint
21:25:29 <oerjan> it must be a modification of compare and maybe seq
21:25:44 <oerjan> FreeFull: no, but it's easy to add that explicitly
21:25:51 <FreeFull> Yeah
21:25:54 <FreeFull> Or using seq
21:26:01 -!- zzo38 has joined.
21:26:06 <Taneb> > compadre [1..] [1..]
21:26:08 <lambdabot> Not in scope: `compadre'
21:26:08 <lambdabot> Perhaps you meant `compare' (imported from Data.O...
21:26:12 <FreeFull> compadre a b = (a == b) `seq` EQ
21:26:16 <Taneb> Who removed it
21:26:29 <FreeFull> :t (\a b -> (a == b) `seq` EQ)
21:26:29 <oerjan> some bandido
21:26:31 <lambdabot> Eq a => a -> a -> Ordering
21:26:36 <FreeFull> No
21:26:38 <FreeFull> :t (\a b -> (a < b) `seq` EQ)
21:26:39 <lambdabot> Ord a => a -> a -> Ordering
21:26:42 <FreeFull> There
21:26:53 <Taneb> :t (\a b -> (a `compare` b) `seq` EQ)
21:26:54 <FreeFull> Possibly const
21:26:55 <lambdabot> Ord a => a -> a -> Ordering
21:27:07 <FreeFull> :t (\a b -> const EQ (a < b))
21:27:09 <lambdabot> Ord a => a -> a -> Ordering
21:27:22 <oerjan> FreeFull: we never got to check it with undefined
21:27:27 <Taneb> > (\a b -> const EQ (a < b)) [1..] [1..]
21:27:29 <lambdabot> EQ
21:27:35 <Taneb> > (\a b -> const EQ (a < b)) undefined undefined
21:27:37 <lambdabot> EQ
21:28:00 <FreeFull> > compadre undefined undefined
21:28:03 <lambdabot> Not in scope: `compadre'
21:28:03 <lambdabot> Perhaps you meant `compare' (imported from Data.O...
21:28:13 <FreeFull> Where did it go ):
21:28:31 <oerjan> someone did @undefine
21:28:38 <oerjan> and *POOF*
21:29:10 <oerjan> it could theoretically be a coincidence and have happened in some completely different channel
21:29:11 <FreeFull> > [ maxBound - 1 .. ]
21:29:12 <lambdabot> Ambiguous type variable `t0' in the constraints:
21:29:13 <lambdabot> (GHC.Enum.Bounded t0)
21:29:13 <lambdabot> ...
21:29:16 * oerjan eyes shachaf suspiciously
21:29:18 <FreeFull> > [ maxBound - 1 :: Int .. ]
21:29:20 <lambdabot> [9223372036854775806,9223372036854775807]
21:29:37 <FreeFull> Expected
21:29:46 * boily prods shachaf with ørjan's eyes
21:29:48 <oerjan> as per haskell report
21:30:00 <shachaf> oerjan: ?
21:30:05 <shachaf> Oh.
21:30:13 <oerjan> shachaf: you are suspected of using @undefine hth
21:30:18 <boily> ~eval [maxBound -1 :: Int .. ]
21:30:19 <metasepia> [9223372036854775806,9223372036854775807]
21:30:27 <oerjan> and thus sabotaging SCIENCE
21:30:32 <shachaf> oerjan: i readily confess
21:30:36 <Taneb> ~eval ['a'..'z']
21:30:37 <metasepia> "abcdefghijklmnopqrstuvwxyz"
21:30:39 <shachaf> 13:22 <shachaf> @let compadre = const (const EQ) `asTypeOf` compare
21:30:41 <oerjan> hm haven't got around to reading girl genius yet
21:30:50 <boily> hmm... that gives me an idea.
21:30:52 <boily> let's flood!
21:30:54 <Taneb> oerjan, it's pretty good
21:30:59 <boily> ~eval ['a'..]
21:31:00 <metasepia> "abcdefghijklmnopqrstuvwxyz{|}~\DEL\128\129\130\131\132\133\134\135\136\137\138\139\140\141\142\143\144\145\146\147\148\149\150\151\152\153\154\155\156\157\158\159\160\161\162\163\164\165\166\167\168\169\170\171\172\173\174\175\176\177\178\179\180\181\182\183\184\185\186\187\188\189\190\191\192\193\194\195\196\197\198\199\200\201\202\203\204\205\206\207\208\209\210\211\212\213\214\215\216\217\218\219\220\221\222\223\224\225\226\227
21:31:02 <oerjan> Taneb: i mean for today
21:31:04 <boily> well darn.
21:31:07 <Taneb> Oh
21:31:14 <Taneb> It's alright
21:31:54 <Sgeo> `olist
21:31:55 <HackEgo> shachaf oerjan Sgeo
21:31:57 <oerjan> winning the comics hugo 3 years in a row _should_ be some kind of quality mark, you'd think
21:32:17 <oerjan> Sgeo: he's on a roll?
21:32:24 <Taneb> oerjan, Daniel Day Lewis has one three Best Actor Oscars and I still have no idea who he is
21:32:26 <Sgeo> Apparently
21:32:52 <Taneb> I couldn't get into OOTS
21:32:58 <oerjan> Taneb: touché
21:35:38 -!- nooodl has joined.
21:44:27 <oerjan> <tromp_> quintopia: it may be that if w occurs in thue-morse, then it occurs within the first O(length(w)) bits
21:44:46 <oerjan> 8*length(w) is sufficient, i think (4 if length(w) is a power of 2)
21:45:33 <oerjan> oh wait
21:45:45 <oerjan> maybe 10
21:46:09 <oerjan> 01100 has all possible boundaries of single bits
21:46:11 <elliott> :t any
21:46:11 -!- epicmonkey has joined.
21:46:13 <lambdabot> (a -> Bool) -> [a] -> Bool
21:46:24 <elliott> why isn't that [Bool] -> Bool.
21:46:29 <Taneb> :t or
21:46:31 <lambdabot> [Bool] -> Bool
21:46:34 <elliott> well ok
21:46:42 <oerjan> @src any
21:46:43 <lambdabot> any p = or . map p
21:48:26 -!- carado_ has joined.
21:48:58 <kmc> it reads well
21:49:08 <kmc> > any even [1, 3, 7]
21:49:09 <lambdabot> False
21:49:16 * kmc .ruby.moed++
21:49:21 <elliott> something about fairbairn threshold
21:49:53 <boily> moed? fairbairn?
21:50:22 -!- carado has joined.
21:50:44 <Taneb> Fairbairn threshold is to do with whether it is worth making an identifier
21:52:13 <boily> ~duck fairbairn
21:52:13 <metasepia> --- No relevant information
21:52:18 <boily> ~duck identifier
21:52:18 <metasepia> An identifier is a name that identifies either a unique object or a unique class of objects, where the "object" or class may be an idea, physical [countable] object, or physical [noncountable] substance.
21:52:20 -!- nooga has joined.
21:53:20 -!- sebbu2 has quit (Ping timeout: 276 seconds).
21:55:01 <Taneb> Remember that book about that guy who fell in love and bred a bright green mouse?
21:55:19 <Taneb> He had a robot dog and some trains
21:55:22 <oerjan> <Gregor> Well, I control the logs, sooooooooooooo >: ) <-- i'm reading this on tunes, neener neener
21:56:29 <olsner> Taneb: the green mile?
21:56:47 <Taneb> olsner, nah, there was nothing to do with miles
21:57:34 <Taneb> http://www.amazon.co.uk/How-Green-Was-My-Mouse/dp/0140388079/ref=sr_1_1?ie=UTF8&qid=1362002247&sr=8-1
21:57:55 <fizzie> ^save
21:57:55 <fungot> OK.
21:57:56 <lambdabot> fizzie: You have 1 new message. '/msg lambdabot @messages' to read it.
21:58:00 <fizzie> @messages
21:58:00 <lambdabot> oerjan said 36m 57s ago: please ^save fungot thanks
21:58:05 <fizzie> (I must be psychic.)
21:58:08 <oerjan> yay!
21:58:10 <Taneb> ^save the world
21:58:26 -!- Taneb has quit (Quit: Leaving).
21:58:38 <oerjan> he saved the world, then left
21:59:34 <boily> ^^
22:00:22 -!- epicmonkey has quit (Ping timeout: 272 seconds).
22:02:12 -!- augur has quit (Remote host closed the connection).
22:05:02 <oerjan> <elliott> I like how that undefined clause is pointless. <-- i think there is some kind of intention in the haskell report that undefined may be replaced by something giving file name and code position, in which case it's not pointless.
22:05:08 <oerjan> > undefined
22:05:10 <lambdabot> *Exception: Prelude.undefined
22:05:21 <oerjan> sadly ghc never bothered with that?
22:05:39 <oerjan> or doesn't now, anyhow
22:05:57 <Bike> > 7 + maximum []
22:05:59 <lambdabot> *Exception: Prelude.maximum: empty list
22:06:05 <Bike> that error seems fine to me
22:06:20 <kmc> > 7 + (case 2 of { 0 -> () })
22:06:22 <lambdabot> No instance for (GHC.Num.Num ())
22:06:22 <lambdabot> arising from a use of `GHC.Num.+'
22:06:22 <lambdabot> Poss...
22:06:25 <kmc> > 7 + (case 2 of { 0 -> 1 })
22:06:27 <lambdabot> *Exception: <interactive>:3:6-25: Non-exhaustive patterns in case
22:06:35 <oerjan> yeah ghc doesn't use undefined in its maximum definition
22:06:58 <oerjan> or does it, hm
22:07:01 <kmc> presumably there's some documentation value to writing "= undefined" as well
22:07:11 <oerjan> @let testing [] = undefined
22:07:13 <lambdabot> Defined.
22:07:16 <oerjan> > testing
22:07:18 <lambdabot> No instance for (GHC.Show.Show ([t0] -> a0))
22:07:18 <lambdabot> arising from a use of `M819...
22:07:23 <oerjan> > testing :: Char
22:07:25 <lambdabot> Couldn't match expected type `GHC.Types.Char'
22:07:25 <lambdabot> with actual type...
22:07:31 <oerjan> wat
22:07:34 <oerjan> oh
22:07:39 <oerjan> > testing [] :: Char
22:07:39 <Bike> what? why would that work?
22:07:41 <lambdabot> *Exception: Prelude.undefined
22:08:25 <oerjan> Bike: if ghc did that thing the report seemed to intend, that might have returned an error message involving testing
22:08:45 <Bike> :t testing
22:08:47 <lambdabot> [t] -> a
22:09:01 <ais523> elliott: Perl 6 has ..., ???, and !!!
22:09:04 <Bike> eh...
22:09:18 <ais523> which are all lazy values that throw various sorts of exception when forced
22:09:25 <oerjan> Bike: it was just a definition to test what ghc does with undefined in a definition, sheesh
22:10:07 <Bike> wasn't eh'ing at you
22:10:22 <ais523> :t fix testing
22:10:24 <lambdabot> [t]
22:10:31 <ais523> > fix testing
22:10:35 <lambdabot> mueval-core: Time limit exceeded
22:10:43 <ais523> yeah, I guess it would be
22:11:02 <oerjan> infinite recursion
22:11:19 -!- sebbu has joined.
22:11:24 -!- Phantom___Hoover has changed nick to Phantom_Hoover.
22:11:26 <oerjan> of pattern matching itself against []
22:11:56 <ais523> > testing [4]
22:11:58 <lambdabot> *Exception: <local>:1:1-22: Non-exhaustive patterns in function testing
22:12:04 <boily> ~eval let x = x in x
22:12:05 <metasepia> Error (1): No instance for (GHC.Show.Show a0)
22:12:05 <metasepia> arising from a use of `M4817096764458891460.show_M4817096764458891460'
22:12:05 <metasepia> The type variable `a0' is ambiguous
22:12:05 <metasepia> Possible fix: add a type signature that fixes these type variable(s)
22:12:05 <metasepia> Note: there are several potential instances:
22:12:06 <metasepia> instance GHC.Show.Show GHC.Types.Double
22:12:06 <metasepia> -- Defined in `base:GHC.Float'
22:12:07 <metasepia> instance GHC.Show.Show GHC.Types.Float
22:12:07 <metasepia> -- Defined in `base:GHC.Float'
22:12:08 <ais523> now, /that's/ a good way to get line numbers
22:12:08 <metasepia> instance (GHC.Real.Integral a, GHC.Show.Show a) =>
22:12:08 <metasepia> GHC.Show.Show (GHC.Real.Ratio a)
22:12:09 <metasepia> -- Defined in `base:GHC.Real'
22:12:09 <metasepia> ...plus 50 others
22:12:27 <ais523> bleh, I was hoping that really large constant would be a mersenne prime
22:12:30 <kmc> metasepia pfefferi
22:12:34 <ais523> but it obviously isn't
22:12:36 <boily> kmc: yep.
22:12:38 -!- boily has quit (Quit: Poulet!).
22:12:42 -!- metasepia has quit (Remote host closed the connection).
22:12:49 -!- atehwa has quit (Remote host closed the connection).
22:12:56 <Bike> why are the type variables such huge numbers anyway
22:13:26 <nooga> ~0
22:13:28 <oerjan> <boily> does deriving Ord in Haskell guarantee a total order, or at least a lattice? <-- as long as you don't get infinite recursion, it should. well as long as the parts are total orders (floating point is well known to break this with NaN)
22:13:30 <nooga> ~ 0
22:14:20 <oerjan> ~eval let x = x in x
22:14:35 <oerjan> oh it quit
22:14:45 * oerjan wanted to see if the number changed
22:15:27 <oerjan> Bike: maybe they're hashes
22:15:39 <Bike> `factor 4817096764458891460
22:15:40 <HackEgo> 4817096764458891460: 2 2 5 288349 835289313377
22:15:55 <oerjan> although they might be too low to be safe from collisions...
22:16:21 <oerjan> @tell boily <boily> does deriving Ord in Haskell guarantee a total order, or at least a lattice? <-- as long as you don't get infinite recursion, it should. well as long as the parts are total orders (floating point is well known to break this with NaN)
22:16:22 <lambdabot> Consider it noted.
22:16:41 <oerjan> pesky guy quitting between me checking /whois and writing the message
22:16:52 -!- wareya has quit (Read error: Connection reset by peer).
22:17:01 <kmc> it's not a lattice if it doesn't have a least upper bound right?
22:17:05 <kmc> so e.g. Integer isn't
22:17:17 <oerjan> kmc: sure it is
22:17:22 <oerjan> it's not a _complete_ lattice.
22:17:40 -!- wareya has joined.
22:18:11 <kmc> oh, right, lub / glb are binary operations and there's no guarantee you can apply them to everything at once
22:19:23 <oerjan> well they can be defined as taking sets but the result may not always exist
22:20:23 -!- impomatic has quit (Quit: impomatic).
22:20:43 <oerjan> e.g. the completeness axiom of real numbers say that lub for a set exists if _any_ upper bound exists
22:20:54 <oerjan> but you don't always have an upper bound
22:20:59 <oerjan> *nonempty set
22:24:47 <oerjan> <coppro> ais523: -Weverything is literally everything, including style warnings and the like <-- i think maybe such a flag should on principle be so sensitive that you _cannot_ avoid getting at least one warning, thus preventing people from combining it with -Werror.
22:24:53 <oerjan> (just a thought.)
22:25:05 <ais523> oerjan: warning: -Werror does not mix well with -Weverything
22:25:24 <oerjan> ais523: yeah but someone might still try if it's possible
22:25:49 <oerjan> ais523: oh wait
22:25:52 <oerjan> XD
22:26:35 <ais523> wow that's confusing me too, it's so neat in the way it ties things together
22:27:21 <FreeFull> What would be a good num instance for lists, assuming (Num a) => [a]
22:27:52 <FreeFull> Other than the obvious thing of operating on one element of the list
22:27:57 <oerjan> FreeFull: zipWise maybe?
22:28:11 <kmc> length of list, undefined elements
22:28:17 <kmc> you don't even need (Num a)
22:28:19 <FreeFull> kmc: Negative numbers?
22:29:00 <oerjan> hm...
22:29:01 <elliott> ais523: haha, that is great
22:29:19 <FreeFull> [] - [undefined] would end up as bottom
22:29:43 <zzo38> Well, the Copeanoid instance for a list does not care the contents, at least. But there doesn't seem a reasonable Num instance.
22:29:44 <FreeFull> Or an error
22:29:44 <oerjan> FreeFull: make [x1,x2,x3,...] represent the ordinal number ...+omega^2*x3+omega*x2+x1
22:29:56 <Bike> ^
22:30:09 <oerjan> or surreal number, maybe, so negatives make sense
22:30:26 <FreeFull> oerjan: That's an interesting instance
22:30:35 <oerjan> except then it's no different from a polynomial, really
22:30:43 <oerjan> which is also an interesting instance
22:30:45 <elliott> FreeFull: the standard applicative lifting one
22:30:55 <elliott> is much better than using undefined and such nonsense
22:31:13 <elliott> any Applicative f gives rise to an instance Num a => Num (f a)
22:31:18 <oerjan> elliott: hm nice
22:31:35 <kallisti> :>
22:31:45 <FreeFull> Well, wouldn't negate [x1,x2,x3,...] be the same as map negate [x1,x2,x3,...]
22:31:48 <elliott> yes
22:31:51 <FreeFull> So no need for surreals
22:31:59 <elliott> note that I don't think these instances are terribly good because you can't e.g. do them for things like Eq
22:32:08 <elliott> it's just happy coincidence that Num is overloaded in just the right ways
22:32:26 <FreeFull> I mena for the ordinals
22:32:55 <oerjan> FreeFull: um if you apply that to an ordinal you don't get an ordinal back
22:33:06 <FreeFull> oerjan: I was thinking you could do polynomials but I can't think of how to do it using just one list, other than interleaving
22:33:55 <FreeFull> So [x1,x2,x3,x4] could be x1*x^0 + x2*x^(-1) + x3*x^1 etc
22:33:58 <oerjan> FreeFull: hm? [a0,a1,...,an] represents a0+x*a1+...+x^n*an
22:34:16 <oerjan> FreeFull: no negative exponents
22:34:22 <FreeFull> Because if you don't include the negatives, you can't do division afaik
22:34:28 <oerjan> Num doesn't have division
22:34:44 <FreeFull> Oh, you're right
22:34:50 <FreeFull> Fractional does
22:35:13 <FreeFull> Well, and Integral has div
22:35:42 <FreeFull> Would this make sense as an Integral instance?
22:35:48 <oerjan> if you try to do division you'll probably want laurent series
22:36:43 <oerjan> FreeFull: hm maybe, if you interpret x as a hyperinteger
22:36:58 <oerjan> which is divisible by all the usual ones
22:37:24 <oerjan> hm not sure it will work
22:38:04 <oerjan> well there _is_ division of polynomials
22:38:25 <FreeFull> You could do it without negative degrees as long as you have remainders
22:38:34 <oerjan> closest to the Integral sense
22:38:52 <oerjan> although we _do_ have the problem that Integral requires toInteger :P
22:39:04 <FreeFull> So [0,0,3] `div` [0,0,0,4] would be [0] and you'd have the remainder of [0,0,3]
22:39:13 <FreeFull> Oh, yeah, that would be a problem =P
22:40:15 <oerjan> <elliott> it's just happy coincidence that Num is overloaded in just the right ways <-- aka "Num describes a universal algebra"
22:40:40 <FreeFull> I should fix my BTernary, I used to not know about quot =P
22:41:17 <oerjan> as opposed to div, or both quot and div?
22:41:21 <elliott> oerjan: HAPPY COINCIDENCE
22:41:49 <oerjan> elliott: universal algebras aren't exactly uncommon. groups, rings, monoids...
22:42:13 <Bike> be happy oerjan
22:42:16 <FreeFull> oerjan: I knew about div and tried to implement my own quot in terms of div
22:42:22 <oerjan> FreeFull: ah
22:42:46 <FreeFull> I should have just looked at where div came from and used :info =P
22:42:59 <FreeFull> But I think I didn't learn about how useful :info was back then either
22:43:14 <oerjan> Bike: reminding me to be happy sadly mainly has the effect of reminding me of my reasons not to be.
22:43:21 <doesthiswork> are any of you familiar with fisher information?
22:43:32 <FreeFull> mdiv x y = abs x `div` abs y * signum x * signum y
22:43:33 <Bike> oerjan: :'(
22:43:35 <FreeFull> That's what I had
22:43:37 <ais523> hmm… I somehow have a US quarter in my wallet
22:43:42 <Bike> can i have it
22:43:47 <ais523> I guess someone accidentally assumed it was a UK 10p coin
22:43:47 <Bike> doesthiswork: no
22:43:51 <oerjan> ais523: give him no quarter
22:44:12 <ais523> hmm… it has a date of 1974
22:44:17 <elliott> oerjan: HAPPY.
22:44:20 <elliott> oerjan: COINCIDENCE.
22:44:23 <ais523> are quarters dating from that long ago in common circulation?
22:44:34 <doesthiswork> yes
22:44:45 <ais523> a bit surprised, UK coins tend to be rather newer on average
22:44:58 <oerjan> it's more than a quarter century
22:45:00 <ais523> the Royal Mint keeps melting old coins down to make new ones, as they get old and damaged
22:45:05 <FreeFull> ais523: That's because UK underwent a currency shift
22:45:09 <FreeFull> From an old system to a new
22:45:18 <FreeFull> And it wasn't that long ago
22:45:53 <ais523> "0.25 USD = 0.1653 GBP (British Pound Sterling)"
22:45:59 <ais523> FreeFull: no, not just because of that
22:46:18 <oerjan> norway tends to occasionally declare old currency no longer legal tender
22:46:27 <Bike> 1974 quarters might be in circulation but not that common
22:46:55 <oerjan> with a period when you can only convert them in banks
22:47:03 <Bike> well, looks like you might be able to sell it for five bucks
22:47:07 <kmc> the coins in my pocket are from 1985, 1992, and 3 x 2011
22:47:11 <doesthiswork> I have on me 94 90 05 80 06 99 92 06 81 83 05 and a roll of Hawaii fresh from the bank
22:47:20 <ais523> actually, the UK redesigns its currency quite a lot
22:47:27 <FreeFull> The decimal pound came in around 1971
22:47:35 <ais523> old currency can always be changed at the Bank of England, but most other places don't accept it
22:47:37 <kmc> what i love about american coins is that they don't actually put the value in arabic numerals anywhere on them
22:47:46 <oerjan> we got rid of the last sub-krone denomination a couple years ago
22:47:53 <kmc> you have to know about english words like "cent" and "dime"
22:48:05 <FreeFull> I guess it's not as recent as the Polish currency change
22:48:18 <FreeFull> Which underwent redenomination in 1995
22:48:19 <ais523> also, touching that quarter made my hands itch
22:48:24 <ais523> and now I'm worried it was poisonous
22:48:30 <ais523> US coins aren't made of contact poison, right?
22:48:31 <Bike> it's probably covered in america cooties
22:48:53 <ais523> I guess it could be fake?
22:49:00 <kmc> $20 bills are covered in cocaine
22:49:01 <elliott> kmc: well you know how americans feel about arabs
22:49:03 <elliott> :-)
22:49:04 <kmc> elliott: yeah
22:49:11 <oerjan> our smallest coin is worth more than a US dime, and still the US won't get rid of pennies :P
22:49:16 <elliott> its ok kmc you don't have to acknowledge my terrible joke
22:49:30 <kmc> elliott: it's different now that we have elected a president who was born in a terrorist training camp in pakistan
22:50:00 <kmc> oerjan: yeah :/
22:50:10 <kmc> the Euro pennies are still around too, but only in some countries?
22:50:21 <kmc> and they have a 2¢ as well
22:51:06 <FreeFull> I think Britain should get rid of 1p and 2p coins
22:51:22 <oerjan> <kmc> $20 bills are covered in cocaine <-- is the cocaine worth more than the bill itself?
22:51:26 <Bike> coins are so passé, we should use BITcoins
22:51:26 <kmc> doubtful
22:51:31 <elliott> its worth exactly $20 of cocaine
22:51:32 <FreeFull> oerjan: Not enough of it
22:51:36 <elliott> thats where they get their value from
22:51:37 <FreeFull> But enough to detect it's there
22:51:49 <elliott> fort knox actually just stores a shitload of cocaine
22:52:01 <elliott> thats how much money the us has
22:52:13 <elliott> exactly $1 shitload of cocaine
22:52:13 <oerjan> prediction: in 20 years the US will switch to the cannabis standard
22:52:27 <Bike> sometimes cheney just swims around in it, scrooge style
22:52:41 <ais523> oerjan: the UK has pennies too
22:52:50 <ais523> although they're worth more than US pennies
22:54:14 <ais523> hmm… a quick trip to Wikipedia implies that this quarter is made of copper and nickel, much like UK coins, and was made in Philadelphia
22:54:50 <kmc> la cocaina no es buena para su salud
22:55:40 <Bike> i'm going to assume that salud is salad
22:55:42 <ais523> Bike: bitcoins take a noticeably large amount of time to verify that they've transferred
22:55:44 <ais523> a bit like cheques
22:56:10 <ais523> or rather, cheques take a while to transfer
22:56:22 <ais523> whereas bitcoins transfer instantly but you can't observe that they've transferred until some time afterwards
22:56:38 <kmc> mmmm cocaine salad
22:56:58 <kmc> ais523: what's the privileged reference frame there?
22:57:34 <ais523> kmc: the actual problem is the existence of multiple reference frames, it takes some while to establish which one is the canonical one
22:57:41 <kmc> sure
22:57:49 <kmc> i don't think you can say they've 'really' transferred until that's established
22:57:53 <kmc> and in fact it can change after the fact
22:57:55 <ais523> hmm, yeah
22:58:02 <ais523> well it doesn't if the sender doesn't attempt to double-spend
22:58:18 <kmc> i can't wait for some eccentric billionaire or government intelligence agency to get a bunch of ASIC miners and fuck with the bitcoin transaction history
22:58:22 <kmc> it wouldn't be that expensive
22:58:33 <Bike> but it would require for someone to give a damn about bitcoins
22:58:38 <elliott> kmc: well they already do gpu mining
22:58:42 <kmc> i think enough people do at this point
22:58:44 <kmc> elliott: sure
22:58:47 -!- wareya has quit (Ping timeout: 260 seconds).
22:58:53 <kmc> ASIC mining will be much much cheaper once someone is making them at scale though
22:59:00 <elliott> Bike: well you could make a lot of money off it
22:59:03 <kmc> and there are several commercial products supposedly launching ~now
22:59:14 <ais523> from what I've heard about ASIC mining is that the ASICs are being made at the moment and aren't in circulation yet
22:59:21 <kmc> yes
22:59:28 <ais523> although AFAICT, ASIC mining is a prisoner's dilemma
22:59:33 <kmc> also the mining difficulty only rebalances every 2 weeks
22:59:41 <ais523> oh, ooh
22:59:49 <ais523> ASICs aren't /that/ much better than FPGAs, though
22:59:53 <ais523> and even GPUs are beating FPGAs atm
23:00:00 <kmc> so if ASIC mining rigs are being distributed quickly, they might mine a /ton/ of money
23:00:04 <Fiora> they're claiming some really high numbers, though, I think?
23:00:06 -!- nooodl has quit (Ping timeout: 264 seconds).
23:00:06 <kmc> an instant bubble, over almost before it's begun
23:00:08 <Fiora> like 65000 MH/s for a $1000 box
23:00:15 <kmc> this is of course a property of a healthy and stable currency ;P
23:00:22 <elliott> iirc i was aware of bitcoins for long enough to have been able to have made 10x profit on them
23:00:22 <kmc> yeah
23:00:30 <kmc> ASICs are way faster than FPGAs in a general / average kind of case
23:00:33 <elliott> and not having done this annoys me even though I had no reasonable way to expect it would have been possible
23:00:35 <kmc> i don't know about for bitcoin cores
23:00:51 <Fiora> I bought a couple for 10 cents each and sold them at $30, I feel like a bad person
23:01:04 <kmc> a friend made like $1k because he happened to have set up a mining box and forgotten about it
23:01:35 <Bike> Fiora: you are now a member of the bit bourgeoisie
23:01:38 <ais523> bitcoin economics makes no sense to me
23:01:52 <elliott> Fiora: welcome to capitalism, here's your gold star
23:01:54 <ais523> like, I don't see why people value bitcoins as highly as they do
23:02:00 <Bike> bitgeoisie?
23:02:23 <Fiora> they're a medium of exchange wth a limited quantity, and people feel like that medium will continue to be used in the future?
23:02:25 <Bike> ais523: it's like tulip mania wouldn't you say
23:02:49 <ais523> Fiora: yeah, I think I agree, but I don't see why people think it will continue to be used in the future
23:03:43 <Fiora> probably a mix of inertia, a few years have passed and nothing's displaced it, blind hope, etc?
23:04:26 <kmc> i think something with the general properties of Bitcoin is undeniably useful
23:04:30 <Bike> displaced it, how would you displace it, what's its niche?
23:04:43 <kmc> and bitcoin has enough of a network effect by now that people will stick with it unless there are huge reasons to switch
23:04:44 <ais523> so say, I own no bitcoins at the moment, if I start up another currency with the same underlying software and protocol
23:04:51 <ais523> then that'd work better for me than bitcoins would
23:04:57 <kmc> does that justify a $30 value? almost certainly not
23:05:02 <kmc> there will be another bubble pop
23:05:05 <ais523> the network effect sort-of matters, but existing bitcoin holdings don't really make sense
23:05:11 <kmc> but I don't think they'll go to 0, just like they didn't last time the bubble popped
23:05:20 <ais523> I think bitcoins would work better if they were backed by something, rather than being generated by mining
23:05:20 * quintopia esos everyone's langs
23:05:21 <kmc> ais523: if you're saying people should be short bitcoins right now, then absolutely
23:05:22 <elliott> PSA: this isn't about bitcoins ais523 just doesn't understand fiat currency
23:05:23 <quintopia> mwahahahaha
23:05:33 <ais523> kmc: yeah, indeed
23:05:36 <elliott> i am telling you this now so that you don't have to go through the same process of realisation i did like a year ago when he said the same things
23:05:36 <kmc> but that doesn't imply you expect the price will go to 0 or that they're worthless
23:05:40 <ais523> elliott: oh yeah, I indeed don't understand fiat currency
23:05:45 <kmc> i wish there were a good options exchange for bitcoins
23:05:47 <ais523> I'm not sure whether that's relevant here, though
23:05:47 <kmc> could have some real fun
23:05:49 <Bike> elliott: eheh
23:05:49 <kmc> speaking of GPUs and all
23:05:50 <Fiora> shorting can be really dangerous though
23:05:56 <kmc> Fiora: yeah
23:05:58 <Fiora> remember, the market an remain irrational longer than you can remain solvent
23:05:59 <kmc> safer to buy put options
23:06:00 <ais523> Fiora: you can do a covered short
23:06:02 <Fiora> *can
23:06:04 <ais523> you buy put options at the same time
23:06:06 <Bike> anyway does anyone know what the prefix "klino-" means because i'm blanking
23:06:14 <Fiora> yeah, you'd need some reliable/liquid options though :<
23:06:19 <quintopia> btc is backed by everyone thinking it is worthwhile (and the electricity and time expended in its creation)
23:06:20 <ais523> if the short goes wrong, you use the put options in order to get the bitcoins you need
23:06:38 <ais523> and put options for bitcoins at a price much higher than the current price would be pretty cheap
23:06:43 <ais523> quintopia: it's not backed by that
23:06:48 <kmc> BTC also has the property that goverments can't fuck with it arbitrarily as easy as they fuck with their own fiat currencies
23:06:52 <ais523> that's the cost of minting it, not something backing it
23:06:59 <kmc> which is a weakness compared to USD but a strength compared to some fiat currencies
23:07:00 <Fiora> put options that are deep in the money cost a lot...
23:07:07 <Bike> oh, it's "slope"
23:07:11 <Bike> i think
23:07:13 <kmc> ais523: itym call options
23:07:15 <ais523> kmc: there are quite a few ways to screw with it arbitrarily
23:07:17 <kmc> but i'm always getting them mixed up anyway
23:07:18 <ais523> kmc: err yes
23:07:19 <ais523> so am I
23:07:24 <quintopia> ais523: nonetheless, as it becomes more difficult and energy-intensive to mine, the value goes up. same with the demand going up.
23:07:48 <ais523> a government could very easily increase the value of bitcoins by taxing people in bitcoins
23:07:53 <quintopia> `pastlog PSA
23:08:07 <ais523> this method was used to establish fiat currencies in the US shortly after it was colonised
23:08:12 <ais523> and sometimes worked, sometimes didn't
23:08:16 <kmc> one weird thing about bitcoin is that the mining payoff isn't just supply/demand, but is actually adjusted by the protocol
23:08:25 <HackEgo> No output.
23:08:25 <kmc> using a formula that nobody can change really
23:08:38 <quintopia> you are wrong HackEgo
23:08:47 <quintopia> there is definitely something in the logs with PSA
23:08:54 <kmc> draft people into the army, pay them in your new currency, then tax them in that currency
23:08:54 <ais523> quintopia: try again
23:08:57 <kmc> that's the way
23:09:00 <quintopia> `pastlog mining
23:09:06 <ais523> HackEgo sometimes randomly does "No output." if it hasn't been used for a while
23:09:12 <HackEgo> 2009-10-28.txt:06:47:56: <Oranjer> I did find out that the "qibla problem" is the problem of determining the direction of Mecca at any point on earth
23:09:14 <quintopia> `pastlog PSA
23:09:22 <HackEgo> 2012-02-13.txt:00:08:59: <Psalm_Journey> itidus20 invents self hypnosis
23:09:30 <quintopia> heh
23:09:48 <elliott> i like how both of those imply the other kind of #esoteric
23:10:11 <ais523> I'm reasonably sure self hypnosis already exists
23:10:12 <Bike> islam isn't that esoteric as religions go... i guess the qibla problem can get pretty weird though
23:10:21 <elliott> Bike: are you saying it's more related to programming
23:10:27 <Bike> once you forget the "god doesn't actually care that much, just do your best" aspect
23:10:59 <Bike> elliott: WELL YOU SEE prayer is much easier for muslims because their prayers don't have to have an escape vector!!
23:15:32 <Phantom_Hoover> are we talking about islamic prayer geodesics again
23:15:52 <elliott> it's a pretty frighteningly common topic for us isn't it
23:16:11 <Phantom_Hoover> we're not even a physics channel
23:16:31 -!- wareya has joined.
23:16:34 <Bike> don't mock me :(
23:16:38 <kmc> every religion has its esoteric corner
23:16:45 <kmc> what specifically about the qibla is weird?
23:16:55 <elliott> Bike: no this topic has actually come up several times in here
23:16:57 <elliott> it's bizarre
23:17:07 <quintopia> `pastlog binomial
23:17:13 <Bike> kmc: there was a story a while ago about a muslim astronaut figuring out how to pray
23:17:15 <HackEgo> 2012-03-25.txt:19:46:41: <Taneb> Because he could binomial!
23:17:18 <kmc> oh yeah
23:17:18 <Phantom_Hoover> kmc, the way it generalises to points not on the earth's surface?
23:17:23 <kmc> "it's the thought that counts"
23:17:36 <quintopia> i wonder what the joke is that was the punchline for
23:17:42 <Phantom_Hoover> (there are also even disputes among muslims how to do it on the earth's surface, though most of them do it the right way)
23:17:53 <quintopia> maybe "why did the normal distribution starve to death"
23:19:59 <Bike> sufiism or druze might be more obviously esoteric but qibla involves spaaaaace
23:20:45 <kmc> 'right way' = shortest path along the great circle?
23:21:10 <elliott> imo all circles are great
23:21:24 <Bike> every circle is special
23:21:26 <Bike> in its own way
23:22:45 <oerjan> quintopia: <Taneb> Why was the statistician hungry?
23:22:51 <FreeFull> Seems what I want for my fhead is something like Data.Foldable.foldl1 (\x _ -> x) but with the type signature (Foldable t) => t a -> t a
23:23:23 <oerjan> actually the funniest thing about it is elliott's laughing afterwards
23:23:23 <FreeFull> Since foldl1 will fail for an empty thing
23:23:59 <elliott> you can do Foldable t => t a -> Maybe a
23:24:10 <FreeFull> I don't know if I can implement that without knowing the empty element type constructor though
23:24:19 <FreeFull> elliott: That's not what I want
23:24:21 <kmc> you can't build things using Foldable, only take them apart
23:24:22 <kmc> i think
23:24:26 <elliott> you cannot do Foldable t => t a -> t a
23:24:33 <elliott> nor Traversable t => t a -> t a if you want to get the head
23:24:42 <elliott> consider that data P a = P a a is Traversable
23:25:18 <elliott> oerjan: i loaded up the log to see my laughing and there was NSQX :')
23:25:28 <oerjan> elliott: and also Foldable
23:25:44 <ais523> esolang idea: language works via great circles and shortest-path calculations, you store data (and program it) via literal earthquakes
23:25:44 <FreeFull> elliott: P a a -> P a a would be perfectly acceptable
23:25:47 <ais523> to change the shape of the earth
23:25:50 <ais523> also tectonic drift, I guess
23:26:08 <FreeFull> Basically I want a more general take 1
23:26:14 <elliott> oerjan: well any Traversable is Foldable...
23:26:18 <elliott> FreeFull: um it is P a -> P a
23:26:23 <elliott> and you cannot implement something like "take 1" for it
23:26:27 <kmc> FreeFull: you need Traversable for that
23:26:27 <elliott> because it is a fixed-size container
23:26:39 <elliott> you could do foo (P x y) = P x x or something
23:26:44 <elliott> but then foo [1,2,3,4] would be [1,1,1,1]
23:26:45 <kmc> don't mix up type expressions and value expressions
23:26:52 <oerjan> kmc: Traversable cannot change number of elements
23:26:57 <kmc> hm
23:27:02 <kmc> guess so
23:27:19 <kmc> ok so elliott was right before
23:27:24 <kmc> t a -> Maybe a -- is about the best you can do
23:27:30 <oerjan> there's something called Listlike, maybe it does that
23:27:46 <elliott> you could have a class that lets you do "take 1". I suspect that class will be "isomorphic to [a]"
23:27:54 <elliott> or worse, "has an operation of type t a -> t a that we call take1"
23:27:54 <kmc> or (Applicative m) => t a -> m a or whatever
23:28:06 <elliott> kmc: you mean Alternative, presumably?
23:28:16 <kmc> oerjan, elliott: yeah I think ListLike is one of those not very elegant "put every list function in a type class" projects
23:28:19 <kmc> elliott: maybe
23:28:20 <kmc> bah
23:28:25 <kmc> don't listen to me
23:28:26 <elliott> kmc is rusty
23:28:26 <kmc> i am disreputable
23:28:31 <kmc> i'm the tin man
23:28:36 <FreeFull> elliott: my fhead would work perfectly well on, say, a tree
23:28:51 <elliott> FreeFull: maybe "one specific tree structure"
23:28:57 <elliott> certainly not all tree structures in general
23:29:06 <FreeFull> Maybe not an infinite tree
23:29:12 <FreeFull> But a terminating tree, sure
23:29:13 -!- carado has quit (Ping timeout: 246 seconds).
23:29:14 -!- carado_ has quit (Ping timeout: 246 seconds).
23:29:44 <FreeFull> Note I'm not assuming transversable
23:30:26 <kmc> FreeFull: what about a tree that's required to have an even number of elements
23:30:41 -!- GOMADWarrior has quit (Ping timeout: 248 seconds).
23:30:42 <kmc> you can write that type
23:30:46 <quintopia> kmc: why do the home and end buttons just type a ~ when i use mosh
23:30:48 <kmc> or just a list with an even number of elements
23:30:53 <kmc> quintopia: are you using rxvt?
23:30:57 <quintopia> yes
23:31:01 <kmc> it's a known bug i'm afraid
23:31:03 <kmc> more info on the bug tragcker
23:31:07 <quintopia> :(
23:31:24 <ais523> kmc: do you have a link? I don't care so much about mosh, but I do care about how terminals interpret keys
23:31:31 <FreeFull> kmc: How about the first element is allowed to be repeated
23:31:46 <kmc> https://github.com/keithw/mosh/issues/178
23:31:49 <ais523> thanks
23:32:03 <kmc> FreeFull: then you can do that with Traversable
23:32:30 <ais523> oh wow, inconsistencies :(
23:32:39 <ais523> at least it's on the input side, not the output side
23:32:43 <ais523> so it only affects ttyrec2, not ttyrec
23:32:58 <kmc> or maybe just Functor and Folable
23:33:12 <elliott> FreeFull: this operation is sounding less defined by the second
23:33:34 <elliott> FreeFull: though if you allow foo [1,2,3] = [1,1,1] then it is quite eays
23:33:36 <elliott> *easy
23:33:36 <kmc> :t \x -> fmap (const (Data.Foldable.foldr1 const)) x
23:33:37 <lambdabot> (Functor f, Foldable t) => f a -> f (t a1 -> a1)
23:33:40 <kmc> buh
23:34:03 <kmc> :t \x -> fmap (const (Data.Foldable.foldr1 const x)) x
23:34:04 <lambdabot> (Functor f, Foldable f) => f a -> f a
23:34:06 <kmc> yeah
23:34:12 <kmc> > (\x -> fmap (const (Data.Foldable.foldr1 const x)) x) [1,2,3]
23:34:14 <lambdabot> [1,1,1]
23:34:17 <kmc> > (\x -> fmap (const (Data.Foldable.foldr1 const x)) x) (Maybe 5)
23:34:19 <lambdabot> Not in scope: data constructor `Maybe'
23:34:22 <kmc> buhuhhh
23:34:26 <kmc> im 'so sorry everyone
23:34:30 <kmc> > (\x -> fmap (const (Data.Foldable.foldr1 const x)) x) (Just 5)
23:34:31 <lambdabot> Just 5
23:34:32 <elliott> kmc are you drunk
23:34:34 <kmc> no
23:34:35 <Bike> i <3 you lambdabot
23:34:35 <elliott> or just really old
23:34:39 <kmc> ouch
23:34:40 <kmc> burn
23:35:25 <FreeFull> Maybe foldable + applicative
23:35:38 <ais523> Maybe seems like a reasonable constructor to me, it'd be like amb for Maybe the type
23:35:43 <FreeFull> :t foldl1
23:35:45 <lambdabot> (a -> a -> a) -> [a] -> a
23:35:52 <FreeFull> :t Data.Foldable.foldl1
23:35:53 <lambdabot> Foldable t => (a -> a -> a) -> t a -> a
23:36:20 <FreeFull> :t Data.Foldable.foldl1 (\x -> const (pure x))
23:36:22 <lambdabot> Occurs check: cannot construct the infinite type: a0 = f0 a0
23:36:22 <lambdabot> In the first argument of `pure', namely `x'
23:36:22 <lambdabot> In the first argument of `const', namely `(pure x)'
23:36:25 <elliott> kmc: btw that only technically works for empty containers
23:36:35 <FreeFull> :t Data.Foldable.foldl1 (\x acc -> (pure x))
23:36:37 <lambdabot> Occurs check: cannot construct the infinite type: a0 = f0 a0
23:36:37 <lambdabot> In the first argument of `pure', namely `x'
23:36:37 <lambdabot> In the expression: (pure x)
23:36:40 <elliott> as in it works but you have a _|_ :(
23:36:51 <Bike> > (\x -> fmap (const (Data.Foldable.foldr1 const x)) x) []
23:36:53 <lambdabot> []
23:38:04 <FreeFull> What am I doing wrong
23:38:18 <FreeFull> :t Data.Foldable.foldl1 (\x acc -> (x)
23:38:20 <lambdabot> parse error (possibly incorrect indentation)
23:38:20 <FreeFull> :t Data.Foldable.foldl1 (\x acc -> x)
23:38:22 <lambdabot> Foldable t => t a -> a
23:38:26 <FreeFull> :t Data.Foldable.foldl1 (\x acc -> pure x)
23:38:28 <lambdabot> Occurs check: cannot construct the infinite type: a0 = f0 a0
23:38:28 <lambdabot> In the first argument of `pure', namely `x'
23:38:28 <lambdabot> In the expression: pure x
23:38:35 <FreeFull> :t pire
23:38:36 <FreeFull> :t pure
23:38:37 <lambdabot> Not in scope: `pire'
23:38:37 <lambdabot> Perhaps you meant one of these:
23:38:37 <lambdabot> `pure' (imported from Control.Applicative),
23:38:38 <lambdabot> Applicative f => a -> f a
23:39:16 <FreeFull> Wait, that wouldn't work for an empty a anyway
23:40:15 <FreeFull> What I really need is something with the type (Something f) => f a
23:40:33 <elliott> kmc's solution works...
23:40:35 <FreeFull> Where something :: [a] == []
23:40:56 <FreeFull> elliott: Yeah but having [1,2,3,4,5] become [1,1,1,1,1] rather than [1] isn't preferable
23:41:21 <kmc> why don't you just give up and make class Head f where head :: f a -> a
23:41:29 <kmc> or whatever it is you wanted
23:41:34 <ais523> kmc: isn't that one of the comonad laws?
23:41:35 <FreeFull> f a -> f a
23:41:40 <ais523> err, not laws
23:41:42 <ais523> definer things
23:41:49 <ais523> f a -> a, and f a -> f (f a)
23:41:56 <elliott> FreeFull: it is best to first know what your operation should do and then achieve it
23:42:02 <FreeFull> For f a -> a you only need Foldable
23:42:06 <ais523> perhaps a comonad is what you want
23:42:08 <elliott> rather than defining it as a tangled web of special cases in accordance with what you find out is possible to achieve
23:43:31 <FreeFull> For a list, it should always be equivalent to take 1
23:44:19 <FreeFull> For Tree a = Empty | Node a (Tree a) (Tree a) it should be Node a Empty Empty
23:44:47 <ais523> I agree with elliott, I think
23:45:03 <FreeFull> I think the empty possibility is necessary
23:45:08 <elliott> this counts as a tangled web of special cases btw :P
23:45:08 <quintopia> when you start a screen within a screen and hit ^a d, which screen detaches?
23:45:13 <Bike> http://www.amazon.com/Mont-Blanc-Tribute-Fountain-Pen/dp/B007PV1MV8 i don't understand this world
23:45:14 <FreeFull> fhead empty == empty
23:45:19 <ais523> quintopia: outside one, inside one is ^a a d
23:45:21 <elliott> quintopia: presumably the outer one
23:45:25 <elliott> unless screen detects when it runs inside itself
23:45:29 <elliott> there is no other possibility
23:45:31 * ais523 has quite a lot of nethack-tas-tools experience
23:45:42 <ais523> although yeah, you can figure it out via logical thinking too
23:45:52 <FreeFull> elliott: I know, I'm just gathering examples
23:46:10 <FreeFull> Both of these are foldable and allow you to get a
23:46:13 <oerjan> :t ala (wrapped First)
23:46:15 <lambdabot> No instance for (Functor First)
23:46:15 <lambdabot> arising from a use of `wrapped'
23:46:15 <lambdabot> Possible fix: add an instance declaration for (Functor First)
23:46:24 <elliott> oerjan: ala First. sorry.
23:46:28 <elliott> we tried to convince him not to.
23:46:34 <oerjan> oh.
23:46:36 <FreeFull> But they error instead of producing an empty when given an empty
23:46:45 <oerjan> :t ala First
23:46:47 <lambdabot> ((Maybe a -> First a) -> e -> First a) -> e -> Maybe a
23:46:56 <ais523> FreeFull: what if you have Tree a = Empty1 | Empty2 | Node a (Tree a) (Tree a) ?
23:47:08 <oerjan> :t under _First
23:47:10 <lambdabot> Not in scope: `_First'
23:47:10 <lambdabot> Perhaps you meant `first' (imported from Control.Arrow)
23:47:16 <oerjan> argh
23:47:46 <FreeFull> ais523: Then it should return the Empty it receives
23:47:52 <elliott> oerjan: under (wrapped First)
23:48:00 <ais523> FreeFull: from where?
23:48:06 <elliott> note that this Wrapped insanity also stops you doing type-changing :(
23:48:07 <FreeFull> How about fhead empty == id
23:48:16 <elliott> have to write au (wrappings First First) or whatever it was
23:48:34 <elliott> Bike: I didn't give 5 stars because I thought that as a tribute the pen would be wider and no so thin but other than that its excellent.
23:48:57 <Bike> guy's got a point you must admit
23:49:03 <FreeFull> ais523: I'm wondering if this would have to be it's own typeclass to work like I want
23:49:10 <oerjan> :t under (wrapped First) . foldMap Just
23:49:11 <lambdabot> Couldn't match expected type `Control.Lens.Internal.Iso.Exchange
23:49:12 <lambdabot> a0 b0 s0 b1'
23:49:12 <lambdabot> with actual type `First a1'
23:49:12 <FreeFull> Or if it could be possible with foldable + applicative
23:49:15 <oerjan> eek
23:49:19 <oerjan> hm
23:49:23 <ais523> FreeFull: possibly, but I'm not sure if what you want is even useful
23:49:39 <oerjan> :t under (wrapped First)
23:49:41 <lambdabot> Couldn't match expected type `Control.Lens.Internal.Iso.Exchange
23:49:41 <lambdabot> a0 b0 s0 b1'
23:49:41 <lambdabot> with actual type `First a1'
23:49:49 <oerjan> elliott: NOPE
23:49:52 <elliott> probably you want wrapping
23:49:54 <elliott> not wrapped
23:49:59 <elliott> (-:
23:50:01 <oerjan> :t under (wrapping First)
23:50:04 <lambdabot> (Maybe a -> Maybe a) -> First a -> First a
23:50:21 <oerjan> gah
23:50:27 <ais523> so do people write this sort of Haskell seriously?
23:50:30 <oerjan> :t ala
23:50:32 <ais523> or is it some sort of self-parody?
23:50:32 <lambdabot> Wrapped s s a a => (s -> a) -> ((s -> a) -> e -> a) -> e -> s
23:50:32 <oerjan> :t auf
23:50:34 <lambdabot> AnIso s t a b -> ((r -> a) -> e -> b) -> (r -> s) -> e -> t
23:50:40 <oerjan> :t alaf
23:50:41 <lambdabot> Wrapped s s a a => (s -> a) -> ((r -> a) -> e -> a) -> (r -> s) -> e -> s
23:50:45 <Bike> "this sort"?
23:50:55 <oerjan> :t wrapping
23:50:57 <lambdabot> (Functor f, Profunctor p, Wrapped s s a a) => (s -> a) -> p a (f a) -> p s (f s)
23:51:30 <Bike> lens turns out to be an elaborate aristocrats instance
23:51:45 <FreeFull> lens is actually useful
23:51:59 <oerjan> :t fold
23:52:00 <lambdabot> (Foldable t, Monoid m) => t m -> m
23:52:24 <oerjan> :t foldMap Just
23:52:26 <lambdabot> (Foldable t, Monoid a) => t a -> Maybe a
23:53:08 <FreeFull> We already established t a -> Maybe a was possible a long time ago =P
23:53:16 <FreeFull> Now, if we had a Maybe a -> t a
23:53:20 <FreeFull> For whatever t
23:53:26 <oerjan> i was just wondering how to write it nicely with lens
23:53:59 <elliott> oerjan: oh that's what you wanted?
23:54:05 <elliott> :t firstOf traverse
23:54:07 <lambdabot> Traversable t => t a -> Maybe a
23:54:08 <elliott> :t firstOf folded
23:54:09 <lambdabot> Foldable f => f b -> Maybe b
23:54:22 <elliott> :t firstOf id
23:54:24 <lambdabot> s -> Maybe s
23:54:28 <oerjan> OKAY
23:54:42 <oerjan> :t firstOf
23:54:44 <lambdabot> Getting (Leftmost a) s t a b -> s -> Maybe a
23:54:50 <elliott> > firstOf (traverse._Right) [Left 1, Left 2, Right 3, Right 4]
23:54:52 <lambdabot> Just 3
23:55:08 <oerjan> nice
23:55:19 <FreeFull> I could always require that fhead takes two parameters
23:55:31 <FreeFull> One being the empty case
23:55:33 <elliott> > firstOf (traverse._Right.filtering (> 3)) [Left 1, Left 2, Right 3, Right 4]
23:55:35 <lambdabot> Not in scope: `filtering'
23:55:40 <elliott> > firstOf (traverse._Right.filtered (> 3)) [Left 1, Left 2, Right 3, Right 4]
23:55:43 <lambdabot> Just 4
23:56:36 <FreeFull> > let fhead x = fromMaybe x . foldMap Just in fhead [] [1,2,3]
23:57:14 <lambdabot> No instance for (GHC.Num.Num [a0])
23:57:15 <lambdabot> arising from a use of `e_1123'
23:57:16 <lambdabot> Possi...
23:57:25 <oerjan> FreeFull: Just has the wrong Monoid instance for this, that's why the First mess
←2013-02-26 2013-02-27 2013-02-28→ ↑2013 ↑all