00:00:10 The "Pickle" card can be played as a minor or as a major, depending on circumstances. 00:03:35 The player with the Title card must lead that card on the first turn at the beginning of the game (unless nobody has that card in case it is a face-down hidden card in the center of the table). 00:08:42 can you write up the full rules? 00:09:21 why is lambdabot in #esoteric? 00:09:26 Unfortunately I never have. I have never actually thought of the full rules, but I have thought of many ideas, a few of which I forget. 00:10:16 Although I did remember a few things of my ideas, and possibly even have new ideas I can write here. Other people can also make up ideas, since it is incomplete. 00:11:28 You score by the first trick, the last trick, sequences, and by taking tricks containing "rulers". 00:12:07 You must follow suit if possible, and sometimes follow ranks. 00:12:47 Majors beat minors (and miscellaneous suited cards), metas beat everything. However, some majors and metas have special powers. 00:13:04 -!- elliott_ has quit (Ping timeout: 260 seconds). 00:13:51 (The card with instructions for divinations is used too in this game, although after playing this game you cannot use the deck for divination since the divination rules require that the deck is never shuffled.) 00:14:23 @pl \x -> (x,x) 00:14:23 join (,) 00:15:20 @t join 00:15:20 Maybe you meant: tell thank you thanks thx ticker time todo todo-add todo-delete topic-cons topic-init topic-null topic-snoc topic-tail topic-tell type . ? @ ft v 00:15:27 @type join 00:15:28 forall (m :: * -> *) a. (Monad m) => m (m a) -> m a 00:15:43 -!- augur has quit (Remote host closed the connection). 00:15:55 -!- augur has joined. 00:20:35 i forgot how the function monad instance works 00:30:51 @pl (\x -> map (\y -> (tick*x, tick*y)) [-half..half]) 00:30:52 (line 1, column 37): 00:30:52 unexpected "[" 00:30:52 expecting variable, "(", operator or ")" 00:31:13 @pl \x -> map (\y -> (tick*x, tick*y)) [-half..half] 00:31:14 (line 1, column 36): 00:31:14 unexpected "[" 00:31:14 expecting variable, "(", operator or end of input 00:31:16 :( 00:31:32 @pl \x -> map (\y -> (tick*x, tick*y)) 00:31:33 map . (. (tick *)) . (,) . (tick *) 00:31:39 ok yeah not replacing that 00:31:55 @pl \x -> map (\y -> (tick*x, tick*y)) [negate half .. half] 00:31:56 flip map [negate half..half] . (. (tick *)) . (,) . (tick *) 00:32:01 * Lymee reaches for a barf bag 00:32:13 @pl \x -> map (\y -> (tick*x, tick*y)) (enumFromTo (-half) half) 00:32:14 flip map [negate half..half] . (. (tick *)) . (,) . (tick *) 00:33:51 \x -> map (\y -> (tick*x, tick*y)) = map . (join (***) (tick *) .) . (,) 00:35:33 barf barf barf 00:36:30 I'd write that as \x -> map (join (***) (tick*) . (,) x), or (x,) with -XTupleSections, or with both = join (***) defined somewhere 00:37:40 Or \x -> let tx = tick*x in map ((tx,) . (tick*)) 00:40:13 -!- FireFly has quit (Quit: swatted to death). 00:44:22 -!- esowiki has joined. 00:44:43 -!- esowiki has joined. 00:45:04 -!- esowiki has joined. 00:45:41 -!- esowiki has joined. 00:46:31 -!- esowiki has joined. 00:47:29 -!- esowiki has joined. 00:48:13 -!- esowiki has joined. 00:48:57 -!- esowiki has joined. 00:49:41 -!- esowiki has joined. 00:50:21 -!- esowiki has joined. 00:51:01 -!- esowiki has joined. 00:51:46 -!- esowiki has joined. 00:52:24 -!- esowiki has joined. 00:52:24 -!- glogbot has joined. 00:53:47 why is lambdabot in #esoteric? <-- because we asked nicely (well i assume it was nicely) 01:00:06 :t (*) `on` recip 01:00:07 forall a. (Fractional a) => a -> a -> a 01:00:31 @hoogle Fractional -> Integral 01:00:31 Warning: Unknown type Fractional 01:00:31 Unsafe.Coerce unsafeCoerce :: a -> b 01:00:31 Prelude ($) :: (a -> b) -> a -> b 01:00:46 @src Double 01:00:46 data Double = D# Double# 01:00:49 Lymee: floor, ceiling, round 01:00:54 I see. 01:01:07 :t floor 01:01:07 forall a b. (RealFrac a, Integral b) => a -> b 01:01:15 Hmm 01:01:20 fractional can be e.g. complex 01:01:20 I wanna be a Devil's Advocate 01:02:23 @pl \x -> map (\y -> (tick*x, tick*y)) [ -half..half] 01:02:23 (line 1, column 36): 01:02:23 unexpected "[" 01:02:23 expecting variable, "(", operator or end of input 01:02:28 huh 01:03:06 weird broken parser 01:03:15 (given that it accepts it without - 01:03:17 ) 01:17:56 Sgeo: Why do you want to be Devil's Advocate? 01:18:18 I've boredly given some thought to what I consider an inane position 01:18:38 I think I can make it "work" fsvo "work" 01:41:33 Bleh. 01:41:41 I'm doing the Mandelbrot set with this: length $ takeWhile ((<2) . magnitude) $ take maxIters $ iterate step $ 0.0 :+ 0.0 01:41:45 Can't figure out any optimizations. 01:41:58 Anybody have any ideas? =w= 01:41:58 Oh! 01:42:19 Um, no wait, can't do that. 01:42:29 Lymee: magnitude is somewhat expensive as it requires a square root 01:43:08 @hoogle Complex a -> a 01:43:08 Data.Complex imagPart :: RealFloat a => Complex a -> a 01:43:08 Data.Complex magnitude :: RealFloat a => Complex a -> a 01:43:08 Data.Complex phase :: RealFloat a => Complex a -> a 01:44:55 :t \(a :+ b) -> a*a + b*b < 4) 01:44:56 parse error on input `)' 01:44:57 er 01:45:00 :t \(a :+ b) -> a*a + b*b < 4 01:45:01 forall t. (RealFloat t) => Complex t -> Bool 01:45:08 that might be better 01:46:12 also perhaps findIndex is more efficient than length $ takeWhile ... 01:46:22 :t findIndex 01:46:22 forall a. (a -> Bool) -> [a] -> Maybe Int 01:46:53 (then again, maybe not) 01:47:52 and it all depends on ghc's list fusion being able to optimize away the intermediate lists 01:52:12 @pl \x -> ((double $ imagPart x) + (double $ realPart x)) < 4 01:52:12 (< 4) . ap ((+) . double . imagPart) (double . realPart) 01:52:50 :t ap 01:52:51 forall (m :: * -> *) a b. (Monad m) => m (a -> b) -> m a -> m b 01:52:56 @hoogle forall (m :: * -> *) a b. (Monad m) => m (a -> b) -> m a -> m b 01:52:56 Parse error: 01:52:56 --count=20 "forall (m :: * -> *) a b. (Monad m) => m (a -> b) -> m a -> m b" 01:52:56 ^ 01:53:04 @hoogle (Monad m) => m (a -> b) -> m a -> m b 01:53:04 Control.Monad ap :: Monad m => m (a -> b) -> m a -> m b 01:53:04 Control.Monad liftM :: Monad m => (a1 -> r) -> m a1 -> m r 01:53:05 Control.Applicative (<*>) :: Applicative f => f (a -> b) -> f a -> f b 02:00:20 -!- cheater_ has quit (Ping timeout: 255 seconds). 02:09:20 @pl \x -> xCenter+tick*x 02:09:20 (xCenter +) . (tick *) 02:13:25 -!- cheater_ has joined. 02:16:18 :t findIndex 02:16:18 forall a. (a -> Bool) -> [a] -> Maybe Int 02:16:26 :t (a->a)->a->Int 02:16:27 parse error on input `->' 02:16:33 :t (a -> a) -> a -> Int 02:16:33 parse error on input `->' 02:16:58 ?? 02:17:10 @hoogle (a -> a) -> a -> Int 02:17:10 Data.Generics.Schemes everywhere :: (a -> a) -> a -> a 02:17:10 Data.Generics.Schemes everywhere' :: (a -> a) -> a -> a 02:17:11 Prelude until :: (a -> Bool) -> (a -> a) -> a -> a 02:17:44 until doesn't count number of steps, alas 02:21:24 -!- MDude has joined. 02:21:24 -!- MDude has changed nick to MSleep. 02:28:59 A, doh. 02:29:12 I changed z^^2 into z*z 02:29:22 Suddenly, almost halved time! 02:29:39 Lymee: there was a reason i wrote it with that yeah :P 02:30:27 istr someone wondering why ghc doesn't optimize x^2 to x*x before 02:30:49 > x^2 02:30:50 x * x 02:31:21 ha. 02:31:21 they are absolutely identical 02:31:32 > x * 3 02:31:33 x * 3 02:31:44 :t x 02:31:45 Expr 02:31:49 Ooh 02:31:56 > x :: Num 02:31:57 Class `GHC.Num.Num' used as a type 02:31:59 (in final result) 02:32:03 > show x 02:32:04 "x" 02:32:10 Ooh 02:32:14 This is a good idea 02:32:20 ...I thought everyone already knew about Expr. 02:32:21 > y 02:32:22 y 02:32:25 > fix f 02:32:25 Ambiguous type variable `a' in the constraints: 02:32:25 `GHC.Show.Show a' 02:32:25 a... 02:32:29 > a 02:32:30 a 02:32:31 > fix f :: Expr 02:32:32 f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (... 02:33:36 > scanl1 (*) [a,b,c,d,e] 02:33:37 [a,a * b,a * b * c,a * b * c * d,a * b * c * d * e] 02:35:28 > a+b 02:35:29 a + b 02:35:32 Heh. 02:35:34 Didn't know that existed. 02:35:41 Any way to evaluate that? 02:35:47 > a+g 02:35:48 a + g 02:35:51 > (a+g) 1 1 02:35:52 Couldn't match expected type `t1 -> t2 -> t' 02:35:52 against inferred type ... 02:35:55 not to my knowledge 02:36:07 :t a 02:36:07 Expr 02:36:12 @src Expr 02:36:12 Source not found. 02:36:27 Lymee: it's in a package named simplereflect 02:36:31 iirc 02:37:14 http://hackage.haskell.org/package/simple-reflect 02:38:17 oh there's a reduction function 02:38:34 reduction (a+b+c+d) 02:38:37 er 02:38:39 > reduction (a+b+c+d) 02:38:40 Not in scope: `reduction' 02:38:42 oops 02:39:15 maybe lambdabot doesn't have the latest version 02:39:28 > reduce (1+2+3+4) 02:39:29 3 + 3 + 4 02:39:34 > reduction (1+2+3+4) 02:39:34 Not in scope: `reduction' 02:39:42 >reduce (a+b+c+d) 02:39:46 > reduce (a+b+c+d) 02:39:46 a + b + c + d 02:39:52 > reduce (a*b+a*c) 02:39:53 a * b + a * c 02:39:57 i guess it cannot reduce pure symbols 02:40:02 > reduce (a*(b+c)) 02:40:03 a * (b + c) 02:40:08 Bleh. 02:40:16 > iterate reduce (1+2+3+4) 02:40:16 [1 + 2 + 3 + 4,3 + 3 + 4,6 + 4,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10... 02:40:51 > iterate reduce (1*2+3*4) 02:40:52 [1 * 2 + 3 * 4,2 + 3 * 4,2 + 12,14,14,14,14,14,14,14,14,14,14,14,14,14,14,1... 02:41:58 > (\x -> fst $ head $ dropUntil (\x -> (fst x) == (snd x)) $ zipWith (,) x $ tail x) $ iterate reduce (1*2+3*4) 02:41:58 Not in scope: `dropUntil' 02:42:10 * Lymee runs 02:42:18 :t var 02:42:19 forall a. String -> Sym a 02:42:27 > (\x -> fst $ head $ dropWhile (\x -> (fst x) != (snd x)) $ zipWith (,) x $ tail x) $ iterate reduce (1*2+3*4) 02:42:28 Not in scope: `!=' 02:42:38 > (\x -> fst $ head $ dropWhile (\x -> !((fst x) == (snd x))) $ zipWith (,) x $ tail x) $ iterate reduce (1*2+3*4) 02:42:39 : parse error on input `!' 02:42:43 > (\x -> fst $ head $ dropWhile (\x -> not ((fst x) == (snd x))) $ zipWith (,) x $ tail x) $ iterate reduce (1*2+3*4) 02:42:43 1 * 2 + 3 * 4 02:42:47 Aww. 02:46:04 > dropWhile (uncurry (/=)) . ap zip tail $ iterate reduce (1*2+3*4) 02:46:05 [(1 * 2 + 3 * 4,2 + 3 * 4),(2 + 3 * 4,2 + 12),(2 + 12,14),(14,14),(14,14),(... 02:46:12 hm... 02:46:30 > ap zip tail $ iterate reduce (1*2+3*4) 02:46:31 [(1 * 2 + 3 * 4,2 + 3 * 4),(2 + 3 * 4,2 + 12),(2 + 12,14),(14,14),(14,14),(... 02:47:12 > 14 == (14 :: Expr) 02:47:13 True 02:47:25 > reduce (2+12) == (14 :: Expr) 02:47:26 True 02:47:54 > reduce (2+12) /= (14 :: Expr) 02:47:55 False 02:48:10 > 2+12 /= (14 :: Expr) 02:48:10 False 02:48:16 ooh 02:48:19 darn 02:48:38 it actually reduces when comparing 02:50:37 http://pastebin.com/PXcS0k5G < is my code horrible? 02:51:06 > reduce (2+12+4+5) /= (14 :: Expr) 02:51:07 True 02:51:16 > reduce (2+12+4+5) /= (25 :: Expr) 02:51:17 True 02:51:23 > (2+12+4+5) /= (25 :: Expr) 02:51:24 True 02:51:31 > iterate reduce (2+12+4+5) 02:51:32 [2 + 12 + 4 + 5,14 + 4 + 5,18 + 5,23,23,23,23,23,23,23,23,23,23,23,23,23,23... 02:51:35 opps 02:51:36 my math fail 02:51:39 :P 02:51:40 > (2+12+4+5) /= (23 :: Expr) 02:51:41 False 02:53:48 > reduce (i*i) 02:53:48 i * i 02:53:54 > reduce (i+i) 02:53:54 i + i 02:54:03 > reduce (i^3) 02:54:04 i * i * i 02:54:10 > reduce (i^(100^100)) 02:54:11 i * i * (i * i) * (i * i * (i * i)) * (i * i * (i * i) * (i * i * (i * i)))... 02:54:13 * Lymee runs 02:54:30 > map (\x -> take 10 $ show x) $ iterate reduce (i^(100^100)) 02:54:31 ["i * i * (i","i * i * (i","i * i * (i","i * i * (i","i * i * (i","i * i * ... 02:54:42 > drop 100 $ iterate reduce (i^(100^100)) 02:54:43 [i * i * (i * i) * (i * i * (i * i)) * (i * i * (i * i) * (i * i * (i * i))... 02:54:49 > drop 1000 $ iterate reduce (i^(100^100)) 02:54:49 [i * i * (i * i) * (i * i * (i * i)) * (i * i * (i * i) * (i * i * (i * i))... 02:54:52 Aww. 02:54:59 @redo map (\y -> map (\x -> fracf $ (xCenter+x) :+ (yCenter+y)) range) range 02:54:59 Maybe you meant: do read todo undo 02:55:03 argh 02:55:09 @list undo 02:55:09 undo provides: undo do 02:55:15 @do map (\y -> map (\x -> fracf $ (xCenter+x) :+ (yCenter+y)) range) range 02:55:15 map (\ y -> map (\ x -> fracf $ (xCenter + x) :+ (yCenter + y)) range) range 02:55:21 darn 02:55:28 What did you want to do? 02:55:31 @do x >>= f 02:55:31 do { a <- x; f a} 02:55:40 turn it into a list comprehension 02:55:48 Ah. 02:57:19 [ [ fracf $ (xCenter+x) :+ (yCenter+y)) | x <- range ] | y <- range ] 02:58:04 Already did it. 02:58:06 :) 02:59:08 you have some more parentheses than necessary, but fair enough 03:00:35 also double is usually called square 03:02:00 uh 03:02:01 wait why did i do that 03:02:15 >< 03:02:18 beats me :P 03:03:42 -cpp Run the C pre-processor on Haskell source files 03:03:42 [dynamic] 03:03:46 Is there any reason to ever do that? 03:04:17 haskell doesn't have much in the way of conditional compilation without it 03:04:27 well didn't use to, anyway 03:04:39 i guess you can use template haskell these days 03:05:21 From what I read about Haskell, C pre-processor doesn't seem like the best kind of preprocessor for Haskell (because of the meanings of # and ' in Haskell, as well as other things) 03:05:40 i think it's actually a slightly modified preprocessor 03:05:48 What might be improved is something like how the macro preprocessor stuff in WEB but changed for Haskell stuff. 03:06:46 when hugs was still alive, it shared a number of library source files with ghc, which sometimes used cpp 03:07:28 For various reasons, I doubt a C preprocessor would work well with Haskell. 03:08:18 as i said, it is a modified one. 03:08:20 [snip]:~/hs$ time ./mandelbrot 1000 0 0 1 300 output.png 03:08:20 real0m24.731s 03:08:21 user0m24.650s 03:08:21 sys0m0.036s 03:08:21 [snip]:~/hs$ time ./mandelbrot 1000 0 0 1 300 output.png 03:08:21 real0m7.606s 03:08:23 ...... 03:08:25 o.o 03:08:36 Is -O9 really that effective? 03:09:45 well -O2 is effective, iirc -O3 sometimes gets worse, and i don't think there's a difference beyond that 03:09:54 * Lymee boggles 03:09:56 oerjan: Yes, a modified one might work. 03:10:31 iirc -O3 uses some experimental optimizations that are not guaranteed to actually make things better. 03:10:46 The executable -O2 and -O3 generate are identical, so.. 03:11:42 oh wait it's actually -O1 and -O2 03:11:58 http://www.haskell.org/ghc/docs/latest/html/users_guide/options-optimise.html 03:12:21 "At the moment, -O2 is unlikely to produce better code than -O. 03:12:23 " 03:14:41 or wait, there's not actually a number for using those that make things worse. 03:18:24 -!- azaq23 has quit (Ping timeout: 260 seconds). 03:24:57 http://www.malevole.com/mv/misc/killerquiz/ 03:25:52 Not funny. 03:25:52 =p 03:29:49 Is IUP generally well-regarded? 03:34:34 -!- NihilistDandy has joined. 03:39:47 -!- azaq23 has joined. 03:39:48 -!- azaq23 has quit (Changing host). 03:39:48 -!- azaq23 has joined. 03:41:48 Ohai 03:47:25 hrm... crap 03:47:36 Wut 03:47:47 writing that script I wanted will be harder than I thought 03:48:08 since I have to account for translational symmetry too 03:48:49 not too hard, just annoying 03:49:18 * NihilistDandy nods 04:03:45 -!- pikhq_ has joined. 04:03:54 -!- pikhq has quit (Ping timeout: 260 seconds). 04:07:26 -!- BeholdMyGlory has quit (Remote host closed the connection). 04:33:50 coppro: sounds like you want some kind of ABSTRACTION 04:34:25 * NihilistDandy trumpets 04:34:56 honestly are there programmers out there who think abstraction is in general bad? 04:35:56 better not be 04:36:05 College C programmers 04:36:37 Oracle admins 04:46:46 What about COBOL programmers? 04:47:30 I AM FORTRAN AND I DISLIKE CHANGE 04:56:05 Whether you need abstraction as well as what kind of abstraction depends on a lot of stuff! 05:05:25 like the socioeconomic status of your target demographic, for instance 05:05:37 or...the price of oil in canada 05:06:02 and the age of the current pope of course 05:07:12 Also your favorite ice cream 05:07:25 The lactose intolerant have no need for abstraction 05:08:04 This is an obvious truth, whose proof is left as an exercise to the reader. 05:43:08 Once I wrote something as a joke for rules of a card game, the value of the Queen card is current age of the queen, and to figure out the value of a Joker card you tell a joke to your opponent, and the value of this card is however many times your opponent laughs. 05:44:26 How did a couple hours of magic turn into 8? 05:44:31 s/magic/Magic/ 05:45:07 Meh, whatever, I regret it not. 05:45:12 Do you have more information? 05:45:18 pikhq_: magic, of course 05:45:29 (Maybe question can be answered, then?) 05:46:40 I found the texts I wrote some jokes of rules for card game and stuff. Here is some of it: 05:46:55 This game can be played by any number of people, as long as the number of people is even and prime. First, shuffle the cards. The players can now make a deal, either an addition deal or a multiplication deal. And then you figure out the values of the cards, and then finally you deal the cards. 05:47:01 If the deck has 40 cards, then you get 3 cards. If the deck has 52 cards, then you get 4 cards. If you are a funny guy, then you get 5 cards. If your name is Aaron, then you get 6 cards. 05:48:24 This document also jokes about measuring the resistance of pokemon cards in ohms. 05:48:28 haha 05:48:35 link? 05:49:50 http://zzo38computer.cjb.net/GamesMadeStupid/cardgame.htm 05:50:35 I didn't write it completely by myself (I forget exactly which parts) although I did write much of it and I did put everything together. 05:52:03 Also, I'm not entirely sure why I *started* this, other than that someone said "lol if freebsd used git, they'd have to have a gigantic repo in /usr/src", but cvs2git of FreeBSD's repo has taken two days thus far. 05:53:22 I like the win condition for solitair 05:53:24 *solitaire 05:54:02 (FWIW, FreeBSD typically has a CVS checkout of the source used to build the system in /usr/src) 05:54:15 Ah 05:54:49 Personally, I'm going to be surprised if the git repo of all changes from '93 is larger than a CVS checkout. 05:56:26 Doesn't CVS put metadata in the file though? 05:57:15 Yes. 05:57:28 Well, actually, it's optional metadata in the file. 05:57:39 Does cvs2git strip it? 05:57:58 I *think* it just fills in the metadata. 05:58:21 Or maybe it leaves it alone? 05:58:25 I dunno, I'll look. 06:03:08 Crud, my eyes are going weird 06:03:22 I'm reading a Homestuck update, and some of the text looks like it's popping out 06:03:26 Depending on the color 06:04:44 Link? 06:06:48 NihilistDandy, have you read all of Homestuck? 06:06:58 No. 06:19:52 technically no one has. 06:21:33 andrew husey in the future 06:22:05 adnrew, sorry 06:24:02 I didn't find the character Evinrude's (in The Rescuers) name meaningful until I got older 06:24:07 Then it was funny for a second 06:24:22 I should finish PS 06:24:45 He's a dragonfly, you see, and he propels mouse sized boats around a bayou 06:29:53 i got the joke the first time i saw it 06:29:58 when i was like 7 06:30:08 How good are you at optimization algorithms and that stuff? I was trying to make some kind of optimization. However, I cannot quite figure it out. That is why, I would like some help too. And then I can learn. 06:30:26 quintopi1: I lived in a landlocked state 06:30:34 With no boating friends 06:30:39 aha 06:30:41 I'm sorry I didn't have a yacht like some people 06:30:44 :P 06:31:15 i'm sorry i was taken fishing from very young in tiny johnboats 06:31:39 I did all my fishing from land :D 06:32:13 -!- quintopi1 has changed nick to quintopia. 06:32:27 -!- quintopia has quit (Changing host). 06:32:27 -!- quintopia has joined. 06:35:57 -!- hagb4rd has joined. 06:41:16 -!- hagb4rd has quit (Read error: Connection reset by peer). 06:46:12 i wanna thank whoever linked me to: http://everything2.com/title/Using+Asteroids+to+explain+the+topological+classification+of+2-manifolds 06:46:31 just reading it now and the idea is making sense 06:47:20 :D 06:47:57 so now what we need is a torus shaped monitor 06:48:58 with uh.. touchscreen 06:49:34 and it would be incredibly boring and a stupid idea and i'll just let it go 06:49:35 -!- oerjan has quit (Quit: Good night). 06:51:04 I have seen a diagram in a book where they described a TV screen being shaped like torus. I think the reason is similar, too. 06:51:14 Being stupid? 06:51:53 (But it didn't have touchscreen) 06:52:08 (Nor would touchscreen help in the context it was given in) 06:52:41 NihilistDandy: Is that a question to me? Or to itidus20? 06:53:13 I meant was the reason for the toroidal TV screen "being stupid"? 06:53:51 No! The reason was to indicate having no edges and you can move one direction to end up in the same place, and so on things like that. 06:54:24 Of course you would not have such a TV screen, I don't think it would work very well for any circumstances I can understand. 06:54:50 Mostly a joke 06:55:36 -!- hagb4rd has joined. 06:59:00 I wish my last name were more palindrome friendly. 06:59:28 this panel setup for the scratch is making everything extremely difficult to follow 06:59:43 it also doesn't help that I've forgetting details of what happened.... 06:59:46 +been 07:01:37 -!- NihilistDandy has quit (Quit: sleep). 07:03:10 :( The Science of Discworld isn't available as an ebook 07:03:25 Or at least, not from B&N 07:04:33 Oh, eBooks.com has it 07:18:04 ok i was following it until the spehrical universes bit 07:18:36 is the idea that a sphere doesn't really need an edge? 07:21:20 nevermind.. im pretty sure i know what a sphere is :-s 07:21:21 -!- augur has quit (Remote host closed the connection). 07:22:30 I hope someone can understand my register optimization algorithm problem that I have had. And if there is other channel that they know this kinds of things better. 07:22:41 -!- zzo38 has quit (Quit: But for now I sleep). 07:44:16 -!- augur has joined. 08:07:33 -!- hagb4rd has quit (Ping timeout: 255 seconds). 08:19:05 :t Expr 08:19:06 Not in scope: data constructor `Expr' 08:19:21 @hoogle a -> Expr 08:19:21 Warning: Unknown type Expr 08:19:21 Prelude id :: a -> a 08:19:21 Data.Function id :: a -> a 08:19:26 :t x 08:19:27 Expr 08:20:13 > a > b 08:20:13 False 08:20:36 > a < b 08:20:37 True 08:20:42 > a + 1 < b 08:20:43 True 08:21:24 > succ a 08:21:25 succ a 08:22:05 > EnumFromTo a z 08:22:05 Not in scope: data constructor `EnumFromTo' 08:22:09 > enumFromTo a z 08:22:09 *Exception: not a number 08:22:53 > pred . succ $ a 08:22:54 pred (succ a) 08:23:50 http://www.jazzscheme.org/images/screenshots/text_jazz.htm I am a bit unnerved by how similar to Java that looks 08:24:26 that pretty much is Java. 08:24:55 at least in program structure. 08:31:04 Greetings from Lancaster 08:31:24 -!- Taneb has joined. 08:31:42 -!- augur has quit (Remote host closed the connection). 08:31:45 That's the second time I've had non-latin characters in a captcha 08:32:35 haha. "Jazz borrows ideas from ... Java for its simple object system ..." 08:34:51 Well, Java's *object system* isn't too complex. 08:35:30 What's complex is that it has an overly verbose syntax and utterly retarded APIs. 08:35:39 Along with pointless edge cases. 08:36:56 Also, it suffers from the whole "let's do static typing but not have a good type system" thing. 08:41:53 What's wrong with the type system? 08:41:59 aside from requiring verbose syntax. 08:42:34 I've had an idea for an esolang! 08:42:40 All about ducks! 08:43:22 CakeProphet: It's static and not good enough to handle type inference. 08:43:32 i.e. it sucks. 08:43:34 It'll have duck typing, and the batman must be dismissed with a score of zero! 08:44:10 This, in my estimation, is *worse* than being loosely or un-typed. 08:58:26 Well, in about an hour, I leave 08:58:40 Far to the South 08:58:59 Durham 08:59:54 elliott, don't click this until you read new Homestuck update, but I just want to say I'm lolling at http://bit.ly/nJn669 09:02:30 Hahaha 09:05:01 -!- monqy has quit (Quit: hello). 09:11:08 -!- augur has joined. 09:33:38 Just discovered my first cavern in Dwarf Fortress 09:34:13 -!- Taneb has quit (Quit: Page closed). 09:58:56 -!- Phantom_Hoover has joined. 09:59:35 Hmm, I wonder if this connection will last for more than ten seconds. 09:59:35 Phantom_Hoover: You have 12 new messages. '/msg lambdabot @messages' to read them. 10:09:38 -!- Phantom_Hoover has quit (Ping timeout: 250 seconds). 10:23:25 -!- MigoMipo has joined. 10:25:51 -!- Sgeo has quit (Read error: Connection reset by peer). 10:26:33 -!- Sgeo has joined. 10:29:12 -!- hagb4rd has joined. 10:38:58 Has anyone implemented Brainfuck in the SQLite virtual machine? 10:45:51 -!- ais523 has joined. 10:59:47 > pl (foo a) == (foo b) 10:59:48 Not in scope: `pl'Not in scope: `foo'Not in scope: `foo' 10:59:56 > pl (len a) == (len b) 10:59:56 Not in scope: `pl'Not in scope: `len'Not in scope: `len' 11:00:20 @pl 11:00:21 (line 1, column 1): 11:00:21 unexpected end of input 11:00:21 expecting white space, "()", natural, identifier, lambda abstraction or expression 11:00:31 @pl \x y = (len x) == (len y) 11:00:32 (line 1, column 6): 11:00:32 unexpected "=" 11:00:32 expecting pattern or "->" 11:00:36 @pl \x y -> (len x) == (len y) 11:00:36 (. len) . (==) . len 11:00:42 quiet you 11:02:33 ahah 11:07:04 :t (==) `on` length 11:07:05 forall a. [a] -> [a] -> Bool 11:07:17 yeah I know 11:07:20 I just caught myself 11:17:40 -!- Phantom_Hoover has joined. 11:21:50 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds). 11:36:51 :t (. len) . (==) . len 11:36:52 Not in scope: `len' 11:36:52 Not in scope: `len' 11:37:01 :t (. length) . (==) . length 11:37:02 forall a a1. [a1] -> [a] -> Bool 11:37:13 It's more generic than (==) `on` length 11:38:59 omg no, the doctor is in one of the harry potter movies (and plays a baddie) 11:43:16 -!- sebbu2 has quit (Ping timeout: 240 seconds). 11:46:08 @pl \l1 l2 a b -> (l1 a) == (l2 b) 11:46:08 flip . (((.) . (==)) .) 11:46:33 @pl \l1 l2 a b -> (l2 a) == (l1 b) 11:46:33 flip (flip . (((.) . (==)) .)) 11:46:45 @pl \l1 l2 a b -> (l1 b) == (l2 a) 11:46:45 (.) . flip . ((==) .) 11:46:54 @pl \l1 l2 a b -> (l2 b) == (l1 a) 11:46:54 flip ((.) . flip . ((==) .)) 11:47:06 Hmm, I was trying to get rid of the flips. 11:47:21 Seems to be impossible is you want to have both l1 and l2 before a and b. 11:48:16 Ultimate goal was makeing "(. length) . (==) . length)" make look more symmetric in the two length calls. 12:07:53 -!- sebbu has joined. 12:10:04 "You can use the software in any way you like, make money and do as you will, and even change the source code and distribute it and charge for it provided that your changed version still works." 12:10:13 http://www.lambdassociates.org/Shen/newappeal.htm 12:10:27 Um, that... is there a legal definition of "works"? 12:11:33 as a noun, yes 12:11:35 I don't think so as an adjective 12:11:58 anyway, there's a legal definition of everything, occasionally the courts have to decide what it is, though 12:20:31 * Sgeo for some reason tries Allegro CL Express 12:46:34 -!- BeholdMyGlory has joined. 12:49:40 -!- azaq23 has quit (Quit: Leaving.). 12:50:56 http://www.reddit.com/r/programming/comments/ixkql/how_to_make_a_compiler_1000_times_faster/c27guh6 I... uh... 12:51:09 Seriously? 12:51:27 Even _____I_____'m not that stupid to do that, and I barely know what I'm doing 12:52:22 Then again, I'll probably make mistakes that this person doesn't 12:53:18 And trying to skim what the person wrote just ... dizzies me, so I'm the last person who should be commenting 13:05:56 http://sds.podval.org/ocaml-sucks.html is it just me or does this article have a mix of stupidity and insight? 13:06:29 hmm, n/m 13:08:06 -!- FireFly has joined. 13:17:30 "Make no mistake: Java/C/C++/C#/Perl are much worse than OCaml! " 13:17:49 I actually use OCaml in my day job 13:17:55 it made me want to invent Anarchy 13:18:05 because it's decently good at what it does, but has a few annoyances 13:18:33 My view of the world is always getting me down but it's not all that bad. 13:19:09 it's like i think people would be less happy overall if i let my own private piece of the world turn to shit 13:19:52 So, I think that people get used to what they are doing... and sometimes I get the urge to make breakthroughs and independant rediscoveries 13:21:07 and, at the worst of it... the analyzers start believing their own crap 13:21:23 and that surely drains the life out of them 13:21:24 "Now (Dec 1999)" http://sds.podval.org/tool.html 13:22:32 they speak of what is possible and what is not possible as if they had lived billions of years 13:23:11 and still, 1000s of years ago people alerady knew that billions of years can be insignifigant depending on what you are looking for 13:23:53 and they have the audacity to make claims on the computational power of the known universe 13:24:36 oh god i am ranting again... when did this happen 13:24:58 its one of these monologues which someone earlier today told me isn't fitting in a _chatroom_ 13:30:36 -!- MSleep has changed nick to MDude. 13:52:03 itidus20: it happens. 13:52:45 cake: i have so much dissatisfaction with so many things that a rant can erupt at any time. 13:53:15 > foldl1 (flip par) $ scanl1 (*) [1..] 13:53:23 mueval-core: Time limit exceeded 13:53:23 mueval: ExitFailure 1 13:53:40 ah, right, because par would impose strict semantics. 13:54:04 > foldl1 (flip par) . take 100 . scanl1 (*) $ [1..] 13:54:08 mueval-core: Time limit exceeded 13:54:13 > foldl1 (flip par) . take 50 . scanl1 (*) $ [1..] 13:54:16 1 13:54:22 lol 13:54:58 Yeah, sometimes I feel like executing the first 50 factorials in parallel for absolutely no gain. 13:56:27 except that's not really what happened. 13:56:46 > foldl1 par . take 50 . scanl1 (*) $ [1..] 13:56:47 30414093201713378043612608166064768844377641568960512000000000000 13:57:21 I think even then it's still sequential. 14:01:11 Light, service, state, box, cross, paper, door, teddy bear, fish, dog, apple, stroller, fish trap, slim, high, parent, free, country, swamp, fillet, rosé, parfait, brick, sleep, office, small, hand, clove, child, knife, two, sister, switch, unhappy, warm, inntermost, left, woman, reply, expense, guest, man, fine, spring, eighth, thousand, dead, skirt, step, grandmother, young couple. 14:01:18 Aye? 14:04:58 it woould be nice to have latex support in an IRC client. 14:05:46 I had a dream about an annoying douchebag who logged into this channel and spoke almost entirely in fancy latex 14:06:01 and his name changed every post. 14:06:16 and was also full of latex crap. 14:06:43 tswett, wat. 14:07:06 > deleteAllFiles `par` 'wat' 14:07:07 : 14:07:07 lexical error in string/character literal at chara... 14:07:12 Lymee: oh, it's a list of nouns and adjectives. 14:07:36 There are 51 types. This is one from each type. 14:07:40 Or, it's supposed to be. 14:12:57 Ihan vitun kamalan sekavat. 14:13:54 @src seq 14:13:55 Source not found. Take a stress pill and think things over. 14:18:39 @pl (\y -> [fracf $ (xCenter+x) :+ (yCenter+y) | x <- range]) 14:18:39 return . fracf . (<- range) . (| x) . ((xCenter + x) :+) . (yCenter +) 14:18:44 .... 14:18:45 wat 14:18:56 @pl doesn't understand list comprehensions 14:19:04 I see... 14:19:08 @. pl undo (\y -> [fracf $ (xCenter+x) :+ (yCenter+y) | x <- range]) 14:19:08 (range >>=) . flip flip [] . (((:) . fracf) .) . flip ((:+) . (xCenter +)) . (yCenter +) 14:33:19 Aww, how cute. 14:33:37 $pl \x -> [y + 1 | y <- x] 14:33:40 @pl \x -> [y + 1 | y <- x] 14:33:40 return . (y +) . ((1 | y) <-) 14:33:56 Hee hee. 14:35:33 heh. 14:36:46 nice 14:45:27 what the? 14:45:30 @pl \x -> [y + 1 | y <- x] 14:45:31 return . (y +) . ((1 | y) <-) 14:45:34 I don't get it 14:45:43 :t (<-) 14:45:45 parse error on input `<-' 14:45:49 so... 14:45:53 what the hell 14:45:55 Vorpal: 2011-07-24 17:18:47 ( Deewiant) @pl doesn't understand list comprehensions 14:46:02 Deewiant, *oh* hah 14:46:14 @. pl undo \x -> [y + 1 | y <- x] 14:46:14 ((1 +) `fmap`) 14:46:24 :t undo 14:46:24 Not in scope: `undo' 14:46:30 Deewiant, where is undo from? 14:46:35 @help undo 14:46:35 undo 14:46:35 Translate do notation to Monad operators. 14:46:41 ah 14:52:56 -!- pikhq has joined. 14:53:12 -!- pikhq_ has quit (Ping timeout: 276 seconds). 15:06:52 tswett: I wonder if you were talking about the inflection classes of nominals, how cute 15:27:48 atehwa_: you can determine that with figuratively absolute certainty. 15:32:15 > foldll1 (`f`) [a,b,c] 15:32:15 : parse error on input `)' 15:32:30 blasphemy! 15:32:57 (`f`) would be equivalent to (f) 15:34:08 yes I was seeing if it worked. 15:41:23 Android headset:nä 15:53:29 CakeProphet: For a fixed arity, I suppose you can always work around the lack of (`f`) with (\x y -> (x`f`y)). Especially if you choose suitably easily overlookable Unicode characters for x and y. (\ו י -> (ו`f`י)) maybe? 15:54:26 Wow, that renders real bad in XChat. Must be the right-to-leftness of the Hebrew letters. 15:54:46 You can make it \x -> (x`f`) and it'll work for any arity 15:54:58 Oh, good. 15:55:24 (\x y -> (x`f`y) would work for any arity >= 2) 15:55:34 Roight. 15:57:34 And since it no longer needs whitespace to separete x and y, (\י->(י`f`)) then. Which XChat renders so that it looks, approximating the Hebrew "yod" with ', as (\')<-'`f`)) -- it seems to do the text in-between those things as right-to-left. 16:00:16 fizzie: what do you mean work around the lack of (`f`)? 16:00:37 like... I don't see a need really. I just wondered if it was possible. It doesn't need a work around because f is the work around. 16:00:38 Since it's "f", I supposed you must have some reason to complicate it. 16:00:57 yep, I love needless complication. :) 16:01:20 Right. And "f" is not a proper workaround for complicating "f". (Unless you're being very gracious.) 16:01:52 > fix id 16:01:55 mueval-core: Time limit exceeded 16:01:57 :t fix id 16:01:58 forall a. a 16:20:48 haha, in order to put a Palm phone into developer mode, you enter the Konami code 16:26:29 -!- atehwa_ has changed nick to atehwa. 16:30:39 -!- hagb4rd has quit (Ping timeout: 255 seconds). 16:49:52 -!- monqy has joined. 16:53:12 ais523: all of the trendy tech scenesters would be like "everybody trendy already knows about that." 16:53:19 techsters? 16:53:30 perhaps 16:53:35 can you put -ster on the end of anything to make it sound condescending? 16:54:18 I don't know 16:55:44 numberster 16:55:55 graph rewritester 16:56:29 fixed pointster 16:56:55 > map (++ "ster") $ (`replicateM` ['a'..'z']) >>= [1..] 16:56:56 The section ``Control.Monad.replicateM` 16:56:56 ['a' .. 'z']' takes o... 16:57:13 > map (++ "ster") $ (`replicateM` ['a'..'z']) =<< [1..] 16:57:15 ["aster","bster","cster","dster","ester","fster","gster","hster","ister","j... 16:57:23 ...okay so maybe not everything... 16:57:23 tadaa 16:57:47 ester = "lousy e" 16:58:08 a g-ster actually sounds like a somewhat cool person. 16:58:11 "not-to-be-taken-for-serious e" 16:58:58 gster sounds like something people would call a somewhat cool person but is actually in reality ridiculous 17:43:06 -!- derrik has joined. 17:58:02 -!- Nisstyre has quit (Quit: Leaving). 18:06:21 -!- CakeProphet has quit (Ping timeout: 240 seconds). 18:21:48 -!- zzo38 has joined. 18:23:53 IBM PC (Model 5150) Guide to Operations, Part 1 of 2 http://www.retroarchive.org/dos/docs/pc_op_guide1.pdf 18:55:06 -!- cheater_ has quit (Ping timeout: 255 seconds). 18:58:39 -!- zzo38 has quit (Quit: zzo38). 19:04:33 -!- Nisstyre has joined. 19:09:00 -!- cheater_ has joined. 19:23:26 -!- oerjan has joined. 19:31:28 once again, everyone who has said anything interesting in the logs is gone now :( 19:32:32 Fortunately there is lambdabot and messages. 19:36:30 -!- cheater_ has quit (Ping timeout: 255 seconds). 19:40:56 -!- NihilistDandy has joined. 19:43:26 -!- cheater_ has joined. 19:46:56 I was discussing with a coworker about number theory and programming, and the subject of whether loops or number theoretic algorithms are faster, in terms of processor instructions. For a toy example, consider summing the first 1 million digits. 19:47:30 [asterisk]that sentence was horribly structured 19:48:42 I was discussing number theory and programming with a coworker, and the subject of whether loops or number theoretic algorithms were faster (in terms of processor instructions) came up. For a toy example, consider summing the first 1 million digits. 19:48:46 Better 19:51:34 Any thoughts on the matter? 19:55:33 fizzie: but that is not as fun :( 19:57:05 NihilistDandy: well i would be really surprised if a loop for that were faster than calculating 1000000*1000001/2 on any realistic hardware 19:57:41 er wait you said digits not numbers. what do you mean by that... 19:57:54 [asterisk]numbers 19:57:58 ok 19:57:59 My bad 19:58:49 of course there must be less skewed examples... 19:59:30 like how bubble sort is faster than quicksort if the list/array is small enough 20:00:26 hm you were one of those who said something interesting 20:00:27 I meant was the reason for the toroidal TV screen "being stupid"? 20:00:28 I've been trying to find some definitive source on how multiplication is done at the processor level, but no one seems to agree (or everyone who does is several decades out of date) 20:00:46 it's not that unreasonable when you think of how scan lines work 20:01:03 it _is_ very close to a toroidal setup 20:01:11 But it's unreasonable when you consider how watching TV works :D 20:01:42 NihilistDandy: i understand that modern processors use a huge circuit to do multiplication _very_ fast 20:02:15 while e.g. the old 6502/10's had no multiplication instruction and you needed to use shift/addition to write it 20:02:25 That's my understanding, too, but they do it with (essentially) a huge number of partial products and additions 20:02:44 Which still boils down to shift/add 20:03:15 no... it is much faster 20:03:27 because it's parallelized, not a loop 20:04:05 Right, faster in terms of actually getting done 20:04:09 but i think ais523 is the right person to ask about this 20:04:12 I mean in the sense of number of instructions 20:04:17 about what? 20:04:32 about how multiplication is done in modern processors 20:04:48 oerjan: I'm not sure what sort of multiplier they use, there are several plausible sorts 20:05:16 yes but i assume you can explain how it's better than a shift/add loop 20:05:30 actually, sometimes it is a shift-add loop 20:05:35 but implementing it in hardware makes it much faster 20:05:51 heh 20:06:38 anyway even a shift/add loop should be faster than directly adding 1..1000000 in a loop 20:07:52 So, ais523, does an addition loop use more instructions than a multiplication? I suppose that's the basic question 20:08:17 -!- CakeProphet has joined. 20:08:17 -!- CakeProphet has quit (Changing host). 20:08:17 -!- CakeProphet has joined. 20:08:26 NihilistDandy: the number of instructions is pretty much irrelevant when it comes to speed 20:08:29 not all instructions are equal 20:08:32 It's not about speed 20:08:51 if it's about program length, you'd just use the processor's multiply instruction 20:08:58 as it's nice and short compared to a loop 20:09:00 It's not about length 20:09:05 what is it about, then? 20:09:06 It's about what the computer's doing 20:09:16 when you write a*b in a program, or whatever? 20:09:28 it compiles it into the processor's multiply, which puts it into a dedicated multiply circuit 20:09:49 DSPs normally have very fast multiply circuits that take up a lot of silicon space, because doing lots of multiplications quickly is their main purpose for existence 20:09:56 CakeProphet: are you actually present? 20:09:57 So I've read 20:10:02 regular processors, even if it takes 10 times as long as any other instruction, it's still going to be gine 20:10:05 *fine 20:10:06 (i mean hi) 20:10:51 seems not. 20:11:27 ais523: I'm not really concerned about how long it takes. My only real question is "Are there fewer processor instructions in an additive loop or a multiplicative algorithm?" 20:11:46 oh, you're concerned about instruction /count/? 20:11:49 Right 20:11:59 Totally irrelevant to anything meaningful 20:12:03 Just a curiosity 20:12:04 a multiplication and addition are both one instruction (imul and add, respectively) 20:12:10 add takes fewer bytes to represent in x86, at least 20:13:38 Instruction count is a very weird thing to ask about, though. 20:13:42 So, if I'm following you correctly, adding the numbers 1..1000 in an additive loop uses at least 1000 instructions (though likely more), and (1000*1001)/2 uses approximately 3? 20:13:49 yep 20:13:56 pikhq: I know. It's just what the discussion turned to. 20:14:08 Instruction count means absolutely, positively *nothing* on modern CPUs, after all. 20:14:16 oh it's actually performed instructions, not source size... 20:14:32 ais523: Awesome, then number theory and I won that discussion after all :D 20:14:40 I didn't believe the question either, that's why it took so long for me to work out what NihilistDandy meant 20:14:41 NihilistDandy: Still bloody weird. But at least you realise it's pointless. :) 20:14:55 lol 20:14:56 the great thing about the channel, though, is that you get an answer even if people don't understand why the question 20:15:09 I'm too #esoteric for #esoteric :D 20:15:10 whence bathyspheres? 20:15:19 whereas in most channels, you get told off for asking questions like that 20:15:43 oerjan: that way 20:15:50 hmm, does anyone know if Debian keep old versions of things around in repositories? 20:15:56 Yeah, very few channels have the mindset of "Yeah, that person may just like asking stupid questions." 20:15:58 ok, thanks 20:16:04 e.g. if a security bug is fixed, can you grab the version pre-fix from anywhere? 20:16:05 ais523: They don't really do that *much*. 20:16:10 bleh 20:16:16 what about md5/sha1 hashes? 20:16:30 I dunno. 20:16:38 ais523: At least not in the same places, because if you try to install things without updating your copy of the indices, you tend to get 404 errors relatively soon. 20:16:43 so that if someone gives you a library and says "this is version 3.4.foo of bar from Debian", you can verify that they're telling the truth and haven't given you a malicious executable 20:16:46 Oh, snapshot.debian.org 20:17:15 They store all old package versions. 20:17:22 thanks, that's exactly what I wanted 20:17:23 Well, from 2005 to present. 20:18:03 (╯°□°)╯︵ ┻━┻ 20:19:48 ais523: The hashes of binary packages are also mentioned in the "accepted X" emails sent on the foo-changes@ mailing lists, which are archived. Not sure if there's an easy way to navigate those, though, since packages.qa.debian.org just links to the newest twenty or so. 20:20:31 elliott, don't click this until you read new Homestuck update, but I just want to say I'm lolling at http://bit.ly/nJn669 20:20:43 i wonder who actually gets paid for .ly domains now... 20:21:42 Libya Telecom & Technology. 20:21:59 Though they *probably* aren't running too well. 20:22:26 if they even have standing offices anymore 20:22:56 How fucked is Tripoli, anyways? 20:23:30 Like, 15 or 20 on a scale from 1 to 10? 20:23:57 Like B---------------O----------------D this fucked 20:24:08 So, quite 20:24:16 i was going to say 9 as a wild guess. although presumably that mostly applies to government buildings... 20:24:20 But only halfway there 20:26:47 oerjan: LT&T is pretty much a government thing. 20:27:29 at least their website is up 20:27:36 oerjan: It's ran by the son of al-Gaddafi, so... 20:27:59 _the_? he has at least a handful and some are dead. 20:28:11 s/the/a/ 20:28:16 FROM BEYOND THE GRAVE 20:28:49 actually it may be just one dead so far, i haven't paid attention 20:33:02 Google's traffic report seems to suggest there's actually a bit more interweb traffic out of Libya after about mid-July; the curve's been pretty flat since beginning of March: http://www.google.com/transparencyreport/traffic/?r=LY&l=EVERYTHING&csd=1296645717109&ced=1311539850000 20:33:13 @pl \l1 l2 a b -> (l1 a) == (l2 b) 20:33:16 hm... 20:34:05 -!- derrik has quit (Quit: over and out). 20:34:47 :t uncurry (==) . (?l1 *** ?l2) 20:34:48 forall a (a1 :: * -> * -> *) b b'. (Eq a, ?l1::a1 b a, ?l2::a1 b' a, Arrow a1, Functor (a1 (b, b'))) => a1 (b, b') Bool 20:34:58 god have mercy 20:35:17 God is dead 20:36:18 :t uncurry (uncurry (==) . uncurry (***)) 20:36:19 Couldn't match expected type `b -> c' against inferred type `Bool' 20:36:19 In the first argument of `(.)', namely `uncurry (==)' 20:36:19 In the first argument of `uncurry', namely 20:36:21 bah 20:37:05 :t uncurry ((uncurry (==) .) . uncurry (***)) 20:37:06 forall b b' c'. (Eq c') => ((b -> c', b' -> c'), (b, b')) -> Bool 20:37:26 hm right 20:37:31 :t curry ((uncurry (==) .) . uncurry (***)) 20:37:31 forall (a :: * -> * -> *) b b' c'. (Eq c', Functor (a (b, b')), Arrow a) => a b c' -> a b' c' -> a (b, b') Bool 20:37:56 :t curry ((uncurry (==) Prelude..) . uncurry (***)) 20:37:56 forall b b' c'. (Eq c') => (b -> c') -> (b' -> c') -> (b, b') -> Bool 20:38:18 oh hm 20:39:15 :t curry (curry . (uncurry (==) Prelude..) . uncurry (***)) 20:39:15 forall b b' c'. (Eq c') => (b -> c') -> (b' -> c') -> b -> b' -> Bool 20:39:19 yay 20:39:25 twice11: ^ 20:39:49 -!- Phantom_Hoover has joined. 20:39:50 -!- Phantom_Hoover has quit (Changing host). 20:39:50 -!- Phantom_Hoover has joined. 20:39:59 i guess it may not be an improvement over the flips 20:45:24 http://wondermark.com/740/ 20:46:41 @pl liftM 20:46:41 fmap 20:46:46 bleh 20:47:01 :t (return.) . (flip (>>=)) 20:47:02 forall (m :: * -> *) (m1 :: * -> *) a b. (Monad m, Monad m1) => (a -> m1 b) -> m1 a -> m (m1 b) 20:47:06 umm, that's backwards 20:47:08 @t liftM 20:47:08 Maybe you meant: tell thank you thanks thx ticker time todo todo-add todo-delete topic-cons topic-init topic-null topic-snoc topic-tail topic-tell type . ? @ ft v 20:47:11 @type liftM 20:47:12 forall a1 r (m :: * -> *). (Monad m) => (a1 -> r) -> m a1 -> m r 20:47:16 @type fmap 20:47:16 forall a b (f :: * -> *). (Functor f) => (a -> b) -> f a -> f b 20:47:20 :t (flip (>>=)) . (return.) 20:47:20 forall (m :: * -> *) a b. (Monad m) => (a -> b) -> m a -> m b 20:47:23 there we go 20:47:33 @src seq 20:47:37 I worked that out last night, and it increased my understanding of monads somewhat 20:47:43 @src fmap 20:47:43 Source not found. Your mind just hasn't been the same since the electro-shock, has it? 20:47:54 @src liftM 20:47:54 liftM f m1 = do { x1 <- m1; return (f x1) } 20:48:01 I prefer my definition 20:48:11 seq cannot be defined in haskell, except for specific datatypes, and not at all e.g. for functions. 20:48:57 @undo do { x1 <- m1; return (f x1) } 20:48:57 m1 >>= \ x1 -> return (f x1) 20:49:06 @pl m1 >>= \ x1 -> return (f x1) 20:49:06 f `fmap` m1 20:49:12 heh 20:49:19 The power of Caleskell. 20:49:35 i don't think @pl is the same as caleskell 20:50:07 -!- Phantom_Hoover has quit (Ping timeout: 264 seconds). 20:50:08 I thought the `fmap` there was, though. 20:50:18 In normal Haskell, that'd have a different type. 20:50:39 not really, @pl just doesn't distinguish liftM from fmap 20:50:49 any reasonably Monad should have them equal 20:50:55 *le 20:51:01 @pl (\a b c -> a c (b c)) 20:51:01 ap 20:51:28 @src ap 20:51:29 ap = liftM2 id 20:54:11 -!- ais523 has quit (Remote host closed the connection). 20:56:23 CakeProphet: For a fixed arity, I suppose you can always work around the lack of (`f`) with (\x y -> (x`f`y)). Especially if you choose suitably easily overlookable Unicode characters for x and y. (\ו י -> (ו`f`י)) maybe? 20:56:45 um (`f`) _would_ be equivalent to (f) if it worked 20:57:02 Well, yes, but it doesn't. 20:57:18 i mean you can work around it by simply saying (f) :P 20:57:42 The "point" (I use the word very loosely) was to say "f" in a more complicated way. 20:57:47 O KAY 20:58:23 however (\x y -> (x`f`y)) is _not_ quite the same as f, if f is not a two-argument functino 20:58:28 *ion 20:58:40 Right, that's why it's just a workaround. 20:59:05 functinos, the elementary particles of functional programming 20:59:08 An imperfect one, that is. 21:00:00 Deewiant gave a slightly better one a bit later. 21:02:13 oerjan: Quite impressive, but really no improvement over the flips. 21:03:25 sadly so 21:04:08 :t uncurry(***) 21:04:08 forall (a :: * -> * -> *) b c b' c'. (Arrow a) => (a b c, a b' c') -> a (b, b') (c, c') 21:18:56 -!- CakeProphet has quit (Ping timeout: 260 seconds). 21:27:48 -!- zzo38 has joined. 21:47:37 -!- MigoMipo has quit (Read error: Connection reset by peer). 22:04:48 -!- TeruFSX has joined. 22:12:33 -!- TeruFSX has quit (Read error: Connection reset by peer). 22:14:55 -!- TeruFSX has joined. 22:17:04 From Doctor Who WMG: 22:17:05 "One of the Characters is a Time... oh, wait. 22:17:06 " 22:20:12 http://tvtropes.org/pmwiki/pmwiki.php/WMG/DoctorWho I'm loving this 22:20:25 what is WMG? 22:20:34 Wild Mass Guessing 22:20:45 One theme in WMG pages is that one of the characters is a Time Lord 22:20:56 So, in Doctor Who, well... 22:21:07 SGEO IS A TIME LORD 22:21:27 My favorite WMG was "The Doctor is *not* a Time Lord" 22:27:40 "The Doctor is a fruit fly" this one rings true to me 22:29:17 I looked at ZPAQ and it seems to contain many redundant opcodes. 22:30:36 -!- TeruFSX has quit (Ping timeout: 276 seconds). 22:30:56 Opcodes 4, 136, and 196 are all equivalent. 22:31:04 Opcode 64 is useless. 22:31:30 Opcodes 224 and 232 are equivalent. 22:43:34 -!- NihilistDandy has quit (Quit: cookin'). 22:45:16 -!- MDude has quit (Ping timeout: 240 seconds). 22:52:56 -!- elliott_ has joined. 22:56:34 01:41:41: I'm doing the Mandelbrot set with this: length $ takeWhile ((<2) . magnitude) $ take maxIters $ iterate step $ 0.0 :+ 0.0 22:56:38 use . instead of chained dollars 22:56:39 hth 22:56:46 hi oerjan :P 22:56:50 i ate some mandelbrot today 22:57:04 g'day 23:07:55 Actually I think opcode 208 seems also equivalent to opcode 4 23:08:25 As well as opcode 160 23:09:11 No, wait... opcode 208 isn't. 23:10:46 But opcode 168 is the same as opcode 64, and opcode 176 is the same as opcode 4. 23:14:17 Actually I think opcode 160 might result in undefined behavior in some implementations if A is zero 23:19:33 02:50:37: http://pastebin.com/PXcS0k5G < is my code horrible? 23:19:41 Lymee: don't use exception handling to handle your failed pattern match. 23:19:44 that's super gross 23:20:14 Lymee: also, add top-level type signatures, and ditch parseInt/parseDouble, they're just kludges for not declaring your types. 23:21:05 03:09:45: well -O2 is effective, iirc -O3 sometimes gets worse, and i don't think there's a difference beyond that 23:21:14 oerjan: cabal does -O by default because -O[two] is usually wasteful 23:21:17 (nowadays) 23:22:40 well i corrected myself after actually looking at the manual 23:22:50 03:24:57: http://www.malevole.com/mv/misc/killerquiz/ 23:22:50 03:25:52: Not funny. 23:22:50 03:25:52: =p 23:22:50 it's ancient but mostly way too easy 23:23:14 04:34:56: honestly are there programmers out there who think abstraction is in general bad? 23:23:14 yes, or more generally manual abstraction 23:23:34 there's some work on basically making copy-and-paste "safe", by the logic that we all do it anyway 23:23:39 and abstract automatically like that 23:23:45 subtext is IIRC based around that in part 23:24:16 how does that work 23:25:11 monqy: by making changes of copied stuff turn into parameters, presumably 23:25:14 i mean, essentially 23:26:28 -!- azaq23 has joined. 23:26:59 elliott_: if he's not to use exception handling he'd have to use reads, which is rather more awkward there. 23:27:20 oerjan: so define a helper 23:27:26 ?hoogle (Read a) => String -> Maybe a 23:27:26 Network.CGI.Protocol maybeRead :: Read a => String -> Maybe a 23:27:26 Network.CGI readCookie :: (Read a, MonadCGI m) => String -> m (Maybe a) 23:27:26 Network.CGI readInput :: (Read a, MonadCGI m) => String -> m (Maybe a) 23:27:31 Network.CGI.Protocol maybeRead :: Read a => String -> Maybe a 23:27:32 oh come on 23:27:54 i suspect maybeRead is what you mean 23:27:55 12:50:56: http://www.reddit.com/r/programming/comments/ixkql/how_to_make_a_compiler_1000_times_faster/c27guh6 I... uh... 23:27:55 see response 23:28:04 oerjan: yeah but the module :P 23:28:45 13:05:56: http://sds.podval.org/ocaml-sucks.html is it just me or does this article have a mix of stupidity and insight? 23:28:46 i looked at this guy's homepage when i saw this and started ignoring him after seeing "support Israel's right to self-defense!" and a link to esr's Anti-Idiotarian Manifesto 23:29:00 but... that article on ocaml is pretty reasonable. 23:29:04 elliott_, did you see my earlier log ping of you? 23:29:10 no 23:29:24 08:59:54: elliott, don't click this until you read new Homestuck update, but I just want to say I'm lolling at http://bit.ly/nJn669 23:29:35 i raged when i saw the first line with multiple commas about half-way through 23:29:39 but then i was laughing too hard to rage 23:31:00 Sgeo: it wasn't earlier. 23:31:19 13:23:53: and they have the audacity to make claims on the computational power of the known universe 23:31:28 itidus20: it is not audacity to make predictions based on available evidence. 23:31:55 as long as they realize their own axioms are all fragile 23:32:12 What does "fragile axiom" even mean? 23:32:23 it means that it will eventually break 23:32:37 ok, you've stopped making sense so i can't respond to that. 23:32:40 I mean, sure, you could question whether some math equations actually do apply to the real world, but axioms are just... 23:33:04 well they _do_ know that, with the whole quantum mechanics vs. general relativity inconsistency 23:33:22 Although I guess it is possible to eventually discover that commonly used axioms lead to a contradiction 23:33:50 there is no end to it.. every last axiom will probably get contradicted given sufficient "time" 23:34:04 @hoogle Read a => String -> a 23:34:04 Prelude read :: Read a => String -> a 23:34:04 Text.Read read :: Read a => String -> a 23:34:04 Prelude readIO :: Read a => String -> IO a 23:34:14 er wait 23:34:21 @hoogle Read a => String -> m a 23:34:21 Prelude readIO :: Read a => String -> IO a 23:34:21 System.IO readIO :: Read a => String -> IO a 23:34:21 Network.CGI.Protocol maybeRead :: Read a => String -> Maybe a 23:34:33 itidus20: And you have the audacity to make claims about the strength of every axiom? 23:34:48 "as long as they realize their hypocrisy is fragile" 23:34:53 oh hm readIO could actually be used but it would be almost using exception handling :P 23:35:05 At least _they_ are experts in their field... 23:35:18 oerjan: it would involve using exception handling 23:35:26 ?hoogle IO a -> IO (Maybe a) 23:35:26 System.Timeout timeout :: Int -> IO a -> IO (Maybe a) 23:35:26 Control.Applicative optional :: Alternative f => f a -> f (Maybe a) 23:35:26 Prelude Just :: a -> Maybe a 23:35:32 i guess i'm not actually helping anyone with my comments 23:35:44 more like a heckler 23:36:16 my point was not a personal one 23:37:24 Every atheist would pretty much say that theologians are .. incorrect (well, every atheist who thinks about it. 23:37:26 we tend to claim that the one sure thing is death.. but we don't even know what that consists in.. death remains undefined 23:37:38 And I still have reservations about saying "every atheist", but I think it makes sense here 23:37:50 Sgeo: for some specific definition of theology. 23:37:59 it is not impossible to make valid claims about beliefs and belief systems 23:38:19 if you think theology is just people saying "christianity is true" all day... well, lol @ you? 23:38:39 itidus20: "we" 23:38:45 The only time I ever hear that is coupled jokingly with "taxes" 23:39:00 ok i think whats happening is that i have left a chatroom full of people always trying to ram a belief down my throat of a spiritual nature, to a room full of computer scientists who can actually relax 23:39:08 And we know what death consists of, i.e. we know generally what the process of death involves 23:39:19 elliott_, oh, I was considering theology to be more of an assumption that the underlying belief is true. Or at least contain such an assumption. Rather than things of the form "Christianity says this, Judaism says this" etc 23:39:25 Some people attach additional spiritual elements to that moment, but that's separate from what "death" actually involves as far as our universe is concerned 23:39:27 i'm still defensive. 23:39:46 Sgeo: Well, sure, it could take that form? But then it just has an implicit "If [belief] is true, then...". 23:40:06 Hmm, ok 23:40:37 I don't know much about theology, but it seems that the only way it could consist entirely of false statements was if it was literally a party game involving saying that your religion is true 23:40:45 oblig.: And that's called church 23:41:15 elliott_: i suspect optional may actual do the right thing, assuming IO has the Alternative instance i expect 23:41:23 i was in a chatroom with a bunch of people who hated everyone 23:41:40 > optional (read ")" :: Int) 23:41:41 Couldn't match expected type `f a' 23:41:41 against inferred type `GHC.Types... 23:41:49 > optional (read ")" :: Int) :: IO (Maybe Int) 23:41:49 Couldn't match expected type `GHC.Types.IO GHC.Types.Int' 23:41:49 against i... 23:41:51 * elliott_ grumble 23:42:03 itidus20: no, we just hate Vorpal and cheater_ here ;-) 23:42:06 ?ty optional (read ")" :: Int) :: IO (Maybe Int) 23:42:07 Couldn't match expected type `IO Int' against inferred type `Int' 23:42:07 In the first argument of `optional', namely `(read ")" :: Int)' 23:42:07 In the expression: optional (read ")" :: Int) :: IO (Maybe Int) 23:42:13 hehe 23:42:23 ?hoogle optional 23:42:23 Control.Applicative optional :: Alternative f => f a -> f (Maybe a) 23:42:23 Text.Parsec.Combinator optional :: Stream s m t => ParsecT s u m a -> ParsecT s u m () 23:42:23 Text.ParserCombinators.ReadP optional :: ReadP a -> ReadP () 23:42:32 oerjan: I don't know if it has one 23:42:55 oh wait 23:42:57 I need a return 23:43:03 oerjan: IIRC that catching errors in IO doesn't catch pure errors 23:43:15 Prelude Control.Applicative Control.Exception> optional (evaluate (read ")") :: IO Int) 23:43:15 :1:1: 23:43:15 No instance for (Alternative IO) 23:44:05 http://esolangs.org/w/index.php?title=User:Alexanderdna&curid=4076&diff=24010&oldid=24004 23:44:09 grmbl 23:44:17 oerjan: can i say grml is that o.k. 23:44:31 but among those hateful people i did find one guy who started to teach me actual things 23:46:13 I am confused about the truth of axioms. 23:46:34 Clearly they work. 23:47:04 The numbers 0,1,2,3,4,5 can be expected to hold firm for millions of years 23:47:12 > mzero :: IO () 23:47:13 Overlapping instances for Control.Monad.MonadPlus GHC.Types.IO 23:47:13 arising f... 23:47:14 billions etc 23:47:17 oerjan: argh 23:47:23 oerjan: (there is: 23:47:26 MonadPlus m => Alternative (WrappedMonad m) 23:47:26 (ArrowZero a, ArrowPlus a) => Alternative (WrappedArrow a b)) 23:48:16 but the question then is can the countability of things dissapear ever? or rather... can the potential of someone to exist who can count ever dissapear? 23:48:30 can any potential ever dissapear? 23:49:01 and what is the substance of which potentials are made :-? 23:49:30 does there have to be a substance 23:49:36 nope 23:50:50 so, then the question probably becomes, what are the dependant factors of potential 23:51:22 i mean, what is potential dependant upon 23:51:38 and i'd rather make a coffee than worry about that right now 23:53:03 oerjan: hm try :: Exception e => IO a -> IO (Either e a) 23:53:23 ?hoogle \a b -> catch a (const b) 23:53:23 Parse error: 23:53:23 --count=20 "\a b -> catch a (const b)" 23:53:23 ^ 23:53:27 ?pl \a b -> catch a (const b) 23:53:27 (. const) . catch 23:53:29 oh duh 23:53:32 ?pl \b -> catch a (const b) 23:53:32 catch a . const 23:53:42 instance Alternative IO where 23:53:42 empty = ioError (userError "empty") 23:53:42 (a <|> b = try a (const b) 23:53:43 anyway 23:53:46 erm without paren 23:54:15 [...] to a room full of computer scientists who can actually relax <-- you _do_ realize there are a considerable number of sometimes a bit insistent atheists in here, right? 23:56:17 atheism means an army without a leader :D 23:56:26 means peace? maybe :P 23:56:47 Richard Dawkins perhaps. 23:56:55 richard dawkins is an asshole 23:57:10 Someone noticed he looks like Emma Watson 23:57:14 does christianity have a leader? buddhism? 23:57:15 what 23:57:39 http://images.icanhascheezburger.com/completestore/2008/10/6/128677918460759115.jpg 23:57:49 a percieved god is a leader 23:57:50 oh right that 23:58:07 itidus20: plenty of buddhist sects are atheistic (in the technical sense) 23:58:27 ya.. the room i was in was full of buddhists.. but that doesn't make me a buddhist. i was more a spectator 23:58:38 sgeo goes to #jesus 23:58:41 or at least he used to 23:58:46 > optional (read ")" :: Int) <-- sheesh i meant with readIO duh 23:58:52 hes totaly a christan 23:58:57 i'm more level headed than most of them 23:59:00 oerjan: o irte 23:59:13 ok not most of them 23:59:22 but teres a few ya see who are just completely nuts