←2011-07-20 2011-07-21 2011-07-22→ ↑2011 ↑all
00:00:02 <tswett> Ooh.
00:00:09 <tswett> @src replicateM_
00:00:09 <lambdabot> replicateM_ n x = sequence_ (replicate n x)
00:01:03 <oerjan> > let f m n = error $ show m ++ ' ' : show n in sortBy f [1..10]
00:01:08 <lambdabot> mueval-core: Time limit exceeded
00:01:15 <oerjan> wtf
00:01:42 <oerjan> > let f m n = error $ show m ++ ' ' : show n in sortBy f [1..10]
00:01:45 <lambdabot> *Exception: 1 2
00:02:02 <oerjan> > let f 1 2 = LT; f m n = error $ show m ++ ' ' : show n in sortBy f [1..10]
00:02:05 <lambdabot> *Exception: 3 4
00:02:59 <oerjan> > let f x y | (x,y) `elem` zip [1,3] [2,4] = compare x y; f m n = error $ show m ++ ' ' : show n in sortBy f [1..10]
00:03:01 <lambdabot> *Exception: 1 3
00:03:14 <oerjan> > let f x y | (x,y) `elem` zip [1,3,1] [2,4,3] = compare x y; f m n = error $ show m ++ ' ' : show n in sortBy f [1..10]
00:03:16 <lambdabot> *Exception: 5 6
00:03:57 <oerjan> > let f x y | (x,y) `elem` zip [1,3,1,5] [2,4,3,6] = compare x y; f m n = error $ show m ++ ' ' : show n in sortBy f [1..10]
00:04:00 <lambdabot> *Exception: 7 8
00:04:27 <oerjan> > let f x y | (x,y) `elem` zip [1,3,1,5,7,5] [2,4,3,6,8,7] = compare x y; f m n = error $ show m ++ ' ' : show n in sortBy f [1..10]
00:04:30 <lambdabot> *Exception: 1 5
00:10:10 -!- copumpkin has joined.
00:11:14 <oerjan> > sortBy (\x y -> case (ord x - ord y) `mod` 3 of 0 -> EQ; 1 -> GT; 2 -> LT) "copumpkin cobrigade"
00:11:16 <lambdabot> "adn becoucoripmpgki"
00:12:17 <Sgeo__> http://qntm.org/tetris
00:12:24 <oerjan> interesting there are several common substrings to without the co
00:12:28 <copumpkin> oerjan: I see
00:12:28 <lambdabot> copumpkin: You have 1 new message. '/msg lambdabot @messages' to read it.
00:13:39 <oerjan> in fact just a k and i moved
00:38:34 <tswett> > error (error "yo")
00:38:36 <lambdabot> *Exception: yo
00:41:14 <tswett> Today, Anki expects me to recall 51 Finnish words and learn an additional 20.
00:41:17 <tswett> I am screwed. :P
00:41:31 <monqy> > error $! error "yo"
00:41:32 <lambdabot> *Exception: yo
00:41:58 <monqy> oops
00:42:14 <oerjan> > error undefined
00:42:16 <lambdabot> *Exception: *Exception: Prelude.undefined
00:42:21 <monqy> that's a good one
00:42:33 <itidus20> tama mika on? se on bussi
00:42:43 <oerjan> i wonder why error (error "yo") doesn't give two...
00:43:02 <oerjan> > error $ ' ':error "yo"
00:43:03 <lambdabot> *Exception: *Exception: yo
00:43:11 <itidus20> thats my finnish vocab. i believe it means "what is that? that is bus"
00:43:22 <oerjan> > error $ error "yo"
00:43:23 <lambdabot> *Exception: *Exception: yo
00:43:24 <monqy> > fix (error .) "yo"
00:43:25 <itidus20> or something similar
00:43:26 <lambdabot> "*Exception: *Exception: *Exception: *Exception: *Exception: *Exception: *E...
00:43:27 <oerjan> wat
00:43:46 <monqy> > error (error "yo")
00:43:47 <lambdabot> *Exception: yo
00:43:56 <oerjan> clearly this is something subtle...
00:44:08 <monqy> @src ($)
00:44:08 <lambdabot> f $ x = f x
00:44:17 <oerjan> > error (error (error "yo"))
00:44:19 <lambdabot> *Exception: yo
00:44:45 <monqy> > error $ error $ error $ "yo"
00:44:46 <lambdabot> *Exception: *Exception: *Exception: yo
00:44:52 <oerjan> if there were a rewriting rule, i'd expect it to trigger with $ as well
00:45:25 -!- copumpkin has quit (Ping timeout: 252 seconds).
00:45:49 -!- copumpkin has joined.
00:46:14 <oerjan> copumpkin: shachaf: do any of you have any idea why this differs?
00:46:20 <copumpkin> ?
00:46:23 <copumpkin> I just got disconnected
00:46:42 <shachaf> oerjan: That's kind of weird.
00:46:47 <oerjan> copumpkin: lambdabot gives different printout for error (error "yo") and error $ error "yo"
00:46:47 <monqy> > error (error "yo")
00:46:48 <lambdabot> *Exception: yo
00:46:53 <monqy> > error $ error "yo"
00:46:54 <lambdabot> *Exception: *Exception: yo
00:47:03 <copumpkin> yeah, someone brought that up a while ago
00:47:05 <elliott> <oerjan> > error (error (error "yo"))
00:47:05 <elliott> <lambdabot> *Exception: yo
00:47:05 <elliott> <monqy> > error $ error $ error $ "yo"
00:47:05 <elliott> <lambdabot> *Exception: *Exception: *Exception: yo
00:47:10 <elliott> Isn't ($) lazy?
00:47:16 <shachaf> > error `id` error "foo"
00:47:16 <copumpkin> I can't remember why it is, but I think there was discussion about it on haskell-cafe
00:47:17 <lambdabot> *Exception: *Exception: foo
00:47:21 <copumpkin> it's some sort of bug somewhere
00:47:38 <shachaf> > id error (error "foo")
00:47:39 <lambdabot> *Exception: *Exception: foo
00:47:44 <oerjan> elliott: they _should_ be identical. i'd be extremely surprised it f $ x isn't rewritten to be identical to f x inside ghc
00:47:46 <shachaf> > error (error "foo")
00:47:47 <lambdabot> *Exception: foo
00:48:02 <shachaf> > (let x = error in x) (error "foo")
00:48:03 <lambdabot> *Exception: foo
00:48:13 <shachaf> > (let x = error in x `seq` x) (error "foo")
00:48:14 <lambdabot> *Exception: foo
00:48:19 <shachaf> > (let x = error in id x) (error "foo")
00:48:20 <lambdabot> *Exception: *Exception: foo
00:48:26 <shachaf> Exciting.
00:51:00 <oerjan> found it: http://www.haskell.org/pipermail/haskell-cafe/2011-February/088905.html
00:54:56 <shachaf> So GHC knows that error is strict, but not that id error is?
00:55:00 <shachaf> Makes sense, I guess.
00:55:22 <oerjan> "But in version (B),
00:55:22 <oerjan> the demand analyzer only knows that ($) is strict in its first
00:55:23 <oerjan> argument -- it's not strict in its second."
00:55:30 <shachaf> > id error (error "foo")
00:55:31 <lambdabot> *Exception: *Exception: foo
00:55:33 <shachaf> > error (error "foo")
00:55:34 <lambdabot> *Exception: foo
00:56:13 <oerjan> "If ($) were getting inlined, the code would look the same coming into
00:56:14 <oerjan> demand analysis in both cases, so you wouldn't see a difference. So
00:56:14 <oerjan> I'm guessing you're compiling with -O0.
00:56:14 <oerjan> "
00:58:01 <coppro> -funroll-loops
00:59:17 <pikhq> -funroll-all-loops
00:59:33 <oerjan> -funroll-in-the-hay
01:10:57 <tswett> soittaa
01:41:39 -!- FireFly has quit (Quit: swatted to death).
01:45:12 -!- tswett has quit (Ping timeout: 246 seconds).
01:46:22 -!- tswett has joined.
01:47:46 <elliott> `addquote <Sgeo> I'm having nostalgia for when we could see the glass from the floor
01:47:47 <HackEgo> 520) <Sgeo> I'm having nostalgia for when we could see the glass from the floor
01:48:52 <monqy> is there context
01:59:27 -!- cheater__ has joined.
02:02:52 -!- cheater_ has quit (Ping timeout: 240 seconds).
02:04:52 <elliott> monqy: minecraft
02:04:56 <elliott> also technically a jok
02:04:57 <elliott> e
02:40:57 <oklopol> "<itidus20> thats my finnish vocab. i believe it means "what is that? that is bus" <<< i would translate it as "ths wht is? it is a bus."
02:41:10 <itidus20> close enough :>
02:41:32 <oklopol> certainly
02:41:43 <itidus20> wahahaha
02:42:26 <oklopol> certainly understandable
02:42:48 <itidus20> yeah.. somehow that phrase stuck
02:43:13 <oklopol> a similar sentence that means something would be "mik tm on? se on bussi"
02:43:36 <itidus20> ah.. i wouldn't know how to create such a character
02:43:40 <oklopol> what is this? it is a bus.
02:45:02 <itidus20> so im studying some haskell .. very beginner stuff
02:45:10 <oklopol> i don't know how not to know how to make such a character, so i certainly have some sympathy
02:45:39 <oklopol> erm
02:45:54 <oklopol> oh haskell
02:46:04 <oklopol> not finnish
02:46:05 <oklopol> ...
02:46:09 <itidus20> i have just learned fst (1,'a') and snd ("abc",2)
02:46:14 <oklopol> i was about to ask why the fuck everyone's learning it
02:46:20 <oklopol> but okay haskell
02:46:22 <oklopol> then i'll just ask
02:46:27 <oklopol> why the fuck is everyone learning it?
02:46:45 <itidus20> the reasons should be obvious
02:46:53 <oerjan> oklopol: on beesti languagi
02:47:10 <oklopol> xD
02:47:47 <itidus20> my friend who i left behind in an old chatroom would be very happy to hear i know any haskell words
02:48:01 <oklopol> "besti" is occasionally used i think
02:48:31 <itidus20> i think that the toughest part to learn is pronunciation
02:48:40 <oerjan> > fst . fst . fst . fst $ (((("fst!",1),2),3),4)
02:48:42 <lambdabot> "fst!"
02:48:53 <itidus20> whoa.. slow down
02:48:56 <itidus20> >.<
02:49:01 * oerjan cackles evilly
02:49:23 <oklopol> itidus20: how deep expressions have you learned to evaluate so far?
02:49:39 <oerjan> i'm sorry, obscure haskell demonstrations are obligatory on this channel
02:49:56 <oerjan> (not that that was particularly obscure for haskell)
02:49:56 <oklopol> that 4 was roughly my limit i think
02:49:58 <itidus20> an exercize was: Exercise 3.2 Use a combination of fst and snd to extract the character out of the tuple
02:49:59 <itidus20> ((1,a),"foo"). -- which i did
02:50:17 <itidus20> lol.. rocket science
02:50:19 <oklopol> snd . fst
02:50:28 <itidus20> oh.. the thing is the book doesn't have the dot
02:50:38 <itidus20> hmm this brings back grave memories
02:50:38 <oerjan> i have a hunch he may not have learned . and $ yet :P
02:51:00 <oerjan> itidus20: that's fine you can use parentheses instead
02:51:09 <oklopol> well anyway biggest penis = snd (fst penis)
02:51:16 <itidus20> the k and r book wasn't referencing certain characetrs when someone tried to show me
02:51:30 <itidus20> so that is a deep concern
02:51:43 <itidus20> ^s/referencing/showing
02:51:47 <oerjan> ah.
02:51:59 <itidus20> gulp
02:52:21 <itidus20> but is probably safe
02:52:25 <oerjan> itidus20: well haskell mostly uses just plain ascii, although there is a flag for using unicode for some stuff if you want things to look more like typeset math
02:52:53 <itidus20> uh.. im gonna assume the book simply didn't introduce the . yet
02:52:59 <oerjan> itidus20: almost certainly
02:53:07 <itidus20> however.. yeah that reminds me that my k and r book.. had missing chars
02:53:23 <oklopol> or maybe they just used \circ instead
02:53:32 <oerjan> > fst (fst (fst (fst (((("fst!",1),2),3),4))))
02:53:33 <lambdabot> "fst!"
02:53:41 <oerjan> better? :)
02:55:35 <oklopol> wurk ->
02:55:36 <itidus20> i see
02:56:55 <itidus20> > snd(snd (1,(2,3)))
02:56:56 <oklopol> itidus20: if f and g are functions, (g . f) is a new function that first applies f, and then applies g to the result. main use of this of course being obfuscation.
02:56:56 <lambdabot> 3
02:57:14 * oerjan swats oklopol -----###
02:57:20 <itidus20> oklo: im not listening.. :P im not taking the combinatrics approach
02:57:36 <oklopol> i
02:57:36 <oklopol> err
02:57:55 <itidus20> i mean i will if it ever gets there but yeah
02:58:04 <oklopol> you don't get that definition?
02:58:15 <oerjan> oklopol: you don't get that he might not get it?
02:58:25 <oklopol> oerjan: you don't get that i don't get that he might not get it?
02:58:31 <oklopol> wait
02:58:33 <oklopol> you totally got that.
02:58:37 <oerjan> yes i do.
02:58:38 <itidus20> i have no math background.. i encountered a curious ebook though which seems to be good at people like me
02:59:09 <itidus20> but worse than no math background my brain is wired in a strange way
02:59:16 <oerjan> itidus20: is it that Learn You a Haskell book? it's frequently recommended although i learned haskell before that...
02:59:42 <itidus20> Yet Another Haskell Tutorial by some guy Hal Daume
02:59:46 <oerjan> ah.
03:00:09 <oerjan> that's a bit older i think.
03:00:18 <itidus20> I don't think very well. But I do think.
03:00:48 <oklopol> :D
03:00:53 <oklopol> okay i really have to
03:01:32 <itidus20> > prtStrLn "bye"
03:01:33 <lambdabot> Not in scope: `prtStrLn'
03:01:39 <itidus20> ok sweet
03:01:58 <itidus20> :-s
03:02:00 <oerjan> itidus20: lambdabot only does expression printing, not output functions
03:02:06 <itidus20> cool
03:02:10 <oerjan> you might try EgoBot instead
03:02:17 <oerjan> !haskell putStrLn "bye"
03:02:19 <EgoBot> bye
03:02:38 <oerjan> on the other hand, lambdabot has many more functions imported by default
03:02:40 <itidus20> so i got hugs
03:03:05 <oerjan> itidus20: these days the recommendation is the haskell platform
03:03:23 <oerjan> hugs is sadly completely unmaintained now
03:03:46 <oerjan> although i used it for a long time
03:03:57 <itidus20> if i get anywheer i will keep it in mind
03:04:30 <itidus20> oh.. unrelated.. i have a curious function i would like to define
03:04:46 <itidus20> someone was explaining the game of pennymatching to me yesterday
03:04:53 <pikhq> Using Hugs these days is a bit like using GCC 1 for your C development.
03:05:37 <oerjan> itidus20: oh also when you asked the thing about characters i checked your client version and you seem to be on windows. so (1) there's a character map which you can use to get strange characters (2) if you use hugs you probably want to use winhugs
03:06:44 <itidus20> i have winhugs yeah. haskell book is ok. but once upon a time the k&r book had some troubles leaving out certain chars. ill have to check up one day if it has them
03:07:18 <itidus20> so about pennymatching.. one curious thing is that the rules are identical for each player
03:07:44 <itidus20> so they don't have to be defined for each player, only for a generic player.
03:08:16 <itidus20> (im weird)
03:08:26 <oerjan> sounds like nim-type games
03:08:38 <itidus20> oh.. pennymatching is very very simple.
03:09:07 <itidus20> 2 players choose a binary digit (such as heads or tails) in private and then compare.
03:09:27 <itidus20> if they are the same then player 1 wins. if they differ then player 2 wins
03:09:41 <itidus20> someone described it to me yesterday
03:09:51 <oerjan> heh ok that's probabilistic so not really nim-like
03:10:31 <oerjan> looks like a simple mixed strategy game
03:11:16 <itidus20> so, as i started to overanalyze it, i realized that of the four outcomes: 00,01,10,11 that theres no other possible win condition except "one of the players wins by getting 00 or 11"
03:11:43 <oerjan> er what
03:11:56 <oerjan> i though you said player to wins on 01 and 10
03:11:59 <oerjan> *two
03:12:03 <itidus20> well each player supplies a binary digit to the game
03:12:33 <itidus20> and.. of the 2 players.. one of them wins on 00/11 and one of them wins on 01/10
03:12:56 <itidus20> the rule about which player wins on which is arbitrary
03:13:10 <elliott> <oerjan> itidus20: oh also when you asked the thing about characters i checked your client version and you seem to be on windows. so (1) there's a character map which you can use to get strange characters (2) if you use hugs you probably want to use winhugs
03:13:15 <elliott> what characters are strange for haskell?
03:13:21 <itidus20> none
03:13:24 <itidus20> as far as i know
03:13:27 <elliott> i was asking oerjan :P
03:13:33 <itidus20> oh haha ok
03:13:44 <oerjan> elliott: well he was pointing out he couldn't make finnish ä, i think
03:13:56 <itidus20> cut and pastes:
03:14:00 <itidus20> hehe
03:16:41 <itidus20> so when i started to analyze this pennymatching what i found is that in order to have a fair game, whatever player 1 does, player 2 must have a 50% chance of winning
03:17:19 <itidus20> i don't know how to formalize the idea exactly.. but it's fascinating since the idea of fairness is recursive between the 2 players
03:18:30 <itidus20> option A = 50% chance. option B = 50% chance.
03:19:17 <itidus20> i should try drawing it for myself in paint
03:22:47 -!- azaq23 has quit (Ping timeout: 250 seconds).
03:22:56 -!- azaq23 has joined.
03:23:14 <oerjan> itidus20: i think it depends on your definition of fair. you might also make it >= 50% i think
03:23:33 <itidus20> uh like.. if you go heads, you have 50% chance of winning because they also have 50% chance of winning *pulls out hair*
03:23:34 <oerjan> hm wait
03:23:52 <itidus20> hehe
03:24:10 <oerjan> there may not be any way in this game of making it > 50% for any option
03:24:18 <itidus20> its simple enough
03:24:48 <monqy> > 50 for heads: always win (for fairness: for tails: always lose)
03:24:49 <lambdabot> Not in scope: `for'Not in scope: `heads'Not in scope: `always'Not in scope:...
03:24:56 <oerjan> i mean, it wouldn't necessarily by unfair if A had a choice that guaranteed that A loses
03:24:56 <monqy> a vanilla coinflip
03:24:59 <itidus20> if you say that a player wins on 10/11 and the other player wins on 01/00
03:25:15 <itidus20> oerjan: true.. not if they didn't know the rule
03:25:25 <oerjan> but there wouldn't then be enough options with just heads and tails to make it fair the other way around
03:25:43 <oerjan> i think
03:25:57 <oerjan> but it could work if there were more than two options
03:26:01 <itidus20> i worded it in a very obfuscated way
03:26:26 <itidus20> but what fascinated me most of all is the recursive way of defining a 50% chance of winning between the 2 players
03:27:12 <itidus20> i lack the math skill to see sense in it
03:27:24 <itidus20> its surely something trivial
03:29:44 <itidus20> blah.
03:30:41 <oerjan> itidus20: you probably are calculating what's called a nash equilibrium. see http://en.wikipedia.org/wiki/Strategy_(game_theory)#Mixed_strategy it even has a link to Penny Matching
03:30:54 <itidus20> thanks
03:32:35 -!- BeholdMyGlory has quit (Remote host closed the connection).
03:56:52 -!- copumpkin has changed nick to contrapumpkin.
04:02:33 -!- contrapumpkin has changed nick to yoda.
04:02:46 -!- yoda has changed nick to coyoda.
04:03:00 <oerjan> yoda, opposite category is in, hm?
04:04:58 -!- coyoda has changed nick to YodaLemma.
04:07:17 -!- canaima17242 has joined.
04:07:56 <canaima17242> holaa
04:08:33 -!- canaima17242 has quit (Quit: Leaving.).
04:09:14 -!- YodaLemma has changed nick to copumpkin.
04:56:46 -!- Sgeo__ has changed nick to Sgeo|DiesAtBadTi.
05:20:39 -!- zzo38 has joined.
05:23:50 <lifthrasiir> zzo38: hmm, is the Unispace specification stable?
05:25:13 <lifthrasiir> i feel it is still vague about multiple labels and INTERCAL operators
05:25:36 <zzo38> lifthrasiir: Some people (including you) can change it if you want to. Including to make it less vague, or discussion those things on the Talk page, or add other Unicode space characters, etc
05:26:43 <lifthrasiir> okay, but as always i wanted to implement it in esotope and the stability of the language is paramount ;)
05:27:39 <lifthrasiir> i appreciate the choice made by Migomipo who separated Migol 09 and 11, for example
05:31:04 <zzo38> It isn't completely stable yet, it is just some ideas I wrote. Feel free to update whatever is unclear or incomplete on that wiki article for Unispace.
05:41:56 <pikhq> Holy crap. There is a lake of sulfuric acid.
05:42:39 <pikhq> A naturally occuring lake of *sulfuric acid*.
05:43:00 <quintopia> ah yeah
05:43:06 <quintopia> thats not that difficult
05:43:35 <pikhq> Still. Fuck.
05:43:43 <quintopia> happens around volcanos especially
05:43:53 <quintopia> ever watched dantes peak?
05:44:17 <pikhq> No.
05:44:26 <pikhq> But, yeah, it makes sense how it can occur.
05:44:53 <pikhq> Volcanic gas very high in sulfur bubbling into a lake — bam, sulfuric acid lake.
05:45:22 <quintopia> which specific one are you talking about?
05:45:41 <pikhq> Ijen.
05:45:45 <pikhq> pH of 0.5.
05:48:13 <quintopia> ew mining sulfur by hand
05:48:27 <quintopia> nobody needs that job
05:48:51 <pikhq> And even less so sans gas mask.
05:50:13 <quintopia> under no conditions
05:52:56 <pikhq> There's different levels of "fuck no", though.
05:53:32 <quintopia> sure
05:53:35 <quintopia> fine
05:53:57 <quintopia> but all of them are above a threshold of taking action
05:54:47 <pikhq> Of course, there's *much* better ways of getting sulfur, making the whole proposition sickening and pointless.
05:55:44 <pikhq> Though, TBH, most of those really hazardous things that people in undeveloped nations end up doing are either pointless or much better done via machines.
05:56:08 <quintopia> what are we waiting for?
05:56:23 <quintopia> lets go put that sugar refinery out of business!
05:56:38 <pikhq> Well, there's this nasty problem with economic inequities...
05:56:43 <quintopia> those poor guys need to be unemployed
05:57:36 <pikhq> And it's very, very nontrivial to bootstrap an economy.
05:59:06 <quintopia> who needs to bootstrap an economy? we just bring in our own people and equipment, pay fair tax on export and use of the land...
05:59:32 <quintopia> eventually theyll take over the operation themselves cuz thats just how things go
05:59:44 <quintopia> but for now, it cant hurt them really
06:01:27 <pikhq> Or, knowing humanity's propensity for dickishness, we'll just settle in and create an oppressed underclass that eventually rises up and then has no idea how to run shit, causing things to go to shit.
06:03:17 <quintopia> wtf? create? theres already one! otherwise there wouldnt be people carrying sulfur out of a volcano for $13/day
06:04:06 <pikhq> That's not the *underclass* in that society.
06:04:13 <pikhq> You may now be frightened.
06:05:19 <quintopia> so you agree we wouldnt really be hurting them to build some infrastructure there?
06:05:43 <pikhq> Well. No. My only issue is that there's a decent chance the people involved in doing so will be royal dicks.
06:06:39 <quintopia> i was saying we should be those people
06:06:46 <quintopia> pretty sure i'm not a dick :)
06:06:53 <pikhq> Oh, we personally? No argument. :P
06:07:17 <pikhq> Though I'm afraid that at the moment, they're paid higher wages than I.
06:07:23 <quintopia> haha
06:07:41 <pikhq> (fuck you, Bush.)
06:08:51 <quintopia> not long ago i heard a few fuck reagans
06:09:01 <zzo38> Why did you get dead yesterday?
06:09:01 <pikhq> Also fuck Reagan.
06:09:03 <pikhq> He started it.
06:09:08 <quintopia> so it seems we shall have a good oldfashioned consie president orgy soon
06:09:45 <zzo38> And why didn't you write that book tomorrow?
06:11:08 <quintopia> who are you talking to zzo38?
06:12:07 <zzo38> You, in case you are on this channel.
06:13:06 -!- oerjan has quit (Quit: Good night).
06:13:07 <quintopia> oh
06:13:59 <quintopia> well ask again last week and maybe I'll havd an answer for you by the day i am laid to rest
06:14:42 <zzo38> OK, I will try. But maybe I can't.
06:15:15 -!- copumpkin has quit (Read error: Operation timed out).
06:15:49 <quintopia> well, if i never try to find out how your attempt went, then you can both succeed and fail
06:17:06 -!- copumpkin has joined.
06:24:06 <zzo38> I read book once, it says Jesus is laughing and none of the things they described in the Bible actually existed, they are mythology meant to make up ideas and philosophy and parables and those things, and it makes Gnostic Christianity still valid.
06:25:57 <zzo38> (In the past, it was, and still is in the present, my opinion, that the proper meaning of religion, it doesn't matter whether or not the events described in the Bible actually happened or not.)
06:28:29 <zzo38> Do they exist any of the mana symbols and other symbols for Magic: the Gathering, and energy card symbols for Pokemon card, and Fanucci suit symbols, and so on, in METAFONT?
06:28:57 <pikhq> RE: MTG symbols. No, but there should be.
06:30:10 <zzo38> Yes I think it would be good idea. Would you know who knows how to do it with a good job?
06:37:41 <fizzie> There is at least one (probably several) TTF of (some) MTG symbols, it might be possible to do some manual convertatation, or at least use it as a starting point. (Though I have no clue how good it is; I just saw one somewhere.)
06:39:10 <fizzie> Don't know about how one would do those multicolored hybrid symbols in METAFONT; isn't it quite strictly monochromatic?
06:40:38 <zzo38> Yes it is monochromatic (although you can use specials if needed). It doesn't need colored; you can do it in monochrome so that it works on monochrome printers. The background circle is the colored part and it would be a separate circle symbol, inserted whenever needed for color symbols on color printers.
06:41:44 <fizzie> But there are those two-color ones, like http://wiki.mtgsalvation.com/images/4/4b/Manaur.gif -- though I guess you could have the two halves as separate symbols.
06:42:28 <zzo38> Yes you can have the two halves as separate symbols.
06:42:52 -!- CakeProphet has joined.
06:42:53 -!- CakeProphet has quit (Changing host).
06:42:53 -!- CakeProphet has joined.
06:43:04 <zzo38> (You could use ImageMagick colors, PostScript colors, PDF colors, or what I prefer is CMYKX color specials (where X is like K but used for monochrome printers, while CMYK is for color printers))
06:44:30 <zzo38> I think separate symbols would work. Each half of circle is one symbol which is colored when printing. And the mana symbols can just be the smaller ones than normal and then put in place.
06:47:52 -!- Taneb has joined.
06:48:05 <pikhq> http://www.mezzacotta.net/garfield/?comic=141 I do believe that the text beneath is the best bit about this one.
06:48:24 * pikhq is a-archive-binging sqrt(-$garfield)
06:48:56 <Taneb> Morning!
06:49:26 <zzo38> The other way is to convert the images used in MSE directly to GF format for the specified resolutions.
06:49:39 <itidus20> > sqrt 3.14159
06:49:41 <lambdabot> 1.7724531023414978
06:50:59 <itidus20> > sqrt -3.14159
06:51:01 <lambdabot> Overlapping instances for GHC.Show.Show (a -> a)
06:51:01 <lambdabot> arising from a use of `...
06:52:01 <itidus20> orosu
06:52:14 <fizzie> > sqrt (-pi)
06:52:15 <lambdabot> NaN
06:52:19 <itidus20> woot
06:52:23 <fizzie> There you have the floating-point version.
06:52:28 <itidus20> thanks
06:52:49 <elliott> <itidus20> > sqrt -3.14159
06:52:50 <elliott> need parens
06:52:53 <elliott> around the negative number
06:52:59 <itidus20> nods
06:53:20 <pikhq> Otherwise it's (-) sqrt 3.14159, which is of course a type error.
06:53:37 <itidus20> ahh
06:53:45 <itidus20> hmm
06:53:51 <itidus20> so you can't have a negative function
06:54:10 <pikhq> Unary minus is a bit of a hack in Haskell.
06:54:32 <pikhq> (TBH, it's a bit of a hack in pretty much every language with both it and binary minus, but that's beside the point)
06:54:35 <itidus20> well.. mathematical theory probably hasn't explored the implication of a negative function
06:55:05 <itidus20> but since a function isn't really a number im just being dumb
06:55:16 <pikhq> Well, I suppose you could do a variant of Church numerals, thereby getting you functions as numbers.
06:55:18 <pikhq> :)
06:55:28 <pikhq> Actually, without "variant of".
06:55:46 <pikhq> You only need to do extra legwork if you want it to do negatives or something.
06:56:32 <itidus20> hummm
06:56:37 <itidus20> don't mind me
06:57:56 <fizzie> > sqrt $ (-pi) :+ 0
06:57:57 <lambdabot> 0.0 :+ 1.7724538509055159
06:58:02 <itidus20> sometimes i find my own words to be a thicket, because i have seen how calculated peoples words can be after they start reading about manipulative psychology
06:58:27 <fizzie> How was it with lambdabot, how does it have all the modules (all of them) available by default?
06:58:29 <itidus20> almost every sentence can be evil if the intent behind it is evil
06:58:46 <zzo38> What does :+ do? Is it for specifying complex numbers?
06:58:55 <fizzie> It's the complex number constructor, yes.
06:59:11 <zzo38> itidus20: That is difficult to know if it is correct or whatever it is
06:59:46 <itidus20> you mean sqrt (-pi) ?
07:00:01 <zzo38> Does the intent behind a sentence make it evil? I don't know.
07:00:12 <itidus20> or do you mean followers of general semantics
07:00:24 <itidus20> and all such nonsense
07:00:52 -!- CakeProphet has quit (Ping timeout: 255 seconds).
07:00:53 <zzo38> That is the philosophical ideas of evil and such.
07:01:43 <itidus20> it has come to my attention that rather than using words to express feelings, people these days are interested in using communication as a weapon
07:02:21 <itidus20> being entirely two faced thinking noone knows what they are doing
07:02:42 <fizzie> Floating-point vs math™: floating-point wins again:
07:02:43 <fizzie> > (-pi) :+ 0 == mkPolar pi pi
07:02:44 <lambdabot> False
07:02:45 <itidus20> i don't mean here i just mean in general
07:02:47 <fizzie> > magnitude $ ((-pi) :+ 0) - (mkPolar pi pi)
07:02:48 <lambdabot> Ambiguous occurrence `magnitude'
07:02:49 <lambdabot> It could refer to either `Data.Complex.ma...
07:03:21 <fizzie> Hrm, do I need to full-qualify that?
07:03:25 <fizzie> > Data.Complex.magnitude $ ((-pi) :+ 0) - (mkPolar pi pi)
07:03:26 <lambdabot> 3.8473413874435795e-16
07:04:32 <fizzie> (Wonder what the other sort of magnitude is.)
07:04:59 <pikhq> > mkPolar pi pi
07:05:00 <lambdabot> (-3.141592653589793) :+ 3.8473413874435795e-16
07:05:08 <fizzie> Almost, but not quite.
07:05:22 <pikhq> Effing floating point.
07:05:24 <itidus20> marketing, salespeople, advertising, pickup artists, brainwashing, cults, suggestion, covert hypnosis, n.l.p., body language, double-entendres, general semantics, operant conditioning.. all this crap and whatever else comes from it
07:05:47 <zzo38> Yes it is possible not everyone knows exactly what they are thinking, because even your thoughts are all hallucination, too. You can say things for many purposes. One reason, is to ask question, answers, tell something, notify something, etc.
07:05:48 <pikhq> And *now* I realise what "mkPolar" is doing.
07:06:12 <pikhq> Seems so obvious.
07:06:35 <pikhq> Just constructing a complex number from a polar coordinate pair.
07:06:37 <zzo38> Or for word games.
07:06:49 <pikhq> (sorry, just first time I'd seen that function)
07:06:56 <fizzie> > pi * (cis pi)
07:06:57 <lambdabot> (-3.141592653589793) :+ 3.8473413874435795e-16
07:07:15 <pikhq> Yeah, that would be the obvious implementation.
07:07:37 <itidus20> zzo: well anyway, the people involved sell themselves out
07:07:40 <pikhq> Effing floating point. :P
07:08:31 <zzo38> But yes it is true, they say things for lying and marketing and so on, too.
07:08:48 <fizzie> Interestingly, 'cis' and 'mkPolar' seem to be independently implemented: "mkPolar r theta = r * cos theta :+ r * sin theta" and "cis theta = cos theta :+ sin theta", from the sources.
07:09:20 <pikhq> How strange. I wonder what difference exists.
07:09:56 <pikhq> Hmm. Actually, might be laziness.
07:10:27 <pikhq> Don't think that'd be *notable*, though.
07:11:26 <fizzie> Might be laziness. On an "intermediate results in higher precision" machine and an old-fashioned language, you might also get better results from doing "r * cos theta" and "r * sin theta" separately, before stuffing them into a "struct complex" or whatnot which would potentially involve truncamation.
07:11:50 <fizzie> Like the good old x87's 80-bit floats, a regular source of surprising inequalities.
07:12:14 <pikhq> Floats already produce some surprising inequalities, though.
07:12:49 <zzo38> I think for measuring angles in a computer, neither radians nor degrees is best. Instead maybe you can have something such as 0xC000 for one full turn (using unsigned 16-bit numbers).
07:13:19 -!- monqy has quit (Quit: hello).
07:13:51 <pikhq> zzo38: It really depends on why you're measuring angles.
07:15:18 <fizzie> "Degrees" where 256 == full turn are quite often used too, since when you put those into a byte-sized variable, the wrap-around is in many cases quite "natural", plus 256 elements is still borderline reasonable for a trig table.
07:15:40 -!- zzo38 has quit (Remote host closed the connection).
07:15:41 -!- azaq23 has quit (Quit: Leaving.).
07:16:41 -!- Scientits has joined.
07:18:40 <fizzie> And the grads (gradians) which have the value of 400 as 2*pi (sorry, tau). I think I had a calculator which could be set to grads, for some inexplicable reason.
07:20:04 -!- ais523 has quit (Remote host closed the connection).
07:20:12 <pikhq> *Aaah*, calculators.
07:20:24 <pikhq> Is there any good reason for them?
07:20:48 <fizzie> You can play (multiplayer, with the link cable) Tetris with them in class?
07:20:57 <pikhq> You can do that with a Gameboy.
07:21:03 <pikhq> Your point?
07:21:06 <fizzie> Yes, but that might be more conspicuous.
07:21:53 <fizzie> Also there's a demo called Anal Party IV for the TI-86, which does sound (well... some) by twiddling the link port registers.
07:22:10 <itidus20> is there any field where humans still actually calculate immediate expressions by hand?
07:22:28 <pikhq> itidus20: Education.
07:22:38 <Scientits> what are immediate expressions?
07:22:39 <fizzie> (It's not an especially impressive demo; the graphics hardware in TI-86 only has a simple bitmapped screen, so you can't do anything really clever with it.)
07:22:40 <itidus20> uh.. by immediate expressions i mean.. as in .. resolving an equation to a value
07:22:56 <itidus20> scientits: im a newbie, a duimbass and i don't know math. forgive my use of these words
07:23:03 <itidus20> heheh
07:23:12 <Scientits> is my name that intimidating? I don't know much maths
07:23:32 <Scientits> I was going to say shopping, in response to your question
07:23:36 <itidus20> oh you call it maths.. you must not be from the us
07:23:41 <Scientits> because that's apparently what we're best at as a society
07:23:48 <Scientits> I am from the internets
07:23:53 <itidus20> sory
07:23:58 <elliott> Scientits: btw this channel is about programming
07:24:15 <itidus20> i dun really wanan know
07:25:25 <itidus20> where i live its also called maths though
07:29:14 -!- Scientits has left ("Leaving").
07:30:04 <itidus20> eek what did i do
07:31:47 <itidus20> so what i meant was.. inserting numbers into equations and working out the answers without the aid of a calculator
07:32:00 <itidus20> or..even.. doing it with a calculator
07:32:58 <pikhq> Yes, that's only done in education.
07:33:09 <pikhq> Which *suggests* that it does not belong there.
07:34:07 <itidus20> it's bizzare
07:35:38 <elliott> itidus20: it was me
07:35:46 <elliott> everyone thinks this is an esoterica channel.
07:36:40 <itidus20> is it?
07:43:44 <elliott> no
07:45:21 <itidus20> @die 1d6
07:45:22 <lambdabot> 1d6 => 3
07:53:08 <itidus20> a certain tradeoff is occuring to me. in general normal people are not entertained by their own work.
07:53:54 <itidus20> for example, a poet probably doesn't contemplate on their own poems. a writer on their own novels, a director on their own films, a musician on their own music, etc
07:54:05 <elliott> nahhhh
07:54:08 <elliott> that's just false humbleness
07:54:42 <elliott> I mean sure there may be some people who don't think their work sucks but has absolutely no interest in it
07:54:47 <elliott> but I very much doubt they're in the majority
07:55:03 <itidus20> humm
07:55:29 <itidus20> well, in general it is easier to be entertained I think by something someone else made
07:55:33 <pikhq> Also, most programmers hate everyone *elses* code, and only likes their own.
07:55:49 <itidus20> well programming is something difficult to place in this sense
07:55:51 <elliott> pikhq: [asterisk]like
07:56:04 <elliott> itidus20: that's certainly true
07:56:20 <elliott> but that may be just because the act of creating a work involves so much attention to it that it's like playing a song nine hundred times
07:57:05 <itidus20> This always brings to mind field of dreams for me
07:57:23 <itidus20> about building something for someone else
07:58:33 <itidus20> i want to be my own audience because i can tailor something to my exact needs and i can give myself the most direct feedback
07:58:41 <itidus20> but however... perhaps it is like incest
07:58:48 <itidus20> and.. just wrong
08:18:27 <itidus20> theres this feeling i get when looking at code of a kind of boredom or ennui knowing it isn't going to do anything exciting, or knowing it doesn't mean anything
08:19:00 <itidus20> im not sure if its the "you should turn on your intellect now" feeling
08:19:19 <itidus20> maybe i am just too inexperienced to "get it"
08:19:50 <itidus20> it was quite late in life afterall that I started to give a damn about politics or legal or economic matters in newspapers
08:19:53 -!- Taneb has quit (Read error: Connection reset by peer).
08:20:14 <itidus20> maybe i just need to let it come
08:23:09 -!- Sgeo|DiesAtBadTi has changed nick to Sgeo.
08:48:26 <augur> http://wellnowwhat.net/transfers/testWaveform.wav
08:49:04 <elliott> sounds waveformy
08:49:30 <augur> it does
08:50:04 <augur> we're working on making it better tho
08:50:21 <augur> i think part of the problem is the time resolution, giving it a sort of modem-y sound
08:50:49 -!- Taneb has joined.
08:50:59 <elliott> what is it meant to be
08:51:01 <elliott> a e i o u?
08:51:22 <augur> "a i o"
08:51:35 <augur> "a e i o u" isnt a bad guess
08:51:53 <augur> given the phonetics of "e"
08:52:13 <augur> and the apparent strength of the final [u] in the "o"
09:04:49 -!- ineiros has quit (Read error: Operation timed out).
09:05:08 -!- ineiros has joined.
09:36:12 -!- Zwaarddijk has quit (Ping timeout: 258 seconds).
09:36:15 -!- Zwaarddijk has joined.
10:03:32 -!- copumpkin has quit (Ping timeout: 240 seconds).
10:03:56 -!- copumpkin has joined.
10:31:24 -!- Ycros has left.
10:41:57 -!- Taneb has quit (Ping timeout: 252 seconds).
10:48:38 <oklopol> "<itidus20> a certain tradeoff is occuring to me. in general normal people are not entertained by their own work." <<< i love pretty much all of my own work
10:49:00 <oklopol> i also think all of it sucks ass
10:51:38 <oklopol> "<elliott> but that may be just because the act of creating a work involves so much attention to it that it's like playing a song nine hundred times" <<< i think the majority of people enjoy hearing the same thing over and over (although with other stuff in between repetitions)
10:54:20 -!- FireFly has joined.
10:59:03 <oklopol> well, at least if that thing is pure greatness
11:02:03 -!- Taneb has joined.
11:12:23 <Taneb> Well, my BF Joust evolutiony thing is approaching being ran
11:16:04 <fizzie> I predict it will enslave humanity in approximately 7 hours.
11:16:07 <fizzie> That's what always happens.
11:16:56 <Taneb> I've taken precautions
11:17:02 <Taneb> It's written in Python
11:17:04 <fizzie> That's also what they always say.
11:17:26 <fizzie> Mine was written in Perl, and it still enslaved a couple of humanities.
11:23:18 <Taneb> Also, the evolution process is controlled by me
11:26:25 <itidus20> Ychat just announces the <itidus20> now.. but
11:26:39 <itidus20> i was going somewhere with it
11:27:21 <itidus20> i feel there is a disconnect with programming languages and the desired result
11:27:42 <itidus20> (yeah its called the art of programming dumbass)
11:30:23 <itidus20> but uh.. I suspect that things can be better
11:32:40 <itidus20> ]]]]]]]]]]]]]]]]]]]]]
11:32:45 <itidus20> oops
11:34:46 -!- sebbu has quit (Ping timeout: 260 seconds).
11:36:02 -!- sebbu has joined.
11:36:28 <elliott> `addquote <NihilistDandy> The Russian's emblem was the hammer and sickle, not the fist and other fist
11:36:32 <HackEgo> 521) <NihilistDandy> The Russian's emblem was the hammer and sickle, not the fist and other fist
11:36:40 <NihilistDandy> YES
11:47:16 -!- boily has joined.
11:50:11 <Taneb> Well, now my BF Joust interpreter might be working
12:00:39 <Taneb> Well, I'm running it 256 times
12:00:53 <Taneb> And it had an error
12:01:18 <Taneb> This'd be much easier if Python had until loops
12:01:34 <elliott> Taneb: Have you tried "while not"...
12:04:12 <elliott> `addquote <fizzie> Deewiant: So you... reverse the byte order manually, but then call ntohl too? <Deewiant> fizzie: The host might be big-endian!
12:04:13 <HackEgo> 522) <fizzie> Deewiant: So you... reverse the byte order manually, but then call ntohl too? <Deewiant> fizzie: The host might be big-endian!
12:04:31 <elliott> fizzie: Technically that quote is missing a space, since you apparently still put spaces after line-terminating question marks.
12:10:07 <fizzie> Yes, I can't seem to shake that hobbit.
12:18:58 -!- CakeProphet has joined.
12:19:15 <CakeProphet> I just had to explain to my parents in an argument that you don't actually feel anything with your heart.
12:19:19 <CakeProphet> they disagreed.
12:20:07 <NihilistDandy> `addquote <elliott> God, I sure do hate Apple and their header files that only include the functions they're specified to.
12:20:09 <HackEgo> 523) <elliott> God, I sure do hate Apple and their header files that only include the functions they're specified to.
12:22:44 <elliott> It's like they don't _want_ to be at fault here!
12:24:29 <Taneb> CakeProphet: then they're idiots
12:24:59 <elliott> I feel with my left foot, personally
12:25:00 <Taneb> ...Python just crashed
12:25:45 <oklopol> well there are nerves in the heart right?
12:25:50 <CakeProphet> as in, not an exception? it segfaulted?
12:26:02 <CakeProphet> oklopol: yes, but that's not what they feel /with/
12:26:03 <Taneb> It just dissappeared
12:26:11 <Taneb> I'm on Windows temporarily
12:26:19 <CakeProphet> ...well, it is sort of, but... fuck, you know what I mean.
12:26:24 <oklopol> well i can feel something with my hand
12:26:29 <oklopol> i'm sure this is all your parents meant
12:26:42 <oklopol> that you can also touch stuff with your heart and feel it
12:26:44 <CakeProphet> no I think you give them too much credit.
12:27:19 <Taneb> Have a friend who was absolutely certain that the capital of the US is in British Columbia
12:27:20 <CakeProphet> I started to explain that you feel emotions in your brain, and they said if they felt things with their head then they could turn them off.
12:27:38 <CakeProphet> so obviously they're just completely ignorant of everything.
12:27:49 <oklopol> maybe they were just fucking with you
12:28:32 <CakeProphet> then this is quite a prank they're pulling. It's a joke they've been pulling my entire life.
12:28:50 <CakeProphet> being that dumb, that is.
12:29:31 <Taneb> I can't be outdone by idiots like your parents!
12:29:59 <Taneb> I'm going to have children, then pretend to be an idiot until they are 21!
12:30:34 <oklopol> i'm going to make my children think i'm dead, and show up as a ghost every now and then
12:30:44 <fizzie> "if they felt things with their head then they could turn them off" -- what?
12:30:55 <oklopol> give them like a bit of lsd so they don't know if it was real or not
12:31:06 <Taneb> I often turn things off with my head
12:31:13 <Taneb> For example, light switchs
12:31:15 <oklopol> yeah it's called telekinesis
12:31:18 <oklopol> and it's perfectly normal
12:31:29 <CakeProphet> fizzie: I kid you not.
12:31:37 <Taneb> Telekinesis? I just call it hitting my head off things
12:31:47 <CakeProphet> apparently everything in your head is under conscious control.
12:32:16 <itidus20> cake: which includes so called unconcious concious?
12:32:50 <elliott> <oklopol> that you can also touch stuff with your heart and feel it
12:32:54 <elliott> i don't think your heart has nerves
12:33:05 <elliott> <Taneb> I can't be outdone by idiots like your parents!
12:33:05 <elliott> <Taneb> I'm going to have children, then pretend to be an idiot until they are 21!
12:33:10 <elliott> Do one better! Pretend to be an idiot until YOU DIE.
12:33:12 <CakeProphet> this is where it became intolerable. "feeling with your heart" was kind of reasonable, because emotions are experience as bodily sensations to an extent, but.. they didn't think that emotions were a result of their "head"
12:33:15 <elliott> And leave NO TRACE of you ever not being an idiot.
12:33:18 <elliott> It will be the ULTIMATE prank.
12:33:21 <oklopol> well prolly not enough that you could actually feel stuff touching it, but i mean if you say bang it with a hammer
12:33:39 <quintopia> it definitely has nerves
12:33:50 <oklopol> "<elliott> Do one better! Pretend to be an idiot until YOU DIE." <<< nah just wait until your kids die
12:33:58 <Taneb> Does it have touch receptors?
12:34:24 <CakeProphet> my heart feels meaty.
12:34:29 <oklopol> well why would it
12:34:48 <Taneb> I dunno, the liver has light receptors
12:35:13 <oklopol> haven't heard that one, why the fuck?
12:35:15 <CakeProphet> to recognize when you've been disemboweled in the daytime? I could see that as being useful information.
12:35:21 <elliott> Taneb: that's because... ummm... err....
12:35:25 <NihilistDandy> `addquote <elliott> Do one better! Pretend to be an idiot until YOU DIE.
12:35:27 <HackEgo> 524) <elliott> Do one better! Pretend to be an idiot until YOU DIE.
12:35:27 <elliott> err..............
12:35:36 <elliott> NihilistDandy: My, aren't I quotable today.
12:35:46 <NihilistDandy> Indeed
12:35:51 <Taneb> The liver light receptors were a co-incedence that slowly led to the developement of eyes
12:36:50 <oklopol> god was like lol evolution ur being so dum
12:38:19 <CakeProphet> unintelligent design.
12:39:01 <quintopia> i think with my liver
12:42:02 <itidus20> i more or less accept that we exist as a kind of mysterious tradeoff
12:42:20 <oklopol> me too
12:42:43 <itidus20> not even that.. i just don't know
12:42:48 <oklopol> i mean i have no idea what that means, but i assume that's your point
12:43:01 <itidus20> well.. self and other
12:43:08 <itidus20> theres no real divide between self and other
12:43:13 <itidus20> the mind just approximates it
12:43:38 <itidus20> just guessing
12:44:25 <oklopol> yep black and white, real and unreal, yin and yang, lemme get my crystal ball
12:44:43 <oklopol> i should sleap
12:44:49 <Taneb> Like, is my left hand part of me?
12:44:52 <Taneb> Is my sock?
12:45:00 <Taneb> Is this sofa I'm sitting on?
12:45:04 <Taneb> Is my brain?
12:45:15 <itidus20> taneb: having spent far too much time thinking about these things... i have only led myself into depressions
12:45:29 <oklopol> left hand yes, sock only if you just jizzed on it, sofa no except if you just jizzed on it
12:45:40 <oklopol> *in
12:45:49 <itidus20> but it helps to remember that not knowing is not knowing
12:45:50 <oklopol> brain yes
12:46:34 <itidus20> taneb: a depressed view of existence isn't necessarily a more accurate one
12:47:31 <CakeProphet> what if you jizz on everything? Does everything become one?
12:47:47 <oklopol> have you even READ the bible?
12:47:58 <CakeProphet> I suppose you have to jizz on your jizz
12:48:59 <Taneb> So... God has jizzed on everything?
12:49:12 <oklopol> have you even READ the bible?
12:49:37 <Taneb> Tried to once.
12:49:42 <Taneb> Couldn't get into it.
12:49:43 <oklopol> me too
12:49:48 <oklopol> me neither
12:49:48 <elliott> `addquote <Taneb> So... God has jizzed on everything? <oklopol> have you even READ the bible?
12:49:50 <HackEgo> 525) <Taneb> So... God has jizzed on everything? <oklopol> have you even READ the bible?
12:51:20 <oklopol> i shall now sleep until the sun goes down
12:52:21 <elliott> oklopol: so rude to sun
12:54:58 <oklopol> i agree, that's why i always go to sleep when the sun starts sunning rudely
12:56:24 <elliott> oklopol: it's four pm there dude
12:57:22 <oklopol> yes i usually sleep all day
12:57:29 <oklopol> got a problem with that?
12:57:40 <elliott> nope it's just that the sun has been sunning rudely for quite a while
12:57:45 <elliott> you should try doing it a bit earlier so that you miss all of it
12:57:50 <oklopol> well how would i know
12:57:55 <oklopol> i can't actually see it
12:58:55 <Taneb> Hire someone to see it for you?
12:59:21 <Taneb> Well, my BF Joust interpreter works
13:01:26 <Taneb> Nope, I've broken it
13:08:40 <Taneb> Fixed it
13:09:08 <tswett> Nälkä, eikä oo ruokaa.
13:12:24 <tswett> ...Myös.
13:12:59 <Taneb> Olen käsine! Ei, olen kaksi käsineet!
13:18:00 <Taneb> Jsem rukavice! Ne, já jsem dva rukavice!
13:18:21 <Taneb> Ben bir eldiven! Hayır, iki eldiven!
13:18:37 <Taneb> Ich bin ein Handschuh! Nein, ich bin zwei Handschuhe!
13:18:48 <Taneb> Why is German so long?
13:18:53 <Taneb> It's inefficient
13:19:08 <Taneb> I just want to express my identity as a glove
13:19:20 -!- cheater__ has quit (Ping timeout: 255 seconds).
13:19:25 <Taneb> Then correct myself as my glove identity has duplicated
13:20:23 <tswett> Yeah, in "Ich bin ein", everything but "bin" is redundant, and "Handschuh" is longer than it has to be.
13:21:00 <tswett> It should be, like, "Bin Glof! Nein, bin zwei Glofe!"
13:21:25 <Taneb> We should make a petition to reform the German language
13:21:45 <tswett> Nah, we should all just speak Spanish instead. I like that one.
13:22:01 <Taneb> Soy un guante! No, yo soy dos guantes!
13:22:13 <tswett> ¡Soy guante!
13:22:18 <Taneb> It's not as short as Turkish...
13:22:27 <tswett> What you say if being a glove is your job.
13:22:41 <tswett> ¡No, soy dos guantes!
13:24:01 <Taneb> Damn, python.org is down
13:24:28 <Taneb> ...Is there a short way to find the sum of all the numbers in a list in python?
13:24:37 -!- elliott has quit (Read error: Connection reset by peer).
13:24:45 -!- elliott has joined.
13:25:54 <CakeProphet> Taneb: yes, sum
13:26:02 <Taneb> Ooh, that's handy
13:26:04 <CakeProphet> builtin function I believe.
13:26:09 <Taneb> Even handier
13:26:29 <Taneb> In the words of the great Stephen Fry: Wo ist mein Handy?
13:26:44 <CakeProphet> hmmm, my Python knowledge is a little rusty.
13:26:54 <CakeProphet> haven't used it in quite a while.
13:26:59 <Taneb> Mine is extremely incomplete
13:27:16 <CakeProphet> but it was my first language, so I spent a lot of time mastering it.
13:27:23 <CakeProphet> not that it's... difficult to master.
13:27:53 <CakeProphet> are you familiar with generator comprehensions?
13:27:59 <CakeProphet> or, whatever they're called...
13:28:15 <Taneb> Not especially
13:28:42 <CakeProphet> (expr for var in list). if you use square brackets it's a list comprehension which is strictly evaluated, but using () makes a lazy iterator object
13:29:03 <elliott> Taneb: You should use Haskell it's a great thing and also better than Python.
13:29:06 <CakeProphet> so for large iterations, generators are preferable.
13:29:09 <elliott> Opinions hour with Elliott.
13:29:19 <elliott> CakeProphet: Only true if you're going to iterate over it afterwards
13:29:27 <Taneb> I'm better at Python than I am at Haskell
13:29:44 <Taneb> Actually, I'm awful at Haskell
13:29:52 <elliott> reversed([x for y in z]) shouldn't be much slower than reversed(x for y in z)
13:29:55 <elliott> Although the latter is nicer
13:30:10 <elliott> Taneb: It's called self-improvement. :p
13:30:11 <CakeProphet> elliott: well... yes. I was talking about iterating, not representing data.
13:31:34 <CakeProphet> elliott: well reversed can't take an iterator at all.
13:31:41 <elliott> Well that sucks
13:31:46 <elliott> It'll be in itertools somewhere
13:31:51 <CakeProphet> it wouldn't be very efficient anyways.
13:32:01 <CakeProphet> compared to reversed(list)
13:33:08 <CakeProphet> also the /length/ of the list is important. Which is why I say that for large iterations, generators are much more space efficient. For small lists/iterations, it's not going to be a noticable difference.
13:33:57 <elliott> You'll probably rarely be able to tell at all what with how slow Python is
13:34:13 <CakeProphet> well, yeah.
13:34:55 <CakeProphet> I've just made it a habit to use generators when I do not need to store the values later because they're generally more efficient for that purpose.
13:35:29 <CakeProphet> for example: using xrange instead of range (though I believe in Python 3 range produces an iterator)
13:36:20 <CakeProphet> I've always found worrying about efficiency in languages like Perl and Python to be somewhat ironic.
13:37:29 <elliott> You can worry about algorithmic efficiency, but microoptimising is basically completely pointless
13:37:32 <CakeProphet> I suppose being concerned about how performance /scales/ is reasonable, but trying to get the fastest runtimes would be silly.
13:37:35 <CakeProphet> ...yes, what you said.
13:37:56 <elliott> Now in Haskell, you can microoptimise without significantly changing the global structure of your code, if you need it... ;D
13:38:05 <elliott> I can twist literally anything into an argument for why Haskell is the best, try me.
13:38:20 <elliott> (Says the guy who spends most of his Haskell-coding time groaning about its glaring imperfections.)
13:39:08 <CakeProphet> Python's C interface is pretty good. The "Great Language Shootout" benchmarks have the lowest Python-to-C ratio at 1.02
13:39:18 <CakeProphet> obviously these programs cheat and write everything in C..
13:39:56 <CakeProphet> but it shows that there's not much overhead to this approach when micro-optimizing computationally intense sections of code.
13:40:47 <CakeProphet> ... C-to-Python ratio, actually.
13:40:58 <CakeProphet> er, not, since it's runtime.
13:42:13 <CakeProphet> my main complaint with Python is that it has poor functional programming support in libraries and syntax.
13:42:48 <tswett> Bäck.
13:44:01 <CakeProphet> I believe I suggested improving the functools module on the Python mailing list one time, including things such as id and compose functions. It wasn't taken seriously.
13:44:49 <CakeProphet> at least it has a partial application constructor thing.
13:45:38 <CakeProphet> but I think it would be much cleaner to write a function decorator that supported partial application directly in the __call__ method. Because partial(f, a, b, c) is uglier than just f(a,b)
13:45:43 <CakeProphet> *f(a,b,c)
13:46:50 <CakeProphet> @curriable \n def func(a,b,c): ...
13:46:50 <lambdabot> Unknown command, try @list
13:47:40 <CakeProphet> ophet(+i)] [4:Freenode/#esoteric(+cn)] [Act: 3,5,6]
13:47:45 <CakeProphet> ...?
13:47:56 <CakeProphet> hand must have slipped and did something weird.
13:48:24 <CakeProphet> Taneb: ^^^ do this stuff
13:48:36 <CakeProphet> it would be a func and pretty easy little module
13:48:42 <CakeProphet> lol *fun
13:49:13 <Taneb> What am I tryinh?
13:50:14 <CakeProphet> basically you would create a class called curriable, that took a function as its constructor argument, and defines a __call__ method that returns a partial application when every mandatory argument to the original function is not given.
13:51:00 <CakeProphet> you'd have to use the inspect module to grab the functions signature information and stuff, so that you can know when to partially apply and when to return the normal result.
13:51:32 <CakeProphet> and functools, so that you could borrowed the partial class
13:51:39 <CakeProphet> *borrow
13:51:52 <CakeProphet> ..have I lost you?
13:51:59 <Taneb> Slightly
13:52:37 <CakeProphet> okay if you import functools, you get a class called partial. Partial is constructed with a function and some arguments to that function.
13:53:20 <CakeProphet> it then returns a callable object that takes the rest of the functions arguments, and then gives you the result. This is called partial application, where you supply some of the functions arguments at one point in execution, and then supply the rest later.
13:53:47 <Taneb> Okay
13:54:12 <CakeProphet> the problem is that this does not occur automatically, you have to construct the partial object manually: thus, partial(f,a,b) instead of just f(a,b)
13:54:15 <CakeProphet> HOWEVER
13:54:42 <CakeProphet> you could create a class called curriable, that wraps over a function, and implements a __call__ method that does the partial application semantics when not enough arguments are supplied.
13:55:31 <CakeProphet> to determine if this is the case, you could use the inspect module. Which has a function (can't remember the name) that returns information about a functions parameters.
13:55:42 <Taneb> So, if enough arguments are supplied, it calls the function as normal, otherwise it returns the partial?
13:55:46 <CakeProphet> yep.
13:55:57 -!- elliott has quit (Read error: Connection reset by peer).
13:56:01 -!- elliott_ has joined.
13:56:04 <CakeProphet> and then, using Pythons decorate syntax, you could define functions that are automatically curriable
13:56:08 <CakeProphet> @curriable
13:56:08 <lambdabot> Unknown command, try @list
13:56:11 <CakeProphet> def func(a,b,c): ...
13:56:13 <CakeProphet> like that.
13:56:15 <CakeProphet> ignore lambdabot
13:57:16 <CakeProphet> @d; def func(): ... === def temp(): ...; func = d(temp)
13:57:16 <lambdabot> Parse error at "..." (column 13)
13:57:42 <CakeProphet> ; is linebreak since this is Python and Python is stupid.
13:58:49 <CakeProphet> basically the @whatever is just a sugary way to wrap a function inside another object, so that you can implement special call semantics or whatever you want to do really.
13:59:06 <CakeProphet> you could have a wrapper that logs function calls, for example.
13:59:14 -!- cheater_ has joined.
13:59:55 <CakeProphet> or provides some metadata. or allows you to change the definition of the function at runtime (I think I've actually done this before...)
14:04:20 <CakeProphet> also you write class methods (aka static methods) in Python by putting @classmethod above the method definition.
14:04:57 <CakeProphet> in Java I like to call static methods "functions"
14:05:15 <CakeProphet> since this is basically when they are used.
14:06:38 -!- BeholdMyGlory has joined.
14:07:04 <CakeProphet> er, actually Python has staticmethod and classmethod. classmethod makes the method take the class as its implicit argument, while staticmethod has no implicit argument at all.
14:09:01 <CakeProphet> I hope I am making sense right now...
14:09:12 <CakeProphet> I enjoy teaching people things.
14:09:16 <Taneb> Sort of...
14:10:11 <CakeProphet> anything you're confused about?
14:11:35 <cheater_> does italian have separate singular and multiple "you"?
14:11:36 <Taneb> So, I'm making something that takes a function and some parameters, and returns a function, which is the same function as before but with the parameters hardcoded?
14:11:45 <cheater_> currying
14:12:08 <CakeProphet> Taneb: well, you could, but that's already been done for you if you import functools and then type functools.partial
14:12:39 <Taneb> And if there are enough parameters, the function is called?
14:12:58 <CakeProphet> what you would be making is a thing (aka class) that takes a function and produces a function that will either partial apply or completely apply based on the number of arguments.
14:13:31 <CakeProphet> actually it wouldn't be producing a function directly, because you can define function-like objects by implementing the __call__ method.
14:13:42 <CakeProphet> which is called whenever your object is called as though it were a function.
14:13:52 <Taneb> So, if I had a kinda boring function called total that took two arguments and returned their sum
14:14:11 <Taneb> whatever(total,3) would return a function that added three to things
14:14:15 <CakeProphet> yep
14:14:21 <CakeProphet> > map (+3) [1..]
14:14:22 <lambdabot> [4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30...
14:14:22 <Taneb> but whatever(total,3,7) would return 10?
14:14:30 <CakeProphet> ...no it's more like
14:14:40 <CakeProphet> whatever(total)(3) would return the function that adds three to things
14:14:40 <Taneb> A function that returns ten?
14:14:51 <CakeProphet> and whatever(total)(3,7) would return 10
14:15:13 <CakeProphet> and then you just use @whatever above the def for total
14:15:21 <CakeProphet> to make it a curriable function.
14:16:10 <CakeProphet> whatever(total) just augments total so that it automatically partially applies when (get ready for it) applicable.
14:16:56 <CakeProphet> it could do this by either returning a function, or by being a class that implements a __call__ method
14:17:38 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
14:18:10 <CakeProphet> this is the semantics Haskell does by default. (3+) is a function that adds three to things.
14:18:25 <CakeProphet> but Python can do this as well if you define a function wrapper for it.
14:20:10 -!- oklopol has quit (Ping timeout: 250 seconds).
14:20:54 <CakeProphet> then you could have: import operator, itertools; add = whatever(operator.add); map(add(3), itertools.count(0))
14:21:14 <CakeProphet> which is roughly equivalent to the Haskell code map (+3) [0..]
14:21:33 <CakeProphet> except it's wordier because you have to import some boilerplate to get the desired semantics.
14:23:41 -!- cheater_ has quit (Ping timeout: 255 seconds).
14:24:50 <Taneb> Apparently, built-in functions don't count as functions
14:24:57 <CakeProphet> how so?
14:25:08 <Taneb> TypeError: <built-in function len> is not a Python function
14:25:16 <CakeProphet> what is the offending code.
14:25:27 <Taneb> inspect.getfullargspec(len)
14:25:32 <CakeProphet> ah, yes.
14:25:47 <CakeProphet> inspect can't get the argument information from a built-in function.
14:27:12 -!- oklopol has joined.
14:29:20 <CakeProphet> in that case you can have a special-case for built-in functions where you catch a TypeError, test if it was a built-in, and then see if the exception message matches func_name + "() takes exactly .*? arguments? (\d+ given)"
14:29:28 <CakeProphet> or something equally hackish
14:32:18 -!- oklopol has quit (Ping timeout: 250 seconds).
14:36:53 -!- cheater_ has joined.
14:37:26 <CakeProphet> Taneb: but in the meantime you could just ignore built-ins
14:43:24 -!- copumpkin has joined.
14:44:40 <CakeProphet> also when returning the partial object you may want to wrap that object within your class as well.
14:44:52 <CakeProphet> so that the partially applied function can be partially applied further.
14:45:12 <CakeProphet> thus whatever(total)(2)(4)
14:45:38 <CakeProphet> well, bad example. whatever(three_argument_function)(a)(b)(c)
14:46:58 <Taneb> So it's... weirdly recursive?
14:47:07 <CakeProphet> no, not recursive at all.
14:47:16 <CakeProphet> it just returns instances of the same class when called.
14:47:44 <CakeProphet> so that the functionally is contagious, so to speak.
14:48:13 <CakeProphet> @hoogle a -> b -> c
14:48:14 <lambdabot> Prelude curry :: ((a, b) -> c) -> a -> b -> c
14:48:14 <lambdabot> Data.Tuple curry :: ((a, b) -> c) -> a -> b -> c
14:48:14 <lambdabot> Prelude flip :: (a -> b -> c) -> b -> a -> c
14:48:16 <CakeProphet> @hoogle a -> b -> c -> d
14:48:16 <lambdabot> Text.Regex.Base.RegexLike makeRegexOpts :: RegexMaker regex compOpt execOpt source => compOpt -> execOpt -> source -> regex
14:48:17 <lambdabot> Network.BufferType buf_append :: BufferOp a -> a -> a -> a
14:48:17 <lambdabot> Network.BufferType buf_snoc :: BufferOp a -> a -> Word8 -> a
14:48:55 <CakeProphet> > let if' a b c = if a then b else c in (if') (True) (2) (3)
14:48:56 <lambdabot> 2
14:49:05 -!- oklopol has joined.
14:49:34 <CakeProphet> @let if' a b c = if a then b else c
14:49:36 <lambdabot> Defined.
14:49:56 <CakeProphet> > (((if' False) 3) 4)
14:49:58 <lambdabot> 4
14:50:19 <CakeProphet> demonstrating how partial application works in Haskell, called currying in Haskell. You can curry the curried function.
14:50:53 -!- oklofok has joined.
14:53:31 -!- oklopol has quit (Ping timeout: 252 seconds).
14:53:46 <CakeProphet> currying is useful because it allows you to construct more specific functions from general functions.
14:55:11 -!- oklofok has quit (Ping timeout: 240 seconds).
14:55:47 <CakeProphet> for example const in Haskell lets you create functions that always return a constant value.
14:55:53 <CakeProphet> map (const 3) [1,2,3,4]
14:55:55 <CakeProphet> > map (const 3) [1,2,3,4]
14:55:56 <lambdabot> [3,3,3,3]
14:56:44 <CakeProphet> in Python const would look like: @curriable; def const(a,b): return a
14:59:21 <Taneb> def makeconst(a): return lambda b: a
14:59:32 <CakeProphet> yes
14:59:50 <CakeProphet> but thats lame.
15:00:14 <CakeProphet> because it actually needs to be
15:01:25 <CakeProphet> def makeconst(a, b=NotImplemented): return ((lambda b: a) if b is NotImplemented else a)
15:02:50 <CakeProphet> I used NotImplemented instead of None because there might be situations where you want to use None for b
15:03:01 <CakeProphet> and NotImplemented is pretty unused.
15:04:28 <CakeProphet> heh, NotImplementedType is a pretty fancy type.
15:04:36 <CakeProphet> it's got a __repr__ method and nothing else.
15:04:42 <CakeProphet> NotImplemented exists to be shown.
15:05:19 -!- oklopol has joined.
15:05:26 <CakeProphet> NoneType only defined __repr__ and __hash__. hmmm, interesting, so NotImplemented cannot be used in a dictionary.
15:06:24 <CakeProphet> oh wait, yes it can, I think it just inherits __hash__ from object.
15:07:27 <CakeProphet> Python's object hierarchy propagates a wealthy family history of opioid use.
15:09:35 -!- oklopol has quit (Ping timeout: 255 seconds).
15:09:47 -!- oklopol has joined.
15:10:39 -!- oklofok has joined.
15:14:05 -!- oklopol has quit (Ping timeout: 255 seconds).
15:17:39 -!- oklofok has quit (Ping timeout: 264 seconds).
15:18:30 -!- oklopol has joined.
15:54:38 <elliott_> `addquote <elliott_> Vorpal: Won't be slower than Python ;-) <Vorpal> elliott_, yeah but that is like saying a T-Ford going down a hill won't be slower than a bicycle uphill on a bumpy road :P
15:54:39 <HackEgo> 526) <elliott_> Vorpal: Won't be slower than Python ;-) <Vorpal> elliott_, yeah but that is like saying a T-Ford going down a hill won't be slower than a bicycle uphill on a bumpy road :P
15:56:55 <Vorpal> (for reference, he was talking about a program written in C...)
16:17:38 <CakeProphet> import teleporter
16:35:03 -!- Taneb has quit (Ping timeout: 252 seconds).
16:37:49 -!- zzo38 has joined.
16:38:29 -!- Taneb has joined.
16:49:15 -!- pikhq has quit (Ping timeout: 246 seconds).
16:49:20 -!- pikhq has joined.
16:56:00 -!- MigoMipo has joined.
17:06:26 <Taneb> Hello people!
17:07:04 <elliott_> hi
17:07:21 <Taneb> Oh, you don't count, I was just talking to you
17:17:21 <Taneb> Oh God I am crazy
17:17:34 <Taneb> I'm trying to implement Numberwang in C++
17:17:46 <Taneb> I haven't even touched C++ in years
17:17:49 -!- boily has quit (Quit: WeeChat 0.3.5).
17:20:27 <Taneb> Oh, I won't bother
17:27:26 <elliott_> Good work ethic
17:28:17 <zzo38> Even so far my DVI optimization program does a better job than TeX although I am still improving it. You can also suggest other things with it, including optimizations I may have missed, and so on.
17:28:36 <Taneb> I'll do it in JavaScript instead
17:28:43 <Taneb> I know JavaScript
17:38:58 -!- zzo38 has quit (Remote host closed the connection).
17:47:17 -!- elliott_ has quit (Read error: Connection reset by peer).
17:51:41 -!- azaq23 has joined.
18:01:01 -!- elliott has joined.
18:13:38 -!- monqy has joined.
18:18:28 -!- pikhq_ has joined.
18:19:21 -!- pikhq has quit (Ping timeout: 258 seconds).
18:25:06 <Taneb> Does anyone know how to convert a string like "4.4" to a number in Javascript?
18:27:06 <elliott> parseInt(n,10)
18:28:32 <Taneb> That loses the .4
18:28:56 <Taneb> parseFloat works, though!
18:32:07 <Taneb> Okay, that's a bit weird/
18:32:23 <Taneb> In Chrome, at least, NaN is not equal to itself...
18:32:45 <Taneb> But it is not equal to itself
18:33:55 <pikhq_> Yes, that's by definition.
18:34:48 <Taneb> Does the definition recommend a way to test for NaN-ness?
18:35:23 <monqy> there's probably something like an isNaN function
18:35:24 <fizzie> isNan(x)?
18:35:31 <fizzie> Yes, it's isNaN.
18:35:36 <fizzie> (The lowercase 'n' was a typo.)
18:35:44 <Taneb> Thanks
18:37:33 <elliott> <Taneb> parseFloat works, though!
18:37:34 <elliott> Oh, right.
18:37:36 <elliott> Make sure to include the ten.
18:37:41 <elliott> Or 0 at the start = different parsing.
18:37:54 <Taneb> Really? How interesting
18:38:01 <elliott> It's because it thinks it's octal
18:38:04 <elliott> 0x makes it hex, etc.
18:38:06 <elliott> Too smart for its own good
18:38:43 <Taneb> I'm not sure if parseFloat does that
18:39:01 <Taneb> parseFloat("019") returns 10
18:39:03 <Taneb> *19
18:39:06 <elliott> Hmm, fair enough
18:39:08 <elliott> Still wouldn't trust it :P
18:39:17 <Taneb> and parseFloat("0x19") returns 0
18:47:14 <Taneb> I've just had an idea for an Esolang
18:47:31 <Taneb> One consisting entirely of error handling
18:48:28 <Taneb> And everything that isn't error handling causes an error
18:48:37 <Taneb> Which is then handled
18:48:40 <Taneb> With vigour
18:50:00 <elliott> shades of http://esolangs.org/wiki/Reaper
18:51:24 -!- Cheery has joined.
18:51:37 <Taneb> Not quite what I had in mind
18:51:49 <Cheery> hi.. #compilers is rather quiet channel.. so I came to ask this here..
18:52:42 <Cheery> is it unadvisable somehow to insert spillnodes early and reduce them out later if they appear to become unnecessary?
18:53:04 <olsner> you're building a spillnode-based esolang?
18:53:42 <Taneb> (What's a spillnode?)
18:54:18 <Cheery> oh. i forgot to provide context.
18:54:47 <Cheery> I attempt to output machine code from intermediate language of some sort.
18:55:11 <Cheery> that is.. compile IR into target machine code :)
18:56:42 <Cheery> once I take much as possible away from it.. it becomes mostly a problem of just selecting instructions and mapping target machine registers for variables.
18:58:12 <elliott> `addquote <Taneb> This staircase is very good for correcting people's opininons about communism
18:58:13 <HackEgo> 527) <Taneb> This staircase is very good for correcting people's opininons about communism
18:59:57 <Cheery> Taneb: spillnode is a node that translates into load or store whenever live variable gets spilled into memory.
19:07:02 -!- atehwa has quit (Ping timeout: 250 seconds).
19:24:54 <cheater_> hi
19:25:22 <Cheery> hi
19:31:41 -!- oerjan has joined.
19:33:51 -!- Taneb has quit (Read error: Connection reset by peer).
19:35:46 -!- elliott_ has joined.
19:35:47 -!- elliott has quit (Read error: Connection reset by peer).
19:38:41 -!- cheater_ has quit (Ping timeout: 255 seconds).
19:40:09 <oerjan> <itidus20> well.. mathematical theory probably hasn't explored the implication of a negative function
19:40:30 <oerjan> um it probably has, in several different variants. that's the way it usually goes.
19:40:51 <pikhq_> oerjan: I discussed one such way not long after.
19:40:52 <oerjan> but first you have to define what kind of negative function you _mean_ by the word
19:40:56 <pikhq_> Well, more "touched on".
19:41:23 <oerjan> also
19:41:36 <pikhq_> (one of the obvious ways of doing a "negative function" is, of course, a Church pair of a Church boolean and a Church numeral)
19:41:41 <oerjan> > (sqrt-3.14159) 2
19:41:43 <lambdabot> -1.7273764376269047
19:41:47 * oerjan whistles innocently
19:42:15 <pikhq_> Smartass. :P
19:42:38 <pikhq_> :t (sqrt-3.14159)
19:42:39 <lambdabot> forall a. (Floating a) => a -> a
19:43:13 <pikhq_> That... Is the thing I least expected.
19:43:22 * oerjan cackles evilly
19:43:30 <oerjan> it is simple really
19:43:37 <pikhq_> Do tell.
19:43:51 <Sgeo> > (sqrt-3.14159) 3.14159
19:43:52 <lambdabot> -1.369136897658502
19:44:06 <Sgeo> > (sqrt-3.14159) 4
19:44:07 <lambdabot> -1.1415899999999999
19:44:09 <olsner> > (sqrt-3.14159) x
19:44:10 <lambdabot> sqrt x + negate 3.14159
19:44:26 <Sgeo> ...
19:44:29 <Sgeo> derp
19:44:49 <oerjan> lambdabot has instances Num b => Num (a -> b), Floating b => Floating (a -> b) etc., which simply applies the usual numerical methods to the result
19:44:57 <oerjan> *apply
19:45:05 <oerjan> e.g.
19:45:10 <oerjan> > (2*id) 3
19:45:11 <lambdabot> 6
19:45:42 <oerjan> this is fairly common mathematical usage e.g. when considering vector spaces of functions
19:46:22 <oerjan> > sqrt 2
19:46:24 <lambdabot> 1.4142135623730951
19:46:27 <olsner> > (add 1 * add 2) 1
19:46:28 <lambdabot> Not in scope: `add'Not in scope: `add'
19:46:34 <pikhq_> oerjan: Okay, that'd do it.
19:46:44 <olsner> > let add = (+) in (add 1 * add 2) 1
19:46:46 <lambdabot> 6
19:47:07 <pikhq_> Also explain why the type error on "sqrt -3.14159" was a missing Show instance, not a missing Num instance. :)
19:47:14 <oerjan> yeah
19:47:44 <oerjan> or rather, an overlapping instance - there are two conflicting modules defining Show for functions
19:47:53 <oerjan> > putStr 1
19:47:55 <lambdabot> No instance for (GHC.Num.Num GHC.Base.String)
19:47:55 <lambdabot> arising from the literal `...
19:47:58 <oerjan> argh
19:48:01 <oerjan> > putStr "1"
19:48:02 <lambdabot> <IO ()>
19:48:14 <pikhq_> elliott_: Thought you might like to know that Linux 3.0 is going to be released "soon".
19:48:20 <oerjan> previously the function instance was similar to that
19:49:21 <elliott_> pikhq_: Cool.
19:49:36 <pikhq_> elliott_: A clone of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git should be 100% usable; unless someone finds a major bug, that's getting released.
19:49:49 <oerjan> pikhq_: lambdabot in private tells that the instances are from the smallcheck and vector-space packages
19:49:55 <pikhq_> oerjan: Ah.
19:51:07 <oerjan> so sometimes the inability to selectively import instances in haskell gets rather annoying
19:51:30 -!- cheater_ has joined.
19:52:20 -!- GuestIceKovu has joined.
19:53:25 -!- augur has quit (Remote host closed the connection).
19:53:32 -!- Slereah has quit (Ping timeout: 240 seconds).
19:53:56 <oerjan> i believe they have done some work to ensure lambdabot no longer has overlapping name definitions (e.g. it no longer imports pure from both Control.Arrow and Control.Applicative), but the instances are impossible to get rid of with import statements
19:54:03 <oerjan> :t pure
19:54:05 <lambdabot> forall a (f :: * -> *). (Applicative f) => a -> f a
19:54:19 <oerjan> :t Control.Arrow.pure
19:54:20 <lambdabot> Not in scope: `Control.Arrow.pure'
19:54:23 <oerjan> grmbl
19:54:26 <oerjan> @hoogle pure
19:54:27 <lambdabot> Control.Applicative pure :: Applicative f => a -> f a
19:54:49 <oerjan> hm it is possible they simply removed pure from Arrow altogether
19:55:02 <oerjan> (it was just a synonym of arr anyhow)
19:55:27 <oklopol> removed pure?!?
19:56:00 <oerjan> oklopol: it got annoying whenever someone wanted to import both Control.Arrow and Control.Applicative
19:56:18 <oerjan> to have two different functions named the same thing
19:57:34 <oklopol> what does pure do
19:58:06 <oerjan> <fizzie> How was it with lambdabot, how does it have all the modules (all of them) available by default?
19:58:39 <oerjan> i believe > runs in the environment of a module named L, which contains a heap of import statements
19:58:48 <oerjan> but certainly not _all_...
20:00:06 -!- Taneb has joined.
20:01:28 <oerjan> <fizzie> > magnitude $ ((-pi) :+ 0) - (mkPolar pi pi)
20:01:46 <oerjan> darn so apparently they didn't get rid of all ambiguity
20:02:44 <oerjan> that vectorspace package strikes again, redefining magnitude
20:02:55 <olsner> oerjan: didn't arrow become a subclass of Category, with pure replaced by something from Category?
20:03:16 <oerjan> Category has no pure
20:03:58 <olsner> hmm, indeed not
20:05:46 <oerjan> this is stupid, as i believe it should be easy to get ghc to give error messages if you do that kind of ambiguity
20:05:54 -!- pumpkin has joined.
20:07:00 <oerjan> !haskell module Main(Control.Monad, liftM) where import qualified Control.Monad; liftM = 3.14; main = print liftM
20:07:18 <oerjan> oops
20:07:29 <oerjan> !haskell module Main(Control.Monad, liftM) where import qualified Control.Monad(*); liftM = 3.14; main = print liftM
20:07:31 -!- copumpkin has quit (Ping timeout: 258 seconds).
20:07:35 <oerjan> wait what
20:07:43 <Sgeo> zhttp://www.youtube.com/watch?v=k91u6dtwYm8
20:07:48 <oerjan> !haskell module Main(Control.Monad(*), liftM) where import qualified Control.Monad; liftM = 3.14; main = print liftM
20:08:06 <oerjan> huh what _is_ the syntax for that...
20:08:34 <olsner> re-exporting modules?
20:08:43 <oerjan> yes
20:09:50 <olsner> module Foo (baz,module Bar) I think
20:09:55 <oerjan> yeah found it
20:10:06 <oerjan> !haskell module Main(module Control.Monad, liftM) where import qualified Control.Monad; liftM = 3.14; main = print liftM
20:10:06 <olsner> (if Foo also wants to export a local function baz)
20:10:10 <EgoBot> 3.14
20:10:13 <oerjan> wtf
20:11:05 <oerjan> apparently it doesn't perform the check in that case
20:11:16 <oerjan> maybe it has to be compiled, not just loaded
20:11:35 <olsner> exporting two different symbols with the same name is apparently not an error :)
20:11:40 <olsner> maybe Main is special though
20:12:04 <oerjan> could be
20:12:58 <oerjan> the report is pretty clear that this kind of thing should be a clash
20:13:08 <oerjan> oh well
20:22:28 <pikhq_> elliott_: I should do something about your aimake concept.
20:22:49 <pikhq_> I'm not sure how to do it, but C builds should not be harder than "build foo.c"
20:23:05 <elliott_> :p
20:23:29 <oerjan> :t re
20:23:30 <lambdabot> Not in scope: `re'
20:23:52 <oerjan> @hoogle Complex a -> a
20:23:53 <lambdabot> Data.Complex imagPart :: RealFloat a => Complex a -> a
20:23:54 <lambdabot> Data.Complex magnitude :: RealFloat a => Complex a -> a
20:23:54 <lambdabot> Data.Complex phase :: RealFloat a => Complex a -> a
20:24:01 <pikhq_> The *obvious* method involves adding annotations to the source, but that feels a bit like a copout (not to mention hard to not fuck up).
20:24:06 <oerjan> > realPart (0 :+ undefined)
20:24:07 <lambdabot> *Exception: Prelude.undefined
20:24:26 <oerjan> pikhq_: apparently Complex is strict, so no laziness available
20:26:06 <pikhq_> oerjan: So mkPolar is defined the way it is for strictness reasons? "mkPolar r theta = r * cis theta" would be less strict than "mkPolar r theta = r * cos theta :+ r * sin theta", presuming a lazy *.
20:27:16 <oerjan> pikhq_: um no i was implying that since Complex is a strict type, that _shouldn't_ be the case
20:27:22 <pikhq_> oerjan: Ah.
20:27:29 <pikhq_> So, mkPolar is defined the way it is for no good reason.
20:27:38 <oerjan> perhaps.
20:28:11 <oerjan> well one reason is for stupid compilers which would otherwise create a temporary value
20:29:24 <oerjan> presumably parts of the haskell report predates clever compilers by quite a lot
20:29:49 <pikhq_> Uh, Data.Complex isn't in the Report. :)
20:29:57 <oerjan> yes it is.
20:30:01 <pikhq_> Oh, sorry.
20:31:08 <pikhq_> elliott_: On a scale of 1 to 10, how bad of an idea is adding notations to C source to make things happen somewhat sanely?
20:31:36 <oerjan> 11.
20:31:45 * oerjan runs away
20:32:07 <elliott_> pikhq_: 99
20:32:24 -!- pumpkin has changed nick to copumpkin.
20:33:34 <pikhq_> Hmm. *Regardless*, it'd probably need to have a full C preprocessor. :/
20:33:41 <pikhq_> Well, more like 3/4ths of one.
20:33:55 -!- augur has joined.
20:37:46 <oerjan> <Taneb> Also, the evolution process is controlled by me
20:37:57 <pikhq_> elliott_: You. Insight. :P
20:38:16 <oerjan> clearly someone hasn't read yudkowski, or elliott_'s (?) rants about it
20:38:27 <elliott_> oerjan: yudkowsk_y_
20:38:38 * elliott_ has not ranted on any AI topic to his knowledge
20:38:45 <oerjan> elliott_: yay i got closer than expected!
20:38:46 <elliott_> maybe argued, but not monologued
20:39:02 <elliott_> pikhq_: but i would agree with him, seeing as this is bf joust and the programs are kilobytes at most. :p
20:39:03 <oerjan> ok ok
20:39:07 <Taneb> Nah, just I haven't got around to automating that yet
20:39:18 <pikhq_> elliott_: Relevant insight.
20:40:04 <oerjan> Taneb: no i mean, yudkowsky would say that thinking you control the AI would be no match against a _real_ superhuman AI
20:41:38 <oerjan> also, i was somewhat joking
20:42:14 <Taneb> Okay
20:42:39 <Taneb> I really need to do rather a lot of optimization, maybe a language change.
20:42:59 <Taneb> It takes about 5 minutes to evaluate a generation
20:43:22 <Taneb> I could probably get that down to two fairly easily
20:45:00 <pikhq_> Probably the single biggest problem is that there is no *way* to tell from just C source whether something is intended as a library or a program.
20:45:40 <Taneb> Unless it has a comment saying "THIS IS A LIBRARY"
20:45:48 <oerjan> <elliott> `addquote <NihilistDandy> The Russian's emblem was the hammer and sickle, not the fist and other fist
20:45:56 <oerjan> http://theredhunter.com/Fateh%20logo.gif
20:46:05 <pikhq_> Followed closely by how it's utterly impossible in the general case to discover what should be linked into that.
20:46:24 <oerjan> (Al Fatah)
20:46:38 <pikhq_> Though it's actually pretty easy if you assume that each header file corresponds to 0 or 1 C files that should be linked.
20:47:38 <pikhq_> *With* that assumption, you can just about do it by grepping for #include statements.
20:51:32 <elliott_> oerjan: there's some good quotes later on :D
20:51:47 <oerjan> you don't say.
20:56:26 <Taneb> Why does my brother have to have a friend with almost exactly the same name as him?
20:57:33 <olsner> maybe he just likes people with similar names to his
20:58:23 <Taneb> Of course, that comment was a) rhetorical, b) completely irrelevant, c) fundamentally useless, d) kinda stupid, and e)
20:58:30 <Taneb> I couldn't think of an e
20:59:15 <olsner> > e
20:59:16 <lambdabot> e
20:59:23 <olsner> lambdabot could
20:59:31 <Taneb> My word
20:59:43 <oerjan> sadly it's not _the_ e
21:00:00 <Taneb> E, nevah
21:00:14 <olsner> > exp 1 -- is this the e?
21:00:15 <lambdabot> 2.718281828459045
21:00:26 <Taneb> That be the e
21:00:40 <Taneb> To an appropriate number of decimal places
21:00:56 <oerjan> > exp 1 :: CReal
21:00:57 <lambdabot> 2.7182818284590452353602874713526624977572
21:01:05 <olsner> yes, I think it was a bit few to be truly appropriate
21:01:17 <elliott_> ping
21:01:27 <oerjan> 6uod
21:02:22 <Taneb> I've got a friend who makes a quote list similar to HackEgo's... but NOT ON IRC!
21:02:24 <oerjan> <cheater_> does italian have separate singular and multiple "you"?
21:02:30 <oerjan> yes, tu and voi
21:02:42 <oerjan> also a polite one, lei
21:03:03 <Taneb> This is the same friend who thought Washington DC was in British Columbia, managed to set a pan of water on fire, and whom I tried to teach Lambda Calculus
21:03:19 <olsner> "managed to set a pan of water on fire", wow
21:03:32 <Taneb> Nobody's sure how she did it
21:03:40 <oerjan> Taneb: are you sure he hasn't escaped from a sitcom somewhere?
21:03:55 <Taneb> Pretty sure.
21:03:55 <oerjan> or... are you sure you're not living in one
21:04:08 <Taneb> She's female. In sitcoms it's generally the males who are idiots
21:04:14 <oerjan> ah.
21:05:46 <oerjan> well i recall at least one exception (from cheers, although there were male idiots too)
21:06:03 <oerjan> oh and friends had one
21:06:14 -!- pumpkin has joined.
21:06:16 * oerjan is not entirely up-to-date with modern sitcoms
21:06:21 <Taneb> And if this were a sitcom, she and I would have more unresolved sexual tension
21:06:36 <elliott_> Maybe you're just in a really badly-written sitcom
21:06:45 <oerjan> for a value of not entirely approximately equal to "entirely not"
21:06:49 <Taneb> BUT THERE'S NO LAUGH TRACKS
21:06:57 <elliott_> Taneb: IT'S AN OLD SITCOM
21:07:10 <Taneb> BUT I'VE GOT AN iPOD!
21:07:14 <oklopol> my mom used to boil rags to clean them, and once accidentally left one to boil for a few days. nothing happened.
21:07:18 <elliott_> Taneb: IT'S LIKE THE JETSONS
21:07:26 <Taneb> Mein. Gott.
21:07:43 <Taneb> Mon. Dieu.
21:07:53 -!- copumpkin has quit (Ping timeout: 252 seconds).
21:07:56 <Taneb> Deus. Meus.
21:08:06 * oerjan ponders a civilization which would find ipods hilariously anachronistically futuristic
21:08:40 <Taneb> There was one of them in Doctor Who, I think
21:08:44 <oerjan> (see: Zeerust on tvtropes)
21:08:47 <Taneb> One of the Eccleston episodes
21:08:59 <Taneb> I'm avoiding TVTropes
21:09:06 <Taneb> Because my system is perfect
21:09:11 -!- Cheery has quit (Quit: Lost terminal).
21:09:18 <oerjan> hey i was being nice and not giving a link
21:09:23 <olsner> oerjan: hilariously anachronistically futuristic? what's that even mean?
21:09:38 <oerjan> olsner: like the jetsons
21:09:41 <oklopol> remove anachronistically and you'll get it
21:10:28 <olsner> oerjan: so, hmm... like the future looked a long time ago?
21:10:34 <Taneb> My biology teacher: I'll do the teachering.
21:10:36 <oerjan> olsner: as i said, zeerust
21:10:53 <oklopol> yeah maybe not hilariously futuristic, more like futuristic in a hilarious way
21:11:09 <pikhq_> Well. I at least have a quick, stupid proof-of-concept.
21:11:21 <pikhq_> http://sprunge.us/KXSb
21:12:07 <Taneb> I'm being kicked off to go to bed now
21:12:10 <Taneb> Goodnight
21:12:20 -!- Taneb has quit (Read error: Connection reset by peer).
21:12:32 <pikhq_> Given a main.c, it attempts to search for all needed source files.
21:12:41 <oerjan> poor Taneb, he would fit in so well here if he could just get a messed up sleep schedule
21:12:54 <oklopol> oerjan: what was your conclusion?
21:13:19 <oerjan> oklopol: to what?
21:13:22 <oklopol> pondering
21:13:36 <oerjan> oh. i think i just pondered pondering.
21:13:45 <oklopol> cool
21:13:51 <oklopol> i have to do some stuff ->
21:14:07 <elliott_> <oerjan> poor Taneb, he would fit in so well here if he could just get a messed up sleep schedule
21:14:08 <elliott_> see also ph
21:14:38 <oklopol> i have a pretty nice sleepy time distribution
21:14:50 <oklopol> 16-22
21:21:54 -!- pumpkin has changed nick to copumpkin.
21:26:53 <oerjan> also regarding tvtropes, http://www.mezzacotta.net/postcard/?comic=926
21:27:12 <oerjan> (yes, there is no picture)
21:35:06 <oerjan> today's darths & droids is particularly hilarious, i think
21:53:56 <pikhq_> So, my scan script, though naive, works nicely for things that don't try to break it.
22:17:54 -!- Wamanuz2 has joined.
22:18:24 -!- Wamanuz2 has quit (Remote host closed the connection).
22:20:31 -!- Wamanuz has quit (Ping timeout: 258 seconds).
22:21:33 -!- Wamanuz has joined.
22:26:42 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
22:27:49 -!- elliott_ has quit (Ping timeout: 252 seconds).
22:29:32 -!- Sgeo_ has joined.
22:29:44 <Sgeo_> I obviously have a good Internet connection
22:30:42 -!- Sgeo has quit (Ping timeout: 250 seconds).
22:34:20 -!- MigoMipo has quit (Read error: Connection reset by peer).
22:34:21 -!- CakeProphet has quit (Ping timeout: 260 seconds).
22:35:45 -!- CakeProphet has joined.
22:35:46 -!- CakeProphet has quit (Changing host).
22:35:46 -!- CakeProphet has joined.
22:36:03 <oerjan> like everyone else
22:39:19 -!- Sgeo_ has changed nick to Sgeo.
22:49:54 -!- copumpkin has joined.
22:51:36 -!- pikhq_ has quit (Read error: Operation timed out).
22:54:25 -!- pikhq has joined.
23:03:07 <pikhq> Well, now I have a simple compiler wrapper.
23:03:16 -!- pumpkin has joined.
23:03:19 <pikhq> http://sprunge.us/AXBj
23:03:46 <pikhq> Perfect, no; better, yes.
23:04:48 -!- augur has quit (Remote host closed the connection).
23:05:19 -!- pumpkin has changed nick to copumpkin_.
23:06:23 -!- copumpkin has quit (Ping timeout: 276 seconds).
23:12:59 -!- copumpkin has joined.
23:15:17 -!- copumpkin_ has quit (Ping timeout: 246 seconds).
23:30:36 <pikhq> http://sprunge.us/CQWO Added some annotations to make up for my laziness...
23:32:33 <pikhq> XD, minor bug. Anyways.
23:47:51 <oerjan> Gregor: eso.codu.org appears not to be loading
23:48:35 <oerjan> or http://www.codu.org/eso/ork/exa/orkipple.ork
23:49:12 <oerjan> oh wait that one is also in the file archive
23:49:28 <oerjan> Gregor: but still, broken wiki links, i hope it's temporary...
23:49:32 -!- augur has joined.
23:51:26 <Gregor> oerjan Uhh, E_WORKSFORME
23:51:44 <oerjan> ic
23:52:56 <oerjan> well _now_ it works
23:53:21 <oerjan> Gregor: there are some doubts about Ork's TC-ness, see Talk: page
23:54:03 <Gregor> oerjan: Oh nooooose
23:56:20 <oerjan> for the brainfuck interpreter, the problem would be that it's not unbounded in either cell number (explicitly) or cell size (because they're doubles, per the spec)
23:56:43 <oerjan> for the kipple interpreter, the problem would be that i cannot make heads or tails of it
←2011-07-20 2011-07-21 2011-07-22→ ↑2011 ↑all