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>     In the first argument of `S.unions', namely `(S.map f s)' 
00:11:10 <lambdabot> forall a. (Ord a) => [S.Set a] -> S.Set a 
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: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: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: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: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: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 * oerjan swats kallisti -----### 
00:45:54 * kallisti isn't really sure what's wrong with the above code. 
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: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: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: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: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: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: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: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: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: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: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: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:04:41 <kallisti> The Glorious Glasgow Haskell Compilation System, version 6.12.3 
01:06:18 * kallisti installs newest ghc and tries. 
01:06:37 <kallisti> oh god 6 minute download  for the binary tarball. 
01:07:22 <kallisti> my download rate is off the charts. 0.3 KB/s 
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: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: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: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: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: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: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: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: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: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:08:20 <kallisti> if you include both n and i in the output that works but you get a lot of duplicates 
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: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: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: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:12:30 <kallisti> I guess I could just construct a set. 
02:16:08 <oerjan> i started with <$> and sort of converted automatically 
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: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: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:51 <kallisti> main = mapM print $ map (factors.read) . words <$> getContents 
02:28:07 <kallisti> expected type: [String]  inferred type: IO String 
02:28:23 <oerjan> main = mapM_ (print . factors . read) . words =<< getContents 
02:29:09 <Sgeo> What was wrong with the former is that the stuff after the $ is IO 
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:30:17 <Sgeo> Wait, not quite 
02:30:22 <Sgeo> I think you'd have to return print 
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: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:37:27 <oerjan> kallisti: i included both, of course 
02:38:32 <oerjan> kallisti: um mine depends critically on primes that divide more than once appearing more than once 
02:39:18 <oerjan> 50 and 20 both have the same prime factors as 10, but only 10 has them only once each 
02:40:13 <oerjan> that group thing and stuff was to collect the equal ones together 
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:48:19 <kallisti> I'm thinking nub might actually be a faster than toList . fromList ??? 
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: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: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: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> bash: /usr/bin/ghc: No such file or directory 
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:57 <oerjan> hash -r  for bash, i think 
03:31:09 <oerjan> kallisti: i dunno, check the documentation 
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: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: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" 
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:03:06 <kallisti> so I need to keep ghc6 around. 
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: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:13 <Slereah> 4 files - bigtits movies .. Daily breast, free daily trumpets, large breasts every day.  
05:01:21 <Slereah> Those seem like interesting libraries 
05:03:42 <oerjan> it's where we keep abreast of new development 
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: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:51 <kallisti> mutable unboxed arrays can't have unboxed elements? 
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: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:56 <oerjan> or mostly, i think overloaded functions cannot 
05:43:40 <oerjan> because each unboxed type essentially comes with its own calling convention 
05:47:11 <Gregor> pikhq: Here's an alternative suggestion: wget 
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: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:50 <oerjan> kallisti: that will probably give the square root _twice_ 
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:14:36 <kallisti> so each case can have any number of guards, yes? 
06:14:50 <oerjan> each case pattern, yes 
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: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: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:42 <oerjan> kallisti: yes it falls through 
06:25:06 <Sgeo> > case () of { () | False -> 'a'; _ -> 'b' } 
06:26:04 <Sgeo> I had to stop myself from writing = instead of -> 
06:27:48 <zzo38> (I don't mean other monoids, I mean other monad transformers) 
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:35:28 <oerjan> i and n should be found by ghc's strictness analyzer 
06:36:51 <oerjan> kallisti: erm you realize there's no reason to recurse after an EQ? 
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:38:12 <pikhq> Sgeo: No, just enjoying myself. 
06:38:21 <kallisti> YESSSS. ONE FUNCTION CALL REMOVED. 
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:40 <kallisti> um my case no longer seems to work correctly. 
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:44:07 <kallisti> that's functionally equivalent 
06:44:11 <oerjan> your (_,False) is a copy of (_,True) 
06:44:38 <oerjan> the last line is wrong 
06:44:42 <Sgeo> kallisti, you have the same code for both 
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: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: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: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: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: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:56:00 <Sgeo> > maxBound :: Int + 1 
06:56:01 <lambdabot>   Could not deduce (GHC.Enum.Bounded 
06:56:11 <Sgeo> > maxBound :: Int + 1::Int 
06:56:12 <lambdabot>   <no location info>: parse error on input `::' 
06:56:22 <kallisti> Sgeo: what do you expect maxBound+1 to be 
06:56:25 <Sgeo> > (maxBound::Int) + (1::Int) 
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:50 <lambdabot>     Could not deduce (?x::(+) Int Unit) from the context () 
06:56:50 <lambdabot>       arising from a use of implicit parameter `?x' 
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: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:06 <Sgeo> Don't leave me hanging 
06:58:36 <oerjan> Sgeo: lambdabot gives longer error messages in privmsg 
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: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: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:47 <kallisti> NihilistDandy: that's not what I meant. 
07:02:23 <oerjan> kallisti: as you say, it's probably evaluated in the majority of cases. 
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: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: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: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: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 <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:10:10 <kallisti> oerjan: also rearranging the cases so that the most common one is first 
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: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: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:30 <lambdabot>   Overlapping instances for GHC.Show.Show (t -> (t, t)) 
07:15:37 <oerjan> and that it might use table lookup for such branching 
07:16:46 <oerjan> to the point that the default case is even listed _first_ in the internal structure iirc 
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:56 <oerjan> liftM2 quotRem [-1,-3] [-2,-4] 
07:18:58 <oerjan> > liftM2 quotRem [-1,-3] [-2,-4] 
07:19:07 <kallisti> NihilistDandy: you need ghc7 for -fllvm though 
07:19:16 <oerjan> > liftM3 id [divMod,quotRem] [-1,-3] [-2,-4] 
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: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:50 <oerjan> Data.Word.Word in that case 
07:20:51 <kallisti> NihilistDandy: do you have Clang? it needs that as well. 
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:08 <oerjan> NihilistDandy: oh, the haskell platform still uses 7.0.4 
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: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: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:29:15 <kallisti> oerjan: and then... take products from the powerset?  or...? 
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:13 <oerjan> well you _are_ listing _all_ the factors. 
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: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:33:07 <oerjan> kallisti: i doubt there's any such equation which doesn't essentially start with the prime factorization 
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: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: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: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: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: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:27 <NihilistDandy> kallisti: http://en.wikipedia.org/wiki/General_number_field_sieve 
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: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: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:45 <Sgeo> "Shor in Haskell the Quantum IO Monad" 
07:53:14 <Sgeo> NihilistDandy, there are papers about it 
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: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:19:35 <kallisti> hmm -prof doesn't seem to be working 
08:19:42 <kallisti> I compile with -prof -auto-all 
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:30:45 <fizzie> Will watching shit scroll by for hours make me a Linux expert overnight?  
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. 
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:01:13 <kallisti> but yes, computers are fast. it's startling. 
09:05:15 <Sgeo> kallisti, thank you for the language pragma 
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: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: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: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:29 * kallisti would enjoy something similar to a golfing contest but with execution speed instead of code length. 
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: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: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: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:23 <kallisti> zzo38: that's an interesting challenge. :P 
09:28:04 <monqy> hey, that headlifted baby looks pretty happy 
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: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: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) 
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). 
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: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: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:46 -!- Pietbot has quit (Remote host closed the connection). 
11:31:38 <lambdabot>   No instance for (GHC.Num.Num GHC.Types.Char) 
11:32:18 <fizzie> I'd fungot ^asc that stuff, but it's gone :/ :/ :\ 
11:41:58 <fizzie> > (id &&& chr) <$> [32..126] 
11:41:59 <lambdabot>   [(32,' '),(33,'!'),(34,'"'),(35,'#'),(36,'$'),(37,'%'),(38,'&'),(39,'\''),(... 
11:42:07 <fizzie> Except it's slightly truncated. 
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: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"),(... 
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:35 <Ngevd> No, more than surds! 
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: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: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: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: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: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:30 <elliott> @tell oerjan o ye of so much faith 
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:15 <elliott> @tell kallisti and -prof -auto-all. 
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: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:10 <fizzie> 14:22 -!- mode/#fgduisgdfiu [+boring nobody!*@* fizzie] by fizzie 
12:23:33 <elliott> ITW OULD JUST BE THE TEMPRARIES 
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: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: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: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: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:09:16 <kallisti> what if we gave computers ears. 
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: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:53 <elliott> @tell ais523 http://stackoverflow.com/questions/8590332/difference-between-sizeof-and-strlen-in-c 
13:14:08 -!- NihilistDandy has quit (Quit: http://haskell.org). 
13:16:25 <elliott> WHY DOES IT HAVE +2 POINTS NOW 
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: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: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:45 <kallisti> is he possibly thinking of void pointer when he says null pointer? no... because he mentions it a null character. 
13:38:07 <kallisti> I was only aware of one kind of NULL pointer. 
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: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:25 <kallisti> but sizeof on a VLA is "something special" 
13:40:48 <elliott> VLAs are something special 
13:41:34 <elliott> # Your branch is ahead of 'origin/master' by 10 commits. 
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: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 <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: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 <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:26 <fizziew> I think you should call such "family "trees"" instead. 
16:19:45 <oerjan> trees cannot be non-planar 
16:19:58 <Ngevd> Family trees are not strictly trees 
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: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: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: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: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:50 <fizzie> It seems to not autofloat. 
16:27:54 <fizzie> Yeah, it doesn't have WM_TRANSIENT_FOR set. 
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: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: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:36 <fungot> elliott: since innovation is so prevalent on irc... bbl :) 
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: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:19 <oerjan> birds lift off, then land.  never a miscommunication.  you cannot explain that. 
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: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: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: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:49 <elliott> oerjan: you'll get him to link that picture of his feet again. 
16:58:59 <elliott> Gregor: link that and i'll set it as my wallpaper, tiled 
16:59:07 <Gregor> http://codu.org/chromates.jpg 
16:59:33 <elliott> You know what, I don't think I'll set that as my wallpaper after all. 
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:05 <Gregor> elliott: I actually have blended it with my face to make a zombie me. 
17:00:07 -!- Vorpal has joined. 
17:00:15 <Gregor> Phantom_Hoover: For laffs? 
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: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: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: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: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:37 <elliott> Phantom_Hoover: A gap and a dip. And... yellowness. 
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:44 <Gregor> elliott: Whaaaaa, it's SUCH a good shoop though! 
17:07:54 <elliott> Phantom_Hoover: ENJOY LIFELONG SUFFERING 
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:13:09 -!- Ngevd has quit (Quit: Leaving). 
17:13:45 -!- sebbu2 has changed nick to sebbu. 
17:16:27 -!- Ngevd has joined. 
17:17:42 <Gregor> Ngevd: Go through the logs for the last fifteen minutes and click every link. 
17:18:09 <Ngevd> I will instead talk about esolangs that you are able to make IRC bots in 
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: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:57 <Gregor> The bot framework that runs EgoBot, HackEgo, glogbot. 
17:31:23 <Gregor> <-- shameless advertiser 
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: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. 
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:32 <elliott> Walruses aren't meant to confuse people, you know. :( 
18:01:46 -!- elliott has quit (Quit: walrageus). 
18:01:51 <Ngevd> The walrus was Paul! 
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: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: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:56 -!- kmc has joined. 
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: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:49 <nooga> i forgot that i have an active session on screen 
18:54:01 <Deewiant> Why don't you implement Minecraft in the Game of Life instead 
18:56:11 -!- quintopia has quit (Ping timeout: 252 seconds). 
18:57:57 -!- Ngevd has joined. 
18:58:00 -!- Pietbot has joined. 
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: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:12:37 <elliott> Nothing yet to my knowledge. 
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:49 <Ngevd> I'm trying to add citations to the Wikipedia article for Malbolge 
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: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: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:38:07 -!- Ngevd has joined. 
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: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:42:54 <Phantom_Hoover> I was going to reply, but then I noticed that you were agreeing with me so it was pointless? 
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: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: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: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: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: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: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: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: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: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:10:27 <itidus21> i wish i understood lambda calculus a bit better 
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:59 -!- Klisz has joined. 
20:14:10 <itidus21> suppose you wanted to program something like a chessboard...  
20:14:51 <itidus21> then.. the program is really manifested by changes of state on that checkers board 
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: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: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:06 <Ngevd> I wouldn't, though 
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: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: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: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: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: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:22 <itidus21> my rant is going off the rails a bit no 
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: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: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: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: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: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: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: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: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:25 <Phantom_Hoover> My life since the Big Bang Theory came out has been pockmarked with Sheldon comparisons from idiots. 
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:02:38 <itidus21> ... maybe it will even make people who understand bizzare notations attractive to women 
21:02:57 <itidus21> not this show, but other shows which might follow 
21:03:14 <monqy> itidus21 do you understand bizarre notations 
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:31 <elliott> A New Kind of Intelligence 
21:05:47 <monqy> who would author 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: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: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:57 -!- augur has quit (Remote host closed the connection). 
21:16:39 -!- GreaseMonkey has joined. 
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:18:03 <itidus21> or in some bases can probably do some kind of shifting 
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:19:04 <monqy> you wanted int to string????? 
21:19:17 <Ngevd> What format string? 
21:19:54 -!- hagb4rd has joined. 
21:20:01 <Ngevd> That tells me nothing of the string? 
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: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:23:05 <Ngevd> Converted an int to a string 
21:23:25 <Ngevd> > read "67" :: Int 
21:25:34 <elliott> while input =/= 0 { digit = input mod 10; prepend digit to result; input = input / 10 } 
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:29:05 <elliott> Ngevd: Only with an infinite initial (repeating pattern), I think. 
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: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:30 <itidus21> asking questions is ineffiicent.... i need to study this stuff 
21:32:49 <Ngevd> I've been here for... almost half a year now? 
21:33:30 <iconmaster> i do not assume anyone remembers me, I wasn't really all that important ever anyways 
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:06 <kallisti> iconmaster: your name looks vaguely familiar to me. 
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:25 -!- boily has quit (Ping timeout: 244 seconds). 
21:34:35 <iconmaster> Oh cool hi akeProphet i remeber you kinda 
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:52 <elliott> Ngevd: one, two, three, four... at least four or five 
21:36:04 <monqy> even the esolangers that live in hexham live in helsinki 
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: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:52 <elliott> Nothing much interesting, though :P 
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: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:46:48 -!- augur has joined. 
21:47:44 <hagb4rd> lol egobot has punchy arguments at last 
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: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:39 <Ngevd> My first was Nandypants in July 
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:54:05 -!- ais523 has joined. 
21:54:28 <kallisti> elliott: huh, I wonder why he stopped appearing around these parts. 
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: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:30 <Ngevd> Heh, my first "I may" was on that first day 
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:18 * elliott twisting unix since some time in the past 
22:00:21 <ais523> (I like hierarchical file structures for ~, incidentally) 
22:00:53 <elliott> ~ is the unix notation for home directory 
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: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: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:52 <kallisti> elliott: you were never a decent person. 
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: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 <elliott> kallisti: as a response to a really stupid one immediately before it 
22:08:48 <elliott> quickly submit (post mortem) 
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: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: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:10:02 <ais523> <hallvabo (please delete this nonsensical challenge)> print 1 
22:10:08 <kallisti> elliott: I was not blind to it. :P 
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: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: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: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: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: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:15:05 <elliott> Phantom_Hoover: well, it's mostly non-hierarchical, so there's that? 
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: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: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:22 <pikhq_> elliott: Clear solution to the first. 
22:18:54 <pikhq_> Make ~/Downloads a symlink to ~/cache/downloads/YYYY-MM/ 
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:43 <elliott> Come to think of it, ~/downloads should probably be ~/tmp. 
22:19:57 <elliott> And new terminals should start in ~/tmp so I can start doing things immediately without cluttering ~. 
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: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: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: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:17 <pikhq_> elliott: Lemme first fix this shit. 
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: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: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:38:40 <kallisti> I don't think swap would act as a special thing in @ 
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 <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:42:44 <elliott> Deewiant: Also, @ @ @ @ @ @ @. 
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:27 <elliott> > let inits' [] = []; inits' (x:xs) = [[]] ++ map (x:) (inits xs) in inits' [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:33 <elliott> > let inits' [] = []; inits' (x:xs) = [[]] ++ map (x:) (inits xs) in inits' [] 
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: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: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: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: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). 
23:00:25 <monqy> how could I forget about zepto 
23:01:35 <elliott> I was talking about the Real Zepto. 
23:01:56 <elliott> NihilistDandy is trolling. :-( 
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: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:07:17 <elliott> Phantom_Hoover: I said CS! 
23:07:36 <pikhq_> elliott: Yeah, this is a good organization system. 
23:09:49 <elliott> pikhq_: It was either this, or not compulsively keeping all the gigabytes of crap I find on the internet. 
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: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: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:57 <elliott> Although of course which choice of name is used is irrelevant :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: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:29 <elliott> itidus21: No, that's why Apple doesn't exist. 
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: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: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:58 <oklopol> yeah i got paid a few thousand a year for doing my master's 
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:54 <elliott> itidus21: you realise those patents were overturned 
23:48:04 <elliott> oklopol: do you have your first phd yet 
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: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: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: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:34 <elliott> oklopol: wow you think i meant in something other than mathematics? 
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:41 <NihilistDandy> @remember <oklopol> i've realized everything except math is just gay 
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:06 <elliott> @forget <oklopol> i've realized everything except math is just gay 
23:53:12 <elliott> @remember <oklopol> i've realized everything except math is just gay 
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: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: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: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:34 <elliott> @remember oklopol i've realized everything except math is just gay 
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: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:59:17 -!- PiRSquared17 has joined.