←2011-05-19 2011-05-20 2011-05-21→ ↑2011 ↑all
00:00:04 -!- myndzi\ has joined.
00:00:17 -!- CakeProphet has joined.
00:03:31 -!- myndzi has quit (Ping timeout: 248 seconds).
00:05:24 -!- myndzi\ has quit (Ping timeout: 260 seconds).
00:37:26 -!- myndzi has joined.
00:38:51 -!- augur has quit (Read error: Connection reset by peer).
00:41:06 -!- augur has joined.
00:42:08 <oerjan> sheesh searching for I II III IIII IVI IIIVII IIIIIVIII gives only 3 google hits and one is to #esoteric logs
00:42:31 <oerjan> the two others are in french
00:43:47 <elliott_> oerjan: X-D
00:43:52 <elliott_> google translate?
00:44:36 <oerjan> also if i search for I II III IIV IIIIV instead i get two relevant references, one which links to the other, which is mistyped and by conway
00:45:07 <oerjan> and where he claims that there is a constant for it, with low algebraic degree
00:45:39 <elliott_> do you think it's tc?
00:45:56 <elliott_> oerjan: also, contact conway ;D
00:46:11 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
00:46:11 <oerjan> well it seems unlikely if it has a matrix to predict its growth
00:46:28 <Sgeo_> Does Conway know about Gemini?
00:46:40 <oerjan> what is gemini?
00:46:52 * Sgeo_ stares at oerjan
00:47:13 <Sgeo_> http://www.conwaylife.com/wiki/index.php?title=Gemini
00:47:28 <Sgeo_> Spaceship that moves by self-replication
00:48:03 <Sgeo_> Also moves obliquely
00:48:06 <oerjan> oh that one
00:48:10 <Sgeo_> (word taken from life wiki)
00:48:42 <oerjan> Sgeo_: the word conway does _not_ trigger gol as its first association in my mind
00:48:57 <Sgeo_> Ah
00:49:00 <oerjan> which means gemini is a couple steps too far
00:49:49 -!- sebbu has joined.
00:49:49 -!- sebbu has quit (Changing host).
00:49:49 -!- sebbu has joined.
00:50:15 <elliott_> lol i clicked conways wp talk page
00:50:19 <elliott_> read "John has indeed been married three times. First wife Eileen, second wife Larissa, third wife Diana. His son Alex was born in 1983, and Oliver in 1988, to answer the below question."
00:50:22 <elliott_> thought "whoa creepy"
00:50:24 <elliott_> next line
00:50:25 <elliott_> "Diana Conway 24.225.176.66 03:58, 22 November 2006 (UTC)"
00:53:31 -!- sebbu2 has quit (Ping timeout: 252 seconds).
00:53:46 * oerjan had forgotten that #esoteric discussion from last year
00:53:52 <elliott_> which discussion
00:54:06 <oerjan> about roman numeral look and say
00:54:14 <oerjan> http://codu.org/logs/_esoteric/2010-06-20.txt
00:54:20 <elliott_> istr having one of those
00:54:33 <elliott_> oh man ksf was an idiot even back then
00:54:39 <elliott_> why didn't i remember him so i could have ignored him sooner when he came here
00:54:43 <oerjan> well some discussion but maybe mostly me monologuing
00:54:59 <elliott_> oerjan: that's a discussion for us :)
00:55:08 -!- elliott_ has changed nick to fpa.
00:55:11 <fpa> btw i'm holding this nick hostage
00:55:13 <fpa> (by registering it)
00:55:55 <oerjan> the weird thing is i'm saying things on that page which i distinctly recall rederiving in the past week or two :D
00:58:11 <fpa> aww
00:58:13 <fpa> that's a sign of senility
00:58:16 -!- fpa has changed nick to elliott.
00:58:27 -!- elliott has quit (Changing host).
00:58:27 -!- elliott has joined.
01:11:00 -!- copumpkin has joined.
01:14:12 <elliott> 07:17:08: <lament> ooh, i got a _really_ stupid idea!
01:14:12 <elliott> 07:17:29: <lament> wow this will be retarded.
01:14:12 <elliott> 07:20:03: <lament> wow i'm like the genius of retarded.
01:23:44 -!- augur has quit (Remote host closed the connection).
01:40:34 <elliott> Deewiant: Does Mycology test IMAP?
01:42:03 -!- augur has joined.
01:43:53 -!- hagb4rd has joined.
02:36:00 -!- madbr has joined.
02:36:02 <madbr> hey
02:36:17 <elliott> yeh
02:36:56 <madbr> my brother brought a stm32 evaluation board from work and I'm trying to figure if it's possible to use it as a target platform for a demoscene demo
02:37:36 <madbr> (arm cortex-m3 microcontroller board)
02:37:37 <elliott> anything's a viable platform for a demo
02:37:42 <elliott> jacquard loom? totally.
02:37:52 <madbr> eh
02:38:16 <madbr> Trying to figure if it's possible to get VGA or NTSC output
02:38:35 <madbr> the kind of stuff that will look cool on a projector
02:39:34 <elliott> bah, ASCII should be enough for anyone
02:40:25 <madbr> well, the board's display is 16x2 ascii
02:41:41 <madbr> plus a row of 16 LEDs
02:41:52 -!- oerjan has quit (Quit: Good night).
02:43:14 <elliott> light show + ascii art problem solved
02:43:49 <elliott> jesus CHRIST this code is ugly
02:44:10 <madbr> ahem yeah right
02:44:39 <madbr> more likely I'm trying to figure out if it's possible to get either the right sequence of bits out of one of the series port
02:44:42 <madbr> s
02:44:50 <madbr> to get NTSC
02:44:52 <madbr> colors
02:45:04 <madbr> (but it probably has the wrong clock rate for that)
02:45:04 -!- pikhq_ has joined.
02:45:12 <madbr> Or alternatively
02:45:20 <madbr> use a bunch of pins and output VGA
02:46:33 -!- pikhq has quit (Ping timeout: 240 seconds).
02:47:08 -!- hagb4rd has quit (Ping timeout: 246 seconds).
02:47:08 -!- wareya has quit (Read error: Connection reset by peer).
02:47:15 <madbr> elliott: that thing runs at like 80mips
02:47:25 <elliott> thats a lot of instructins
02:47:28 <elliott> instructions
02:47:38 -!- wareya has joined.
02:47:42 <madbr> 72 mhz cut down ARM
02:49:17 <madbr> at least the board has a sound output
02:49:25 <madbr> which pretty much solves sound from the outset
02:49:37 <elliott> use some of the bits of the sound port for video output :D
02:49:38 <elliott> most of, even
02:50:06 <madbr> I think the sound is done with PWM
02:50:32 -!- TeruFSX has quit (Read error: Operation timed out).
02:50:41 <madbr> And thus probably doesn't run at the ridiculous speeds you need for video (6mhz)
02:51:31 -!- hagb4rd has joined.
02:52:19 <madbr> 12.6mhz = 320x400 or 320x480 VGA video pixel rate
02:52:53 <elliott> who needs that kinda resolution
02:52:55 -!- augur has quit (Remote host closed the connection).
02:53:02 <madbr> well
02:53:12 <madbr> VGA has a minimum line rate :(
02:53:19 <pikhq_> madbr: There's no real requirement for that to be analog.
02:53:47 <pikhq_> Admittedly, it's not going to be doing color unless it's NTSC, but hey.
02:53:50 <madbr> if the horiz rate isn't at least 30khz I'm pretty sure the projector won't show it
02:54:29 <madbr> NTSC has a kinda more gentle rate of ~16khz
02:54:40 <madbr> but its color encoding scheme is crazy
02:55:11 <pikhq_> You can fake it with black and white output.
02:55:35 <pikhq_> Also, crazy color encoding isn't unique to NTSC.
02:55:59 <madbr> I don't think this board has the right clock rate to easily simulate ntsc colors unfortunately
02:56:06 <pikhq_> All the color analog TV standards do a form of analog QAM encoded into the signal.
02:56:15 <pikhq_> Which is approximately "fucking crazy".
02:56:17 <madbr> pikhq: right
02:56:54 <pikhq_> It has a 72 MHz ARM. Surely you can clock a digital output line at a reasonably fast rate with that sort of CPU.
02:57:03 <madbr> as opposed to VGA's "put the right voltages on the R, G, B, Hsync, Vsync" pins
02:57:51 <madbr> pikhq: yeah. Aparently the SPI ports run at "18Mhz max"
02:58:13 <pikhq_> Plenty speedy for NTSC video.
02:58:22 <madbr> well, yeah
02:58:37 <pikhq_> And psuedocolor.
02:58:41 <madbr> doesn't line up with the NTSC color carrier freq tho
02:59:49 <madbr> which would probably produce weird rainbow shifts across the screen
03:00:22 <elliott> that sounds pretty
03:01:41 <madbr> like, if it was a 800mips processor you could probably just render in 32bpp and translate into bit patterns at the end
03:01:57 <madbr> but it's more like ~80mips so dunno
03:02:03 * elliott mentally files "Landon Stewart" under "idiot".
03:02:26 <elliott> madbr: how much faster is it than a commodore sixtyfour? :P
03:02:54 <madbr> 100 times probably
03:04:06 <pikhq_> Actually, if you got an NTSC color burst that matched your used color carrier, it'd work just fine on common displays.
03:04:18 <pikhq_> Not work for broadcasting, but oh well.
03:04:47 <madbr> dunno how ntsc TVs implement color burst and how they react to frequency variation
03:05:24 <madbr> since you have a burst every line then that locks the rate somewhat yeah
03:05:41 <pikhq_> Well, a lot of computers and consoles in the 70s and 80s did something similar.
03:06:05 -!- augur has joined.
03:06:25 <madbr> afaik NESes and AMIGAs have clock rates chosen specifically around the ntsc color carier
03:06:34 <pikhq_> And if you could get analog black and white out, you could use the CGA trick.
03:06:44 <elliott> madbr: csixtyfour too
03:06:49 <madbr> yeah the CGA trick is the same thing
03:06:50 <pikhq_> Oh, wait, never mind.
03:07:06 <pikhq_> The CGA trick is just two-level output, but based on the color carrier.
03:07:30 <madbr> still gets you 16 colors
03:07:39 <elliott> hey pikhq_
03:07:40 <elliott> shiro
03:07:49 <madbr> but I think you need to output at a specific clock rate for that
03:08:16 <pikhq_> Rational multiplier of the color carrier.
03:08:50 <pikhq_> Within a certain range, I'd imagine.
03:09:49 <elliott> Could not deduce (Functor m) arising from a use of `<$>'
03:09:50 <elliott> from the context (MonadShiro m)
03:09:51 <elliott> oh fucking hell
03:10:34 <elliott> No instance for (Applicative (MaybeT Shiro))
03:10:34 <elliott> arising from the superclasses of an instance declaration
03:10:34 <elliott> asfdgh
03:10:43 <elliott> ?src Applicative
03:10:43 <lambdabot> class Functor f => Applicative f where
03:10:43 <lambdabot> pure :: a -> f a
03:10:43 <lambdabot> (<*>) :: f (a -> b) -> f a -> f b
03:12:45 <elliott> wow ok this is a huge pain in the ass
03:17:17 <madbr> pikhq: this arm thing seems to run at speeds that are various multiples of 6mhz
03:17:47 <madbr> 72mhz, 48mhz, 36mhz, 24mhz, 12mhz specifically mentioned in the datasheets
03:17:57 <pikhq_> madbr: Guess you're not getting sane color, then.
03:18:11 <madbr> right
03:18:20 <pikhq_> Unless you've got a *few* such outputs, in which case you could probably do VGA or NTSC component.
03:19:09 <madbr> I think a lot of the chip's pins can be reassigned as general purpose IOs
03:19:42 <elliott> ?undo do { r <- liftShiro ((Just <$> io m) `catchShiro` \(e::IOException) -> return Nothing); MaybeT (return r) }
03:19:42 <lambdabot> Parse error in pattern at "->" (column 71)
03:19:44 <elliott> gah
03:19:54 <madbr> Which might be able to get me 15bpp VGA color... but the cpu power requirements for that are probably kinda stiff
03:19:55 <pikhq_> (aka "60000/1001 Hz 480 line analog component video, YPbPr, sync on Y")
03:19:57 <elliott> ?undo do { r <- x; MaybeT (return r) }
03:19:57 <lambdabot> x >>= \ r -> MaybeT (return r)
03:20:01 <elliott> ?. pl undo do { r <- x; MaybeT (return r) }
03:20:01 <lambdabot> MaybeT . return =<< x
03:20:19 <elliott> ioMaybe :: IO a -> MaybeT Shiro a
03:20:19 <elliott> ioMaybe m = MaybeT . return =<< liftShiro ((Just <$> io m) `catchShiro` \(e::IOException) -> return Nothing)
03:20:21 <elliott> Surely I can do better than that.
03:21:01 <pikhq_> Actually...
03:21:18 <pikhq_> madbr: With just two outputs I think you could do S-Video.
03:22:33 <elliott> ?hoogle guard
03:22:33 <lambdabot> Control.Monad guard :: MonadPlus m => Bool -> m ()
03:22:33 <lambdabot> Language.Haskell.TH data Guard
03:22:33 <lambdabot> Language.Haskell.TH.Syntax data Guard
03:23:09 <elliott> fuck yes the code is getting so much better
03:23:39 <elliott> maybeT :: Maybe a -> MaybeT m a
03:23:41 <elliott> need a better name for this
03:23:43 <elliott> any suggestions?
03:23:52 <elliott> hmm wait
03:23:53 <elliott> is that just MaybeT
03:23:55 <elliott> no, it's not
03:24:38 <madbr> pikhq: YPbPr might be a good idea
03:27:15 -!- augur has quit (Ping timeout: 248 seconds).
03:28:52 <madbr> pikhq: mostly because it's similar to vga but lets you use half the horiz refresh rate and share sync info
03:29:10 <pikhq_> The colorspace is a bit bizarre, though.
03:29:36 <pikhq_> Okay, okay, so technically it's a change of basis of the RGB colorspace. But still annoying.
03:33:20 <madbr> yeah
03:34:39 <madbr> plus I'm not certain their video projector will have a YCrCb input
03:34:48 <madbr> whereas all of them have a VGA input
03:35:13 -!- TeruFSX has joined.
03:35:46 <elliott> did you know what's the best
03:38:24 <coppro> second
03:41:09 -!- azaq23 has quit (Ping timeout: 276 seconds).
03:42:28 -!- azaq23 has joined.
03:51:52 <elliott> omg tomorrow is the raptjure
03:52:12 <pikhq_> No, tomorrow is Friday, you damned Britishman.
03:52:53 <elliott> suht the fuck up americaevil
03:53:39 <monqy> so when on saturday is the rapture
03:54:18 <elliott> raptune
03:54:23 <elliott> its................
03:54:24 <elliott> time party
03:54:34 <elliott> it starts... in australia....or new zzealand...the timez0nes
03:54:38 <elliott> (i am not joking they seriously believe this)
03:54:45 <elliott> then it expands to less sheepfucking....areas of the....globe
03:55:24 <monqy> does it expand in all directions or just a few
03:55:37 <monqy> a gradual rapture sounds pretty inconvenient
03:55:50 <elliott> its ok because
03:55:52 <elliott> once you hear the news
03:55:55 <elliott> SHEEPFUCKERS DECIMATED
03:55:57 <elliott> just
03:56:00 <elliott> become christain
03:56:03 <elliott> and ull be taken
03:56:09 <monqy> sounds like a deal
03:56:16 <pikhq_> I'm pretty sure salvation is irrevocable.
03:56:22 <monqy> what if I'm secretly a sheepfucker
03:56:24 <pikhq_> So I win.
03:56:32 <elliott> pikhq_: just go eat some babies
03:56:36 <elliott> god will make an exception
03:56:55 <pikhq_> elliott: What do you think I eat 3 meals a day?
03:56:56 <Gregor> Dood, it's the rapture! Dat shit gonna rapture everywhere bitch!
03:57:06 <pikhq_> *Animal* flesh? That's disgusting, man.
03:57:25 <elliott> hmmhmm go to bed now when its just getting light
03:57:27 <elliott> or fix this code first
04:07:50 <elliott> where's oerjan when you need him
04:11:14 <elliott> so... it is five am...
04:11:16 <elliott> i should
04:11:17 <elliott> go to slepe
04:11:19 <elliott> slepe
04:11:57 -!- variable has quit (Remote host closed the connection).
04:12:36 <elliott> Sgeo_
04:12:38 <elliott> name my function
04:12:54 <Sgeo_> Your... function?
04:13:05 <Sgeo_> You mean like id?
04:13:53 -!- variable has joined.
04:14:08 <elliott> what
04:14:13 <elliott> ??? :: (Monad m) => Maybe a -> MaybeT m a
04:14:13 <elliott> ??? = MaybeT . return
04:14:14 <elliott> name it
04:14:26 <elliott> i need to go to sleep but i can't until its named
04:14:45 <elliott> [asterisk]it's
04:16:07 <Sgeo_> makeTransformer
04:16:13 <Sgeo_> generalize
04:16:28 <elliott> ...
04:16:35 <elliott> those are the worst fucking names ive veer heard im going back to hashhaskell
04:16:56 <Sgeo_> It makes it something more compattibible with use in a monad stack, right?
04:17:32 <elliott> yeah no never mind
04:17:34 <pikhq_> elliott: liftMaybe
04:17:39 <elliott> pikhq_: its not a lift
04:17:55 <pikhq_> Oh, right, perhaps I should sleep.
04:17:59 <Sgeo_> lower
04:18:08 <elliott> <kmc> lift :: M a -> MaybeT M a
04:18:08 <pikhq_> Or perhaps I should listen to Animals again.
04:18:08 <elliott> <kmc> foo :: Maybe a -> MaybeT m a
04:18:11 <Sgeo_> Um no that maes no ense
04:18:26 <pikhq_> Definitely the latter.
04:20:31 <elliott> hey pikhq_
04:20:32 <elliott> it is five twenty
04:20:33 <elliott> am
04:20:34 <elliott> should i
04:20:36 <elliott> bed-><_
04:20:39 <elliott> if so then
04:20:41 <elliott> name my function
04:20:42 <elliott> so i can
04:20:42 <elliott> bed
04:21:00 -!- augur has joined.
04:21:23 <pikhq_> elliott: maybe
04:22:12 <elliott> :t maybe
04:22:12 <lambdabot> forall b a. b -> (a -> b) -> Maybe a -> b
04:22:14 <elliott> try again
04:22:54 <elliott> meh
04:22:56 <elliott> i guess ill go to bed
04:27:14 -!- elliott has quit (Ping timeout: 246 seconds).
04:31:12 -!- TeruFSX has quit (Quit: No Ping reply in 180 seconds.).
04:44:31 <oklofok> rapture? i don't wanna die :((
04:49:23 <madbr> after the rapture, the discoture
04:49:51 <monqy> october 21
04:49:59 <oklofok> for you maybe, but i've had anal sex :(
04:50:25 <monqy> I'm a filthy unbeliever
04:50:31 <monqy> filthy atheist at that
04:50:41 <madbr> supposedly jesus loves you, but here he is, blowing up the world
04:50:44 <madbr> how is that love
04:51:12 <oklofok> he was just putting up a front until god gave him some powah
04:52:29 <pikhq_> oklofok: The alternative is believing in *and worshipping* Yahweh, as interpreted by a particular form of Christianity.
04:53:13 <pikhq_> I dunno about you, but I'm of the opinion that if Yahweh existed, he wouldn't be deserving of worship.
04:54:19 <monqy> love everyone kill everyone send everyone to hell
04:54:20 <madbr> any christians in here btw?
04:54:30 <monqy> I hope not; I want my fun.
04:55:28 <pikhq_> Does former Christian count?
04:55:30 <madbr> heh no christians I guess
05:00:04 <oklofok> i barely believe in christianity
05:01:27 <pikhq_> oklofok: "Barely"?
05:01:48 <pikhq_> oklofok: Inquiry: what evidence is there for the claims of Christianity?
05:02:01 <oklofok> how do you solve #5225 in freecell? :\ it seems like the obvious approach is to empty the rightmost column right away without leaving anything up, but it seems like you get stuck if you do that
05:02:15 <pikhq_> That's some bad evidence. :P
05:02:20 <oklofok> pikhq_: well people say they're christian sometimes
05:02:28 <oklofok> and i'm not completely sure they're lying
05:02:35 <pikhq_> Oh, the *existence of the faith*.
05:02:38 <oklofok> i'm somewhat agnostic in that sense
05:02:40 <oklofok> yes
05:02:41 <pikhq_> No argument.
05:02:56 -!- SgeoN2 has quit (Read error: Connection reset by peer).
05:02:57 <monqy> what's christianity
05:03:44 <pikhq_> monqy: In short: the belief that a God had a son who was also God, who died and became a zombie to save us from our sins.
05:04:35 <monqy> I like the part where he kills people because he loves them
05:04:37 <monqy> fucking insane
05:05:10 <pikhq_> Yeah, the eternal torment for not believing combined with omnibenevolence is quite a trip.
05:06:19 <oklofok> well on an intellectual level i find it easy to believe in the existence of faith in general, everyone finds their own way to get out of circling the philosophical drain at times when you decide to realize life is sort of pointless, which i believe happens to all people who spend time thinking, occasionally. that people would choose the faith people next to them have is equally easy to believe. on an intellectual level. somehow i still have this feelin
05:07:01 <oklofok> well okay
05:07:05 <monqy> you still have what feelin
05:07:40 <oklofok> it's certainly not easy to believe, on an intellectual level, that people actually believe the bible stories :P but you know the general feeling of "christian god"
05:07:55 <oklofok> monqy: i have this feeling christianity is just a big joke, we're just not in on it
05:08:14 <oklofok> "oh you were being SARCASTIC! sorry us atheists are kind of slow sometimes."
05:08:31 <monqy> that is my dream
05:09:02 <oklofok> my theory: that's what "rapture" actually means, they just chicken out every time.
05:09:19 <oklofok> erm
05:09:25 <oklofok> i mean it means they tell us
05:11:56 <madbr> reading the brick testament
05:12:55 <Sgeo_> 3mg of melatonin taken
05:12:57 <monqy> I remember reading its rendition of revelation
05:12:58 <monqy> good stuff
05:14:32 <madbr> http://www.bricktestament.com/the_teachings_of_jesus/on_anger_and_insults/mt05_21a.html
05:15:35 <madbr> I like how it uses qui-gon jinn as jesus
05:17:08 <pikhq_> I've got personal experience for the existence of Christians.
05:17:26 <pikhq_> Having once been one, I can be sure that there at least *was* at least one person who actually believed it.
05:17:28 -!- augur has quit (Read error: Connection reset by peer).
05:17:40 <pikhq_> Not that that helps others too much.
05:18:42 -!- augur has joined.
05:19:23 <madbr> are you telling me there are christians who don't believe?
05:19:26 <oklofok> what?!? http://www.bricktestament.com/judges/samson_commits_mass_murder/jg14_01.html
05:19:37 <oklofok> what the... that's a joke right :D
05:19:48 <oklofok> why does this stuff keep surprising me
05:20:11 <augur> oklofok! :D
05:20:46 <oklofok> that story is the most horrible thing ever
05:20:47 <oklofok> hi augur
05:20:58 <augur> sup you
05:21:06 <oklofok> well i'm going to take a shower now
05:21:11 <oklofok> otherwise good
05:21:40 <madbr> yeah the ending is like... wtf
05:21:50 <madbr> oklofok: welcome to the old testament
05:22:26 <oklofok> yeah unlike the beginning where good took over the guy and made him wanna have sex with an unclean one.
05:22:33 <oklofok> *god
05:23:07 <oklofok> why don't they rename satan to bad and use baad instead of bad, would make much more sense
05:23:09 <pikhq_> Yeah, the Old Testament is the land of God endorsing an absurd amount of reprehensible behavior.
05:23:41 <oklofok> i suppose the concept of free will was invented later?
05:23:48 <pikhq_> The whole thing is a blend of confusing beliefs.
05:23:59 <pikhq_> The concept of *monotheism* was invented after much of it was written.
05:24:47 <madbr> old testament has way too much wars and "10000 men were killed" and so on
05:24:51 <oklofok> yeah god had sent most of the text down before realizing the retards didn't even get the basic framework yet
05:25:07 <oklofok> so he gave a few seminars and then send the new testament
05:25:15 <oklofok> *sent
05:27:35 <pikhq_> madbr: There's also the obvious after-the-fact editing.
05:27:51 <pikhq_> "So God spoke to God"
05:28:26 <madbr> pikhq: didn't knew of that one
05:28:37 <madbr> one classic is the 2 deaths of judah
05:29:02 <pikhq_> It's all *over* the place.
05:29:12 <Lymia> <cheater00>japanese is like golfing for speech
05:29:15 <Lymia> When does he come around?
05:29:21 <Lymia> I need to give him a few internets.
05:30:54 <madbr> and reading the revelation is like
05:31:00 <madbr> no loving god would do that
05:31:09 <madbr> actually that also applies to other parts of the bible
05:31:42 <pikhq_> Some of the early Jewish deities: Asherah, El, Yahweh, Baal.
05:32:16 <pikhq_> The first three are held to be names of God.
05:32:48 -!- copumpkin has quit (Remote host closed the connection).
05:33:06 <pikhq_> Yes, the Old Testament still has the *names* of the pantheon.
05:35:52 <madbr> el and baal are classic semitic gods afaik. don't know anything about the other ones
05:36:19 <pikhq_> They're all fairly typical semitic gods.
05:36:52 <pikhq_> The Jews are and were just a single group of semitic tribesmen, really.
05:40:15 <madbr> right
05:40:26 <madbr> this one is good:
05:40:26 <madbr> http://www.bricktestament.com/king_david/god_kills_70000_israelites/2s24_01p1ch21_01.html
05:42:22 <pikhq_> Aaaah, the stories you never hear a Christian talk about.
05:42:34 <madbr> what sort of loving god is that
05:42:48 <madbr> pikhq: that one is relatively well known I think
05:43:36 <pikhq_> madbr: Relatively, sure.
05:43:44 <pikhq_> It's still glossed over by most.
05:45:24 <pikhq_> And, of course, the documentary hypothesis is something they're ignorant of, unless they went to seminary.
05:46:28 <oklofok> am i getting this right, god orders him to take a census and kills everyone because he does?
05:46:48 <pikhq_> Yup.
05:46:56 <monqy> it's a euphemism for kill everyone
05:47:00 <pikhq_> God's a complete dick.
05:47:02 <oklofok> maybe this would indeed make more sense with two gods
05:47:17 <oklofok> why's taking a census bad exactly?
05:47:29 -!- azaq23 has quit (Quit: Leaving.).
05:47:40 <oklofok> i mean that's how you prove the polynomial hierarchy collapses to theta_2 if you have a sparse np-complete set :\
05:48:16 <oklofok> (and various other things)
05:51:05 <oklofok> http://www.bricktestament.com/king_david/god_kills_70000_israelites/2s24_25b.html xD
05:54:49 <fizzie> Maybe some sort of reverse psychology attempt?
05:55:40 <pikhq_> Works much better if you imagine there were two deities. Sadly, I think David takes place after monotheism.
05:56:58 <fizzie> Could be just one deity with some sort of personality disorder. I hear there's all kinds of.
05:58:21 <madbr> Wilderness, and the part from Joshua to King Solomon is like... war pillage rape death
05:58:58 <pikhq_> Yeah, but that's the history of just about everyone in that part of the world.
05:59:02 <madbr> (in the brick testament)
05:59:18 <madbr> well, yeah that's typical antiquity
05:59:21 -!- HackEgo has quit (Ping timeout: 264 seconds).
05:59:57 -!- Gregor has quit (Ping timeout: 264 seconds).
06:00:15 -!- EgoBot has quit (Ping timeout: 240 seconds).
06:00:27 -!- HackEgo has joined.
06:00:27 -!- EgoBot has joined.
06:04:02 -!- Gregor has joined.
06:04:31 -!- Gregor has changed nick to Guest52131.
06:20:03 -!- pikhq has joined.
06:20:29 -!- pikhq_ has quit (Ping timeout: 260 seconds).
06:33:59 <madbr> "Lorsque Joram eut pris possession du royaume de son père et qu'il se fut fortifié, il fit mourir par l'épée tous ses frères et quelques-uns aussi des chefs d'Israël. "
06:34:02 <madbr> nice guy
06:37:56 -!- hagb4rd has changed nick to h[a]gb4rd.
07:03:27 <madbr> also maybe it's just me but the bible has lots of death and punishment but not quite as much for kings
07:04:44 -!- augur has quit (Ping timeout: 240 seconds).
07:06:37 -!- madbr has quit (Quit: Radiateur).
07:52:25 -!- augur has joined.
08:05:47 -!- Vorpal has joined.
08:23:53 -!- cheater79 has joined.
08:34:12 -!- augur has quit (Remote host closed the connection).
08:50:04 -!- Sgeo__ has joined.
08:53:16 -!- Sgeo_ has quit (Ping timeout: 260 seconds).
09:03:52 -!- monqy has quit (Quit: hello).
09:06:21 -!- augur has joined.
09:43:54 -!- cheater79 has quit (Quit: Leaving).
09:44:05 -!- cheater79 has joined.
09:57:22 -!- Vorpal has quit (Quit: ZNC - http://znc.sourceforge.net).
10:13:56 -!- olsner_ has joined.
11:19:03 -!- Patashu has joined.
11:37:33 -!- oerjan has joined.
11:38:59 -!- ais523_ has quit (Ping timeout: 252 seconds).
11:41:43 -!- TeruFSX has joined.
11:50:28 <Patashu> What are you guys doing to prepare for the end of the world
11:53:18 <oerjan> eating breakfast
12:03:25 <Patashu> Can't be freed from your earthly shell on an empty stomach, huh?
12:04:42 <fizzie> No-one's yet told me how I can help to end the world, so I haven't prepared at all.
12:05:47 <Patashu> If you made the earth spin faster it'd end sooner
12:05:56 <Patashu> You don't have much time now
12:13:59 <Lymia> Let's nuke the world first.
12:14:27 <Zwaarddijk> did they ever say what time it would occur?
12:14:30 <Patashu> 6 pm
12:14:43 <Zwaarddijk> GMT?
12:14:49 <oerjan> no let's _stop_ the world spinning. the side effects should be minimal compared to the apocalypse, right?
12:14:52 <Patashu> nope, in whatever time zone you're in
12:15:09 <Patashu> the earthquake is going to move all the way around the earth, forming a neat arc
12:15:19 <Zwaarddijk> but uh
12:15:20 <Patashu> or maybe it'll suddenly rush forward for time zones that are wide
12:15:23 <Zwaarddijk> it will move in discrete steps, no?
12:15:24 <Patashu> I really don't know
12:15:32 <Patashu> you should ask someone who knows more about this
12:15:34 <Zwaarddijk> entire time zones at a time
12:15:50 <Zwaarddijk> how did they even come up with this number?
12:15:53 <Patashu> http://www.google.com.au/search?sourceid=chrome&ie=UTF-8&q=rapture+6+pm
12:15:58 <Lymia> The US should declare that the year in that country is now 0
12:16:14 <Patashu> it's a mathematical calculation based on multiplying three numbers that represent heaven, atonement and (something else I forget) then squaring them
12:16:18 <Zwaarddijk> I once knew a guy who nowadays thinks he's the reincarnated Jesus, and he's very convinced it'll happen
12:16:20 <Patashu> then adding them to when jesus died on the cross
12:16:24 <Patashu> and it ends up exactly on may 21st
12:16:27 <Zwaarddijk> (he's also performed cunnilingus on dogs, so ...)
12:16:33 <Lymia> Patashu.
12:16:55 <Lymia> The solution is for a country to declare that the year there is 0, and that time will be based on 4 hour days from then on.
12:17:15 <Patashu> And spoil numerologists' fun?
12:17:18 <Zwaarddijk> shouldn't Israel be destroyed ages back in that case?
12:17:36 <Patashu> The 2011 end times prediction made by Christian radio host Harold Camping states that the Rapture (in premillennial theology, the taking up into heaven of God's elect people) will take place on May 21, 2011[1][2] at 6 p.m. local time (the rapture will sweep the globe time zone by time zone)[3]
12:17:36 <Zwaarddijk> the Hebrew calendar is on the year 6000ish by now
12:17:41 <Patashu> so yeah it's 6 pm in each time zone
12:17:55 <oerjan> Zwaarddijk: it was. several times.
12:18:06 <Zwaarddijk> oerjan: yeah but not properly
12:18:13 <Zwaarddijk> it's back!
12:18:20 <Lymia> Patashu, besides.
12:18:24 <Lymia> What about the people in space or the moon?
12:18:25 -!- variable has quit (Quit: /dev/io failed).
12:18:32 <Patashu> Hasn't the calendar been adjusted multiple times since 0 AD anyway
12:18:35 <Zwaarddijk> Patashu: I wonder if Camping thinks time zones are god-given or that they are a natural universal or something
12:18:57 <Zwaarddijk> Patashu: loads of times, and sometimes independently in different countries
12:19:03 <Zwaarddijk> Sweden, for instance, has had a february 30th once.
12:19:21 <Lymia> So.
12:19:27 <Lymia> When do people on the moon get raptured?
12:19:27 <Patashu> Also doesn't relativity screw up the idea of the rapture starting everywhere at once -anyway-
12:19:45 <Lymia> Patashu, I'm quite sure not.
12:19:46 <oerjan> Lymia: there aren't anyone on the moon other than that nazi base anyway
12:19:53 <Lymia> Only frames of reference are skewed, right?
12:20:09 <Zwaarddijk> oerjan: but those are all righteous men, and therefore will be raptured
12:20:13 <Lymia> oerjan, I'm talking theoreticals.
12:20:15 <Patashu> People on the earth are in a different frame of reference from people on the earth but in a supersonic jet or people on the moon
12:20:22 <oerjan> Zwaarddijk: sounds reasonable.
12:20:26 <Patashu> That's enough to make it ambiguous
12:20:58 <Lymia> Ask him what exactly "6PM" is defined as.
12:21:06 <Lymia> Besides.
12:21:09 <Lymia> They are clearly wrong.
12:21:10 <Patashu> Let's make a rapture themed esolang
12:21:12 <Lymia> Japan has already been raptured.
12:21:21 <Lymia> </bad joke>
12:21:24 <oerjan> also relativity is rubbish, the earth is the center of the universe duh
12:21:24 <Patashu> You can make a prediction to schedule a thread to execute at a certain point in the future
12:21:37 <Lymia> Patashu.
12:21:37 <Lymia> Also.
12:21:40 <fizzie> So you can skip the rapturation part if you just wait until 5:30pm in your time zone, and then walk over the border to some place where it's already 6:30pm and it's gone past?
12:21:48 <Lymia> Japan has already been raptured! How does that work out?
12:21:54 <Patashu> Have they?
12:21:58 <Lymia> (due to the tentacle pron, nobody was saved)
12:22:02 <Patashu> It's not like japan had the first 9.0 earthquake
12:22:03 <Zwaarddijk> Patashu: shouldn't it be a lang that doesn't do what the source code tells it to at the point in the future, but presents an elaborate theological excuse why it didn't
12:22:11 <Patashu> Zwaarddijk that's what I was thinking
12:22:14 <Zwaarddijk> Lymia: not very many christians there anyway
12:22:16 <Patashu> So it never actually runs anything
12:22:21 <Lymia> Patashu.
12:22:23 <Patashu> It just acts as thouigh it's going to
12:22:39 <Lymia> Have it have a "savior" clause that is the conditional to start the thread.
12:23:17 <Lymia> ..
12:23:26 <Patashu> prime_sieve() failed to start because Jesus heard our sincere prayers and spared our CPU from its great burden.
12:23:32 <Patashu> Praise to the Lord!
12:24:16 <fizzie> "Insufficient faith, please pray again later."
12:24:56 <oerjan> out of faith error
12:25:02 <Patashu> Certain variables will be set as 'christian'. When the rapture starts they will be taken into heaven (stdout) and print out their contents
12:25:15 <Patashu> Sinners, however, stay on this earth and are static
12:25:53 <oerjan> until the great garbage collection, anyway
12:26:13 <Patashu> Sinners are corrupt, and so will randomly hold the wrong value to spite you
12:26:36 <Patashu> When Jesus finally comes the program exits otherwise it will run forever
12:26:51 <Patashu> If no prediction ever comes true this is fated to happen
12:28:50 <Patashu> You are only permitted to set String variables to contain verses of the bible. The KJB of course, the true English bible
12:29:10 <Patashu> Now internationalization is impossible, as it should be
12:29:37 <Lymia> http://pastebin.com/5kpZ9Z6n
12:29:53 <Patashu> Failure to set a String variable correctly throws a FalseTeachingException
12:29:55 <Lymia> Here is my proposal for the basic idea of said programming language.
12:30:16 <fizzie> And you probably get an alignment error if you try to read a blessed variable from a sinful context.
12:30:22 <Patashu> Hah
12:30:27 <Lymia> predictions and saviors are the only flow control systems.
12:30:47 <Lymia> fizzie, question is.
12:30:53 <Lymia> How do you define those contexts?
12:31:49 <Patashu> I like the manmade/godgiven idea
12:32:28 <Patashu> The best thing about rapture mania btw is the USA centricism of it
12:33:01 <fizzie> It could just be an inherited thread-local property, with the possibility of invoking some special script(ure)s to change it under suitable conditions.
12:33:22 <Patashu> LOL scriptures
12:33:35 <Patashu> Instead of packages, testaments?
12:33:54 <Lymia> Hmm...
12:33:57 <Lymia> Patashu.
12:34:04 <Lymia> How much of a nightmare can you make a programming language like this?
12:34:34 <Lymia> I propose that the only way to control code flow is to create new threads with a delay, and be able to stop delayed threads from executing.
12:34:45 <Patashu> And you can only schedule them in real time
12:35:02 <fizzie> Regarding the The Brick Testament page that was linked-to earlier on-channel, I had the tab left open, and misread one title as "Jacob's Wireless God". That sounded rather interesting. (In reality it was either the "Jacob's Wives Compete" or "Jacob Wrestles God" one.)
12:35:07 <Patashu> But you can waitfor(therapture) and do nothing until it executes
12:35:27 <fizzie> waitfor(therapture) sounds vaguely ~ATHish.
12:35:49 <Lymia> Hmm.
12:36:03 <Lymia> In each module, a variable is either christian, neutral, or sinful.
12:36:19 <Lymia> When a rapture command is used, all christian variables are printed in the order they are defined in the source file, with a new line between each.
12:36:44 <oerjan> i am sorry but i am sure neutral variables are against christian dogma
12:36:58 <Lymia> I.. guess so.
12:37:10 <Lymia> Anyways.
12:37:30 <Patashu> he's right
12:37:33 <Patashu> you're of god or you're not
12:37:37 <Lymia> There is a command sin([some point-to-variable mechanism]) and a command atone([same])
12:37:43 <Lymia> These do the obvious.
12:37:56 <Lymia> Only variables accessable in the current scope are printed.
12:38:13 <Patashu> btw here's why may 21st: http://www.salon.com/news/feature/2011/05/10/rapture_may_21/index.html click the 'continue reading' link on the first story, 'Why the world might end next Saturday'
12:38:27 <Lymia> Patashu, is there any way to make it so that concurrency isn't just required, but required, and required to be messy?
12:38:58 <Patashu> By restricting how you can access variables?
12:39:04 <Patashu> What if you could only access them from a different thread
12:39:04 <Patashu> or something
12:39:11 <Lymia> Dunno.
12:39:13 <Lymia> fizzie, I think I figured it out.
12:39:34 <Lymia> godgiven variables are mutable.
12:39:39 <Lymia> However, if it's modified, the current context becomes sinful
12:40:03 <Lymia> How can this be made to be annoying?
12:40:35 <Patashu> There needs to be an incredibly detailed and functional Bible object in the main library
12:41:07 <Lymia> Should the language be functional, procedural, or what?
12:42:14 <Lymia> Hmm...
12:42:24 <Lymia> Lisp is clearly the purest language conceivable
12:42:26 <Lymia> Let's base it on that.
12:46:09 <Zwaarddijk> Patashu: the bible object must be ignoreable, and very very flexible
12:46:22 <Patashu> When you start a thread going by making a prediction, how does it communicate with other threads and/or return results?
12:46:27 <Patashu> What channels are available
12:46:33 <Patashu> Or is it part of the global scope
12:46:58 <Lymia> Patashu, it communicates via global variables.
12:46:59 <Lymia> Period.
12:47:06 <Patashu> That makes sense
12:47:15 <Patashu> After all, local scopes are moral relativism
12:47:19 <Patashu> Which the bible clearly forbids
12:48:01 <Zwaarddijk> but
12:48:04 <Patashu> If there's object orientation, there's no polymorphism because evolution is impossible (the bible guarantees it)
12:48:11 <Zwaarddijk> if you're going for rapture, you need dispensationalism
12:48:15 <Zwaarddijk> which is a kind of moral relativism
12:48:19 <Lymia> Can local variables be accessed by nested predictions?
12:48:24 <Zwaarddijk> viz. God makes different ethical demands at different times
12:48:35 <Patashu> Ssssshhhhhh
12:48:51 <Lymia> Patashu, use a sinful/pure mechanism.
12:48:58 <Lymia> Anything with a local context is "sinful"
12:49:03 <Lymia> Anything without one is "pure"
12:49:09 <Lymia> Most commands can only be used by pure threads.
12:49:17 <Patashu> Hah
12:49:42 <Patashu> If you want to, you can write this up or start a wikipage on it or whatever
12:49:48 <Patashu> I don't see myself getting around to it if it's up to me
12:49:51 <Zwaarddijk> why would a pure thread use most commands?
12:50:00 <Patashu> Because sinners have fallen from the grace of God
12:50:07 <Zwaarddijk> most commands are sinful in some way!
12:50:10 <Lymia> Implementing it is going to be NP-annoying
12:50:14 <Zwaarddijk> and hence thingss only sinners would want using
12:50:24 <Lymia> Anything in the math library?
12:50:25 <Patashu> Programming can be a Godly experience
12:50:38 <Lymia> Patashu, heh.
12:50:40 <Patashu> But we need math to figure out our rapture predictions
12:50:41 <Patashu> Well
12:50:42 <Patashu> Elementary math
12:50:46 <Patashu> And pow()
12:50:49 <Lymia> Make it annoying as possible, and make that the tag line?
12:50:54 <Lymia> Let's add a graphics library.
12:50:56 <Lymia> What about OpenGL?
12:51:03 <Lymia> Patashu, but.
12:51:12 <Patashu> Well, it doesn't have to be annoying, just thematic and different in some way
12:51:15 <Patashu> Annoying is just a bonus
12:51:33 <Lymia> Elementry math with pow means you can use this: http://www.xamuel.com/formula.php
12:51:48 <Lymia> You have flow control which can build a sum command.
12:52:01 <Patashu> ARGH
12:52:09 <Patashu> Begone, vile high level math
12:52:11 <Patashu> Also
12:52:21 <Patashu> If there's OpenGL support we need a WireCross() and SolidCross() function
12:52:37 <Lymia> :3
12:54:05 <Lymia> What about input
12:54:58 <Patashu> Logos
12:55:04 <Patashu> God spoke the command line arguments into existence
12:55:14 <Patashu> And they were good (assuming no malformed input)
12:56:01 <Zwaarddijk> Patashu: I think base-22 would be good, btw, since hebrew has 22 letters
12:56:17 <Patashu> Hebrew?
12:56:23 <Patashu> When was the last time a rapture monger read any hebrew
12:56:26 <Patashu> Otherwise I'd agree
12:56:45 <Patashu> (base-26, the KJB has 26 letters)
12:57:24 <Patashu> I wonder if we can work in begetting somehow. <Factory> beget <Object> beget <Attribute>
12:57:30 <Patashu> maybe method chaining?
12:58:11 <Lymia> beget [object name] = constructor call?
13:00:08 <Zwaarddijk> Patashu: the rapture-guys tend to have a weird thing for jews, really.
13:00:16 <Patashu> yeah, but they don't read the stuff
13:00:24 <Patashu> they only care about jews so long as they bring about the end of the world
13:00:27 <Zwaarddijk> obviously not.
13:00:34 <Zwaarddijk> yes.
13:00:45 <Patashu> israel has to rebuild the great temple, I think
13:00:47 <Patashu> something like that
13:00:51 <Patashu> or maybe they need to be attacked?
13:00:55 <Zwaarddijk> but the jews also will be there after the rapture, and many of them think a third of them will be god's foot soldiers
13:00:59 <Lymia> How about we switch to lisp synax?
13:01:01 <Lymia> syntax*
13:01:04 <Patashu> do we want to make a wikipage for this? what's our language called again?
13:01:13 <Lymia> Patashu, let's work out the basics first.
13:01:31 <Lymia> Should we have a call/cc-style command?
13:01:35 <Patashu> I just want to make sure the idea is down somewhere
13:01:42 <Patashu> I really don't know what's most appropriate beyond that
13:02:22 <Lymia> Patashu, go ahead and make a page for it.
13:02:27 <Lymia> Put it under language ideas.
13:03:04 <Patashu> Need a name then
13:03:09 <Patashu> Rapture?
13:03:35 <Lymia> mmm.
13:03:41 <Lymia> Not Rapture related enough, but I guess.
13:03:51 <Patashu> How can you be more Rapture related than Rapture
13:03:52 <Patashu> I don't think I follow
13:03:55 <Lymia> Do we make it usable and annoying, or useless and buggy.
13:04:00 <Lymia> useless and annoying*
13:04:09 <Lymia> Or neither.
13:05:58 <Lymia> Patashu, I still suggest we use a lisp derived syntax.
13:08:44 <Patashu> I don't have any strong opinion on what the syntax is
13:08:47 <Patashu> Started the page http://esoteric.voxelperfect.net/wiki/Rapture
13:09:47 <Patashu> I do appreciate all the thought you're putting into it, but you probably have a better idea of how the language should look than I do at this point
13:10:14 <Lymia> Patashu, limit some critical functions to pure threads, and some critical functions to unpure threads.
13:10:22 <Lymia> You can force threading to be used then.
13:14:41 -!- BeholdMyGlory has joined.
13:18:27 <Sgeo__> Next act I guess, but I want to rewatch that
13:31:46 -!- Guest52131 has changed nick to Gregor.
13:33:04 -!- copumpkin has joined.
13:36:29 <Patashu> http://esoteric.voxelperfect.net/wiki/Rapture
13:36:37 <Patashu> feel free to add on
13:46:01 -!- Phantom_Hoover has joined.
13:56:37 <Sgeo__> Phantom_Hoover, remind me to rereat Intermission at a later time
13:56:45 <Sgeo__> I'm not quite following it
13:56:58 <Phantom_Hoover> You mean with all the time shenanigans?
13:56:59 <lambdabot> Phantom_Hoover: You have 5 new messages. '/msg lambdabot @messages' to read them.
13:57:01 <Sgeo__> Yes
13:57:16 <Phantom_Hoover> Oh god it's not even like there was a big update or anything what can he have to say.
13:59:11 <Phantom_Hoover> Don't skip it, though, it becomes plot-relevant.
14:10:24 <Sgeo__> Not skipping anything
14:10:41 <Sgeo__> Except those stupid comics by Dave (I'm clicking them, but barely reading)
14:22:33 -!- Sgeo_ has joined.
14:23:17 -!- Sgeo__ has quit (Ping timeout: 246 seconds).
14:23:19 <Phantom_Hoover> When elliott reads this he is going to tear you a new one.
14:24:01 <Phantom_Hoover> SBaHJ is the best thing ever and you should be ashamed for not liking it.
14:31:26 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
14:31:44 <Patashu> I think that's a little strong
14:32:16 -!- oerjan has quit (Quit: Later).
14:33:02 <Phantom_Hoover> Patashu, have you ever read SBaHJ.
14:34:53 <Patashu> yes
14:35:02 <Phantom_Hoover> THEN HOW CAN YOU DISAGREE
14:35:18 <Patashu> You're just being silly
14:35:39 <Phantom_Hoover> NO I'M NOT
14:43:05 -!- Vorpal has joined.
14:49:54 -!- Phantom_Hoover has quit (Ping timeout: 246 seconds).
14:53:14 <fizzie> Phantom_Hoover (even though you are gone): That was incredibly silly!
14:53:52 <Sgeo_> He left just as I PMed him some trivial junk
14:59:28 -!- copumpkin has joined.
15:00:00 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 .).
15:02:48 -!- olsner_ has quit (Quit: olsner_).
15:03:15 -!- Phantom_Hoover has joined.
15:03:24 <Phantom_Hoover> "£$"£$%ing connection.
15:05:30 -!- FireFly has joined.
15:09:44 -!- TOGoS has joined.
15:11:07 <Phantom_Hoover> `quote
15:11:10 <HackEgo> ​84) <Warrigal> What do you call the husband of my first cousin once removed? <apollo> Warrigal: "Hey, Sexy."
15:18:36 -!- pumpkin has joined.
15:19:21 -!- copumpkin has quit (Ping timeout: 250 seconds).
16:17:21 -!- ais523 has joined.
16:18:26 -!- ais523 has changed nick to ais523_.
16:18:33 -!- ais523_ has changed nick to ais523.
16:25:11 <Phantom_Hoover> http://www.reddit.com/r/wikipedia/comments/d3kvs/interestingly_137_is_also_the_atomic_number_of/
16:25:25 <Phantom_Hoover> You know I think that might not be a coincidence.
16:40:19 <Lymia> It's called that on purpose it seems
16:40:48 <Phantom_Hoover> It's a consequence of the calculations predicting the properties of trans-Feynmanium elements.
16:41:16 -!- cheater79 has quit (Ping timeout: 240 seconds).
16:41:19 <Phantom_Hoover> i.e. the velocity of the 1s electron is given by v=Z\alpha c.
16:42:03 <Phantom_Hoover> So if Z>1/\alpha, v > c, so the Bohr model breaks down.
16:42:35 <Lymia> 205.172.19.193
16:42:47 <Lymia> Can somebody set an IRC bot to notify this channel if that IP goes down?
16:44:27 <Phantom_Hoover> None of the channel bots allow programs indefinite execution time.
16:45:13 -!- elliott has joined.
16:45:34 <elliott> i reinforced a ceiling today
16:45:35 <ais523> it'd need to be a different bot
16:46:19 <elliott> wat
16:47:11 <ais523> elliott: Lymia wanted a bot set up to notify the channel if particular IPs went down
16:47:20 <ais523> and Phantom_Hoover said that none of the existing bots would do that on their current codebases, more or less
16:47:43 -!- monqy has joined.
16:47:44 <ais523> anyway, theory: the rapture will actually happen tomorrow, but there'll be sufficiently few perfectly devout Christians that nobody else will notice
16:48:09 <elliott> why would we want a bot like that?
16:48:13 <elliott> that just sounds spammy
16:48:15 <Phantom_Hoover> We don't.
16:48:16 <Lymia> For fun.
16:48:17 <Phantom_Hoover> Lymia does.
16:48:25 <Lymia> You know that whole rapture story?
16:48:25 <elliott> Lymia: i find your definition of fun wanting?
16:48:38 <Lymia> They say it will spread across the time zones, right?
16:48:42 <elliott> yeah
16:48:52 <elliott> ais523: well, the Bible almost certainly has contradictory commandments, so the chances of anyone following them all is 0 even if there are people that devout
16:48:53 <Lymia> Let's set up a bot to ping a server on Hawaii 10 or so minutes after that time.
16:49:04 <elliott> ais523: but I don't think you have to be free from sin to get rapture'd
16:49:12 <Lymia> Then returns a result of "oh crap" or "No rapture here, time to laugh."
16:49:23 <Phantom_Hoover> Clearly God is in a synchronous orbit with Earth.
16:49:26 <elliott> Lymia: we could just check the news to see "MAJORITY OF NEW ZEALAND DISAPPEARS" or something
16:49:30 <elliott> pretty sure the people left there would notice
16:49:36 <Phantom_Hoover> And needs to wait for people to rotate into range of his disappearifier.
16:49:39 <ais523> Lymia: oh, the issue is that the Bible didn't specify a timezone?
16:49:50 <Lymia> ais523, Family News does.
16:49:53 <ais523> and so we're not sure exactly when in the day it'll happen?
16:49:54 <Lymia> So we can laugh early.
16:49:58 <elliott> ais523: I think it's something like it just /happens/ to follow the timezone
16:50:09 <elliott> ais523: but they've said it will definitely start in New Zealand or Australia or thereabouts, IIRC
16:50:15 <Phantom_Hoover> Sorry what about my space station theory.
16:50:16 <elliott> which is a nice early warning system
16:50:20 <elliott> Phantom_Hoover: yes it's good.
16:50:25 <Phantom_Hoover> Lymia, wait, why would a server go down/
16:50:36 <Phantom_Hoover> It's not exactly going to get raptured.
16:50:38 <elliott> X-D
16:50:41 <elliott> Devout server
16:50:49 <Lymia> Apparently there's supposed to be earthquakes, right?
16:51:04 <Phantom_Hoover> I think that comes afterwards.
16:51:07 <elliott> well earthquakes aren't enough to bring a server down
16:51:09 <elliott> but hey
16:51:10 <elliott> get this
16:51:16 <elliott> we get temporary peace from the Devil after all this
16:51:19 <elliott> no more war
16:51:22 <Lymia> :3
16:51:27 <elliott> satan is obviously very caring
16:52:43 <Phantom_Hoover> Obviously!
16:52:48 <elliott> Vorpal: btw, variant builds will be in the next tup release if all goes well
16:52:58 <ais523> elliott: are you a tup fan?
16:53:03 <Phantom_Hoover> Why else would he want us going around drinking, smoking, gambling and having sex?
16:53:17 <Phantom_Hoover> While God tells us not to do anything interesting.
16:53:20 <elliott> ais523: I like it a lot and subscribe to the list, so yeah, I guess so?
16:53:26 <Phantom_Hoover> I mean come on, *shellfish*?
16:53:29 <Phantom_Hoover> They're delicious!
16:53:39 <ais523> Phantom_Hoover: I don't eat fish at all
16:53:44 <Phantom_Hoover> elliott, also: WA crashes when I try to play it single-player.
16:53:54 <elliott> Phantom_Hoover: Yeah, well... WA single player is terminally boring.
16:53:54 <Phantom_Hoover> ais523, that's OK, shellfish aren't actually fish.
16:54:03 <elliott> ais523: I mean, I'd be prepared to drop my loyalties if someone showed me a better build system. :p
16:54:08 <elliott> But I've used an awful lot of them and tup is the best.
16:55:14 <elliott> 05:07:55: <oklofok> monqy: i have this feeling christianity is just a big joke, we're just not in on it
16:55:14 <elliott> 05:08:14: <oklofok> "oh you were being SARCASTIC! sorry us atheists are kind of slow sometimes."
16:55:18 <elliott> 05:09:02: <oklofok> my theory: that's what "rapture" actually means, they just chicken out every time.
16:55:19 <elliott> 05:09:19: <oklofok> erm
16:55:19 <elliott> 05:09:25: <oklofok> i mean it means they tell us
16:55:19 <elliott> :D
16:55:40 <elliott> so when they say "Sorry, the rapture is ACTUALLY on ...", they're not lying
16:57:22 <elliott> ais523: hey do you want to name a function for me
16:57:33 <ais523> elliott: with no other details?
16:58:02 <ais523> or do you want something that's vaguely descriptive of what it actually does?
16:58:19 <elliott> ??? :: (Monad m) => Maybe a -> MaybeT m a
16:58:20 <elliott> ??? = MaybeT . return
16:58:21 <Deewiant> elliott: Re. IMAP: Mycology has a readme, you know. :-P But yes, it does.
16:58:31 <elliott> Deewiant: Yeah, I checked it right after asking :P
16:58:45 <elliott> Working on Shiro again, since I figured out a pretty nice way to stop the leaning indentatino.
16:58:48 <elliott> [asterisk]indentation.
16:59:00 <elliott> Deewiant: BTW IMAP's spec has to be the absolute worst RC spec of them all.
16:59:01 <Deewiant> What's that?
16:59:09 <elliott> O(n -- )Return instruction n to its old function
16:59:09 <elliott> Clarification
16:59:09 <elliott> * This extension is intended to map instructions in the 0-255 range. Other interpreters may have a more limited or more expanded range
16:59:09 <elliott> * Attempting to map instructions outside of the 0-255 range reflect. Some interpreters may ignore an out of range map without reflecting
16:59:09 <elliott> * Chained remaps are not supported by this extension. Only a single level of mapping is supported. Other interpreters may have implemented chained remaps
16:59:13 <elliott> It's like the /opposite/ of clarification.
16:59:17 <Deewiant> I meant, the indentation.
16:59:20 <elliott> I know.
16:59:23 <Deewiant> Er, I meant, the way to stop it.
16:59:35 <elliott> Deewiant: MaybeT + parameterising everything on a typeclass
16:59:37 <elliott> class (Functor m, Applicative m, MonadState FungeState m, MonadIO m) => MonadShiro m where
16:59:37 <elliott> liftShiro :: Shiro a -> m a
16:59:50 <Deewiant> heh
16:59:57 <elliott> Which is less painful than it sounded at first because the only functions I /use/ are the state ones and liftIO, and those are already typeclassed
17:00:18 <elliott> Deewiant: So right now the only hold-up is naming that function that I just pasted :-P
17:00:30 <Deewiant> Other than the "may ignore an out of range map" I think that's fine
17:00:43 <elliott> Yeah, but it's not clarification of the spec :P
17:01:08 <Deewiant> It's better than when none of that was there :-P
17:01:35 <elliott> 05:19:26: <oklofok> what?!? http://www.bricktestament.com/judges/samson_commits_mass_murder/jg14_01.html
17:01:37 <elliott> is this actually real :D
17:01:59 <elliott> gotta love god making you travel to kill thirty people just because some guys solved your shitty riddle
17:03:47 <elliott> ais523: unfortunately the function fits none of the obvious patterns :(
17:03:51 <elliott> it's not liftMaybe, it's not maybeT
17:05:26 <elliott> hmm oh dear
17:05:31 <elliott> i might wake up just before the rapture tomorrow
17:06:10 <elliott> so wait
17:06:15 <elliott> does the rapture respect daylight savings
17:06:57 <Phantom_Hoover> I think so
17:07:04 <elliott> awesome
17:07:04 <Lymia> So.
17:07:11 <elliott> we just need a mega daylight savings bill passed QUICKLY
17:07:30 <monqy> im just going to sleep all day then party it up
17:07:36 <Lymia> What happens if the government declares the date to be 5/21/0 and that time will be based on a 4 hour clock from then on.
17:08:03 <Lymia> Or heck, uses hextime, to which no concept of 6:00PM can exist.
17:08:03 <elliott> Lymia: god will smite us all for being tricky
17:08:40 <monqy> whats PM
17:08:52 <elliott> anyway the rapture is no biggie
17:08:54 <elliott> if it happens
17:09:02 <elliott> convert to christianity, believing won't be particularly difficult at that point
17:09:06 <elliott> wait until you die
17:09:08 <elliott> problem solved
17:09:20 <monqy> escape to outers pace
17:10:04 <Lymia> elliott, believing tends to not be very difficult when there's near unambiguous evidence of something...
17:10:10 <monqy> world end only affects earth and a few unfortunate stars right
17:10:31 <Lymia> We need to fly to the moon.
17:10:43 <Lymia> elliott, I wonder.
17:10:43 <elliott> monqy: poor ISS Christians
17:11:01 <Lymia> What happens to Christianity's ideas when ET is confirmed?
17:11:23 <TOGoS> They'd probably demand ET's birth certificate
17:12:36 <Lymia> Extraterritorial life, dummy.
17:12:47 <monqy> all of their birth certificates
17:12:50 <monqy> all of them
17:12:59 <TOGoS> Extratorrential life
17:13:24 <TOGoS> even the microbes
17:14:52 <Lymia> Extraterrestrial*
17:14:56 <Lymia> opps
17:15:01 <TOGoS> opopos
17:17:04 <pikhq> Lymia: Catholic church doctrine is that Jesus died for their sins, too.
17:17:54 <elliott> alien sins :D
17:18:23 <TOGoS> Do they have to follow the same commandments?
17:22:19 <Sgeo_> elliott, I'm up to the first recap
17:22:30 <elliott> Sgeo_: Don't skip it.
17:44:04 <pikhq> Mmm, coffee.
17:46:50 -!- olsner_ has joined.
17:47:37 -!- azaq23 has joined.
17:49:24 <pikhq> elliott: I wonder: is there *any* way that tup could actually be made reasonably portable?
17:49:38 <pikhq> ("reasonably portable" here meaning "using a commonly supported subset of POSIX")
17:49:48 <elliott> Well, the monitor isn't required.
17:50:07 <pikhq> Yeah, but it still needs to hook into programs to get dependency information.
17:50:24 <elliott> Well... then no.
17:50:41 <pikhq> LD_PRELOAD is at least *more* portable, but not going to work in the face of static linking.
17:50:56 <pikhq> Not to mention that it needs at least *some* manual labor to get to work on new libcs.
17:52:09 <ais523> what's tup doing that's nonportable?
17:52:42 <pikhq> ais523: LD_PRELOAD or FUSE.
17:53:20 <pikhq> ais523: It needs information about which tup rules accessed which files to generate a complete dependency tree.
17:54:42 <ais523> oh, I see, you don't enter the dependencies by hand, but instead it calculates them based on actual open commands?
17:54:58 <pikhq> Yes.
17:55:07 <pikhq> So that it has the *complete* dependency tree.
17:55:26 <pikhq> One of its major design ideas is to make it nigh-impossible for you to have an inconsistent build.
17:57:08 <pikhq> Also, logarithmic time rebuilds.
17:59:30 <elliott> ais523: better summary: the arrows go up, so it's faster
18:00:50 <pikhq> http://gittup.org/tup/make_vs_tup-nothing.png Better summary.
18:01:54 <ais523> most projects aren't that large anyway
18:03:07 <elliott> ais523: tell that to KDE
18:03:24 <pikhq> ais523: That's non non-recursive make.
18:03:26 <elliott> anyway, the killer feature for tup is the rebuilder, imo
18:03:29 <pikhq> i.e. the best case scenario.
18:03:41 <elliott> you can set it up so that it automatically rebuilds things whenever you change a file
18:03:44 <pikhq> If you add recursive make into the scenario it gets fucking horrifying.
18:03:44 <ais523> elliott: pointing out something that isn't in a set is not a counterexample for most things being in that set
18:03:58 <elliott> so you can switch from your editor to your terminal and see what you fucked up already :)
18:04:08 <elliott> the logarithmic-time thing is only relevant from medium sized projects up
18:04:13 <ais523> also, I'd probably turn the rebuilder off, it could lead to inconsistent builds really easily due to changing one file and not another
18:04:20 <elliott> ...what?
18:04:25 <pikhq> How could it?
18:04:27 <elliott> ok well for a start, the rebuilder is something you run explicitly
18:04:28 <ais523> I mean, if I change what a function means in one file
18:04:36 <elliott> I don't think you understand
18:04:37 <ais523> but not all calls to it in another
18:04:42 <ais523> then the resulting binary will be really messed up
18:04:46 <elliott> erm, and?
18:04:48 <pikhq> Okay, then it'll be inconcistent until such time as you fix those calls.
18:04:52 <elliott> you wouldn't switch to your terminal then to test it
18:04:54 <elliott> so it doesn't matter
18:04:55 <ais523> and if something happens to use it before I can fix those calls, then the program might do anything
18:04:58 <elliott> since you'd fix the calls first
18:04:59 <elliott> ais523: what??
18:05:03 <elliott> auto build does not equal auto run ...
18:05:09 <ais523> elliott: but someone else might run it
18:05:16 <elliott> from your /private source tree/?
18:05:17 <pikhq> Do people regularly run things out of your development tree?
18:05:29 <elliott> i think i've found your problem and it's not the build system
18:05:38 <Deewiant> elliott: I might switch to my terminal to test the previous version, only to find that the executable doesn't exist because it tried to get rebuilt but the build failed
18:05:40 <ais523> pikhq: I run things out of my dev tree sometimes
18:05:49 <elliott> ais523: you said someone else
18:05:52 <ais523> imagine that the project's self-hosted
18:06:01 <ais523> elliott: it's happened with source trees I've maintained
18:06:03 <ais523> not on my computer
18:06:26 <ais523> I supply updates to a program, they're compiled and the executables are updated, and the executable might be run by a third party at any time in between
18:06:41 <elliott> If "make install" isn't a separate step, then your process is fucked, no question about it
18:06:49 <elliott> Deewiant: I don't think tup removes old files on a failed build
18:06:50 <pikhq> ais523: I think I've found your problem and it's not the build system.
18:06:56 <elliott> pikhq: line thief
18:07:05 <Deewiant> elliott: If it builds into a tmp directory of some kind, then it works, of course
18:07:07 <pikhq> elliott: Repeated for truth.
18:07:19 <ais523> and aren't most build systems designed to work without an install step?
18:07:26 <Deewiant> elliott: I was thinking along the lines of 'gcc -o foo foo.c' failing and leaving foo an empty file
18:07:36 <pikhq> ais523: Uh? *What crazy shit automatically installs*?
18:07:36 <elliott> ais523: the problem is not that, the problem is that people are running out of your unstable, volatile development tree
18:07:45 <ais523> I'd used to run C-INTERCAL from my home dir more often than installed location before I made habitual installation tests
18:07:51 <elliott> yes, /you/
18:07:55 <ais523> pikhq: I'm saying, that installing is not a separate step nowadays
18:08:01 <elliott> stop being dishonest by using irrelevant arguments like that
18:08:05 <ais523> until you make a final version of the program
18:10:00 <elliott> show me an example of someone who isn't you regularly running an in-development program to do actual things straight out of your unstable, volatile development source tree, and I'll show you a completely broken process
18:10:18 <pikhq> Why the hell would you run something out of your build tree other than to test changes you just made?
18:10:33 <pikhq> We've got version control systems people, use them.
18:10:38 <Deewiant> My ccbi install is a symlink to my build tree
18:11:02 <pikhq> Deewiant: You are either confident you will not make changes that break shit, or mad.
18:11:34 <elliott> i disagree with pikhq in the general case btw, i run mcmap from the build tree
18:11:36 <elliott> but what i said still stands
18:11:44 <Deewiant> I'm confident that I won't run ccbi in such a case that it'd matter
18:12:09 -!- olsner_ has quit (Quit: olsner_).
18:12:59 <elliott> Deewiant: right, but you wouldn't tell other people to run ccbi out of /home/deewiant/src/ccbi/ccbi on a shared server :-)
18:13:24 <Deewiant> No, I wouldn't :-P
18:13:41 <pikhq> Anyways, it is so friggin' nice to just make changes and immediately see the build error.
18:15:14 <pikhq> Probably the only downside of tup vs. make is that make works literally everywhere.
18:18:18 <pikhq> Though tup at least covers Windows/Linux/OS X just fine.
18:19:42 <elliott> Deewiant hates Funge and wants it to die (this is because he hates Shiro (this is because he hasn't named that function yet))
18:19:47 <elliott> you're all guilty
18:19:58 <ais523> elliott: what does the function actually /do/?
18:20:09 <elliott> ??? :: (Monad m) => Maybe a -> MaybeT m a
18:20:09 <elliott> ??? = MaybeT . return
18:20:17 <ais523> also, statistically speaking, you always reject my advice on naming things
18:20:30 <elliott> good thing i asked Deewiant then >:)
18:20:43 <ais523> hmm, now I have to figure out exactly what that's doing, given that I'm not too experienced with monad transformers
18:21:04 <pikhq> ais523: Just layering the functionality of a monad onto another monad.
18:21:14 <elliott> not
18:21:14 <ais523> it's like an inside-out monad transformer
18:21:24 <elliott> ais523: it's a function, so it's not a monad transformer at all
18:21:35 <ais523> as in, instead of becoming mT Maybe a, we're getting MaybeT m a
18:21:37 <pikhq> elliott: I was describing monad transformers.
18:21:43 <ais523> elliott: I mean, it's like an inside-out lift
18:21:50 <elliott> ais523: not really, no
18:22:04 <elliott> lift :: M a -> MaybeT M a
18:22:07 <elliott> ??? :: Maybe a -> MaybeT m a
18:22:13 <elliott> (taken from kmc in hash-haskell)
18:22:18 <pikhq> elliott: toMaybeT?
18:22:23 <elliott> pikhq: ugly :(
18:22:27 <elliott> it's a common operation
18:22:34 <pikhq> It reads like a cast from Maybe to MaybeT m a, so...
18:22:42 <ais523> it's like a flipped lift
18:22:49 <ais523> it's a lift, but with the monads the other way round
18:23:01 <Deewiant> If you'd generalize it, toT
18:23:19 <pikhq> Deewiant: Impossible to generalise without a typeclass.
18:23:26 <Deewiant> I know
18:23:26 <elliott> Deewiant: What is it again? maybe mzero return?
18:23:29 <elliott> Or was it maybe mzero mplus
18:23:41 <Deewiant> What is what
18:23:45 <elliott> The generalised version
18:24:06 <ais523> elliott: there's actually probably a category theory name for doing that
18:24:10 <elliott> Ah, maybe mzero retur
18:24:12 <elliott> Ah, maybe mzero return
18:24:12 <Deewiant> ?ty maybe mzero return
18:24:13 <lambdabot> forall (m :: * -> *) a. (MonadPlus m) => Maybe a -> m a
18:24:28 <ais523> what does lowercase-m maybe do?
18:24:30 <elliott> I think it's actually the same as (maybe (fail "") return) too, but let's pretend fail doesn't exist :-)
18:24:31 <ais523> :t maybe
18:24:32 <lambdabot> forall b a. b -> (a -> b) -> Maybe a -> b
18:24:46 <elliott> ais523: it's the catamorphism :-P
18:24:52 <elliott> morphacatism
18:25:34 <ais523> oh, is it that maybe x f Nothing = x, maybe x f (Just y) = f y?
18:25:53 <pikhq> Yeah.
18:26:40 <elliott> hey, rapture is in two hours for australias
18:26:41 <elliott> australians
18:26:53 <Phantom_Hoover> Hello everybody.
18:26:57 <elliott> ooh, wait, "Kingston5:56NFT"
18:27:03 <elliott> four minutes until the somewhere-in-Australia rapture
18:27:06 <Phantom_Hoover> Maybe we should ask DMM.
18:27:10 <elliott> oh, it's already happening in New Zealand
18:27:17 <elliott> RIP New Zealand
18:27:35 <Phantom_Hoover> Also: if it's real, which denomination do I convert to?
18:28:05 <elliott> Phantom_Hoover: whichever one the doomsday prophets are doin'.
18:28:17 <elliott> Apparently they think the world is over thirteen thousand years old, so that's a bit better than six thousand.
18:28:21 <Phantom_Hoover> I'm already a baptised Catholic (my parents were idiots), so that would be the easiest route, but they're clearly not Catholic, so it mightn't come out too well.
18:28:25 <elliott> "We just elected an Atheist PM, so we're all still here..." --suspected Australian
18:33:01 <pikhq> elliott: According to Family Radio, it will occur on 2011-05-21T18:00, local time.
18:33:11 <elliott> pikhq: Yep. Already after that in New Zealand.
18:33:14 <elliott> RIP.
18:33:21 <pikhq> Oh? Hmm.
18:33:55 <pikhq> Oh, they're UTC+13 right now.
18:34:16 <Lymia> UTC+13?
18:34:18 <Lymia> That exists?
18:34:24 <Lymia> I thought it was -12 to +12
18:34:31 <elliott> They break the rules.
18:34:38 <pikhq> Uh. No, it's not T18:00 or past it in New Zealand.
18:34:49 <elliott> http://www.google.com/search?client=ubuntu&channel=fs&q=time+in+new+zealand&ie=utf-8&oe=utf-8
18:34:50 <elliott> Yes it is.
18:34:52 <elliott> 6:35 Saturday (NZST) - Time in Wellington, New Zealand
18:34:55 <elliott> Oh wait.
18:34:56 <elliott> Is that in the morning.
18:35:02 <pikhq> Yeees.
18:35:25 <elliott> OK wait, where is it past six pm.
18:35:49 <pikhq> It not yet past 2011-05-21T18:00 anywhere.
18:35:56 <elliott> Shiet.
18:36:10 <pikhq> Lymia: It's -12 to +14, actually.
18:36:35 <elliott> pikhq: I'm going with toMaybeT for now, but I think I'll change it later.
18:36:53 <elliott> ioMaybe :: IO a -> MaybeT Shiro a
18:36:53 <elliott> ioMaybe m =
18:36:53 <elliott> toMaybeT =<<
18:36:53 <elliott> liftShiro ((Just <$> io m) `catchShiro` \(e::IOException) -> return Nothing)
18:36:55 <elliott> Behold the ugly.
18:37:26 <pikhq> Lymia: Kiribati uses UTC+13 and UTC+14 for civil time.
18:37:51 <Lymia> Ah.
18:38:09 <pikhq> Sorry, UTC+12 through UTC+14.
18:38:18 <pikhq> They used to have the date line going through the middle of the country.
18:39:40 <pikhq> UTC+14 is just south of Hawaii... Which is UTC-10.
18:39:46 <pikhq> That's quite a difference in civil time.
18:39:54 <Deewiant> elliott: Can't you do something like liftShiro $ (return <$> io m) `catchShiro` \(_::IOException) -> mzero
18:40:12 <Deewiant> elliott: I mean, if you're using Just/Nothing explicitly there shouldn't be a need for toMaybeT :-P
18:40:14 <pikhq> Of course, Hawaii is south of Alaska, which is UTC-9.
18:40:18 <pikhq> Civil time makes no sense.
18:40:22 <Deewiant> elliott: Just make a MaybeT directly
18:40:35 <elliott> Deewiant: Well, yeah, but toMaybeT is just "MaybeT . return".
18:40:41 <elliott> So making it directly would clutter up the two clauses.
18:40:48 <elliott> ?pl guard . not
18:40:48 <lambdabot> guard . not
18:40:50 <pikhq> Gotta love time zones not even containing their meridian.
18:41:28 <Deewiant> elliott: How would it clutter it? Use something like what I gave (can't be bothered to figure out the types right myself), it should make the whole thing shorter
18:42:01 <elliott> Shiro/Utils.hs:149:13:
18:42:01 <elliott> Couldn't match type `a' with `m0 a'
18:42:01 <elliott> `a' is a rigid type variable bound by
18:42:01 <elliott> the type signature for ioMaybe :: IO a -> MaybeT Shiro a
18:42:01 <elliott> at Shiro/Utils.hs:149:1
18:42:02 <elliott> Expected type: MaybeT Shiro a
18:42:04 <elliott> Actual type: MaybeT Shiro (m0 a)
18:42:07 <elliott> Pretty sure that's not surmountable
18:42:47 <Deewiant> Pretty sure that's just something I did wrong
18:43:01 <pikhq> (what the hell, France. You've got the Prime Meridian going through your country but you're UTC+1)
18:43:58 <elliott> Deewiant: Pretty sure I reached the current solution after trying to get that working :P
18:44:07 <Deewiant> In particular the 'return <$> io m' bit worries me, but I can't see the correct version in my head right now
18:44:35 <elliott> Hmm, wtf
18:44:36 <elliott> --ioMaybe :: IO a -> MaybeT Shiro a
18:44:36 <elliott> ioMaybe m = liftShiro $ (return <$> io m) `catchShiro` \(_::IOException) -> mzero
18:44:38 <elliott> Just started working
18:44:40 <elliott> Oh, type signature
18:45:10 <Deewiant> What's liftShiro's type?
18:47:35 <elliott> It's
18:47:40 <elliott> (MonadShiro m) => Shiro a -> m a
18:47:56 <elliott> There's a (MonadShiro (MaybeT Shiro)) instance.
18:50:33 <Deewiant> liftShiro $ liftIO (io m) `catchShiro` \(_::IOException) -> mzero ??
18:51:08 <Deewiant> Or wait, io is already liftIO
18:51:16 <Deewiant> So just drop the outer one
18:52:35 <Deewiant> But no, that won't work yet
18:52:36 <elliott> Hmm, that works
18:52:40 <Deewiant> Hmm, it does?
18:52:40 <elliott> Well, it types
18:52:47 <elliott> That's arguably not the same thing :)
18:52:52 <elliott> Actually wait, why would that work
18:52:54 <elliott> That makes no sense
18:53:05 <Deewiant> I was thinking that the io lifts the IO to a Shiro
18:53:12 <Deewiant> Which is then a type mismatch with the mzero
18:53:21 <elliott> io :: (MonadShiro m) => IO a -> m a
18:53:21 <elliott> io = liftIO
18:53:25 <elliott> I guess it works because of that
18:53:36 <Deewiant> I don't see how that changes anything
18:53:44 <pikhq> Is it just me, or does WINE use hand-written recursive make, too?
18:54:00 <Deewiant> Does Shiro have a MonadPlus instance?
18:54:31 <pikhq> Oh, it's even worse. It uses makedep.
18:54:36 <elliott> Deewiant: It's a StateT, so probably
18:54:39 <elliott> (It's literally a type alias
18:54:49 <elliott> MaybeT has no MonadPlus because there's two possible definitions
18:54:58 <Deewiant> Sure it does?
18:55:10 <Deewiant> Which monad package are you using :-D
18:55:53 <elliott> Deewiant: The MaybeT one.
18:55:55 <pikhq> I hereby ban people from using makedepend.
18:55:56 <elliott> Oh wait.
18:55:56 <Deewiant> StateT m has MonadPlus iff m has MonadPlus
18:55:59 <elliott> You mean which transformers thing
18:56:07 <elliott> Deewiant: Well it's StateT dsjoisdfj IO
18:56:11 <Deewiant> elliott: 'transformers' has Monad m => MonadPlus (MaybeT m)
18:56:19 <Deewiant> elliott: Then Shiro doesn't have MonadPlus
18:56:20 <elliott> I'm using the "regular" one
18:56:22 <elliott> Isn't that mtl
18:56:38 <Deewiant> I don't know what's regular these days
18:56:38 <elliott> And my MaybeT is http://hackage.haskell.org/package/MaybeT
18:56:44 <elliott> Haskell Platform :P
18:56:56 <Deewiant> That has MonadPlus as well
18:57:03 <Deewiant> I don't know what's in the Haskell Platform :-P
18:57:18 <Deewiant> I just install ghc and cabal-install and install what I need
18:57:42 <pikhq> Just install the Haskell Platform, it contains what you need.
18:57:49 <Deewiant> I doubt it
18:58:05 <elliott> Haskell Platform, it's got what Haskellers crave.
18:58:11 <pikhq> Okay, well, it doesn't contain everything you could ever want, but it contains a reasonable number of commonly used Haskell libraries.
18:58:16 <Deewiant> elliott: Anyway, despite the docs, that does have MonadPlus
18:58:36 <elliott> Deewiant: It does? X_X
18:58:50 <Deewiant> elliott: See the autogenerated 'instances' list :-P
18:58:53 <Deewiant> Or the source
18:59:04 <elliott> Deewiant: I just used it because it was the only one I could find :P
18:59:50 <Deewiant> Well, anyway, it has MonadPlus
19:00:14 <Deewiant> And Shiro shouldn't AFAICT, so I don't understand why that last one typed
19:00:44 <elliott> It's bugging me :P
19:00:45 <pikhq> Sadly, distro packages of the Haskell Platform are sometimes a bit behind. Debian wheezy's still on 2010.1...
19:00:56 <pikhq> Though 2011.2 is in sid.
19:02:25 <Deewiant> Oh, duh, there's a MonadShiro instance
19:02:26 <Deewiant> So
19:03:07 <Deewiant> liftShiro (((io m :: MaybeT Shiro a) `catchShiro` \(_::IOException) -> (mzero :: MaybeT Shiro a)) :: MaybeT Shiro a) :: MaybeT Shiro a
19:03:13 <Deewiant> And the outer liftShiro is redundant
19:03:15 <Deewiant> I think
19:03:33 <elliott> Nope
19:03:34 <elliott> Deewiant: catchShiro :: (Exception e) => Shiro a -> (e -> Shiro a) -> Shiro a
19:03:44 <Deewiant> Hmm
19:03:46 <elliott> Because it has to look like
19:03:48 <elliott> catchShiro action handler =
19:03:48 <elliott> StateT $ \s -> runStateT action s `catch` (flip runStateT s . handler)
19:03:52 <elliott> and I don't think I can generalise that easily
19:04:00 <Deewiant> In which case mzero has to be Shiro a
19:04:04 <Deewiant> But I don't see how that's possible :-P
19:04:05 <elliott> And io m too
19:04:19 <elliott> *Shiro.Utils> mzero :: Shiro ()
19:04:19 <elliott> <Shiro>
19:04:22 <elliott> I'm using transformers /and/ mtl it seems
19:04:23 <elliott> That's
19:04:25 <elliott> That's not a good thing is it
19:04:29 <Deewiant> Dunno
19:04:37 <Deewiant> I think mtl depends on transformers these days
19:04:44 <ais523> elliott: did you think of a name yet?
19:04:45 <Deewiant> Yeah, it does
19:04:51 <elliott> ais523: toMaybeT for now
19:04:52 <elliott> *Shiro.Utils> runShiro (mzero :: Shiro ()) initialFungeState
19:04:52 <elliott> *** Exception: user error (mzero)
19:05:07 <ais523> that's correct, isn't it?
19:05:14 <Deewiant> Oh, mzero just fails in IO then :-P Nice :-P
19:05:15 <elliott> *Shiro.Utils> runShiro (runMaybeT (liftShiro (mzero :: Shiro ()) :: MaybeT Shiro ())) initialFungeState
19:05:15 <elliott> *** Exception: user error (mzero)
19:05:17 <elliott> Deewiant: Yeah :P
19:05:20 <elliott> That won't work.
19:05:27 <ais523> Deewiant: mzero /should/ just fail in IO, assuming it types at all
19:05:33 <ais523> as mplus in IO = bad things happen
19:05:35 <Deewiant> ais523: I was assuming it wouldn't type
19:05:53 <Deewiant> elliott: If your catchShiro were more general this'd work nicely
19:06:14 <elliott> Deewiant: I don't think it /can/ be generalised
19:06:18 <ais523> well, all Haskell monads (as opposed to mathematical monads) have a way to respond to errors
19:06:30 <elliott> ais523: I don't think you understand the problem being solved here
19:06:44 <Deewiant> elliott: Control.Monad.Error.Class has a catchError that looks promising
19:07:43 <elliott> Deewiant: Honestly, my old version worked fine and wasn't that ugly :P
19:08:17 <ais523> elliott: my last sentence was meant to be more or less a non sequitur
19:08:29 <ais523> there was context but I forgot to send it to the channel
19:08:52 <ais523> which is along the lines of "all Haskell monads have to have an mzero equivalent anyway, even if they don't have an mplus equivalent, and even if actually using it is a Bad Idea"
19:09:54 <Deewiant> elliott: There's no ugliness, you don't need the type signatures :-P
19:10:35 <elliott> Deewiant: Ugliness in what
19:11:03 <Deewiant> elliott: I thought you were calling the latest ioMaybe 'that ugly'
19:11:44 <elliott> Deewiant: It wasn't ugly, it was broken :)
19:12:23 <Deewiant> Make Shiro a MonadError and use catchError and it should work
19:12:43 <Deewiant> Well, it already is, because it's an alias and not a newtype :-P
19:12:48 <elliott> I'll finish MaybeT-ising the fingerprint code first :P
19:13:14 <elliott> Oh dear GOD this code.
19:13:26 <elliott> http://sprunge.us/eNNK
19:13:28 <elliott> WHAT WAS I THINKING
19:14:07 <elliott> Although nothing can ever beat the sheer ugly perfection of http://sprunge.us/hEDP
19:14:16 <monqy> oh dear god that code
19:14:27 <monqy> oh dear god that code
19:14:38 <elliott> :D
19:15:58 <ais523> B.foldl'?
19:16:14 <Deewiant> Bytestring.foldl'
19:16:20 <Deewiant> s/s/S/
19:17:32 <Deewiant> But hey, at least it's short!
19:17:51 <elliott> Deewiant: And fast!
19:17:58 <Deewiant> Nope!
19:18:00 -!- myndzi has quit (Ping timeout: 246 seconds).
19:18:15 <elliott> Deewiant: Eh?
19:18:19 <elliott> That mergeByteString /is/ fast :P
19:18:27 <Deewiant> Compared to what :-P
19:18:34 <elliott> Deewiant: Compared to everything before it?
19:18:45 <elliott> I mean, it makes loading absolutely negligible as far as Mycology goes.
19:18:54 <elliott> Instant to my perception.
19:18:54 <Deewiant> Comparing it to slow Haskell doesn't make it fast as such ;-)
19:18:58 <elliott> It previously took almost a second.
19:19:10 <elliott> Deewiant: Well, no, but Mycology is still a big file.
19:19:21 <elliott> To load it into a fairly-decent fungespace structure instantly certainly doesn't make it "not fast".
19:19:36 <Deewiant> Psh, Mycology isn't even a megabyte
19:19:53 <elliott> Deewiant: You're just trying to piss me off >:)
19:19:58 <elliott> textify :: ByteString -> ByteString
19:19:58 <elliott> textify = B8.unlines . reverse . takeWhile (/= B.empty) . reverse . map (fst . B.spanEnd (== space)) . B8.lines
19:20:03 <elliott> I think I wrote this as penance for mergeByteString
19:20:09 -!- myndzi has joined.
19:20:17 <elliott> Well, with some pointlessifying done by Deewiant because he can't stop himself :P
19:21:05 <elliott> Hmm, I'm starting to think I should just make the instruction execution functions MaybeT, since I use ioReflect a lot
19:22:30 <elliott> -- TODO: Also, if the least significant bit of the flags cell is
19:22:30 <elliott> -- high, o treats the file as a linear text file; that is, any
19:22:30 <elliott> -- spaces before each EOL, and any EOLs before the EOF, are not
19:22:30 <elliott> -- written out. The resulting text file is identical in appearance
19:22:30 <elliott> -- and takes up less storage space.
19:22:30 <elliott> I...
19:22:32 <elliott> Already did that.
19:23:27 <elliott> SpecConstr
19:23:27 <elliott> Function `$wa{v s77o} [lid]'
19:23:27 <elliott> has two call patterns, but the limit is 1
19:23:27 <elliott> Use -fspec-constr-count=n to set the bound
19:23:27 <elliott> Use -dppr-debug to see specialisations
19:23:30 <elliott> Why do these warnings even exist.
19:24:27 <elliott> Deewiant: Woo, I think my MaybeT stuff has slowed down Mycology
19:24:36 -!- zzo38 has joined.
19:24:39 <elliott> I guess GHC isn't smart enough to eliminate it all
19:24:56 <elliott> real0m1.821s
19:25:46 <elliott> Yeah, it's added .8 seconds, JESUS
19:25:50 <elliott> That's not good
19:25:54 <elliott> That's not good at all
19:26:46 <Deewiant> heh
19:27:03 <elliott> How can a minor structural improvement involving typeclasses add that much
19:27:10 <elliott> Is it passing around the typeclass shit all the time??
19:27:52 <Deewiant> Uh... yes, when it doesn't inline? That's how typeclasses work :-P
19:28:01 <elliott> Deewiant: Yeah, but GHC is meant to be smart :P
19:28:21 <elliott> It should do whole program analysis and realise that I only ever have two instances, and all the functions I use in the typeclass can just be lifted instead when in the MaybeT.
19:28:23 <Deewiant> IIRC JHC was the best at eliminating typeclass stuff :-P
19:28:51 <elliott> This sucks, I want my fastness back :P
19:29:02 <elliott> Hmm, maybe I'll try some strictness annotations, those are always good
19:30:48 <elliott> Hmm
19:30:53 <elliott> Maybe I'll tell GHC to inline some things
19:30:57 <elliott> Can you tell GHC to inline a typeclass function? :P
19:32:36 <elliott> Woot, inlining added point one seconds
19:32:40 <zzo38> I think the "recursive badness" algorithm for breaking paragraphs into lines would be at worst case, $O(n)$ space and $O(2^n)$ time. However there are shortcuts such as: * Tolerance setting, ignoring breaks with too much badness * Stop in case an overfull line would occur * Maximum paragraph height or number of lines
19:32:50 <zzo38> What do you think about this, what is your opinion about this?
19:33:34 <zzo38> (Unfortunately I don't know perfectly about big-O notation and could get some details wrong due to that)
19:35:49 <elliott> Deewiant: So mergeByteString is somehow a cost centre now :P
19:36:09 <elliott> I blame your foul language about it.
19:36:11 <Deewiant> Who'da thunk it
19:36:17 <ais523> zzo38: I think your big-O notation looks correct there
19:36:27 <elliott> Deewiant: But it didn't use to be :(
19:36:38 <ais523> but brute force seems the wrong way to go about this, as you pointed out
19:36:47 <ais523> did you look at the algorithm TeX actually uses?
19:37:06 <zzo38> ais523: Yes I have, I read the entire book.
19:37:43 <zzo38> However I do not perfectly understand it.
19:38:08 <ais523> zzo38: neither do I, unfortunately, although in my case because I haven't read the book
19:38:46 <zzo38> ais523: Do you have copies of all five books in Computers & Typesetting?
19:38:47 -!- elliott has quit (Remote host closed the connection).
19:38:51 <ais523> zzo38: no
19:38:55 <zzo38> (Probably not, if you haven't read it)
19:39:10 <zzo38> Do you have any of the books?
19:39:31 -!- elliott has joined.
19:39:35 <ais523> no
19:40:03 <elliott> how strange
19:40:34 <zzo38> elliott: What is strange?
19:40:52 <elliott> that ais523 doesn't own those books doesn't EVERYONE
19:41:15 <ais523> elliott: I don't own as many books as you might expect
19:41:23 <ais523> in fact, I hardly ever use paper at all nowadays
19:41:25 -!- oerjan has joined.
19:41:27 <elliott> ais523: it was sarcasm
19:41:30 <elliott> hey oerjan name my function
19:41:34 <oerjan> fred
19:41:45 <elliott> perfect but no
19:41:54 <elliott> ??? :: (Monad m) => Maybe a -> MaybeT m a
19:41:57 <ais523> to the extent that whenever anyone gives me something on paper, or prints something out, or whatever, I'm confused for a moment and then think "oh, paper! I remember that"
19:41:57 <elliott> ??? = MaybeT . return
19:42:00 <elliott> ??? :: (Monad m) => Maybe a -> MaybeT m a
19:42:02 <elliott> ??? = MaybeT . return
19:42:02 <elliott> oops
19:42:07 <elliott> oerjan: it's the same as (maybe return mzero)
19:42:23 <oklofok> "<zzo38> (Unfortunately I don't know perfectly about big-O notation and could get some details wrong due to that)" <<< f = O(g) if from some point on, f is smaller than some constant multiple of g
19:42:40 <oklofok> in formulas, O(something) means, well, that.
19:42:42 <oerjan> aha
19:42:57 <elliott> oerjan: basically this is for using a Maybe value in a MaybeT block
19:43:00 <elliott> i.e. you have a map lookup
19:43:01 <elliott> and you can do
19:43:07 <zzo38> I doubt EVERYONE owns these books...... and book B can be generated from the file "tex.web" although footnotes will be missing and so will a few other things, although you can read the DVI file (which I used before purchasing the books)
19:43:08 <elliott> foo <- ??? [dollar] Map.lookup blah
19:43:56 <oerjan> elliott: well by your definition it generalizes to any MonadPlus
19:44:12 <elliott> oerjan: yes, indeed
19:44:15 <elliott> I just need a name for it :)
19:44:34 <oerjan> well i saw liftMaybe mentioned
19:44:35 <zzo38> The line breaking algorithm is described in sections 813 to 890. (Page numbers depend on whether or not footnotes are included, though)
19:44:45 <oerjan> hm
19:44:52 <oerjan> @hoogle Maybe a => m a
19:44:53 <lambdabot> Warning: Unknown class Maybe
19:44:53 <lambdabot> Control.Applicative unwrapMonad :: WrappedMonad m a -> m a
19:44:53 <lambdabot> Text.Regex.Base.RegexLike getAllTextSubmatches :: AllTextSubmatches f b -> f b
19:45:01 <oerjan> er
19:45:05 <oerjan> @hoogle Maybe a -> m a
19:45:05 <lambdabot> Data.Monoid First :: Maybe a -> First a
19:45:05 <lambdabot> Data.Monoid Last :: Maybe a -> Last a
19:45:05 <lambdabot> Data.Maybe maybeToList :: Maybe a -> [a]
19:45:13 <oerjan> @more
19:45:20 <elliott> it'd prompt if there was more
19:45:23 <elliott> oerjan: liftMaybe is wrong
19:45:25 <elliott> it's not a lift
19:45:26 <oerjan> @hoogle MonadPlus m => Maybe a -> m a
19:45:26 <lambdabot> Control.Monad mplus :: MonadPlus m => m a -> m a -> m a
19:45:26 <lambdabot> Control.Monad msum :: MonadPlus m => [m a] -> m a
19:45:26 <lambdabot> Data.Foldable msum :: (Foldable t, MonadPlus m) => t (m a) -> m a
19:45:44 <elliott> I think there's probably some weird category theory term for it that I could steal >:)
19:45:46 <oerjan> i guess you've checked whether it exists alrady
19:46:01 <elliott> well, no, but thanks for the confirmation
19:46:03 <oerjan> oh hm
19:46:24 <zzo38> From what I can tell, the Pascal compiler that Knuth used requires numeric labels; I have seen later other Pascal programs that used named labels
19:46:44 <oerjan> @hoogle Cont r a -> ContT r m a
19:46:44 <lambdabot> No results found
19:47:24 <oerjan> elliott: it's sort of a lift you consider MaybeT to be a _composition of Maybe with another monad
19:47:30 <oerjan> *if you
19:47:36 <oerjan> *_composition_
19:47:43 <elliott> oerjan: still not comfortable calling it liftMaybe though :)
19:47:46 <oerjan> just from the other factor monad
19:47:58 <elliott> it just does not fit the type template i'd expect for something called that
19:47:59 <oerjan> :h mconcat
19:48:04 <oerjan> :t mconcat
19:48:04 <lambdabot> forall a. (Monoid a) => [a] -> a
19:48:10 <oerjan> :t msum
19:48:10 <lambdabot> forall (m :: * -> *) a. (MonadPlus m) => [m a] -> m a
19:48:50 <oerjan> i'm trying to see if there is a similar naming scheme already in use
19:49:40 <zzo38> Included in section 813 is a reference to another article, which might have another description of a similar algorithm, although I do not have access to that another article.
19:51:00 <oerjan> elliott: oh, liftMaybe is entirely consistent with the naming of liftIO
19:51:22 <oerjan> so there is some precedent
19:51:30 <elliott> oerjan: um no.
19:51:41 <oerjan> yes it is.
19:51:44 <oerjan> :t liftIO
19:51:45 <lambdabot> Ambiguous occurrence `liftIO'
19:51:45 <lambdabot> It could refer to either `Control.Monad.Error.liftIO', imported from Control.Monad.Error
19:51:45 <lambdabot> or `Control.Monad.Logic.liftIO', imported from Control.Monad.Logic
19:51:47 <elliott> lift :: M a -> MaybeT M a
19:51:48 <elliott> foo :: Maybe a -> MaybeT m a
19:51:49 <elliott> --kmc
19:51:59 <oerjan> elliott: liftIO not lift you dolt
19:52:24 <oerjan> :t Control.Monad.Error.liftIO
19:52:24 <lambdabot> forall a (m :: * -> *). (Control.Monad.Error.MonadIO m) => IO a -> m a
19:52:27 <elliott> oerjan: hm right
19:52:49 <oerjan> :t Control.Monad.Instances.liftIO
19:52:50 <lambdabot> Not in scope: `Control.Monad.Instances.liftIO'
19:53:02 <ais523> I take it MonadIO is a set of monads that contain IO chains?
19:53:09 <oerjan> :t Control.Monad.Transform.liftIO
19:53:10 <lambdabot> Couldn't find qualified module.
19:53:12 <ais523> :t Control.Monad.Logic.liftIO
19:53:12 <lambdabot> forall a (m :: * -> *). (Control.Monad.Logic.MonadIO m) => IO a -> m a
19:53:13 <elliott> ais523: IO chains?
19:53:16 <elliott> IO is always on the bottom
19:53:24 <oerjan> ais523: neither is the common one
19:53:29 <ais523> elliott: well, things that "do IO", in a sense
19:53:45 <oerjan> @hoogle liftIO
19:53:45 <lambdabot> Control.Monad.Trans liftIO :: MonadIO m => IO a -> m a
19:53:52 <oerjan> there you go
19:54:07 <elliott> oerjan: amusingly I have io as an alias for liftIO in Shiro
19:54:10 <elliott> because I do a lot of IO
19:54:25 <oerjan> wth lambdabot doesn't know that those are (or _should_ be) the same function, i don't know
19:54:40 <oerjan> elliott: yeah that's not uncommon i think
19:54:59 <elliott> oerjan: apply the same logic to this and you get... maybe
19:55:00 <elliott> darn :D
19:55:45 <pikhq> Well, you could import qualified Prelude or something. :P
19:57:55 <oerjan> heh
19:58:08 <elliott> i guess liftMaybe if better than what I have now
19:58:10 <elliott> (toMaybeT)
19:58:15 <elliott> [asterisk]is
19:58:50 <oerjan> elliott: i note liftCont :: Cont r a -> ContT r t a doesn't exist either, although it would be easy. in fact you might want a typeclass/type family for liftable transformers in general...
19:59:09 <elliott> oerjan: fuck that shit, I've increased my Mycology time by point eight seconds just by adding this MaybeT thing
19:59:13 <elliott> because all my functions are now typeclassed
19:59:15 <oerjan> @hoogle t Identity a -> t m a
19:59:15 <lambdabot> Did you mean: t (Identity t) a -> t m a /count=20
19:59:15 <lambdabot> Data.Graph.Inductive.Basic grev :: DynGraph gr => gr a b -> gr a b
19:59:15 <lambdabot> Data.Map deleteMax :: Map k a -> Map k a
19:59:22 <elliott> even though the liftShiro contained within them is irrelevant 90 percent of the time
19:59:25 <elliott> and so it shouldn't have to pass around anything
19:59:27 <elliott> hmm
19:59:32 <elliott> maybe i should have liftShiro separate
20:00:17 <oerjan> elliott: well can't you add specialize pragmas?
20:00:37 <elliott> oerjan: oh right... how do they work again :D
20:00:38 <oerjan> or what they are called
20:00:42 <elliott> specialize yeah
20:01:12 -!- olsner_ has joined.
20:01:29 <elliott> real0m1.854s
20:01:33 <elliott> real0m1.779s
20:01:33 <elliott> real0m1.785s
20:01:33 <elliott> now to separate out liftShiro
20:02:54 <elliott> real0m1.801s
20:02:54 <elliott> real0m1.911s
20:02:54 <elliott> real0m1.797s
20:02:55 <elliott> ok that didn't help
20:02:59 -!- zzo38 has left.
20:03:05 <elliott> oerjan: unfortunately I think I'd have to specialize /every single function/ :(
20:03:07 <oerjan> hm i guess i've complained previously that liftState in this sense didn't exist
20:03:10 <elliott> and there are a lot of them
20:03:30 <oerjan> (you have to use StateT . return or State)
20:04:10 <oerjan> actually for transformed state monads you need to write it with get and put
20:05:47 -!- olsner_ has quit (Client Quit).
20:06:05 <elliott> oh it's actually specialise
20:06:14 <elliott> oh
20:06:17 <oerjan> heh
20:06:19 <elliott> 7.13.9. SPECIALIZE pragma
20:06:19 <elliott> (UK spelling also accepted.)
20:06:22 <elliott> how thoughtful
20:06:51 <elliott> wow, we've had this topic for three days
20:07:58 -!- Deewiant has set topic: Tropical discussion on the best way to enforce peelings | Logs: http://codu.org/logs/_esoteric/ and http://tunes.org/~nef/logs/esoteric/?C=M;O=D.
20:07:59 <oerjan> class (Monad m, MonadTrans t) => LiftableMonad m t where lift :: m a => t Identity a
20:08:36 <oerjan> oh and probably | t -> m, m -> t
20:09:08 <oerjan> elliott: wow, i didn't notice this topic at all before now
20:10:01 <oerjan> hm or maybe it should actually be Monad n => m a -> t n a
20:10:43 <oerjan> and drop the functional dependency. then it would actually generalize lift...
20:11:02 <oerjan> ...but probably cause heaps of overlapping instances at the same time
20:11:58 <oerjan> say if someone did MaybeT Maybe, it would unclear which side to lift an actual Maybe into
20:12:05 <oerjan> *be unclear
20:12:27 -!- zzo38 has joined.
20:12:40 <oerjan> this is not a problem for IO because there is no transformer corresponding to it
20:13:17 <elliott> WHY NOT
20:17:20 <oerjan> there should totally have been an STT, anyway
20:17:52 <elliott> does that even work? :)
20:17:55 <oerjan> although i vaguely recall the type trick that makes ST sane and pure doesn't work
20:18:15 <elliott> hmm, can you implement ST with Data.Dynamic?
20:18:16 <elliott> I think you can
20:18:25 <elliott> (Integer, Map Integer Dynamic)
20:18:29 <elliott> and just increment the integer each time
20:18:32 <elliott> that's State, that is
20:18:44 <oerjan> elliott: you could imagine passing forked worlds around to make STT behave like a crazy State
20:18:54 <elliott> then "newtype STRef r a = STRef Integer"
20:18:54 <elliott> no?
20:19:31 <oerjan> elliott: yeah i think i've seen that alluded to
20:19:58 <elliott> so ST is Haskell ninety-eight plus unsafeCoerce, then
20:20:05 <oerjan> hm i guess the type trick isn't really needed if you _actually_ pass a world state around...
20:20:09 <elliott> which is pretty portable, considering it only requires unsafeCoerce in a very safe way
20:21:29 <oklofok> my head has an ache :(
20:21:39 <oklofok> please don't use caps k
20:21:43 <oerjan> O KAY
20:21:52 <oklofok> :<
20:22:10 <oerjan> _NOW_ WHAT?!!!!!!!!!!!!!
20:22:31 <oklofok> could you talk about something more soothing like the homotopy of cellular automata maps in the besicovitch topology instead of this haskell stuff?
20:23:25 -!- augur has quit (Remote host closed the connection).
20:23:33 <oerjan> http://hackage.haskell.org/packages/archive/STMonadTrans/0.2/doc/html/Control-Monad-ST-Trans.html is _so_ disappointingly giving up where it gets interesting...
20:26:16 <elliott> heh
20:26:25 <oklofok> heh indeed, all maps are homotopic there
20:31:17 <oklofok> actually i'm not 100% on that but it seems clear enough
20:31:48 <oklofok> just do the usual toeplitz sequence thingie
20:33:08 <elliott> oerjan: I'm tempted to write an STT now
20:33:16 <elliott> as a break from this stupid slow code
20:33:50 <oerjan> i think it wouldn't work with Cont either, since that can rewind stuff...
20:33:58 <oerjan> (that package version)
20:35:00 <elliott> newtype STT s m a = STT (StateT (ID, (Map ID Any)) m a) should do it, I think
20:35:04 <elliott> ?unmtl StateT (ID, Map ID Any) m a
20:35:04 <lambdabot> ID -> Map ID Any -> m (a, ID, Map ID Any)
20:35:27 <elliott> newtype STT s m a = STT (STTState s -> m (a, STTState s))
20:35:34 <elliott> data STTState s = STTState ID (Map ID Any)
20:35:43 <elliott> ok it might not be /fast/, and you can't GC the map
20:35:44 <elliott> but...
20:35:49 <elliott> actually wait doesn't ghc have some kind of weak map?
20:40:25 <zzo38> Then if you want to write fast program, don't use Haskell.
20:40:54 <elliott> Haskell is great for writing fast programs.
20:40:59 <elliott> just that approach to STT isn't.
20:42:01 <oerjan> i think ghc has weak references but they may be only in IO
20:42:51 <elliott> oerjan: unsafePerformIO ;D
20:43:31 <oerjan> System.Mem.Weak
20:44:26 <zzo38> How fast is Haskell? I thought it is functional it cannot be entirely fast, although it would be faster than Javascript and stuff like that, I would think. I wouldn't know for sure?
20:44:49 <elliott> zzo38: languages don't have speeds
20:44:57 <elliott> implementations do, on certain implementations of certain algorithms
20:47:46 * Phantom_Hoover puts up the Gregor sign.
20:51:31 -!- oklofok has quit.
20:54:36 <oerjan> hm i wonder if in clean, with its uniqueness typing system, it might be possible to create an STT that could only be used on monads which don't duplicate state, and which was checked to do so...
20:55:28 <elliott> probably
20:56:16 <elliott> oerjan: hmm what's a safe thing to unsafeCoerce everything into?
20:56:18 <elliott> Any isn't portable
20:56:20 <elliott> I realise unsafeCoerce isn't either, but
20:56:43 <oerjan> or even better, which worked with both but only duplicated state when actually necessary
20:57:15 <oerjan> no idea
20:57:29 <oerjan> isn't unsafeCoerce in the ffi or something?
20:57:34 <elliott> yeah
20:57:35 <elliott> I think
20:57:48 <oerjan> which is as portable as something like that can be
20:57:50 <elliott> or is it unsafePerformIO (equivalent though)
20:58:04 <oerjan> definitely the latter
20:58:35 <elliott> http://www.cse.unsw.edu.au/~chak/haskell/ffi/ffi/ffise5.html#x8-230005
20:58:40 <elliott> there's unsafePerformIO
20:58:48 <oerjan> unsafeForeignPtrToPtr :: ForeignPtr a -> Ptr a
20:58:48 <oerjan> unsafeLocalState :: IO a -> a
20:58:48 <oerjan> unsafePerformIO :: IO a -> a
20:58:56 <oerjan> are in Foreign
20:59:26 <elliott> wtf is unsafeLocalState
21:00:03 <pumpkin> unsafeLocalState = unsafePerformIO
21:00:20 <elliott> is that it?
21:00:25 <ais523> hmm, so unsafePerformIO's intended purpose is to allow pointers in other languages to be read from Haskell?
21:00:49 <oerjan> ais523: um not precisely
21:01:17 <elliott> ais523: uh...
21:01:18 <elliott> no.
21:01:18 <elliott> ?hoogle Any
21:01:18 <lambdabot> Data.Monoid newtype Any
21:01:18 <lambdabot> Data.Monoid Any :: Bool -> Any
21:01:18 <lambdabot> Prelude any :: (a -> Bool) -> [a] -> Bool
21:01:23 <oerjan> it's for allowing the ffi to treat foreign functions as pure i assume
21:01:25 <elliott> ais523: it's for using pure functions
21:01:26 <elliott> right
21:01:33 <elliott> e.g. a fast C prime checker
21:01:40 <elliott> grr, where is GHC's Any
21:01:56 <oerjan> although i _think_ there's a declaration for that without using unsafePerformIO, isn't there?
21:02:06 <oerjan> @hoogle Any
21:02:06 <lambdabot> Data.Monoid newtype Any
21:02:06 <lambdabot> Data.Monoid Any :: Bool -> Any
21:02:06 <lambdabot> Prelude any :: (a -> Bool) -> [a] -> Bool
21:02:11 <elliott> oerjan: I just did that, eejit
21:02:11 <oerjan> heh
21:02:25 <elliott> <oerjan> although i _think_ there's a declaration for that without using unsafePerformIO, isn't there?
21:02:26 <oerjan> hey i'm trying to browse Foreign in the other window
21:02:29 <elliott> well you could implement unsafePerformIO /with/ it
21:02:35 <elliott> so might as well provide it :)
21:02:39 <elliott> (I think)
21:02:54 <oerjan> elliott: "that" refers to declaring foreign functions as pure
21:03:11 <elliott> ah, GHC.Prim.Any
21:04:28 <elliott> ?hoogle newSTRef
21:04:28 <lambdabot> Data.STRef newSTRef :: a -> ST s (STRef s a)
21:04:28 <lambdabot> Data.STRef.Lazy newSTRef :: a -> ST s (STRef s a)
21:05:36 <elliott> :t Map.insert
21:05:37 <lambdabot> Couldn't find qualified module.
21:05:39 <elliott> :t Data.Map.insert
21:05:40 <lambdabot> forall k a. (Ord k) => k -> a -> M.Map k a -> M.Map k a
21:05:45 <oerjan> ais523: i don't think the trick of using unsafePerformIO to break the type system was part of its motivation, if it was even known when it was standardized
21:06:25 <elliott> newSTTRef :: (Monad m) => a -> STT s m (STRef s a)
21:06:26 <elliott> newSTTRef x = STT (\(STTState n m) -> return (STRef n, STTState (n+1) (Map.insert n (unsafeCoerce x) m)))
21:06:26 <elliott> lovely
21:07:30 <oerjan> elliott: ah there is castForeignPtr :: ForeignPtr a -> ForeignPtr b
21:07:39 <elliott> heh
21:07:39 <elliott> nice
21:07:49 <oerjan> and a number of similar ones
21:08:06 <elliott> exclamation mark plz
21:08:17 <oerjan> !
21:08:21 <elliott> thx
21:08:30 <zzo38> ?
21:08:31 <zzo38> That is not a exclamation mark
21:08:42 <oerjan> um yes?
21:09:00 <elliott> ? isn't
21:09:06 <oerjan> well true
21:11:20 <elliott> ?hoogle writeSTRef
21:11:20 <lambdabot> Data.STRef writeSTRef :: STRef s a -> a -> ST s ()
21:11:20 <lambdabot> Data.STRef.Lazy writeSTRef :: STRef s a -> a -> ST s ()
21:11:52 <oerjan> > toBool 1
21:11:52 <lambdabot> Not in scope: `toBool'
21:12:23 <elliott> ?hoogle update
21:12:23 <lambdabot> Data.HashTable update :: HashTable key val -> key -> val -> IO Bool
21:12:23 <lambdabot> Data.IntMap update :: (a -> Maybe a) -> Key -> IntMap a -> IntMap a
21:12:23 <lambdabot> Data.Map update :: Ord k => (a -> Maybe a) -> k -> Map k a -> Map k a
21:12:43 <elliott> ?src Monad StateT
21:12:43 <lambdabot> Source not found. Take a stress pill and think things over.
21:12:46 <elliott> ?src MonadTrans StateT
21:12:46 <lambdabot> Source not found. Wrong! You cheating scum!
21:12:48 <elliott> grr
21:13:12 <oerjan> ?src StateT >>=
21:13:12 <lambdabot> Source not found. BOB says: You seem to have forgotten your passwd, enter another!
21:13:21 <oerjan> ?src Maybe >>=
21:13:21 <lambdabot> Source not found. Wrong! You cheating scum!
21:13:24 <elliott> ?src stateT (>>=)
21:13:24 <lambdabot> Source not found. My pet ferret can type better than you!
21:13:25 <elliott> ?src StateT (>>=)
21:13:25 <lambdabot> Source not found.
21:13:27 -!- augur has joined.
21:13:31 <oerjan> ?src Maybe (>>=)
21:13:31 <lambdabot> (Just x) >>= k = k x
21:13:31 <lambdabot> Nothing >>= _ = Nothing
21:16:00 <elliott> newtype STT s m a = STT (STTState s -> m (a, STTState s))
21:16:02 <elliott> oerjan: write >>= plz :P
21:16:04 <elliott> i'm so lazy.
21:16:33 -!- cheater897 has joined.
21:18:12 <elliott> never mind
21:18:42 <oerjan> dammit i just managed to get to mtl package documentation
21:18:50 <oerjan> (yeah i went a bad route)
21:19:01 <elliott> m >>= k = StateT $ \s -> do
21:19:01 <elliott> ~(a, s') <- runStateT m s
21:19:01 <elliott> runStateT (k a) s'
21:19:05 <elliott> it's all weird and lazy and shit
21:19:06 <elliott> but actually
21:19:07 <elliott> start minding again
21:19:12 <elliott> actually
21:19:14 <elliott> gimme a dollar
21:19:46 <oerjan> nope
21:19:47 <zzo38> Canadian or United States money?
21:19:50 <oerjan> $
21:20:15 <elliott> STT m >>= f = STT $ \s -> do
21:20:15 <elliott> (x,s') <- m s
21:20:15 <elliott> let STT m' = f x
21:20:15 <elliott> m' s'
21:20:16 <elliott> lovely and ugly
21:20:17 <oerjan> elliott: you already had one up there anyway
21:20:18 <elliott> just the way I like it
21:21:11 <elliott> oerjan: ok I have Monad and MonadTrans
21:21:17 <elliott> oerjan: write a test program using the list monad or something so I can test this :P
21:22:13 <Deewiant> > filterM (const [True,False]) [1,2,3]
21:22:13 <lambdabot> [[1,2,3],[1,2],[1,3],[1],[2,3],[2],[3],[]]
21:24:10 <elliott> Deewiant: with STT
21:24:11 <oerjan> do v <- newSTRef 1; x <- lift [1,2]; modifySTRef v (+x); readSTRef v
21:24:22 <oerjan> @hoogle modifySTRef
21:24:22 <lambdabot> Data.STRef modifySTRef :: STRef s a -> (a -> a) -> ST s ()
21:24:22 <lambdabot> Data.STRef.Lazy modifySTRef :: STRef s a -> (a -> a) -> ST s ()
21:24:23 <Deewiant> elliott: Just modify a value in there :-P
21:25:21 <oerjan> elliott: ^
21:25:38 <elliott> oerjan: what should the result be?
21:25:39 <CakeProphet> ls -Qc1 art/*.html | perl -pe 's/\.html/\.txt/' | xargs -t touch
21:25:52 <oerjan> [2,3] i presume
21:25:53 <CakeProphet> for some reason xargs is dumping every file into the same touch invocation. Any idea why?
21:26:12 <elliott> *STT> runSTT test'
21:26:13 <elliott> [2,3]
21:26:14 <elliott> oerjan: great success
21:26:22 <oerjan> yay
21:26:24 <elliott> ofc I'm pretty sure this thing leaks like a sieve
21:26:25 <elliott> but who cares
21:26:40 <elliott> http://sprunge.us/iaYI
21:26:43 <oerjan> that's pretty much a given :D
21:26:52 <elliott> dependencies: Rank2Types (unavoidable), GHC.Prim.Any, unsafeCoerce
21:26:59 <elliott> that is, non-portable dependencies
21:28:48 <oerjan> elliott: you might avoid the Rank2Types by just supporting s = Map Integer Dynamic
21:29:00 <oerjan> or hm wait
21:29:33 <elliott> oerjan: that'd allow things to leak out of "threads"
21:29:37 <elliott> and thus the unsafeCoerce would be safe no more
21:29:41 <oerjan> yeah i realized
21:30:34 <oerjan> actually you are not using Dynamic are you
21:30:56 <elliott> indeed
21:30:56 <elliott> just Any
21:31:18 <oerjan> one _might_ do that, avoiding explicit unsafeCoerce, but that would be an additional restriction on all the functions
21:31:35 <elliott> that would have runtime baggage too
21:31:41 <elliott> Dynamic keeps the type around
21:31:41 <oerjan> hm yeah
21:32:08 <elliott> so yeah, STT seems to be another case when the issue is just that Haskell has no real heterogeneous map
21:32:13 <elliott> (similarly with Shiro's fingerprints)
21:43:22 <oerjan> @src IO mplus
21:43:22 <lambdabot> m `mplus` n = m `catch` \_ -> n
21:43:27 <oerjan> ais523: ^
21:44:11 <pikhq> Surprisingly, Steam has gotten to be entirely *tolerable* with wine 1.3.20.
21:44:12 <ais523> oerjan: it switches from one IO chain to the next if the first errors?
21:44:13 <ais523> that's clever
21:44:21 <elliott> ais523: what?
21:44:28 <elliott> that's not how mplus works...
21:44:33 <pikhq> Instead of being glitchy but starting games right.
21:44:33 <oerjan> @src IO mzero
21:44:33 <lambdabot> mzero = ioError (userError "mzero")
21:44:49 <ais523> I know what mplus does in general
21:44:54 <ais523> just not what it does wrt IO in particular
21:45:06 <ais523> also, I suspect that elliott and I have entirely different definitions of "IO chain"
21:45:31 <oerjan> i think s/chain/action/ is appropriate
21:51:15 <CakeProphet> pikhq: do the games themselves run?
21:51:49 <pikhq> CakeProphet: Have for ages.
21:52:12 <CakeProphet> really? That's surprising actually. I can never get games to run in wine.
21:52:37 <CakeProphet> Granted, I don't have a graphics card...
21:53:20 <elliott> yes you do
21:53:33 <CakeProphet> elliott: ..you know exactly what I mean.
21:53:36 <pikhq> You might not have one that's any *good*, but you certainly have one.
21:57:16 <oerjan> "Rapture is a language inspired by the recent prediction that the world will end on May 21st, 2011, 6 p.m. on the dot (The Bible Guarantees It!)"
21:57:39 <oerjan> i'm not sure whether quibbling about the accuracy of that makes a whoosh sound or not
21:57:47 <elliott> I'm going to create a talk page for that
21:57:50 <elliott> and I will say
21:57:56 <elliott> tomorrow is the fucking rapture
21:57:57 <elliott> the last thing I need
21:57:59 <elliott> is more shitty esolangs
21:58:02 <elliott> to dampen the occasion
21:58:29 <elliott> ais523: no thanks for reverting that talk page vandalism
21:58:36 <elliott> ais523: I thought I got a new message but my talk page was unchanged :(
21:58:39 <elliott> /cry
21:58:44 <oerjan> bah the japanese already dampened the occasion, why do you think that big earthquake there happened
21:58:55 <ais523> elliott: unfortuntately I can't turn the new-message bar off
21:59:06 <elliott> ais523: all I wanted was a message... even one from a spambot :'(
21:59:07 <ais523> even though I didn't trigger it with my rollback, the original edit did trigger it
21:59:18 <oerjan> clearly they were relieving earth's crust of stress to prevent the rapture from happening
21:59:30 <elliott> oerjan: why did you remove the link to the Givenchy Outlet site dedicated to helping people edit the esolang wiki? :D
21:59:49 <pikhq> Unfortunately, the full-screen mode of Steam seems buggy as *hell*.
22:00:00 <pikhq> Erm, Source.
22:00:00 <elliott> # (diff) (hist) . . Fish‎; 21:10 . . (-7,644) . . Harpyon (Talk | contribs) (Moved documentation to GitHub repository.)
22:00:07 <elliott> someone give me one reason not to revert this...
22:00:17 <elliott> a wiki is meant to have information on it, not to outsource it to another (commercial) website
22:00:49 <oerjan> elliott: if you complain enough to add it back i _may_ actually check whether it _is_ spam before undoing it. maybe.
22:00:57 <elliott> oerjan: ;D
22:01:42 <ais523> oerjan: I check to see if things are spam before reverting them
22:01:46 <Phantom_Hoover> Hmm, does GitHub have a licence?
22:02:01 <elliott> Phantom_Hoover: what
22:02:03 <ais523> Phantom_Hoover: all the stuff on Esolang is public domain, so it doesn't technically need one
22:02:17 <Phantom_Hoover> Oh, yeah, it works the other way around.
22:03:06 <ais523> elliott: feel free to revert it
22:03:14 <ais523> although you'll have to do so by hand, because MediaWiki can't figure out how
22:03:31 <elliott> ais523: I've left a note on their talk page instead
22:03:43 <elliott> since it'd be nice if they updated it too
22:03:48 <ais523> fair enough
22:03:59 <zzo38> Tomorrow I will be in Victoria. But if there is Rapture, probably it includes Victoria, too.
22:04:46 <elliott> Victoria: A Land Untouched by Rapture
22:04:48 -!- variable has joined.
22:05:25 <oerjan> zzo38: well what you need to be careful about is to be in at least one timezone when it's 6 o'clock there (i don't remember if it's AM or PM)
22:05:59 <oerjan> some people are going to be _so_ pissed when they realize they missed the rapture because of a plane flight
22:06:04 <pikhq> Okay, so Source engine games seem to not work under WINE any more. Though Steam works well.
22:06:07 <pikhq> Fucking hell.
22:06:09 <elliott> oerjan: :D
22:06:20 <elliott> oerjan: you realise the rapture doesn't /end/ after six pm
22:06:22 <pikhq> Indeed, it segfaulted.
22:06:49 <CakeProphet> Do you guys have a convincing argument for why array indices conventionally begin at 0? I'm pretty sure it's a good idea, but I have no idea how to explain why to someone else when they ask about it.
22:06:57 <elliott> CakeProphet: see Dijkstra
22:07:01 <elliott> (Q.E.D.)
22:07:07 <oerjan> elliott: um the rapture is the precise even when people are lifted up to heaven, no? what comes after is the apocalypse, or something.
22:07:14 <elliott> oerjan: hm well maybe
22:07:15 <oerjan> *event
22:07:30 <oerjan> which is what i was quibbling about the wiki page for, incidentally
22:07:32 <elliott> oerjan: but hypothetically, assume a Christian spontaneously materialised during the apocalypse
22:07:34 <elliott> or whatever
22:07:41 <elliott> oerjan: what's to say they wouldn't immediately get raptured?
22:07:47 <ais523> CakeProphet: it mostly just makes formulas involving them simpler, you find you have to do a lot of adjustment by 1 with 1-based arrays
22:07:52 <elliott> by the same token, a plane flight wouldn't stop you getting rapture'd
22:07:56 <elliott> as soon as you went past six pm somewhere
22:08:05 <ais523> `addquote <elliott> oerjan: but hypothetically, assume a Christian spontaneously materialised during the apocalypse
22:08:06 <HackEgo> ​427) <elliott> oerjan: but hypothetically, assume a Christian spontaneously materialised during the apocalypse
22:08:15 <elliott> ais523: it's possible
22:08:31 <ais523> elliott: it just seems a really absurd thing to say, especially in context
22:09:06 -!- elliott has quit (Remote host closed the connection).
22:09:14 <oerjan> elliott: that is as hypothetical as that thought experiment about when the earth would stop following its orbit if the sun suddenly disappeared (hint: general relativity requires energy/momentum to be locally conserved)
22:10:09 -!- elliott_ has joined.
22:10:24 <Phantom_Hoover> <CakeProphet> Do you guys have a convincing argument for why array indices conventionally begin at 0? I'm pretty sure it's a good idea, but I have no idea how to explain why to someone else when they ask about it.
22:10:33 <Phantom_Hoover> I assumed it was pointer arithmetic.
22:13:12 -!- ais523 has quit (Remote host closed the connection).
22:13:28 -!- variable has quit (Read error: Operation timed out).
22:17:07 -!- variable has joined.
22:17:16 <elliott_> Deewiant: Hey what was that slow self-interpreter?
22:17:18 <elliott_> slowdown or whatever.
22:17:46 <Deewiant> slowdown.b98, yes
22:18:58 <elliott_> That's in fungicide right
22:19:06 <Deewiant> Doubt it
22:19:09 <elliott_> But it depends on FIXP or one of those other nasty fingerprints I'm avoiding implementing I think
22:19:24 <Deewiant> http://iki.fi/deewiant/files/befunge/programs/slowdown.b98
22:19:42 <Deewiant> And yes, FIXP
22:19:50 <elliott_> Which will suck.
22:20:04 <Deewiant> What's nasty about FIXP? :-P
22:20:30 <elliott_> Because I don't recall there being any nice fixed point things for Haskell that weren't based on decimal :)
22:20:34 <elliott_> Hmm, well, FIXP seems to be decimal too
22:20:41 <elliott_> But still, I don't know of any "nice" way to do it in Haskell
22:20:47 <elliott_> Why the fuck is xor in FIXP
22:20:49 <zzo38> Phantom_Hoover: I believe you too, I think pointer arithmetic is one reason, however there are other good reasons too, actually
22:20:50 <Deewiant> FIXP is just divide by 10000 / multiply by 10000
22:20:51 <elliott_> That makes no sense, what
22:21:00 <Deewiant> elliott_: I think it's logical, not binary, xor, too
22:21:13 <elliott_> N(a -- 0-a)Negate
22:21:15 <elliott_> r u serious
22:21:27 <oerjan> @source Data.Fixed
22:21:27 <lambdabot> Data.Fixed not available
22:21:28 <elliott_> that's... the worst waste of a letter i've ever seen
22:21:35 <oerjan> @hoogle Data.Fixed
22:21:35 <lambdabot> module Data.Fixed
22:21:35 <lambdabot> Data.Fixed data Fixed a
22:21:35 <lambdabot> Data.Fixed showFixed :: HasResolution a => Bool -> Fixed a -> String
22:21:47 <elliott_> oerjan: yah but no nice instances i do not think
22:21:51 <elliott_> oh hm
22:21:55 <elliott_> RealFrca at least
22:21:56 <elliott_> RealFrac
22:21:57 <elliott_> :t sqrt
22:21:58 <lambdabot> forall a. (Floating a) => a -> a
22:22:00 <elliott_> but not Floating
22:22:04 <elliott_> so of very limited use
22:22:18 <Deewiant> Why does it need to be floating
22:22:23 <elliott_> :t acos
22:22:24 <lambdabot> forall a. (Floating a) => a -> a
22:22:29 <elliott_> Deewiant: if I want to use the existing Haskell functions...
22:22:30 <Deewiant> It's probably implemented using int and casts to/from float in RC/Funge-98
22:22:50 <elliott_> I mean implementing acos by myself for Fixed doesn't sound useful
22:22:51 <elliott_> erm
22:22:52 <elliott_> I mean implementing acos by myself for Fixed doesn't sound fun
22:22:54 <elliott_> I was replying to oerjan
22:23:07 <Deewiant> Just use integers
22:23:23 <oerjan> mhm
22:23:29 <elliott_> Yeah but that involves casting to like Double or something.
22:23:32 <elliott_> And that's grossssssssssssssssssssssssssssss
22:23:36 <elliott_> With lotsa ses
22:23:59 <Deewiant> push . floor . (*10000) . sqrt . fromIntegral . pop
22:24:09 <elliott_> GROSSSSSSSSSSSSSSSSSSSSSSSSSSSS INACCURACYYYYYYYYYY
22:24:21 <Deewiant> push . floor . (*10000) . sqrt . (/10000) . fromIntegral . pop
22:24:35 <Deewiant> elliott_: Like said, the "reference implementation" probably uses (int) and (float)
22:24:59 <elliott_> Deewiant: The reference implementation is also written in C, what's your point
22:25:13 <Deewiant> What's /your/ point
22:25:13 <elliott_> I'm meant to have class
22:25:21 <elliott_> Deewiant: Grossssssssssssssssssssssssssssss
22:25:30 <Deewiant> Whatever :-P
22:25:37 <elliott_> Hmm, is there an easy way to turn a maybe-failing pattern match into a Maybe
22:25:49 <elliott_> I guess not
22:25:52 <elliott_> Like
22:25:53 <elliott_> case genericDrop n env of
22:25:53 <elliott_> value:_ -> pushStringAs0gnirts value
22:25:54 <elliott_> _ -> reflect
22:25:56 <elliott_> It'd be nice if I could say
22:26:03 <Deewiant> Do it in a monad
22:26:06 <elliott_> value:_ <- magic (genericDrop n env)
22:26:12 <elliott_> Oh right, MaybeT's fail is Nothing
22:26:13 <elliott_> Swee
22:26:14 <Deewiant> Maybe is a monad
22:26:15 <elliott_> Sweet
22:26:23 <elliott_> Deewiant: MaybeT is a monad (transformer) that I already use
22:26:32 <Deewiant> Yep
22:26:44 <oerjan> MaybeT fails at Nothing
22:28:14 -!- TOGoS has quit (Quit: Leaving.).
22:29:10 <elliott_> Hey wait
22:29:17 <elliott_> That means that liftMaybe is totally pointless
22:29:23 <elliott_> "x <- liftMaybe y" == "Just x <- y"
22:29:28 <elliott_> Cool???
22:29:32 <elliott_> Wait no.
22:29:33 <elliott_> It's actually
22:29:35 <elliott_> let Just x = y
22:29:37 <elliott_> But er
22:29:45 <elliott_> Do let statements actually come out as <- return??
22:29:56 <elliott_> Or do they just implicitly "in" the rest of the block
22:33:46 <elliott_> oerjan knows, he wrote the Report
22:34:55 -!- zzo38 has quit (Remote host closed the connection).
22:37:02 <oerjan> implicitly "in"
22:37:10 <oerjan> they can be polymorphic, after all
22:37:48 <oerjan> so you need Just x <- y
22:37:56 <elliott_> oerjan: I need "Just x <- return y"
22:37:57 <elliott_> unfortunately
22:37:58 <elliott_> which is ugly
22:38:01 <oerjan> ah
22:38:05 <elliott_> :(
22:38:48 <Deewiant> How can you need that?
22:39:14 <oerjan> his monad isn't Maybe itself
22:39:32 <elliott_> Deewiant: So that when the pattern-match fails it (fail "...")s
22:39:42 <elliott_> Rather than "let Just x = y" which wouldn't do that
22:39:44 <Deewiant> How can return give Nothing?
22:40:02 <elliott_> Uh
22:40:05 <elliott_> Not sure you understand how monads work ;D
22:40:19 <elliott_> y is a (Maybe a)
22:40:25 <oerjan> > do Just x <- return Nothing; "Like this"
22:40:26 <lambdabot> ""
22:40:39 <Deewiant> oerjan: But the pattern-match succeeds there
22:40:43 <Deewiant> I'm wondering how it can possibly fail
22:40:47 <oerjan> Deewiant: no it doesn't
22:40:57 <Deewiant> Oh, woot
22:40:58 <oerjan> it failed, thus returning "" instead of "Like this"
22:40:59 <Deewiant> Right
22:41:13 <elliott_> No, Just
22:41:19 <Deewiant> Left
22:41:26 <elliott_> Nothing
22:41:49 <oerjan> > do Right x <- return (Left "hm..."); "Like this"
22:41:49 <lambdabot> ""
22:44:06 <oerjan> > do Right (Left x) <- Left "hm..."; return x
22:44:06 <lambdabot> Overlapping instances for GHC.Base.Monad
22:44:06 <lambdabot> (Data...
22:44:18 <oerjan> wtf
22:44:38 <elliott_> maybe I'll give return a nicer name :D
22:44:47 <oerjan> > do x <- Left "hm..."; return x
22:44:47 <lambdabot> Overlapping instances for GHC.Base.Monad
22:44:47 <lambdabot> (Data...
22:44:50 <elliott_> I'll come back to EVAR to restructure it later
22:45:03 * elliott_ cleans up the work-in-progress FING code.
22:45:16 <oerjan> someone should do something about lambdabot's import mess
22:45:20 <elliott_> what a wonderful language Haskell is
22:45:47 <elliott_> case Map.lookup ins m of
22:45:48 <elliott_> Nothing -> return ()
22:45:48 <elliott_> Just [] -> return ()
22:45:48 <elliott_> Just (_:xs) -> modifyFPInstructions (Map.insert ins xs)
22:45:48 <elliott_> gah
22:45:55 <elliott_> now how to represent that without right-leaning indentation
22:45:56 <elliott_> I think I can't
22:47:06 <oerjan> bit awkward there, but is that really a case where you want to remove it?
22:47:10 <elliott_> indeed
22:47:23 <elliott_> how is this costing me almost a second :(
22:47:26 <oerjan> there are two Just branches after all
22:47:45 <oerjan> oh hm
22:47:59 <elliott_> oerjan: and it's return (), not reflect
22:48:04 <oerjan> elliott_: if you put the two first cases last you just need one _ -> return ()
22:48:21 <oerjan> so then...
22:49:16 <elliott_> doesn't help anything but it doesn't matter :)
22:50:30 <oerjan> fromMaybe (return ()) $ do Just (_:_) <- Map.lookup ins m; return (modifyFPInstructions (Map.insert ins xs)
22:50:38 <elliott_> yeah that ...
22:50:40 <elliott_> isn't any nicer
22:50:44 <elliott_> it's still one level of indentation, too
22:50:54 <oerjan> hm monad comprehensions are nicer when you have a return in the last item
22:51:28 <oerjan> ...you want to do a pattern match without a single indentation level?
22:51:30 <elliott_> http://sprunge.us/hLNa ;; it's ridiculous how much less this is indented with MaybeT
22:51:38 <elliott_> oerjan: no, I've been saying for quite a while that there's no actual problem with it
22:51:41 <elliott_> you just ignored me ;D
22:52:00 <oerjan> your "indeed" was ambiguous :P
22:53:09 -!- h[a]gb4rd has quit (Quit: h[a]gb4rd).
22:53:55 -!- invariable has joined.
22:54:10 -!- variable has quit (Quit: Daemon escaped from pentagram).
22:54:15 -!- invariable has changed nick to variable.
22:54:26 <oerjan> invariably not constant
22:55:48 <oerjan> i guess this is the day for daemons to escape
22:55:53 -!- BeholdMyGlory has quit (Remote host closed the connection).
22:58:59 <variable> oerjan: hrm?
22:59:39 <oerjan> variable: it's such a raptuous day!
23:00:17 <oerjan> *rapturous
23:01:01 <elliott_> yay happy rapture
23:01:07 <elliott_> eighteen hours until we all perish
23:01:10 <elliott_> erm
23:01:10 <elliott_> or
23:01:11 <elliott_> not perish
23:01:15 <elliott_> it's not that eventful really
23:01:19 <elliott_> some earthquakes, buncha christians evaporate
23:02:21 <oerjan> Eva Porata
23:03:27 <elliott_> Deewiant: Do you have a link to slowdown?
23:04:57 <Deewiant> Yes, it's in the lastlog
23:05:20 <elliott_> Oh right
23:05:21 <elliott_> I forgot
23:05:28 <elliott_> Wow, xchat has lastlog
23:06:47 -!- variable has quit (Read error: Operation timed out).
23:07:53 -!- variable has joined.
23:10:06 <Vorpal> <elliott_> eighteen hours until we all perish <-- err, which one is it claiming that?
23:10:15 <elliott_> "which one"?
23:10:18 <elliott_> That's the only prediction
23:10:19 <elliott_> Six pm local time
23:10:21 <elliott_> Set your watches
23:10:41 <Phantom_Hoover> Remind me if the Rapture happened in Australia.
23:10:51 <Vorpal> elliott_, according to who?
23:10:55 <elliott_> Phantom_Hoover: It's not time yet.
23:11:00 <elliott_> Vorpal: according to the may twenty-first people.
23:11:14 <elliott_> Phantom_Hoover: 10:41 in Kingston which is on "NFT" and ostensibly in Australia.
23:11:16 <Vorpal> *googles*
23:11:18 <elliott_> So still about seven hours to go.
23:11:21 <elliott_> I think it's later in NZ.
23:11:54 <Vorpal> did you mean: my twenty-first people.
23:11:55 <Vorpal> XD
23:12:41 <elliott_> 11:13 Saturday (NZST) - Time in Wellington, New Zealand
23:12:41 <elliott_> Chatham Islands11:58CHAST
23:12:45 <elliott_> Phantom_Hoover: OK so about seven hours before we know.
23:12:51 <elliott_> Or, wait.
23:12:54 <elliott_> Kiritimati13:13LINT
23:13:07 <elliott_> Assuming they have Christians there, five hours.
23:13:15 <elliott_> Although whether the word would get out is arguable.
23:13:25 <Vorpal> elliott_, is it supposed to happen in local time everywhere
23:13:27 <Vorpal> how weird
23:13:28 <elliott_> http://en.wikipedia.org/wiki/Kiritimati
23:13:33 <elliott_> Keep an eye on 'em.
23:13:35 <elliott_> Vorpal: Yep.
23:13:57 <elliott_> Vorpal: Presumably to stop us crowding up the pearly gates.
23:14:08 <Vorpal> elliott_, is that solar time or based on timezone?
23:14:16 <elliott_> Timezone apparently
23:14:22 <Vorpal> how strange
23:14:29 <elliott_> I guess if you try and legally change it so that six pm just doesn't exist, God smites you for being a smartarse
23:14:39 <Vorpal> XD
23:15:06 <Vorpal> elliott_, I can't find much from googling these guys
23:15:12 <elliott_> Whaat?
23:15:15 <elliott_> There's shitloads about then.
23:15:16 <elliott_> them
23:15:24 <Vorpal> may 21th
23:15:31 <Vorpal> oh wait I typed it out
23:15:38 <Vorpal> forgetting you did it due to
23:15:44 <Vorpal> keyboard issues
23:15:53 <Vorpal> may 21 gets more results
23:16:05 <elliott_> http://en.wikipedia.org/wiki/2011_end_times_prediction
23:16:16 -!- Patashu has joined.
23:16:47 <elliott_> Also see Google news "rapture", "May 21"
23:16:52 <elliott_> "Suicide prevention hotlines have been set up because experts fear despondent followers who are depressed that the expected event did not appear on May 21."
23:17:06 <elliott_> "I guess I'll have to FORCE my way in!"
23:17:15 <Vorpal> "Camping previously claimed that the world would end in September 1994."
23:17:24 <elliott_> "An interview with a group of church leaders noted that all of them have scheduled services as usual for Sunday, May 22."
23:17:32 <elliott_> "SERVICE CANCELLED DUE TO RAPTURE"
23:18:07 <Vorpal> what exactly are the effects of rapture?
23:18:25 <elliott_> "His followers claim that around 200 million people (approximately 3% of the world's population) will be raptured."
23:18:28 <elliott_> Hmm, well that's not all Christians
23:18:43 <elliott_> Vorpal: All the Christians evaporate, lots of earthquakes and shit, then Satan starts to rule the world
23:18:51 <elliott_> And it's peaceful for a while but then the world ends and there's all sort of apocalyptic wars and shit like that
23:18:51 <Vorpal> ah
23:18:52 <elliott_> Quite fun
23:19:12 <elliott_> Vorpal: http://upload.wikimedia.org/wikipedia/commons/1/16/Tribulation_views.svg
23:19:13 <elliott_> HTH
23:19:52 <Vorpal> "Christ is said to have hung on the cross on April 1, 33 AD. The time between April 1, 33 AD and April 1, 2011 is 1,978 years." <-- yes and how is that an argument...? XD
23:20:11 <Vorpal> oh wait, more number mess further down "explaining" it
23:20:49 <Vorpal> this logic is only marginally easier to follow than timecube
23:21:11 <elliott_> "- William Miller predicted Christ would return between March 21, 1843 and March 21, 1844, then revised his prediction, claiming to have miscalculated Scripture, to October 22, 1844. The realization that the predictions were incorrect resulted in a Great Disappointment."
23:21:15 <elliott_> Great Disappointment is the best name for anything ever.
23:21:19 <Vorpal> elliott_, also I think we should combine this with jurrasic park to get velicorapture
23:21:28 <Phantom_Hoover> Vorpal, OK that is the best.
23:21:34 <elliott_> Vorpal: you can't spell.
23:21:43 <Vorpal> elliott_, oh indeed, modulo typos
23:22:17 <Vorpal> elliott_, velocirapture then
23:22:50 <Patashu> hey guys
23:22:51 <Vorpal> Phantom_Hoover, you mean velocirapture is the best or the bad "logic" is the best?
23:22:52 <Patashu> has the rapture come yet
23:22:54 <elliott_> I came up with that pun in two thousand and seven :P
23:23:04 <elliott_> Patashu: aren't you the one who made that language
23:23:08 <Vorpal> elliott_, yeah but we all forgot it
23:23:16 <elliott_> Vorpal: hey i didn't _tell_ you guys
23:23:27 <Patashu> the Rapture language?
23:23:30 <Patashu> I suggested it
23:23:37 <Vorpal> elliott_, ah
23:23:41 <elliott_> # (diff) (hist) . . N Rapture‎; 13:09 . . (+795) . . 122.106.155.219 (Talk) (started it up)
23:23:41 <elliott_> # (diff) (hist) . . List of ideas‎; 13:05 . . (+14) . . 122.106.155.219 (Talk) (adding Rapture)
23:23:45 <elliott_> Patashu: you can't fool us
23:23:46 <Patashu> yup
23:24:40 -!- FireFly has quit (Quit: swatted to death).
23:25:59 * Phantom_Hoover → sleep
23:26:08 <Phantom_Hoover> Need to be up early if the Rapture starts!
23:26:12 -!- Phantom_Hoover has quit (Remote host closed the connection).
23:26:44 <elliott_> Deewiant: Hmm, I guess I ought to implement command-line arguments for slowdown :-)
23:27:43 <Vorpal> elliott_, what are you doing with slowdown?
23:28:06 <Deewiant> elliott_: What for?
23:28:09 <elliott_> Vorpal: Trying to run it.
23:28:11 <elliott_> Deewiant: Because it demands them.
23:28:25 <Deewiant> Oh, you meant that, yes :-P
23:30:07 <elliott_> # a series of sequences of characters (strings), each terminated by a null, the series terminated by an additional double null, containing the command-line arguments. (env)
23:30:08 <elliott_> This means any isolated argument can be a null string, but no two consecutive arguments may be null strings - a rather contrived scenario, null string arguments being rare in themselves.
23:30:08 <elliott_> The first string is the name of the Funge source program being run.
23:30:09 -!- pikhq_ has joined.
23:30:11 * elliott_ cracks knuckles
23:30:18 <elliott_> Bleh, this makes me want to expand my monad stack
23:30:20 <elliott_> To include Reader
23:30:26 <elliott_> The arguments never change do they
23:30:32 <elliott_> Unless there's some argument-changing fingerprint I guess
23:30:44 <elliott_> But yeah, I need to have them passed to the interpreter because getArgs would be stupid unreliable with option arguments and the like
23:31:09 <Vorpal> elliott_, this shows some humour (hopefully): The New York Police Department (NYPD) stated: "We don't plan any additional coverage for the end of the world. Indeed, if it happens, fewer officers will be required for streets that presumably will be empty."
23:31:10 -!- pikhq has quit (Ping timeout: 244 seconds).
23:31:33 <pikhq_> 5 more hours until the beginning of the end.
23:32:55 <Sgeo_> pikhq_, isn't it supposed to be at 6?
23:34:06 <pikhq_> Sgeo_: Yes, and it's... 4 hours and 26 minutes until it is 18:00 somewhere.
23:34:40 <monqy> cant wait
23:34:57 <elliott_> pikhq_: Actually, four and a half.
23:34:59 <elliott_> Oh, right.
23:35:03 <elliott_> In Kiritimati.
23:35:13 <elliott_> OTOH the news might not get out of there.
23:35:32 <pikhq_> elliott_: They're predicting a massive earthquake when the festivities start.
23:35:57 <elliott_> True.
23:35:59 <pikhq_> At the very least, the tsunami hitting Hawaii would be noticable.
23:47:46 -!- zzo38 has joined.
23:48:14 -!- TeruFSX has quit (Ping timeout: 240 seconds).
23:48:31 <elliott_> Deewiant: Hmm, is there any "system state" in Funge apart from the arguments and environment variables? I guess that's ill-defined
23:48:55 <Deewiant> Ill-defined, yes :-P
23:49:07 -!- zzo38 has set topic: Discussion about how to be more insane without discarding your vision | Logs: http://codu.org/logs/_esoteric/ and http://tunes.org/~nef/logs/esoteric/?C=M;O=D.
23:49:15 <Deewiant> Of course you can access the whole filesystem with i/o
23:49:24 <elliott_> I just mean that
23:49:25 <elliott_> FungeState { fungeSpace :: FungeSpace
23:49:25 <elliott_> , ipList :: ([IP],[IP])
23:49:25 <elliott_> , maxIPNumber :: Value
23:49:25 <elliott_> , globalFPState :: GlobalFPState }
23:49:31 <elliott_> will look really weird if I tag "also, arguments" on to it
23:49:36 <elliott_> So I want an excuse to make a SystemState record :D
23:50:39 <Deewiant> Can't think of anything else from the top of my head
23:50:53 * Patashu checks his watch
23:50:55 <Patashu> Anyone raptured yet?
23:51:17 <elliott_> Like we said, four and a half hours to go.
23:51:22 <elliott_> Maybe closer to four now.
23:51:27 <Patashu> Drat
23:51:31 <Patashu> Time zones have foiled me for the last time
23:51:42 <Patashu> Since I am a supervillain, I will solve this problem by UNROLLING THE EARTH!!!
23:52:13 <Patashu> When every country has the same normal vector, there will BE no time zones!
23:54:05 <zzo38> Patashu: Can you do that?
23:54:29 <Sgeo_> zzo38, he's a supervillian. He can't, because some hero will stop him.
23:54:40 <zzo38> I don't think there is rapture. I think the text in the Bible is not necessarily literal! Also there may be mistakes due to whatever
23:55:01 <Sgeo_> zzo38, I'm pretty sure no one here actually thinks the Rapture is coming.
23:55:19 <zzo38> Sgeo_: You are probably correct.
23:55:50 <Patashu> Blowing up the earth is so cliche.
23:55:56 <Patashu> I want to leave it intact, but disrupted in a fundamental way!
23:58:33 <elliott_> BAD: "foo"G failed
23:58:33 <elliott_> Argh
23:58:35 <elliott_> WHen did I break G
23:58:38 <elliott_> [asterisk]When
23:58:58 <elliott_> BAD: i misread or o miswrote
23:58:58 <elliott_> Eurgh
23:59:11 <elliott_> BAD: opening 'mycorand.bf' with i failed
23:59:11 <elliott_> The file is part of Mycology and should exist.
23:59:11 <elliott_> If it does, perhaps the system isn't giving permission to read it.
23:59:19 <elliott_> Deewiant: I see Mycology doesn't support, ehm, out of tree builds :-0
23:59:21 <elliott_> [asterisk]:-)
←2011-05-19 2011-05-20 2011-05-21→ ↑2011 ↑all