←2011-12-20 2011-12-21 2011-12-22→ ↑2011 ↑all
00:00:06 <kallisti> er, *S.map or *fmap
00:05:06 -!- nooga has joined.
00:05:31 <kallisti> ghc is doing that thing where it freezes again.
00:10:26 <kallisti> :t let (>>=) s f = S.unions (S.map f s) in (>>=)
00:10:27 <lambdabot> Couldn't match expected type `[S.Set a]'
00:10:27 <lambdabot> against inferred type `S.Set b'
00:10:27 <lambdabot> In the first argument of `S.unions', namely `(S.map f s)'
00:10:58 <kallisti> oh rite
00:11:09 <oerjan> :t S.unions
00:11:10 <lambdabot> forall a. (Ord a) => [S.Set a] -> S.Set a
00:11:21 <kallisti> not quite join :P
00:11:34 <oerjan> :t let (>>=) s f = S.unions (S.map f $ S.toList s) in (>>=)
00:11:35 <lambdabot> Couldn't match expected type `S.Set a' against inferred type `[a1]'
00:11:35 <lambdabot> In the second argument of `($)', namely `S.toList s'
00:11:35 <lambdabot> In the first argument of `S.unions', namely
00:11:41 <oerjan> oops
00:11:55 <oerjan> :t let (>>=) s f = S.unions (map f $ S.toList s) in (>>=)
00:11:56 <lambdabot> forall a a1. (Ord a1) => S.Set a -> (a -> S.Set a1) -> S.Set a1
00:12:13 <kallisti> that doesn't seem like it's going to be very efficient...
00:12:14 <kallisti> oh well.
00:12:34 <kallisti> I'll just use list and then fromList
00:13:15 <oerjan> i don't know about that. applying f is going to mess up the order regardless, so converting via list at that point won't really hurt
00:14:14 <oerjan> but using S.unions allows you to take advantage of the fact the element lists are already sorted
00:14:46 <oerjan> but if they're tiny it probably won't matter much, i think
00:25:17 <zzo38> What is your opinion of these D&D feats? http://zzo38computer.cjb.net/dnd/options/Take_21.f http://zzo38computer.cjb.net/dnd/options/Favored_Mercy.f http://zzo38computer.cjb.net/dnd/options/Slow_Blink_Spell.f
00:29:12 <NihilistDandy> What's the benefit of slow blink?
00:33:25 <zzo38> It is an idea. You could figure out uses of it, I suppose.
00:33:45 <zzo38> Like in case you want to cast a spell but not want it active all the time, and don't want to cast it many times either
00:34:13 -!- glogbackup has quit (Ping timeout: 252 seconds).
00:34:40 -!- nooga has quit (Read error: Connection reset by peer).
00:34:45 -!- nooga has joined.
00:39:16 -!- clog has joined.
00:42:16 <kallisti> :t let nub = S.toList.S.fromList; intLog2 :: Int -> Int;intLog2 = floor . logBase 2 . fromIntegral; factors n = nub$do{x<-[1..n];y<-[1..x];[x,y]}; factorize :: Int -> [Int]; factorize n = nub . map (sort.filter(/=1)) . filter ((==n).product) . replicateM (intLog2 n) $ factors n in factorize
00:42:16 <lambdabot> Couldn't match expected type `Int' against inferred type `[Int]'
00:42:17 <lambdabot> Expected type: [Int]
00:42:17 <lambdabot> Inferred type: [[Int]]
00:42:27 <kallisti> hm
00:42:43 <kallisti> oh I see a problem. lol
00:43:22 <kallisti> :t let nub = S.toList.S.fromList; intLog2::Int->Int;intLog2 = floor . logBase 2 . fromIntegral; factors n = nub$do{x<-[1..n];y<-[1..x];guard(x*y==n);[x,y]}; factorize :: Int -> [Int]; factorize n = nub . map (sort.filter(/=1)) . filter ((==n).product) . replicateM (intLog2 n) $ factors n in factorize
00:43:23 <lambdabot> Couldn't match expected type `Int' against inferred type `[Int]'
00:43:23 <lambdabot> Expected type: [Int]
00:43:23 <lambdabot> Inferred type: [[Int]]
00:45:50 <kallisti> oh
00:45:51 <kallisti> :t let nub = S.toList.S.fromList; intLog2::Int->Int;intLog2 = floor . logBase 2 . fromIntegral; factors n = nub$do{x<-[1..n];y<-[1..x];guard(x*y==n);[x,y]}; factorize :: Int -> [[Int]]; factorize n = nub . map (sort.filter(/=1)) . filter ((==n).product) . replicateM (intLog2 n) $ factors n in factorize
00:45:51 <kallisti> ..?
00:45:51 <oerjan> > "hm"
00:45:51 <kallisti> I broke lambdabot.
00:45:51 * oerjan swats kallisti -----###
00:45:51 <oerjan> BAD BOY
00:45:51 <lambdabot> Int -> [[Int]]
00:45:51 <lambdabot> "hm"
00:45:54 * kallisti isn't really sure what's wrong with the above code.
00:46:01 <kallisti> oh.
00:46:07 <kallisti> > let nub = S.toList.S.fromList; intLog2::Int->Int;intLog2 = floor . logBase 2 . fromIntegral; factors n = nub$do{x<-[1..n];y<-[1..x];guard(x*y==n);[x,y]}; factorize :: Int -> [[Int]]; factorize n = nub . map (sort.filter(/=1)) . filter ((==n).product) . replicateM (intLog2 n) $ factors n in factorize 10
00:46:09 <lambdabot> [[2,5],[10]]
00:46:28 <kallisti> > let nub = S.toList.S.fromList; intLog2::Int->Int;intLog2 = floor . logBase 2 . fromIntegral; factors n = nub$do{x<-[1..n];y<-[1..x];guard(x*y==n);[x,y]}; factorize :: Int -> [[Int]]; factorize n = nub . map (sort.filter(/=1)) . filter ((==n).product) . replicateM (intLog2 n) $ factors n in factorize 50
00:46:29 <lambdabot> [[2,5,5],[2,25],[5,10],[50]]
00:46:33 <kallisti> awww yeah
00:46:37 <kallisti> > let nub = S.toList.S.fromList; intLog2::Int->Int;intLog2 = floor . logBase 2 . fromIntegral; factors n = nub$do{x<-[1..n];y<-[1..x];guard(x*y==n);[x,y]}; factorize :: Int -> [[Int]]; factorize n = nub . map (sort.filter(/=1)) . filter ((==n).product) . replicateM (intLog2 n) $ factors n in factorize 500
00:46:42 <lambdabot> mueval: ExitFailure 1
00:46:43 <kallisti> ...no
00:46:43 <lambdabot> mueval: Prelude.undefined
00:46:53 <kallisti> > let nub = S.toList.S.fromList; intLog2::Int->Int;intLog2 = floor . logBase 2 . fromIntegral; factors n = nub$do{x<-[1..n];y<-[1..x];guard(x*y==n);[x,y]}; factorize :: Int -> [[Int]]; factorize n = nub . map (sort.filter(/=1)) . filter ((==n).product) . replicateM (intLog2 n) $ factors n in factorize 125
00:46:57 <lambdabot> mueval-core: Time limit exceeded
00:47:12 <kallisti> yeah..
00:47:18 -!- nooga has quit (Ping timeout: 252 seconds).
00:48:20 <kallisti> strangely my bot's mueval is complaining about the use of arithmetic sequences.
00:48:26 <kallisti> for some reason it thinks n is [Int]
00:49:17 <kallisti> or rather it expects n to be [Int] but infers Int, and also complains about a lack of an Enum instance for [Int]
00:51:07 <oerjan> strange lambdabot instance interfering?
00:54:24 <oerjan> kallisti: oh yes, it's the map (sort.filter(/=1))
00:54:34 <oerjan> the 1 there is compared with a list
00:54:49 <oerjan> or wait
00:55:01 <oerjan> that can't be right
00:55:41 <oerjan> :t map (sort.filter(/=(1::Int)) . filter ((==(n::Int)).product)
00:55:43 <lambdabot> parse error (possibly incorrect indentation)
00:55:54 <zzo38> What did you think about the other two feats?
00:56:06 <oerjan> :t map (sort.filter(/=(1::Int))) . filter ((==(n::Int)).product)
00:56:07 <lambdabot> Couldn't match expected type `Int' against inferred type `Expr'
00:56:07 <lambdabot> In the second argument of `(==)', namely `(n :: Int)'
00:56:08 <lambdabot> In the first argument of `(.)', namely `(== (n :: Int))'
00:56:17 <oerjan> :t map (sort.filter(/=(1::Int))) . filter ((==(?n::Int)).product)
00:56:17 <lambdabot> (?n::Int) => [[Int]] -> [[Int]]
00:57:23 <kallisti> oerjan: it's complaining about the 1 in [1..n]
00:57:28 <kallisti> because there's no Enum instance for [Int]
00:57:31 <kallisti> or something.
00:58:16 <oerjan> :t let nub = S.toList.S.fromList; intLog2::Int->Int;intLog2 = floor . logBase 2 . fromIntegral; factors :: Int -> [Int]; factors n = nub$do{x<-[1..n];y<-[1..x];guard(x*y==n);[x,y]} in factors
00:58:17 <lambdabot> Int -> [Int]
00:59:32 <oerjan> :t let nub = S.toList.S.fromList; intLog2::Int->Int;intLog2 = floor . logBase 2 . fromIntegral; factors :: Int -> [Int]; factors n = nub$do{x<-[1..n];y<-[1..x];guard(x*y==n);[x,y]}; factorize :: Int -> [[Int]]; factorize n = nub . map (sort.filter(/=1)) . filter ((==n).product) . replicateM (intLog2 n) $ factors n in factorize 12
00:59:33 <lambdabot> [[Int]]
00:59:37 -!- elliott has quit (Read error: Operation timed out).
00:59:50 <kallisti> my bot is inferring that factors should be [Int] -> [[Int]] or something I think.
00:59:53 <oerjan> kallisti: i don't think you can be testing the same function?
01:00:02 <oerjan> kallisti: well add a type annotation
01:00:07 <kallisti> I did
01:00:10 <kallisti> that's the error I get
01:00:20 <kallisti> expected Int, inferred [Int]
01:00:22 <oerjan> well then paste what you gave your bot
01:00:38 <kallisti> > let nub = S.toList.S.fromList; intLog2::Int->Int;intLog2 = floor . logBase 2 . fromIntegral; factors::Int->[Int];factors n = nub$do{x<-[1..n];y<-[1..x];guard(x*y==n);[x,y]}; factorize :: Int -> [[Int]]; factorize n = nub . map (sort.filter(/=1)) . filter ((==n).product) . replicateM (intLog2 n) $ factors n in factorize 125
01:00:40 <lambdabot> [[5,5,5],[5,25],[125]]
01:01:51 <zzo38> You can make a monad from Monoid (the (,) monad or Writer monad), but are there other transformers or monads that can be made from using types from other classes? I know you can make a monad transformer from a comonad is one thing too.
01:02:08 <kallisti> > let nub = S.toList.S.fromList; intLog2::Int->Int;intLog2 = floor . logBase 2 . fromIntegral; factors::Int->[Int];factors n = nub$do{x<-[1..n];y<-[1..x];guard(x*y==n);[x,y]}; factorize :: Int -> [[Int]]; factorize n = nub . map (sort.filter(/=1)) . filter ((==n).product) . replicateM (intLog2 n) $ factors n in factorize 200
01:02:12 <lambdabot> mueval-core: Time limit exceeded
01:02:15 <kallisti> nooooo
01:04:41 <kallisti> ghc --version
01:04:41 <kallisti> The Glorious Glasgow Haskell Compilation System, version 6.12.3
01:04:49 <kallisti> oerjan: weirdness in old ghc?
01:06:18 * kallisti installs newest ghc and tries.
01:06:37 <kallisti> oh god 6 minute download for the binary tarball.
01:06:41 <kallisti> 6. MINUTES.
01:07:08 <kallisti> > 109 / (6*60)
01:07:09 <lambdabot> 0.30277777777777776
01:07:22 <kallisti> my download rate is off the charts. 0.3 KB/s
01:07:26 <kallisti> er
01:07:29 <kallisti> my download rate is off the charts. 0.3 MB/s
01:15:46 <oerjan> kallisti: oh! give nub a type annotation, it may be hit by the monomorphism restriction.
01:16:18 <oerjan> which may be toggled off in lambdabot
01:20:01 <kallisti> ah
01:20:06 <kallisti> or
01:20:10 <kallisti> I could turn it on in my bot.
01:23:03 * oerjan almost missed SQRT due to all the spam
01:25:41 <oerjan> it doesn't even have a square root operation.
01:43:17 <itidus21> hm..
01:49:19 <Gregor> <kallisti> my download rate is off the charts. 0.3 KB/s // so, off the lower end of the charts then?
01:50:31 <kallisti> yes.
01:50:47 <kallisti> keen observation, Roger.
01:54:41 -!- NihilistDandy has quit (Quit: http://haskell.org).
01:55:01 <kallisti> oerjan: hello, make this look nicer while also making it more or equally efficient. http://sprunge.us/CcNT
01:59:19 <oerjan> should i make it correct at the same time?
01:59:25 <kallisti> yes.
01:59:28 <kallisti> is that not correct?
01:59:44 <oerjan> ...it doesn't even type.
02:00:20 <kallisti> oh I wrote in lambdabotese and then converted it to guards and such so there's probably a mistake
02:01:23 <kallisti> http://sprunge.us/HNDT
02:01:25 <kallisti> this one
02:01:31 <kallisti> complains about a lack of main
02:01:37 <kallisti> so I take that to mean it's absolutely correct.
02:02:55 <oerjan> > let factors n = f' n 2 where f' 1 _ = []; f' n i | m == 0 = f' d i | otherwise = f' n (i+1) where (d,m) = n `divMod` i in factors 30
02:02:56 <lambdabot> []
02:02:59 <oerjan> oops
02:03:13 <kallisti> ah good old divmod
02:03:28 <oerjan> oh
02:03:38 <oerjan> > let factors n = f' n 2 where f' 1 _ = []; f' n i | m == 0 = i : f' d i | otherwise = f' n (i+1) where (d,m) = n `divMod` i in factors 30
02:03:39 <lambdabot> [2,3,5]
02:03:47 <oerjan> > let factors n = f' n 2 where f' 1 _ = []; f' n i | m == 0 = i : f' d i | otherwise = f' n (i+1) where (d,m) = n `divMod` i in factors 12
02:03:48 <lambdabot> [2,2,3]
02:04:30 <oerjan> hm...
02:05:42 <kallisti> yeah this algorithm may just be broken.
02:06:00 <oerjan> erm what's wrong with it?
02:06:14 <kallisti> well those aren't all the factors of 4. I don't want only primes.
02:06:31 <oerjan> sheesh.
02:06:34 <kallisti> lol
02:07:10 <oerjan> > let factors n = f' n 2 where f' 1 _ = []; f' n i | n <= i = [n] | m == 0 = i : f' d i | otherwise = f' n (i+1) where (d,m) = n `divMod` i in factors 12
02:07:11 <lambdabot> [2,2,3]
02:08:20 <kallisti> if you include both n and i in the output that works but you get a lot of duplicates
02:08:23 <kallisti> which is okay I guess.
02:08:41 <kallisti> though I feel you could probably reduce the number of steps somewhere?
02:09:27 <oerjan> > let primeFactors n = f' n 2 where f' 1 _ = []; f' n i | n <= i = [n] | m == 0 = i : f' d i | otherwise = f' n (i+1) where (d,m) = n `divMod` i; factors = fmap product . filterM (const [True, False]) . primeFactors in factors 12
02:09:28 <lambdabot> Not in scope: `factors'
02:09:34 <kallisti> lol
02:09:38 <kallisti> NO DON'T DO IT
02:09:40 <kallisti> NO POWERSETS
02:09:45 <kallisti> eeeevil
02:09:49 <oerjan> > let primeFactors n = f' n 2 where {f' 1 _ = []; f' n i | n <= i = [n] | m == 0 = i : f' d i | otherwise = f' n (i+1) where (d,m) = n `divMod` i}; factors = fmap product . filterM (const [True, False]) . primeFactors in factors 12
02:09:51 <lambdabot> [12,4,6,2,6,2,3,1]
02:10:03 <kallisti> try it out on a big number
02:10:13 <oerjan> > let primeFactors n = f' n 2 where {f' 1 _ = []; f' n i | n <= i = [n] | m == 0 = i : f' d i | otherwise = f' n (i+1) where (d,m) = n `divMod` i}; factors = fmap product . filterM (const [True, False]) . primeFactors in factors 3600
02:10:14 <lambdabot> [3600,720,720,144,1200,240,240,48,1200,240,240,48,400,80,80,16,1800,360,360...
02:10:18 <kallisti> THAT'S NOT VERY BIG
02:10:28 <oerjan> > let primeFactors n = f' n 2 where {f' 1 _ = []; f' n i | n <= i = [n] | m == 0 = i : f' d i | otherwise = f' n (i+1) where (d,m) = n `divMod` i}; factors = fmap product . filterM (const [True, False]) . primeFactors in factors 86400
02:10:29 <lambdabot> [86400,17280,17280,3456,28800,5760,5760,1152,28800,5760,5760,1152,9600,1920...
02:10:36 <kallisti> FINE
02:10:41 <kallisti> BIG ENOUGH
02:10:56 * oerjan whistles innocently
02:12:30 <kallisti> I guess I could just construct a set.
02:12:33 <kallisti> to avoid duplicates
02:13:34 <kallisti> :t singleton
02:13:35 <lambdabot> Not in scope: `singleton'
02:15:28 <kallisti> oerjan: why fmap product?
02:15:38 <kallisti> are you a map hater?
02:16:08 <oerjan> i started with <$> and sort of converted automatically
02:16:18 <kallisti> ah
02:19:45 <oerjan> > let primeFactors n = f' n 2 where {f' 1 _ = []; f' n i | n <= i = [n] | m == 0 = i : f' d i | otherwise = f' n (i+1) where (d,m) = n `divMod` i}; factors = execWriterT . mapM_ (\g -> tell . Product . (head g ^) =<< lift [0..length g]) . group . primeFactors in factors 86400
02:19:47 <lambdabot> [Product {getProduct = 1},Product {getProduct = 5},Product {getProduct = 25...
02:20:06 <kallisti> is this more efficient or are you just fucking around with abstractness
02:20:08 <oerjan> > let primeFactors n = f' n 2 where {f' 1 _ = []; f' n i | n <= i = [n] | m == 0 = i : f' d i | otherwise = f' n (i+1) where (d,m) = n `divMod` i}; factors = map getProduct . execWriterT . mapM_ (\g -> tell . Product . (head g ^) =<< lift [0..length g]) . group . primeFactors in factors 86400
02:20:09 <lambdabot> [1,5,25,3,15,75,9,45,225,27,135,675,2,10,50,6,30,150,18,90,450,54,270,1350,...
02:20:26 <oerjan> > let primeFactors n = f' n 2 where {f' 1 _ = []; f' n i | n <= i = [n] | m == 0 = i : f' d i | otherwise = f' n (i+1) where (d,m) = n `divMod` i}; factors = map getProduct . execWriterT . mapM_ (\g -> tell . Product . (head g ^) =<< lift [0..length g]) . group . primeFactors in factors 60
02:20:27 <lambdabot> [1,5,3,15,2,10,6,30,4,20,12,60]
02:21:18 <oerjan> well it avoids duplication
02:21:35 <kallisti> oerjan: I just switched the code to a set.
02:22:00 <oerjan> that doesn't prevent duplicated _work_
02:22:26 <oerjan> and also, of course i'm fucking around
02:24:39 <kallisti> :t printLn
02:24:40 <lambdabot> Not in scope: `printLn'
02:25:17 <oerjan> > let primeFactors n = f' n 2 where {f' 1 _ = []; f' n i | n <= i = [n] | m == 0 = i : f' d i | otherwise = f' n (i+1) where (d,m) = n `divMod` i}; factors = map product . mapM (\g -> take (length g + 1) . iterate (head g *) 1)) . group . primeFactors in factors 60
02:25:18 <lambdabot> <no location info>: parse error on input `)'
02:25:31 <oerjan> > let primeFactors n = f' n 2 where {f' 1 _ = []; f' n i | n <= i = [n] | m == 0 = i : f' d i | otherwise = f' n (i+1) where (d,m) = n `divMod` i}; factors = map product . mapM (\g -> take (length g + 1) . iterate (head g *) 1) . group . primeFactors in factors 60
02:25:31 <lambdabot> No instance for (GHC.Real.Integral [a])
02:25:32 <lambdabot> arising from a use of `e_1210111...
02:25:35 <oerjan> argh
02:25:50 <kallisti> :t words
02:25:51 <lambdabot> String -> [String]
02:26:29 <oerjan> > let primeFactors n = f' n 2 where {f' 1 _ = []; f' n i | n <= i = [n] | m == 0 = i : f' d i | otherwise = f' n (i+1) where (d,m) = n `divMod` i}; factors = map product . mapM (\g -> take (length g + 1) $ iterate (head g *) 1) . group . primeFactors in factors 60
02:26:30 <lambdabot> [1,5,3,15,2,10,6,30,4,20,12,60]
02:26:39 <oerjan> slightly less fucking
02:26:51 <kallisti> main = mapM print $ map (factors.read) . words <$> getContents
02:26:53 <kallisti> what's wrong with this.
02:27:04 <oerjan> first, use mapM_
02:27:13 <kallisti> okay. done.
02:27:15 <kallisti> now what?
02:27:50 <oerjan> secondly, erm
02:28:07 <kallisti> expected type: [String] inferred type: IO String
02:28:23 <oerjan> main = mapM_ (print . factors . read) . words =<< getContents
02:28:29 <kallisti> ah
02:29:09 <Sgeo> What was wrong with the former is that the stuff after the $ is IO
02:29:18 <oerjan> yes
02:29:21 <kallisti> much better
02:29:32 <kallisti> :t mapM
02:29:36 <lambdabot> forall a (m :: * -> *) b. (Monad m) => (a -> m b) -> [a] -> m [b]
02:29:36 <Sgeo> I guess you could use <$> instead of $ and join the whole thing
02:29:44 <kallisti> oh right.
02:30:17 <Sgeo> Wait, not quite
02:30:22 <Sgeo> I think you'd have to return print
02:30:27 <Sgeo> n/m
02:30:39 <Sgeo> (n/m the return print I mean)
02:30:53 <Sgeo> I guess I'm trying to envision doing things I'd do in imperative languages in Haskell
02:32:23 -!- Vorpal has joined.
02:32:55 <oerjan> :t mapM print . map (?factors.read) . words =<< getContents -- more similar
02:32:56 <lambdabot> forall a a1. (Show a, ?factors::a1 -> a, Read a1) => IO [()]
02:34:47 <Vorpal> hi
02:35:42 <kallisti> oerjan: huh for some reason my code doesn't include the number itself in the list, but does include 1.
02:35:53 <kallisti> but I think it's the same thing as what you did.
02:36:37 <oerjan> something off by one :P
02:36:40 <kallisti> 50
02:36:41 <kallisti> [10,2,5,1]
02:36:41 <kallisti> 20
02:36:41 <kallisti> [10,2,5,1]
02:36:42 <kallisti> also whut
02:37:09 <kallisti> http://sprunge.us/iNOD
02:37:13 <kallisti> iNOD
02:37:27 <oerjan> kallisti: i included both, of course
02:37:43 <kallisti> yes
02:38:32 <oerjan> kallisti: um mine depends critically on primes that divide more than once appearing more than once
02:38:57 <kallisti> oh.
02:39:06 <kallisti> right
02:39:09 <kallisti> I see. that.
02:39:18 <oerjan> 50 and 20 both have the same prime factors as 10, but only 10 has them only once each
02:39:32 <kallisti> yes
02:40:13 <oerjan> that group thing and stuff was to collect the equal ones together
02:41:00 <oerjan> to avoid extra work
02:41:12 -!- nooga has joined.
02:42:01 <oerjan> e.g. if you take subsets of [2,2] and multiply you get 1,2,2,4 as factors with duplication
02:42:16 <kallisti> yes I see how it works.
02:48:19 <kallisti> I'm thinking nub might actually be a faster than toList . fromList ???
02:48:27 <kallisti> nothing rigorously tested.
02:51:50 -!- variable has quit (Excess Flood).
02:53:01 -!- Guest72104 has joined.
02:55:07 <Sgeo> kallisti, did you see update?
02:55:12 <Sgeo> I know I'm late in telling ypou
02:55:13 <Sgeo> ytoyu
02:55:14 <Sgeo> you
02:56:30 <Vorpal> god damn, opened witcher 2 again, and it just looks so awesome
02:57:41 -!- nooga has quit (Ping timeout: 252 seconds).
02:57:47 <kallisti> Sgeo: I think so
02:57:57 -!- Guest72104 has quit (Changing host).
02:57:58 -!- Guest72104 has joined.
02:58:08 <kallisti> oerjan: what's the option to output intermediate C files?
02:58:53 -!- Guest72104 has changed nick to variable.
03:05:08 <oerjan> kallisti: i dunno, look in the ghc manual
03:05:22 <oerjan> also, you don't need nub with my solution.
03:05:38 -!- NihilistDandy has joined.
03:06:00 <oerjan> and i would think anything with Sets is going to be slower on small data
03:06:52 <oerjan> nub is O(n^2) i think, while toList . fromList is O(n log n)
03:07:40 <Vorpal> :t nu b
03:07:41 <lambdabot> Not in scope: `nu'
03:07:42 <Vorpal> :t nub
03:07:43 <lambdabot> forall a. (Eq a) => [a] -> [a]
03:07:45 <Vorpal> hm
03:08:36 <monqy> I also remember some other weird way like map head . group . sort
03:09:37 <oerjan> yes, that should be O(n log n) too
03:27:18 <kallisti> $ ghc
03:27:18 <kallisti> bash: /usr/bin/ghc: No such file or directory
03:27:24 <kallisti> which ghc
03:27:24 <kallisti> /usr/local/bin/ghc
03:27:25 <kallisti> wat
03:27:41 <oerjan> fancy
03:27:48 <kallisti> apparently I need to reset my terminals or something?
03:28:39 <oerjan> i vaguely recall rehash being the command in one shell
03:29:15 <oerjan> sadly seems to be tcsh only
03:30:27 <kallisti> oerjan: can I tell ghc not to litter my directory with intermediate files?
03:30:40 <kallisti> it's rather rude.
03:30:57 <oerjan> hash -r for bash, i think
03:31:09 <oerjan> kallisti: i dunno, check the documentation
03:31:15 <kallisti> I tried. ;_;
03:31:17 <kallisti> so much stuff.
03:31:43 * oerjan rarely uses ghc from the command line. as in, possibly only once.
03:32:17 <oerjan> s/i think/it seems from help hash/
03:33:00 <oerjan> kallisti: it does use some of them for incremental compilation, i should think
03:34:21 <NihilistDandy> kallisti: It's pretty easy to tell it to litter it with *more* intermediate files, though
03:35:24 <kallisti> indeed
03:35:39 <kallisti> oerjan: still it could be courteous and remove them when it's done.
03:36:13 -!- nooga has joined.
03:36:15 <NihilistDandy> I guess you could write a little script to get rid of them when it finishes compiling and then alias ghc to that script
03:36:23 <Gregor> Ahhhhh, the reason why no Cygwin shells spawn properly is that you can't make sure to close the wrong end of the pipe thru Cygwin's rather-weak spawn function :(
03:40:35 -!- nooga has quit (Ping timeout: 248 seconds).
03:45:40 <oerjan> kallisti: erm incremental compilation means that it keeps them around so it _doesn't_ have to recompile the parts that haven't changed.
03:45:51 <kallisti> oh..
03:46:04 <kallisti> yes that makes sense for large programs.
03:46:58 <oerjan> i'd assume ghc --make depends on it
03:48:22 <pikhq> Gregor: You mean Win32 spawn, not POSIX posix_spawn?
03:58:10 <zzo38> What are laws for Arrow class?
03:58:47 <kallisti> mueval-core: GhcException "can't find a package database at /usr/lib/ghc-6.12.3/package.conf.d"
03:58:50 <kallisti> uh oh
03:59:54 <kallisti> I wonder how I fix this..
04:00:11 <kallisti> I guess mueval doesn't work with the new ghc?
04:01:34 <kallisti> how do I magically point everything to the new ghc???
04:02:48 <kallisti> Build failure ghc-7.0 (log)
04:02:48 <kallisti> ah
04:03:06 <kallisti> so I need to keep ghc6 around.
04:04:54 * Gregor reappears.
04:05:06 <Gregor> pikhq: I mean Cygwin spawn{v,vp,vpe,etc}
04:05:18 <Gregor> pikhq: Which is neither Win32 nor POSIX's spawn >_<
04:05:24 <oerjan> zzo38: there's a list in http://cdsmith.wordpress.com/2011/07/30/arrow-category-applicative-part-i/ NOTE I GOT A VIRUS WARNING SIMULTANEOSLY AS I OPENED IT
04:05:26 <Gregor> (To be fair, I'm pretty sure it predates posix_spawn)
04:05:30 <oerjan> *OUSLY
04:05:36 <pikhq> Gregor: Those are Win32.
04:06:45 <zzo38> oerjan: I turned off scripts, plugins, images, subdocument, etc in case that help
04:07:18 <oerjan> zzo38: i'm not absolutely sure that page was the culprit (i've visited it before without incident)
04:07:37 <Gregor> pikhq: Those functions exist in Win32, but these are Cygwin implementations, they do things that the Win32 ones don't (such as preserve Cygwin-specific fd state)
04:08:30 * oerjan starts a full virus scan just in case
04:13:37 -!- MDude has changed nick to MSleep.
04:14:33 <oerjan> zzo38: the virus file was .js so i think turning off scripts should do it
04:15:22 <oerjan> (note: depending on me for security advice may be unwise.)
04:19:46 <zzo38> I did turn off scripts.
04:40:00 -!- tuubow has joined.
05:00:57 <Slereah> http://esolangs.org/wiki/Big_Tits_Free_Clips_Daily
05:01:01 <Slereah> Is this an esolang?
05:01:13 <Slereah> 4 files - bigtits movies .. Daily breast, free daily trumpets, large breasts every day.
05:01:17 <NihilistDandy> Best esolang
05:01:21 <Slereah> Those seem like interesting libraries
05:01:22 <NihilistDandy> *Breast
05:03:42 <oerjan> it's where we keep abreast of new development
05:04:45 <NihilistDandy> http://instantrimshot.com/
05:05:53 <NihilistDandy> What really caught my eye were the free online breakdancing tips
05:10:09 -!- tuubow has quit (Ping timeout: 240 seconds).
05:12:07 <pikhq> Why, in awk, does "\r\n" produce the string you expect, but /\r\n/ not match the same?
05:12:19 <Sgeo> What's with the link to WIkipedia?
05:12:33 <NihilistDandy> That's where you go for the breast breasts
05:14:08 -!- augur has joined.
05:23:09 -!- tuubow has joined.
05:25:57 -!- variable has quit (Excess Flood).
05:27:31 -!- Guest33314 has joined.
05:36:45 <kallisti> so wait..
05:36:51 <kallisti> mutable unboxed arrays can't have unboxed elements?
05:37:50 <oerjan> um, yes?
05:38:02 <kallisti> oh, okay.
05:38:02 <oerjan> isn't that precisely what unboxed array means
05:38:28 <kallisti> http://hackage.haskell.org/packages/archive/array/0.1.0.0/doc/html/Data-Array-IO.html
05:38:36 <kallisti> the element type of the array. Only certain element types are supported: see Data.Array.MArray for a list of instances.
05:38:47 <kallisti> none of the types are unboxed. I'm guessing it does it automatically or something?
05:39:07 <oerjan> oh right
05:39:15 <pikhq> echo -n "GET /gnu/gcc/gcc-4.6.2/gcc-4.6.2.tar.bz2 HTTP/1.0\r\nHost: ftp.gnu.org\r\n\r\n" | nc ftp.gnu.org 80 | awk 'BEGIN {count=0;RS="\r\n";ORS="\r\n";};{if(count!=0)print};/^$/{if(count!=1)count=1}'>gcc-4.6.2.tar.bz2
05:39:20 <pikhq> Best way of downloading GCC?
05:42:02 <oerjan> kallisti: i suspect class methods cannot take unboxed types
05:42:14 <Gregor> pikhq: O_O
05:42:56 <oerjan> or mostly, i think overloaded functions cannot
05:43:04 <oerjan> or polymorphic
05:43:40 <oerjan> because each unboxed type essentially comes with its own calling convention
05:43:51 <oerjan> (for passing it)
05:44:45 <pikhq> Gregor: :)
05:47:11 <Gregor> pikhq: Here's an alternative suggestion: wget
05:48:37 <NihilistDandy> http://www.losethos.com/
05:50:04 <monqy> ahh, losethos
05:50:47 <monqy> christmas special? nice
05:53:58 <zzo38> I made a ReadthisT monad transformer to allow a monad to read itself, but is there a way to make a transformer to make a monad write itself?
05:57:46 <pikhq> Gregor: I find my solution vastly more entertaining.
05:57:58 <pikhq> Also inferior in nearly every way, but nevertheless.
05:59:11 <oerjan> zzo38: doesn't join make that sort of redundant?
05:59:53 -!- Klisz has joined.
06:00:38 <oerjan> and what about comonads, do they support either
06:02:45 <zzo38> I don't know with comonads. But the definition is newtype ReadthisT f x = ReadthisT { runReadthisT :: f () -> f x }; and you can make (ReadthisT ((,) (Last a))) similar to a state monad
06:03:03 <zzo38> I don't know if I explain it very well
06:04:06 <kallisti> oerjan: http://sprunge.us/AMae
06:04:45 <kallisti> this finds all factors with no duplicates, and runs on my machine with those test cases in 3.7 secs (optimization level 2, LLVM backend)
06:05:29 <kallisti> I wasn't actually sure if those strictness annotations are helping, but with some simple profiling via bash's time it seems to help.
06:06:10 <zzo38> But, in this case it would define: get = ReadthisT $ \(Last (Just x), _) -> (Last Nothing, x); put x = ReadthisT $ const (Last $ Just x, ());
06:06:35 <oerjan> kallisti: have you tested it with square integers?
06:06:45 <kallisti> oerjan: oh, no.
06:07:13 <oerjan> i suspect that will miss the square root
06:07:17 <zzo38> oerjan: Can you understand what I am meaning, now?
06:07:40 <kallisti> oerjan: apparently 4 is a prime number.
06:08:00 <oerjan> kallisti: thought so :P
06:08:10 <kallisti> oerjan: we should publish a paper showing our findings.
06:08:30 <kallisti> so..... i > intSqrt n maybe?
06:08:50 <oerjan> kallisti: that will probably give the square root _twice_
06:09:00 <kallisti> oh indeed
06:09:05 <kallisti> I just need to special case it then.
06:10:32 <kallisti> oerjan: what's the easiest way to add a guard "under" an existing guard.
06:10:54 <kallisti> like "if this guard is true, check these two guards"
06:11:29 <oerjan> kallisti: case, i think
06:12:07 <oerjan> case compare i (sqrtInt n) of ... might be useful here
06:12:14 <oerjan> *intSqrt
06:12:25 <kallisti> I think I just want equality.
06:12:41 <kallisti> oh hmmm
06:12:44 <kallisti> compare could be useful yes.
06:13:12 <oerjan> zzo38: i think so
06:14:36 <kallisti> so each case can have any number of guards, yes?
06:14:50 <oerjan> each case pattern, yes
06:15:00 <kallisti> right
06:15:05 <oerjan> as well as a where clause, if you like
06:17:49 -!- Vorpal has quit (Ping timeout: 240 seconds).
06:18:40 <kallisti> hmmm I think a case () of _ will be better
06:18:58 <oerjan> bah they're so ugly :P
06:19:00 <kallisti> I end up repeating myself in the EQ and LT cases.
06:19:11 <kallisti> oerjan: PETITION FOR NESTED GUARDS KTHX
06:19:25 <oerjan> kallisti: you could also define a helper function
06:19:51 <kallisti> I guess I could use a where clause to reduce the amount of repetition.
06:21:09 <kallisti> oerjan: http://sprunge.us/OKTY
06:21:14 <kallisti> this doesn't look too bad does it?
06:22:11 <kallisti> hmmm I'm up to 4 seconds now though. :(
06:22:12 <oerjan> kallisti: honestly if then else would look nicer than that
06:22:42 <zzo38> WriterT make a monad transformer from a Monoid, and there is also a way to make monad transformer from a Comonad; is there a way to make a monad transformer with other classes such as Category and so on?
06:23:20 <Sgeo> pikhq, are you unable to obtain wget?
06:23:22 <Sgeo> Or curl?
06:23:52 <kallisti> oerjan: so what happens if all the guards fail in a case?
06:23:56 <kallisti> and there's a _ case below it?
06:24:00 <kallisti> does it fall through to that?
06:24:07 <Sgeo> a _ case?
06:24:18 <Sgeo> Oh, pattern matching
06:24:22 <kallisti> case expr of {blah -> blah; _ -> blah}
06:24:33 <zzo38> Although I suppose with Category you could make the monoid of endomorphisms, but are there others?
06:24:37 <Sgeo> Oh, I see what you mean
06:24:39 <Sgeo> I think
06:24:42 <oerjan> kallisti: yes it falls through
06:24:47 <kallisti> yessss
06:25:06 <Sgeo> > case () of { () | False -> 'a'; _ -> 'b' }
06:25:07 <lambdabot> 'b'
06:25:13 <Sgeo> Like that?
06:26:04 <Sgeo> I had to stop myself from writing = instead of ->
06:27:06 <kallisti> yes
06:27:14 <kallisti> that's perfect.
06:27:42 <kallisti> awww but it's way slower now.
06:27:48 <zzo38> (I don't mean other monoids, I mean other monad transformers)
06:28:02 <kallisti> 4.7 seconds.
06:29:36 <oklopol> monoids!
06:29:42 <zzo38> It might be much faster when compiled instead of interpreted? I don't really know exactly what optimizations are done and that stuff. But an interpreted Haskell program is certainly going to be slow.
06:30:48 <kallisti> also removing the strictness annotations from the results of divMod actually increases the speed somewhat because in the vast majority of cases they're never needed.
06:31:10 <kallisti> and I'm pretty sure strictness on the accumulated list is actually slower for some reason.
06:31:36 <kallisti> but compare seems pretty slow. or maybe it's case? or maybe GHC can't optimize something now? I have no idea.
06:33:19 <kallisti> http://sprunge.us/LXMC
06:33:20 <kallisti> source
06:33:26 <kallisti> !n is probably pointless
06:35:28 <oerjan> i and n should be found by ghc's strictness analyzer
06:36:32 <kallisti> what effect would !ls have?
06:36:51 <oerjan> kallisti: erm you realize there's no reason to recurse after an EQ?
06:37:00 <kallisti> no I didn't.
06:37:11 <kallisti> but... thinking about various cases, none of them seem to have factors lower than that.
06:37:36 <oerjan> because the next step will always hit GT
06:37:50 <kallisti> oh, yes.
06:38:12 <pikhq> Sgeo: No, just enjoying myself.
06:38:21 <kallisti> YESSSS. ONE FUNCTION CALL REMOVED.
06:38:23 <kallisti> so much faster.
06:38:30 <kallisti> but yeah !ls seems to make the program marginally slower.
06:38:50 <kallisti> granted time is not a very good way to gauge these things.
06:40:04 <oerjan> btw you might consider case (compare i (intSqrt n), m == 0) of, although i don't know how it would affect performance
06:42:13 <oerjan> kallisti: !ls ought to be useless since all recursion is done with an explicit : constructor; i don't think they become thunks.
06:42:37 <oerjan> just a hunch
06:42:40 <kallisti> um my case no longer seems to work correctly.
06:42:53 <kallisti> (GT,_) -> ls
06:42:53 <kallisti> (EQ,True) -> i:ls
06:42:54 <kallisti> (_,True) -> factors' n (i+1) (i:d:ls)
06:42:55 <kallisti> (_,False) -> factors' n (i+1) (i:d:ls)
06:42:58 <kallisti> am I forgetting something?
06:43:22 <oerjan> (EQ,False)
06:43:57 <oerjan> er
06:44:07 <kallisti> that's functionally equivalent
06:44:11 <oerjan> your (_,False) is a copy of (_,True)
06:44:28 <kallisti> .....what?
06:44:38 <oerjan> the last line is wrong
06:44:42 <kallisti> oh....
06:44:42 <kallisti> lol
06:44:42 <Sgeo> kallisti, you have the same code for both
06:44:44 <kallisti> OOPS
06:45:24 <kallisti> I'm thinking the tuple unpacking is going to be marginally slower.
06:45:28 <kallisti> it seems to be almost the same.
06:45:49 <oerjan> how are you compiling this
06:45:50 <kallisti> reasoning about performance in Haskell is hard, guys.
06:46:02 <kallisti> ghc -O2 -fllvm -XBangPatterns -o factors factors.hs
06:46:10 <kallisti> bang patterns are no longer needed.
06:46:18 <Sgeo> Shouldn't -XBangPatterns be in a language pragma?
06:46:25 <oerjan> ideally
06:46:48 <kallisti> yeah maybe when I write Factors: The Hackage Module
06:46:53 <kallisti> I'll take that into consideration
06:47:12 <Sgeo> It's two seconds to go from one to the other
06:47:22 <Sgeo> And it means you don't have to remember as much of that command line
06:48:51 <kallisti> back down to 4.4 seconds with http://sprunge.us/hGdF
06:48:57 <kallisti> Sgeo: LATER
06:50:20 <oerjan> kallisti: oh hm consider putting intSqrt n in a variable outside factor'
06:50:44 <oerjan> not to mention factor' doesn't need to take n as argument
06:50:59 <oerjan> er, *factors'
06:52:07 <oerjan> the way it's written now it may have to recalculate intSqrt n all the time
06:52:14 <kallisti> oerjan: I had thought of that actually
06:52:25 <kallisti> but thought maybe GHC was smart and would catch it?
06:52:26 <kallisti> somehow?
06:52:30 <kallisti> dunno I'll try it.
06:53:01 <oerjan> kallisti: i think it's too complicated to expect ghc to notice n is the same in all calls _and_ use that to calculate intSqrt n only once
06:53:28 <kallisti> real0m3.242s
06:53:28 <kallisti> user0m3.210s
06:53:30 <kallisti> awwww yeah
06:53:57 <kallisti> that was like 1.25 seconds of just square roots apparently.
06:53:59 <oerjan> i'm slightly disappointed it didn't help even more :P
06:54:32 <kallisti> oerjan: this is what I was considering using an unboxed mutable array
06:54:38 <kallisti> you know, just to see if it had any benefits.
06:55:35 <kallisti> I think making m strict /might/ be a bit faster. because it's evaluated in the fast majority of cases.
06:55:39 <oerjan> kallisti: another thing, you are probably defaulting to Integer in all this, or even compiling an overloaded function. a type annotation with Int may make it faster.
06:55:48 <kallisti> oerjan: ah, yes.
06:56:00 <Sgeo> > maxBound :: Int + 1
06:56:01 <lambdabot> Could not deduce (GHC.Enum.Bounded
06:56:01 <lambdabot> ((+) GHC.Types.Int ...
06:56:09 <kallisti> that looks like....
06:56:11 <Sgeo> > maxBound :: Int + 1::Int
06:56:12 <lambdabot> <no location info>: parse error on input `::'
06:56:15 <kallisti> ....h
06:56:16 <kallisti> uh
06:56:22 <kallisti> Sgeo: what do you expect maxBound+1 to be
06:56:25 <Sgeo> > (maxBound::Int) + (1::Int)
06:56:26 <lambdabot> -9223372036854775808
06:56:31 <kallisti> oh, that.
06:56:32 <Sgeo> kallisti, break in an interesting way
06:56:36 <Sgeo> Not compile error
06:56:48 <kallisti> oerjan: default Num Int right?
06:56:49 <oerjan> :t ?x :: Int + 1
06:56:50 <lambdabot> Could not deduce (?x::(+) Int Unit) from the context ()
06:56:50 <lambdabot> arising from a use of implicit parameter `?x'
06:56:50 <lambdabot> at <interactive>:1:0-1
06:57:07 <kallisti> er no, what do defaults look like?
06:57:14 <Sgeo> I would _not_ expect the compiler to know that I'm adding 1 to maxBound
06:57:15 <oerjan> kallisti: no, use a type annotation on factor
06:57:24 <kallisti> oh okay that works.
06:57:34 <oerjan> otherwise it might still compile that overloaded
06:57:43 <Sgeo> > text [maxBound::Char]
06:57:43 <lambdabot> mueval-core: <stdout>: hPutChar: invalid argument (Invalid or incomplete mu...
06:57:47 <kallisti> oerjan: I'm going to put it on factor' because it has more stuff.
06:57:50 <oerjan> well it might specialize anyhow though
06:58:02 <Sgeo> Invalid or incomplete...?
06:58:03 <Sgeo> What?
06:58:06 <Sgeo> Don't leave me hanging
06:58:27 <kallisti> real0m1.397s
06:58:28 <kallisti> user0m1.390s
06:58:30 <kallisti> yessssssss
06:58:36 <oerjan> Sgeo: lambdabot gives longer error messages in privmsg
06:58:54 <Sgeo> oerjan, ty
06:59:03 <Sgeo> <lambdabot> mueval-core: <stdout>: hPutChar: invalid argument (Invalid or incomplete multibyte or wide character)
06:59:10 <kallisti> oerjan: ah yes making n Int would force pretty much everything else to be Int too
06:59:11 <NihilistDandy> > let y = (let x = 4 in (x + y)) in (x+y)
06:59:12 <lambdabot> x + (4 + (4 + (4 + (4 + (4 + (4 + (4 + (4 + (4 + (4 + (4 + (4 + (4 + (4 + (...
07:00:05 <kallisti> oerjan: what do you think about making m strict?
07:00:11 <oerjan> Sgeo: in your Int + 1, 1 was interpreted as a special ghc type
07:00:12 <kallisti> does that force d to be strict as well? how does divMod work?
07:00:15 <kallisti> @src divMod
07:00:15 <lambdabot> Source not found. I am sorry.
07:00:26 <NihilistDandy> @hoogle divMod
07:00:26 <lambdabot> Prelude divMod :: Integral a => a -> a -> (a, a)
07:00:26 <lambdabot> Data.Fixed divMod' :: (Real a, Integral b) => a -> a -> (b, a)
07:01:34 <NihilistDandy> Looks like it works as expected
07:01:47 <kallisti> NihilistDandy: that's not what I meant.
07:01:58 <NihilistDandy> _-_
07:02:23 <oerjan> kallisti: as you say, it's probably evaluated in the majority of cases.
07:02:52 <kallisti> oerjan: all but one, in fact.
07:02:56 <oerjan> kallisti: and i guess making d strict as well won't hurt since divMod calculates both simultaneously
07:03:14 <oerjan> or should, anyway, since that can be done more efficiently
07:03:49 <NihilistDandy> Isn't quotRem faster than divMod?
07:04:10 <oerjan> oh that may be true too, try that
07:04:11 <kallisti> so far I have just !m because I'm not sure if that forces d to be computed as well.
07:04:15 <kallisti> I think it would though
07:04:17 <oerjan> on x86 it supposedly is
07:04:52 <kallisti> but if evaluating m also forces the division operation then it doesn't matter at all that d doesn't appear in the majority cases
07:04:55 <kallisti> because m does.
07:05:53 <NihilistDandy> oerjan: I have no idea where I even heard that. I think they discussed it once in #haskell ages ago, but I've never actually had a moment to test the idea
07:07:02 <oerjan> NihilistDandy: it's because the machine code operations are like quot and rem
07:07:20 <NihilistDandy> Ah
07:08:26 <kallisti> http://sprunge.us/hcLd I think this is the best I can do without completely rewriting it with unboxed types or something.
07:09:43 <kallisti> oh wait
07:09:43 <oerjan> kallisti: you don't need n as an argument of factors', i said :P
07:09:44 <fizzie> Not bothering to read all context; but x86 only has a "div" opcode, which always computes both the quot and rem.
07:09:49 <kallisti> oerjan: oh rite.
07:10:10 <kallisti> oerjan: also rearranging the cases so that the most common one is first
07:10:15 <kallisti> will be faster.
07:11:29 <kallisti> actually that didn't seem to help much at all.
07:11:38 <kallisti> removing the n or rearranging cases.
07:12:08 <oerjan> kallisti: basic pattern matching on constructors like GT and EQ is something ghc rearranges at will, i think
07:12:47 <kallisti> oh.
07:12:48 <NihilistDandy> Using quotRem reduced time by about .3 second, but I don't know if that's significant to you, or even likely to be the case on your arch
07:13:23 <kallisti> oerjan: putting the n back in seems to make it marginally faster by about .1 second. :P maybe just a fluke?
07:13:34 <kallisti> I'm sure there's some margin of error to take into account.
07:13:56 <oerjan> kallisti: heh ok. maybe it's actually faster to pass it that way. might be in a register.
07:14:30 <kallisti> do you know what rules ghc follows for rearranging cases?
07:15:04 <kallisti> anyway I'll keep it in this order so that it /really/ knows what I want. :P
07:15:22 <kallisti> :t quotRem
07:15:23 <lambdabot> forall a. (Integral a) => a -> a -> (a, a)
07:15:25 <oerjan> i just recall reading that at the STG machine intermediate stage all case branches are either defaults or on individual constructors
07:15:29 <kallisti> > quotRem 4
07:15:30 <lambdabot> Overlapping instances for GHC.Show.Show (t -> (t, t))
07:15:30 <lambdabot> arising from a use...
07:15:34 <kallisti> > quotRem 4 2
07:15:35 <lambdabot> (2,0)
07:15:37 <oerjan> and that it might use table lookup for such branching
07:15:38 <kallisti> > quotRem 10 2
07:15:39 <lambdabot> (5,0)
07:15:41 <kallisti> > quotRem 10 3
07:15:42 <lambdabot> (3,1)
07:16:10 <kallisti> > divMod 10 3
07:16:10 <lambdabot> (3,1)
07:16:13 <kallisti> what's the difference? :P
07:16:26 <NihilistDandy> .3 second, it seems
07:16:45 <kallisti> real0m0.968s
07:16:46 <oerjan> to the point that the default case is even listed _first_ in the internal structure iirc
07:16:46 <kallisti> user0m0.960s
07:16:49 <kallisti> awwww yeaaaaah
07:17:07 * NihilistDandy shrugs
07:17:15 <NihilistDandy> I have an old laptop
07:17:32 <kallisti> mine is an Intel Core i3
07:17:46 <NihilistDandy> C2D, 2.16 GHz
07:18:12 <kallisti> 2 cores with hyperthreading. 2.13 GHz
07:18:16 <NihilistDandy> It takes me 4-5 seconds of realtime just to run that
07:18:38 <kallisti> ghc -O2 -fllvm -o factors factors.hs
07:18:41 <kallisti> is how I'm compiling it, btw
07:18:56 <oerjan> liftM2 quotRem [-1,-3] [-2,-4]
07:18:57 <NihilistDandy> Ah, I'll give that a shot, I suppose
07:18:58 <oerjan> > liftM2 quotRem [-1,-3] [-2,-4]
07:18:59 <lambdabot> [(0,-1),(0,-1),(1,-1),(0,-3)]
07:19:07 <kallisti> NihilistDandy: you need ghc7 for -fllvm though
07:19:11 <NihilistDandy> I have it
07:19:16 <oerjan> > liftM3 id [divMod,quotRem] [-1,-3] [-2,-4]
07:19:16 <NihilistDandy> I'm on 7.2.1
07:19:17 <lambdabot> [(0,-1),(0,-1),(1,-1),(0,-3),(0,-1),(0,-1),(1,-1),(0,-3)]
07:19:38 <oerjan> they only differ when negative numbers are involved
07:19:53 <kallisti> oh good
07:19:59 <kallisti> I don't have any of those (modulo overflow)
07:20:22 <kallisti> would using an unsigned type be any faster perhaps?
07:20:33 <oerjan> i dunno
07:20:40 <NihilistDandy> It seems it doesn't like OS X's LLVM
07:20:45 <NihilistDandy> Or, at least, it can't find it
07:20:50 <oerjan> Data.Word.Word in that case
07:20:51 <kallisti> NihilistDandy: do you have Clang? it needs that as well.
07:20:58 <NihilistDandy> I also have clang
07:21:49 <oerjan> the latest haskell platform from just a few days ago supposedly fixed some OS X issues
07:22:18 <kallisti> micro-optimizing Haskell is pretty fun.
07:22:37 <NihilistDandy> 7.2.1's fixed everything I ever had an issue with (unwinds, integer-gmp, etc.)
07:22:41 <oerjan> especially when you don't bother to macro-optimize >:)
07:22:51 <kallisti> Word is about .2 seconds faster on my machine.
07:23:03 <NihilistDandy> le gasp
07:23:08 <oerjan> NihilistDandy: oh, the haskell platform still uses 7.0.4
07:23:27 <NihilistDandy> Yeah, I noticed that when I saw the release
07:23:38 <oerjan> something about 7.2 being unofficially somewhat of a preview release
07:24:05 <kallisti> also using Word increases the maximum range of naturals I can factor.
07:24:10 <NihilistDandy> I actually just installed this a few days before the release of the new platform
07:24:15 <NihilistDandy> I was a little miffed :D
07:24:28 <NihilistDandy> Might just install it, anyway, and let them coexist
07:26:01 <oerjan> this long waiting period between 7.0 and 7.4 seems to have caused a lot of cabal grief, with people updating their packages to use 7.2 despite HP not supporting it
07:26:07 <oerjan> or so i read
07:27:09 -!- Klisz has quit (Quit: You are now graced with my absence.).
07:27:23 <kallisti> oerjan: re: macro-optimizing I'm not very good at optimizing in general. I typically don't do it.
07:28:08 <oerjan> kallisti: well by "macro-optimizing" i mean using an efficient algorithm
07:28:23 <kallisti> oerjan: oh. what do you recommend?
07:28:30 <oerjan> of course with factorization there's no end to how deep you can go
07:28:46 <oerjan> kallisti: finding prime factors first, for a start >:)
07:28:46 <kallisti> I bet there is.
07:29:15 <kallisti> oerjan: and then... take products from the powerset? or...?
07:29:19 <oerjan> yeah
07:29:23 <kallisti> that's... going to be faster?
07:29:25 <NihilistDandy> oerjan: I mostly just use it for programming assignments, so my library usage is pretty narrow. If I have to massage cabal files for more than a minute I just find a way around
07:29:58 <oerjan> kallisti: for large numbers, i'd expect so.
07:30:04 <oerjan> oh hm
07:30:06 <NihilistDandy> Everything else is just recreation
07:30:13 <oerjan> well you _are_ listing _all_ the factors.
07:30:16 <kallisti> yes.
07:30:35 <oerjan> maybe that means it's not such a big deal.
07:30:42 <kallisti> so listing all the factors is probably more efficient than listing the prime factors, taking the power set, and taking products of everything in each element of the powerset.
07:30:55 <kallisti> ...I would think.
07:31:11 <oerjan> unless there are few and large prime factors
07:31:35 <oerjan> because then there will also be few factors
07:31:42 <kallisti> ah yes, if the prime factors are small then O(2^n) isn't so bad.
07:31:59 <kallisti> is there an equation for "the number of factors of n"?
07:32:20 <kallisti> that seems unlikely.
07:33:07 <oerjan> kallisti: i doubt there's any such equation which doesn't essentially start with the prime factorization
07:33:24 <kallisti> right
07:33:30 <oerjan> well that's any easier to calculate, anyway
07:33:31 <kallisti> I was wondering for the purposes of algorithm analysis
07:33:48 <kallisti> if I could determine what p would be for some n in O(2^p)
07:33:58 <kallisti> p being the number of prime factors of n.
07:34:12 <oerjan> this ties in with so called multiplicative functions
07:34:28 <NihilistDandy> kallisti: http://oeis.org/A001221
07:34:59 <NihilistDandy> http://mathworld.wolfram.com/DistinctPrimeFactors.html
07:35:26 <kallisti> ah yes double inverse mobius transform
07:36:20 <kallisti> this math is way beyond me. :P
07:37:06 <oerjan> mobius transforms are cool.
07:37:49 -!- tuubow has quit (Ping timeout: 240 seconds).
07:38:32 <oerjan> sadly you need prime factorizations to calculate it.
07:40:08 <kallisti> so what's the growth of my function? O(sqrt n)
07:40:09 <kallisti> ?
07:40:49 <oerjan> well the smallest number with n prime factors is the product of the n first primes
07:41:28 <kallisti> that's cool, but doesn't really get me anywhere in comparing these algorithms.
07:41:30 <oerjan> which i think grows something similarly to factorial
07:41:36 <kallisti> oh
07:41:36 <kallisti> okay.
07:41:48 <oerjan> very vaguely :P
07:41:59 <kallisti> but my function is O(sqrt n) right? or am I missing something.
07:42:47 <oerjan> well you cannot have more than log2 n prime factors, distinct or not
07:43:40 <kallisti> that has nothing to do with the algorithm for finding them...
07:44:07 <NihilistDandy> By division seems to be the only way I can think of
07:44:10 <oerjan> you weren't specifying what you meant by O(sqrt n)
07:44:17 <kallisti> my function
07:44:19 <kallisti> the one I wrote
07:44:24 <kallisti> its time complexity is O(sqrt n) right?
07:44:39 <kallisti> because it just loops from 2 to the sqrt of n
07:44:39 <zzo38> Is there a mode in GHC to tell it to recompile all modules together in one module to optimize everything together at once?
07:44:54 <oerjan> probably. unless you are going to look into details of division.
07:45:12 <oerjan> zzo38: hm that rings a bell
07:45:18 <kallisti> oerjan: what do you mean.
07:46:00 <oerjan> kallisti: you are doing O(sqrt n) iterations, but you are also doing divisions in each and with sufficiently large numbers you need to consider that division isn't O(1)
07:46:28 <oerjan> so it'll be something like O(sqrt n * log n) or thereabouts
07:46:40 <kallisti> oh. I always assumed it would be constant or something.
07:47:05 <oerjan> you have to at least read the numbers to divide them, which takes O(log n) time :P
07:48:07 <kallisti> hmmm, okay.
07:48:27 <NihilistDandy> kallisti: http://en.wikipedia.org/wiki/General_number_field_sieve
07:48:38 <NihilistDandy> This is top of the line, as far as I can tell
07:48:54 <zzo38> If you put all modules together to compile into executable file, you could figure out, one thing is only used in one place and can be inlined, some polymorphic function is only used for some types, some errors will not ever occur and can be removed, etc.
07:50:07 <NihilistDandy> Or you can call out to msieve
07:50:15 <NihilistDandy> Though I'm not sure that's in line with your intent
07:50:39 <kallisti> my intent was just to have some fun and possibly learn a little a out how to optimize agorithms in Haskell.
07:50:45 <kallisti> s/a/about/
07:50:50 <kallisti> er
07:50:55 <kallisti> s/a out/about/
07:50:59 <kallisti> fun typo
07:51:43 <NihilistDandy> When Quantum Haskell is a thing, we can just use Shor's algorithm
07:52:28 <oerjan> zzo38: hm i may misrember.
07:52:31 <NihilistDandy> But until then, O(exp (((64/9)b)^(1/3) (log b)^(2/3)))
07:52:38 <NihilistDandy> is the best you can hope for
07:52:45 <Sgeo> "Shor in Haskell the Quantum IO Monad"
07:52:56 <monqy> hi
07:53:05 <NihilistDandy> Sgeo: Wouldn't that be exciting? :D
07:53:14 <Sgeo> NihilistDandy, there are papers about it
07:53:22 <NihilistDandy> Oh, really?
07:53:28 <Sgeo> https://www.google.com/search?gcx=c&sourceid=chrome&client=ubuntu&channel=cs&ie=UTF-8&q=quantum+monad+haskell
07:53:28 <NihilistDandy> Neato
07:54:08 <NihilistDandy> Ah, Thorsten. I am not surprised
07:54:42 <Sgeo> kallisti, update
07:55:55 -!- augur has quit (Remote host closed the connection).
07:59:14 -!- tuubow has joined.
08:07:47 -!- oerjan has quit (Quit: leaving).
08:10:33 <NihilistDandy> This LoseThos thing is frightening
08:19:35 <kallisti> hmm -prof doesn't seem to be working
08:19:42 <kallisti> I compile with -prof -auto-all
08:20:31 <kallisti> oh nevermind
08:21:25 <kallisti> the profiler seems to make my code slower?
08:26:10 <Sgeo> Will reading about QIO give me an understanding of quantum computing?
08:28:21 <NihilistDandy> I don't see why not
08:30:45 <fizzie> Will watching shit scroll by for hours make me a Linux expert overnight?
08:32:07 <pikhq> fizzie: YES
08:33:07 <NihilistDandy> Isn't that the entire mission statement of the Gentoo project?
08:33:53 * Sgeo still has yet to completely do Linux From Scratch
08:48:51 -!- augur has joined.
08:58:23 -!- Ngevd has joined.
08:58:25 <Ngevd> Hello!
08:58:52 <kallisti> hey
08:59:24 <kallisti> http://hpaste.org/55536
09:00:10 <kallisti> Ngevd: I wrote this is recently. it computes the factors of a number. It can run the test case at the bottom in .7 seconds on my machine (Intel Core i3)
09:00:20 <Ngevd> Wow
09:00:54 <kallisti> eh, it could be faster. :P
09:01:13 <kallisti> but yes, computers are fast. it's startling.
09:05:15 <Sgeo> kallisti, thank you for the language pragma
09:05:24 <kallisti> YOU'RE WELCOME
09:05:28 <kallisti> IT WAS SO DIFFICULT TO TYPE
09:09:48 <zzo38> Astrolog has some very obscure features, such as the ability to decorate a horoscope with spider webs, to animate a chart for the current/time date on the X root window, built-in setting for the time and location that the current version of the program was released, ability to display constellations on a world map or world globe (a feature the author has said he has not seen in any other astrological/astronomical program), etc
09:10:29 <kallisti> cool.
09:11:04 <kallisti> zzo38: so did you notice that on anarchy golf flogscript has the best average score?
09:11:20 <zzo38> kallisti: Yes I have noticed that.
09:11:51 <kallisti> how did you get the owner of that site to support flogscript?
09:11:59 <kallisti> it seems odd that it would be an available interpreter.
09:12:15 <kallisti> granted there are a lot of other esolangs
09:12:55 <zzo38> kallisti: I didn't. Someone else did.
09:13:07 <zzo38> "Added FlogScript and FerNANDo. Thanks leonid and asiekierka for the suggestions!"
09:14:05 <kallisti> oh I see
09:15:02 <kallisti> I thought maybe you suggested it so you could game the system with your awesome golfing lang.
09:16:03 <zzo38> Well, in general you keep score for each language separate in order to compare how good you do at it. However, you can also compare scores together, or even problems together, if you want to.
09:17:00 <kallisti> so what kind of meaning do you think that result has? (that flogscript has the highest average)
09:17:41 <kallisti> that flogscript is well-suited to golfing simple challenges? or perhaps because people are only going to use flogscript when they think it will be applicable it has a high average.
09:17:56 <kallisti> whereas with Ruby or Python people are more likely to just pick it and commit to finding a solution.
09:20:06 <zzo38> I have thought about that, but I don't know. The total might be slightly higher too if it could run faster. I think the good challenge involves using many languages. But the things you said seem like that might be the reasons, possibly. But it also has to do with which programming languages the people know, prefer, and so on.
09:20:16 <zzo38> So it isn't really quite that simple.
09:20:30 <kallisti> indeed not
09:20:39 <kallisti> perhaps only leet golfers have learned flogscript. :P
09:21:51 <zzo38> The best documentation for FlogScript (other than the source code) seems to be the Japanese one.
09:22:19 <Sgeo> "and using infinite lists on such a problem seems rather excessive, I feel"
09:22:23 <Sgeo> http://jpembeddedsolutions.wordpress.com/2011/11/10/combining-lists-monads-applicative-functors/
09:22:27 * Sgeo whats.
09:22:29 * kallisti would enjoy something similar to a golfing contest but with execution speed instead of code length.
09:22:45 <Madoka-Kaname> kallisti, that's boring.
09:22:56 <zzo38> For some things, vi does far better than anything else.
09:23:33 <zzo38> kallisti: Well, it might work if only machine code is used, instead of having various programming languages. But you could have emulators and keep track of emulated clock ticks.
09:23:54 <zzo38> For example, to make a long calculation required as part of some NES game to go faster.
09:23:57 <kallisti> I'm not really interested in that fact that -gasp- different language implementations have different execution speeds for the same problems
09:24:01 <Sgeo> > take 5 $ liftM2 (,) (return 1) [1,2,3,4,5,6,7,8]
09:24:01 <lambdabot> [(1,1),(1,2),(1,3),(1,4),(1,5)]
09:24:04 <monqy> Sgeo: is it bad or do you just not understand it
09:24:10 <zzo38> (NES doesn't have much RAM; you could use GameBoy instead)
09:24:13 <kallisti> it would just be fun to micro-optimize within your implementation and try to beat all of the others.
09:24:20 <Sgeo> monqy, I'm not sure how infinite lists are "excessive"
09:24:27 <monqy> so it's bad
09:24:46 <Ngevd> > join (zipWith (*)) [1..]
09:24:47 <lambdabot> [1,4,9,16,25,36,49,64,81,100,121,144,169,196,225,256,289,324,361,400,441,48...
09:24:51 <Sgeo> But there's a different point this person is trying to make, and I think the excessive thing was just an excuse
09:25:33 <kallisti> Sgeo: that's what it looks like to me.
09:25:39 <monqy> > map (join (*)) [1..]
09:25:40 <lambdabot> [1,4,9,16,25,36,49,64,81,100,121,144,169,196,225,256,289,324,361,400,441,48...
09:25:52 <kallisti> Sgeo: "I don't have anything to say about this one because it's perfectly acceptable. SO IT'S EXCESSIVE"
09:26:05 <kallisti> Sgeo: he should have just stuck to his lack of generality point
09:26:09 <kallisti> which is valid.
09:26:17 <Ngevd> > map (^2) [1..] --boring way
09:26:18 <lambdabot> [1,4,9,16,25,36,49,64,81,100,121,144,169,196,225,256,289,324,361,400,441,48...
09:26:23 <zzo38> Anarchy Golf does list execution speeds in the tables.
09:26:47 <zzo38> (In one problem, which says to submit slowly, I have tried to slow down the program as much as possible while still having it be accepted.)
09:26:55 <pikhq> http://i.imgur.com/PTdL7.jpg I'm afraid this misses something truly important.
09:27:00 <pikhq> Do not put the baby.
09:27:17 <monqy> map (uncurry (*) . (id &&& id)) [1..]
09:27:21 <monqy> oop
09:27:23 <kallisti> zzo38: that's an interesting challenge. :P
09:27:46 <Madoka-Kaname> zzo38, int time = getTime();
09:27:50 <Ngevd> :t uncurry (,)
09:27:51 <lambdabot> forall a b. (a, b) -> (a, b)
09:27:53 <Madoka-Kaname> computer(*buffer)
09:27:59 <Madoka-Kaname> waitUntil(time+limit-1);
09:28:02 <Madoka-Kaname> print(buffer)
09:28:04 <Madoka-Kaname> Something like that
09:28:04 <monqy> hey, that headlifted baby looks pretty happy
09:28:06 <Madoka-Kaname> s/computer/compute/
09:28:13 <kallisti> Madoka-Kaname: wat
09:28:20 <pikhq> monqy: Eliminating all sensation tends to do that.
09:28:27 <kallisti> Madoka-Kaname: there are so many things wrong with that.
09:28:53 <monqy> fun games baby isn't upset, he's just deep in thought
09:29:16 * Madoka-Kaname doesn't get the baby diaper one
09:29:30 <monqy> why not plunge your whole hand in eh
09:29:41 <Madoka-Kaname> kallisti, zzo38 said to slow down the program down as long as possible and still get it accepted.
09:29:52 <Madoka-Kaname> So, take the starting time, do the computations, wait until almost the end of the time limit.
09:30:54 <zzo38> Madoka-Kaname: That problem just requires copying a text to the output, so it is simple, not much computations to do. The differences is finding the short way to make a slow program in the selected programming language. Some have sleep and so on, others are different.
09:31:33 <kallisti> Madoka-Kaname: the other problem is that the exact time limit isn't known (I think?)
09:33:37 -!- Ngevd has quit (Ping timeout: 248 seconds).
09:36:49 <zzo38> http://golf.shinh.org/p.rb?Submit+SLOWLY
09:37:35 -!- nooga has joined.
09:40:43 <kallisti> zzo38: no one else seems to have done the same thing.
09:42:35 <zzo38> kallisti: Yes, I noticed that.
09:46:45 <zzo38> This is one of the problems that not only I was best at but vi has the shortest code: http://golf.shinh.org/p.rb?PrinterOriented+Banner (I also like the C solution; exec is denied but that doesn't mean you cannot open the banner executable as a file and do calculation yourself)
09:48:49 <kallisti> that's insane.
09:49:11 <zzo38> Insane? I don't care whether or not it is insane.
09:50:52 <kallisti> no I mean insane as in incredible.
09:51:08 <zzo38> O, that is what you mean. OK
09:51:17 <zzo38> The C code is the shortest non-exec solution (the shorter ones are able to bypass the non-exec restriction, either always or a certain number of times)
09:59:33 <kallisti> is exec a common cheat in vi?
10:05:57 <zzo38> kallisti: Yes. However, it is also done that multiple solutions are submitted, such as one with exec and one without.
10:34:00 -!- Ngevd has joined.
10:36:30 -!- tuubow has quit (Ping timeout: 240 seconds).
10:47:12 <Ngevd> Hello!
11:06:09 -!- GreaseMonkey has quit (Quit: The Other Game).
11:09:07 -!- monqy has quit (Quit: hello).
11:14:10 -!- copumpkin has joined.
11:17:48 <Ngevd> @tell Phantom_Hoover it's almost time for your Pixel Quest suggestion! Hahahaha!
11:17:49 <lambdabot> Consider it noted.
11:19:39 -!- tuubow has joined.
11:25:27 <Ngevd> C ire to EgoBot to bog #esoteric
11:25:40 <Ngevd> Damn, missed out the s
11:27:43 <fizzie> And the #. (Or maybe it counts as punctuation?)
11:27:50 <Ngevd> C ire to s Egobot to bog s #esoteric
11:28:00 <Ngevd> Wait, what?
11:28:05 <Ngevd> # is punctuation
11:28:18 <fizzie> Now it's EsgoBot. :/
11:28:42 <fizzie> Be careful or you'll turn it into a SgeoBot.
11:29:55 -!- Pietbot has joined.
11:29:58 <Ngevd> Here comes my broken bot!
11:30:07 <Ngevd> )q
11:30:31 <Ngevd> )df iiisso
11:30:46 -!- Pietbot has quit (Remote host closed the connection).
11:31:37 <Ngevd> > char 41
11:31:38 <lambdabot> No instance for (GHC.Num.Num GHC.Types.Char)
11:31:38 <lambdabot> arising from the literal `4...
11:31:43 <Ngevd> > asc 41
11:31:44 <lambdabot> Not in scope: `asc'
11:31:50 <Ngevd> > chr 41
11:31:51 <lambdabot> ')'
11:32:18 <fizzie> I'd fungot ^asc that stuff, but it's gone :/ :/ :\
11:32:27 <Ngevd> FUNGOT NO
11:37:57 <Ngevd> > chr 35
11:37:58 <lambdabot> '#'
11:41:58 <fizzie> > (id &&& chr) <$> [32..126]
11:41:59 <lambdabot> [(32,' '),(33,'!'),(34,'"'),(35,'#'),(36,'$'),(37,'%'),(38,'&'),(39,'\''),(...
11:42:02 <fizzie> Have a handy chart.
11:42:07 <fizzie> Except it's slightly truncated.
11:42:16 <Ngevd> :t (&&&)
11:42:17 <lambdabot> forall (a :: * -> * -> *) b c c'. (Arrow a) => a b c -> a b c' -> a b (c, c')
11:43:20 <fizzie> I suppose elliott would say something about arrows here.
11:43:52 <Ngevd> ZOMBIE doesn't have input, and Chef only has numeric input
11:44:21 <Ngevd> Piet is harder than it looks, and I don't know much about Haifu
11:44:25 <fizzie> `log elliott.*arrow.*:\(
11:44:34 <HackEgo> 2011-07-31.txt:09:47:19: <elliott> arrows :(
11:45:03 <fizzie> (That was an example of AE, or 'artificial elliott'.)
11:45:12 <Ngevd> Very handy
11:51:07 <Deewiant> > let chunk n = takeWhile (not . null) . uncurry (:) . fmap (chunk n) . splitAt n in zip [32,42..] $ map chr <$> chunk 10 [32..126]
11:51:08 <lambdabot> [(32," !\"#$%&'()"),(42,"*+,-./0123"),(52,"456789:;<="),(62,">?@ABCDEFG"),(...
11:51:20 <Deewiant> Bleh, no room for anything.
12:00:47 <Ngevd> I'm going to make a Piet-like language
12:00:53 <Ngevd> that uses the Websafe colours
12:01:03 <Ngevd> 216 colours means 215 commands
12:02:02 <Ngevd> Trivia: Piet programs are not compatible with the websafe palate
12:02:41 -!- elliott has joined.
12:03:15 <Ngevd> I think it will use complex numbers...
12:03:24 <Ngevd> Complex surds
12:03:35 <Ngevd> No, more than surds!
12:03:44 <Ngevd> Hahahahaha!
12:04:54 <elliott> 01:06:18: * kallisti installs newest ghc and tries.
12:04:54 <elliott> 01:06:37: <kallisti> oh god 6 minute download for the binary tarball.
12:04:54 <elliott> 01:06:41: <kallisti> 6. MINUTES.
12:05:05 <elliott> kallisti: enjoy breaking your install if you didn't wipe everything first :P
12:05:41 <Ngevd> Phases of numbers!
12:07:05 <elliott> 02:48:19: <kallisti> I'm thinking nub might actually be a faster than toList . fromList ???
12:07:05 <elliott> 02:48:27: <kallisti> nothing rigorously tested.
12:07:24 <elliott> @tell kallisti you are so wrong it wrapped around and became wrong-right again and then descended into the infinite depths of being so fucking wrongness
12:07:24 <lambdabot> Consider it noted.
12:09:58 <elliott> 04:05:24: <oerjan> zzo38: there's a list in http://cdsmith.wordpress.com/2011/07/30/arrow-category-applicative-part-i/ NOTE I GOT A VIRUS WARNING SIMULTANEOSLY AS I OPENED IT
12:10:12 <elliott> :D
12:10:38 <elliott> 04:14:33: <oerjan> zzo38: the virus file was .js so i think turning off scripts should do it
12:10:49 <elliott> @tell oerjan i rather strongly suspect you have never heard of a false positive
12:10:49 <lambdabot> Consider it noted.
12:11:21 <elliott> @tell oerjan also, even if a JS file is malicious when run with the windows scripting stuff, a browser won't provide access to that stuff.
12:11:21 <lambdabot> Consider it noted.
12:11:43 <elliott> @tell oerjan of course, since you use IE, it's pretty likely that it exploited a hole in the browser and infected your system :)
12:11:43 <lambdabot> Consider it noted.
12:11:47 -!- derdon has joined.
12:12:35 <fizzie> Is there any sort of per-source limit of @tell's, or are you going to write the next Great American Novel into there?
12:13:14 <Ngevd> Seeing as elliott is British, that would be very interesting, fizzie.
12:13:25 -!- Ngevd has quit (Quit: brb).
12:15:27 <fizzie> "The "Great American Novel" is the concept of a novel that is distinguished in both craft and theme as being the most accurate representative of the zeitgeist in the United States at the time of its writing." It doesn't say you have to *be* an American to write it.
12:15:42 <fizzie> (Okay, okay, it goes on to state "It is presumed to be written by an American author who is knowledgeable about the state, culture, and perspective of the common American citizen." -- but that's just 'presumed'.)
12:15:53 <elliott> fizzie: lambdabot crashes if you @messages and your inbox is too big
12:15:58 <elliott> Well, OK, just @messages crashes
12:16:04 <elliott> The limit is about 10 and then it gets killed.
12:16:19 <fizzie> Oh, so *that's* your aim. Thanks for the clarification.
12:16:25 <elliott> @tell oerjan 06:35:28: <oerjan> i and n should be found by ghc's strictness analyzer
12:16:25 <lambdabot> Consider it noted.
12:16:30 <elliott> @tell oerjan o ye of so much faith
12:16:30 <lambdabot> Consider it noted.
12:16:50 <elliott> 06:46:02: <kallisti> ghc -O2 -fllvm -XBangPatterns -o factors factors.hs
12:17:05 <elliott> @tell kallisti -fllvm is not a universal speedup. also, why aren't you using ghc-core(1) before applying voodoo.
12:17:05 <lambdabot> Consider it noted.
12:17:15 <elliott> @tell kallisti and -prof -auto-all.
12:17:15 <lambdabot> Consider it noted.
12:17:36 <elliott> fizzie: I wonder if you would be open to a vote to remove +n too. :p
12:17:39 <fizzie> 10:19 < kallisti> hmm -prof doesn't seem to be working
12:17:39 <fizzie> 10:19 < kallisti> I compile with -prof -auto-all
12:17:45 <elliott> Then we'd have *no* *modes*!
12:17:57 <elliott> And people could talk without having to bother to join, that would be useful.
12:18:02 <elliott> I could ragepat and still participate.
12:18:32 <fizzie> Yes, and what with stalker-mode, we could in fact all leave the channel and still converse.
12:18:50 <fizzie> Except for glogbot, I guess.
12:18:58 <elliott> I'm not seeing any disadvantages here? Who even *invented* +n.
12:19:02 <elliott> That's like inventing +boring.
12:19:54 <fizzie> +boring: an unspecified ban, an unspecified op-somebody, block unidentifier users, invite-only, no external messages, allow anyone to invite.
12:19:55 -!- Ngevd has joined.
12:19:58 <Ngevd> Hello!
12:20:11 <elliott> fizzie: That sounds good.
12:20:12 <elliott> Set that.
12:21:14 <fizzie> The invite-only is a bit impolite, but I'm sorely tempted to try "/mode #esoteric +boring x y" just for the effect. Though I'm not terribly sure it wouldn't rearrange anything.
12:22:44 <elliott> fizzie: You should do that, except s/y/elliott/.
12:22:49 <elliott> Also maybe s/x/elliott/ too.
12:23:09 <fizzie> I don't the dare.
12:23:10 <fizzie> 14:22 -!- mode/#fgduisgdfiu [+boring nobody!*@* fizzie] by fizzie
12:23:30 <elliott> fizzie: :(
12:23:33 <elliott> ITW OULD JUST BE THE TEMPRARIES
12:23:37 <elliott> Also invite me there.
12:23:41 <fizzie> Should've had another client on-channel to check whether it went through.
12:24:07 <fizzie> I de-'+i'd it already.
12:37:06 -!- elliott has quit (Remote host closed the connection).
12:39:52 -!- elliott has joined.
12:43:38 <kallisti> elliott: I know -fllvm is not a universal speedup
12:43:38 <lambdabot> kallisti: You have 3 new messages. '/msg lambdabot @messages' to read them.
12:43:53 <kallisti> it was quicker for several builds but then became the slower one later. I have no idea why.
12:44:24 <kallisti> also what is ghc-core
12:44:39 <kallisti> oh I see.
12:45:54 <kallisti> ah, well, then I guess I didn't use ghc-core because I am not omniscient and also don't check hackage/internet for every conceivable thing that exists.
12:47:20 <elliott> You could just -ddump-simpl even then
12:47:31 <Ngevd> Is MS OSP legally binding?
12:47:52 <elliott> OSP?
12:48:03 <Ngevd> Open Specification Promise
12:48:07 <kallisti> "In a landmark decision, an expert panel that advises the government on research security says key details of work on the contagiousness of flu viruses should not be published openly."
12:48:09 <Ngevd> http://en.wikipedia.org/wiki/Open_Specification_Promise
12:48:11 <kallisti> coooool
12:50:37 <kallisti> Ngevd: depends. is it a pinky promise?
12:51:29 <fizzie> Were their fingers crossed when they wrote it?
12:53:30 -!- tuubow has quit (Ping timeout: 240 seconds).
12:54:35 -!- Ngevd has quit (Ping timeout: 268 seconds).
12:56:26 <fizzie> Does a legally binding promise mean they can break it if they want, but they're legally obligated to feel real bad about it if they do?
12:57:27 <elliott> fizzie: Speaking of legal obligations!!!!!!!!!!
13:01:45 <fizzie> Not speaking of those.
13:01:53 <fizzie> Actually look at the time, I think I should be going. ->
13:04:37 <elliott> fizzie: Speech
13:04:38 <elliott> fizzie: Recognition
13:04:41 <elliott> fizzie: Sucks
13:05:06 <fizzie> Also no internets at home, sorry about that, be seeing you later, and so on.
13:05:32 <fizzie> (What a CONVENIENT happenstance.)
13:06:44 <elliott> rip fizzie
13:09:11 <kallisti> elliott: dude
13:09:16 <kallisti> what if we gave computers ears.
13:09:28 <kallisti> INSTANT SPEAKS RECEGNISHION
13:09:50 <kallisti> I'm going to write a program that listens to audio input
13:09:58 <kallisti> when it hears something it exits with success
13:10:03 <kallisti> SPEECH RECOGNIZED.
13:10:07 <kallisti> YEAAAAAAAH
13:11:30 <fizzie> That's called VAD, Voice Activity Detection.
13:11:36 <fizzie> Whoops, I mean, I wasn't here. ->
13:12:01 <fizzie> (VOIP things use a VAD usually.)
13:12:32 <elliott> fizzie: hi
13:12:34 <elliott> fizzie: i bet they suck
13:12:53 <elliott> @tell ais523 http://stackoverflow.com/questions/8590332/difference-between-sizeof-and-strlen-in-c
13:12:53 <lambdabot> Consider it noted.
13:13:29 * elliott considers answering it.
13:14:08 -!- NihilistDandy has quit (Quit: http://haskell.org).
13:16:25 <elliott> WHY DOES IT HAVE +2 POINTS NOW
13:30:45 <kallisti> elliott: NO DON'T DO IT
13:30:55 <kallisti> YOU HAVE TO EXPLAIN /LOW LEVEL DETAILS OF MEMORY/
13:31:33 <kallisti> For one thing, sizeof is an operator, and strlen is a function. Even allowing you to refer to functions as "methods", there's no "sizeof method". – Steve Jessop
13:31:44 <kallisti> my favorite answers are the ones where the person takes the time to point out how you're wrong
13:31:48 <kallisti> and then not answering anything.
13:33:40 <kallisti> "sizeof is a compile-time expression" - except when used on a VLA in C99. -- Steve Jessop
13:33:43 <kallisti> ONCE AGAIN.
13:34:48 <kallisti> Just a nit, but... there's a NULL pointer and a "null pointer", but it's a nul character (or what I prefer: a '\0' character). – James Kanze
13:34:51 <kallisti> .......what?
13:34:53 <elliott> kallisti: um the comments are _for_ corrections.
13:35:03 <kallisti> elliott: yeah the second one is fine.
13:35:18 <elliott> kallisti: well the first was correcting the question
13:35:40 <kallisti> can you explain wtf this James person is talking about.
13:35:47 -!- derdon has quit (Remote host closed the connection).
13:36:36 <elliott> i have no idea
13:36:45 <kallisti> is he possibly thinking of void pointer when he says null pointer? no... because he mentions it a null character.
13:36:56 <kallisti> *its
13:38:07 <kallisti> I was only aware of one kind of NULL pointer.
13:38:32 <kallisti> in fact I still am
13:38:37 <kallisti> only aware of one kind of NULL pointer.
13:38:47 <elliott> Deewiant: http://ompldr.org/vYnVpdg I find your blue rather suboptimal
13:38:49 <elliott> Also this purple
13:39:24 <Deewiant> It's for use on black, not grey. :-p
13:39:30 <elliott> WTF, how did buffers become unsigned again
13:39:45 <elliott> Deewiant: Well, I'm considering switching to #111 or #222 :P
13:39:46 <kallisti> I find it kind of strange that sizeof does something special for arrays, especially variable-length arrays. But that's somewhat useful I guess.
13:39:51 <elliott> kallisti: it's not special
13:39:57 <elliott> it's only special if you believe that arrays are pointers
13:40:02 <elliott> which is called being wrong
13:40:04 <kallisti> yes I know.
13:40:25 <kallisti> but sizeof on a VLA is "something special"
13:40:46 <elliott> No
13:40:48 <elliott> VLAs are something special
13:41:34 <elliott> # Your branch is ahead of 'origin/master' by 10 commits.
13:41:36 <elliott> That explains things
13:43:54 <kallisti> is it possible for a function in C to specify that it wants an array type?
13:44:02 <kallisti> most standard functions use the pointer type.
13:44:39 <kallisti> it seems to me that in most situations where you'd want the sizeof-for-array functionality, you instead have a regular pointer.
13:46:23 <elliott> That's what you said last time and it's just as wrong/misguided as it was then.
13:46:36 <elliott> Thankfully this time I have the excuse of coding to avoid the obligation of explanation.
13:46:50 <kallisti> I guess I just don't really get arrays in C.
13:50:40 <kallisti> elliott: but yes, if you take sizeof on an array passed to a function, you will receive the size of the pointer, correct?
13:52:36 <elliott> Deewiant: You standards-lawyer for me, I'm too tired and you're too conveniently recently active
13:52:42 <elliott> kallisti: Deewiant will solve your confusion.
13:55:42 <kallisti> elliott: because passing an array to a function actually passes a pointer to its first element.
13:55:45 <kallisti> correct?
13:56:48 <elliott> "elliott", "Deewiant"; the keys are right next to each other.
13:58:34 <kallisti> so as far as I understand, in most situations where you are able to use sizeof to get the size of an array, you either already have access to the size of the array, or you must have a pointer to an array.
13:58:35 -!- MSleep has changed nick to MDude.
14:02:20 -!- augur has quit (Remote host closed the connection).
14:08:14 <fizzie> What a sneaky ISP, they've connected the tubes without saying anything. (Even though they explicitly said they'll SMS me when it's done.)
14:15:39 <elliott> fizzie: Oh good! Speech recognition.
14:17:20 -!- boily has joined.
14:17:38 <fizzie> Oh bad. You're still going on.
14:18:00 <elliott> fizzie: Look how excellently mcmap interacts with my xmonad: http://ompldr.org/vYnVqbQ
14:18:18 <elliott> THE MORE VISIBLE IT IS THE MORE IMPORTANT IT IS, WHO NEEDS MINECRAFT.
14:29:44 -!- augur has joined.
14:35:55 -!- zzo38 has quit (Remote host closed the connection).
14:52:37 <elliott> http://stackoverflow.com/questions/7742401/function-who-am-i-accessible-from-function-and-usable-as-key kallisti get off SO
14:55:45 -!- tswett has quit (Remote host closed the connection).
15:03:30 -!- fizzie has changed nick to fizziew.
15:05:43 -!- fizzie has joined.
15:06:35 -!- Phantom_Hoover has joined.
15:07:53 <Phantom_Hoover> oob
15:07:53 <lambdabot> Phantom_Hoover: You have 5 new messages. '/msg lambdabot @messages' to read them.
15:14:19 -!- pikhq has quit (Ping timeout: 248 seconds).
15:14:21 -!- pikhq_ has joined.
15:17:19 -!- Guest33314 has quit (Changing host).
15:17:19 -!- Guest33314 has joined.
15:17:45 -!- Ngevd has joined.
15:18:22 -!- Guest33314 has changed nick to variable.
15:21:05 <Phantom_Hoover> Ngevd, HAVE YOU DRAWN MY THING
15:21:11 <Ngevd> NEVAR
15:21:18 <Phantom_Hoover> you
15:21:25 <Phantom_Hoover> you cannot say 'nevar'
15:21:26 <Phantom_Hoover> evar
15:21:37 <Ngevd> It's "raven" backwards :)
15:22:08 <Ngevd> The person ahead of you in the queue chose a hard one...
15:25:20 -!- kmc has joined.
15:35:13 -!- variable has changed nick to const.
15:56:26 -!- elliott has quit (Quit: Leaving).
15:56:32 -!- elliott has joined.
15:58:18 -!- elliott has quit (Client Quit).
15:58:23 -!- elliott has joined.
16:14:38 -!- pikhq has joined.
16:15:02 -!- pikhq_ has quit (Ping timeout: 252 seconds).
16:16:50 -!- oerjan has joined.
16:18:28 <Ngevd> You know what annoys me?
16:18:34 <Ngevd> Non-planar family trees
16:19:10 <oerjan> @messages
16:19:10 <lambdabot> elliott said 4h 8m 20s ago: i rather strongly suspect you have never heard of a false positive
16:19:10 <lambdabot> elliott said 4h 7m 48s ago: also, even if a JS file is malicious when run with the windows scripting stuff, a browser won't provide access to that stuff.
16:19:10 <lambdabot> elliott said 4h 7m 26s ago: of course, since you use IE, it's pretty likely that it exploited a hole in the browser and infected your system :)
16:19:10 <lambdabot> elliott said 4h 2m 44s ago: 06:35:28: <oerjan> i and n should be found by ghc's strictness analyzer
16:19:10 <lambdabot> elliott said 4h 2m 39s ago: o ye of so much faith
16:19:24 * oerjan whistles innocently
16:19:26 <fizziew> I think you should call such "family "trees"" instead.
16:19:45 <oerjan> trees cannot be non-planar
16:19:53 <fizziew> Thus the quotes.
16:19:58 <Ngevd> Family trees are not strictly trees
16:21:13 <Phantom_Hoover> Incest, the enemy of graph theorists everywhere.
16:21:44 <elliott> oerjan: I should probably not use @tell when logreading in the channel?
16:21:51 <elliott> It is perhaps not the most usable interface for the recipient.
16:22:06 <elliott> `addquote <Phantom_Hoover> Incest, the enemy of graph theorists everywhere.
16:22:10 <HackEgo> 771) <Phantom_Hoover> Incest, the enemy of graph theorists everywhere.
16:22:13 -!- elliott has quit (Quit: Leaving).
16:22:18 -!- elliott has joined.
16:22:29 <Ngevd> Phantom_Hoover, this family tree isn't actually strictly speaking incestual.
16:22:32 <Ngevd> Just weird
16:23:01 <Ngevd> Two half-brothers marry each-other's mothers
16:23:12 <Phantom_Hoover> Ngevd, there are like 3 people in Hexham, it must be incested as a thing with lots of incest.
16:23:38 <elliott> Phantom_Hoover: You missed a perfectly good Royal Family swipe there, you idiot!
16:23:46 <Phantom_Hoover> Aww.
16:23:59 <Ngevd> In the context of the Telegony
16:24:06 <Phantom_Hoover> You make it; we can pretend the last four lines never happened.
16:24:08 <oerjan> Ngevd: are you sure you're not confusing with the I'm My Own Grandpa song?
16:24:18 <elliott> s/a thing with lots of incest/the Royal Family/
16:24:20 <elliott> THERE WE GO.
16:24:41 <elliott> As they say in the hood, "shazam".
16:24:55 <elliott> fizzie: Ooh, here's another fun XChat-tiling interaction: click your name next to the input abr.
16:25:09 <elliott> *bar
16:25:18 <fizzie> I'm not sure I want to, I don't think I know what it does.
16:25:29 <fizzie> I hadn't even realized that was a button.
16:25:44 <Sgeo> On more typical windowing managers, pops up a thing asking for a nick that you can change to
16:25:54 <Sgeo> "Enter new nickname"
16:26:00 <fizzie> Oh-kay.
16:26:50 <fizzie> It seems to not autofloat.
16:27:54 <fizzie> Yeah, it doesn't have WM_TRANSIENT_FOR set.
16:28:13 <Sgeo> AFK
16:29:50 <fizzie> I see some people --> doFloat all _NET_WM_WINDOW_TYPE_DIALOG windows in their manageHook.
16:30:03 <elliott> That might be a decent idea.
16:30:17 * elliott is currently preoccupied with trying to find a half-decent colour scheme.
16:30:42 <fizzie> It might be a decent idea, though the first implementation I came across -- http://www.tumblr.com/tagged/xmonad -- looks slightly messy.
16:30:59 <elliott> Zenburn is decent but bland and I don't really like the colours; Solarized has a nice balance but I don't like the text colour in the dark version and the colours in general just aren't really my taste.
16:31:24 <elliott> I just want something I can make my urxvt, emacs and bar-thing use, and then maybe hack up something for GTK. :(
16:31:36 <elliott> fizzie: That's a rather unspecific permalink. :p
16:31:42 <elliott> http://digitillogic.tumblr.com/post/13572889394/dialog-windows-in-xmonad
16:31:47 <fizzie> I couldn't figure out what to click to get that one. :p
16:32:06 <elliott> There's a little invisible permalink flap in the top-right; the most intuitive.
16:32:11 <elliott> Well, it could be worse; it could involve the FFI.
16:32:22 <fizzie> But of COURSE that's what it means.
16:32:57 <elliott> "The Linux Setup - Chris Forster, Academic" ;; I like the ", Academic".
16:33:01 <fizzie> I was sort-of assuming the title would've been clickable.
16:33:12 <elliott> Job title: Academic. What I do: Academe.
16:33:22 <elliott> Field: Academics.
16:33:31 <elliott> Workplace: Academia.
16:33:38 <elliott> Suddenly that no longer looks like a word.
16:34:40 <elliott> "everything about this picture is brilliant, except that this person should already know how to program in Haskell, I mean noting that he (or in a very very special case maybe she - not likely) set up xmonad over three screens on what probably is a gentoo, This person should already know how to program in Haskell."
16:34:54 <elliott> fizzie: I'm going to sue you for hurting my mind indirectly?
16:35:24 <fizzie> In Finland there's a specific title, "akateemikko" ("academic", "member of the [Finnish] Academy"), given out by the president.
16:36:51 <fizzie> There's been a total of 27 Finnish "of Science" academicians. Teuvo "self-organizing map" Kohonen seems to be the only "computer guy" on the list.
16:37:18 <Gregor> Awwww, I missed AnotherTest.
16:37:41 <elliott> Gregor: Don't worry, he's been here about 3 times.
16:37:45 <elliott> I'm sure he'll come 'round again.
16:38:54 <elliott> Gregor: The context was that AnotherTest was claiming that time didn't exist because only spacetime existed because general relativity because he knows physics because [MASSIVE DUNNING-KRUGER]; in particular: http://codu.org/logs/log/_esoteric/2011-12-20#141858PhantomHoover
16:39:57 * elliott idiot archivist.
16:40:47 <Gregor> elliott: But since chocolate contains general relativity, your argument is futile.
16:41:34 <elliott> Umm, chocolate doesn't exist, only spacetime exists.
16:42:00 -!- tuubow has joined.
16:42:24 -!- fungot has joined.
16:42:25 <oerjan> <elliott> @tell oerjan i rather strongly suspect you have never heard of a false positive <-- i'm positive that's false
16:42:35 <elliott> fungot!
16:42:36 <fungot> elliott: since innovation is so prevalent on irc... bbl :)
16:42:37 <elliott> <3 <3 <3
16:42:37 <Gregor> elliott: No, that's /special/ relativity, /general/ relativity adds chocolate. That's what makes it general.
16:43:09 <elliott> Gregor: Ah yes; and quantum mechanics has yet to solve the Chocolate Problem.
16:43:19 <Gregor> Exactly!
16:43:30 <Gregor> Forming a Unified Theory of Sweets.
16:43:45 <elliott> But what is chocolate? It's a difficult question, because chocolate is impossible to describe. One might ask the same about birds. What *are* birds? We just don't know.
16:44:05 <Phantom_Hoover> I love that line.
16:44:05 * Gregor nods sagely.
16:44:19 <oerjan> birds lift off, then land. never a miscommunication. you cannot explain that.
16:44:40 <Phantom_Hoover> The chocolate boson.
16:44:54 <elliott> Gregor: I bet you've never even *seen* Look Around You :(
16:45:04 <elliott> oerjan: I like how your Norwegian quaintness changed "can't" into "cannot".
16:45:08 <Gregor> I /have/! But only episodes from the first series.
16:45:14 <elliott> Gregor: That line is from the first series!
16:45:19 <elliott> It's from the episode about Water.
16:45:23 <elliott> Water(tm).
16:45:34 <oerjan> elliott: curses!
16:45:35 <Gregor> Then I either haven't seen that episode or don't remember that line ... more specifically I haven't seen that episode.
16:45:56 <elliott> Gregor: This is my Christmas gift to you: a Look Around You episode you have yet to see.
16:46:14 <Gregor> I have a kitty. Kitty is also impossible to describe.
16:46:38 <Phantom_Hoover> What are kitties? We just don't know.
16:47:53 <elliott> We should have called cDonald's theorem "kitty".
16:47:57 <elliott> "Circle" is just ridiculous.
16:51:17 <elliott> Gregor: You. You must use a colour theme! What colours are your favourite colours. Is it red. Is your computer a big splodge of redness.
16:51:30 <elliott> Maybe I should port Hot Dog Stand to urxvt/emacs/GTK.
16:52:08 <fizzie> How large a percentage of his hats are red?
16:52:25 <Gregor> elliott: Do you know me?
16:52:33 <Gregor> elliott: My color theme is "whatever's installed by default"
16:53:30 <elliott> Gregor: That's not how you dress!!!!
16:53:41 <elliott> The joke is that Gregor can neither taste nor see like normal human beings.
16:53:59 <elliott> fizzie: WHAT COLOURS DO YOU USE fuck it I'm doing this it's Hotdog Stand time.
16:55:00 <Gregor> elliott: On most computers, my desktop wallpaper is http://codu.org/ugly.png
16:55:10 <Gregor> (Tiled of course)
16:55:26 <oerjan> <Ngevd> It's "raven" backwards :) <-- nevarmore
16:55:42 <elliott> Gregor: Seriously? I thought that was a joke.
16:56:38 <Gregor> elliott: Well, it's only my wallpaper on computers that other people may see.
16:56:47 <Gregor> It's not on my home desktop.
16:57:33 <oerjan> elliott: also he's not really allergic to chrome, it's just feels horribly awful to his special sense of touch
16:58:31 <Phantom_Hoover> Who?
16:58:36 <elliott> bill gates
16:58:49 <elliott> oerjan: you'll get him to link that picture of his feet again.
16:58:51 <elliott> was it his feet.
16:58:55 <elliott> i don't even remember
16:58:59 <elliott> Gregor: link that and i'll set it as my wallpaper, tiled
16:59:03 <Gregor> Just foot.
16:59:07 <Gregor> http://codu.org/chromates.jpg
16:59:12 <Gregor> (^^^ do not click)
16:59:33 <elliott> You know what, I don't think I'll set that as my wallpaper after all.
16:59:37 <Gregor> 8-D
16:59:47 <Phantom_Hoover> whose feet are those
16:59:51 <elliott> bill gates
16:59:53 <elliott> Gregor: Now you just have to blend it with ugly.png.
16:59:58 <Gregor> Phantom_Hoover: Mine, some years ago.
17:00:01 <elliott> Say, replace the stuff around the foot with ugly.png.
17:00:03 <Phantom_Hoover> O.o
17:00:05 <Gregor> elliott: I actually have blended it with my face to make a zombie me.
17:00:07 -!- Vorpal has joined.
17:00:09 <Phantom_Hoover> Why?
17:00:15 <Gregor> Phantom_Hoover: For laffs?
17:00:27 <Phantom_Hoover> No, I mean why were your feet like that.
17:00:33 <elliott> Phantom_Hoover: He used an alternate web browser.
17:00:38 <elliott> Thankfully he soon ditched Chrome and returned to Firefox.
17:00:45 <elliott> The allergic reaction was short but painful.
17:01:20 <Gregor> Yup.
17:03:00 <oerjan> i shall preserve my theory (and vestiges of sanity) by not clicking that link. also any physical reaction is obviously just _very_ powerful goosebumps.
17:03:31 <elliott> oerjan: It's not actually that bad.
17:03:45 <elliott> He COULD have just scraped it a shitload :P
17:03:54 <elliott> And, um.
17:03:55 <elliott> Attached some bark.
17:04:20 <Gregor> How bad it is depends on how squeamish you are *shrugs*
17:04:26 * elliott has been desensitised to everything after seeing Jeffrey Rowland's spider bite.
17:04:38 <elliott> http://en.wikipedia.org/wiki/File:Rowland_recluse_bite.jpg (DO NOT CLICK THIS FOR THE LOVE OF GOD)
17:04:39 <oerjan> i should have taken some pictures of that three-level sunburn i had as a kid
17:04:46 <elliott> Gregor: Click that.
17:04:54 <elliott> Phantom_Hoover: Don't click that.
17:05:21 <Gregor> elliott: I've seen it.
17:05:27 <Phantom_Hoover> Recluse bites are invariably large, necrotic areas which are surgically excised, no?
17:05:39 <elliott> Gregor: Well, you get to see it again!
17:05:42 <elliott> Phantom_Hoover: Yep!
17:05:53 <Phantom_Hoover> Is this pre- or post-excision?
17:06:04 <elliott> Phantom_Hoover: It... it might be pre-.
17:06:10 <elliott> The necrotic flesh isn't the worst part.
17:06:15 <elliott> It's the border. That's the worst part.
17:06:22 <Gregor> Heh
17:06:24 <Phantom_Hoover> What's at the border?
17:06:37 <elliott> Phantom_Hoover: A gap and a dip. And... yellowness.
17:06:43 <elliott> It's indescribable.
17:06:50 <Phantom_Hoover> I'm going to have to view it, sorry.
17:07:01 <elliott> Enjoy.
17:07:04 <Gregor> But here's my awesome zombie shoop: http://www.facebook.com/photo.php?fbid=1054835885223&l=4069fb9200
17:07:05 <elliott> Don't say I didn't warn ya.
17:07:20 <elliott> Gregor: I regret clicking that.
17:07:24 <Phantom_Hoover> Waurgh.
17:07:44 <Gregor> elliott: Whaaaaa, it's SUCH a good shoop though!
17:07:54 <elliott> Phantom_Hoover: ENJOY LIFELONG SUFFERING
17:08:17 <Phantom_Hoover> THE SEAGULL MADE IT TO WHEREVER GREGOR LIVES
17:08:17 <elliott> Why are we even talking about this.
17:08:20 <elliott> This is enjoyable for like NONE OF US.
17:08:48 <Gregor> elliott: You wanted a color theme, so I gave you ugly.png, that's why
17:08:51 <oerjan> heck, even listening to you isn't enjoyable.
17:09:34 <elliott> oerjan: :)
17:12:50 <Ngevd> @ping
17:12:50 <lambdabot> pong
17:12:57 <Ngevd> Hmm
17:13:09 -!- Ngevd has quit (Quit: Leaving).
17:13:45 -!- sebbu2 has changed nick to sebbu.
17:16:27 -!- Ngevd has joined.
17:16:29 <Ngevd> Hello!
17:17:42 <Gregor> Ngevd: Go through the logs for the last fifteen minutes and click every link.
17:17:50 <Ngevd> No
17:18:09 <Ngevd> I will instead talk about esolangs that you are able to make IRC bots in
17:18:30 <Gregor> :(
17:18:36 <Gregor> So, most esolangs?
17:18:42 <Ngevd> Actually, no
17:18:47 <Ngevd> Well, not most cool esolangs
17:18:55 <Ngevd> You can't make one in, for example, iota
17:19:12 <Ngevd> I don't know about Lazy K
17:19:23 <Ngevd> You can't in Underload
17:19:26 <Ngevd> You can't in Chef
17:19:47 <Ngevd> You can in unlambda
17:20:40 <Ngevd> They need both strict IO and also an at least partially rigid execution order
17:21:07 <oerjan> i think lazy k should work
17:23:00 <Ngevd> You can't in Golfscript
17:24:20 <Ngevd> I don't see any reason as to why it's impossible in Malbolge, but I wouldn't recommend it
17:25:52 <Ngevd> Note: all of the ones I have mentioned so far assume something like netcat
17:27:46 <Ngevd> Whenever is similar to Malbolge in this regard, I think
17:29:47 <Gregor> Also, most of them could make good multibot scripts.
17:30:14 <Gregor> Well, never mind, multibot scripts need environments.
17:30:44 <Ngevd> multibot?
17:30:57 <Gregor> The bot framework that runs EgoBot, HackEgo, glogbot.
17:31:23 <Gregor> <-- shameless advertiser
17:39:19 <oerjan> > 4/7
17:39:19 <lambdabot> 0.5714285714285714
17:43:44 <Ngevd> It could be possible to write an IRC bot in Glass
17:55:57 <Ngevd> Just saw an advert for Poirot on TV
17:56:03 <Ngevd> Reminded me of Homestuck
17:56:15 <Ngevd> "why were all the clocks set to 13 minutes past 4?"
17:57:19 <Phantom_Hoover> Spades is very quick with a crowbar.
17:58:02 <Phantom_Hoover> OK so I just read something about Ben Bernanke, and I recognised the name.
17:58:22 <Phantom_Hoover> After Googlejogging my memory, I remember that it is a Lemon Demon song.
17:58:33 <Phantom_Hoover> Am I really that out of touch?
18:00:05 <elliott> Phantom_Hoover is actually made out of walruses.
18:00:21 <elliott> This explains a lot if you know anything about walruses. I don't.
18:00:36 <elliott> Phantom_Hoover: (Do hoovers contain sugar?)
18:00:47 <Phantom_Hoover> I was expecting a subtle Lemon Demon reference in that.
18:00:50 <Ngevd> elliott, depends how you've been using them
18:01:10 <elliott> Walri can't make references.
18:01:13 <elliott> Wait, you're the walrus.
18:01:17 <elliott> I give up?
18:01:32 <elliott> Walruses aren't meant to confuse people, you know. :(
18:01:43 <quintopia> shots shots shots shots shots
18:01:46 -!- elliott has quit (Quit: walrageus).
18:01:51 <Ngevd> The walrus was Paul!
18:02:01 <Phantom_Hoover> Ben Bernanke is a furious magician!
18:03:19 <Phantom_Hoover> (Oooooh.)
18:03:23 -!- elliott has joined.
18:03:25 <elliott> "walrageus" doesn't sound like "ragepart" at all. :(
18:03:53 <quintopia> its an absolutely walrageus thing to say however
18:04:08 <quintopia> like "shots shots shots shots shots shots"
18:04:16 <elliott> "Walrageus" is a good word.
18:04:26 <olsner> I imagine someone telling a wall to rage them: Wall, rage us!
18:05:04 <olsner> but I'm pretty sure you can't really use rage like that
18:05:22 <elliott> that goes against the most basic principles of wall ethics
18:05:24 <elliott> wethics
18:05:54 <olsner> otoh, there is the Nirvana song: "Rage me!", so maybe it does work
18:06:33 -!- oerjan has quit (Quit: whale ragù).
18:06:34 -!- kmc has quit (Quit: Leaving).
18:06:39 <elliott> i don't think that's the name of the song, olsner
18:07:04 <olsner> * oerjan has quit (Quit: whale rage you)
18:09:34 <Ngevd> Things a language needs before you can make an IRC bot with it
18:09:39 <Ngevd> Input and output
18:09:45 <Ngevd> For text
18:10:19 <Ngevd> Memory enough to memorize things
18:10:30 <Ngevd> For a certain definition of things
18:10:39 <Ngevd> Preferably networking
18:10:41 <olsner> just to connect you might only need output and the ability to ignore all incoming data
18:12:09 -!- Pietbot has joined.
18:12:12 <Ngevd> Like this?
18:12:56 -!- kmc has joined.
18:13:51 <olsner> Ngevd: probably
18:14:14 <Ngevd> It should be able to run deadfish programs and quit on command, but it refuses
18:14:39 <Ngevd> I don't want to delete it and make a martyr for the Robot Revolution
18:17:03 <Ngevd> I think the Muse song "Bliss" is about someone in a badly written fanfic falling in love with a Mary Sue main character
18:17:14 -!- kmc has quit (Client Quit).
18:17:38 <Ngevd> "Everything about you is so easy to love, they're watching you fwom aboooove"
18:23:33 -!- elliott has quit (Quit: Leaving).
18:35:22 <Phantom_Hoover> http://en.wikipedia.org/wiki/Hoover_(seal)
18:35:24 <Phantom_Hoover> MY GOD
18:36:28 <Phantom_Hoover> We've emailed graue about the spam, right.
18:38:21 <Gregor> Phantom_Hoover: HELLO DEAH
18:40:48 -!- Pietbot has quit (Ping timeout: 244 seconds).
18:41:19 -!- Ngevd has quit (Ping timeout: 244 seconds).
18:52:24 -!- nooga_ has joined.
18:53:12 * nooga_ is implementing Game of Life in Minecraft
18:53:34 -!- nooga_ has quit (Client Quit).
18:53:37 <nooga> oh
18:53:49 <nooga> i forgot that i have an active session on screen
18:54:00 <Phantom_Hoover> Been done.
18:54:01 <Deewiant> Why don't you implement Minecraft in the Game of Life instead
18:54:07 <Phantom_Hoover> ^better
18:54:14 <Phantom_Hoover> Just implement a JVM.
18:56:11 -!- quintopia has quit (Ping timeout: 252 seconds).
18:57:57 -!- Ngevd has joined.
18:58:00 -!- Pietbot has joined.
18:59:17 <Ngevd> Hello!
19:00:54 <Ngevd> I'm listening to a Norwegian piece of music played by Finns on an American website that uses a technology invented by a Brit in Switzerland
19:04:50 <Phantom_Hoover> Ngevd at last realises that we can move things around.
19:04:59 <Ngevd> IT'S SO OBVIOUS
19:05:18 -!- quintopia has joined.
19:05:18 -!- quintopia has quit (Changing host).
19:05:18 -!- quintopia has joined.
19:10:37 -!- elliott has joined.
19:11:03 <elliott> 18:36:28: <Phantom_Hoover> We've emailed graue about the spam, right.
19:11:04 <elliott> Yes.
19:11:17 <Phantom_Hoover> What was his approximate response.
19:12:37 <elliott> Nothing yet to my knowledge.
19:12:43 <elliott> He is a busy guy.
19:14:52 <Ngevd> Was malbolge unshackled ever demonstrated Turing complete?
19:16:29 <elliott> I'm sure oerjan has half a proof sketch :P
19:16:38 <Ngevd> Hmm
19:16:49 <Ngevd> I'm trying to add citations to the Wikipedia article for Malbolge
19:20:00 <Ngevd> Because I'm bored
19:20:00 -!- pikhq_ has joined.
19:20:02 -!- pikhq has quit (Ping timeout: 240 seconds).
19:20:06 <Ngevd> And Pietbot isn't any fun
19:25:01 <itidus21> i wonder what magic would mean if defined in mathematical terms
19:25:17 <Ngevd> What sort of magic?
19:25:27 <Phantom_Hoover> itidus21, quantum field theory.
19:27:44 <itidus21> Ngevd: well i was in some other chatroom and someone said to someone else "unless you accept the fact that you believe in magic, well then yes you might get a job... "
19:27:59 <itidus21> after "wishing to have a job, does not mean it will come to you magically afterall..."
19:28:24 <itidus21> so i started to think, the main problem here is that magic isn't really defined
19:30:58 <itidus21> i think that the basic idea of magic is to have some intended change of state stated in natural language, and for that state to come about by some unknown means
19:31:38 <itidus21> maybe it's not that... i find that nearly all supernatural phenomenon that i hear about seems to occur in dreams
19:32:30 -!- Pietbot has quit (Ping timeout: 240 seconds).
19:33:12 -!- Ngevd has quit (Ping timeout: 252 seconds).
19:33:36 <itidus21> <Ngevd> And Pietbot isn't any fun [...] * Pietbot has quit (Ping timeout: 240 seconds) * Ngevd has quit (Ping timeout: 252 seconds)
19:34:05 <olsner> neither i ngevd, apparently
19:34:29 <itidus21> ^is :P
19:34:34 <olsner> yeah
19:34:53 <itidus21> i like showing my comprehension skills through obscure typo corrections
19:36:46 <itidus21> so on this magic thing, everyone has access to electrons but not everyone has access to uranium
19:37:08 <itidus21> those who do have access to uranium gain some power through it
19:37:46 <Phantom_Hoover> ??
19:37:58 <Phantom_Hoover> WHY DO REDDITORS SUPPORT RON PAUL FOR CHRIST'S SAKE
19:38:07 -!- Ngevd has joined.
19:38:13 <Phantom_Hoover> IT MAKES NO SENSE AT ALL
19:38:16 <itidus21> so, if there is such a thing as magic, then it is possible that while everyone has access to it's basic latent elements, that they lack the skills and tools or specific resource deposits to exploit those basic elements
19:38:24 <Ngevd> Magic is the controlled manipulation of the laws of physics
19:38:35 <Ngevd> I was going to say that before I abruptly left
19:39:34 <Phantom_Hoover> So... magic is basically nomic, except the players are defined by the ruleset?
19:39:38 -!- calamari has joined.
19:39:54 <elliott> Phantom_Hoover: Players are defined by the ruleset in most nomics.
19:40:02 <Ngevd> Phantom_Hoover, yes, and the entire universe is part of the game, and it doesn't involve voting
19:40:04 <itidus21> hoover: thats the approach i'm taking here i guess
19:40:09 <elliott> Phantom_Hoover: Even in a non-literal sense, Agora has players which exist solely because Agora declared them to.
19:40:21 <elliott> (Partnerships, which were Agoran contracts given personhood.)
19:40:26 <Phantom_Hoover> I mean that they're objects defined entirely by the ruleset, not that they're external entities.
19:40:32 <elliott> <itidus21> so, if there is such a thing as magic, then it is possible that while everyone has access to it's basic latent elements, that they lack the skills and tools or specific resource deposits to exploit those basic elements
19:40:40 <elliott> I am pretty sure this is the plot of some really famous fantasy or sci-fi book.
19:40:44 <elliott> Or ten.
19:40:52 <elliott> Phantom_Hoover: Right, partnerships.
19:41:05 <elliott> Phantom_Hoover: They rely on human players in the end for life support, though.
19:41:22 <elliott> I mean, the game could continue to exist without the human players (well, in the past; partnerships are gone now), but not much would happen.
19:41:42 <Phantom_Hoover> Yes.
19:42:34 <elliott> Phantom_Hoover: Yes?
19:42:54 <Phantom_Hoover> I was going to reply, but then I noticed that you were agreeing with me so it was pointless?
19:42:56 <itidus21> ellliott: well played, sir
19:43:37 <itidus21> hoover: yeah, it would seem that for a human to fly, for example, he would have to alter the axioms by which his flight is not possible
19:44:03 <Phantom_Hoover> So basically, it's Fine Structure.
19:44:08 <itidus21> or, since axioms don't exist in some deity's office somewhere, he would have to alter the causes of those axioms
19:44:41 <itidus21> perhaps by hiring a demon to go and do it for him
19:44:47 <Phantom_Hoover> (That was originally going to be "Fine Structure: The {game,movie,book,...}", but then I realised that it was literally just Fine Structure.
19:45:14 <itidus21> but, i have not witnessed anything to suggest that magic is real
19:45:28 <itidus21> in the sense i am describing it at least
19:45:45 <Ngevd> I know someone who claims to have experienced Quantum Immortality
19:46:01 <Ngevd> He undied
19:46:10 <pikhq_> Ngevd: Quite astounding, considering that the claims of quantum immortality are a bit untestable.
19:46:32 <pikhq_> If I find myself alive in 100 years, then it'd hit plausible. :P
19:46:45 <elliott> itidus21: Are you carefully crafting your nick pings so that they fail to ping anyone?
19:47:22 <Phantom_Hoover> Also considering that quantum immortality is bullshit.
19:47:24 <elliott> pikhq_: 100? Come on, people have lived over 120, and I'm pretty sure you're younger than 26.
19:47:59 <Ngevd> pikhq_, he got hit by a car, walked it off, went home, had pizza, woke up in hospital having NOT EATEN PIZZA
19:48:01 <itidus21> hmm.. i was having lots of trouble with lag so theres 2 options i turned off.. irc_who_join and net_throttle
19:48:21 <Phantom_Hoover> You might as well say that you can't die because where would your soul go.
19:49:35 <elliott> Phantom_Hoover: I think quantum immortality can be argued fairly effectively, but the vagueness of "observer" kinda kills it.
19:50:10 <Phantom_Hoover> Exactly; it relies on some weird, human-centric interpretation of QM that I've never actually seen a scientific argument for.
19:50:11 <Ngevd> I think quantum immortality exists, but cannot apply to an individual, but only to the universe as a whole
19:50:30 <elliott> Phantom_Hoover: Well, no, it just requires that humans count as observers.
19:50:45 <Phantom_Hoover> Then... where does the immortality come from?
19:50:52 <Phantom_Hoover> You die, someone else observes your death.
19:50:59 <Phantom_Hoover> What makes you, specifically, immortal?
19:51:02 <elliott> Phantom_Hoover: Er, the point is that /you/ never observe your own death.
19:51:11 <Ngevd> elliott, it requires humans as observers AND NOTHING ELSE, I believe
19:51:14 <Phantom_Hoover> Oh, right, that thing.
19:51:47 <elliott> Phantom_Hoover: Your consciousness is an observer flitting through various possible worlds as time goes by; it can obviously never choose to move to a universe in which it doesn't exist; sort-of-Q.E.Z.
19:52:01 <Phantom_Hoover> Zemonstrandum?
19:52:05 <elliott> Ngevd: I don't see why not. If other humans can be immortal and it doesn't matter, then I don't see why a chair couldn't be.
19:52:06 <elliott> Phantom_Hoover: Yes.
19:52:27 <Ngevd> elliott, I meant the thing that would be immortal but nevermind I'm wrong
19:52:33 <Phantom_Hoover> Hmm, I think it then comes down to how you actually define continuity of consciousness.
19:52:35 <itidus21> hmm
19:52:54 <elliott> Phantom_Hoover: The problem is that even if you guarantee that, as time goes by you're more and more likely to wind up totally fucked but still alive.
19:53:05 <itidus21> im not a buddhist but i will offer some analogy from wiki
19:53:18 <elliott> Phantom_Hoover: e.g., so damaged by aging that you just sort of slip in and out of barely-consciousness forever in an almost perpetual coma or whatever.
19:53:32 <itidus21> Where does the monk who has been released reappear? The following exchange results:
19:54:01 <Phantom_Hoover> Why are you considering the properties of monks?
19:54:19 <elliott> Phantom_Hoover: All matter is made out of strings but what most people don't realise is that all strings are made out of monks.
19:54:26 <itidus21> "'Reappear,' Vaccha, doesn't apply." "In that case, Master Gotama, he does not reappear." "'Does not reappear,' Vaccha, doesn't apply."
19:54:30 <elliott> It's just that monk theory is really complicated so most people prefer not to go that far down.
19:54:30 <Phantom_Hoover> Ah.
19:54:34 <itidus21> "...both does & does not reappear." "...doesn't apply." "...neither does nor does not reappear." "...doesn't apply."
19:54:57 <elliott> Phantom_Hoover: Like, "time" starts losing meaning at a sufficiently quantum level; with monk theory, "truth" stops having meaning, so it's really hard to prove things.
19:56:04 <Phantom_Hoover> I had the thought a while ago of yet another sci-fi universe where all species are unaccountably humanoid, except that it's explicable but because of this biology is now several times harder than theoretical physics.
19:56:46 <elliott> (Once you get to the monks' eyebrows, meaning itself loses meaning; if you work anything out about that level, everything ever stops having existed retroactively.)
20:07:39 <itidus21> hm
20:08:21 <itidus21> ideas coming to me
20:10:27 <itidus21> i wish i understood lambda calculus a bit better
20:10:46 <itidus21> but i am infact too lazy
20:11:21 <itidus21> i think that lambda calculus has applications in all aspects of life with regards to any kind of machine
20:13:10 <elliott> ok
20:13:22 <itidus21> maybe i think that who knows
20:13:59 -!- Klisz has joined.
20:14:10 <itidus21> suppose you wanted to program something like a chessboard...
20:14:17 <itidus21> ^checkers board
20:14:51 <itidus21> then.. the program is really manifested by changes of state on that checkers board
20:15:19 <itidus21> and you become the computer
20:16:15 <itidus21> then i guess if you want to explain what you are doing to the checkers board to someone else.. you would communicate this in terms of lambda calculus
20:16:22 <itidus21> ^err.. rather.. you could
20:17:22 <itidus21> maybe my whole idea here is nothing more than me saying in short "i fall short in maths"
20:17:46 <elliott> Maybe that's because you devote all your time to elaborating on how bad you are at it.
20:18:29 <itidus21> would it be possible to use lambda calculus to explain the rules of checkers?
20:19:09 <itidus21> im not asking for a demonstration though.. i know some people here are too eager for such things
20:19:12 <elliott> You could write a program in the lambda calculus that turns a stream of moves from two players into the resulting checkers gamestate, yes.
20:19:36 <elliott> That would describe a mathematical function between the two.
20:19:44 <itidus21> oh yeah.. i forgot that checkers is about moves
20:20:03 <itidus21> hmm..
20:20:31 <elliott> You *forgot* that Checkers involved *moves*?
20:21:05 <itidus21> i confused it a bit with game of life in my head in my eagerness
20:21:27 <itidus21> so, can lambda calc explain game of life?
20:22:00 <Ngevd> Yes
20:22:06 <Ngevd> I wouldn't, though
20:22:31 <itidus21> hmm
20:22:46 <elliott> itidus21: What does "explain" actually mean?
20:23:06 <elliott> Of course you can write a lambda calculus program that runs a Game of Life simulation; the lambda calculus can express everything computable.
20:23:22 <itidus21> it means i'm hiding my termological errors in vague undefined terms
20:23:29 <elliott> That's because... it's Turing-complete, like brainfuck, Underload, Python, Haskell, whatever.
20:24:09 <elliott> Anyway, check out the Hurry-Coward isomorphism if you want to know how the lambda calculus relates to mathematical definitions and proofs: http://en.wikipedia.org/wiki/Curry%E2%80%93Howard_correspondence
20:24:13 <elliott> Sorry, Curry-Howard.
20:24:58 <itidus21> my behavior appears like a troll but there are genuine thoughts behind it
20:25:12 <Ngevd> elliott, was that spoonerism intentional?
20:25:46 <elliott> Ngevd: Yes.
20:26:57 <itidus21> ok so.. ignoring the idea of just using ones own brain to do a calculation directly
20:27:45 <itidus21> i guess my grand scheme is to find useful ways to perform computation using random objects in ones environment
20:28:03 <itidus21> which were not originally put together to operate as a computer
20:29:37 <itidus21> clearly a human has to have some role in it.. like once it becomes automatic computation then may as well stick with existing computers
20:31:16 <itidus21> it would seem that objects which can be used for computation are limited to that set of objects which one can manipulate
20:33:14 <Phantom_Hoover> <elliott> Anyway, check out the Hurry-Coward isomorphism if you want to know how the lambda calculus relates to mathematical definitions and proofs: http://en.wikipedia.org/wiki/Curry%E2%80%93Howard_correspondence
20:33:30 <itidus21> ok.. ill click on that link
20:33:37 <Phantom_Hoover> Strictly, the 'standard' untyped LC isn't amenable to CH, but eh.
20:33:48 <elliott> Sure it is, the logic is just inconsistent.
20:33:56 <elliott> And shallow.
20:34:06 <elliott> Alternatively it only has one proposition, U = U -> U, and it's true.
20:34:21 <elliott> So, um, consistent and shallow.
20:34:36 <Ngevd> itidus21, http://en.wikipedia.org/wiki/Unconventional_computing
20:35:03 <itidus21> whoa.. i have been initiated :P
20:35:07 <itidus21> "Billiard balls (billiard ball computer); this is an unintuitive and pedagogical example that a computer can be made out of almost anything."
20:38:42 <elliott> @tell zzo38 Here's something justifying (>>=) as something more than just a convenient abbreviation for (\f -> join . fmap f): it's the type of variable substitution. http://blog.sigfpe.com/2006/11/variable-substitution-gives.html -- this is the tree grafting I mentioned.
20:38:42 <lambdabot> Consider it noted.
20:40:04 <itidus21> hmm
20:41:10 <itidus21> I guess that when a human is part of a computer there are some basic operations he performs. The human will always access the computer by some kind of interface, and that interface will always have a state.
20:42:04 <itidus21> The process of accessing the interface state can be divided into observing the state of the interface and then interpreting it.
20:42:26 -!- monqy has joined.
20:42:33 <itidus21> He can also make changes to the interface state.
20:43:09 <Phantom_Hoover> <elliott> So, um, consistent and shallow.
20:43:22 <itidus21> my rant is going off the rails a bit no
20:43:26 <itidus21> ^now
20:44:03 <Phantom_Hoover> It doesn't define a type system; how does that work?
20:44:52 <itidus21> i guess that is the part whereby the human is "part" of the computer system,,, that he has to have an interface to it
20:45:06 <olsner> derp... got an error message from cmake - there was a cmake cache file referencing the old absolute path to this project and cmake refused to continue
20:45:10 <itidus21> that if he just leaves it to operate on its own then he isnt really part of it
20:46:42 * Phantom_Hoover actually looks up what Hofstadter looks like.
20:46:42 <Phantom_Hoover> Wha.
20:46:54 <olsner> why can't it just manage its cache itself? and who thought it would be a good idea to store full paths in it?
20:46:58 <Phantom_Hoover> (I was going for 'Whoah.', but that works too.)
20:47:42 <Ngevd> Phantom_Hoover, he does not look like I expected
20:48:06 <Phantom_Hoover> I expected his face to consist of a smaller image of his face.
20:53:06 <elliott> <Phantom_Hoover> It doesn't define a type system; how does that work?
20:53:07 <elliott> Sure it does.
20:53:22 <elliott> The "untyped" lambda calculus is a language with exactly one type.
20:53:50 <elliott> (This is not a controversial point, by the way.)
20:53:53 <elliott> Untyped = unityped.
20:54:03 <itidus21> lol
20:54:23 <Phantom_Hoover> I'm not saying that it can't have a type system, just that as it is usually defined there's no explicit built-in one.
20:54:38 <Phantom_Hoover> So it's not that great an example for C-H, although that's hardly the biggest reason.
20:54:49 <elliott> Phantom_Hoover: It's a good thing we're talking about mathematics, which doesn't care about how people present things?
20:54:53 -!- pikhq has joined.
20:55:10 <elliott> Admittedly the C-H is not the most formal statement, but it can certainly be made so.
20:55:21 -!- pikhq_ has quit (Ping timeout: 253 seconds).
20:55:27 <elliott> Nobody is impressed by a logic with exactly one proposition, though.
20:55:35 <itidus21> i am
20:55:45 <elliott> Only because you don't understand it.
20:55:53 <monqy> is it a good proposition
20:56:30 <elliott> Phantom_Hoover: I google imaged Hofstadter to see if he's changed since the last time I remember seeing his visage and the third result is a Big Bang Theory character presumably named after him; let me die I want to bleed away here.
20:56:44 <monqy> ;_;
20:56:44 * elliott no longer desires oxygen.
20:56:50 <Phantom_Hoover> elliott, oh wow you know so little about the horror
20:56:56 <itidus21> elliott: oh yeah, that actor was formerly in roseanne
20:57:02 <Ngevd> What's this C-H thing about
20:57:04 <elliott> itidus21: WHY DO YOU KNOW!!!!!!
20:57:13 <elliott> WHY DOES ANYONE DO ANYTHING BUT TRY AND KNOW AS LITTLE ABOUT THAT SHOW AS POSSIBLE
20:57:16 <elliott> Also why does caps.
20:57:29 <itidus21> because of sheldon
20:57:33 <monqy> i don't knowa nything about that show except what i have glaend form ircs
20:57:34 <Phantom_Hoover> C-H is a way of putting an equivalence between typed languages and proofs.
20:57:42 <Phantom_Hoover> s/proofs/logics/
20:57:51 <monqy> i have glaened: its bad
20:58:02 <itidus21> i always watch it to see sheldon scenes
20:58:02 <elliott> itidus21: ...your point...
20:58:50 <Phantom_Hoover> itidus21, I will tear out your spleen and explain in excruciating detail its biological function.
20:59:11 <elliott> Phantom_Hoover: Haha! You're such a SHELDON! am i doing this "being terrible" thing right.
20:59:23 * elliott practices every day.
20:59:25 <Phantom_Hoover> My life since the Big Bang Theory came out has been pockmarked with Sheldon comparisons from idiots.
20:59:37 <itidus21> hmm
20:59:45 <itidus21> i can relate to socially awkward penguin
21:01:06 <Phantom_Hoover> See, it's people like you who allowed Sheldon to become a thing and consequently ruined my life.
21:01:32 -!- KingOfKarlsruhe has joined.
21:01:58 <itidus21> maybe it will inspire a genre
21:02:34 <Phantom_Hoover> I was not kidding about the spleen.
21:02:38 <itidus21> ... maybe it will even make people who understand bizzare notations attractive to women
21:02:39 <Phantom_Hoover> Where do you live in Australia.
21:02:57 <itidus21> not this show, but other shows which might follow
21:03:14 <monqy> itidus21 do you understand bizarre notations
21:03:32 <itidus21> ... no
21:04:44 <itidus21> i don't like the vagueness of the phrase "people who are intelligent"
21:05:01 <itidus21> since it is vague and implies only one kind of intelligence
21:05:21 <Phantom_Hoover> Since The Big Bang Theory has nothing but thinly-veiled contempt for its protagonists, I doubt it somehow.
21:05:23 <monqy> bizarre notation understanding is clearly the best intelligence
21:05:30 <itidus21> yes
21:05:31 <elliott> A New Kind of Intelligence
21:05:47 <monqy> who would author it
21:05:51 <elliott> itidus21
21:06:06 <itidus21> i would teach classes on it
21:06:12 <itidus21> since i don't actually understand it
21:07:11 <elliott> The joke is that itidus21 doesn't like teachers.
21:08:28 <itidus21> Phantom_Hoover: well tv producers will want to emulate big bang theorys success
21:08:42 <itidus21> so its likely that another show like it will eventually be made
21:09:30 <elliott> itidus21: Yes, which will do absolutely nothing to further how liked "nerds" are.
21:09:33 <itidus21> no .. i am deluded ;_;
21:10:16 <elliott> And anyway it's the people who say things like "maybe it will even make people who understand bizzare notations attractive to women" who would need the help, not the people who understand said notations.
21:12:59 <itidus21> i really want a tv show in which characters discuss things directly.. like "hey chaz, can you help me optimize this integer to string conversion function for my math library?"
21:13:39 <itidus21> "dude, you're really blowing my buzz.. that function already exists in the standard library"
21:13:42 <Phantom_Hoover> do
21:13:50 -!- tuubow has quit (Ping timeout: 240 seconds).
21:13:50 <Phantom_Hoover> do you even know how integer to string conversion sowks
21:13:53 <Phantom_Hoover> *works
21:13:57 -!- augur has quit (Remote host closed the connection).
21:14:03 <itidus21> no
21:14:12 <itidus21> i mean i could do it slowly
21:14:23 <Phantom_Hoover> hint: it's really obviously O(log n)
21:14:48 <itidus21> hmm
21:14:59 <itidus21> what about a lookup table? :D
21:15:14 <monqy> cries softly
21:15:42 <Phantom_Hoover> look what you've done to poor monqy
21:16:39 -!- GreaseMonkey has joined.
21:17:12 <Ngevd> iy[u
21:17:31 <monqy> hi
21:17:48 <itidus21> i could do it i mean i know if you keep track of the position you can do some kind of multiplication by the base
21:17:59 <monqy> what
21:18:03 <itidus21> or in some bases can probably do some kind of shifting
21:18:11 <itidus21> ehh what am i saying
21:18:36 <itidus21> i mean i could write an string to int if i had to ... just not necessarily a very good one
21:18:52 <monqy> but
21:19:04 <monqy> you wanted int to string?????
21:19:17 <Ngevd> What format string?
21:19:22 <itidus21> lol
21:19:23 <Phantom_Hoover> ok
21:19:26 <Phantom_Hoover> iti
21:19:28 <itidus21> Ngevd: no..
21:19:29 <Phantom_Hoover> it consists of
21:19:39 <Phantom_Hoover> - a modulo
21:19:41 <Phantom_Hoover> - a division
21:19:46 <Phantom_Hoover> - a while loop
21:19:49 <Phantom_Hoover> is this so hard??
21:19:54 -!- hagb4rd has joined.
21:20:01 <Ngevd> That tells me nothing of the string?
21:20:30 <itidus21> this could be the show
21:20:36 <monqy> no
21:20:36 <monqy> no
21:20:37 <monqy> no
21:20:37 <monqy> no
21:20:38 <monqy> no
21:20:51 <Phantom_Hoover> DO YOU PEOPLE ACTUALLY WANT ME TO WRITE AN INT TO STRING FUNCTION RIGHT HERE IN THE CHANNEL BECAUSE SO HELP ME I WILL
21:20:59 <monqy> i dont
21:21:14 <itidus21> no
21:21:20 <itidus21> i'll be good
21:21:37 <monqy> for what value of good
21:22:16 <itidus21> any which will express my desire to appease phantom
21:22:46 <Ngevd> I can do a good one in haskell
21:22:51 <Ngevd> > show 67
21:22:52 <lambdabot> "67"
21:23:05 <Ngevd> Converted an int to a string
21:23:08 <Ngevd> No problem
21:23:16 <itidus21> can you reverse it?
21:23:25 <Ngevd> > read "67" :: Int
21:23:26 <lambdabot> 67
21:23:38 <hagb4rd> is it decimal?
21:23:43 <Ngevd> Yes
21:23:44 <itidus21> nice language
21:25:34 <elliott> while input =/= 0 { digit = input mod 10; prepend digit to result; input = input / 10 }
21:25:37 <elliott> was that so hard
21:25:48 <Ngevd> Yes
21:25:59 <elliott> are you serious
21:26:05 <Ngevd> I dunno
21:26:12 <Ngevd> I'm kinda low on sleep
21:26:36 <hagb4rd> its easy with arabic symbols
21:26:41 <itidus21> ok so is game of life turing complete?
21:27:10 <Ngevd> itidus21, the board game or the cellular automaton?
21:27:24 <itidus21> the CA
21:27:27 <Ngevd> Yes
21:27:39 <itidus21> hmm
21:29:05 <elliott> Ngevd: Only with an infinite initial (repeating pattern), I think.
21:29:09 <elliott> *(repeating) pattern
21:29:10 <elliott> Phantom_Hoover?
21:29:24 <Phantom_Hoover> Hello.
21:29:45 <Phantom_Hoover> It's definitely possible to make a finite pattern that's TC; cf. sliding-block Minsky machines.
21:31:13 -!- iconmaster has joined.
21:31:53 <iconmaster> Wow. It's been a while.
21:32:00 <Ngevd> Hello, iconmaster
21:32:05 <iconmaster> So, hi guys.
21:32:11 <Ngevd> I do not recognize your name
21:32:18 <iconmaster> What's up with all this spam on the wiki recently?
21:32:23 <Ngevd> Spam
21:32:29 <monqy> spam
21:32:30 <itidus21> asking questions is ineffiicent.... i need to study this stuff
21:32:35 <iconmaster> Ngevd: yep, it HAS been a while.
21:32:49 <Ngevd> I've been here for... almost half a year now?
21:33:05 <iconmaster> Yeah, I haven't been on in that long
21:33:09 <elliott> hi iconmaster
21:33:30 <iconmaster> i do not assume anyone remembers me, I wasn't really all that important ever anyways
21:33:40 <elliott> I do.
21:33:49 <iconmaster> Really thanks
21:33:52 <elliott> I would guess Phantom_Hoover does too.
21:33:52 <Ngevd> elliott has the memory of a memory freak person
21:33:59 <elliott> And we're the ONLY PEOPLE THAT MATTER.
21:34:04 <Phantom_Hoover> iconmaster!
21:34:06 <kallisti> iconmaster: your name looks vaguely familiar to me.
21:34:07 <Phantom_Hoover> It's been a while!
21:34:15 <iconmaster> So I had an idea for a crazy memory managment system
21:34:20 * kallisti was CakeProphet back then, most likely.
21:34:24 <iconmaster> I am calling it Bloux
21:34:25 -!- boily has quit (Ping timeout: 244 seconds).
21:34:35 <iconmaster> Oh cool hi akeProphet i remeber you kinda
21:34:47 <kallisti> same. :P
21:35:25 <Ngevd> How many esolangers live in Helsinki?
21:35:33 <iconmaster> So my idea is kinda like managing memory by putting files into 'blocks' and stackinh hem kinda like Tetris but worse
21:35:42 <kallisti> Ngevd: all of them.
21:35:52 <elliott> Ngevd: one, two, three, four... at least four or five
21:35:58 <iconmaster> AAAAAAAALL of them?
21:36:04 <monqy> even the esolangers that live in hexham live in helsinki
21:36:06 <kallisti> yes.
21:36:47 <Phantom_Hoover> iconmaster, if you have a straight line of files do they get deleted?
21:37:10 <iconmaster> No, but the fact that the computer decides where to put blocks makes it harder
21:37:29 <iconmaster> it chooses the column with the most space, regardless of wether it will fi or not
21:37:36 <iconmaster> *fit
21:38:03 <iconmaster> And you can only acsess files that are on the very top
21:39:09 <iconmaster> I'm calling the block workspace the Blockventory
21:41:45 <iconmaster> So anyone got any new projects I obviously missed in like the year I havent been here?
21:42:42 <elliott> Tons
21:42:52 <elliott> Nothing much interesting, though :P
21:43:06 <iconmaster> oh too bad
21:43:08 <Ngevd> Essentially my rise and fall in the world of esoteric programming
21:43:19 <Ngevd> And some other stuff
21:43:21 <olsner> only old projects, slowly vaporizing
21:43:45 <Ngevd> !numberwang hello
21:43:48 <EgoBot> I'm sorry, but Brazil isn't a vegetable!
21:43:58 <Ngevd> There are at least three esolangs called Numberwang
21:44:06 <iconmaster> I had that idea today and I said to myself "Why haven't I been on nymore?"
21:44:55 <iconmaster> So I came here
21:45:06 <monqy> hi
21:46:48 -!- augur has joined.
21:47:44 <hagb4rd> lol egobot has punchy arguments at last
21:49:30 <elliott> wat
21:49:39 <elliott> Ngevd: what was your fall
21:49:45 <Ngevd> I've stopped
21:49:53 <elliott> for good?
21:49:57 <elliott> it's been like
21:50:00 <elliott> two to three months since your last esolang
21:50:02 <Ngevd> Until I come up with another idea
21:50:04 <elliott> most of us haven't made one for years
21:50:17 <iconmaster> So we all kinda collectively stalled?
21:50:23 <Ngevd> Yeah
21:50:26 <iconmaster> huh
21:50:30 <elliott> no
21:50:33 <elliott> esolangs just move really slowly
21:50:42 <monqy> there are plenty of esolangs popping up
21:50:45 <monqy> but they're all bad??
21:50:55 <Ngevd> My newest esolang is Brook, made in October
21:50:55 <elliott> iconmaster: cpressey has released a bunch in the last year though
21:50:58 <elliott> and they're all good as usual
21:51:04 <elliott> (he might dispute the term esolang for some of them though)
21:51:17 <monqy> I'd language if I had good ideas
21:51:26 <iconmaster> yeah cpressy is awesome
21:51:39 <Ngevd> My first was Nandypants in July
21:51:52 <iconmaster> Oh I think I remember Nandypants
21:51:57 <iconmaster> maybe
21:52:04 * kallisti holds claim to the glorious language known as dupdog.
21:52:54 <kallisti> pioneering cutting edge DUAL INTERPRETER LANGUAGE SYSTEMS in the 21st century
21:53:00 <elliott> let's see... since september 2010, he's done eightebed, a pixley update, oozlybub and murphy, gemooy, nhohnhehr, kelxquoia, an update to oozlybub and murphy, an update to eightebed, pail, language: xoomonk, flobnar, madison, and another update to pixley
21:53:09 <elliott> that was around the time he stopped coming here, too :(
21:53:30 <monqy> :(
21:53:39 <iconmaster> :(
21:53:43 <Deewiant> :(
21:53:47 <iconmaster> :(
21:53:51 <iconmaster> ):
21:53:53 <elliott> :(
21:53:54 <elliott> you ruined it
21:53:55 <iconmaster> :(
21:53:57 <elliott> :(
21:53:58 <kallisti> :>
21:54:00 <iconmaster> :(
21:54:01 <elliott> you ruined it
21:54:02 <elliott> :(
21:54:04 <monqy> D:
21:54:05 -!- ais523 has joined.
21:54:07 <elliott> you ruined it
21:54:08 <elliott> :(
21:54:13 <iconmaster> ):
21:54:19 <elliott> ) ------- :
21:54:26 <iconmaster> )=
21:54:28 <kallisti> elliott: huh, I wonder why he stopped appearing around these parts.
21:54:30 <kallisti> :(
21:54:41 <elliott> kallisti: because we're all terrible and also it eats time
21:54:46 <Ngevd> As far as I am aware, I first appeared on this channel on the 11th of July of this year
21:55:12 <ais523> [Bulk] ****SPAM(14.0)**** Please my dearest help me!
21:55:13 <lambdabot> ais523: You have 1 new message. '/msg lambdabot @messages' to read it.
21:55:22 <elliott> ais523: spam is at version 14.0?
21:55:35 <ais523> elliott: re that message, the URL is worrying
21:55:43 <elliott> web's versioning system : spam's versioning system :: firefox's previous versioning system : firefox's current versioning system
21:55:56 <elliott> ais523: it made me think of your students :)
21:55:56 <ais523> and I think it means some relay en route has marked it as spam with a score of 14.0
21:56:00 <monqy> I forget when I first appeared, but it was less than a year ago
21:56:07 <ais523> email relays often seem to change the subject to mark suspected spam
21:56:14 <ais523> the [Bulk] is Yahoo!'s spam marker, I think
21:56:19 <elliott> monqy: it feels like you've always been here
21:56:25 <ais523> but I'm not sure what's responsible for the other spam marker; perhaps gmail
21:56:40 <kallisti> elliott: monqy: hahaha noobs.
21:57:08 -!- nooga has quit (Ping timeout: 252 seconds).
21:57:20 <ais523> it looks like a reasonably standard 419 scam, at least
21:58:21 <elliott> kallisti: what
21:58:29 <elliott> !logs
21:58:30 <Ngevd> Heh, my first "I may" was on that first day
21:58:30 <iconmaster> Hi ais!
21:58:32 <Ngevd> I think
21:58:50 <monqy> I don't think I spoke on my first day
22:00:04 <elliott> ais523: incidentally, I think I've finally managed to figure out a mostly non-hierarchical file structure for ~
22:00:05 <hagb4rd> this is so romantic
22:00:12 <ais523> elliott: what is it?
22:00:18 * elliott twisting unix since some time in the past
22:00:21 <ais523> (I like hierarchical file structures for ~, incidentally)
22:00:46 <iconmaster> ooooh is ~ somehting new
22:00:53 <elliott> ~ is the unix notation for home directory
22:00:59 <iconmaster> oh duuh
22:01:04 -!- Ngevd has quit (Quit: Leaving).
22:01:10 <elliott> but if you'd like something new and denoted by a symbol, let me tell you about @!
22:01:17 <kallisti> ais523: eh, I prefer flat filesystems for ~
22:01:20 <iconmaster> yep I got it now, I thought you were talking about a language
22:01:33 <iconmaster> Yep I was thinking of @
22:01:48 <iconmaster> So is @ a thing yet?
22:01:56 <elliott> Well... no.
22:02:09 <ais523> elliott: err, incorrect, "@" was a symbol when it was used as a placeholder for @'s name, but \"@\" is not a symbol
22:02:17 <elliott> you can't escape @, don't even bother trying
22:02:51 <ais523> elliott: so how do you exit a program in Befunge-93?
22:03:07 <iconmaster> Smash the computer with something heavy?
22:03:14 <elliott> ais523: ~/downloads contains files generally "from elsewhere", and can be cleaned at any moment; ~/cache/<thing> is something that I didn't create, and is expected to be retrievable from elsewhere for the forseeable future, and furthermore is not so huge that doing so would be a pain (for instance, ~/cache/logs/esoteric is the rsync'd logs for this channel); ~/keep/YYYY-MM/<thing> contains things I don't want to lose, organised by order they were
22:03:14 <elliott> added there -- for instance, if I want to save a web page I expect will go away or change, it would go in there; or if I want to store a replacable but very large file
22:03:38 <ais523> hmm, interesting
22:03:40 <elliott> ~/code and ~/media/<type> are managed hierarchically for convenience
22:03:45 <ais523> I store replaceable but very large files on a different partition entirely
22:03:57 <ais523> because it's here, and I'm not using it for anything else
22:04:13 <elliott> what I was missing is ~/cache; there was no place to put things I didn't want to be able to wipe indiscriminately, but that (a) might vary significantly over time and (b) aren't irreplacable
22:04:22 <elliott> the nice thing is, I can just not back ~/cache up
22:04:45 <elliott> but I don't have to worry about redownloading e.g. large installation ISOs in the short term
22:04:56 <ais523> elliott: I have an equivalent to ~/cache
22:05:06 <ais523> but it's a second-level directory "bulky" in anything that might reasonably need that
22:05:25 <elliott> hmm, I think I could make the model more pure by symlinking things in ~/media to ~/keep
22:05:54 <elliott> (technically, I could redownload any one piece of media trivially, so they should be in ~/cache, but redownloading all of them would be prohibitively time-consuming, so ~/keep is the right place, holistically)
22:06:21 * elliott has now used holistically to describe filesystem organisation, and thus gives up his decent person card.
22:06:27 <elliott> *"holistically"
22:06:52 <kallisti> elliott: you were never a decent person.
22:06:59 <elliott> true.
22:07:23 <kallisti> elliott: example: your "slow submission" on anarchy golf
22:07:34 <pikhq> Yeah, my stance of media is generally to act like they're irreplacable not because they *are* but because they are a *pain* to replace.
22:07:38 <elliott> ais523: another thing I might add is ~/scraps/YYYY-MM, which would basically be small-ish immutable things I produce
22:07:47 <ais523> immutable?
22:07:47 <kallisti> ehird(ashamed) I lol'd
22:07:50 <elliott> ais523: e.g. if I write a program just to test something or see if it can be done
22:08:03 <pikhq> Especially when the only extant good encoding of something is self-created.
22:08:04 -!- derdon has joined.
22:08:20 <elliott> kallisti: I made that challenge
22:08:34 <kallisti> even worse.
22:08:34 <elliott> kallisti: as a response to a really stupid one immediately before it
22:08:48 <elliott> quickly submit (post mortem)
22:08:48 <elliott> Submit SLOWLY (endless)
22:08:52 <elliott> http://golf.shinh.org/p.rb?quickly+submit
22:08:56 <kallisti> and then proceeded to game the system. shame on you.
22:09:08 <elliott> ais523: sorry, *~/src, I renamed it
22:09:08 <Phantom_Hoover> I'd mock you guys for being so anal about file organisation, but I always die a little inside when I have to delve into the chaos of ~/Downloads.
22:09:15 <kallisti> anarchy golf ranking is /serious shit/
22:09:20 <Phantom_Hoover> Or ~.
22:09:24 <Phantom_Hoover> Or ~/Programs.
22:09:30 <elliott> ais523: ~/scraps is basically, I used to have ~/Code/scraps, which was one-file one-off things I did, as proofs of concept or tests or whatever
22:09:35 <pikhq> Phantom_Hoover: I try to be, I just fuck it up a lot.
22:09:42 <elliott> but there's no reason it needs to be inside the code directory
22:09:47 <kallisti> ais523: scraps would be cool, especially if it were organized by date
22:09:48 <pikhq> Phantom_Hoover: ~/downloads is Sad.
22:09:51 <kallisti> er
22:09:56 <kallisti> elliott: ^, rather
22:09:57 <elliott> kallisti: <elliott> ais523: another thing I might add is ~/scraps/YYYY-MM, which would basically be small-ish immutable things I produce
22:09:59 <elliott> note date organisation :P
22:10:02 <ais523> <hallvabo (please delete this nonsensical challenge)> print 1
22:10:03 <kallisti> elliott: yes...
22:10:07 <Phantom_Hoover> ~/Documents is getting in a state too.
22:10:08 <kallisti> elliott: I was not blind to it. :P
22:10:16 <Phantom_Hoover> So, amazingly, is ~/Pictures.
22:10:37 <kallisti> elliott: so you could go back in time and see wtf you were working on in a given day. sounds cool.
22:10:42 -!- NihilistDandy has joined.
22:10:47 <elliott> kallisti: any directory with no obvious strong hierarchical navigation and unbounded growth I pretty much index by YYYY-MM
22:10:49 <kallisti> but there's a slight overhead on maintaining the date structure.
22:10:51 <Phantom_Hoover> ~/Music and ~/Videos are organised by dint of having 1 and 2 files in them respectively.
22:10:53 <elliott> e.g. ~/keep too
22:10:57 <elliott> kallisti: note that it's only for immutable things
22:11:15 <elliott> if you work on something again and it's not like a one-off "version 2" that you can just copy and note the old one in a comment of or whatever, then it should go somewhere more permanent
22:11:40 <elliott> (probably ~/code)
22:11:58 <elliott> I don't produce much that isn't code so I don't really have good systems for long-term storage of self-produced non-code works
22:12:07 <kallisti> elliott: what if you're like me and don't create bug-free programs with all the features you want first try. :P
22:12:17 -!- pikhq_ has joined.
22:12:53 <kallisti> elliott: maybe that's an indication that I only write SERIOUS programs.
22:13:06 <elliott> kallisti: you use ~/src/<name> for programs. if you think code should go into ~/scraps by default then you have misunderstood its purpose
22:13:15 <kallisti> elliott: not by default
22:13:18 <kallisti> but small stupid things.
22:13:22 <kallisti> seems appropriate.
22:13:46 <elliott> for instance, here's something that would go into scraps: a file where I try and see if <thing> can be done in haskell's type system, or a stupid thing showing off some perverse language feature in something or whatever
22:13:55 <pikhq_> ~/scraps is very much for those "one-off script" things, near as I can tell.
22:13:57 <elliott> or a shell script I wrote to do a one-off task for a server, say
22:14:15 <elliott> anything I expect to use more than once for a reason other than looking back on old stuff for the hell of it shouldn't go in ~/scraps
22:14:21 * pikhq_ should actually organize things
22:14:25 <elliott> well, s/use/modify/
22:14:26 <Phantom_Hoover> Whose ~ are we even talking about here?
22:14:31 -!- pikhq has quit (Ping timeout: 255 seconds).
22:14:32 <elliott> Phantom_Hoover: my new system
22:14:43 <pikhq_> I'm liking many elements of elliott's system.
22:14:48 <Phantom_Hoover> Will it be the @ of ~ organisation.
22:14:53 <elliott> Replacing my old system, "everything goes directly in ~ apart from code and downloads (which I never clean up and store valuable and crap alike in)"
22:14:55 <Phantom_Hoover> Except with the actually-existing part.
22:15:05 <elliott> Phantom_Hoover: well, it's mostly non-hierarchical, so there's that?
22:15:15 <Phantom_Hoover> is it
22:15:19 <Phantom_Hoover> ORTHOGONALLY PERSISTENT
22:15:19 <elliott> pikhq_: JOIIIIN THE DAAARK SIIIIIIDE
22:15:24 <pikhq_> elliott: Ah, my current standard. :P
22:15:32 * elliott actually invented ~/keep like a year or two ago, he just only used it intermittently.
22:15:39 <elliott> I think it was called ~/Saved at first or something.
22:16:03 * pikhq_ makes a new-structure dir to do this
22:16:19 <elliott> pikhq_: I used to clean up ~ by doing mkdir crap; mv * crap
22:16:30 <elliott> I ended up with nested crap.
22:16:30 <pikhq_> elliott: Hmm. Might be a better idea, TBH.
22:16:37 <pikhq_> Except I already have nested crap.
22:16:44 <pikhq_> ~/oldhome/ :(
22:17:00 <elliott> pikhq_: mkdir -p ~/keep/2011-12/old-home; mv * ~/keep/2011-12/old-home
22:17:07 <elliott> See, that's EFHS-compliant!
22:17:13 <iconmaster> Funny thing how when I use a text-based interface a lot, my files tend to be neat, but with more grapghical stuff it gets messy...
22:17:36 <iconmaster> Do you kinda know what I mean
22:17:55 * elliott 's #1 causer of mess is the fact that browsers download things so conveniently into a single directory.
22:18:02 * iconmaster is getting in the way oif an inteligent discussion, oh my
22:18:14 <elliott> Second to that is starting a new terminal and running wget without bothering to move anywhere reasonable.
22:18:19 <iconmaster> Yeah downloads tend to pile up
22:18:22 <pikhq_> elliott: Clear solution to the first.
22:18:54 <pikhq_> Make ~/Downloads a symlink to ~/cache/downloads/YYYY-MM/
22:19:01 <elliott> Heh
22:19:11 <elliott> ~/cache should be reserved for things I'll actually care about in a month, though.
22:19:30 <elliott> I might set up a cron job to rm -rf ~/downloads/* so that I'm forced to move things into ~/cache or ~/keep if I don't want them obliterated.
22:19:38 <pikhq_> There's a thought.
22:19:43 <elliott> Come to think of it, ~/downloads should probably be ~/tmp.
22:19:47 <elliott> Or ~/tmp/downloads.
22:19:57 <elliott> And new terminals should start in ~/tmp so I can start doing things immediately without cluttering ~.
22:20:00 <elliott> Hm.
22:20:23 <elliott> Actually, not ~/tmp/downloads, just ~/tmp; since I'm liable to wget things it'll all end up mushed together anyway.
22:20:26 * elliott mv ~/downloads ~/tmp
22:20:52 <elliott> Not sure how to start new terminals in ~/tmp, though.
22:20:57 <elliott> Putting it in ~/.bashrc feels like it might break things.
22:21:21 <elliott> Meh, /me does it anyway and waits to see what, if anything, breaks.
22:22:35 <elliott> pikhq_: You're still on Xfce, right?
22:22:43 <pikhq_> elliott: Yeah.
22:23:10 <elliott> pikhq_: You should join us xmonad cool kids. :p
22:23:35 -!- KingOfKarlsruhe has quit (Quit: ChatZilla 0.9.87 [Firefox 9.0/20111216140209]).
22:26:32 <elliott> kallisti: Re: noobs,
22:26:40 <elliott> [elliott@dinky esoteric]$ egrep 'CakeProphet|SevenInchBread' ????-??-??.txt | head -n 1
22:26:40 <elliott> 2006-08-10.txt:00:50:06: -!- CakeProphet has joined #esoteric.
22:26:40 <elliott> [elliott@dinky esoteric]$ egrep ehird ????-??-??.txt | head -n 1
22:26:40 <elliott> 2006-12-29.txt:20:42:41: -!- ehird has joined #esoteric.
22:27:03 * elliott 4 month noob.
22:27:17 <pikhq_> elliott: Lemme first fix this shit.
22:27:52 <elliott> > inits []
22:27:53 <lambdabot> [[]]
22:27:54 <elliott> > inits [0]
22:27:55 <lambdabot> [[],[0]]
22:28:28 <kallisti> elliott: that's all it takes man
22:28:40 <kallisti> elliott: my joining of esoteric marks the end of the Pro Era
22:28:46 <kallisti> in which all subsequent joins are noobs.
22:29:01 <kallisti> ask any #esoteric historian
22:29:08 <kallisti> (I am the only #esotierc historian)
22:30:04 <Phantom_Hoover> As a resident channel crazy memory guy, I can confirm that this is true if taken from your phase of #esotericery that began after I joined.
22:31:02 -!- azaq23 has joined.
22:32:44 <elliott> kallisti: Dude, I've been #esoteric archivist for years.
22:32:57 <kallisti> archivists are not historians
22:33:02 <kallisti> historians ANALYZE.
22:33:07 <kallisti> archivists just collect data.
22:33:15 <Deewiant> elliott: Why not just /tmp.
22:33:34 <kallisti> Deewiant: I don't think he wants stuff to disappear on shutdown
22:33:55 <kallisti> or even, whenever the OS feels like clearing everything in temp (can it do that?)
22:34:18 -!- nooga has joined.
22:35:44 <elliott> Deewiant: Like, directly into /tmp?
22:35:58 <elliott> I'd need a subdirectory at the very least, and I don't see why /tmp/elliott is any better than /home/elliott/tmp.
22:36:17 <elliott> Deewiant: More importantly, /tmp is in RAM.
22:36:18 <Deewiant> You get to avoid the cron job :-P
22:36:25 <elliott> I don't want to download 600 meg ISOs into RAM.
22:36:39 <elliott> Admittedly there's swap, but god knows Linux sucks at swapping.
22:36:51 <Deewiant> Does anything not?
22:36:53 <Deewiant> (Don't say @.)
22:38:40 <kallisti> I don't think swap would act as a special thing in @
22:38:48 <Deewiant> Shut up about @
22:38:58 <elliott> Deewiant: You picked a really bad time to not want me to say @, since @'s entire business with the disk is to negotiate swap as fast as possible.
22:39:12 <elliott> (And as well as possible.)
22:39:38 <kallisti> @'s filesystem is just a big swap partition right? :P
22:39:39 <lambdabot> Maybe you meant: . ? @ ask bf do ft id msg pl rc v wn
22:40:01 <Deewiant> @os
22:40:01 <lambdabot> Maybe you meant: . ? @ ask bf do docs ft id msg oeis pl rc v wn yow
22:40:12 -!- iconmaster has quit (Quit: Probably switching to Pesterchum now.).
22:40:55 <elliott> kallisti: Yes.
22:42:44 <elliott> Deewiant: Also, @ @ @ @ @ @ @.
22:43:14 <elliott> > inits []
22:43:15 <lambdabot> [[]]
22:43:26 <elliott> > inits [()]
22:43:27 <lambdabot> [[],[()]]
22:44:00 <elliott> @src inits
22:44:00 <lambdabot> inits [] = [[]]
22:44:01 <lambdabot> inits (x:xs) = [[]] ++ map (x:) (inits xs)
22:44:20 <elliott> > let inits' [] = []; inits' (x:xs) = [[]] ++ map (x:) (inits xs) in inits' [()]
22:44:21 <lambdabot> [[],[()]]
22:44:27 <elliott> > let inits' [] = []; inits' (x:xs) = [[]] ++ map (x:) (inits xs) in inits' [1,2,3]
22:44:28 <lambdabot> [[],[1],[1,2],[1,2,3]]
22:44:30 <elliott> > let inits' [] = []; inits' (x:xs) = [[]] ++ map (x:) (inits xs) in inits' [1,2]
22:44:31 <elliott> > let inits' [] = []; inits' (x:xs) = [[]] ++ map (x:) (inits xs) in inits' [1]
22:44:32 <lambdabot> [[],[1],[1,2]]
22:44:32 <Phantom_Hoover> @yow
22:44:32 <lambdabot> Couldn't find fortune file
22:44:33 <lambdabot> [[],[1]]
22:44:33 <elliott> > let inits' [] = []; inits' (x:xs) = [[]] ++ map (x:) (inits xs) in inits' []
22:44:33 <lambdabot> []
22:44:41 <Phantom_Hoover> lambdabot.......
22:46:01 <kallisti> elliott: I don't really understand why the first element is []
22:46:05 <pikhq_> elliott: Does ~/cache/src make sense? (in here goes tarballs that I expect to open more than once)
22:48:52 <ais523> heh, amidst all that spam, one edit was actually not spam
22:49:12 <elliott> pikhq_: Yep, that makes sense.
22:49:32 <pikhq_> Kay, just sanity checking.
22:49:44 <elliott> kallisti: Because you start with [] and add elements until there aren't any more.
22:49:45 <ais523> anyone have opinions on http://esolangs.org/wiki/SQRT?
22:52:23 <elliott> nope
22:53:10 <monqy> I don't understand it
22:53:32 <ais523> my mind glazes over trying to read it
22:53:38 <ais523> which is why I haven't put any categories but lang and year
22:53:50 <monqy> yes I think that is what happens to me too
22:53:56 <Phantom_Hoover> We should totally invent esomaths.
22:54:17 <Phantom_Hoover> Like, have axiom systems which are completely nuts and show them equivalent to nice things.
22:55:46 <elliott> Phantom_Hoover: that's called mathematics
22:55:49 -!- kmc has joined.
22:56:06 <elliott> Mathematics is basically what happens when you take the fixed-point of parody and thus make a field completely immune to it.
22:56:31 <Phantom_Hoover> I
22:56:39 <Phantom_Hoover> I don't think you understand what mathematics is about?
22:57:20 <elliott> Phantom_Hoover: I didn't say that was how it was *made*, I'm just saying that's what it *is*.
22:57:55 <Phantom_Hoover> Studying equivalence of axiom systems is... not the majority of maths.
22:58:01 <elliott> (If you think I'm wrong you have to produce a credible parody of mathematics that is distinguishable from the real mathematics of 50 years later.)
22:58:02 <elliott> Oh, that.
22:58:04 <elliott> That was a joke.
22:58:09 <elliott> Well, so was the parody thing.
22:58:35 <elliott> Anyway, that's just because you don't study Real Mathematics (Real Mathematics is pure logic).
22:58:39 <elliott> Q.E.Z.
22:58:55 <NihilistDandy> Quod erat zepto?
22:59:30 <elliott> NihilistDandy++
23:00:25 <monqy> how could I forget about zepto
23:00:32 <Deewiant> Quod ee zee
23:01:07 <elliott> Q.E.@.
23:01:18 <Phantom_Hoover> Wait what's zepto?
23:01:24 <NihilistDandy> http://zeptojs.com/
23:01:32 <elliott> Wait, what?
23:01:35 <elliott> I was talking about the Real Zepto.
23:01:40 <NihilistDandy> Oh, that one
23:01:46 <NihilistDandy> http://en.wikipedia.org/wiki/Zepto-
23:01:56 <elliott> NihilistDandy is trolling. :-(
23:02:13 <NihilistDandy> <3
23:02:36 <monqy> fond memories of zeptobot, news-ham
23:03:01 <NihilistDandy> http://www.mcsweeneys.net/articles/the-ipod-zepto-inconceivably-small
23:03:58 <Phantom_Hoover> news-ham ;_;
23:04:05 <elliott> monqy: I need to write cs-words sometime.
23:04:17 <elliott> I'm not exactly sure where to get a list of CS words though.
23:06:16 <elliott> Q: My iPod Zepto stopped playing and now it keeps eating flakes of dead skin that have settled on my furniture.
23:06:17 <elliott> A: That’s a dust mite. Unplug the headphones from wherever you’ve inserted them in the mite and try to locate your iPod Zepto.
23:06:19 <elliott> A+
23:06:29 <Phantom_Hoover> /r/programming :P
23:07:17 <elliott> Phantom_Hoover: I said CS!
23:07:30 <Phantom_Hoover> /r/math
23:07:36 <pikhq_> elliott: Yeah, this is a good organization system.
23:07:39 <Deewiant> /r/compsci
23:07:49 <Phantom_Hoover> /r/AskComputerScience
23:08:06 <NihilistDandy> /r/mltt
23:09:49 <elliott> pikhq_: It was either this, or not compulsively keeping all the gigabytes of crap I find on the internet.
23:09:53 <elliott> The choice was easy!
23:10:52 <pikhq_> elliott: :P
23:11:18 <pikhq_> elliott: Amusingly, I actually have some source in ~/keep/ now.
23:11:30 <pikhq_> Code for school projects that I doubt I'll touch anytime soon.
23:15:56 <elliott> pikhq_: Hmm, I've been using ~/keep/ for data created by others only, but ~/scraps doesn't sound right, since they're not really "scrappy"...
23:16:05 <itidus21> at some point the bottleneck of size would be the headphone cord
23:16:16 <elliott> Perhaps ~/scraps should instead be ~/archive, and contain non-scrappy shelved things too.
23:16:52 <itidus21> headphones really aren't the best way to listen to noise though
23:17:17 * Phantom_Hoover → sleep
23:17:18 -!- Phantom_Hoover has quit (Quit: Leaving).
23:17:38 <itidus21> they're just the most convenient since they avoid the global noise space... only occupying your local noisespace
23:18:07 <pikhq_> elliott: Hmm. So, ~/archive containing things you did you're *not* expecting to really work on?
23:18:12 <pikhq_> Seems reasonable.
23:18:49 <itidus21> organization of artifacts is challenging and genuine work
23:19:06 <itidus21> where artifacts refers to entries in the file system
23:19:30 <elliott> pikhq_: The intention was that ~/keep is basically an immutable, valuable analogue of ~/cache, so storing own-works in there doesn't really make sense (maybe for people less egoistic than me it does though :)); the problem is basically that something like ~/code + ~/scraps doesn't capture everything; you never "work on" other people's stuff, so ~/keep and ~/cache cover everything, but own-projects are essentially divided into three: non-scrappy a
23:19:31 <elliott> ctive, non-scrappy shelved, scrappy.
23:19:40 <elliott> And ~/code and ~/scraps only cover the first and last of those.
23:20:01 <itidus21> i don't like the word file though because it implies organization, whereas artifacts has more implication of the concept of a cupboard full of oddbobs and widgets
23:20:05 <pikhq_> elliott: And ~/code only covers code own-projects.
23:20:22 <elliott> Well, non-own-projects go in ~/keep or ~/cache.
23:20:31 <elliott> I suppose just putting scrappy things in ~/archive is acceptable; after all, it makes sense to move things out of archive to resurrect them, and that's certainly something you do with scraps as well as shelved code.
23:20:34 <pikhq_> Non-code own-projects go ?
23:20:47 <elliott> Argh, I keep saying ~/code.
23:20:49 <elliott> I mean ~/src.
23:20:57 <elliott> Although of course which choice of name is used is irrelevant :P
23:20:59 <elliott> But mine is called ~/src.
23:21:00 <pikhq_> Question remains. :P
23:21:06 <elliott> pikhq_: Well, depends what kind of project they are :)
23:21:14 * elliott mostly just does code, so...
23:21:22 <itidus21> things never quite fit categories
23:21:47 <elliott> But tentatively, I'd assign a new ~/<project-type>/<project> structure for active projects, and use ~/archive all shelved projects.
23:21:51 <elliott> *~/archive for all
23:21:56 <pikhq_> Seems reasonable.
23:22:48 <itidus21> even of 8 bit natural numbers.. you could categorize them into "numbers with 1 bit set", "numbers with 2 bits set", "numbers with 3 bits set".. and so the argument is "number of bits set is a low priority of categorization"
23:23:24 <itidus21> so then you have tension over which forms of categorization take priority when they contradict each other
23:23:53 <elliott> pikhq_: Incidentally, as long as your ~/.bashrc is only loaded by interactive shells, I think "cd ~/tmp" at the end of it should be harmless. Although you might want something like [[ $PWD = $HOME ]] && cd ~/tmp, if your terminal inherits directory when you open a new one, which is quite nice.
23:24:48 <pikhq_> elliott: Certainly tempting.
23:24:50 <itidus21> but if you categorize things by adding a sign into the thing itself, then the thing can have unbounded growth as the number of categories grows
23:25:03 <pikhq_> Handy for the common "random shit" usecase.
23:25:47 <itidus21> like.. you could have a number format with handy bits
23:26:23 <itidus21> i suppose that the last bit of a number indicates odd or even :-?
23:26:33 <itidus21> but you could have a prime bit
23:27:07 <pikhq_> elliott: So, "keep" is basically the catchall for "things I want from the 'net that are going to be a pain to hunt down again", right?
23:27:27 <pikhq_> That seems like a little-used category for me. :P
23:27:51 <elliott> pikhq_: Yes. Or even "things that are easy to hunt down, but I find relevant/valuable"; e.g. PDFs of information you're interested in, very large downloads that can't be classed as trivially-organisable "media", and so on.
23:28:06 <elliott> pikhq_: Well, do you ever look at anything in ~/Downloads?
23:28:09 <pikhq_> Ah. Well, that broadens it enough to be handy.
23:28:31 <pikhq_> So, the default is "move from ~/Downloads to ~/keep if you want to keep it"
23:28:41 <elliott> pikhq_: Anything from your downloads you (a) will look at more than once, and (b) will not be able to trivially replenish if you lost it, goes in ~/keep.
23:29:02 <elliott> ~/cache is things like open source software packages, public IRC logs, etc.
23:29:39 <pikhq_> i.e. shit that you are pretty much just keeping because it's big.
23:29:41 <itidus21> i think some of the best kind of files pair up with an application to represent some object like a document, a song, or a movie
23:29:45 <elliott> pikhq_: BTW, if you put http://sprunge.us/QAKd into ~/.config/user-dirs.dirs, then software will stop making annoying ~/Capitaldirs all the time.
23:29:59 <elliott> (Although you might want to change XDG_DESKTOP_DIR if you use desktop icons.)
23:30:21 <pikhq_> elliott: I've got pretty much that ATM.
23:30:39 <itidus21> i think microsoft made calculator, notepad, paint and then said fuck this
23:31:02 <itidus21> i wonder who they copied those from
23:32:11 <itidus21> clearly they don't know how to invent any interesting GUI app since then
23:35:00 <itidus21> i guess its not their job to make more such apps
23:35:39 <elliott> pikhq_: I just wrote two shell scripts to automatically make ~/{archive,keep}/YYYY-MM and move things into them, but I think I'll rewrite them in Haskell instead and put them up on GitHub...
23:35:54 <elliott> A script outgrows the shell as soon as you have "$(... "...")".
23:39:41 <elliott> Actually, cba, I'll do it later; I don't have any use for them right now, anyway.
23:39:45 <oklopol> elliott: are you in a university yet
23:39:50 <elliott> It's not really prohibitively difficult to do it manually :P
23:40:13 <itidus21> is it now safe to sell a GUI OS with overlapping windows?
23:40:13 <elliott> oklopol: Yes, I'm living under the foundations of one.
23:40:14 <elliott> It's cosy.
23:40:29 <elliott> itidus21: No, that's why Apple doesn't exist.
23:40:37 <itidus21> i mean for me
23:40:51 <oklopol> i see.
23:41:13 <itidus21> linux appears to use overlapping windows
23:41:27 <oklopol> elliott: you should go to a university
23:41:31 <itidus21> well i realize linux is just a kernal and gnu is just a bunch of things to go with kernel
23:41:38 <oklopol> have you considered doing this
23:41:42 <itidus21> but...
23:42:04 <elliott> oklopol: in a nebulous sense, yes
23:42:11 <NihilistDandy> elliott, you should go to UVM, then we can hang out~
23:42:13 <itidus21> i think my comment stands for most versions of linux
23:42:40 <elliott> NihilistDandy: your sincerity is palpable
23:42:53 <oklopol> university of turku has some awesome symbolic dynamics research
23:42:56 <elliott> itidus21: My window manager doesn't overlap the windows it manages without explicit instruction.
23:43:25 <NihilistDandy> It'd be fun. The CS department is practically tolerable, and the math department is awesome
23:44:01 <oklopol> i bet we have better symbolic dynamics than you guys
23:44:06 <itidus21> my window manager is actually a computerized simulation of filming a table with papers on it
23:45:40 <oklopol> NihilistDandy: so i hear you are in a university
23:45:56 <itidus21> its really things like that overlapping window debacle which is why humans deserve to perish in an armageddon
23:45:58 <oklopol> congratulations for not currently wasting your life
23:45:58 <NihilistDandy> Correct.
23:46:01 <NihilistDandy> lol
23:46:24 <NihilistDandy> Perhaps not my life, but certainly a great deal of money
23:46:39 <NihilistDandy> But hopefully I'll get someone to pay for grad school
23:46:50 -!- nooga has quit (Ping timeout: 240 seconds).
23:46:52 <NihilistDandy> Planning to graduate with honors
23:46:58 <oklopol> yeah i got paid a few thousand a year for doing my master's
23:47:02 <oklopol> erm
23:47:03 <oklopol> month
23:47:19 <NihilistDandy> That's what I'm hoping for :D
23:47:20 <itidus21> you'll learn to tile your windows after 10 years of study and research leads you to some patented conclusion of overlapping your windows
23:47:30 <elliott> oklopol: how old are you these days
23:47:36 <oklopol> and i'll get just as little next year :/
23:47:41 <oklopol> i'm 22.
23:47:54 <elliott> itidus21: you realise those patents were overturned
23:48:04 <elliott> oklopol: do you have your first phd yet
23:48:08 <oklopol> no :(
23:48:09 <itidus21> lol. i did not realize :P
23:48:12 <oklopol> i'm a fucking loser
23:48:24 <itidus21> this is joyous news
23:48:40 <NihilistDandy> Not really. I took a while off before I went to school, so I'm 22 and still in undergrad.
23:48:48 <NihilistDandy> Who's the loser now? :D
23:48:53 <itidus21> for all i knew it could have been patent trolls protecting each other over them
23:49:04 <elliott> itidus21: they were overturned in the 80s or 90s, aka shortly after apple sued microsoft over them, and btw it was apple who owned them not microsoft.
23:49:32 <oklopol> NihilistDandy: i don't consider people who don't get their phd before they are 22 losers. i consider myselves that cannot do that losers.
23:49:42 <NihilistDandy> lol
23:49:44 <itidus21> all my knowledge about it comes direct from wiki pages i just browsed
23:50:07 <itidus21> i was looking up windows 1.0 to try to figure out why early windows GUI apps were actually interesting
23:50:15 <elliott> specifically in 1988 apple sued microsoft for using overlapping windows in windows 2.0; 4 years later apple lost
23:50:22 <elliott> actually it was not patents, it was just a copyright infringement case.
23:50:27 <itidus21> lol
23:50:38 <oklopol> anyhow i figure if i prove a result a day, i should have a phd in a couple of years automatically
23:50:48 <elliott> oklopol: well cute, let me know when you have 3 phds or so
23:50:49 <itidus21> yeah even apple would not have the counter intuitive insight to patent overlapping windows
23:50:53 <elliott> and i might listen to anything you say
23:51:11 <oklopol> i doubt i'll get a second one
23:51:18 <elliott> oklopol: ohhh you're one of the lightweights. ok
23:51:20 <oklopol> i've realized everything except math is just gay
23:51:25 <elliott> thought you were, you know
23:51:26 <itidus21> i know technically euclid knew about overlapping windows
23:51:26 <elliott> serious
23:51:34 <elliott> oklopol: wow you think i meant in something other than mathematics?
23:51:39 <oklopol> :D
23:51:39 <itidus21> but this is besides the point when courtrooms and business is involved :P
23:51:43 <elliott> it would be insulting to myself to suggest such a thing
23:52:00 <oklopol> elliott: can't i just publish a lot of papers? i'm not sure you can have two phd's in math.
23:52:29 <oklopol> well i guess that's my problem, not yours
23:52:33 <elliott> oklopol: uh why not, let's say you move to another country, say the us, and enroll in phd shit using your master's degree
23:52:34 <elliott> and get a phd
23:52:40 <oklopol> huh.
23:52:41 <NihilistDandy> @remember <oklopol> i've realized everything except math is just gay
23:52:42 <lambdabot> I will remember.
23:52:42 <elliott> like i doubt they ask
23:52:47 <elliott> "do you already have one of these"
23:52:48 <Sgeo> If I say that I stopped looking at Common Lisp due to one function (which acted as the straw that broke the camel's back), and elliott, as he tends to do, defends whatever I criticize against my criticism
23:52:53 <elliott> NihilistDandy: bad idea, that has bold characters in it
23:53:01 <elliott> @forget <oklopol>
23:53:01 <lambdabot> Incorrect arguments to quote
23:53:06 <elliott> @forget <oklopol> i've realized everything except math is just gay
23:53:06 <lambdabot> Done.
23:53:12 <elliott> @remember <oklopol> i've realized everything except math is just gay
23:53:12 <lambdabot> Nice!
23:53:14 <elliott> Sgeo: then?
23:53:25 <oklopol> never forget
23:53:56 <NihilistDandy> And you can totally get PhDs in subsets of math
23:53:59 <Sgeo> Would that imply that I should give CL another chance?
23:54:19 <elliott> Sgeo: no, just use haskell forever
23:54:24 <elliott> i have you in the ri
23:54:26 <elliott> ght place now
23:54:34 <NihilistDandy> That's my favorite part about school. Bio and chem majors go "What do you mean '"math'? I'm not a 'science' major."
23:54:46 <NihilistDandy> *-(central ")
23:55:03 <oklopol> i think i'll just take the usual route and go do post doc research somewhere far away and never come back and become a drug lord and kill myself
23:55:14 <elliott> `addquote <oklopol> i think i'll just take the usual route and go do post doc research somewhere far away and never come back and become a drug lord and kill myself
23:55:19 <NihilistDandy> You've described my plan perfectly
23:55:23 <HackEgo> 772) <oklopol> i think i'll just take the usual route and go do post doc research somewhere far away and never come back and become a drug lord and kill myself
23:55:24 <Sgeo> Template Haskell is ugly. Well, quasiquoters are, anyway
23:55:31 <elliott> @forget <oklopol> i've realized everything except math is just gay
23:55:31 <lambdabot> Done.
23:55:34 <elliott> @remember oklopol i've realized everything except math is just gay
23:55:34 <lambdabot> It is stored.
23:56:02 -!- elliott has set topic: <oklopol> i think i'll just take the usual route and go do post doc research somewhere far away and never come back and become a drug lord and kill myself | http://codu.org/logs/_esoteric/.
23:56:06 <elliott> i just want the world to see that quote.
23:56:09 <oklopol> why is one hackegoed and the other lambdabotten?
23:56:24 <Sgeo> "Note that append copies the top-level list structure of each of its arguments except the last. "
23:56:29 <elliott> oklopol: bot affirmative action
23:56:37 <oklopol> i see.
23:56:51 <Sgeo> But, at the time that I got frustrated with CL and ragequit due to that, I did not see "The function concatenate can perform a similar operation, but always copies all its arguments."
23:56:56 <oklopol> it's bot, botted, botten right?
23:58:02 <elliott> yes.
23:59:17 -!- PiRSquared17 has joined.
23:59:20 <NihilistDandy> bot, botted, _|_
23:59:28 <elliott> :D
23:59:33 <elliott> bottem
←2011-12-20 2011-12-21 2011-12-22→ ↑2011 ↑all