←2009-07-11 2009-07-12 2009-07-13→ ↑2009 ↑all
00:00:42 <oerjan> instance Bits a => Bits (a -> a -> a) where (xor f g) x y = f x y `xor` g x y
00:01:13 <ehird> :src Bits
00:01:16 <ehird> @src Bits
00:01:16 <lambdabot> Source not found. Wrong! You cheating scum!
00:01:24 <ehird> oerjan: i'm sure there's more than xor anyway
00:01:55 <oerjan> a whole heap of methods, actually
00:03:13 <oerjan> testBit is the one that could be a problem to do sanely
00:03:16 <oerjan> :t testBit
00:03:17 <lambdabot> forall a. (Bits a) => a -> Int -> Bool
00:03:27 <oerjan> oh and isSigned
00:03:31 <oerjan> :t isSigned
00:03:32 <lambdabot> forall a. (Bits a) => a -> Bool
00:03:44 <ehird> with state you could do it
00:03:52 <ehird> isSigned f = thunk (waitForInput f)
00:03:52 -!- Judofyr has quit (Remote closed the connection).
00:03:55 <ehird> well
00:03:58 <ehird> isSigned f = analyze (thunk (waitForInput f))
00:04:13 <oerjan> bitSize seems a bit dubious, although easy to cheat
00:04:20 <oerjan> ehird: huh?
00:04:38 -!- KingOfKarlsruhe has joined.
00:04:38 <ehird> oerjan: as in, "don't evaluate until we get two inputs for f from the ether; then analyze the result"
00:04:50 <ehird> so forcing (isSigned f) would hang until you did (magicallyPsychicTransmission v1 v2)
00:04:59 <ehird> but haskell doesn't do such evil state :)
00:05:12 <oerjan> it needs to be polymorphic, remember?
00:05:22 <oerjan> instance Bits a => Bits (a -> a -> a)
00:05:43 <ehird> oerjan: magicallyPsychicTransmission :: Bits a => TokenOfTransmission a -> a -> a -> ()
00:06:42 <oerjan> it's not _particularly_ hard to set it undefined either
00:06:57 <ehird> oerjan: but this is more correct!
00:07:03 <ehird> albeit breaking everything else in the proess
00:07:45 -!- pikhq has joined.
00:15:11 <ehird> So.
00:15:15 <ehird> :t fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap
00:15:17 <lambdabot> forall (f :: * -> *) (f1 :: * -> *) (f2 :: * -> *) a b (f3 :: * -> *). (Functor f, Functor f1, Functor f2, Functor f3) => f (f1 (f2 (a -> b))) -> f (f1 (f2 (f3 a -> f3 b)))
00:15:35 <oerjan> yes, that one is periodic
00:15:49 <Gracenotes> with the function instance
00:15:53 <ehird> :t fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap
00:16:03 * ehird kicks lambdabot
00:16:03 <Gracenotes> ..however it takes some time to infer longer fmap chains
00:16:09 <lambdabot> thread killed
00:16:09 <Gracenotes> try it in ghci
00:16:14 <ehird> :t fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap
00:16:17 <oerjan> that doesn't mean type checking doesn't blow up :D
00:16:29 <lambdabot> thread killed
00:16:34 <Gracenotes> well, this is type inference. and it is decidable, just takes some time.
00:16:42 <ehird> Gracenotes: I am a Truly Accepted & Worthwhile Endeavor of the Ancient Society of the "Lambda-Bot", est. 1758.
00:16:57 <oerjan> Gracenotes: (doubly?) exponential
00:16:58 <ehird> We swear off such Foul demons as that monster "G-H-C-I".
00:17:00 <Gracenotes> @djinn (f -> f1 -> f2 -> a -> b) -> (f -> f1 -> f2 -> (f3 -> a) -> f3 -> b) -- using function instances of the above chain
00:17:01 <lambdabot> Cannot parse command
00:17:05 <Gracenotes> blargh you
00:17:10 <Gracenotes> @djinn (f -> f1 -> f2 -> a -> b) -> (f -> f1 -> f2 -> (f3 -> a) -> f3 -> b)
00:17:10 <ehird> We are pure; and fathomed we must be.
00:17:11 <lambdabot> f a b c d e f = a b c d (e f)
00:17:33 <Gracenotes> oddly enough, it seems that any chain of fmaps always produces djinn functions in the original order
00:17:40 <ehird> For lo, this is Flight, and this is the Holy Ghost, and our Endeavor is to Achieve the Union of these Concepts manifest.
00:17:49 <Gracenotes> just with parens. like, for instance, a b c d e -> a (b c) (d e)
00:17:54 <ehird> :t t fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap
00:18:01 <lambdabot> Couldn't match expected type `((a -> b) -> f a -> f b)
00:18:01 <lambdabot> -> ((a1 -> b1) -> f1 a1 -> f1 b1)
00:18:01 <lambdabot> -> ((a2 -> b2) -> f2 a2 -> f2 b2)
00:18:04 <ehird> oops
00:18:07 <ehird> :t fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap
00:18:09 <Gracenotes> it is useless
00:18:13 <Gracenotes> SPAMMER NO SPAMMING!
00:18:13 <ehird> :t fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap
00:18:14 <Gracenotes> SPAMMER NO SPAMMING!
00:18:16 <Gracenotes> SPAMMER NO SPAMMING!
00:18:18 <ehird> :t fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap
00:18:18 <Gracenotes> SPAMMER NO SPAMMING!
00:18:21 <ehird> Gracenotes: I'm not spamming, stop it.
00:18:22 <lambdabot> thread killed
00:18:28 <lambdabot> thread killed
00:18:33 <lambdabot> thread killed
00:18:41 <ehird> thread holocaust
00:19:04 <Gracenotes> etymology? killed with fire?
00:19:16 <ehird> :t fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap
00:19:31 <lambdabot> thread killed
00:19:37 <Gracenotes> it is srsly cyclic
00:19:40 <ehird> :t fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap
00:19:41 <pikhq> I'm renaming fmap.
00:19:43 <pikhq> It is now Bufallo.
00:19:48 <ehird> pikhq: Bufallo?
00:19:49 <ehird> Wat.
00:19:53 <lambdabot> forall (f :: * -> *) (f1 :: * -> *) (f2 :: * -> *) a b (f3 :: * -> *). (Functor f, Functor f1, Functor f2, Functor f3) => f (f1 (f2 (a -> b))) -> f (f1 (f2 (f3 a -> f3 b)))
00:19:57 <ehird> Bufe., allo
00:20:00 <ehird> *Buf, allo.
00:20:06 <oerjan> pikhq: impossible, Bufallo is a constructor *ducks*
00:20:27 <ehird> I wish we had Caleskell.
00:20:28 <pikhq> oerjan: I am inverting the rules.
00:20:31 <Gracenotes> :t Just . Just . Just . Just . Just . Just . Just . Just
00:20:37 <lambdabot> forall a. a -> Maybe (Maybe (Maybe (Maybe (Maybe (Maybe (Maybe (Maybe a)))))))
00:20:38 <ehird> :t let (.) = fmap in (.) . . (.)
00:20:40 <lambdabot> parse error on input `.'
00:20:43 <ehird> :t let (.) = fmap in (.) . (. (.))
00:20:46 <lambdabot> forall (f :: * -> *) b a b1 (f1 :: * -> *). (Functor f1, Functor f) => ((f1 a -> f1 b1) -> b) -> f (a -> b1) -> f b
00:21:03 -!- KingOfKarlsruhe has quit (Remote closed the connection).
00:21:05 <ehird> :t let (.) = fmap in (.) . (. (.)) . (((.) . ((.) . (.)) .) . ((.) .) . (.)
00:21:14 <lambdabot> parse error (possibly incorrect indentation)
00:21:14 <ehird> boom
00:21:17 <ehird> waaaaaaaaat
00:21:17 <Gracenotes> some pl'ing eh
00:21:29 <Gracenotes> me no likey (.) = fmap
00:21:31 <ehird> :t let (.) = fmap in (.) . ((.)) . ( ((.) . ((.) . (.)) .) . ((.) .)) . (.)
00:21:38 <lambdabot> forall (f :: * -> *) (f1 :: * -> *) (f2 :: * -> *) (f3 :: * -> *) (f4 :: * -> *) a b (f5 :: * -> *) a1. (Functor f5, Functor f4, Functor f3, Functor f2, Functor f1, Functor f) => (a1 -> b) -> f (f1 (
00:21:38 <lambdabot> a -> a1)) -> f (f1 (f2 (f3 (f4 (f5 a))) -> f2 (f3 (f4 (f5 b)))))
00:21:39 <ehird> Gracenotes: but (.) and map are useless; they're just fmap
00:21:43 <oerjan> Gracenotes: that's not odd. anything composed from (.) can be unwound when applied, and it never swaps anything
00:21:44 <ehird> plus, "succ . [1,2,3]" looks jawsome
00:21:47 <pikhq> @src (->) fmap
00:21:48 <lambdabot> fmap = (.)
00:21:54 <ehird> @src [] fmap
00:21:54 <lambdabot> fmap = map
00:21:58 <pikhq> Any questions?
00:22:01 <ehird> @unpl (.) . ((.)) . (((.) . ((.) . (.)) .) . ((.) .)) . (.)
00:22:02 <oerjan> e.g. (.) a b c = a (b c)
00:22:02 <lambdabot> (\ z b c f h i l o s -> z (b c f (h i l o s)))
00:22:03 <Gracenotes> oerjan: that is true.
00:22:08 <ehird> Hilos.
00:22:19 <Gracenotes> isn't that a greek word
00:22:22 <ehird> @unpl let (.) = fmap in (.) . ((.)) . (((.) . ((.) . (.)) .) . ((.) .)) . (.)
00:22:22 <lambdabot> let { (.) = fmap} in (\ z b c f h i l o s -> z (b c f (h i l o s)))
00:22:27 <ehird> Laaaaame
00:22:29 <ehird> @unlet let (.) = fmap in (.) . ((.)) . (((.) . ((.) . (.)) .) . ((.) .)) . (.)
00:22:29 <lambdabot> Parse error
00:22:34 <ehird> BITCH YOUR FUCK BUGGER.
00:22:35 <ehird> :|
00:22:50 <ehird> :t liftM
00:22:59 <Gracenotes> lambdabot, ehird mood inference!
00:23:00 <lambdabot> forall a1 r (m :: * -> *). (Monad m) => (a1 -> r) -> m a1 -> m r
00:23:05 <oerjan> Gracenotes: what is more you can do it in reverse too, except for id in the degenerate case iirc
00:23:06 <ehird> :t liftM2
00:23:07 <Gracenotes> thread killed
00:23:08 <lambdabot> forall a1 a2 r (m :: * -> *). (Monad m) => (a1 -> a2 -> r) -> m a1 -> m a2 -> m r
00:23:15 <ehird> :t liftM2 liftM2
00:23:18 <lambdabot> forall a1 a2 r (m :: * -> *) (m1 :: * -> *). (Monad m, Monad m1) => m1 (a1 -> a2 -> r) -> m1 (m a1) -> m1 (m a2 -> m r)
00:23:21 <ehird> >:)
00:23:27 <ehird> > liftM2 liftM2 liftM2 liftM2 liftM2 liftM2 liftM2 liftM2 liftM2 liftM2 liftM2
00:23:33 <lambdabot> mueval-core: Prelude.read: no parse
00:23:33 <lambdabot> mueval: ExitFailure 1
00:23:37 <Gracenotes> :t liftM2.liftM2 -- this actually a useful function
00:23:39 <ehird> :t liftM2 liftM2 liftM2 liftM2 liftM2 liftM2 liftM2 liftM2 liftM2 liftM2 liftM2
00:23:53 <lambdabot> thread killed
00:23:54 <lambdabot> thread killed
00:24:00 <pikhq> It's like fmap on the monads!
00:24:04 <Gracenotes> YOU KILLED IT! YOU DIRTY HUMAN!
00:24:06 <oerjan> Gracenotes: a b (c d) = (.) (a b) c d = (.) (.) a b c d
00:24:11 <ehird> :t liftM2 liftM2 liftM2 liftM2 liftM2 liftM2 liftM2 liftM2 liftM2
00:24:15 <Gracenotes> oerjan: yes, I've deduced
00:24:23 <lambdabot> Occurs check: cannot construct the infinite type: a2 = m a2
00:24:23 <lambdabot> Expected type: a2
00:24:23 <lambdabot> Inferred type: m a2
00:24:32 <oerjan> Gracenotes: so did i a while ago
00:24:32 <ehird> oerjan: so with . we can eliminate non-(.) parens? :-D
00:24:42 <ehird> :t liftM3 (liftM2 liftM2)
00:24:43 <oerjan> ehird: yep :)
00:24:49 <oerjan> er wait
00:24:57 <lambdabot> thread killed
00:25:04 <Gracenotes> I don't spend hours upon hours on the subtleties of (.), as it stands..
00:25:15 <Gracenotes> there is also the argument/result system
00:25:16 <oerjan> ehird: no, you might still need parentheses for composing the (.) parts
00:25:27 <Gracenotes> which I am not familiar with
00:25:50 <ehird> Prelude Control.Monad> :t liftM3 (liftM2 liftM2)
00:25:50 <ehird> liftM3 (liftM2 liftM2)
00:25:51 <ehird> :: (Monad m, Monad ((->) a3), Monad m1) =>
00:25:53 <ehird> m1 (a3 -> a1 -> a2 -> r)
00:25:55 <ehird> -> m1 (a3 -> m a1)
00:25:57 <ehird> -> m1 a3
00:25:59 <ehird> -> m1 (m a2 -> m r)
00:26:19 -!- pikhq has quit (Read error: 104 (Connection reset by peer)).
00:26:44 <ehird> :t ap ap . ap . ap ap
00:26:46 <lambdabot> forall b b1 a. (((b1 -> b) -> a -> b1) -> (b1 -> b) -> a) -> (((b1 -> b) -> a -> b1) -> b1 -> b) -> ((b1 -> b) -> a -> b1) -> b
00:26:49 <ehird> oerjan: Find a use, now.
00:28:14 <Gracenotes> I've found one
00:28:20 <Gracenotes> @type undefined :: (((b1 -> b) -> a -> b1) -> (b1 -> b) -> a) -> (((b1 -> b) -> a -> b1) -> b1 -> b) -> ((b1 -> b) -> a -> b1) -> b
00:28:34 <Gracenotes> undefined is always happy to be of use ^_^
00:28:36 <lambdabot> thread killed
00:28:40 <ehird> OR IS IT
00:29:00 <oerjan> that undefined was not happy, it made suicide
00:29:24 <Gracenotes> ugh. Why am I being attracted to languages that are apparently so difficult to learn
00:29:33 <ehird> I from the proof school of Haskell view undefined as that ultimate abomination; an inconsistency whereby we can show that any given statement is true, and thus true is false, and we are all very troubled about this, and indeed consider switching to total FP languages often, but then there comes an occasional time when we want to actually do something, and we are put firmly back into our senses.
00:29:35 <Gracenotes> natural languages
00:29:39 <ehird> I looooooooove long sentences.
00:30:45 <oerjan> lessee, that ap ap . ap . ap ap has no Monad in its type
00:30:49 <Gracenotes> at first I thought I'd learn Japanese, then hopefully pick up some Kanji to eventually help with learning Chinese, and maybe learn a bit of Korean because I've heard good things about the alphabet
00:31:04 <oerjan> so it is clearly specialized to ap = s
00:31:18 <ehird> it's not
00:31:19 <Gracenotes> it seems each of these languages requires about two years each to just reach some proficiency
00:31:20 <ehird> ghci doesn't do that
00:31:25 <ehird> it gives
00:31:26 <ehird> ap ap . ap . ap ap
00:31:26 <ehird> :: (Monad ((->) ((b1 -> b) -> a -> b1)),
00:31:28 <ehird> Monad ((->) (((b1 -> b) -> a -> b1) -> b1 -> b)),
00:31:30 <ehird> Monad ((->) (b1 -> b))) =>
00:31:32 <ehird> (((b1 -> b) -> a -> b1) -> (b1 -> b) -> a)
00:31:35 <ehird> -> (((b1 -> b) -> a -> b1) -> b1 -> b)
00:31:36 <ehird> -> ((b1 -> b) -> a -> b1)
00:31:38 <ehird> -> b
00:31:40 <ehird> incidentally, adding any more . ap ap or . aps to the mix breaks it
00:31:42 <ehird> infinite type
00:31:53 <ehird> oerjan: oh hm
00:31:57 <oerjan> ehird: whatever, it clearly uses the -> instance
00:31:57 <ehird> (Monad ((->)...))
00:31:59 <Gracenotes> maybe I should stick to a romance language..
00:32:01 <ehird> that's odd
00:32:04 <ehird> i've never seen that before ;P
00:32:06 <ehird> *:P
00:32:13 <ehird> Gracenotes: LEARN DGIJOBJDFI
00:32:17 <oerjan> ehird: maybe you haven't imported the instance?
00:32:24 <ehird> ah!
00:32:24 <ehird> yes
00:32:39 <Gracenotes> ehird: is it a useful language to know in the real world????!?
00:32:45 <oerjan> Control.Monad.{Reader,Instances}
00:32:57 <ehird> Gracenotes: HURF DURF I TURN KLAXON
00:34:49 <oerjan> what is DGIJOBJDFI?
00:34:59 <oerjan> no google hits
00:35:38 <ehird> ADAJSODIJO
00:36:02 -!- pikhq has joined.
00:36:21 <oerjan> @unpl ap ap . ap . ap ap
00:36:21 <lambdabot> (\ c -> (\ m n -> m >>= \ k -> n >>= \ j -> return (k j)) >>= \ e -> (\ w -> ((\ ah ai -> ah >>= \ af -> ai >>= \ ae -> return (af ae)) >>= \ z -> c >>= \ y -> return (z y)) >>= \ t -> w >>= \ s ->
00:36:21 <lambdabot> return (t s)) >>= \ d -> return (e d))
00:36:28 <oerjan> !
00:36:48 * oerjan goes back to doing it by hand
00:37:13 <Gracenotes> c m n k n j k j e w ah ai ah af ai ae af ae z c y z y t w s t s d e d
00:37:44 <Gracenotes> I missed an m.
00:38:15 <Gracenotes> also, I think the intro to Manns's Blinded by the Light is the best part. verse is meh.
00:38:45 <oerjan> (ap ap . ap . ap ap) x y z = ap ap (ap (ap ap x)) y z = ap y (ap (ap ap x) y) z = y z (ap (ap ap x) y z)
00:39:04 -!- pikhq has quit (Read error: 104 (Connection reset by peer)).
00:39:42 <Gracenotes> oerjan: function application is left-associative
00:40:09 <oerjan> = y z (ap ap x z (y z)) = y z (ap z (x z) (y z))
00:40:12 <oerjan> and?
00:41:09 <Gracenotes> I'm probably mistaken, but for.. ap ap (ap (ap ap x)) y z -> ap y (ap (ap ap x) y) z
00:42:22 <oerjan> is there something wrong with that?
00:42:36 <Gracenotes> I think it's right, but I'm too tired to determine if this is the case. seems anomalous..sort of
00:42:44 <Gracenotes> hm, .check.
00:42:46 <oerjan> ap = s = \a b c -> a c (b c), btw.
00:42:53 <Gracenotes> yes, I know..
00:43:24 <Gracenotes> oh I see, you're applying the first ap there
00:43:33 <Gracenotes> it almost seemed like you were applying the second
00:43:39 <Gracenotes> but that is not the case
00:43:40 <oerjan> huh
00:44:18 <oerjan> = y z (z y z (x z (y z)))
00:44:52 <Gracenotes> anyway, it would be nice to mark ap/>>= to pl to assert that it applies to (->)r
00:45:23 <oerjan> you mean unpl
00:45:40 <Gracenotes> both
00:45:51 <Gracenotes> come to think about it
00:45:57 <oerjan> @pl s x y z = x z (y z)
00:45:57 <lambdabot> s = ap
00:46:06 <oerjan> pl already knows how to use them
00:46:32 <Gracenotes> although once it turns it into ap, it doesn't know anything about it
00:46:39 <Gracenotes> so to say
00:46:44 <ehird> oerjan: just let ap x y z = x z (y z) in ...
00:46:47 <ehird> then you won't get monad spew
00:47:16 <Gracenotes> if only pl were that smart
00:47:50 <oerjan> @pl ap id
00:47:51 <lambdabot> ap id
00:48:01 <ehird> Gracenotes: it is
00:48:02 <oerjan> :t ap
00:48:04 <ehird> just prefix your shit with that
00:48:05 <ehird> jeez :P
00:48:17 <lambdabot> thread killed
00:48:20 <oerjan> :t ap
00:48:35 <ehird> :t ap id
00:48:36 <lambdabot> thread killed
00:48:37 <Gracenotes> oh gawd, there are 11183 characters in the Korean unicode block
00:48:47 <Gracenotes> for combined Hangeul characters
00:48:50 <lambdabot> thread killed
00:49:24 <oerjan> :t map
00:49:34 <oerjan> something's wrong with lambdabot
00:49:39 <lambdabot> thread killed
00:49:43 <ehird> we killed it?
00:49:43 <ehird> :D
00:49:50 <Gracenotes> no u did
00:50:03 <oerjan> maybe it's being spammed by someone else
00:51:36 <Gracenotes> death note anime: y/n?
00:53:43 -!- pikhq has joined.
00:56:34 -!- pikhq has quit (Read error: 104 (Connection reset by peer)).
00:58:21 <oerjan> :t map
00:58:23 <lambdabot> forall a b. (a -> b) -> [a] -> [b]
00:59:00 <oerjan> :t ap
00:59:01 <lambdabot> forall (m :: * -> *) a b. (Monad m) => m (a -> b) -> m a -> m b
00:59:11 -!- pikhq has joined.
01:01:15 <ehird> :t ap . (:[])
01:01:16 <lambdabot> forall a b. (a -> b) -> [a] -> [b]
01:01:23 <ehird> :t ap . return
01:01:24 <lambdabot> forall (m :: * -> *) a b. (Monad m) => (a -> b) -> m a -> m b
01:01:28 <ehird> @pl ap . return
01:01:29 <lambdabot> fmap
01:01:31 <ehird> lol
01:01:38 <oerjan> @pl ap return
01:01:39 <lambdabot> ap return
01:02:27 <oerjan> :t ap.($)
01:02:29 <lambdabot> forall a b a1. (a1 -> a -> b) -> (a1 -> a) -> a1 -> b
01:09:45 <pikhq> :t ap `fmap` ($)
01:09:46 <lambdabot> forall a b a1. (a1 -> a -> b) -> (a1 -> a) -> a1 -> b
01:12:37 <ehird> I want to make a gloriously unsafe language.
01:12:49 <ehird> With macros and syntax
01:12:51 <ehird> :|
01:13:35 <ehird> Also, things like (printf "foo %s") can work strongly-typed because "foo %s" can be taken as a type constructed by calling a macro.
01:13:36 <ehird> Somehow.
01:15:13 * oerjan did not expect to see "gloriously unsafe" and "strongly-typed" in the same language
01:15:22 <ehird> oerjan: The ML family of languages want a word.
01:15:27 <ehird> With you. In private.
01:17:34 <oerjan> i don't think of those when hearing "gloriously unsafe"
01:18:51 <oerjan> iirc ML was around where the phrase "well-typed programs cannot go wrong" was invented
01:22:04 <pikhq> ehird: So, what do you want? Strongly-typed, good macros, close to the hardware?
01:22:08 <pikhq> :P
01:22:32 <ehird> Not the last one.
01:24:04 <ehird> pikhq: Let's say: very nice type system, nice enough that you can use it as a scripting language and everything Just Works. side effects. good, seamless macros (NOT anything like TH)
01:24:29 <ehird> eg the list with elements 1, 2 is of type [1 | 2]
01:24:30 <pikhq> So, strongly typed M-expression Lisp. :P
01:24:41 <ehird> 1.. is [Num] or whatever
01:24:42 <bsmntbombdood_> eeeewww mexps
01:24:58 <ehird> elements 3, "hello", () is [3 | "hello" | ()]
01:25:17 <ehird> foo x = [3, "hello", (), x]
01:25:18 <ehird>
01:25:29 <ehird> foo :: a -> [3 | "hello" | () | a]
01:25:37 <ehird> type sigs pretty much reflect the definition in this case
01:26:34 <bsmntbombdood_> wtf is the konami code
01:26:43 <ehird> google it
01:26:59 <Sgeo> ↑↑↓↓←→←→BA[start]
01:28:11 -!- coppro has joined.
01:29:39 <ehird> "Putting all of these qubits into superposition states — the initial Hamiltonian in the adiabatic algorithm — gives 2^{128} \sim 3 \cdot 10^{38} simultaneously held states. Not quite the number of atoms in the earth, but close."
01:29:42 <ehird> 128 qubit chip
01:29:47 <ehird> http://dwave.wordpress.com/2009/04/14/128-qubit-chip-mounted-on-io-system/
01:46:25 <oerjan> armageddon scenario 34016: a quantum computer putting 256 qubits in superposition causes the actual simulation earth is living in to run out of memory
01:54:40 -!- M0ny has quit.
02:03:05 -!- Gracenotes_ has joined.
02:06:12 <pikhq> "Monad the Ultimate".
02:06:15 <pikhq> What a great idea.
02:12:02 -!- Gracenotes has quit (Connection timed out).
02:12:31 -!- Gracenotes_ has changed nick to Gracenotes.
02:24:53 -!- FireFly has quit ("Later").
02:24:56 -!- BeholdMyGlory has quit (Remote closed the connection).
02:34:16 -!- calamari has quit (Remote closed the connection).
03:34:50 <pikhq> -> as a monad is.. Impressive.
03:36:59 <oerjan> > mapM (+) [1,2,3] 4
03:37:00 <lambdabot> [5,6,7]
03:38:57 <pikhq> Yes. I grok it. It's just pretty impressive. :)
03:52:21 <Sgeo> Does O3D already have the Intel stuff in it?
03:52:27 <Sgeo> Or is that not implemented uet?
03:56:29 <Sgeo> Restarting Firefox 3.5==not smart
03:56:30 <Sgeo> zzz
03:57:17 * oerjan saw that on reddit
04:02:11 <Sgeo> oerjan, O3D and Intel, or the 3.5 issues?
04:02:14 <Sgeo> Also, all I see is water
04:02:39 <oerjan> 3.5
04:03:19 <oerjan> but, i recommend _not_ using a computer in water
04:03:53 <oerjan> unless, of course, it is special built for the purpose
04:06:14 <Sgeo> lol
04:23:55 -!- coppro has quit (Remote closed the connection).
04:37:14 -!- coppro has joined.
05:13:10 -!- oerjan has quit ("Good night").
05:32:03 -!- DarkPants has joined.
05:32:37 -!- GreaseMonkey has quit (Nick collision from services.).
05:32:39 -!- DarkPants has changed nick to GreaseMonkey.
05:49:46 -!- upyr[emacs] has quit (Remote closed the connection).
06:00:16 -!- pikhq has quit (Read error: 104 (Connection reset by peer)).
06:09:20 -!- Pthing has quit (Remote closed the connection).
06:15:07 -!- Sgeo has quit (Read error: 60 (Operation timed out)).
06:55:37 -!- augur has quit (Read error: 104 (Connection reset by peer)).
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:09:45 -!- coppro has quit (Remote closed the connection).
08:16:05 -!- DarkPants has joined.
08:21:26 -!- GreaseMonkey has quit (Nick collision from services.).
08:21:30 -!- DarkPants has changed nick to GreaseMonkey.
08:24:13 -!- Gilmore has joined.
08:30:26 <Deewiant> > map (\x -> fst (randomR (0,5) (mkStdGen x))) [0..30]
08:30:27 <lambdabot> [5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5]
09:06:28 -!- Gilmore has quit ("dig").
09:16:29 <fizzie> Looks random to me.
09:19:20 -!- MigoMipo has joined.
10:03:46 -!- augur has joined.
10:28:08 -!- MigoMipo has quit ("QuitIRCServerException: MigoMipo disconnected from IRC Server").
11:09:05 -!- GreaseMonkey has quit ("HydraIRC -> http://www.hydrairc.org <- Nobody cares enough to cybersquat it").
11:18:08 -!- BeholdMyGlory has joined.
11:29:20 -!- KingOfKarlsruhe has joined.
11:45:05 -!- Judofyr has joined.
11:59:32 <AnMaster> <pikhq> AnMaster: 100k tarballs. <pikhq> When you have a 2 second latency. <-- portage can start downloads in parallel iirc?
12:04:10 -!- jix has joined.
12:36:47 -!- inurinternet has quit (Read error: 110 (Connection timed out)).
13:22:38 -!- MizardX has joined.
13:34:38 -!- KingOfKarlsruhe has quit (Remote closed the connection).
13:35:35 -!- BeholdMyGlory has quit (Remote closed the connection).
13:38:40 -!- BeholdMyGlory has joined.
13:55:25 -!- BeholdMyGlory has quit (Remote closed the connection).
13:59:14 -!- BeholdMyGlory has joined.
14:00:51 -!- MigoMipo has joined.
14:31:25 -!- MizardX has quit (Read error: 104 (Connection reset by peer)).
14:31:25 -!- MizardX- has joined.
14:31:55 -!- MizardX- has changed nick to MizardX.
14:55:16 -!- FireFly has joined.
15:14:21 -!- MizardX has quit (Read error: 110 (Connection timed out)).
15:26:50 -!- oerjan has joined.
15:29:29 <oerjan> > map (\x -> take 3 (randomRs (0,5) (mkStdGen x))) [0..30]
15:29:32 <lambdabot> [[5,5,3],[5,4,1],[5,3,0],[5,3,4],[5,2,2],[5,1,1],[5,0,5],[5,0,3],[5,5,2],[5...
15:29:41 -!- MizardX has joined.
15:30:47 * oerjan guesses it ignores the low bits
15:31:22 <oerjan> > map (\x -> fst (randomR (0,5) (mkStdGen x))) [0,33 ..1000]
15:31:23 <lambdabot> [5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5]
15:31:31 <oerjan> > map (\x -> fst (randomR (0,5) (mkStdGen x))) [0,333 ..1000]
15:31:33 <lambdabot> [5,5,5,5]
15:31:42 <oerjan> > map (\x -> fst (randomR (0,5) (mkStdGen x))) [0,3333 ..1000]
15:31:43 <lambdabot> [5]
15:31:51 <oerjan> er
15:31:55 <oerjan> > map (\x -> fst (randomR (0,5) (mkStdGen x))) [0,3333 ..100000]
15:31:56 <lambdabot> [5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,4,4,4,4,4,4,4,4,4,4,4,4,4,4]
15:32:22 <oerjan> > map (\x -> fst (randomR (0,5) (mkStdGen x))) [0,33333 ..1000000]
15:32:23 <lambdabot> [5,5,4,4,3,2,2,1,1,0,5,5,4,3,3,2,2,1,0,0,5,4,4,3,3,2,1,1,0,5,5]
15:33:00 -!- Pthing has joined.
15:34:05 <oerjan> > map (\x -> fst (random (mkStdGen x))) [0..30] :: [Int]
15:34:06 <lambdabot> [-117157315039303149,7917908265643496962,-2493721835987381530,5541392136091...
15:34:08 -!- MizardX has quit (Read error: 131 (Connection reset by peer)).
15:34:48 -!- MizardX has joined.
15:40:54 -!- sgeo has joined.
15:45:56 -!- upyr[emacs] has joined.
16:02:29 -!- augur has quit (Read error: 110 (Connection timed out)).
16:03:11 -!- jix has quit (Read error: 60 (Operation timed out)).
16:12:12 -!- ais523 has joined.
16:29:12 -!- pikhq has joined.
16:47:53 -!- oerjan has quit ("leaving").
16:55:05 -!- MizardX has quit (Read error: 131 (Connection reset by peer)).
16:55:15 -!- MizardX has joined.
17:25:18 -!- Pthing has quit ("Leaving").
17:25:30 -!- Pthing has joined.
17:30:16 -!- icefox has quit.
17:34:31 -!- MizardX- has joined.
17:36:03 -!- MizardX has quit (Success).
17:36:28 -!- MizardX- has changed nick to MizardX.
17:45:15 -!- pikhq has quit (Read error: 104 (Connection reset by peer)).
17:45:50 -!- pikhq has joined.
17:57:51 -!- BeholdMyGlory has quit (Remote closed the connection).
17:58:07 -!- BeholdMyGlory has joined.
18:06:15 -!- pikhq has quit (Read error: 104 (Connection reset by peer)).
18:07:15 -!- MizardX has quit (Read error: 104 (Connection reset by peer)).
18:07:56 -!- MizardX has joined.
18:08:15 -!- pikhq has joined.
18:11:18 -!- Judofyr has quit (Read error: 60 (Operation timed out)).
18:13:36 -!- Judofyr has joined.
18:23:44 <GregorR> I was in Genova with a group of about 10 people from ECOOP. I was the only American in this group. We stopped because somebody wanted to buy something; after she did, the shopkeeper looked at us, then pointed at me and said "You're Americano, sí?". I said "Sí", and he responded "I love Americans!" It was weird, but what's more weird is that he had clearly identified me as the only American in this group (he didn't think the others were Americans), wi
18:23:47 <GregorR> thout my saying anything. I guess I just exude Americanism.
18:26:55 -!- MizardX has quit (Read error: 104 (Connection reset by peer)).
18:27:08 -!- MizardX has joined.
18:27:51 <pikhq> GregorR: It's the Moxie.
18:29:28 <GregorR> I'm pretty Moxious.
18:29:38 <GregorR> I was wearing a fuschia shirt with an orange tie :P
18:37:47 <pikhq> WHY THE CRAP DOES ICEDTEA NOT COUNT AS A JDK, GENTOO. WHY.
18:39:56 <GregorR> Because it's part of OpenJDK now? :P
18:41:18 <pikhq> Gentoo offers the "icedtea6" package, which provides OpenJDK.
18:41:21 <pikhq> (I think?)
18:42:29 <pikhq> Anyways, icedtea6 tries to pull in sun-jdk. Which is retarded.
18:44:48 <GregorR> Icedtea was mostly the library stuff, the JDK should be OpenJDK.
18:45:13 <GregorR> Just install OpenJDK, then install icedtea, and go "whoah liek it works"
18:45:20 -!- Gracenotes has quit ("Leaving").
18:45:31 <pikhq> Irf there were an OpenJDK package, I would.
18:47:07 <GregorR> "IRF" is cybersex over IRC.
18:52:54 * pikhq has managed to get icedtea to use gcj-jdk as a build-time dependency. Yay?
18:54:49 -!- sebbu2 has joined.
18:54:55 <GregorR> Uh, not yay :P
18:55:18 <GregorR> gcj = suck :P
18:57:51 -!- sebbu has quit (Read error: 60 (Operation timed out)).
18:58:26 * pikhq wonders why icedtea6 depends on a JDK.
18:58:37 <pikhq> When it provides virtual/jdk.
19:03:02 <pikhq> > do {x <- (+1); return . (+x)} 5
19:03:03 <lambdabot> <no location info>: parse error on input `5'
19:03:11 <pikhq> > do {x <- (+1); return . (+x)} $ 5
19:03:12 <lambdabot> No instance for (GHC.Show.Show (m a))
19:03:13 <lambdabot> arising from a use of `M8531327416...
19:03:20 <pikhq> Curses.
19:04:05 <pikhq> > do {x <- (+1); y <- (+x); return y } $ 5
19:04:07 <lambdabot> 11
19:04:27 -!- Gracenotes has joined.
19:05:49 <pikhq> @src $
19:05:49 <lambdabot> f $ x = f x
19:13:17 <ehird> Hello.
19:13:29 <pikhq> Hellote.
19:22:44 -!- BeholdMyGlory has quit (Remote closed the connection).
19:24:59 -!- BeholdMyGlory has joined.
19:37:51 <AnMaster> * pikhq wonders why icedtea6 depends on a JDK. <pikhq> When it provides virtual/jdk. <-- needed to bootstrap
19:37:59 <AnMaster> <pikhq> AnMaster: 100k tarballs. <pikhq> When you have a 2 second latency. <-- portage can start downloads in parallel iirc?
19:38:35 <AnMaster> pikhq, make sure parallel-fetch is in FEATURES
19:38:47 <AnMaster> fetches packages while the previous is compiling
19:39:40 <ehird> ah, bootstraps
19:39:43 <ehird> the stupidest things ever
19:39:56 <pikhq> AnMaster: Yes, I have it in FEATURES.
19:40:09 <pikhq> Also, icedtea6 is installed, yet it depends on another JDK.
19:40:29 <ehird> macports downloads a ghc binary to compile ghc
19:41:30 <pikhq> As does Gentoo.
19:41:54 <pikhq> (if there's not already an installed ghc)
19:44:01 <AnMaster> you can use binary only ghc iirc on gentoo
19:44:27 <AnMaster> also bootstrapping icedtea was an educated guess
19:44:37 <AnMaster> I remember reading that java is partially written in java
19:44:54 -!- Judofyr has quit (Read error: 110 (Connection timed out)).
19:45:14 <pikhq> The Java compiler is, yes.
19:45:24 <AnMaster> that was what I meant
19:46:17 <pikhq> Why Gentoo can't just have a precompiled javac is beyond me.
19:54:46 -!- oerjan has joined.
19:56:25 <oerjan> <GregorR> I was wearing a fuschia shirt with an orange tie :P
19:56:28 <oerjan> no hat?
19:56:34 <ehird> http://merd.sourceforge.net/ I wish this wasn't dead
19:56:52 <ehird> well maybe with a name that isn't "shi—"
19:56:59 <ehird> (intentionally0
19:57:00 <ehird> )
19:57:24 <oerjan> :D
19:58:04 <oerjan> the icon is a fly
19:58:12 <GregorR> oerjan: Of course I was wearing a hat.
19:58:16 <ehird> oerjan: yes it is
19:58:21 <GregorR> I don't recall which now, maybe the Tam O'Shanter?
19:58:56 <ehird> tam o'shitner
19:59:00 <ehird> ahahahah
19:59:09 <GregorR> ...............................
20:00:46 <ehird> "# horizontal layout: 1+2 * 3 is (1+2) * 3 (merd innovation!) "
20:00:49 <ehird> totally not a merd innovation
20:00:54 <ehird> i did that too
20:00:56 <oerjan> apparently its name is merdy.
20:01:56 <oerjan> "it comes from the french word ``merde'' meaning shit :)"
20:02:11 <oerjan> no innocence excuse there, no sir!
20:07:55 <ehird> oh, another thing i want:
20:08:02 <ehird> superpositions
20:08:17 <ehird> x == (1 \/ 2) is (x == 1) || (x == 2)
20:08:28 <ehird> well actually, it's
20:08:37 <ehird> (x == 1) \/ (x == 2)
20:08:42 <ehird> but it comes to the same thing if you collapse it
20:09:11 <oerjan> hm didn't icon have something like that
20:09:14 <ehird> yes
20:09:19 <ehird> based on pass/failing stuff
20:09:27 <ehird> but seriously, i hate writing "x in [1,2]" and shit like that
20:09:29 <ehird> it's so unflexible
20:09:48 <ehird> also, you can do quantum-y stuff with it
20:09:59 <ehird> 2 + (1 \/ 0) and do probabilities and stuff to collapse it
20:10:42 <ehird> http://search.cpan.org/~lembark/Quantum-Superpositions/lib/Quantum/Superpositions.pm — is GREAT!
20:10:49 <ehird> due to damien conway originally too
20:11:13 <ehird> foo = (1 \/ 2 \/ 3) * 2
20:11:14 <ehird>
20:11:18 <ehird> foo is (2
20:11:19 <ehird> er
20:11:24 <ehird> foo is (2 \/ 4 \/ 6)
20:11:31 <ehird> foo == 4
20:11:32 <ehird> becomes
20:11:37 <oerjan> seems your keyboard collapsed on the return key
20:11:41 <ehird> (false \/ true \/ false)
20:11:53 <ehird> you could do things like making that false
20:11:57 <ehird> since false dominates
20:12:00 <ehird> or whatever
20:12:05 <ehird> although (x \/ x) is probably x.
20:12:09 <ehird> so it'd be (false \/ true)
20:12:23 <ehird> "This mechanism is provided by the two types of superposition available. A disjunctive superposition is true if any of its states is true, whereas a conjunctive superposition is true only if all of its states are true."
20:12:27 <ehird> i would make this a method on superpositions
20:12:33 <ehird> foo = (1 \/ 2 \/ 3) * 2
20:12:37 <ehird> if (foo.any) { ... }
20:12:41 <ehird> if (foo.all) { ... }
20:13:28 <ehird> print "The smallest element is: ",
20:13:28 <ehird> $array[any(@i)<=all(@i)];
20:13:30 <ehird> is pretty beautiful
20:13:39 <ehird> we could do that like:
20:13:43 <pikhq> If this damned thing depends on icedtea6-bin or gnu-classpath-jdk, I'm going to hunt someone down and kill them.
20:13:53 <ehird> list = [3, 7, 1, 99]
20:14:06 <pikhq> I make no guarantees as to this murder being against someone guilty of this.
20:14:07 <ehird> qntm = quantum list
20:14:11 <ehird> (quantum is just folding \/)
20:14:12 <ehird> then
20:14:18 <ehird> stuff
20:14:19 <ehird> :P
20:15:58 -!- inurinternet has joined.
20:16:01 <ehird> i'm not sure i like the any() and all() being actually fundamental to the superpositions though
20:16:08 <ehird> I'd prefer they'd be like QuantumViews
20:16:12 <ehird> so you could do after that:
20:16:24 <ehird> smallest = qntm.any <= qntm.all
20:19:13 <oerjan> > do {x <- (+1); y <- (+x); return y } $ 5
20:19:14 <lambdabot> 11
20:19:23 <ehird> oerjan: yeeeeeeeeeeeeeeees?
20:19:28 <oerjan> > do {x <- (+1); (+x) } $ 5
20:19:29 <lambdabot> 11
20:19:46 <oerjan> just improving pikhq's expression
20:20:14 <ehird> > succ >>= (+) $ 5
20:20:14 <lambdabot> 11
20:20:24 <oerjan> hey i was getting to that :D
20:20:31 <oerjan> (well maybe not the succ)
20:20:32 <ehird> > (+) =<< succ $ 5
20:20:33 <lambdabot> 11
20:20:39 <ehird> (easier to comprehend)
20:22:01 <ehird> oerjan: i'm going to implement superpositions in haskell >:)
20:22:10 <ehird> prolly have to violate some laws
20:24:42 <ehird> data Superposition a = Superposition [a]
20:24:46 <ehird> how boring!
20:27:32 <pikhq> data Superposition a = Superposition [a] deriving Monad
20:27:35 <oerjan> > [all, any] <*> (> 5) <$> [1..10]
20:27:37 <lambdabot> Couldn't match expected type `a -> a1 -> b'
20:28:03 <ehird> pikhq: deriving Monad? Uhh, no
20:28:15 <pikhq> ehird: Yes, I'm aware.
20:28:23 <pikhq> Is called shorthand.
20:28:30 <ehird> Superpositions aren't monads
20:29:11 <oerjan> > [all, any] <*> [(> 5)] <*> [[1..10]]
20:29:12 <lambdabot> [False,True]
20:29:51 <pikhq> Looks like it's a datatype that contains just a list.
20:30:32 <ehird> pikhq: Yes, and we all know that all list-things are exactly the same.
20:30:40 <ehird> You have clearly been following what I was talking about.
20:31:20 <pikhq> Bah.
20:31:47 <pikhq> > [1..5]>>=(+2)
20:31:49 <lambdabot> No instance for (GHC.Enum.Enum [b])
20:31:49 <ehird> Unfortunately, there is no way to make (1 \/ 2) and (1 \/ 2 \/ 3) work sanely in haskell. :<
20:31:50 <lambdabot> arising from the arithmetic sequence...
20:31:54 <ehird> not eeven with a typeclass
20:32:19 <pikhq> > [1..5]>>=return . (+2)
20:32:21 <lambdabot> [3,4,5,6,7]
20:32:40 <pikhq> Because mapping takes too much effort to write.
20:32:57 <ehird> pikhq: CALESKELL!
20:33:01 <ehird> (+2).[1..5]
20:33:10 <oerjan> > (+2)<$>[1..5]
20:33:10 <pikhq> Caleskell?
20:33:11 <lambdabot> [3,4,5,6,7]
20:33:28 <ehird> pikhq: Cale used to have lambdabot lie about stuff. It had (.) = fmap
20:33:32 <pikhq> oerjan: Yes, yes, there's the applicative stuff.
20:33:34 <ehird> And similar things
20:33:43 <ehird> But then it went all normal due to confusing the shit out of everyone.
20:33:55 <oerjan> group pressure!
20:33:59 <oerjan> poor lambdabot
20:34:03 <pikhq> ehird: :D
20:34:05 <pikhq> fmap should definitely be called fmap.
20:34:05 <pikhq> Erm.
20:34:05 <pikhq> (.)
20:34:12 <oerjan> food ->
20:34:13 <ehird> Yes.
20:34:16 <ehird> And "map" should not exist.
20:34:28 <pikhq> It's just a special case of fmap.
20:34:31 <pikhq> Which is lame.
20:34:35 <ehird> So is (.) :-P
20:34:36 <ehird> Indeed, though.
20:34:58 <ehird> entangle :: [a] -> Superposition a
20:34:58 <ehird> entangle [] = error "(The universe quietly expires.)"
20:36:00 <pikhq> > (+)<*>2<$>[1..5]
20:36:02 <lambdabot> No instance for (GHC.Num.Num (a -> a))
20:36:02 <lambdabot> arising from the literal `2' at <...
20:36:15 <pikhq> Ah, yes. /me should not be dumb.
20:37:05 <pikhq> Hmm.
20:37:14 <pikhq> @src (->) =<<
20:37:15 <lambdabot> Source not found. That's something I cannot allow to happen.
20:37:25 <pikhq> @src (->) >>=
20:37:25 <ais523> strange comment
20:37:26 <lambdabot> Source not found. Do you think like you type?
20:37:44 <pikhq> ...
20:37:45 <ehird> instance Eq a => Eq (Superposition a) where
20:37:45 <ehird> Superposition xs == Superposition ys = Superposition $ zipWith (==) xs ys
20:37:47 <ehird> FUCK YEAH
20:37:57 <ehird> ais523: \bot is master of the insults.
20:38:00 <ehird> @src (->) >>=
20:38:00 <lambdabot> Source not found.
20:38:02 <ehird> @src (->) >>=
20:38:02 <lambdabot> Source not found. This mission is too important for me to allow you to jeopardize it.
20:38:03 <ehird> @src (->) >>=
20:38:04 <lambdabot> Source not found. You speak an infinite deal of nothing
20:38:06 <ehird> say the Bob one!
20:38:07 <ehird> @src (->) >>=
20:38:08 <lambdabot> Source not found. That's something I cannot allow to happen.
20:38:09 <ehird> @src (->) >>=
20:38:10 <lambdabot> Source not found. I can't hear you -- I'm using the scrambler.
20:38:11 <ehird> @src (->) >>=
20:38:11 <lambdabot> Source not found. You type like i drive.
20:38:13 <ehird> SAY IT DAMMIT
20:38:14 <ehird> @src (->) >>=
20:38:15 <lambdabot> Source not found. This mission is too important for me to allow you to jeopardize it.
20:38:16 <ehird> @src (->) >>=
20:38:16 <lambdabot> Source not found. Just try something else.
20:38:18 <ehird> @src (->) >>=
20:38:18 <lambdabot> Source not found. My mind is going. I can feel it.
20:38:22 <ehird> I hate you \bot
20:38:22 <ehird> @src (->) >>=
20:38:22 <lambdabot> Source not found.
20:38:24 <ehird> @src (->) >>=
20:38:25 <lambdabot> Source not found. Wrong! You cheating scum!
20:38:26 <ehird> @src (->) >>=
20:38:27 <lambdabot> Source not found. stty: unknown mode: doofus
20:38:30 <ehird> -____________
20:38:30 <ehird> -
20:38:32 <ehird> @src (->) >>=
20:38:32 <lambdabot> Source not found. That's something I cannot allow to happen.
20:38:34 <ehird> @src (->) >>=
20:38:34 <lambdabot> Source not found. You untyped fool!
20:38:35 <pikhq> ehird: Any reason for Superposition not being a monad? It's not like it's... difficult.
20:38:36 <ehird> @src (->) >>=
20:38:37 <lambdabot> Source not found. Are you on drugs?
20:38:38 <ehird> @src (->) >>=
20:38:38 <lambdabot> Source not found. Where did you learn to type?
20:38:40 <ehird> @src (->) >>=
20:38:40 <lambdabot> Source not found. This mission is too important for me to allow you to jeopardize it.
20:38:41 <pikhq> @src -> >>=
20:38:43 <lambdabot> Source not found. You type like i drive.
20:38:45 <ehird> pikhq: That's not its semantics.
20:38:47 <ehird> @src (->) >>=
20:38:47 <lambdabot> Source not found. Sorry about this, I know it's a bit silly.
20:38:48 <ehird> @src (->) >>=
20:38:51 <lambdabot> Source not found. Have you considered trying to match wits with a rutabaga?
20:38:56 <ehird> @src (->) >>=
20:38:56 <lambdabot> Source not found. Sorry about this, I know it's a bit silly.
20:38:59 <ehird> ;;;;;;;;;;;;_;;;;;;;;;;;;
20:39:00 <ehird> @src (->) >>=
20:39:01 <lambdabot> Source not found. Are you on drugs?
20:39:03 <ehird> @src (->) >>=
20:39:03 <lambdabot> Source not found. Do you think like you type?
20:39:05 <ehird> FUCK
20:39:06 <ehird> YOU
20:39:08 <ehird> I GIVE UP\
20:39:11 <pikhq> ehird: Needs moar monads.
20:39:11 <ehird> s/\/$//
20:39:12 -!- augur has joined.
20:39:18 <Deewiant> @src -> >>=
20:39:18 <lambdabot> Source not found. You speak an infinite deal of nothing
20:39:25 <Deewiant> Which one did you want?
20:39:28 -!- Judofyr has joined.
20:39:28 <ehird> Couldn't match expected type `Bool'
20:39:29 <ehird> against inferred type `Superposition Bool'
20:39:35 <ehird> DAAAAAAAAAAAAAMN YOUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU
20:39:43 <ehird> Why isn't there a Boolean typeclass?
20:39:45 <ehird> I mean really.
20:40:13 <pikhq> GODDAMMIT ICEDTEA STOP DEPENDING ON GNU-CLASSPATH-JDK.
20:41:02 <pikhq> YOU'RE INSTALLED. YOU MAY DEPEND ON YOURSELF NOW.
20:42:34 <pikhq> "dev-java/icedtea6" IS TOTALLY SOMETHING THAT CAN RESOLVE THAT DEPENDENCY ACCORDING TO YOUR EBUILD.
20:43:59 <oerjan> @src -> (>>=)
20:44:00 <lambdabot> Source not found. That's something I cannot allow to happen.
20:44:30 <oerjan> @src (->) (>>=)
20:44:31 <lambdabot> f >>= k = \ r -> k (f r) r
20:44:34 <oerjan> whew
20:44:51 <oerjan> why the heck cannot @src ignore parentheses
20:47:17 <ehird> this kb has no delete key
20:47:20 <ehird> it ragifies me
20:49:38 <oerjan> yeah you look a bit ragged
20:52:15 <ehird> @hoogle [a] -> [a] -> [Bool]
20:52:15 <lambdabot> Prelude (++) :: [a] -> [a] -> [a]
20:52:16 <lambdabot> Data.List (++) :: [a] -> [a] -> [a]
20:52:16 <lambdabot> Data.List deleteFirstsBy :: (a -> a -> Bool) -> [a] -> [a] -> [a]
20:52:19 <ehird> meh
20:52:58 <oerjan> zipWith isn't good enough for you?
20:53:11 <ehird> i had to write it twice but then I realised i could use a where clause
20:53:20 <ehird> wait no
20:53:23 <ehird> that doesn't span across pattern matchii
20:53:28 <ehird> matchae
20:53:37 <Ilari> was that (classpath) the Java standard class library that hung if you clicked anything in the window?
20:54:14 <pikhq> Ilari: No. Classpath is the entirety of the Java standard library.
20:54:58 <oerjan> match appears to be depressingly germanic
20:55:01 <Ilari> What does GCJ use? It can't compile some Java software I have due to some missing stdlib routines.
20:55:52 <ehird> why isn't there a definition-wide where clause :<
20:55:55 <ehird> oerjan: ?
20:56:47 <Ilari> Specifically, it was missing String.<init>(byte[], Charset), PrintStream.<init>(String, String), Math.scalb(double, int) and Math.getExponent(double).
20:57:00 <oerjan> ehird: no latin endings need apply
20:57:12 <ehird> ah :P
20:58:52 -!- upyr[emacs] has quit (Remote closed the connection).
20:59:44 <pikhq> GNU Classpath.
20:59:51 <oerjan> > let f (Just x) | x < 0 = fnord | otherwise = "nope" where { fnord = show x }; f Nothing = "hm..." in f (-5)
20:59:52 <lambdabot> No instance for (GHC.Num.Num (Data.Maybe.Maybe t))
20:59:52 <lambdabot> arising from a use of...
20:59:56 <pikhq> GNU Classpath is not a complete implementation.
21:00:00 <oerjan> > let f (Just x) | x < 0 = fnord | otherwise = "nope" where { fnord = show x }; f Nothing = "hm..." in f $ Just (-5)
21:00:02 <lambdabot> "-5"
21:00:30 <ehird> Any xs == Any ys = any equal
21:00:31 <ehird> All xs == All ys = all equal
21:00:32 <ehird> where equal = zipWith (==) xs ys
21:00:40 <ehird> oerjan: think i could convince the haskell' people to standardize that as working?
21:00:43 <oerjan> ehird: because the where would then be inside several different scopes with possibly different names defined
21:00:47 <ehird> bah.
21:01:19 <oerjan> e.g. x is not defined in the f Nothing clause i wrote there
21:01:48 <oerjan> and it could even have been defined in conflicting ways
21:02:06 -!- jix has joined.
21:03:04 <ehird> what should i do then?
21:03:09 <ehird> i hate adding a stupid new one-off top level function
21:03:10 <pikhq> Turns out I had a useflag enabled that made icedtea depend on a library which depends on virtual/jdk-1.4
21:03:15 <ehird> I could use a case I guess
21:03:22 <ehird> case (x,y) of ...
21:03:31 -!- ais523 has quit (Remote closed the connection).
21:03:50 <pikhq> Stupid one-off module level function.
21:03:52 <oerjan> ehird: also you want or/and, not any/all with that definition
21:04:02 <ehird> oerjan: eh really? why?
21:04:05 <ehird> :t any
21:04:07 <lambdabot> forall a. (a -> Bool) -> [a] -> Bool
21:04:07 <oerjan> any/all takes a predicate
21:04:08 <ehird> :t all
21:04:09 <lambdabot> forall a. (a -> Bool) -> [a] -> Bool
21:04:11 <ehird> oerjan: oh
21:04:17 <ehird> oerjan: but why
21:04:19 <ehird> i'm opearting on two lists
21:04:21 <ehird> operating
21:04:50 <oerjan> equal is a [Bool]
21:04:58 <ehird> oh
21:04:59 <ehird> I see
21:06:03 <ehird> oerjan: what would you call ((a -> b -> c) -> Superposition a -> Superposition b -> Superposition c)?
21:06:06 <oerjan> ehird: hm wait there is something you can do. Any/All are constructors, right?
21:06:06 <ehird> i'm thinking something quantumy
21:06:11 <ehird> like 'entoperate'
21:06:12 <ehird> or something
21:06:15 <ehird> oerjan: yes, but I just used
21:06:18 <ehird> Any xs == Any ys = or $ zipWith (==) xs ys
21:06:18 <ehird> All xs == All ys = and $ zipWith (==) xs ys
21:06:19 <ehird> in the end
21:07:09 <oerjan> data ... = Any { inside :: [a] } | All { inside :: [a] }
21:07:22 <oerjan> would allow you to use inside in both branches
21:07:42 <ehird> what, really?
21:07:46 <oerjan> well
21:07:51 <ehird> hot, but, doesn't help with (==)
21:08:03 <oerjan> you still need a case expression
21:08:13 <oerjan> oh well
21:08:23 <ehird> oerjan: what is an operation that combines two superpositions into a third, new one anyway
21:08:27 <ehird> i need to name this thing :D
21:09:01 <oerjan> sum
21:09:13 <oerjan> (weighted sum)
21:09:29 <ehird> oerjan: isn't that just for summation or something
21:10:02 <oerjan> well that's what it is in quantum mechanics. which has little to do with the above anyway.
21:10:52 <ehird> i'll just call it operate
21:11:03 <ehird> and operate2 for the two argument version
21:15:50 <ehird> operate2 :: (a -> b -> c) -> Superposition a -> Superposition b -> Superposition c
21:16:02 <ehird> oerjan: is there a name for a zip that cycles the shorter list to fit?
21:16:25 <oerjan> not that i know of
21:17:21 <ehird> oerjan: no function that takes [a] and [b] and cycles one to fit the larger length? which is the main part of it ofc
21:19:01 <oerjan> it's a rather special purpose thing, don't you think? ;D
21:19:15 <ehird> i find myself needing it quite often
21:19:26 <ehird> i'd prefer zip worked that way by default
21:19:29 <ehird> maybe
21:23:20 <oerjan> hm... i think that would ruin deforestation
21:23:46 <ehird> deforest your face.
21:23:57 <oerjan> since you couldn't throw away the beginning of either list until the end of both was reached
21:24:37 * oerjan doesn't know how much ghc manages to deforest zips, anyway
21:24:57 <oerjan> also, it could blow up memory
21:25:18 <oerjan> > let fib = zipWith (+) fib (tail fib) in fib
21:25:23 <lambdabot> mueval-core: Prelude.read: no parse
21:25:23 <lambdabot> mueval: ExitFailure 1
21:25:26 <oerjan> er no
21:25:32 <oerjan> > let fib = 1:1:zipWith (+) fib (tail fib) in fib
21:25:33 <lambdabot> [1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181,6765,10946,1...
21:26:02 <oerjan> that would blow up with such a zip
21:26:39 <oerjan> unless it managed to detect both lists were infinite
21:27:19 <oerjan> *that
21:28:56 <ehird> oerjan: er just store the entire list
21:29:00 <ehird> ie keep 'fib' around
21:29:44 <oerjan> er the point is _not_ to do that, if you want to save memory
21:30:29 <ehird> oerjan: but you don't save memory anyway, as you bind 'fib' to a name and use it
21:30:32 <ehird> so you're keeping it around anyway
21:30:37 <oerjan> yes you would
21:30:49 <ehird> and since it'd never reach the END of either,
21:30:53 <ehird> it'd never try and cycle one
21:31:16 <oerjan> printing that fib runs in constant memory (ignoring bignums there)
21:31:44 <ehird> it would anyway
21:31:46 <pikhq> So, my hard drive failure. Turns out my 500G drive is a) notorious as the Deathstar b) hard as fuck to replace c) has a 1 year warranty.
21:31:47 <pikhq> Fuck it, I'm getting a new drive.
21:31:47 <ehird> i think you are the thinking wrong
21:31:53 <ehird> pikhq: *DeskStar
21:32:02 <ehird> you bought a hitachi drive?
21:32:12 <pikhq> ehird: No, a Samsung.
21:32:14 <ehird> welcome to stupidity, population infinite!
21:32:16 <ehird> oh
21:32:21 <oerjan> ehird: no, i'm pretty sure laziness means you don't keep the beginning of the list after the first few steps
21:32:26 <ehird> pikhq: Samsung drives are renowned
21:32:30 <ehird> spinpoint f1
21:32:36 <pikhq> This one isn't.
21:32:42 <ehird> pikhq: which model is it?
21:32:48 <ehird> anyway get a western digital.
21:32:57 <ehird> *not a Green
21:33:04 <pikhq> I'm looking at the Seagates and the WDs.
21:33:18 <ehird> if you go seagate get a barracuda
21:33:24 <ehird> if you go WD get anything but a green
21:33:30 <ehird> well maybe
21:33:32 <ehird> you might want a green
21:33:38 <ehird> there's some fud and some stuff that looks legit
21:33:42 <ehird> pikhq: what's the model you have
21:33:48 <pikhq> HD501LJ.
21:33:57 <pikhq> It failed in a few months.
21:34:01 <ehird> hmm probably crap then.
21:34:04 <ehird> pikhq: get a 1TB :-P
21:34:37 <pikhq> Quite likely.
21:39:35 <ehird> ahh i need to make this language
21:40:06 <oerjan> it's the language making addiction!
21:40:17 <ehird> yes!
21:40:19 <ehird> it would be awesome
21:40:24 <oerjan> there's got to be a pretentious greek word for it
21:40:45 <oerjan> glosso- something?
21:41:08 <AnMaster> glossomania?
21:41:25 <oerjan> yes, and -mania at the end. but it needs something in between.
21:41:30 <AnMaster> ... why does that sound like some game?
21:41:33 <oerjan> for "making"
21:42:06 <AnMaster> what is the name for "god complex" or whatever it is called.
21:42:11 <oerjan> apparently it's a disease
21:42:12 <ehird> god complex
21:42:22 <AnMaster> ehird, I meant the pretentious name
21:42:27 <oerjan> megalomania gets close
21:42:29 <ehird> god complex :P
21:42:39 <ehird> A God complex is a non-clinical term. It does not appear in the Diagnostic and Statistical Manual of Mental Disorders (DSM)[1]
21:42:46 <ehird> Narcissistic personality disorder (NPD) is a personality disorder defined by the Diagnostic and Statistical Manual of Mental Disorders, the diagnostic classification system used in the United States, as "a pervasive pattern of grandiosity, need for admiration, and a lack of empathy." [1]
21:42:48 <ehird> The narcissist is described as turning inward for gratification rather than depending on others, and as being excessively preoccupied with issues of personal adequacy, power, and prestige.[2] Narcissistic personality disorder is closely linked to self-centeredness. It is also colloquially referred to as "the God complex."
21:42:48 <AnMaster> oerjan, ah yes, and since gods great the world...
21:42:52 <AnMaster> clearly that should be used
21:42:52 <ehird> Megalomania (from the Greek word μεγαλομανία; megalo-, meaning large, and mania) is a historical term for behavior characterized by an obsession or preoccupation with wealth, power, genius, or omnipotence—often generally termed as delusions of grandeur or grandiose delusions. Megalomania denotes an obsession with having and/or obtaining, grandiosity and extravagance (especially in the form of great fame and popularity, material wealth, soci
21:42:57 <ehird> al influence or political power, or more than one or even all of the aforesaid). It may be a symptom of manic or paranoid disorders.[citation needed] However it is not considered a distinct mental disorder of itself according to the Diagnostic and Statistical Manual of Mental Disorders.
21:43:06 <ehird> they really great the world
21:43:09 <ehird> and i verb language
21:43:11 <oerjan> spammomania
21:44:14 -!- MizardX has quit (Read error: 131 (Connection reset by peer)).
21:44:32 -!- MizardX has joined.
21:46:07 <AnMaster> <ehird> and i verb language <-- some meme?
21:46:20 <ehird> dude, it's calvin and hobbes
21:46:35 <AnMaster> ehird, that is even worse than garfield IMO!
21:46:40 <ehird> .............................
21:46:48 <oerjan> verbing weirds language
21:46:49 <ehird> Did you really just say that? Do you fully understand what you just said?
21:46:52 <ehird> Are you sure you're not mixing things up, AnMaster?
21:46:59 <ehird> Because you just fucking said that Calvin and Hobbes is worse than Garfield.
21:47:06 <AnMaster> ehird, might be the Swedish translation used by newspapers here...
21:47:15 <oerjan> AnMaster: i think you have to exile to the moon now
21:47:19 <ehird> I knew you were shit-for-brains, I was just assuming this was more than vacuously true — you clearly don't have a brain.
21:47:22 <ehird> Not even a shit-brain.
21:47:27 <AnMaster> oerjan, why? I hate Calvin and Hobes
21:47:28 <ehird> Tragic.
21:47:33 <AnMaster> hobbes*
21:47:59 <ehird> oerjan: you get the pitchfork or me?
21:48:00 <oerjan> AnMaster: of course calvin is ehird's great hero, which might explain his reaction
21:48:04 <ehird> lol
21:48:07 <AnMaster> oerjan, ah!
21:48:08 <ehird> who said that :D
21:48:13 <oerjan> ehird: i did
21:48:16 <ehird> omg
21:48:18 <ehird> it's an oerjan
21:48:23 <AnMaster> oerjan, yeah it might explain it...
21:49:41 <AnMaster> why do I have koffice installed *confused*
21:49:55 <oerjan> maybe you have a koffein addiction
21:50:04 <AnMaster> hah hah
21:50:19 <AnMaster> koffice is shit though
21:50:58 <oerjan> > (++"office")<$>['a'..'z']
21:50:59 <lambdabot> Couldn't match expected type `[GHC.Types.Char]'
21:51:03 <oerjan> eep
21:51:07 <oerjan> > (:"office")<$>['a'..'z']
21:51:08 <lambdabot> ["aoffice","boffice","coffice","doffice","eoffice","foffice","goffice","hof...
21:51:53 <oerjan> !haskell (:"office")`map`['a'..'z']
21:51:54 <EgoBot> ["aoffice","boffice","coffice","doffice","eoffice","foffice","goffice","hoffice","ioffice","joffice","koffice","loffice","moffice","noffice","ooffice","poffice","qoffice","roffice","soffice","toffice","uoffice","voffice","woffice","xoffice","yoffice","zoffice"]
21:53:42 -!- MizardX has quit (Read error: 145 (Connection timed out)).
21:56:36 * pikhq is getting a terabyte Seagate drive.
21:58:18 <ehird> pikhq: barracuda?
21:58:23 <oerjan> one of those with terable performance
22:00:20 <pikhq> ehird: Yes.
22:00:31 <ehird> pikhq: cool.
22:00:37 <ehird> pikhq: any reason not to go w/ WD?
22:01:01 <pikhq> The Seagate was slightly cheaper and had free shipping.
22:01:28 <pikhq> Also, I trust Seagate a bit more.
22:02:37 -!- darthnuri has joined.
22:02:48 <ehird> pikhq: Wut?
22:02:56 <ehird> WD are pretty much the most reliable HD maker in existence.
22:03:09 <pikhq> I've got 15 year old Seagate drives that still work.
22:03:12 <ehird> pikhq: Also, all newegg items have free shipping :P
22:03:20 <pikhq> ... No.
22:03:24 <pikhq> Maybe in UK-land, but not here.
22:06:07 <ehird> pikhq: newegg don't exist in the UK.
22:06:11 <ehird> only in the US, really.
22:06:15 <ehird> pikhq: but yes.
22:06:40 <pikhq> I guess they used to? But alas, such is not the case any more.
22:06:48 <GregorR> UK-land, also known as Eng-land, Scot-land, Welsh-land and part of Ire-land.
22:06:58 <ehird> pikhq: Uh? You sure?
22:07:08 <pikhq> Yes.
22:07:19 <pikhq> They specifically advertise which items *have* free shipping.
22:07:50 <ehird> huh
22:08:47 <oerjan> GregorR: i think you welshed a bit on that one
22:12:01 <GregorR> oerjan: "Wales" doesn't end in "-land", gimme a break :P
22:13:12 <oerjan> GregorR: i decided to give you a pun instead
22:18:43 -!- inurinternet has quit (Connection timed out).
22:18:49 <pikhq> Cym-rae, however.
22:18:51 <pikhq> :P
22:22:53 -!- jix has quit (".zZ").
22:31:51 -!- coppro has joined.
22:38:31 <ehird> "I am extremely displeased with today’s comic. XKCD, which I normally agree with and enjoy, has made several errors in one comic, from my point of view. Global warming is a lie so get over that one already."
22:38:36 <ehird> —xkcd blag comment
22:39:00 * coppro is rather annoyed at the whole global warming thing
22:40:00 <ehird> coppro: wat?
22:40:10 <ehird> don't tell me you're a wackjob too
22:42:12 <pikhq> The whole thing annoys me, too.
22:42:13 <ehird> "“Climate change” is, incidentally, a non-falsifiable hypothesis (the record shows temperatures have changed a lot, particularly if you recognize that Mann, et al’s hockeystick is bad science), taking it OUT of the realm of science, and into religion."
22:42:15 <ehird> —signed Michael
22:42:20 <pikhq> Not because I don't think it's happening, but because it's a moot point.
22:42:21 <ehird> Zombie Crichton!
22:42:31 <ehird> pikhq: uh huh. and how is this so?
22:43:05 <pikhq> Regardless of whether or not the shit we're dumping in the air is heating up the earth, it's still adding shit to the air that hurts the environment.
22:43:25 <pikhq> Climate change is just one of the ways that our massive stream of pollution fucks things up.
22:43:26 <ehird> ah
22:43:44 <coppro> ehird: no, hardly
22:43:51 <ehird> coppro: what then?
22:43:55 <coppro> I'm annoyed at the way people think of it
22:44:16 <coppro> like, it's become a bit of a religious debate as to whether climate change is happening
22:44:37 <coppro> and people are missing the fundamental point which is that we should be nice to our planet
22:44:38 <ehird> the only people who challenge that it's happening are nutjobs
22:44:45 <ehird> and most sane people don't argue with nutjobs
22:44:49 <ehird> so of course the arguments are a shitfest
22:45:03 <pikhq> ehird: Nut jobs and people who stand to lose money from not being nice to the planet.
22:45:33 <ehird> my policy is to ignore all nutjobs unless i'm bored, in which case I flame them.
22:45:34 <ehird> it's relaxing.
22:47:50 <ehird> brb.
23:10:48 -!- coppro has quit (Remote closed the connection).
23:17:30 <GregorR> http://codu.org/pics/main.php?cmd=imageview&var1=Genova%2Fcrw_2946_contrast.jpg
23:30:30 <bsmntbombdood_> i love looking down on the clouds
23:31:22 <GregorR> I love when the plane is between to layers of clouds.
23:31:42 <GregorR> And also seeing mountains through clouds, that's effing sweet (although only an experience I've had once :P )
23:36:00 <ehird> to layers of clouds
23:37:04 <GregorR> :(
23:37:05 <GregorR> two
23:37:23 <GregorR> I apparently have lost the ability to distinguish homonyms entirely.
23:43:17 <oerjan> http://imgur.com/jV0N4.jpg
23:46:46 <GregorR> Ohhhhhhhhhh kay
23:49:18 <oerjan> of course with my evolved intelligence i can see those are all just paper silhouettes anyhow.
23:54:03 <GregorR> So you've evolved the ability to not recognize symbols? Must be useful :P
23:55:09 <ehird> GregorR: oerjan: if you combine you'll be know that Wether Balloons are actually paper silhouettes
23:59:55 <augur> ehird: "You'll be know"?
←2009-07-11 2009-07-12 2009-07-13→ ↑2009 ↑all