←2012-12-21 2012-12-22 2012-12-23→ ↑2012 ↑all
00:11:14 -!- copumpkin has quit (Ping timeout: 252 seconds).
00:14:50 <zzo38> If you play crap using any two Platonic solid dice (which remain the same throughout the game), with the same rules as normal, what is affected the probability of winning according to?
00:16:08 <Bike> do your dice usually change shape during games?
00:16:15 <Taneb> Never played crap, don't know the rules
00:19:17 -!- copumpkin has joined.
00:21:46 <fizzie> Never played crap, don't give a crap?
00:28:10 -!- nooga has quit (Ping timeout: 246 seconds).
00:32:59 -!- Taneb has quit (Quit: Leaving).
00:33:23 <fizzie> I was reading HeadRoom (headphone.com, the headphone review/shop site), and the #1 quote in the "what our customers say" sidebar was: "I just wanted to say that the picture of the unicorn you drew for me was so awesome it almost made me cry. I particularly love unicorns. They're just so beautiful and graceful, like a lamb, but less hairy."
00:33:37 <fizzie> I think that is a fine statement.
00:38:50 <zzo38> Taneb: The rules are: On your first roll if it totals 7 or 11 you win, if it is 2 or 3 or 12 then you lose. Otherwise, you continue rolling, and other than the first turn, if you roll 7 you lose, if the same as the first number you win, otherwise try again until you match the first total or 7.
00:39:55 <zzo38> Another puzzle I have read once related to crap game is, your opponent is going to play dice but he loaded one of the dice to make the 5 be 100%. You now have the chance to load the other dice using whatever probabilities you want. How should you do it to make the least probability he will win?
00:41:04 <zzo38> (Notice that if you make the second dice also always come up the same number with 100% probability, then he will always win regardless of what number this is. Therefore you must do something else.)
00:43:56 <coppro> zzo38: I believe the game is called craps
00:44:08 <ais523> well, it obviously makes sense to make 1, 3, 4, and 5 all have equal probability, and 6 to have zero probability
00:44:27 <ais523> so we'll call the probability of 1345 total p, and of 2 p' (p' = 1 - p)
00:45:35 <ais523> the chance that the opponent wins on the first roll is p'; alternatively, if they don't roll a 2 on the first roll (probability p), their chance of winning is (p/4)/(p/4+p')
00:46:23 <ais523> that's p/(p+4p'), or p/(p + 4 - 4p), or p/(4 - 3p)
00:46:47 <ais523> so total chance is 1 - p + p^2/(4 - 3p)
00:48:28 <ais523> differentiating this gives -1 + ((2p)(4 - 3p)+(p^2)(-3))/((4 - 3p)^2)
00:49:06 <ais523> setting that to 0 gives (4 - 3p)^2 = (8p - 6p^2) - 3p^2
00:49:26 <ais523> or 16 - 12p + 9p^2 = 8p - 9p^2
00:49:56 <ais523> or 18p^2 - 20p + 16 = 0
00:51:15 <ais523> so p is optimised at (20 ± sqrt(400 - 64*18)) / 36
00:51:36 <ais523> hmm, 64*18 > 400
00:51:40 <ais523> I must have screwed up something there
00:51:58 <ais523> the general /principle/ is correct, though :)
00:53:37 <fizzie> (4 - 3p)^2 = 4^2 - 2*4*3p + (3p)^2 = 16 - 24p + 9p^2, right? (Not ...-12p...)
00:56:34 <fizzie> (Though 64*18 > 32^2 too.)
00:56:40 -!- epicmonkey has quit (Ping timeout: 252 seconds).
00:58:44 <fizzie> (A regular person would just have let Mathematica to do the derivative.)
01:22:42 -!- esowiki has joined.
01:22:46 -!- esowiki has joined.
01:22:47 -!- esowiki has joined.
01:23:25 -!- esowiki has joined.
01:23:30 -!- esowiki has joined.
01:23:30 -!- esowiki has joined.
01:24:27 -!- esowiki has joined.
01:24:29 -!- glogbot has joined.
01:24:29 -!- glogbackup has left.
01:24:32 -!- esowiki has joined.
01:24:32 -!- esowiki has joined.
01:25:47 <sgeo_> elliott, Fiora monqy Phantom_Hoover
01:26:05 <Phantom_Hoover> elliott hasn't followed for ages, right
01:26:12 <kmc> > 2^2^2^2^2
01:26:14 <lambdabot> 200352993040684646497907235156025575044782547556975141926501697371089405955...
01:26:55 -!- Gregor has joined.
01:27:04 <monqy> if he hasn't followed for ages, then why would he be on the list
01:27:06 <monqy> => he follows
01:27:08 <monqy> avidly
01:27:53 <monqy> i'm sure if he were with us today he'd thank sgeo for updating him(rest in peace)
01:28:39 -!- WeThePeople has quit (Quit: Leaving).
01:28:55 -!- WeThePeople has joined.
01:29:22 -!- WeThePeople has quit (Changing host).
01:29:23 -!- WeThePeople has joined.
01:29:47 -!- WeThePeople has quit (Read error: Connection reset by peer).
01:30:24 <kmc> > length \$ show (2^2^2^2^2)
01:30:25 <lambdabot> 19729
01:32:25 <kmc> > length \$ show (3^3^3^3^3)
01:32:30 <lambdabot> mueval: ExitFailure 1
01:32:30 <lambdabot> mueval: Prelude.undefined
01:35:48 <fizzie> ais523: http://sprunge.us/IcID incidentally.
01:36:38 -!- monqy has quit (Quit: hello).
01:37:00 <ais523> zzo38: so the conclusion from this is that you have to make 2 come up 1/3 of the time, and 1/3/4/5 come up 1/6 of the time each
01:37:13 <ais523> or in other words, you just take your normal dice and replace the 6 with a 2 and hope nobody notices
01:37:27 <zzo38> OK.
01:42:07 <zzo38> I don't like it that you cannot use guards in do-notation in Haskell. Therefore you need to put the guard on the next line instead.
01:45:23 <Jafet> > do let { doguard p x | p x = x | otherwise = fail "" }; doguard even -> x <- Just 1; return x
01:45:24 <lambdabot> <hint>:1:70: parse error on input `->'
01:46:37 <Jafet> > do let { doguard p x | p x = return x | otherwise = fail "" }; x <- doguard even =<< Just 1; return x
01:46:39 <lambdabot> Nothing
01:47:46 <zzo38> What else I don't particularly like is that do-notation is built-in rather than definable using macros. This is difficult to change, though.
01:53:43 * sgeo_ 100% agrees with zzo38
01:53:58 <sgeo_> About the do notation being built-in
01:59:28 -!- sirdancealot7 has quit (Ping timeout: 272 seconds).
02:03:05 -!- GreyKnight has quit (Quit: zzz).
02:04:38 -!- SingingBoyo has joined.
02:06:03 -!- sirdancealot7 has joined.
02:15:23 -!- Nisstyre-laptop has joined.
02:19:44 <kmc> yeah
02:20:34 <kmc> baked in 'do' syntax is a pragmatic measure that goes against theoretical beauty
02:20:42 <kmc> haskell has a lot of those, which you wouldn't guess from the way people talk about it
02:21:09 <kmc> i don't know how to design a macro system which supports syntactic extensions like 'do'
02:21:26 <kmc> i guess i would start by looking at Camlp4 / Camlp5
02:21:39 <Jafet> [do|
02:21:49 <kmc> yeah... no.
02:22:05 <Bike> «The current version of camlp4 doesn't have yet a manual. The "Camlp4 manual" is from 2003, and is not compatible with present version.» exciting
02:22:45 <kmc> yeah that is not ideal
02:23:01 <Bike> oh man, is wikipedia's example using gensyms
02:23:38 <Bike> is ML stuff just underdocumented? when I went looking for Standard ML resources i was kind of... underwhelmed, i couldn't even find docs for the yacc my book was using
02:24:17 <Jafet> gensym means your syntax is more pointfree
02:24:20 <Bike> nothing like, i don't know, the haskell wiki
02:24:27 <Jafet> Or it means your macro system is crap, I'm not sure
02:24:54 <sgeo_> I think Campl stuff is more of an O'Caml thing?
02:25:01 <Bike> it means your macro system is (probably) unhygenic, which isn't as often associated with ~Theoretical Beauty~.
02:25:12 <Bike> sgeo_: yes, i meant the family
02:25:26 <Bike> also is it actually spelled with an apostrophe
02:25:28 <kmc> the haskell wiki is crap
02:25:39 <Bike> it's better than nothing!
02:25:45 <sgeo_> I thought it was
02:25:51 <sgeo_> It might not be, I guess?
02:25:51 <Bike> though the talkmode pages are definitely pretty funny yeah
02:25:53 <Jafet> I'm not sure if I consider define-syntax to be theoretical beauty
02:26:19 <kmc> yeah
02:26:28 <kmc> to me scheme's hygenic macros almost miss the entire point of lisp
02:27:05 <Bike> isn't define-syntax just a pattern matchy thing combined with automatically codewalking through and renaming symbols for you?
02:27:54 <kmc> i think i prefer simple unhygenic macros, with sugar to make it easier to use them hygenically
02:28:09 <kmc> like auto-gensym in clojure (HI SGEO) or various Lisp libraries
02:28:18 <kmc> but i haven't used any Lisp extensively so i don't really know
02:28:22 <sgeo_> I still don't really quite understand Scheme macros
02:28:26 <Bike> well, so do I, but i've never seen anyone call unhygeine "beautiful" or w/e
02:28:50 -!- Phantom_Hoover has quit (Read error: Connection reset by peer).
02:28:53 <kmc> well the fact that they're unhygenic is not the beautiful part
02:29:06 <zzo38> I think is good to have both kind of macros available, as well as the macro with is partially hygienic and partially unhygienic, if you want to write such a macro.
02:29:25 <Bike> you can define hygenic macros in an unhygenic macro system and vice versa, so.
02:29:47 <sgeo_> http://sgeo.tumblr.com/post/37650151853/common-lisp-symbols-vs-clojure-symbols
02:30:33 <kmc> like, how is atomic commit actually accomplished
02:30:36 <Bike> "Clojure unquoting uses ~ and ~@ instead of CL's , and ,@. This allows Clojure to treat commas as whitespace." i made the mistake of googling things
02:31:04 <kmc> assuming you have proceeded successfully to the end of a transaction, and have new values for refs stored in some data structure, how do you actually commit them all at once?
02:31:57 <Bike> commits don't just use mutexes, huh
02:32:55 <Gracenotes> you could use seqlocks or something, I guess
02:32:57 <Bike> oh or wait, is it like compare and swap
02:33:01 <Bike> wow i know shit about concurrency
02:33:16 <Gracenotes> although those do require writer locks... nevermind.
02:33:39 <kmc> you generally can't compare and swap an arbitrary number of pointers at once
02:34:09 <kmc> i mean i can think of ways to do it, you can have a lock on each variable or a global commit lock
02:34:09 <Bike> maybe it only retries writes that fail? hm
02:34:14 <Jafet> I assume it uses locks
02:34:15 <kmc> i was just wondering what GHC does
02:34:31 <kmc> i wasn't really asking for a bunch of uninformed speculation
02:34:33 <Bike> sgeo_: your post there is kind of wrong in a couple nitpicky ways
02:34:39 <kmc> but I guess this is what I get for asking a question on IRC
02:34:40 <Bike> sorry kmc
02:34:44 <kmc> it's ok :)
02:34:50 <kmc> i too enjoy a bit of uninformed speculation from time to time
02:35:03 <Bike> all i know about STM is that there's going to be hardware TM soon enough
02:35:10 <Jafet> I assume it uses locks because that's what most STM implementations use
02:35:27 <sgeo_> Bike, hmm, how so?
02:35:59 <kmc> i've heard it described as lockless
02:36:05 <kmc> but not in detail
02:36:56 <Jafet> Also, irc is the only place to get high quality uninformed speculation
02:37:04 <Jafet> We specialize in armchair navel gazing
02:37:17 <Jafet> There are so many other places on the internet to get actual facts
02:37:21 <Bike> i'm just going to pm you because it's really nitpicky
02:38:10 <Jafet> Apparently, the ghc wiki is not one of them
02:39:11 <Gracenotes> there are functions lock_stm and unlock_stm in GHC RTS
02:39:31 <Gracenotes> they do cas on a global static variable
02:40:12 <Gracenotes> they seem to surround most interesting functions, like stmCommitTransaction
02:41:17 <Gracenotes> there's also a bunch of checking done before a linearization point, at which a given thread claims ownership of tvars
02:42:02 <Gracenotes> complicated, but pretty straightforward compared to doing it for arbitrary executables, granted >_>
02:43:25 <kmc> ok, cool
02:44:25 <sgeo_> Bike, edited post
02:56:16 -!- canaima172425 has joined.
02:57:08 -!- canaima172425 has left.
03:15:58 -!- sebbu has quit (Ping timeout: 245 seconds).
03:33:28 -!- keb has joined.
04:17:27 <ais523> haha, the BBC have a live feed of an important ancient Mayan site
04:17:34 <ais523> counting down to the end of the world in their local time
04:17:38 <Bike> for god's sake.
04:17:52 <ais523> they don't think the world's going to end
04:17:59 <ais523> but it's a news event and they're in the mood to cover it
04:18:07 <ais523> if nothing else, it's like a Y2K celebration
04:18:32 <quintopia> i am at home missing a great end of the world party
04:18:35 <ais523> they said they'll get back to the end of the world later
04:18:44 <Bike> b'ak'tun's ending and we're all going to die. thanks obama
04:18:57 <quintopia> but i'm too tired and i dont know the address and i have to be up at 6am :( :( :(
04:26:49 <sgeo_> It's still not midnight in my time zone
04:26:55 <sgeo_> So I'm still on the 21st
04:27:17 <sgeo_> Maybe it's a rolling thing and you're all just fakes to fake me out into thinking I'm safe
04:28:52 <quintopia> the mayas all fit into central time
04:28:59 <quintopia> but
04:29:13 <quintopia> they may not have had the same idea of midnight
04:29:17 <quintopia> probably didnt in fact
04:30:20 <Fiora> I thought this was all yesterday though
04:30:28 <Fiora> was the apocalypse postponed one day
04:31:07 <quintopia> no
04:31:12 <quintopia> it happened right on time
04:31:14 <kmc> the apocalypse was moved to thursday to chase the coveted 18-35 demographic
04:31:19 <quintopia> we're all dead and in purgatory
04:31:24 <quintopia> we just don't know it
04:31:39 <quintopia> hi ais523
04:31:43 <sgeo_> All I'm saying is that it's still the 21st, it's not too late for the world to end
04:31:52 <ais523> hi quintopia
04:32:05 <ais523> also midnight is pretty easy to understand
04:32:09 <zzo38> Midnight is when the sun conjuncts the MC, though, isn't it?
04:32:12 <quintopia> did you want to know how to beat space_hotel?
04:32:39 <ais523> oh, I can probably find a way, but I'm interested in your theories too
04:32:44 <quintopia> zzo38: that happened in 1998. it's only a partial alignment this time
04:33:12 <ais523> I was wondering if there was a general way to exploit jousters using the "trail and poke forwards, enhance decoys backwards, then forwards decoy setup while checking tripwires" strategy
04:33:20 <quintopia> well there is no good way to beat it with a lock. it would be a monstrous program if you did
04:33:22 <zzo38> quintopia: What? Sorry?
04:33:29 <ais523> because all the best jousters do that, and most of the time in BF Joust, if there's any pattern at all, it's exploitable
04:33:37 <ais523> I wasn't actually planning to lock
04:33:44 <quintopia> yeah
04:33:52 <quintopia> its best contender is counterpoke
04:33:59 <ais523> one of my plans involved detecting where your jouster was, waiting for it to pass a tripwire, then going behind it and taking the tags while it sets decoys
04:33:59 <zzo38> What happened in 1998 and is only a partial alignment this time?
04:34:07 <ais523> *taking the flags
04:34:13 <quintopia> well i mean other than those two i made just to beat it
04:34:16 <ais523> but I don't think there's any way to do it but getting lucky
04:34:26 <quintopia> i was going to suggest exactly that strategy
04:34:30 <ais523> or exploiting the fact that its reverse tripwires are size 3, and I hate that sort of level of constant-tweaking
04:34:44 <zzo38> I do not understand what you are refering to.
04:34:53 <quintopia> or rather
04:34:58 <ais523> quintopia: well what you'd have to do is find one of its tripwires, preferably as near to the flag as you can safely
04:35:00 <ais523> then wait for it to become 0
04:35:06 <quintopia> i was going to suggest a deep poke that restored tripwires
04:35:10 <ais523> yep
04:35:21 <ais523> but it's not fast enough, and really really long
04:35:32 <quintopia> mainly long
04:35:33 <ais523> oh, hmm, as a poke?
04:35:37 <quintopia> can be pretty fast
04:35:40 <ais523> rather than as a clear?
04:35:44 <quintopia> yes
04:35:47 <ais523> huh, I didn't think of that angle
04:36:12 <ais523> so the idea would be to set up decoys while it was setting decoys
04:36:16 <ais523> then skip much more of yours than you did of its
04:36:28 <quintopia> ayeaye capn
04:36:31 <quintopia> also
04:36:46 <ais523> I'll only need, like, 210 copies of the program
04:36:49 <ais523> that might be manageable :)
04:36:51 <quintopia> you can make a lot of small decoys right at the beginning until you achieve a shallow poke
04:37:05 <quintopia> space_hotel is miserable at clearing long lines of small decoys
04:37:11 <quintopia> because of the huge offset
04:37:14 -!- WeThePeople has joined.
04:37:24 <ais523> yeah; small decoys used to actually not do anything
04:37:27 <ais523> but that isn't really the case any more
04:37:40 -!- WeThePeople has quit (Changing host).
04:37:41 -!- WeThePeople has joined.
04:38:22 <quintopia> anything one bigger than its wiggle will cost it almost as many cycle as if it never offset at all
04:38:29 <ais523> yep
04:38:35 <ais523> I think we have a new concept of "medium-sized decoy"
04:38:42 <ais523> as well as "small decoy" and "large decoy"
04:38:46 <ais523> it's around… 4 or 5?
04:39:33 <quintopia> the fact that counterpoke does not use a large offset is what makes it so potent against space_hotel.
04:39:48 <quintopia> or is it skyscraper that does that?
04:39:59 <quintopia> skyscraper didnt build big enough decoys
04:40:30 <ais523> I can't even remember how skyscraper works
04:40:34 <ais523> and only vaguely remember counterpoke
04:40:37 <ais523> I should look at my own code
04:41:37 <ais523> huh, I don't even have a copy of skyscraper any more
04:41:40 <ais523> apart from in the hg history
04:41:50 <ais523> could you remind me?
04:42:22 <quintopia> i am on my phone
04:43:14 <quintopia> just use the hg one
04:43:41 <ais523> yeah, I'm just not sure how to find it in hg history
04:44:53 <kmc> http://files.shroomery.org/files/05-03/641365503-Naked_girl_with_shroom_bible.jpg what it says on the tin
04:44:53 <ais523> ah, found it
04:44:59 <ais523> \$ hg cat -r 9792 ais523_skyscraper.bfjoust
04:45:53 <quintopia> what the hell is a shroom bible for
04:45:54 <ais523> huh, this decoy setup makes no sense
04:46:01 <quintopia> a bible with fungus infection?
04:46:07 <ais523> why would I write a decoy setup that jumps around like that
04:46:20 <kmc> yeah
04:46:24 <ais523> !bfjoust skyscraper >>>>>>>>[((>[+[+[---[-[(+)*96(.+)*64{}]]]]])%21)*21](+)*12<(+)*80<(+)*40<(+)*10>>(+)*30<<(<(+)*10)*4>>>>>>([{(<)*7(-)*99(>)*8(>[(+)*19[---]])*21}<(+[{+(+[{(<(-)*60)*5<(+)*78(>)*12(>[(+)*19[-]])*17}](<(+)*40)*5<(-)*78(>)*12(>[(+)*19[-]])*17)%100}](<(+)*40)*5<(-)*78(>)*12(>[(+)*19[-]])*17)%156])%768
04:46:30 <kmc> someone growing psychedelic mushrooms inside a bible
04:46:34 <Bike> kmc: what is that... mass of... fur? under the tree
04:46:35 <EgoBot> ​Score for ais523_skyscraper: 21.5
04:46:40 <kmc> they eat wood you know
04:46:43 <ais523> this is a blatant attempt to get it into egojsout
04:47:02 <quintopia> because copypasta is too hard
04:47:02 <kmc> i, uh, don't know
04:48:28 <ais523> also why does it beat anticipation? it looks like the sort of program anticipation would beat really easily
04:49:06 <ais523> oh, probably because of the "anticipation was tweaked to omit cases that weren't actually used against the hill because of space limits" thing
04:50:04 <ais523> yeah
04:50:55 <quintopia> so when do you think we'll get random numbers in bfjoust eh
04:52:01 <ais523> probably never, I thought it would be pretty interesting, but it causes too many problems for hill maintainabilty/replicability
04:52:13 <quintopia> oh okay
04:52:26 <quintopia> when do you think we'll get an infinite hill
04:52:32 <ais523> like, you couldn't tell who won or didn't win
04:52:41 <ais523> as well as spamming
04:52:49 <sgeo_> infinite hill?
04:52:54 <ais523> I think I like the large finite one we have at the moment, although I'd submit to an infinite hill too
04:53:05 <ais523> sgeo_: like the current one but infinitely large
04:53:16 <ais523> if a program's good enough, you can leave it on the hill forever
04:53:22 <ais523> even atm
04:53:29 <ais523> any idea which program's survived there the longest, incidentally?
04:53:50 <quintopia> but the downside of a finite hill is the possibility of making a program that beats the entire hill on every tape length and polarity without involving brackets
04:53:53 <quintopia> so
04:53:59 <quintopia> i have an idea
04:54:14 <quintopia> we should give extra credit for number of generations survived
04:54:42 <ais523> also, wow is counterpoke vs. space_hotel close
04:55:40 <quintopia> yeah counterpoke originally won until i tweaked the initial decoy setup just to avoid triggering its short tape jump-to-flag condition
04:57:35 <ais523> I love that condition
05:11:21 -!- Bike has quit (Quit: Reconnecting).
05:11:35 -!- Bike has joined.
05:18:54 -!- WeThePeople has quit (Remote host closed the connection).
05:32:12 -!- Nisstyre has quit (Quit: Leaving).
05:34:57 <sgeo_> Fiora, elliott
05:37:33 -!- Nisstyre-laptop has quit (Quit: Leaving).
05:38:33 -!- Nisstyre-laptop has joined.
05:39:28 <shachaf> kmc: Aren't ≅ and ≌ great?
05:39:58 <kmc> is that like ± and ∓
05:40:30 <Bike> "ALL EQUAL TO", wha
05:42:13 <shachaf> `quote
05:42:33 <shachaf> What!
05:42:37 <shachaf> Gregor!
05:42:39 <shachaf> @quote
05:42:40 <lambdabot> PaulJohnson says: A paradox of the Haskell world is that, while the language is Vulcan, the community around it is dominated by Warm Fuzziness. Clearly the two are not mutually exclusive.
05:42:48 <shachaf> @quote
05:42:48 <lambdabot> pejo says: shapr, I haven't said anything thoughtful yet, but I'm working on it.
05:42:48 <shachaf> @quote
05:42:48 <lambdabot> wuttf says: i think i have to learn this language, the type systems i know just dont feel right
05:42:48 <shachaf> @quote
05:42:48 <shachaf> @quote
05:42:48 <lambdabot> BHSPitMonkey says: as well as to do try more like
05:42:49 <lambdabot> Pseudonym says: All hail the Evil Mangler!
06:02:13 <coppro> dammit
06:02:19 <coppro> CD really is trying hard to be the awesomest
06:13:53 <ais523> coppro: CD = ?
06:20:02 <coppro> ais523: homestuck
06:20:07 <ais523> ah right
06:27:54 <zzo38> Is for all monad transformer t: t Finalize = Finalize true for all categories with final objects?
06:32:47 -!- zzo38 has quit (Remote host closed the connection).
06:49:38 -!- zzo38 has joined.
07:08:33 -!- asiekierka has quit (Excess Flood).
07:09:16 -!- asiekierka has joined.
08:07:24 <hagb4rd> hello droogies
08:17:29 -!- nooga has joined.
08:26:03 <shachaf> @quote
08:26:03 <lambdabot> Plugin `quote' failed with: getRandItem: empty list
08:26:04 <shachaf> @quote
08:26:04 <lambdabot> nornagon says: i thought someone just wrote a lambdabot plugin to write lambdabot
08:26:04 <shachaf> @quote
08:26:04 <shachaf> @quote
08:26:04 <lambdabot> shachaf says: * shachaf = delliott/dt
08:26:04 <shachaf> @quote
08:26:04 <lambdabot> ddarius says: Attempting to join #not-not-math sent me to #math. Freakin' Boole.
08:26:05 <lambdabot> ReinierLamers says: If we keep up the current pace of performance hacking, darcs will be complete before you even hit the enter key in a few years
08:54:21 <zzo38> I know of more than one solitaire game where only the suits are relevant, and not the ranks of the cards.
08:58:23 -!- Bike has quit (Quit: leaving).
09:00:07 -!- ais523 has quit.
09:05:20 <zzo38> There are also games where the ranks are relevant and the suits aren't relevant.
09:06:34 -!- oerjan has joined.
09:21:57 -!- hagb4rd has quit (Quit: hagb4rd).
09:22:17 <oerjan> @tell ais523 I'm not convinced it's _obvious_ 6 should have zero probability. it decreases the chance of winning on the first step yes, but it also increases it on all the others...
09:22:17 <lambdabot> Consider it noted.
09:25:47 <zzo38> I agree with you
09:38:42 -!- hagb4rd has joined.
09:44:44 <shachaf> kmc: I just used the word "trivial" in #haskell.
09:45:13 <shachaf> As in "making twanvl lenses polymorphic is trivial"
09:45:34 <shachaf> My defense is that making them polymorphic consists of commenting out the type signature.
09:45:35 <fizzie> Or as in, "Trivial Pursuit is a trivial pursuit".
09:46:07 <fizzie> (Trivial fursuit is just the skin of a dead animal.)
09:47:09 <zzo38> O, that's what you mean by trivial.
09:48:53 <zzo38> shachaf: You can also figure out the type it infers and put that in, if you want it to have a type signature; I always want it to have a type signature. But do you have example of the polymorphic lenses?
09:48:58 <zzo38> Of what exactly you want?
09:49:29 <shachaf> zzo38: People used to do things like
09:49:43 <shachaf> type Lens s a = s -> (a, a -> s)
09:50:00 <shachaf> _1 :: Lens (a,b) a; _1 (x,y) = (x, (,y))
09:50:16 <shachaf> Except with newtype instead of type.
09:50:32 <shachaf> As it happens, if you write a lens like that, you can make it polymorphic just by commenting out its type signature.
09:50:42 <shachaf> But no one really noticed that until twan lenses.
09:50:55 <zzo38> Is that Twan van Laarhoven?
09:50:57 <shachaf> (Because those don't work as a newtype; they have to be defined as a synonym.)
09:50:59 <shachaf> Yes.
09:56:41 -!- ais523 has joined.
10:24:23 -!- monqy has joined.
10:37:12 -!- nooga has quit (Ping timeout: 244 seconds).
10:37:35 -!- hagb4rd has quit (Quit: Page closed).
10:40:17 -!- oerjan has quit (Quit: leaving).
10:40:53 -!- hagb4rd has joined.
10:40:58 -!- sebbu has joined.
10:40:58 -!- sebbu has quit (Changing host).
10:40:58 -!- sebbu has joined.
10:41:54 -!- zzo38 has quit (Quit: zzo38).
10:45:33 -!- sebbu has quit (Ping timeout: 245 seconds).
10:55:46 -!- copumpkin has quit (Ping timeout: 252 seconds).
10:56:25 -!- copumpkin has joined.
10:56:49 -!- sebbu has joined.
11:51:10 -!- Nisstyre-laptop has quit (Ping timeout: 252 seconds).
12:20:20 <ais523> hmm… so my computer's been acting weirdly recently
12:20:21 <lambdabot> ais523: You have 1 new message. '/msg lambdabot @messages' to read it.
12:20:27 <ais523> so I decided to run memcheck86
12:21:33 <ais523> conclusions: no errors in the first six tests
12:21:43 <ais523> then the seventh test gives an error on /every single memory address on the system/
12:23:39 <ais523> it looked from the output like its expected output and its provided input had no relation to each other
12:26:56 <FreeFull> ais523: Try reseating your RAM
12:27:05 <FreeFull> Also amazed that you could boot at all
12:27:17 <ais523> FreeFull: err, I'm saying, I think the test was bugged
12:27:21 <ais523> rather than the memory
12:27:42 <FreeFull> Ah
12:27:45 <ais523> you don't read the memory as consistently working for six tests, then suddenly not working at all just because you provide random rather than deterministic data
12:28:33 <FreeFull> Could be that the test got corrupted by the RAM =P
12:28:52 <ais523> yeah, I was wondering about that too
12:29:02 <ais523> but in that case the other tests would have found a problem
12:30:39 -!- keb has quit (Remote host closed the connection).
12:31:12 <FreeFull> ais523: Could be the way the random numbers are generated too. Anyway, how is memtest supposed to test the memory it's occupying?
12:31:20 <ais523> FreeFull: it moves
12:31:28 <ais523> and then tests where it was
12:31:32 <ais523> anyway, rebooting
12:31:36 -!- ais523 has quit (Remote host closed the connection).
12:36:00 -!- ais523 has joined.
13:14:46 -!- SingingBoyo has quit (Ping timeout: 252 seconds).
13:37:48 -!- AnotherTest has joined.
13:37:59 <AnotherTest> Hello
13:57:53 -!- AnotherTest has quit (Quit: Leaving.).
13:58:13 -!- AnotherTest has joined.
14:32:36 -!- ogrom has joined.
14:34:25 -!- nys has joined.
14:40:31 <elliott> 02:31:04: <kmc> assuming you have proceeded successfully to the end of a transaction, and have new values for refs stored in some data structure, how do you actually commit them all at once?
14:40:35 <elliott> kmc: it uses a lock iirc
14:40:53 -!- AnotherTest has quit (Read error: Connection reset by peer).
14:41:00 -!- AnotherTest has joined.
14:56:33 -!- WeThePeople has joined.
14:56:49 -!- WeThePeople has quit (Changing host).
14:56:49 -!- WeThePeople has joined.
15:09:24 -!- ais523 has quit.
15:19:58 -!- carado has quit (Ping timeout: 246 seconds).
15:24:22 -!- ogrom has quit (Ping timeout: 250 seconds).
15:28:46 -!- trying has joined.
15:37:28 -!- carado has quit (Ping timeout: 246 seconds).
15:38:59 -!- iamcal_ has quit (Remote host closed the connection).
15:44:22 -!- Taneb has joined.
15:53:00 -!- epicmonkey has joined.
16:09:45 -!- iamcal_ has joined.
16:28:54 -!- sebbu has quit (Read error: Connection reset by peer).
16:29:22 -!- sebbu has joined.
16:29:22 -!- sebbu has quit (Changing host).
16:29:22 -!- sebbu has joined.
16:29:22 -!- sebbu has quit (Excess Flood).
16:29:57 -!- sebbu has joined.
16:29:57 -!- sebbu has quit (Changing host).
16:29:57 -!- sebbu has joined.
16:29:57 -!- sebbu has quit (Excess Flood).
16:30:22 -!- sebbu has joined.
16:30:22 -!- sebbu has quit (Changing host).
16:30:22 -!- sebbu has joined.
16:30:22 -!- sebbu has quit (Excess Flood).
16:30:47 -!- sebbu2 has joined.
16:30:47 -!- sebbu2 has quit (Changing host).
16:30:47 -!- sebbu2 has joined.
16:30:47 -!- sebbu2 has quit (Excess Flood).
16:31:13 -!- sebbu3 has joined.
16:31:14 -!- sebbu3 has quit (Excess Flood).
16:31:43 -!- sebbu3 has joined.
16:31:44 -!- sebbu3 has quit (Excess Flood).
16:32:13 -!- sebbu3 has joined.
16:32:13 -!- sebbu3 has quit (Excess Flood).
16:32:37 -!- sebbu3 has joined.
16:32:38 -!- sebbu3 has quit (Changing host).
16:32:38 -!- sebbu3 has joined.
16:32:38 -!- sebbu3 has quit (Excess Flood).
16:35:03 -!- trying has quit (Ping timeout: 245 seconds).
17:03:22 -!- ogrom has joined.
17:08:04 -!- sgeo_ has quit (Quit: Leaving).
17:08:28 -!- Sgeo has joined.
17:08:35 <Sgeo> I feel capitalized again
17:09:05 <quintopia> you feel quite capital?
17:09:13 <Sgeo> Yes
17:09:15 <quintopia> or you feel punished?
17:09:29 -!- nooga has joined.
17:19:20 <elliott> @tell ais523 http://blog.functorial.com/posts/2012-12-21-One-Hole-Contexts-Generalize-Diff-To-Containers.html
17:19:20 <lambdabot> Consider it noted.
17:20:57 -!- sebbu4 has joined.
17:20:58 -!- sebbu4 has quit (Excess Flood).
17:21:23 -!- sebbu4 has joined.
17:21:24 -!- sebbu4 has quit (Excess Flood).
17:21:48 -!- sebbu4 has joined.
17:29:54 -!- Bike has joined.
17:53:13 -!- zzo38 has joined.
18:08:30 <zzo38> ?messages
18:08:30 <lambdabot> You don't have any new messages.
18:20:15 -!- oerjan has joined.
18:28:01 -!- nooga_ has joined.
18:28:24 -!- nooga has quit (Ping timeout: 264 seconds).
18:33:27 <zzo38> Did you say "often" or "orphan"?
18:34:20 <elliott> yes
18:37:32 <oerjan> nah, he's just an awe fan
18:48:24 -!- sebbu4 has changed nick to sebbu.
18:48:45 -!- sebbu has quit (Changing host).
18:48:45 -!- sebbu has joined.
19:21:13 -!- AnotherTest has quit (Quit: Leaving.).
19:35:28 -!- nooga_ has quit (Ping timeout: 246 seconds).
20:01:08 -!- Nisstyre-laptop has joined.
20:01:43 -!- carado has quit (Ping timeout: 246 seconds).
20:03:35 -!- Nisstyre has joined.
20:04:56 -!- Nisstyre has quit (Read error: Connection reset by peer).
20:21:02 -!- hogeyui has quit (Ping timeout: 244 seconds).
20:25:46 -!- ogrom has quit (Quit: Left).
20:32:29 -!- hogeyui has joined.
20:39:10 -!- epicmonkey has quit (Ping timeout: 252 seconds).
20:41:44 -!- WeThePeople has quit (Quit: Leaving).
21:02:13 <zzo38> Do you like this music? http://zzo38computer.org/csound/music/antioch.zip
21:03:14 <zzo38> (The ZIP archive contains the Vorbis audio file, as well as the source files, with the exception of the pregenerated PADsynth tables.)
21:03:23 <Taneb> That's pretty nice-sounding
21:06:59 <zzo38> The PADsynth settings used were: f 5 0 524288 "padsynth" 1 200 .07 1 3 1 -1 (If you want to compile the music from source you will need the file "pad5.csft" which can be generated using this code; the file padgen.zip also contains this file as well as the source to this file, if you want it.)
21:16:44 <zzo38> You are free to add, remove, change, and improve!
21:27:34 -!- WeThePeople has joined.
21:30:24 -!- WeThePeople has quit (Client Quit).
21:32:39 -!- asiekierka has quit (Excess Flood).
21:34:36 -!- WeThePeople has joined.
21:34:48 -!- asiekierka has joined.
21:35:12 -!- augur has quit (Remote host closed the connection).
21:42:29 -!- GreyKnight has joined.
21:49:31 <ion> Meanwhile in Japan http://youtu.be/vhHo6CUq4-o
21:56:01 <Taneb> There's a person in #haskell whose username is too similar to mine
21:56:05 <Taneb> I'm gonna Ngevd
21:56:10 -!- Taneb has changed nick to Ngevd.
21:56:19 <Ngevd> @clear-messages
21:56:19 <lambdabot> Messages cleared.
21:58:24 -!- GreyKnight has quit (Ping timeout: 264 seconds).
21:58:38 <monqy> a few days ago i found someone in there named "artiq" or something like that
21:58:55 <monqy> i think it was "artiq" but it was definitely a transposition away from "atriq"
22:00:35 -!- GreyKnight has joined.
22:06:51 <GreyKnight> Also meanwhile in Japan: http://fotozup.com/wp-content/uploads/2010/01/japanese_body_modification_01.jpg
22:06:55 <GreyKnight> "This man has pineapple rings in his forehead. Your argument is irrelevant."
22:06:57 <GreyKnight> ("in" was not a typo)
22:07:56 <elliott> hi
22:08:04 <monqy> hi!!!
22:08:13 <GreyKnight> hi
22:11:48 <GreyKnight> `addquote <Jafet> Also, irc is the only place to get high quality uninformed speculation <Jafet> We specialize in armchair navel gazing
22:11:49 <oerjan> Ngevd: just one keming away, even! you should ask him if his surname is van doom...
22:13:30 <zzo38> Do you agree?
22:14:10 -!- oerjan has set topic: The channel for esoteric omphaloskepsis and computer programming | http://codu.org/logs/_esoteric/.
22:14:36 -!- Nisstyre has joined.
22:16:20 -!- GreyKnight has quit (Ping timeout: 260 seconds).
22:17:47 -!- oerjan has set topic: The channel for polythronic omphaloskepsis and computer programming | http://codu.org/logs/_esoteric/.
22:18:02 -!- GreyKnight has joined.
22:20:05 -!- GreyKnight has set topic: The channel for polythronic omphaloskepsis and compsognathus progesterone | http://codu.org/logs/_esoteric/.
22:21:07 <GreyKnight> Gregor: where is HackEgo??
22:21:13 <GreyKnight> did the Mayans get him?!
22:21:19 <Gregor> Afraid so.
22:21:45 -!- HackEgo has joined.
22:22:35 <Gregor> `ls
22:22:40 <HackEgo> bin \ canary \ egobot.tar.xz \ etc \ factor \ factor-linux-x86-64-0.95.tar.gz \ foo \ foo.err \ foo.out \ ibin \ ibins \ interps \ karma \ lib \ luabuild \ luafilesystem-1.6.2-1.rockspec \ luafilesystem-1.6.2-1.src.rock \ luarocks.err \ luarocks.out \ paste \ penlight-1.0.0-1.rockspec \ penlight-1.0.0-1.src.rock \ quotes \ share \ wisdom \ zalgo.hs
22:28:15 -!- GreyKnight has quit (Ping timeout: 265 seconds).
22:32:02 -!- GreyKnight has joined.
22:37:04 <GreyKnight> `run echo "The channel for polythronic omphaloskepsis and compsognathus progesterone" | zalgo
22:37:06 <HackEgo> T̞h͈e͗ ͜cͫh̦a̡n̺n̢ḛl̋ ̌f͚o͔r͋ ̡p̧o̅lͣy̾t̼h̬r͈o͊n͞i̶c̮ ̔o̎m̍pͮh͛ål̍ös̼k̬e̒p͔s̔i̋s̟ ̔a͌n̑d̹ ̴c̈o̞m̀p̆s͟o̫g̟nͭa͡t͢h͎u̜s̤ ̺p̩rͪo͉g̐ḛs͘t̆e̻r̻oͥn͝e̥ \ ̝
22:58:13 -!- sebbu2 has joined.
22:58:13 -!- sebbu2 has quit (Changing host).
22:58:13 -!- sebbu2 has joined.
22:58:14 -!- sebbu2 has quit (Excess Flood).
22:58:43 -!- sebbu2 has joined.
22:58:43 -!- sebbu2 has quit (Changing host).
22:58:43 -!- sebbu2 has joined.
22:58:44 -!- sebbu2 has quit (Excess Flood).
22:58:50 -!- sebbu has quit (Ping timeout: 276 seconds).
22:59:10 -!- sebbu3 has joined.
22:59:10 -!- sebbu3 has quit (Excess Flood).
22:59:34 -!- sebbu3 has joined.
22:59:34 -!- sebbu3 has quit (Changing host).
22:59:34 -!- sebbu3 has joined.
22:59:38 -!- sebbu3 has quit (Excess Flood).
22:59:52 -!- ChanServ has set channel mode: +o oerjan.
23:00:04 -!- sebbu3 has joined.
23:00:05 -!- sebbu3 has quit (Excess Flood).
23:00:22 -!- oerjan has set channel mode: +b *!~sebbu@unaffiliated/sebbu.
23:00:26 <GreyKnight> hi sebbu.*
23:00:33 -!- sebbu3 has joined.
23:00:34 -!- sebbu3 has quit (Excess Flood).
23:00:37 <oerjan> wat
23:00:56 -!- oerjan has set channel mode: -b *!~sebbu@unaffiliated/sebbu.
23:01:03 -!- sebbu3 has joined.
23:01:03 -!- sebbu3 has quit (Changing host).
23:01:03 -!- sebbu3 has joined.
23:01:03 -!- sebbu3 has quit (Excess Flood).
23:01:14 <elliott> oerjan: that changing host quit isn't a real quit
23:01:18 <elliott> set the ban on the wanadoo version
23:01:22 <oerjan> oh
23:01:32 <elliott> its before the host comes in
23:01:33 <elliott> that won't work
23:01:39 <elliott> you want it on the wanadoo hostname
23:01:45 <GreyKnight> I posted before I saw your comment
23:01:59 <elliott> ok
23:02:30 * GreyKnight battens down hatches for a sebbustorm
23:02:38 <oerjan> seems it worked
23:03:30 <monqy> rip sebu
23:03:41 <elliott> i read the @ as in front of monqy there
23:03:46 <elliott> oerjan: requesting you op monqy.
23:03:48 <elliott> it's the right thing to do
23:04:04 <GreyKnight> @-party
23:04:05 <lambdabot> Not enough privileges
23:04:12 <elliott> oerjan: you may want to /msg sebbu3 saying you'll unban them once their internet is working if you haven't
23:05:06 <Deewiant> oerjan: You may want to actually set that ban (+b)
23:05:12 -!- Arc_Koen has quit (Quit: Arc_Koen).
23:05:25 <Sgeo> When I was having trouble, I was told that I might be given a turing test...
23:05:26 <oerjan> wat
23:05:51 <oerjan> Deewiant: mighty good point
23:05:52 <elliott> `quote turing test
23:05:54 <HackEgo> 381) <Sgeo> Will anyone be irritated if I tend to disconnect and reconnect a lot? [...] <oerjan> we _almost_ have an established policy that bots will be banned it they do that. which means we might have to administer a turing test to sgeo, and that could get ugly.
23:05:56 -!- oerjan has set channel mode: -o oerjan.
23:06:18 <elliott> I like how there's no ban but it still worked
23:06:22 <elliott> I guess because it failed to join the channel once
23:06:42 <oerjan> Deewiant: i can never remember whether it's + or -, and there is no response to indicate whether you get it right :(
23:07:25 <oerjan> and i hate looking at the ban list proper because it floods my channel window
23:08:13 <elliott> one could argue that a few bans could be removed.
23:08:41 <elliott> in fact from the looks of it there is only one ban that isn't yet another incarnation of cheater that wants keeping
23:09:14 -!- Arc_Koen has joined.
23:09:58 <oerjan> that seems a little exaggerated :P
23:14:32 <elliott> not exaggerating
23:14:52 <elliott> first four bans are all cheater, all the rest are from ancient one-or-two-time offenders who are very unlikely to return
23:14:56 <elliott> except one (dbelange)
23:16:03 <oerjan> i hate how the times keep being reset
23:16:13 <FreeFull> > round 4.5
23:16:15 <lambdabot> 4
23:16:17 <FreeFull> > round 5.5
23:16:18 <lambdabot> 6
23:16:20 <FreeFull> Huh
23:16:48 <FreeFull> "round x returns the nearest integer to x; the even integer if x is equidistant between two integers" Wonder why it doesn't just return the greater integer
23:17:09 <oerjan> elliott: um could you make an actual self-consistent statement :P
23:17:19 <oerjan> (dbelange is no. 3 for me)
23:17:55 <elliott> 23:07:58 -!- 1 - #esoteric: ban barts*!*@* [by ais523!~ais523@unaffiliated/ais523, 4671912 secs ago]
23:17:58 <elliott> 23:07:58 -!- 2 - #esoteric: ban \$a:cheater [by oerjan!oerjan@sprocket.nvg.ntnu.no, 10189258 secs ago]
23:18:01 <elliott> 23:07:58 -!- 3 - #esoteric: ban cheater*!*@*.adsl.alicedsl.de [by sturgeon.freenode.net, 11768887 secs ago]
23:18:04 <elliott> 23:07:58 -!- 4 - #esoteric: ban *!*@g230223105.adsl.alicedsl.de [by sturgeon.freenode.net, 11768887 secs ago]
23:18:07 <elliott> 23:07:58 -!- 5 - #esoteric: ban dbelange*!*@* [by sturgeon.freenode.net, 11768887 secs ago]
23:18:11 <elliott> FreeFull: because that's ceiling...
23:18:15 <elliott> round does normal rounding
23:18:30 <oerjan> FreeFull: it's called "banker's rounding" and it's supposed to make accumulated roundings cancel each other on average
23:18:31 <hagb4rd> frefull.. guess, that's because of there might no exact
23:18:41 <oerjan> afaik
23:18:48 <FreeFull> elliott: Ceiling would round 3.2 up
23:19:46 <hagb4rd> how can i output a float with a specified number of digits?
23:19:48 <elliott> oh for the equidistant case you mean
23:19:50 <elliott> then yeah what oerjan said
23:19:56 <elliott> it's "fairer" in some ways
23:20:04 <elliott> hagb4rd: it's nothing to do with floats
23:20:05 <oerjan> elliott: those are my 25, 24, 1, 2 and 3, respectively :P
23:20:13 <hagb4rd> hm
23:20:48 <GreyKnight> hagb4rd: you mean like %.4f etc?
23:21:07 -!- ChanServ has set channel mode: +o oerjan.
23:21:15 <hagb4rd> yes
23:21:21 -!- oerjan has set channel mode: -b *!*alvur@95.57.97.*.
23:21:30 -!- oerjan has set channel mode: -b *!*alvur@178.89.139.*.
23:21:34 <FreeFull> I think ghc will just output all the significant digits
23:21:41 -!- oerjan has set channel mode: -b HashB*!*@82.*.
23:21:49 -!- oerjan has set channel mode: -b *!*mithridat@unaffiliated/mithridates.
23:22:01 -!- oerjan has set channel mode: -b *!*@cho94-8-88-178-12-119.fbx.proxad.net.
23:22:13 -!- oerjan has set channel mode: -b *!*checker@c-68-55-8-210.hsd1.md.comcast.net.
23:22:23 -!- oerjan has set channel mode: -b *!*email@*.dyn.optonline.net.
23:22:34 -!- oerjan has set channel mode: -b *!*email@*.suomi.net.
23:22:55 -!- oerjan has set channel mode: -b *!*@d14-69-59-38.try.wideopenwest.com.
23:23:05 -!- oerjan has set channel mode: -b *!*@*.cable.dyn.cableonline.com.mx.
23:23:16 -!- oerjan has set channel mode: -b honey!*@beehive.insectopia.us.
23:23:25 -!- oerjan has set channel mode: -b *!*krbot@*.
23:23:28 <elliott> the bees!!!!
23:23:32 -!- oerjan has set channel mode: -b *!*@unaffiliated/beedaweeda.
23:23:33 <elliott> rip
23:23:40 -!- oerjan has set channel mode: -b *!*port72.c@50.8.174.*.
23:23:47 -!- oerjan has set channel mode: -b *!*@069-064-236-*.pdx.net.
23:23:48 <elliott> rip beedaweeda we missed you & yr ufos & yr molestation allegations
23:23:53 <elliott> oerjan: oh i lied port27.c might be one to keep.
23:23:57 -!- oerjan has set channel mode: -b *!*@ec2-50-112-122-72.us-west-2.compute.amazonaws.com.
23:24:02 <elliott> if that's who I think it is
23:24:05 <elliott> `pastelogs port72\.c
23:24:07 -!- oerjan has set channel mode: -b *!*prophaze@59.93.41.*.
23:24:10 <elliott> *72
23:24:23 -!- oerjan has set channel mode: +b *!*port72.c@50.8.174.*.
23:24:43 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.7328
23:25:22 <elliott> oh it's just beedaweeda
23:25:27 <elliott> unban away then, doubt they'll be back
23:25:52 -!- oerjan has set channel mode: -b *!*port72.c@50.8.174.*.
23:26:11 <elliott> hm apparently the justification is kind of float-related
23:26:11 -!- oerjan has set channel mode: -o oerjan.
23:26:16 <elliott> per what monochrom said to FreeFull in #haskell
23:26:20 <elliott> 23:25:44 <monochrom> http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html has an explanation of why round to even. string-search for "round to even"
23:26:20 * oerjan whistles innocently
23:26:50 <elliott> you realise one of those bots wasn't even mine right
23:26:57 <elliott> and also I don't have access to those IPs any more.
23:27:02 <elliott> (so the bans do nothing)
23:27:17 -!- ChanServ has set channel mode: +o oerjan.
23:27:28 -!- oerjan has set channel mode: -b *!*shutup@91.105.67.*.
23:27:37 -!- oerjan has set channel mode: -b *!*shutup@208.78.103.*.
23:27:47 -!- oerjan has set channel mode: -b *!*antioptbo@*.wmiscable.net.
23:27:59 <oerjan> GOOD ARGUMENT
23:28:04 -!- oerjan has set channel mode: -o oerjan.
23:28:35 <oerjan> > printf "%.4f" pi :: String
23:28:36 <lambdabot> "3.1416"
23:28:44 <hagb4rd> thx
23:28:46 <oerjan> hagb4rd: ^
23:29:42 <hagb4rd> > printf "%.6f" 4.5 :: String
23:29:44 <lambdabot> "4.500000"
23:30:26 <monqy> the only bot i remember is zeptobot...
23:30:41 * hagb4rd throws his cards on the table
23:31:08 <GreyKnight> Full house
23:31:14 <hagb4rd> no i pass
23:31:41 <GreyKnight> no I mean *I* had a full house. I win!
23:31:45 * GreyKnight takes the jackpot
23:36:24 -!- GreyKnight has quit (Ping timeout: 265 seconds).
23:38:52 -!- GreyKnight has joined.
23:39:13 <FreeFull> :t printf
23:39:15 <lambdabot> PrintfType r => String -> r
23:39:51 <FreeFull> Waaait, doesn't this type definition say it only takes one argument
23:40:13 <monqy> printf is a gross typeclass hack
23:40:27 <elliott> FreeFull: what does "only one argument" mean
23:40:31 <elliott> every function only takes one argument in haskell
23:40:36 <elliott> String -> Int -> () is just String -> (Int -> ())
23:40:38 <monqy> check out what all's an instance of PrintfType
23:41:10 <FreeFull> elliott: A function that doesn't take multiple arguments for me is one that doesn't return a function, and will error if any more arguments are supplied
23:41:14 <oerjan> :t printf ?x
23:41:15 <lambdabot> (?x::String, PrintfType r) => r
23:41:22 <oerjan> :t printf ?x ?y
23:41:24 <lambdabot> (?x::String, ?y::t, PrintfType t1, PrintfArg t) => t1
23:41:46 <elliott> FreeFull: sorry, that notion is insufficiently general to apply to haskell.
23:42:07 <elliott> anyway the point is there is a PrintfType instance for (a -> b)
23:42:14 <elliott> for sufficiently restricted a, b
23:42:41 <oerjan> (PrintfArg a, PrintfType b) => PrintfType (a -> b)
23:43:20 <oerjan> as well as instance PrintfType (IO ()) and instance PrintfType String, at least
23:43:36 <fizzie> > (printf "%d" :: Double -> String) 4.5
23:43:37 <oerjan> the latter are used to end the chain
23:43:38 <lambdabot> "*Exception: Printf.printf: bad argument
23:44:21 <FreeFull> elliott: PrintfType r => String -> r makes as much sense to me as Monad m => Integer -> m
23:44:49 <elliott> okay. then the problem is that you do not understand typeclasses
23:45:06 <elliott> learn about them and you will understand printf's type better
23:45:14 -!- GreyKnight has quit (Remote host closed the connection).
23:45:16 <FreeFull> Seems so
23:45:19 <hagb4rd> isn't that what he said already?
23:45:32 -!- GreyKnight has joined.
23:46:20 <Sgeo> What do you call amb extended to work with any monad, not just the list monad?
23:46:35 <elliott> Sgeo: nonexistant
23:46:45 <FreeFull> What is amb?
23:46:59 <Sgeo> Just asking for a name, there would be a slight difference in usage
23:47:10 <hagb4rd> another buzzword
23:47:18 <elliott> Sgeo: it doesn't exist. you can't write it
23:47:21 <elliott> there is no such function
23:48:07 <Sgeo> And by "slight difference" I mean "wrapped in a reset"
23:48:29 <elliott> Sgeo: it doesn't exist. you can't write it. there is no such function. amb does not work in every monad.
23:48:48 <monqy> Sgeo: call it mamb and discover for yourself why elliott's being a party pooper
23:49:03 <monqy> what does the name matter if it's impossible? mamb works well enough
23:50:30 <Sgeo> Maybe I have a wrong idea of what amb does? I'm sort of going off Factor's amb
23:50:41 <FreeFull> What is it meant to do and what would it do for a Maybe Integer
23:51:16 <elliott> Sgeo: how do you implement amb for Identity exactly
23:51:21 <elliott> well you can actually
23:51:26 <elliott> sort of
23:51:31 <elliott> it's possible for any MonadPlus anyway
23:51:31 <Sgeo> FreeFull, not execute the rest of the reset
23:51:36 <elliott> but clearly not any Monad
23:51:39 <elliott> return :: a -> M a
23:51:49 <elliott> map :: (a -> b) -> M a -> M b
23:51:52 <elliott> join :: M (M a) -> M a
23:52:00 <elliott> how do you write amb :: [a] -> M a with that exactly
23:52:25 <elliott> i mean, even in the simplest case, amb [], there is nothing you can do
23:53:03 <Sgeo> Wait, why is amb taking a list?
23:53:06 <FreeFull> s/map/fmap/
23:53:15 <elliott> okay what is your type for amb then
23:53:37 <elliott> FreeFull: map is a perfectly fine name for it. map is a specialisation of fmap in Haskell and I am working in an abstract setting.
23:53:37 <Sgeo> It's supposed to look like m a -> a from the perspective of using code
23:53:49 <elliott> Sgeo: what. amb is not [a] -> a in the list monad??
23:53:51 <elliott> it's [a] -> [a]
23:54:12 <elliott> FreeFull: you will also note that I specified monads in terms of the return/map/join trifecta, not return/(>>=)/fail, the last of which doesn't even exist.
23:54:16 <elliott> oh I guess (>>) is lumped in there nowadays too
23:54:21 <FreeFull> elliott: Yeah but being used to the specialisation being a specialisation got me confused until I realised you meant fmap =P
23:54:38 <elliott> I guess it is a less confusing name for someone used to Haskell, yes
23:54:45 <elliott> it worked for my intended audience, I hope
23:55:00 <Sgeo> elliott, o.O ?
23:55:06 <elliott> > let amb = id in do { x <- amb [1,2,3]; y <- amb [1,2,3]; guard (x+y == 3) }
23:55:08 <FreeFull> (>>) can be implemented with (>>=), right?
23:55:09 <lambdabot> [(),()]
23:55:11 <elliott> erm
23:55:14 <elliott> > let amb = id in do { x <- amb [1,2,3]; y <- amb [1,2,3]; guard (x+y == 3); return (x,y) }
23:55:16 <lambdabot> [(1,2),(2,1)]
23:55:19 <elliott> that's amb
23:55:25 <elliott> FreeFull: yeah
23:55:35 <elliott> m >> x = m >>= const x
23:55:41 <elliott> (const x = \_ -> x)
23:55:55 <FreeFull> Then lumping it in isn't very necessary =P
23:56:15 <elliott> it is for performance
23:56:22 <monqy> FreeFull: it's in case you want to specialize your >> to be optomized
23:56:26 <elliott> you can define (>>) more efficiently for some monads
23:56:39 <FreeFull> True
23:57:10 <FreeFull> But not necessary when you're talking about a minimal definition
23:57:31 <Sgeo> elliott, maybe a language without native delimited continuations is not the best for this discussion?
23:57:55 <elliott> Sgeo: then I have no idea what you are talking about, or why monads are involved
23:58:05 <elliott> or why you are relating this operation to amb