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