00:00:21 oh wait it's show? 00:00:37 well I installed both show and simple-reflect but it seems to be using show. 00:00:49 I'm not sure that it matters 00:00:58 but even after installing show it installed simple-reflect when I told it to 00:01:25 Configuring show-0.4.1.2... 00:03:33 I have a feeling it has something to do with a misconfigured system. 00:03:40 I have both GHC 6 and 7 on this computer. 00:03:48 kallisti: what does Prelude.negate x give? 00:04:08 same thing. 00:04:24 elliott: what are some things I should have done before compiling and installing GHC? 00:04:27 removing everything 00:04:28 kallisti: iirc they are not supposed to mix packages for different ghc versions 00:04:36 elliott: define "everything" 00:04:36 anyway 00:04:37 no 00:04:39 it's not a misconfiguration 00:04:43 the library is just fucked up 00:04:51 come on, ghc bugs don't manifest as subtle wrongness where "a" is used for no reason 00:05:04 elliott: -shrug- 00:05:10 so does it work on your system. 00:05:17 with your snazzy GHC 7 00:05:31 and perfectly configuredness etc 00:05:45 negate = withReduce $ fun "negate" `iOp` negate `dOp` negate 00:05:46 iOp :: (Expr -> Expr) -> (Integer -> Integer) -> Expr -> Expr 00:05:46 iOp rr ff aa = (rr a ) { intExpr = ff <$> intExpr aa } 00:05:46 dOp :: (Expr -> Expr) -> (Double -> Double) -> Expr -> Expr 00:05:46 dOp rr ff aa = (rr aa ) { doubleExpr = ff <$> doubleExpr aa } 00:06:04 O_o 00:06:04 instance (Show a, FromExpr b) => FromExpr (a -> b) where 00:06:05 fromExpr ff aa = fromExpr $ op L 10 " " ff (lift aa) 00:06:17 cba to figure out the bug 00:06:30 elliott: that rr a should have been rr aa, no? :D 00:06:48 hm on the source I looked at it was a not aa 00:07:07 oerjan: aha 00:07:07 yep 00:07:08 kallisti: see the second iOp line 00:07:09 iOp r f a = (r a ) { intExpr = f <$> intExpr a } 00:07:10 a is the variable "a" 00:07:12 on hackage 00:07:18 kallisti: http://hackage.haskell.org/packages/archive/show/0.4.1.2/doc/html/src/SimpleReflect.html 00:07:23 I don't care what source you're looking at, it's the wrong one 00:07:29 oh hm 00:07:34 Debug.SimpleReflect.Expr 00:07:46 that's not the show package 00:07:50 I would have spotted it much earlier if I were looking at the right source. :P 00:07:51 which is what lambdabot uses 00:07:56 otoh it might be newer/less buggy 00:08:04 http://hackage.haskell.org/packages/archive/simple-reflect/0.2/doc/html/src/Debug-SimpleReflect-Expr.html#Expr 00:08:14 anyway 00:08:15 http://hackage.haskell.org/packages/archive/numbers/2009.8.9/doc/html/Data-Number-Symbolic.html 00:08:16 same package as Dif 00:08:18 probably works better :P 00:08:22 :t Data.Number.Symbolic.var 00:08:23 forall a. String -> Sym a 00:08:25 yay 00:08:46 kallisti: um you were clearly using show-0.4.1.2 in what you pasted 00:08:53 not simple-reflect 00:09:28 * kallisti is well-known for his attention to detail. 00:09:46 you don't say 00:10:03 well, technically, yes. I ACTION'd it 00:10:13 :> 00:10:42 * kallisti compiles mueval yet again. 00:11:20 -!- Jafet has quit (Quit: Leaving.). 00:12:01 -!- Jafet has joined. 00:12:14 -!- NihilistDandy has joined. 00:12:17 elliott: you never explained why I shouldn't move mueval into /usr/bin 00:12:27 or maybe you did and I forgot 00:12:47 To make include file by search path, I have made the <|> for IO and the choice for any Alternative and then make as follows: 00:12:56 loadInputFile = parseInputFile >=> either ((>> exitFailure) . hPutStrLn stderr . show ) (fmap join . sequence . fmap loadIncludeFiles); 00:13:06 parseInputFile n = theSearchPath >>= (<|> fileErr n) . choice . fmap (parseFromFile (mmlParser <* eof) . ( n)); 00:13:15 loadIncludeFiles (Include x) = loadInputFile x; loadIncludeFiles x = return [x]; 00:14:15 Is this the proper way or is there better ways? 00:14:50 elliott: also what's the difference between mueval and mueval-core? 00:15:21 oerjan: hm in (f x), what precedence is f at 00:15:31 kallisti: i don't know 00:15:53 elliott: 11 or so... 00:16:17 I don't recall seeing the Report mention a precedence for function application. 00:16:27 iirc showsPrec uses 11 for the level above operators? 00:16:53 the haskell report doesn't assign any numbers to non-operator syntax afair 00:18:00 oh nice Symbolic does reductions 00:18:07 like actual reductions 00:18:18 deriving cos yields -sin x 00:18:33 also, the let, case and \ expressions don't fit into simple precedence 00:19:35 they are high from the left, but cannot be put right after application, and are greedy/low to the right 00:22:59 kallisti: simplereflect does too, they're just manual 00:23:02 you have to ask for them 00:23:28 -!- Phantom_Hoover has joined. 00:23:41 Oh, Jesus, Vi Hart is now affiliated with Khan Academy. 00:24:13 @tell Sgeo You are no longer allowed to use any Khan Academy resources. Thank you for your coöperation. 00:24:14 Consider it noted. 00:24:27 What's wrong with Vi Hart? 00:24:28 Sgeo: You have 2 new messages. '/msg lambdabot @messages' to read them. 00:24:39 @messages 00:24:39 oerjan said 8d 11h 14m 17s ago: well i have a hunch that you need a bit of self-esteem more than you need intelligence. 00:24:39 Phantom_Hoover said 26s ago: You are no longer allowed to use any Khan Academy resources. Thank you for your coöperation. 00:25:22 Sgeo, tau advocate, not to mention that I strongly suspect that she's what SMBC terms a math enthusiast, i.e. someone more concerned with the trappings of maths than the actual substance. 00:25:45 lambdabot: i don't like your reverse amnesia 00:26:17 I haven't watched her videos in a while, but ISTR them having a large element of "look at this cool thing maths is so beautiful!" without actually explaining the underlying maths. 00:26:57 > let derivs f x = takeWhile (/=0) . map val . iterate df . f $ dVar x in derivs (^3) (Data.Number.Symbolic.var "x") 00:26:59 [x*x*x,(x+x)*x+x*x,2*x+x+x+x+x,6] 00:27:05 .....6? 00:27:42 yes, 6 00:27:44 > let derivs f x = takeWhile (/=0) . map val . iterate df . f $ dVar x in derivs (^3) (Data.Number.Symbolic.con "x") 00:27:45 No instance for (GHC.Num.Num [GHC.Types.Char]) 00:27:45 arising from a use of `de... 00:27:56 > let derivs f x = takeWhile (/=0) . map val . iterate df . f $ dVar x in derivs (^3) (Data.Number.Symbolic.con 5) 00:27:57 [125,75,30,6] 00:28:04 hm, okay. 00:28:09 oh right 00:28:15 6 is certainly the correct answer in [x*x*x,(x+x)*x+x*x,2*x+x+x+x+x,6] 00:28:25 But I don't know why they didn't simplify the other results more 00:29:12 oerjan: hm what precedence is \ at 00:29:16 > 2 + \e -> e 00:29:17 *Exception: show: No overloading for function 00:29:29 elliott: i just told you above 00:29:37 oerjan: ah 00:29:44 oerjan: ok what's a _conservative_ precedence to assign \ :P 00:30:00 11 from the left, -1 from the right? 00:30:33 oerjan: *single precedence 00:30:41 conservative as in, always valid but sometimes produces needless parens 00:30:50 (yes -inf would count :P) 00:31:06 oh. -inf then 00:31:07 @src shows 00:31:07 Source not found. You untyped fool! 00:31:09 @src show 00:31:10 show x = shows x "" 00:31:17 oerjan: bah fine 00:32:13 oerjan: hm what precedence is e at in (\_ -> e) 00:32:36 ...it's an arbitrary expression 00:32:53 so also -inf, i guess 00:33:08 or hm 00:33:16 oerjan: ok what precedence would you showsPrec it at if you had to showsPrec an e in that position :P 00:33:23 I guess (-1) would work 00:33:27 except, no 00:33:30 you want /no/ parens 00:33:33 not /always/ parens 00:33:35 so it's actually +inf 00:33:43 so... 11 00:33:52 elliott: erm not really 00:34:05 er wait no 00:34:07 oerjan: ok it's +inf 00:34:35 http://www.reddit.com/r/math/comments/o13r9/profile_of_eric_lander_mathematician_turned/ 00:34:48 Profile of a mathematician turned biologist.... turned killer 00:34:53 elliott: no, that way if e contains any operators it will be parenthesized 00:35:07 oerjan: oh right it's > not < 00:35:11 oerjan: ok so -1 then 00:35:53 -!- oerjan has quit (Quit: Good night). 00:36:37 Phantom_Hoover: I was hoping it'd be actually that. 00:37:02 Does the prospect of biomathematical murder entice you? 00:37:08 Yes. 00:37:11 Phantom_Hoover: What's a synonym of inspectable. 00:37:29 Lookable. 00:37:41 Phantom_Hoover: I hate you. 00:38:26 (You cannot be a biomathematical murderer because you are a) a programmer and hence incapable of science and maths and b) an English pansy and hence incapable of killing anything.) 00:40:19 elliott: scrutinable 00:40:23 * Phantom_Hoover → sleep 00:40:27 -!- Phantom_Hoover has quit (Quit: Leaving). 00:41:32 elliott: auditable 00:41:35 examinable 00:41:57 investigable 00:43:49 * kallisti enjoys how particularly easy it is to define a recursive dual number for automatic differentiation. 00:44:01 so that you can continue taking derivatives of derivatives. 00:44:20 or compute values from differentiated numbers and differentiate that. 00:47:12 http://hackage.haskell.org/package/ad does all that 00:49:30 * kallisti thinks it would be swell if Symbolic transformed x*x into x^2 and x*x^e to x^(e+1) 00:49:52 also x+x to 2*x, and x + C*x to (C+1)*x 00:50:20 perhaps I could convince them to let me patch it or something? 00:51:46 though I'd be more interested in a more generalized way to redefine display/reduction behavior. 00:54:14 itt: cas 00:55:52 not quite, no. 00:56:12 unless a CAS can be embedded in Haskell's numeric typeclasses. 00:56:16 then yes, sure. 00:57:18 but I'm mostly interested in a few simple reductions. 00:57:59 not, say, sovling equations and performing complex algebra. 00:59:29 -!- Jafet has quit (Quit: Leaving.). 00:59:35 there's something called DoCon but it... apparently has no documentation 01:02:18 -!- iconmaster has joined. 01:02:30 -!- iconmaster has quit (Client Quit). 01:04:09 @tell iconmaster hi, your nick makes me think of ReBoot. 01:04:10 Consider it noted. 01:05:36 it would be interesting to analyze the complexity of language implementations. 01:06:27 for example, why is Perl so slow? is it all constant factors is it non-constant stuff going on under the hood? 01:06:40 s/factors/factors or is it/ 01:08:06 I would think it's mostly constant factors or linear factors. 01:08:52 variable interpolation would be linear (not counting stuff like @{[...]} which is basically an eval) 01:13:07 kallisti: did you know: the asker of the highest-voted question of all time on SO only has 263 rep 01:13:52 this is hilarious to me 01:13:54 probably because 01:13:57 i have gone completely off the deep end 01:14:08 yes 01:14:26 you're like me when I was playing WoW. 01:15:32 elliott: which question? 01:16:08 "how do I shot web?" 01:16:28 not "how is babby formed?" then? 01:18:34 olsner: http://stackoverflow.com/questions/194812/list-of-freely-available-programming-books 01:18:46 it got converted to community wiki before they could reap the massive rep spoils :P 01:19:18 slightly above an hour after being posted, even 01:36:54 -!- derdon has quit (Remote host closed the connection). 01:37:42 "I am a bug" is the worst thing I've ever read. 01:44:03 wat 01:45:43 -!- lambdabot has quit (Ping timeout: 244 seconds). 02:02:44 Worse than "I am Error"? 02:31:30 -!- MDude has changed nick to MSleep. 02:41:05 -!- pikhq has quit (Ping timeout: 248 seconds). 02:41:07 -!- pikhq_ has joined. 02:55:55 hi 03:09:01 -!- augur has joined. 03:18:29 -!- pikhq has joined. 03:21:18 -!- pikhq_ has quit (Ping timeout: 244 seconds). 03:29:38 -!- cheater has quit (Ping timeout: 268 seconds). 03:45:15 that list is pretty cool 03:47:46 I found some pinball game for Texas Instruments calculator, but you cannot choose which direction to nudge the table (it always does in a random direction when you push that button), and you have to wait ten seconds before nudging again otherwise you are accused of cheating. 03:49:27 Due to these rules, it isn't a very good game. 03:50:24 and on the strength of this accusation you are escorted from the premises bringing an early end to the game of pinball 03:52:30 Most computer pinball game you can at least select which direction to nudge the table! And does not have such a severe penalty (it isn't cheating to nudge the table, anyways). (Flipperless computer pinball games usually have no penalty for nudging the table, however.) 03:58:14 zzo38: real pinball tables penalise you for nudging the table 03:58:26 sometimes with a warning, but if you do it repeatedly, or hard enough, they lock both flippers and you automatically lose the ball 03:58:29 ais523: Yes they do; but only if you do it too hard or too much. 04:14:17 i have the best pinball game 04:14:26 it is a dos game 04:14:42 i can't remember what it's called but it is best 04:16:09 I have Visual Pinball, it has some flipperless games JiggleBox is best one. 04:17:23 i cant play it anymore 04:17:31 because i dont have a windows box 04:17:45 if i find it, i'll give it to you 04:18:14 Visual Pinball doesn't work on Wine either. It is only for Windows. But there can be make better one for many operating system and with open source, possibly. 04:18:58 i vote yes 04:19:10 but you have all these ideas and you never make them :/ 04:19:14 I don't think this is a yes and no question 04:24:31 this pinball project which is under strict deadlines will require a new programming language like C and Haskell, but markedly superior 04:26:11 like C and Haskell? 04:26:12 simultaneously? 04:26:45 hmm.. it just has to be better than them 04:28:15 it's hard to envisage a language that's better than C at everything and also better than Haskell at everything 04:28:22 although if it existed, I'd probably use it 04:30:13 It's hard to envisage a language that's better than C at *everything* that's not a C-family language with stupid decisions omitted. 04:36:28 its necessary to make the pinball game 04:38:25 make it 04:39:18 give me a lang that's better than C, Haskell, and Perl in every respect, and I'll write scapegoat in it 04:39:42 I am not saying it has to be done either 04:40:05 ais523: Wouldn't it be enough to be better than C and Haskell in every respect? *zing* 04:40:20 neither's really good for one-off text processing 04:40:29 ais523: @ 04:40:36 What, and Perl is? 04:40:39 doesn't yet exist 04:40:41 :P 04:40:44 pikhq: surprisingly, yes 04:40:45 ais523: neither does scapegoat 04:40:55 (yes, yes, I know, that's the *one* thing Perl actually does well.) 04:41:00 But my general idea, is that it has some kind of Forth-like virtual machine, which can be programmed in Forth but also in C or Haskell or other programming languages, but there are two separate programs: the one that sets the physical table parameters, and one which emulates the CPU of the pinball. 04:41:03 elliott: give him @ and he'll give you scapegoat 04:41:08 like he said 04:41:12 It *is* awk on steroids, after all. 04:41:17 but what vcs will i develop @ with? 04:41:31 And unlike Visual Pinball and whatever, you must use physical parameters so the CPU emulation program cannot do anything that it cannot do physically, even if done by computer physics. 04:41:34 I see we have a cyclic dependency here. 04:41:36 ais523: we need some mutual productive recursion so we can have @ and scapegoat be created codependently so they can be developed with each other 04:41:38 elliott: something that sg imports well 04:41:46 I'm going to solve this in the standard elliott way. 04:41:48 ais523: give me a bit of scapegoat and i'll give you a bit of @ 04:41:56 elliott: You will develop @ with @ as the VCS. 04:42:15 elliott: hmm… I'm guessing sg will at least mostly be written in ASCII, so the first bit is probably going to be 0 04:42:19 pikhq: @ as the solution to every problem, offloading work to others... yep, checks out 04:42:21 the second, harder to say 04:42:37 ais523: I need 32 bits to get started 04:42:45 in return i'll produce 64 bits of @ 04:42:53 Text processing can be one thing Perl does well; but AWK can also do text processing it is designed for that purpose. 04:42:56 elliott: "Scap" 04:43:19 elliott: are we just both going to come up with increasingly long header comments? :P 04:43:24 zzo38: Yup. And Perl is AWK with more stuff. 04:43:31 but I can't even do that without knowing what language to write sg in 04:43:34 ais523: no way, @ isn't textual 04:43:38 ais523: just gimme the start of the README or something 04:43:40 or LICENSE 04:43:40 seriously, I probably would write it if I could think of an appropriate language 04:43:46 (in spirit, if not in a more strict sense) 04:43:53 elliott: surely, @'s /comments/ can contain textual data, though? 04:43:56 it doesnt have to be the first 32 bits does it? 04:44:07 do the bits have to be consecutive? 04:44:08 so you just need to start with the bits that mean "comment", then the content of the comment 04:44:14 ais523: I'm giving you the bit format of it, certainly it's not going to start with a packed UTF-8 string 04:44:36 ais523: anyway, I'd be trying to implement sg more actively if I remembered what the most recent model was 04:44:52 pikhq: Yes, Perl does have things like AWK 04:44:58 as I said, I'd draw a picture of it if I were any good at drawing 04:45:00 So Perl can be used for text processing too 04:45:21 ais523: just use LaTeX or something, there's diagram packages 04:45:30 Which, if it's designed for anything, that's what it's designed for. 04:45:31 but I'd have to learn them 04:46:23 ais523: ah, you're trying to do something successfully without learning! 04:46:27 To draw pictures, you can also use ImageMagick, GIMP, Microsoft Paint, METAFONT, SVG, ... depend what you make. I think there is some GNU diagram program to make diagrams, or something like that 04:46:28 good luck, nobody has ever managed that. 04:46:38 elliott: no 04:46:46 I'm trying /not/ to do something, to avoid having to learn how 04:47:37 that's reasonable, right? 04:47:46 I happen to think METAFONT and ImageMagick combined can make draw picture good for many uses. 04:48:21 * quintopia does all his drawing in php 04:49:02 Yes, PHP does have drawing function too. 04:50:08 I have done job asked by some other people, making program in PHP to draw pie charts. 05:05:40 Wow, I've been programming for ~8 years. 05:09:06 wow, only 8.. 05:09:19 apparently programming is about quality not quantity 05:11:02 -!- MDuck has joined. 05:11:12 itidus21: 8 years is a pretty long time to do one thing. 05:11:31 Anything over 8 would be stretching it a bit, anyway; I doubt I would have been very good at programming at 7. 05:11:35 (Not to say I was any good at it at 8.) 05:11:35 it is if you actually do that thing instead of pretending to do it 05:12:50 itidus21: Please, like you wrote large, significant things when you were 15. :P 05:13:05 i never created anything signifigant ever :D 05:13:16 its the art of super procrastination 05:14:27 -!- MSleep has quit (Ping timeout: 244 seconds). 05:17:29 ok i get it anyway 05:17:45 so elliott is referring to programming when he knew how to program 05:17:55 not the screwing around training years 05:23:58 But you learn all the time. When is the point where you "know how to program" and where you don't? I mean, I think it's somewhat gradual transition. Plus, you always learn new things, so you might think in the future that you didn't know how to program now x3 05:24:25 -!- lambdabot has joined. 05:25:08 the point is ~8 years ago 05:25:51 Frooxius: i think the concept of when does a child become an adult is related 05:27:42 Yeah that's not sudden transition either. Though... some remain children in some ways for a long time :D 05:28:00 Frooxius: for someone like me, the process is about realizing i am not yet a programmer 05:28:07 having my ego smacked down 05:28:23 by that bastard cryst_eheh_heh 05:28:34 in a chatroom in a distant land 05:28:52 umm nevermind :D 05:28:58 I never really consider myself anything that much, I just keep making stuff as best as I can and that's it. I don't need any label to do what I do. 05:29:46 Plus I constantly think things I do are horrible anyway so... x3 It helps to improve them though 05:30:06 Or throw into garbage and redo from scratch 05:32:33 i see myself as more of the john romero type.. except not as cool as him 05:32:52 so elliott is referring to programming when he knew how to program 05:32:52 not the screwing around training years 05:32:52 no 05:33:10 I programmed when I was 8 but I didn't know how to program when I was 8 :p 05:33:20 ah 05:33:28 so is it like learning to speak? 05:33:53 -!- Frooxius_ has joined. 05:34:43 I doubt it. Maybe a foreign language, but I've never learned one. 05:34:50 The easiest way to find out what it's like would be to do it. 05:35:08 oops.. ^s/speak/read 05:35:44 * kallisti didn't know how to program for maybe like a year? if he understands elliott correctly. 05:35:57 or, hmmm, a few months. 05:36:08 i screwed around in qbasic 1.0 with the help files at first 05:36:24 kallisti: oh, you think you know how to program! how long ago did you start programming? 05:36:33 -!- Frooxius has quit (Ping timeout: 248 seconds). 05:36:36 I was 15. so, 5 years ago. 05:36:46 -!- Frooxius_ has changed nick to Frooxius. 05:36:49 kallisti: congratulations, you're in your 5th year of not knowing how to program :) 05:36:57 * elliott doesn't know how to program either. 05:37:07 elliott: when does one learn to program, great sensei. :P 05:37:25 you don't. 05:37:31 no one is programmers? 05:37:41 what we do? 05:37:48 no, we're programmer 05:37:49 s 05:37:49 how is shot web? 05:37:59 this guy i knew, he wanted to teach me stuff... he basically knocked me out of the ring when teaching me to try to actually make 2d games in c for windows 05:38:25 it was like *pow* *pow pow pow* 05:38:30 lol 05:38:33 why did you think of it as a competition? 05:38:44 kallisti: because that's the only way he can frame it as losing 05:38:46 because im an asshole 05:39:02 kallisti: observe him attempting to lose your question ^ 05:39:11 lol elliott 05:39:41 yes, i'm making a funny joke 05:39:42 I certainly don't think I've mastered programming by any means, nor do I have very much experience with good program design. But I feel that the past 5 years count for something. 05:40:47 a few weeks in, I remember asking #python what a delimiter was. :P 05:40:59 it used this word "delimiter" in the split method thing and I didn't know what that meant. 05:42:52 I have written part of a D&D prestige class called "Aberration Saver" that corresponds to the organization called "Aberration Saver"; I also wrote the title of a prestige class "Celestial Saver" and of spells "Circling the Square" and "Confuse Time" and "Confuse Objects" and of feats "Minimize Spell". 05:43:22 Maybe I should add one class for calculus or category theory or something like that, too. 05:45:06 lol. 05:45:25 motivic cohomology 05:48:44 i should clean my room some day 05:49:02 itidus21: what do you have to do right now? 05:49:04 why not clean it now? 05:49:49 it can wait a little longer.. 05:49:49 !perl print int(rand(2)?'clean room":"definitely clean room" 05:49:52 Can't find string terminator "'" anywhere before EOF at /tmp/input.2326 line 1. 05:49:58 !perl print int(rand(2)?'clean room':"definitely clean room" 05:49:59 syntax error at /tmp/input.2368 line 1, at EOF \ Execution of /tmp/input.2368 aborted due to compilation errors. 05:50:15 !perl print (int(rand(2)?'clean room':"definitely clean room") 05:50:16 syntax error at /tmp/input.2431 line 1, at EOF \ Execution of /tmp/input.2431 aborted due to compilation errors. 05:50:18 ? 05:50:45 !perl print int(rand(2)?'clean room':"definitely clean room" 05:50:46 syntax error at /tmp/input.2508 line 1, at EOF \ Execution of /tmp/input.2508 aborted due to compilation errors. 05:50:47 olwkeojsdfoijiowejr 05:51:03 oh 05:51:07 !perl print int(rand(2))?'clean room':"definitely clean room" 05:51:08 definitely clean room 05:51:09 :> 05:52:33 -!- Vorpal has joined. 05:59:24 i seek feedback on this http://pastebin.ca/2098801 06:06:09 in contrast with that scheme, an idea i am thinking about is http://pastebin.ca/2098804 06:10:51 -!- Klisz has quit (Read error: Connection timed out). 06:11:38 -!- Klisz has joined. 06:12:23 and adding the instructions {"w","a","s","d"} to change the current cell in the io matrix 06:12:40 (mirrored to http://sprunge.us/GdOR, http://sprunge.us/UNSd) 06:12:57 lol 06:13:02 how do you initialise the io matrix 06:13:08 BF IO is based on one-dimensional bytestrings 06:13:16 so how do you turn the input into a matrix? 06:14:39 hmm.. by violating everything near and dear about esolangs heheh 06:15:24 one analogy for what i have dubbed the io matrix is a bitmap 06:16:24 so all the input and output would act upon a bitmap 06:17:08 you should check out paintfuck 06:17:11 not the same thing but bitmap bf all the same 06:17:28 i also had the idea of a frame updating operator 06:18:44 so, wwwwaaaassssdddd would theoretically move a cursor of sorts in a box shape in the bitmap, and then an extra operator such as "e" would tell it to update 06:19:55 so ,w.w.w.w.a.a.a.a.s.s.s.s.d.d.d.d.e!# would theroetically draw a box made of # 06:20:54 my lack of comprehension of bf's [ and ] operators is probably signifigant at this stage :P 06:21:03 but doesn't really matter 06:22:58 hmm paintfuck seems to embody the idea of wasd as nsew 06:24:30 so ,w.w.w.w.a.a.a.a.s.s.s.s.d.d.d.d.e!# would theroetically draw a box made of # 06:24:33 this isn't a valid brainfuck program 06:24:38 ! is just a notational convenience for /interpreters/ 06:24:42 it specifies input 06:24:47 ya 06:24:50 you have to compute the ascii value of ! manually intsead 06:24:54 oh i see what you mean here 06:25:03 since... my input is my bitmap 06:25:14 i can't really have my cake and eat it 06:25:15 (also, most interpreters don't support it -- it originated with the dbfi self-interpreter, which was forced to use such a scheme because it's all bf itself can host) 06:26:39 hmm 06:27:28 ^bf +++++++++++++++++++++++++++++++++++. 06:27:29 # 06:27:57 +++++++++++++++++++++++++++++++++++w.w.w.w.a.a.a.a.s.s.s.s.d.d.d.d.e :-D 06:28:39 i guess i should focus on paintfuck direction notation 06:30:02 +++++++++++++++++++++++++++++++++++n.n.n.n.e.e.e.e.s.s.s.s.w.w.w.w.q (where q = some kind of.. end of frame/cellular automaton iteration operator) 06:30:50 I read some idea about a chess variant with an infinite number of rules. But I have different idea, which is a chess variant where the number of kind of pieces is exactly googolplex. You could have a 10x10 board indicating possible jumps, in each cell put a number 0 to 9. For each possible configuration of this board, assign a number 0 to 9. Each possible set of these value is the kind of piece. Its Haskell type would be: ((Ten, Ten) -> Ten) - 06:33:53 "q" is really intended here along the lines of vsync as if to say, the data is ready 06:34:11 well not like vsync.. but sort of like it 06:37:49 -!- zzo38 has quit (Quit: zzo38). 06:38:30 another goal i have in mind with such things is to use such a language to control a memory mapped array inside a given program 06:39:33 but the more i think about it the more ridiculous it seems 06:46:40 so this "memory mapped array" might look like: cell 0 = player1 paddle position, cell 1 = player2 paddle position, cell 3 = player1 points, cell 4 = player2 points, cell 5 = ball x position, cell 6 = ball y position 06:53:22 "q" is really intended here along the lines of vsync as if to say, the data is ready 06:53:29 it's called blitting... or flipping the buffer... or w/e 06:53:44 ah 06:56:29 so it's really a perverted goal of writing pong in a brainfuck derivative 06:56:47 or.. not the entire pong, but the logic of it 06:58:56 i have to admit paintfuck is very curious 07:01:10 -!- Klisz has quit (Quit: SLEEP, GLORIOUS SLEEP). 07:07:43 i won't truely be a BF programmer until i master the [ and ] 07:11:22 kallisti: hi 07:11:42 hi 07:11:46 lo 07:11:47 l 07:12:46 kallisti: i just descended into 07:12:50 the furthest depths possible 07:12:56 quit it 07:12:58 do something productive 07:13:09 like me 07:13:14 sitting aorund watching SC2 games. 07:13:16 http://meta.stackoverflow.com/questions/41976/question-title-that-doesnt-describe-the-problem 07:13:18 i just read 07:13:19 this 07:13:21 * kallisti paragon of productivity. 07:13:24 i have hit absolute rock bottom 07:13:28 because 07:13:29 lol 07:13:31 it's actually really funny 07:14:00 no it's terrible 07:14:11 it's stepped in SO culture. 07:14:22 so is your face 07:14:25 qez 07:14:38 is qez like qed but cooler. 07:15:41 yes 07:17:07 $.butterfly({ aLongList: ofParameters, whichAre: notExplained 07:17:09 }); 07:18:08 elliott: there are so many things in this that are like... 07:18:13 self-deprecating. 07:18:20 like SO culture is to self-deprecate itself. 07:19:22 kallisti: metastackoverflow is about 65% experienced users complaining about the terrible quality of most of the questions/answers 07:19:32 fun 07:20:47 is pollyanna even a user? 07:23:00 itidus21: renamed 07:23:06 @-references don't get updated when names change 07:23:06 Unknown command, try @list 07:23:06 ahh 07:23:09 infer from context appropriately :P 07:23:20 (they really should get rewritten but i guess it's too heuristicy) 07:24:37 http://bicycles.stackexchange.com/ 07:24:39 yesssss 07:24:42 just what I've been looking for. 07:25:14 apparently pollyanna is adam davis 07:25:43 http://cstheory.stackexchange.com/questions/9563/all-recursive-algorithms-are-inherently-not-inplace-isnt-it 07:25:47 loooooooooooooooooooooooooooooooooooooool 07:25:58 "This question has an open bounty worth +50 reputation from Alan Turing ending in 7 days." 07:26:00 you don't see that every day 07:26:06 thanks turing 07:26:13 obviously all of those recursive tree algorithms in the STL are not in-place. 07:28:04 cstheory stackexchange doesn't get a lot of answers 07:28:08 elliott: THIS IS YOUR GOLDEN OPPORTUNITY 07:28:13 TO BECOME MASTER OF CSTHEORY STACKEXCHANGE 07:28:16 THINK OF THE REP 07:28:18 YOU COULD BE NUMBER 1 07:29:21 "Porn Univeristy Of Blow Job" 07:29:35 who even searches for that sort of thing? it's unlikely to be worded exactly like that even without the typo 07:30:35 * ais523 vaguely wonders what findthisall.com is actually for, given that it's trying so hard to drive traffic to itself 07:31:03 ais523: uh, what are you talking about. :P 07:31:10 kallisti: wiki spam 07:31:15 oh 07:32:07 ais523: hey, my degree is from the Porn University of Blow Job 07:32:34 Blow Job is a wonderful little down, and I understand Adam Porn, the university's founder, was a very generous man indeed 07:32:35 *town 07:32:41 heh 07:32:50 anyway, findthisall.com is responsible for about half the spam the wiki gets 07:33:02 ais523: what's graue's email? 07:33:18 the domain's oceanbase.org, you can probably guess the rest 07:33:28 Blow Job is a wonderful little down the way 07:33:51 hmm, if we even had a spam blacklist, I could just put findthisall.com on it 07:33:53 but we don't 07:34:34 how long has the wikispam been going on? has to be at least two months by now, surely? 07:35:08 -!- kallisti has set topic: TODO: spam blacklist | http://codu.org/logs/_esoteric/. 07:35:27 perhaps a bot should be developed which posts wiki edit titles into the channel, and a capacity to delete those wiki edits 07:35:38 findthisall.com started on 15th november 2011 07:35:40 yes let's spam the wiki and the channel at the same time 07:35:42 great idea. 07:36:06 the other spambot that we have a lot started rather earlier, but it's harder to block in an automated way 07:39:25 * elliott sends an email off to graue 07:39:35 I suggest we try and trick the spambots into spamming Graue if he doesn't reply :) 07:41:48 change the names/ids of every element on every page. 07:42:02 and the bots won't know where to find anything. 07:43:09 kallisti: it doesn't really work like that... 07:43:33 * elliott decides kallisti needs to learn more about spamming software for reasons :) 07:43:46 elliott: well, the bots are breaking the CAPTCHA 07:43:56 elliott: why does it not work like that. 07:44:06 swapping the IDs for captcha answer and edit summary would probably work 07:44:25 as the bots probably wouldn't notice that they'd swapped round, and they certainly aren't spamming the CAPTCHA answer into every text box on the page 07:44:36 ais523: I rather suspect they might go on element order 07:44:44 perhaps even rendered size 07:44:46 ah, that's possible too 07:44:53 or they might search for known text around the boxes 07:44:59 like usage information and field labels 07:45:07 site admins really won't want to mess with those, after all 07:45:10 seems a little advanced for a spambot 07:45:25 normally they just aim at low-hanging fruit 07:45:33 "Aren't you little short for a spambot." 07:45:41 ais523: yeah, Esolang must be reeling in billions for them :P 07:45:49 (I realise they're not specifically targeting Esolang) 07:46:14 elliott: I think you're expecting far too much from spambots. 07:46:16 OK, now I'm curious 07:46:17 maybe /some/ do that. 07:46:21 * ais523 visits findthisall.com in w3m 07:46:31 even if its purpose is to spread malware, I bet it doesn't spread it via w3m on Linux 07:46:47 I mean, even if that combination is vulnerable, the chance that anyone would bother to try an exploit for it is basically 0 07:47:02 anyway if it's element order (which is pretty likely as well) then you can just add some hidden elements somewhere 07:47:29 hmm, it's a list of searches it guesses I might be using, and some results 07:47:32 although quite a few of them are empty 07:47:34 Hidden elements, which they ignore, since they try to approximate what a user would do. 07:47:35 what an embarassing homepage 07:47:47 * ais523 searches for INTERCAL 07:48:01 Are you sure you're not looking for High Quality Euro Watches? 07:48:20 heh, many of the results are just random URLs with irrelevant descriptions and INTERCAL worked into them somewhere 07:48:25 this seems to be a clearinghouse for spam links 07:48:43 as in, it's nothing but sponsored referrals 07:48:55 ais523: i visited it, it's boring 07:48:57 "Check results for INTERCAL on our free comparison site" 07:49:15 elliott: indeed 07:49:24 what a pointless thing to spam 07:49:43 ais523: I say you tias 07:49:52 and you may be pleasantly surprised at how dumb spambots actually are. 07:49:56 they're relying on people searching for a term, finding findthisall.com, then completely forgetting what they were looking for and clicking on one of its links because they look interesting 07:50:14 nah, every distinct website I visit increases the chance that one of them has a w3m exploit 07:50:17 and by you and I mean the owner of the wiki. 07:50:33 kallisti: oh, you mean change the wiki layout? 07:50:34 I can't 07:50:40 yes. 07:50:42 and yes I figured. 07:50:42 there are several obvious solutions to the current rash of spam 07:50:51 but graue isn't implementing any of them, or even responding to emails 07:51:04 hmm, yay, I should hit the last SO privilege level before the 3 ridiculously huge ones today 07:51:18 "You want information about search engine optimization and you would like to have it in a easy to understand format. If this is the case, this article will be perfect for you. We will lay out some of the most important tips and guidelines, in a way that you can quickly digest. The main thing to remember is that you need a solid strategy for which %LINK1% you'll be using, and how you'll use them, but we'll get to that in a moment." 07:51:21 (it goes 5000, 10000, 15000, 20000) 07:51:29 what does the 5000 level do? 07:51:49 hmm, are you going to hit the top privelege level then delete the entire site? 07:51:50 allows me to vote on suggested post edits and approve tag wiki edits 07:51:55 ais523: yes, that's my master plan 07:51:59 like EVE Online scammers? 07:52:52 (10000 gets you moderation privileges like delete votes, handling flags, viewing deleted posts, etc.; 15000 lets you protect questions; 20000 lets you vote to delete answers, delete closed questions, edit tag wikis arbitrarily) 07:53:13 I assume there's some secret level above those that lets you delete the site 07:53:17 it'd only be logical 07:53:41 "delete votes"? that sounds abusable 07:53:47 hmm, the 10k rep privileges are kind of like wikipedia making people admins when they hit a certain edit count 07:53:52 does it let you delete downvotes aimed at you? 07:53:58 except not really, since people have to vote and accept your stuff to raise rep :) 07:54:03 ais523: cast delete votes, that is 07:54:06 i.e. cast votes to delete questions 07:54:08 oh, I see 07:54:17 and also cast votes to not delete, I take it? 07:54:33 I don't think any of the voting systems work that way, they're mostly just 5 people -> action taken 07:54:39 e.g. it takes 5 close votes to close a question 07:54:43 ah, I see 07:55:05 and you need a good amount of rep to cast them in the first place 07:55:12 so the chances of a high-quality question being closed like that are low 07:55:38 I guess 5 people with the ability to cast delete votes could delete the whole site, one question at a time 07:55:57 heh 07:56:45 hmm, I guess I'm one of the few people in the world with enough technical knowledge to delete Wikipedia's Main Page correctly, if I had admin privileges 07:56:50 the thing would just get undeleted pretty quickly, though 07:57:10 I'm amused that the safeguards against deleting it are so much higher than the safeguards against editing it 07:57:18 ais523: You've mentioned this before, in fact. Are you sure you're not harboring some Main Page deletion fantasies? 07:57:30 He's talked about it at least 3 or 4 times. 07:57:37 fizzie: it's because I've been trying to persuade Wikipedia to move it to Portal:Main for ages 07:57:41 but I gave up after a while 07:57:42 Department of Wikiland Security may be in touch. 07:57:49 hmm, I suppose I should claim that's the reason I left 07:57:52 ais523: You can delete Esolang's main page. Nobody will notice if you just do it for a few minutes. 07:57:57 Don't keep your urges cooped up inside. 07:58:02 anyway, there's always a big debate about "can you actually /do/ that?" 07:58:09 and the answer is "yes, if you know how, it's actually quite easy" 07:58:14 but nobody ever believes me 07:58:43 ais523: The one thing I must do with my life is to become a producer of creative works of sufficient notability that an article on any major work I create is guaranteed, and then to release such a work and title it Main Page. 07:58:55 elliott: indeed 07:59:37 I really want to have a universe sandbox so I can see what would happen before I commit to actually going to all that effort to making it happen. 08:00:13 elliott: how do you know you're not in one at the moment, and simply held back your memories of the outside whilst inside it, in order to make sure you acted plausibly 08:00:31 ais523: if that is the case, I salute its creator 08:00:33 godspeed, me 08:00:50 but it's inevitable that I /will/ end up doing all that, because it's specified in the parameters 08:00:54 so I don't have to devote any effort to actually doing it 08:01:09 probably the simplest way this will happen is for me to change my mind and devote effort to it 08:01:16 ais523: Jimbo Wales' editcount is /under 9000/? 08:01:28 would you expect it to be high? 08:01:33 most of what he does doesn't require actual edits 08:01:36 and he isn't even in charge any more 08:01:48 also, he preferred to use a mailing list to wiki talk pages for discusison 08:01:50 *discussion 08:01:56 which is, I think, a mistake 08:02:03 ais523: well, it's been 11 years 08:02:07 elliott: You can aim for the low-hanging fruit and just design an esolang called "Main Page". 08:02:11 he's made under 818 edits per year 08:02:30 that seems abnormally low for a founder who at least participated /moderately/ actively for a good while 08:02:51 fizzie: do you really think any of us would object to putting a dab on our main page for that? 08:03:01 I'd probably just link the trilime to it :P 08:03:53 What's that "I have plans for this file!" mean? 08:04:33 fizzie: I uploaded it to put it on my Main Page redesign. 08:04:41 You can't hotlink it from the theme files. 08:04:58 Obviously I had to upload it before anyone actually knew about the redesign, though, to test it :p 08:05:31 http://esoteric.voxelperfect.net/w/index.php?title=Main_Page&direction=next&oldid=21677 08:05:43 I like how the last few edits before I replaced it were adding more "of the day"s 08:05:48 it reached critical mass 08:06:38 ais523: [[User:Fydo851ts563n‎]] 08:06:41 So what does the trilime symbolize? 08:06:45 fizzie: nobody knows 08:07:00 wait 08:07:02 holy crap 08:07:07 ais523: fizzie: the trilime is the matrix of solidity 08:07:07 elliott: deleted 08:07:16 elliott: but, umm, what? 08:07:24 it predates us hearing about the matrix of solidity 08:07:31 ais523: exactly! 08:07:37 do you seriously believe the matrix of solidity didn't exist before we heard about it? 08:07:38 Linear time is no boundary for the matrix of solidity? 08:07:39 we're /trapped/ in it 08:07:44 further evidence: 1. limes are solid 2. if not the trilime, what else? 08:07:47 elliott: s/trapped/locked/ 08:08:14 ais523: hmm, I suppose you could argue we're consensually locked 08:08:16 deep 08:08:30 elliott: but you're underage! 08:08:40 ais523: not in the matrix of solidity! 08:08:47 This is the Postfix program at host pendrell.textdrive.com. 08:08:48 I'm sorry to have to inform you that your message could not 08:08:48 be delivered to one or more recipients. It's attached below. 08:08:48 For further assistance, please send mail to 08:08:48 If you do so, please include this problem report. You can 08:08:48 delete your own text from the attached returned message. 08:08:50 The Postfix program 08:08:52 : maildir delivery failed: error writing 08:08:54 message: Disc quota exceeded 08:08:56 ais523: you lied to me 08:09:30 elliott: well, that's the last known email address for Graue 08:09:38 I didn't get an error about it when I sent there 08:09:42 my guess is that it /is/ his email address 08:09:44 but he no longer reads it 08:09:51 and his disc quota has entirely filled up with mail 08:09:57 explaining why I didn't get a bounce on my last email, but you did 08:10:00 Email of the day: "Uh, we have this exam for this course you're the assistant for tomorrow, do you have any idea who's preparing the questions?" "Er... the lecturer of the course flew to Tokio a week ago, left his laptop at home, and won't be back until the 16th..." 08:10:13 ais523: searching elsewhere, scott at the same domain seems to be his email address too 08:10:19 note that you're not going to get "disc quota exceeded" unless it can identify the user in question 08:10:22 elliott: are you going to try it? 08:10:25 ais523: maybe! 08:10:42 failing that, I'll find out where he lives and take a crowbar 08:11:14 sent, let's see if it bounces 08:12:43 ais523: theory: graue likes spambots 08:13:01 so how do you explain the ban on
? 08:13:04 I guess I got nominated to prepare an exam. "Oh well, let's check the previous one for ideas and the TeX template... bash: cd: edu/T-61.5140/exam: Permission denied" 08:13:13 ais523: he also hates div and span tags 08:13:26 fizzie: :D 08:13:33 It's SPAMbots he likes, not SPANbots. 08:13:40 fizzie: ("Tokio".) 08:13:55 elliott: Whoops; went with the Finnish spelling. 08:14:31 hmm, maybe i should sleep 08:14:37 maybe i'll ask ais523 whether i should sleep 08:14:48 elliott: I should sleep myself 08:14:51 but I keep getting distracted 08:15:03 either that, or I should stay awake until a sensible time to sleep and then sleep 08:15:11 the thing is, I need to be awake at about 7pm 08:15:16 "drwx--S--- 3 [lecturer's account] edu 7168 2011-11-10 12:20 edu/T-61.5140/exam/" well that's just impolite. 08:15:20 so if I don't go to sleep soon, I won't have time to fit in a good day's sleep 08:15:29 fizzie: setgid? why? 08:15:34 to a group that doesn't exist? 08:15:43 why would the edu group not exist? 08:15:47 Huh? The 'edu' group exists just fine. 08:15:52 Inherited from the parent, probably. 08:16:08 fizzie: Can't you just use a root escalation? 08:16:20 oh, I read edu as the user, and 7168 as the group 08:16:42 Oh; right, I redacted the user. 08:16:50 To protect the guilty, and so on. 08:17:29 Oh well, the student-run exam archive probably has scanned copies of the old exams anyway. 08:17:52 (Not the 2011 ones, apparently.) 08:20:25 fizzie: I wish the students could see this, it'd be so reassuring for them. 08:21:22 fizzie: You should somehow work the channel into one of the questions, e.g. "Alice connects to her favourite IRC network irc.freenode.net and joins #esoteric. Bob sends her an automated welcome message. What is 2 + 2?" 08:22:56 -!- zzo38 has joined. 08:23:02 It's a re-re-exam anyway; the "main" one was last May, and a repeat opportunity last August; this one is just for the stragglers. 08:23:29 Three people have signed up for it, though I suppose there could always be a couple extra; signing up is in theory mandatory, in practice not. 08:23:49 How much can three people matter? Wait, no, not three people: three students. 08:24:02 Three smelly, unwashed students. (Disclaimer: they might not smell.) 08:24:12 fizzie: You should just not give them an exam and they'll be so happy. Probably. 08:24:28 "Is this an exam?" (correct answer "no") 08:26:10 hmm, i just got another upvote 08:26:14 maybe i _will_ sleep after all 08:26:24 (cue ais523) 08:26:37 fizzie: Why'd the lecturer leave his laptop at home and how do you know this? (I presume it wasn't an accident or you wouldn't know about it, unless he called you or something.) 08:27:38 The lecturer was Deewiant all along. 08:27:46 (Is Deewiant still even at that place? Finland is so confusing.) 08:28:07 Yes, I'm at that place for a sufficiently broad value of "that place". 08:28:52 Deewiant: University thingy thingy Google Wave. Without the Google part. 08:28:57 Although Finland might merge with Google in the coming years. 08:29:21 Yes, I'm at that university. 08:29:40 Haven't you been there, like, ten years now? FINLAND. 08:29:48 Deewiant: He emailed me on 28th (of December) that "I'll be leaving for Tokyo tomorrow, back on Jan 16th, not going to take a computer with me, could you kindly update next year's details on the course's website?" Had (apparently; we haven't managed to contact him) completely forgotten about any exam. 08:30:06 Deewiant: I guess it's borderline possible he'd have a ready exam in his office? Though probably not very likely. 08:30:21 fizzie: Worth a shot I guess. 08:30:26 elliott: Like four, I think. 08:30:32 Who the hell doesn't take a computer with them? 08:30:41 That's like "I'm not taking clothes, or oxygen." 08:30:42 elliott: It's called a va-cay-shun. 08:30:52 Naked space vacuum vacation. 08:30:59 (The term is "holiday", foreigner.) 08:31:07 wow, i just got another update! 08:31:09 Holy day. 08:31:15 ais523: you should sleep, i don't need you to be awake to entertain me since i'm sleeping 08:31:19 *upvote 08:32:41 elliott: Anyway, he's not answering his phone either, so I think it's the "unplugged" sort of a holiday. (I mean, don't people usually go to Tokyo to get rid of the hussle and bustle of civilization?) 08:33:03 Hussel-bussel. Anyway. 08:33:26 Tokyo, the last uncharted wilderness. And so on. 08:34:01 (Can you even get an Internet connection there? Maybe with a satellite phone...) 08:34:26 I have a hard time believing it's possible to cross the street without a smartphone in Tokyo. 08:35:55 I think ais523 fell asleep. 08:36:15 fizzie: On an unrelated note, your ICS user web page is old enough that it's full of dead links. 08:36:39 no, I'm still awake 08:36:41 I don't take computer to vacation. 08:36:51 I usually do take books, pencil, paper. 08:37:17 I don't take telephone to vacation either. 08:37:35 Deewiant: Are you suggesting he adopt the FASCIST AALTO TEMPLATE? (I assume they have a template. It is possible they have a template. A template... might exist?) 08:37:51 (Who the fuck calls a university Wave?!) 08:37:54 elliott: He's using an out-of-date template. 08:38:18 Deewiant: Yes, it's like the Confederate flag. 08:38:27 Deewiant: You just can't handle: FREEDOM. 08:39:03 I'm not saying he should use the new template, making up his own stuff is fine by me too. 08:40:24 fizzie: You should tile whatever logo you guys used before Aalto as the background. 08:42:20 Maybe he went to Tokyo to DRIFT RACE. I've understood that's kind of what they do there. 08:42:46 They have cars in Finland? 08:43:03 Horse-driven snowmobiles. 08:43:13 Some use polar bears. 08:44:49 Sometimes when the two kinds meet there are... accidents. 08:45:11 I really hope Finland is actually like that. 08:45:44 ais523: here's a question for you: is efficient /// compilation (to a "standard" language, like C) possible? 08:45:50 You'll be so disappointed when your government finally exiles you here. 08:46:08 elliott: hmm 08:46:14 I can't think of an obvious way, but I'm not convinced it's impossible 08:47:01 it's self-modifying, but at least code only modifies code /after/ it 08:47:11 e.g., a replacement never does anything to /itself/ 08:49:27 @tell oerjan You should fix the Perl /// interpreter (per http://esolangs.org/wiki/Talk:Slashes) :P 08:49:27 Consider it noted. 08:50:28 I try to make (Functor (forall x y. f x y)) to be a constraint but it doesn't seems to work 08:51:17 http://www.google.com/search?q="matrix+of+solidity" 08:51:31 It says it is expected kind `*' but `f x y' has kind `* -> *' 08:52:28 zzo38: you can't have instances like that afaik 08:52:39 but it's impossible to say the real error without knowing context 08:53:49 itidus21: i like how we are second place 08:54:29 its actually surprising we aren't first place 08:54:32 But doesn't it have like the (,) functor and (->) functors have one additional type argument for all type of kind (*) 08:54:50 hmm ill try a better search engine 08:55:33 duckduckgo drops the ball on this one 08:55:56 bing drops the ball on this one 08:56:34 ais523: why the hell is it 9 am? 08:56:49 becaues it's almost 9am 08:57:42 http://www.lifeoflight.com/channellinglibrary/merlin/533.html beloved beloved beloved 09:04:21 ais523: becaues? 09:04:34 s/whatever/whatever/ 09:05:01 bleh, we need a quick and easy to type way to say "just fix all the typos in what I've said recently" 09:05:04 I suggest * on a line by itself 09:06:00 s/typed/intended 09:06:01 sdiojf oe hefu ahfhiwe 09:06:03 * 09:06:43 bleh, i have to sleep now, or i'll end up sleeping at some even more terrible time 09:07:04 ais523: wake me up before it gets too late, please, thanks 09:07:17 i think its a form of courtesy 09:07:34 or a form of acknowledging ones typos 09:08:56 -!- elliott has quit (Read error: Operation timed out). 09:10:01 Then how can I make constraints and classes that put multiple parameters in? 09:12:15 zzo38, MPTCs? 09:12:24 I assume your question is more advanced than that 09:12:35 Yes my question is more advanced than that 09:14:06 -!- nooga has joined. 09:20:09 vis a vis my http://sprunge.us/GdOR and http://sprunge.us/UNSd i would say 09:23:21 brainfuck and boolfuck use bf tape and io streams 09:23:53 smallfuck uses bf tape 09:24:33 paintfuck uses bf matrix 09:26:20 -!- nooga has quit (Ping timeout: 240 seconds). 09:27:29 what i had in mind is to use bf tape and io matrix 09:39:22 -!- ais523 has quit (Remote host closed the connection). 09:40:20 next insight here is that in such an io matrix, the pointer should have dimensions in addition to position 09:43:55 so that can position the pointer at (x,y) and stretch it to (width, height) and do an operation on that like increment, decrement or write a specific value to them all. 09:48:03 Is the left zero law for MonadPlus implied by the other Monad and Functor laws and by the type signatures? 09:55:16 zzo38: which laws? I can't think of one that would be related. 09:55:39 it needs mzero, which isn't defined anywhere else. 10:07:41 mzero :: m a, where it must work for any argument type. Which means that fmap on it must not affect it since there can be no value to affect (since fmap id = id, it cannot do other things), which means join on such a thing must be same too (join mzero = mzero) due to the (>>= return) = id law. 10:08:24 Did I do it wrong? 10:09:15 (Assuming that the class methods must be fully defined, of course) 10:11:33 zzo38: hm, but then is that because of other laws or simply because mzero :: m a ? 10:12:45 I think it is due to the functor laws. The (>>= return) law seem to imply that if fmap cannot affect something, then join cannot affect it either. 10:17:24 (I mean its value remain unaffected) 10:19:49 hmmm, I guess so? 10:19:54 this is too metamath for me. :P 10:20:35 what causes 2 + 2 = 4? is it the 4, the +, the =, the left 2, or the right 2? 10:22:05 I think it is the + that causes 2 + 2 to make 4 10:24:24 hmmm 10:24:42 I think the whole expression depends on its parts. 10:25:01 but yes, I think what you're saying makes sense as well. 10:25:12 Yes, I agree with that. Still, the main thing that causes addition to result in an answer is the addition. 10:25:33 But of course it won't work if you don't have something to add! 10:25:50 (1+1) + (1 + 1) = (1 + 1 + 1 + 1) 10:26:12 also if equality were defined differently you would not be able to say the same thing about the value of 4. 10:26:13 itidus21: That's different; it is caused by associative laws. 10:26:31 kallisti: Yes, that too. 10:31:14 anyway I'm not sure that they're connected anyway. 10:31:33 I'm pretty sure the zero law is just stemming from the simple fact that mplus and mzero form a monoid. 10:32:14 you could say it's a result of mplus in much the same way that 4 is the result of addition in the expression 2 + 2. if you want to think of it that way. 10:33:55 maybe if mplus had a default definition, with mzero being the minimal complete definition. 10:34:22 kallisti: I don't think so. The identity law (mplus mzero = flip mplus mzero = id) follow from a monoid, but left zero law (mzero >> x = mzero) is difference, it is a bit like multiplication but not really. 10:35:06 oh by left zero law I thought you meant mzero `mplus` x = mzero 10:35:26 No, that is called the left identity law. 10:36:08 Maybe you can understand my other comments and proof now that you know what I meant by left zero law. 10:36:18 yes that makes more sense. 10:36:55 oops. here I was, getting all philosophical. 10:40:20 or hmmm... 10:41:02 well, if the left zero law weren't true I don't think left identity for monads could be true either. 10:43:54 -!- GreaseMonkey has quit (Quit: The Other Game). 10:50:49 `? monad 10:50:59 Monads are just monoids in the category of endofunctors. 10:51:05 * Sgeo has every desire to write some Template Haskell code very soon 10:51:12 Sgeo: wwhy? 10:51:34 It's either that or writing very repetitive Haskell code 10:51:40 why? 10:51:43 Although I've already been doing quite a bit of the latter :/ 10:51:51 Because I intend to make a binding to the AW SDK 10:52:04 oh. maybe, 10:52:21 repetitive in what way? 10:53:33 Defining data structures in a regular way with a consistent naming pattern, and making consistently named functions that take those data structures as arguments 10:53:36 Things like that 10:53:46 -!- sebbu2 has joined. 10:53:46 -!- sebbu2 has quit (Changing host). 10:53:46 -!- sebbu2 has joined. 10:55:10 I will probably use a quasiquoter 10:55:34 So I can copy/paste from Aw.h right into the thing without repeated search/replace and whatnot 10:55:42 (Which I've been doing quite a bit of these past few days) 10:56:52 -!- sebbu has quit (Ping timeout: 252 seconds). 11:01:07 Sgeo: are you sure there's not an abstraction? 11:15:21 i think that i have a hidden motive with programming to try to use programming to bridge the gap between required data resources and available financial 11:17:00 like for example, 3d scanners, 2d scanners, cameras, video cameras, 3d cameras, motion capture, microphones etc.. all provide a lot of data resources 11:19:10 not to mention the cost of actors, painters, animators, film sets, voice actors to apply all these technologies to 11:22:01 Abstract film? :3 11:22:02 -!- Jafet has joined. 11:22:32 -!- azaq23 has joined. 11:22:47 -!- azaq23 has quit (Max SendQ exceeded). 11:23:24 -!- azaq23 has joined. 11:23:28 Frooxius: well the idea is quite obvious "aha.. i can simulate all these things with a computer!" but then there is the need for 2d digital artists, animators, 3d modellers, music composers, render farms (in some cases) 11:24:34 Hmm, I just saw an abstraction and actors and such, I'm not really paying attention much ^^' 11:24:58 oh, since i don't understand esolangs i just go off on my own tangents 11:25:21 I made a short abstract (maybe? x3 ) film before though, if you're interested: http://www.youtube.com/watch?v=yQJYr13Ixew 11:25:43 basically my comments are not releveant or related to what was said before 11:26:59 -!- Jafet1 has joined. 11:27:21 -!- Jafet has quit (Ping timeout: 240 seconds). 11:33:12 -!- Jafet1 has quit (Ping timeout: 260 seconds). 11:35:55 -!- nooga has joined. 11:44:35 kallisti, there probably are, but I can't think of anything off the top of my head that's remotely type-safe 11:45:03 Or thread-safe 11:47:45 The type (c x y -> z) is a indexed comonad for any category c like (x -> z) is for a monoid x 11:48:00 The type (c x y -> z) is a indexed comonad for any category c like (x -> z) is a comonad for a monoid x 11:50:14 -!- zzo38 has quit (Remote host closed the connection). 12:07:24 i'm impressed by the language trigger having just read about it 12:08:30 -!- Jafet has joined. 12:08:32 ^? 12:08:38 ^help 12:08:38 ^ ; ^def ; ^show [command]; lang=bf/ul, code=text/str:N; ^str 0-9 get/set/add [text]; ^style [style]; ^bool 12:08:56 `? 12:09:00 cat: wisdom/: Is a directory 12:09:04 `help 12:09:07 Runs arbitrary code in GNU/Linux. Type "`", or "`run " for full shell commands. "`fetch " downloads files. Files saved to $PWD are persistent, and $PWD/bin is in $PATH. $PWD is a mercurial repository, "`revert " can be used to revert to a revision. See http://codu.org/projects/hackbot/fshg/ 12:11:25 -!- Phantom_Hoover has joined. 12:14:18 -!- monqy has quit (Quit: hello). 12:16:05 -!- nooga has quit (Ping timeout: 252 seconds). 12:37:39 -!- MDuck has changed nick to MDude. 12:38:57 -!- nooga has joined. 13:04:19 -!- nooga has quit (Ping timeout: 276 seconds). 13:29:09 -!- sebbu2 has changed nick to sebbu. 13:34:07 ^bf ,[.,]!hello 13:34:07 hello 13:35:46 -!- Sgeo has quit (Read error: Connection reset by peer). 13:37:28 -!- Sgeo has joined. 13:41:57 ^bf ,[.,]!wb sgeo 13:41:57 wb sgeo 13:42:23 ty 13:42:34 Only restarted comp because I was too lazy to clear up the clutter of programs 13:42:39 Wanted a fresh start 13:42:44 And now because of it I am noticing c2hs 13:45:03 so i was working independantly on a symbol independant thing a few days ago and just encountered the idea on the wiki (probably unconcious plagiarism on my part) 13:45:08 anyway, in this case the idea was 13:45:32 "" = 0, "x" = 1 where x is a particular symbol, "xx" = 2 where x is a particular symbol, "*" = infinity 13:46:14 in hindsight, the idea of "" = 0 doesn't look so great 13:46:54 but this would be designed to give something like aa+aa=aaaa 13:48:21 or maybe to say 'a' = 1, 'b' = 2, 'c' = 3... "abbccc" 13:49:54 nah.. nevermind.. 13:51:44 i guess what my notion comes down to is that a symbol could encode a number by being a string of that number 13:51:58 ^in length 13:52:21 moving on... 13:53:55 You see unary numbers like that sometimes; e.g. in sed programs, since it's easy to add them. 13:55:27 And there's of course the combination of unary and boring brainfuck derivatives, http://www.esolangs.org/wiki/Unary 13:55:51 once, in a program lost to a hard disk crash, i had this idea of a rock paper scissors game where you could do sequences of rock paper scissors 13:57:04 i implemented it in c++ with allegro many years before coming here 13:57:19 it was a good idea... but hard disks die 13:57:49 anyway.. the idea was.. the 2 players had hitpoints... and different sequences take off different amounts of hitpoints 13:58:25 so rrr, ppp, sss gave you a bonus 13:58:38 but then there was more complicated sequences 13:58:53 up to possibly 8 in length i forget exactly 13:59:29 and so the game becomes about trying to complete a long sequence, while preventing the other playing completing a long sequence 13:59:42 ^s/playing/player 14:02:28 since uh.. at every round of the game, a rock will beat a scissors 14:03:20 so if you can predict what their pattern is you can try to head them off before they complete it 14:05:48 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .). 14:16:33 -!- nooga has joined. 14:17:12 There.... is a box of Gardasil next to the butter in my fridge. 14:17:51 At least my sandwich will be immune to cervical cancer *and* genital warts, I suppose. 15:25:16 I can't even tell if I'm tired or not. 15:40:52 * kallisti is reading "What every computer scientist should know about floating-point arithmetic" 15:41:03 "It's insane." 15:44:16 "Floating-point arithmetic is considered an esoteric subject by many." -- first sentence. 15:44:40 It is, because it's nuts. 15:45:29 Or rather, it's designed for good enough accuracy over a wide range of precisions, not precise numerical computation. 15:45:38 s/precisions/magnitudes/ 15:46:18 "This is rather surprising, because floating-point is ubiquitous in computer systems: Almost every language has a floating-point datatype; computers from PCs to supercomputers have floating-point accelerators; most compilers will be called upon to compile floating-point algorithms from time to time; and virtually every operating system must handle floating-point exceptions such as overflow." 15:46:24 -- second sentence 15:47:25 I think I'll mostly be interested in the compiler and OS sections. 15:47:49 and not the "lol this is how overflow and rounding errors happen lololololo" section 15:49:33 oh hm it discusses the IEEE standard. That will be useful, because I haven't managed to find an open copy of it anywhere. 15:54:44 -!- Ngevd has joined. 15:54:47 Hello! 15:57:45 I like today's Gunnerkrigg court 15:59:23 Today's Comments on a Postcard sounds awfully familiar... 16:19:49 Hooray, I now have an (almost; no 5-1) complete set of up to 6-piece Nalimov endgame tablebases. 16:23:25 Now, a complete set of 6-piece Nalimov endgame tablebases; tomorrow, the world! 16:31:07 In the far future, perhaps a seven-piece set. 16:50:19 oh hm it discusses the IEEE standard. That will be useful, because I haven't managed to find an open copy of it anywhere. <-- try IEEE? 16:51:41 kallisti, here: http://ieeexplore.ieee.org/xpl/mostRecentIssue.jsp?punumber=4610933 16:52:50 I got my copy from there, can access it by university proxy, check if your university offers that too (if you study at one, I don't remember). If you don't I'm afraid I'm not allowed to distribute it though, and the pdf is marked with who downloaded it on the bottom of every page. 16:53:48 yes I can access it via my university. 16:54:01 kallisti, then the problem is solved 16:54:08 not sure if I can do so on this computer though 16:54:11 I haven't checked. 16:54:28 kallisti, my university offers a proxy service for such things, so I can do it from anywhere 16:55:58 The /r/circlejerk CSS fooled me for a bit 16:57:02 you can downvote stuff there easy 16:58:29 Not what I was referring to 17:03:10 then what were you referring to, oh wise CSS master? 17:06:32 -!- elliott has joined. 17:06:56 -!- Vorpal has quit (Ping timeout: 240 seconds). 17:08:57 hi 17:08:58 elliott: You have 1 new message. '/msg lambdabot @messages' to read it. 17:09:26 wow, Graue deleted some spam 17:09:33 @tell oerjan you owe me one 17:09:33 Consider it noted. 17:10:09 @tell lambdabot derp 17:10:09 Nice try ;) 17:10:41 lahwran, look at who the commenters are. 17:11:08 -!- oklopol has quit (Read error: Connection reset by peer). 17:11:22 @tell lambdabot derp, okay? 17:11:22 Consider it noted. 17:11:40 -!- Ngevd has quit (Read error: Connection reset by peer). 17:13:15 Sgeo: that's actually pretty impressive CSS 17:13:45 -!- Ngevd has joined. 17:18:13 -!- Taneb has joined. 17:18:50 -!- Ngevd has quit (Ping timeout: 240 seconds). 17:40:32 -!- augur has quit (Remote host closed the connection). 17:48:23 hi my name is kallisti 17:48:34 Apparently earphones do not exist in the future. 17:48:41 * Sgeo goes back to watching DS9 17:49:12 * kallisti is uncharacteristically watching the entire first season of Trigun. 17:56:00 Did it have multiple seasons? 17:57:35 -!- oerjan has joined. 17:58:44 hi oerjan, YOU MAY PAY ME IN BLOOD 17:59:39 -!- Klisz has joined. 18:01:19 *cough* 18:01:19 oerjan: You have 2 new messages. '/msg lambdabot @messages' to read them. 18:01:22 @messages 18:01:23 elliott said 9h 11m 50s ago: You should fix the Perl /// interpreter (per http://esolangs.org/wiki/Talk:Slashes) :P 18:01:23 elliott said 51m 49s ago: you owe me one 18:02:03 ah but you used the reverse magical word 18:02:06 "should" that is 18:02:32 oerjan: Yes, and then I emailed Graue at the CORRECT ADDRESS unlike everybody else, and got a response, and he deleted spam. 18:02:41 And says he'll try and do something about it on the weekend. 18:02:43 IN CONCLUSION 18:02:48 PAY IN BLOOD, CORRECTED /// INTERPRETER 18:03:21 i don't think i've emailed graue recently at any address, so i don't see the point 18:03:57 oerjan: ais did, and you whined at least once about Graue being non-responsive :P 18:04:00 BLOOD!!! 18:04:22 There are lots of bloggers out there that do not really comprehend the potential of their blogs; specifically, the money making potential of the blog and how it might be optimized to generate a reliable online income. Here are a number of reasons why anyone may make money blogging. Blogs are becoming increasingly popular due to the fact that they can be put to use for income generation. Online Marketers work with blogs for advertising and marketi 18:04:22 ng and bloggers capitalize on that require and make dollars blogging. So why are blogs so rewarding? Well here are usually four reasons: 18:05:43 Oh ffs, it took way too long for me to get the hint 18:05:46 (in this episode) 18:06:43 -!- Taneb has quit (Quit: Goodbye). 18:07:12 i am slightly worried that there are three admins active and still they missed User:KuzyFueesi 18:07:41 oerjan: ais uses rss which can reorder things 18:07:47 dunno about keymaker 18:07:50 graue only deleted one page, though 18:08:03 @tell ais523 [[User:KuzyFueesi]] 18:08:03 Consider it noted. 18:08:57 ...but does it have a 10 cutoff limit like the wordpress blog rss? 18:10:30 Graaa upvote me you people. 18:10:33 oerjan: I doubt it's that low. 18:14:57 -!- DCliche has joined. 18:16:07 !show slashes 18:16:09 perl (sending via DCC) 18:17:07 * elliott thinks about techniques for efficient /// implementation 18:17:27 !slashes /test/ho///hm/test 18:17:29 ho 18:17:31 you could store the whole program in a trie somehow 18:17:37 the only thing you need ordering for is ordering of execution 18:18:15 -!- Klisz has quit (Ping timeout: 244 seconds). 18:20:04 !slashes //hm/\?? 18:20:05 ​?? 18:21:03 !slashes //h\m/\?? 18:21:04 hm? 18:24:14 An article talking partly about J with a J code example from Programming in the 21st Century is #2 on proggit. 18:24:26 Maybe proggit has merit after all. 18:24:43 Of course, then I click the comments... 18:24:44 Don't read the comments. 18:25:37 Deewiant: But all the other links are boring!!!!!! 18:25:38 :'( 18:38:33 -!- Zuu has quit (Ping timeout: 252 seconds). 18:44:03 -!- Ngevd has joined. 18:44:06 Hello! 18:46:47 Hi 18:49:35 !delinterp slashes 18:49:36 ​Interpreter slashes deleted. 18:49:59 !addinterp slashesl perl http://oerjan.nvg.org/esoteric/slashes/ircslashes.pl 18:50:01 ​Interpreter slashesl installed. 18:50:03 oops 18:50:06 !delinterp slashesl 18:50:06 ​Interpreter slashesl deleted. 18:50:11 !addinterp slashes perl http://oerjan.nvg.org/esoteric/slashes/ircslashes.pl 18:50:13 ​Interpreter slashes installed. 18:50:23 !slashes //h\m/\?? 18:50:49 !slashes /test/ho/test 18:50:49 ho 18:52:07 oh wait 18:53:49 !show slashes 18:53:51 perl (sending via DCC) 18:54:51 * oerjan feels so anemic now 18:56:23 what does anemic even mean 18:56:52 lack of red blood cells 18:56:59 wat 18:57:03 well i mean 18:57:04 i knew that 18:57:12 i just assumed there must be some hidden meaning i was missing for that to make sense 18:57:32 i just paid a blood debt, is all 18:57:35 oerjan is actually anemic. He really needs to get to a hospital, stat 18:57:48 oerjan: oh dur 18:58:16 Ngevd: a very plausible interpretation. 19:02:36 ?pl \i o f a b -> i $ f (o a) (o b) 19:02:36 (. (flip =<< ((flip . ((.) .)) .) . flip (.))) . (.) . (.) . (.) 19:02:39 ?pl \a b -> i $ f (o a) (o b) 19:02:40 (i .) . (. o) . f . o 19:02:56 ?pl \a b c -> i $ f (o a) (o b) (o c) 19:02:56 ((i .) .) . flip flip o . ((.) .) . (. o) . f . o 19:03:00 ?pl \a b c d -> i $ f (o a) (o b) (o c) (o d) 19:03:00 (((i .) .) .) . flip flip o . ((flip . ((.) .)) .) . flip flip o . ((.) .) . (. o) . f . o 19:03:06 sigh 19:03:52 elliott: needs more on 19:04:52 oerjan: well the problem with on is that it's just for binary operators... 19:04:57 :t (?i .: ?f) `on` o 19:04:58 Couldn't match expected type `a -> b' against inferred type `Expr' 19:04:58 In the second argument of `on', namely `o' 19:04:58 In the expression: (?i .: ?f) `on` o 19:05:01 :t (?i .: ?f) `on` ?o 19:05:02 forall a c b a1. (?i::a -> c, ?f::b -> b -> a, ?o::a1 -> b) => a1 -> a1 -> c 19:05:12 it would be nice to regularise the scheme a bit so that you can more easily extend to further arguments. 19:05:19 a la zipWithN vs. ZipList 19:05:46 i believe we wrote onN on a previous occasion 19:10:32 oh did we 19:10:39 i mean i don't want a typeclass hack 19:10:41 just a more regular scheme 19:11:11 @ty runWriter 19:11:12 forall w a. Writer w a -> (a, w) 19:15:09 -!- DCliche has changed nick to Klisz. 19:24:37 BOOM! 19:24:42 :t let onMore c f o a = c (f (o a)) o; onEnd f _ = f in onMore (onMore onEnd) 19:24:43 forall t t1 t2. (t2 -> t2 -> t) -> (t1 -> t2) -> t1 -> t1 -> t 19:25:05 elliott: regular enough? :) 19:25:28 :t let onMore c f o a = c (f (o a)) o; onEnd f _ = f in onMore (onMore (onMore (onMore onEnd))) 19:25:29 forall t t1 t2. (t2 -> t2 -> t2 -> t2 -> t) -> (t1 -> t2) -> t1 -> t1 -> t1 -> t1 -> t 19:25:43 oerjan: heh, nice 19:26:07 :t let onMore c f o a = c (f (o a)) o; onEnd f _ = f in (onMore . onMore . onMore . onMore) onEnd 19:26:08 forall t t1 t2. (t1 -> t1 -> t1 -> t1 -> t2) -> (t -> t1) -> t -> t -> t -> t -> t2 19:26:23 oerjan: it would be nice to specify i and o as an argument, though, but only once 19:26:28 I guess that would be a pain though 19:26:36 i.e. factor them out into an argument without having to repeat them 19:26:38 I like it, though 19:26:45 elliott: um o _is_ factored out 19:27:12 oerjan: oh, so it is 19:27:16 I see, sorry :) 19:27:21 onEnd is o there, right? 19:27:31 it's const 19:27:44 oerjan: I'm asking what I'd replace to change o 19:27:53 onEnd is on0, really 19:28:07 and onMore onN = onSuccN 19:28:16 with on2 the usual one 19:28:21 I can't tell whether you understand my question :P 19:29:07 elliott: o is the second argument of onN, as usual 19:31:46 :t let ioMore c f i o a = c (f (o a)) i o; ioEnd f i _ = i f in ioMore (ioMore (ioMore ioEnd)) 19:31:47 forall t t1 t2 t3. (t3 -> t3 -> t3 -> t) -> (t -> t1) -> (t2 -> t3) -> t2 -> t2 -> t2 -> t1 19:31:58 oerjan: ok maybe i'm not expressing what I want 19:32:01 oh, I see 19:32:02 elliott: there you go 19:32:17 oerjan: neat, thanks -- it'd be nice if f came /after/ i and o though >__> 19:32:23 although hmm i guess that's pretty easy 19:32:28 yeah 19:32:53 :t let nest c i o f a = c i o (f (o a)); stop i _ f = i f in (nest.nest.nest) stop Endo appEndo 19:32:54 forall a a1. ((a1 -> a1) -> (a1 -> a1) -> (a1 -> a1) -> a -> a) -> Endo a1 -> Endo a1 -> Endo a1 -> Endo a 19:32:59 oerjan: :D 19:33:09 generalised newtype-ish lifting 19:33:17 heh 19:33:54 * elliott then wonders if you could bundle i and o into _stop_ 19:33:58 so that it'd look like 19:34:03 (nest.nest.nest) inEndo ... 19:34:08 with inEndo being defined appropriately 19:34:12 that would be the absolute ideal 19:36:40 Now you've got me thinking about zipWithN 19:36:43 you can do it if you put inEndo first 19:36:48 Ngevd: see ZipList 19:36:57 oerjan: oh, indeed 19:36:59 that's even better, too 19:37:12 :t let nest c i o f a = c i o (f (o a)); stop i _ f = i f; inEndo f = f stop Endo appEndo in inEndo (nest.nest.nest) 19:37:13 forall a a1. ((a1 -> a1) -> (a1 -> a1) -> (a1 -> a1) -> a -> a) -> Endo a1 -> Endo a1 -> Endo a1 -> Endo a 19:37:48 hm stop seems so redundant there, the only place it's used is where you already know what i is 19:38:01 :t let nest c i o f a = c i o (f (o a)); stop i _ f = i f; inEndo f = f stop Endo appEndo in inEndo stop 19:38:02 forall a t. t -> Endo a -> a -> a 19:38:08 he 19:38:09 h 19:38:09 elliott: just use const i, then 19:38:23 er 19:38:26 :t let nest c i o f a = c i o (f (o a)); inEndo f = f (const Endo) Endo appEndo in inEndo stop 19:38:27 Not in scope: `stop' 19:38:28 erm 19:38:29 :t let nest c i o f a = c i o (f (o a)); inEndo f = f (const Endo) Endo appEndo in inEndo nest 19:38:30 Couldn't match expected type `Endo a' 19:38:30 against inferred type `t -> t1' 19:38:30 Probable cause: `nest' is applied to too few arguments 19:38:33 oerjan: i think not 19:38:39 just const 19:38:46 well right 19:38:50 :t let nest c i o f a = c i o (f (o a)); inEndo f = f const Endo appEndo in inEndo nest 19:38:51 forall a a1. ((a1 -> a1) -> a -> a) -> Endo a1 -> Endo a 19:38:59 @pl \c i o f a -> c i o (f (o a)) 19:38:59 flip flip (flip (.)) . (liftM2 ((.) . (.)) .) 19:39:03 @pl \i o f a -> c i o (f (o a)) 19:39:04 (`ap` flip (.)) . (((.) . (.)) .) . c 19:39:06 @pl \o f a -> c i o (f (o a)) 19:39:06 ap ((.) . (.) . c i) (flip (.)) 19:39:09 @pl \f a -> c i o (f (o a)) 19:39:09 (c i o .) . (. o) 19:39:11 heh 19:39:44 @let result = (.) 19:39:45 Defined. 19:39:47 @let argument = flip (.) 19:39:48 Defined. 19:39:59 :t \f a -> c i o (f (o a)) 19:40:00 Couldn't match expected type `t -> t1' against inferred type `Expr' 19:40:00 In the first argument of `f', namely `(o a)' 19:40:00 In the third argument of `c', namely `(f (o a))' 19:40:04 :t \c i o f a -> c i o (f (o a)) 19:40:05 forall t t1 t2 t3 t4. (t -> (t1 -> t2) -> t3 -> t4) -> t -> (t1 -> t2) -> (t2 -> t3) -> t1 -> t4 19:40:13 :t \c i o -> result (c i o) . argument o 19:40:13 forall t a b (f :: * -> *) a1. (Functor f) => (t -> f a1 -> a -> b) -> t -> f a1 -> (a1 -> a) -> f b 19:40:15 excellent 19:40:43 : let nest k i o = result (k i o) . argument o; inEndo f = f const Endo appEndo in inEndo nest 19:40:45 :t let nest k i o = result (k i o) . argument o; inEndo f = f const Endo appEndo in inEndo nest 19:40:46 forall a a1. ((a1 -> a1) -> a -> a) -> Endo a1 -> Endo a 19:40:51 oerjan: that's really nice, thank you! 19:41:39 (those argument and result combinators are from http://conal.net/blog/posts/semantic-editor-combinators) 19:42:48 yeah i remember 19:44:06 oerjan: i was inspired by seeing (~>) defined later based on that and Conal liking it, as (i ~> o) f = i . f . o 19:44:22 nothing that can't be extended to more arguments is elegant enough! :p 19:44:48 :t let nest k o = result (k o) . argument o; inEndo f = f (const Endo) appEndo in inEndo nest 19:44:49 forall a a1. ((a -> a) -> a1 -> a1) -> Endo a -> Endo a1 19:44:59 nicer still 19:45:28 :t let nest k o = result (k o) . argument o; (i ~> o) f = f (const i) o; inEndo = Endo ~> appEndo in inEndo (nest . nest) 19:45:28 forall a a1. ((a -> a) -> (a -> a) -> a1 -> a1) -> Endo a -> Endo a -> Endo a1 19:45:35 oerjan: methinks that's as good as it gets :P 19:45:37 oh ugh 19:45:41 oerjan: what's with the monomorphism there? 19:46:05 hm? 19:46:11 :t let nest k o = result (k o) . argument o; (i ~> o) f = f (const i) o; inEndo = Endo ~> appEndo in inEndo (nest . nest) 19:46:11 forall a a1. ((a -> a) -> (a -> a) -> a1 -> a1) -> Endo a -> Endo a -> Endo a1 19:46:12 why not 19:46:20 ((a -> a) -> (b -> b) -> (c -> c)) -> Endo a -> Endo b -> Endo c 19:46:49 @pl \k o -> (k o .) . (. o) 19:46:49 (`ap` flip (.)) . (((.) . (.)) .) 19:46:53 heh 19:48:54 :t appEndo 19:48:55 forall a. Endo a -> a -> a 19:49:10 it's just the newtype field 19:49:20 -!- ais523 has joined. 19:49:22 :t let nest k o = result (k o) . argument o; (i ~> o) f = f (const i) o; inEndo = Endo ~> appEndo in nest 19:49:25 oops 19:49:27 :t let nest k o = result (k o) . argument o; (i ~> o) f = f (const i) o; inEndo = Endo ~> appEndo in nest 19:49:28 forall (f :: * -> *) a a1 b. (Functor f) => (f a -> a1 -> b) -> f a -> (a -> a1) -> f b 19:49:37 Hello, ais523 19:49:44 oerjan: i think nest's recursion might be restricting all the arguments of the result to have the same type, sort of thing 19:49:56 argh lambdabot's (.) isn't helping 19:49:59 ais523: hi, graue replied 19:50:45 elliott: yes, of course, because they all have o applied 19:51:57 o is passed as an argument, thus monomorphic. i suppose you could sprinkle some rank2 19:52:49 -!- Zuu has joined. 19:53:36 oerjan: oh, ofc 19:53:42 :t let nest k o = result (k o) P.. argument o; (i ~> o) f = f (const i) o; inEndo = Endo ~> appEndo in nest 19:53:43 Couldn't find qualified module. 19:53:46 :t let nest k o = result (k o) Prelude.. argument o; (i ~> o) f = f (const i) o; inEndo = Endo ~> appEndo in nest 19:53:47 forall (f :: * -> *) a a1 b. (Functor f) => (f a -> a1 -> b) -> f a -> (a -> a1) -> f b 19:53:57 :t let nest k o = (k o Prelude..) Prelude.. (Prelude.. o); (i ~> o) f = f (const i) o; inEndo = Endo ~> appEndo in nest 19:53:57 forall a b c c1. ((a -> b) -> c -> c1) -> (a -> b) -> (b -> c) -> a -> c1 19:54:23 elliott: what was the reply? 19:54:23 ais523: You have 1 new message. '/msg lambdabot @messages' to read it. 19:54:56 ais523: he'll see what he can do, but might not have time until the weekend or after 19:55:05 oh, looks like he deleted exactly one spam page 19:55:08 yeah :P 19:55:15 doing his bit! :) 19:55:36 so, I conclude that anyone who has sent email to Graue in, like, a year, has sent email to /dev/null 19:55:55 ais523: I did mention AbuseFilter in my email 19:55:58 you're welcome 19:56:08 i was considering asking him to update MW too :P 19:56:44 oerjan: hindley-milner sucks, restricting monomorphism like that :) 19:57:06 elliott: you have to update MW to install AbuseFilter 19:57:15 did you mention spam blacklist, and upgrading the CAPTCHA, too? 19:57:29 oerjan: unfortunately I'd need a typeclass or something to fix it 19:57:44 ais523: "It would be greatly appreciated if you could tighten the CAPTCHA, or 19:57:44 install an extension like AbuseFilter to allow the admins to blacklist 19:57:44 problem domains." 19:57:47 --me 19:57:52 (elliott) 19:59:05 AbuseFilter does much more than blacklisting domains 19:59:09 you can, say, blacklist regexps 19:59:21 or even, say, forbid a user's first edit being to their own user page 19:59:23 I'd love to do that 19:59:34 ais523: yeah, but I (a) was annoyed enough about the spam to be writing it quickly and (b) didn't feel like writing marketing copy :P 19:59:50 (and just throw up a message saying "editing your own user page on your first edit is a common behaviour for spambots, please edit a different page first, such as the sandbox, to prove you're human") 20:01:00 * elliott considers changing "Why not join us on IRC?" to "Why not join us in the matrix of solidity?" 20:01:05 maybe once Graue isn't looking :D 20:08:28 why do you consider /IRC/ to be the matrix of solidity? 20:08:33 `pastlog matrix of solidity 20:09:08 No output. 20:09:12 `quote matrix of solidity 20:09:16 299) enjoy being locked in your matrix of solidity 20:09:20 ais523: that's the origin of it, after all 20:09:34 elliott: indeed 20:09:38 we, on IRC, were closed-minded; treederwright enlightened us as to the matrix of solidity we are locked within 20:09:47 I can't believe that "matrix of solidity" never came up in the logs before now, though 20:09:53 so, I conclude that pastlog has broken again 20:09:57 most likely 20:09:58 `pastlog solidity 20:10:24 2011-11-10.txt:22:50:04: `quote matrix of solidity 20:10:38 @src replicateM 20:10:38 replicateM n x = sequence (replicate n x) 20:10:40 hmm 20:10:40 @src replicateM_ 20:10:40 replicateM_ n x = sequence_ (replicate n x) 20:10:44 @src sequence 20:10:44 sequence [] = return [] 20:10:44 sequence (x:xs) = do v <- x; vs <- sequence xs; return (v:vs) 20:10:44 -- OR: sequence = foldr (liftM2 (:)) (return []) 20:10:45 @src sequence_ 20:10:45 sequence_ ms = foldr (>>) (return ()) ms 20:18:19 -!- augur has joined. 20:19:11 so, I conclude that pastlog has broken again <-- i wonder if this is the same bug that sometimes causes `welcome to give only the nick: part 20:19:20 -!- Ngevd has quit (Ping timeout: 252 seconds). 20:19:34 oerjan: hmm 20:19:47 `welcome clog cmeme glogbot glogbackup 20:19:50 clog: cmeme: glogbot: glogbackup: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page 20:20:13 ais523: i _think_ it usually happens when HackEgo is just starting up after a long break 20:20:37 like something is timing out, maybe 20:20:52 `pastlog matrix of solidity 20:21:01 2011-04-01.txt:23:42:21: * iconmaster is enjoying being locked in his matrix of solidity. 20:21:29 `pastlog matrix of solidity 20:21:34 oerjan: hmm, perhaps 20:21:38 2011-05-18.txt:20:14:43: also, I didn't know that the matrix of solidity thing was on the main page 20:21:49 could just be a problem with trying to load all the logs into cache 20:21:54 HackEgo is really slow 20:22:00 so timing out after "waking up" sounds likely to me 20:22:18 I'm not sure it would give partial output, though, and I /rewrote/ that piece of code 20:22:24 `run echo -n hi; sleep 10000 20:22:26 `run echo bye; sleep 10000 20:22:57 hi 20:23:01 bye 20:23:15 elliott: for `welcome, which i wrote, it's probably to do with the use of @ and ? subprocesses? 20:23:33 oerjan: perhaps, yes 20:24:28 -!- Ngevd has joined. 20:24:33 Hello! 20:24:45 Remember my vocab tester thing I did a while back? 20:24:52 I've decided to give it more features 20:25:01 Because I am mad 20:25:07 a fnobbly cromulent vocab tester 20:25:21 `words latin 20:25:29 `words --help 20:25:29 Argument "latin" isn't numeric in int at /hackenv/bin/words line 141. \ 20:25:33 Usage: words [-dhNo] [DATASETS...] [NUMBER_OF_WORDS] \ \ valid datasets: --eng-1M --eng-all --eng-fiction --eng-gb --eng-us --french --german --hebrew --russian --spanish --irish --german-medical --bulgarian --catalan --swedish --brazilian --canadian-english-insane --manx --italian --ogerman --portuguese --polish --gaelic --finnish --norwegian \ default: --eng-1M \ \ options: \ -h, --help this help text 20:25:48 `words --italian 20:25:52 convalco 20:26:03 `words 10 --italian 20:26:07 fughe soltinsava disperai rimentissa imitargogne abbero perter sbendaleghe crimpleme scolora 20:26:36 lascianza sperate vogni chintrate 20:29:29 How does System.Environment.getArgs behave? 20:29:54 Ngevd: it gives a list argument strings 20:29:57 *of 20:30:19 excluding program name 20:30:34 in IO, of course 20:31:05 :t System.Environment.getArgs 20:31:06 IO [String] 20:31:08 So, if I ran "latin_vocab military", what would it give me? 20:31:11 oerjan: "of course" -- many people would see no problem with getArgs being pure :/ 20:31:13 [military]? 20:31:16 well apart from the existence of withArgs 20:31:19 Ngevd: ["military"] 20:31:28 Yes 20:31:45 elliott: there's a function to change it, though :P 20:31:55 > foldr (+) 0 [1..5] :: Sym Int 20:31:56 15 20:31:58 I am sad face :( 20:32:09 oerjan: well apart from the existence of withArgs 20:32:28 kallisti: "i sure do like how Sym reduces expressions automatically" --kallisti 20:32:37 elliott: i cannot possibly read and write response simultaneously, duh 20:32:42 oerjan: i do :) 20:32:57 elliott: obviously you should do exactly what I want in all situations. 20:33:01 er 20:33:04 s/you/it/ 20:33:23 > foldr (+) 0 [1..5] :: Sym (Sym Int) 20:33:24 15 20:34:39 > foldr (+) 0 [1..5] :: Sym ((->) Int) 20:34:40 `(->) GHC.Types.Int' is not applied to enough type arguments 20:34:40 The first arg... 20:36:01 :t runWriter 20:36:02 forall w a. Writer w a -> (a, w) 20:40:37 -!- GreaseMonkey has joined. 20:41:50 @src callCC 20:41:50 Source not found. I feel much better now. 20:41:52 grr 20:42:14 elliott: btw chu-carroll over at goodmath/badmath is doing a series on basic category theory 20:42:29 oh cool 20:42:29 he just got to cartesian closed categories 20:42:35 why didn't you tell me earlier :P 20:42:44 i'll check it out 20:42:58 because there was just a post reminding me 20:43:10 @src callCC 20:43:10 Source not found. I feel much better now. 20:43:10 @src callCC 20:43:10 Source not found. :( 20:43:10 @src callCC 20:43:10 Source not found. Just what do you think you're doing Dave? 20:43:13 :( 20:43:23 :t callCC 20:43:24 forall a (m :: * -> *) b. (MonadCont m) => ((a -> m b) -> m a) -> m a 20:43:32 it's a method 20:44:18 @src Cont callCC 20:44:18 callCC f = Cont $ \c -> runCont (f (\a -> Cont $ \_ -> c a)) c 20:44:20 thx 20:44:48 i wonder if they'll add writer and reader as methods like they're doing with state. oh hm reader would just be asks, wouldn't it 20:44:52 :t reader 20:44:52 forall r a. (r -> a) -> Reader r a 20:44:56 :t asks 20:44:57 forall r a (m :: * -> *). (MonadReader r m) => (r -> a) -> m a 20:45:17 :t writer 20:45:18 forall a w. (a, w) -> Writer w a 20:45:28 > callCC ($ [42,43]) >> callCC ($ [99]) 20:45:29 No instance for (GHC.Show.Show (m [t])) 20:45:29 arising from a use of `M43411467... 20:45:34 > runCont (callCC ($ [42,43]) >> callCC ($ [99])) id 20:45:35 [99] 20:47:01 :t cont 20:47:02 forall a r. ((a -> r) -> r) -> Cont r a 20:47:27 hm would that even make sense as a MonadCont method 20:47:36 :t ContT 20:47:37 forall a (m :: * -> *) r. ((a -> m r) -> m r) -> ContT r m a 20:48:42 if you have a -> m r, and (a -> r) -> r, can you construct an m r 20:49:19 probably not 20:49:27 oerjan: with what on m? 20:49:30 MonadFix? if so, probably yes 20:49:35 Monad? no 20:49:39 How do you put breakpoints in ghci 20:49:49 For debugging purposes 20:49:56 elliott: i was assuming it should be something generalizing cont 20:50:07 oerjan: oh so MonadCont m? 20:50:29 oh, I see 20:50:33 you're asking whether cont could go in MonadCont 20:50:34 elliott: not quite 20:50:37 yeah 20:50:55 oerjan: couldn't you just fix r = m r, and then run it? 20:50:57 all of reader, writer and state could go in the respective classes (and state will/does) 20:51:06 and wire up the continuation to escape the outer continuation 20:51:13 Cont is really special though 20:51:20 like, most monad transformers commute 20:51:25 most of them can lift callback operations in the base monad 20:51:31 ContT can't do anything like that 20:51:44 in a sense because it's the most general monad possible 20:51:57 so you don't get any convenient extra laws :P 20:52:21 ContT is the most general monad possible? 20:52:23 perhaps that's sort of why... you can lift reader, writer and state because they are essentially commuting extensions 20:52:30 shachaf: well you can build any monad with Cont 20:52:36 ContT = Cont anyway. 20:52:38 http://blog.sigfpe.com/2008/12/mother-of-all-monads.html and so on 20:52:47 Yes. 20:52:52 so ContT sort of gives you the raw monad structure and doesn't let you assume anything 20:52:52 But what about generalizations of Cont? 20:52:55 WHAT DO YOU SAY TO THOSE? 20:53:01 shachaf: :'( 20:53:09 perhaps that's sort of why... you can lift reader, writer and state because they are essentially commuting extensions 20:53:15 oerjan: this is why i like the composable effects model 20:53:36 it even supports Cont 20:53:45 huh 20:53:55 http://hackage.haskell.org/packages/archive/kan-extensions/2.1/doc/html/Data-Functor-KanExtension.html 20:53:56 http://math.andrej.com/2010/09/27/programming-with-effects-ii-introducing-eff/ 20:54:01 (http://hackage.haskell.org/package/effects is a haskell impl) 20:54:07 oerjan: hmm ListT has problems too 20:54:20 I guess anything sufficiently control-flowy makes monad transformers go to hell 20:55:24 shachaf: "compose" as a type variable? Seriously? 20:55:30 -!- oerjan has set topic: The real haskell overflow channel | TODO: spam blacklist | http://codu.org/logs/_esoteric/. 20:55:41 elliott: Why not? 20:55:52 shachaf: It's so long! 20:55:58 Oh, you've been talking about Cont for a while in here. 20:56:02 * shachaf considers reading the backlog. 20:56:03 * shachaf nah 20:56:24 shachaf: It's about whether you can put cont in MonadCont. 20:57:09 I guess anything sufficiently control-flowy makes monad transformers go to hell <-- what about ErrorT 20:57:27 shachaf: You should read that post on eff if you haven't; we finally have a decent alternatiev to monad transformers. 20:57:33 oerjan: good question 20:57:41 oerjan: people always put ErrorT just above IO or Identity, I forget why 20:57:52 *alternative 20:58:01 elliott: Ugh. Added to the list of tabs. 20:58:48 shachaf: You just can't handle the SNAZZ. 20:59:31 So much snazz. 21:15:07 Gregor: Ping 21:19:57 -!- iconmaster has joined. 21:23:35 -!- azaq23 has quit (Quit: Leaving.). 21:25:16 -!- PiRSquared17 has joined. 21:27:43 elliott: Ponk 21:28:41 pink 21:28:51 yellow polka-dot 21:29:40 :t \str strList -> elem (map toLower str) $ convertToLower $ words strList 21:29:41 Not in scope: `convertToLower' 21:29:48 :t \str strList -> elem (map toLower str) $ id $ words strList 21:29:49 [Char] -> String -> Bool 21:31:15 :t any 21:31:16 forall a. (a -> Bool) -> [a] -> Bool 21:31:53 Hussel-bussel. Anyway. <-- hussuru bussuru 21:33:14 :t elem 21:33:15 forall a. (Eq a) => a -> [a] -> Bool 21:33:31 -!- cswords has joined. 21:33:40 -!- cswords has quit (Read error: Connection reset by peer). 21:34:57 the ords of csw 21:36:50 Ngevd: so how often do you eat three tonnes of jarlsberg? 21:37:55 -!- rapido has joined. 21:38:27 Gregor: Oh, right, you replied :P 21:38:34 oerjan, so /that's/ why that sounded familiar 21:38:37 Gregor: How does the log formatter know when someone leaves a channel; that requires unbounded lookback in the logs 21:40:33 for almost 2 years, i'm obsessed with uniquely represented data structures 21:41:26 rapido: hi 21:41:46 elliott: hey, it's been a while 21:41:53 indeed 21:42:02 obsessions are good 21:42:18 no? 21:42:48 no, obsessions are evil, you must dedicate your life to eradicate them all! 21:42:56 *ing 21:45:27 the only good obsession is @ 21:46:12 hmm, there was something I was thinking about earlier that I thought belonged in #esoteric 21:46:18 ^ul ((@ )S:^):^ 21:46:18 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ...too much output! 21:46:18 i must admit - i want to pick your esoteric brains 21:46:21 but I guess we'll never know 21:46:28 s/@/@ and Stack Overflow/ 21:46:41 anyone familiar with uniquely represented data structures? 21:47:06 rapido: I take it you mean structures for which syntactic equality is semantic equality? 21:47:13 future log readers will wonder why that previous fungot line exceeds the irc length limit. of course it's really just because @ is that awesome. 21:47:13 oerjan: as a veteran of the game. then i'll put a mean game of blackjack. 21:47:14 By "I take it", I mean "I am going to wildly guess". 21:47:33 oerjan: I think fungot might be conservative enough about the limits to prevent that :P 21:47:34 elliott: and just what your porkhollow's fat ass needs. 21:47:45 fungot: I love you too. 21:47:45 elliott: his birthday is in a few minutes. wow he is so cool. two more large gizmos. it was once the island 21:48:19 elliott: nah, its about unique representation (=layout in memory). But hey, who doesn't want to be unique? 21:48:40 rapido: Unique howso? "Nobody else has thought of it"? 21:49:55 example: http://www.cs.cmu.edu/~dgolovin/papers/btreap.pdf 21:50:09 ^bf ,>,[.<.>]! @ 21:50:09 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ... 21:50:11 elliott: sure, as long as the name is no longer than 3 characters 21:50:22 Mhm, the ^ul lines are longer. 21:50:26 er, 2 21:50:52 Anyway, it doesn't go full 512-hog. 21:50:54 you don't want others to know that you have been deleting the sexist remark 21:51:20 rapido: "Uniquely 21:51:20 represented data structures represent each logical state with a unique machine state. 21:51:20 Such data structures are strongly history-independent; they reveal no information 21:51:20 about the historical sequence of operations that led to the current logical state. For 21:51:20 example, a uniquely represented file-system would support the deletion of a file in 21:51:20 a way that, in a strong information-theoretic sense, provably removes all evidence 21:51:22 that the file ever existed." 21:51:27 rapido: OK, that _is_ what I said, then. 21:51:39 If syntactic equality is semantic equality, every equivalent state has a single representation. 21:51:57 Intensional equality, if you'd prefer. 21:51:58 The ^ul might go quite close, though. 21:52:48 "Intensional equality" - that's a cool definition 21:53:31 ^ul ((0123456789)S:^):^ 21:53:31 012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123 ...too much output! 21:53:48 * elliott likes such definitions too, but for reasons of mathematical elegance more than information-hiding. 21:53:51 elliott: it's hard to achieve strong history-independency 21:54:29 I don't really care about the actual bits and bytes representation so long as the constructor tree is the same... but it's the same thing from a different level of abstraction, and the only difference will be the exact values of pointers. 21:54:29 344 21:54:58 but pondering on it for two years i finally think i have a good result - but it feels hacky 21:55:05 I would think Haskell would be a good playground for creating such structures. 21:55:17 > 324/9 21:55:18 36.0 21:55:25 kallisti: Not if you care about the exact in-memory representation :P 21:55:50 rapido: The simplest way to achieve history-dependency would be to deconstruct and reconstruct the structure on every operation, of course. 21:55:51 that's implementation dependent anyway... 21:56:12 kallisti: Yes, in Haskell. 21:56:17 Circular reasoning, man,. 21:56:40 elliott: well that makes sense because circular reasoning is circular. 21:57:10 > (:[])>=>(:[])>=>(:[]) $ "hi" 21:57:11 ["hi"] 21:57:12 Actually that's begging the question, I think. In the formal sense. 21:57:30 beggining the question is circular reasoning because it begs the question though. obviously. 21:57:35 anyone familiar with cartesian trees (treaps?) 21:58:05 I am now. 21:58:25 I have *heard* the term treap! 21:58:52 they have the unique property that they have a unique representation 21:59:13 -!- Jafet has quit (Quit: Leaving.). 21:59:14 for a fixed set of (x,y) pairs 22:00:59 fixed in the sense that there is one unique cartesian tree for a set of (x,y) pairs 22:01:08 am i boring you? 22:01:31 totally. (no) 22:02:04 so it's kind of like a binary search tree except that it's also heap and it's sorted by position in the original sequence instead of by an ordering over the elements. 22:02:15 >_>? 22:02:22 -!- lax has joined. 22:02:24 :t (>+>) 22:02:25 Not in scope: `>+>' 22:02:27 `welcome lax 22:02:29 :t (>_>) 22:02:29 parse error on input `)' 22:02:34 lax: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page 22:02:53 any friend hereeeeeeee 22:02:55 im ne win thisssssssssss 22:02:58 inthis 22:03:00 yeah 22:03:02 i'm friend 22:03:05 sup 22:03:16 ohh thanksss 22:03:20 i was tryign this page 22:03:24 for hoursss 22:03:33 and finally i did it 22:03:34 * kallisti giggles gleefully. 22:03:37 thanks 22:03:39 congrats 22:03:54 so u are chatting here? 22:03:59 Yes 22:04:08 Supposedly about esoteric programming languages 22:04:18 elliottttttttttttt 22:04:22 dotn leave meeeeeeee 22:04:26 ais523: [[User:KuzyFueesi‎]] 22:04:29 lax: hi 22:04:37 ahhh i tough u gone 22:04:41 i never leave 22:04:43 i'm actually a robot 22:04:48 dont go 22:04:58 ive just have some minutes here 22:05:05 nice to meet u here 22:05:08 hello 22:05:15 im here 22:05:18 me too 22:05:24 I'm not 22:05:26 I'm here but not there. 22:05:29 whch is also here 22:05:30 hi. 22:05:43 Hang on, one important question, lax. Do you live in a place called Hexham? 22:05:57 no 22:06:03 why 22:06:08 Two of us here do 22:06:17 lax: helsinki then 22:06:30 i cant get what she says 22:06:38 lax: anywhere in Scandinavia perhaps? 22:06:46 is Ngevd female or am i 22:06:52 i'm not even sure myself any more :( 22:07:06 noooo 22:07:13 :'( 22:07:15 elliott: Everyone's always from either Hexinki or Helsham. 22:07:31 im from peru 22:07:35 elliott: what about ternary logic? you don't have to be female or male 22:07:38 south america 22:07:40 peru is right next to finland i think 22:07:44 lol 22:07:49 rapido: I didn't imply that :P 22:07:52 noooo 22:08:00 perussia 22:08:05 elliott: mooz married someone from Peru, so in that sense at least. 22:08:11 fizzie: Was it... lax? 22:08:24 my country 22:08:27 elliott: Not as far as I know, but I don't know much. 22:08:33 Who's mooz? 22:08:42 lax: are you a fan of Immortal Technique? :> 22:08:47 Ngevd: Just this one guy, you know? 22:08:51 elliot? 22:08:54 lax: hi 22:08:56 i'm still here 22:09:02 don't worry, i'll keep talking at least every 30 seconds so you know i'm here 22:09:05 who is mooz 22:09:20 lax :Just this one guy, you know? 22:09:34 im want to talk to eliott 22:09:36 not u 22:09:43 :( 22:09:45 I am sad 22:09:54 lax: good choice, Ngevd sucks 22:10:01 "Because a Cartesian tree is a binary tree, it is natural to use it as a binary search tree for an ordered sequence of values. " wow I'm genius 22:10:09 lax: not as bad as kallisti tho 22:10:25 well i have to go eliott 22:10:29 nice to meet u here 22:10:34 thanks for u time 22:10:36 `words 50 22:10:39 sometime i wonder if elliott is male, female and bimale - typing really fast at separate keyboards 22:10:40 u seem to be nice 22:10:44 cont attambennisco kra attrepla alopath ventanc mahata publi polar casecr suffer lough poplicat dinge lat piry mire ant koo elved poblynwan langorzah jump bad same aurvadher grimen bie mile amuant spansum woolgtenie portung suff pula colli pat pulsifer pohy prot deschl nic hesitio auerly slro ttr invoke idicla hot rage 22:10:49 Ngevd: http://sbp.so/qsort (Also who on earth did that archive-page? Someone here?) 22:11:04 rapido: as has been repeatedly established, i'm an amorphous, non-corporeal blob that lives on the internet 22:11:09 God bless u aliott 22:11:13 good bye lax 22:11:15 come again sometime! 22:11:15 take care 22:11:20 god bless aliott america 22:11:26 i dotn know how to use that chatt 22:11:31 me neither 22:11:32 lol 22:11:35 i just type words and they come out on the screen 22:11:37 but i have email 22:11:43 oh good, what's your email 22:11:55 nellcita@hotmail.com 22:12:05 have fun!! 22:12:07 thats the mail i use to chatt or facebook 22:12:09 ok 22:12:13 same there 22:12:34 do not - i repeat - do not reveal your email! you will be spammed 22:12:37 fizzie, so that's mooz 22:13:02 ohhhh eliott 22:13:05 u wotn do that 22:13:08 rapido: you'll get spammed even if you don't :P 22:13:10 lax: don't worry 22:13:13 i'll protect you from the spambots 22:13:17 it is... my duty 22:13:19 -!- derdon has joined. 22:13:20 ohh thanks 22:13:24 loves from peru 22:13:29 and wellcome 22:13:44 @tell monqy hi 22:13:44 Consider it noted. 22:13:46 Ngevd: Indeed. He even was on-channel in 2003 or thereabouts. 22:13:56 fizzie, Before my time then. 22:14:03 -!- lax has left. 22:14:06 elliott: You're such a... what's that term... "playa"? 22:14:06 i have no idea what just happened 22:14:11 you protect me from spambots? where do i sign? 22:14:15 2003, I was... using computers to write as many roman numerals as I could 22:14:26 rapido: sorry, by invite only 22:14:58 fizzie: http://upload.wikimedia.org/wikipedia/commons/2/26/Kluft-photo-Black-Rock-Desert-Aug-2005-Img_5081.jpg <-- me 22:15:02 elliott: I was loling so hard 22:15:07 through that conversation 22:15:22 Ngevd: clearly a job for INTERCAL 22:17:58 fizzie: How does that syntax-highlighting work, anyway? 22:18:04 Oh, it's manual. 22:18:04 http://en.wikipedia.org/wiki/Mu_(lost_continent) 22:18:07 huh. cool 22:18:37 GenrePseudoscience 22:20:38 manual syntax highlighting: *do* it 22:20:54 or do *it* 22:21:02 or just do it 22:21:39 -!- Ngevd has quit (Quit: Taneb cancelled playing Dwarf Fortress: Needs sleep). 22:21:48 elliott: http://en.wikipedia.org/wiki/User:Ikluft is you? 22:21:55 do it 22:22:01 PiRSquared17: wut 22:22:04 PiRSquared17: no, why would it be? 22:22:13 http://upload.wikimedia.org/wikipedia/commons/2/26/Kluft-photo-Black-Rock-Desert-Aug-2005-Img_5081.jpg <-- me 22:22:18 ... 22:22:18 oh 22:22:21 elliott: You're such a... what's that term... "playa"? 22:22:23 it's a picture of a playa 22:22:28 lol 22:22:35 PiRSquared17: finnmark finnmark finnmark finnmark finnmark finnmark 22:22:41 FINNMARK 22:23:00 finnmark 22:23:05 Gregor: :( 22:23:44 ais523: wiki spam influx 22:24:51 oh dear, i think my lightbulb is about to break 22:25:14 -!- rapido has quit (Quit: rapido). 22:25:16 are there enough elliotts to change it? 22:26:10 I need @ 22:27:14 elliott: wiki's being slow loading 22:31:49 OK, and deleted 22:32:04 incidentally, people who aren't using a monospace font, how does your client kern uTu? 22:32:20 it looks pretty weird on mine, the second u overlaps the bottom of the T, bu the first u doesn't 22:34:04 same here, but I'm pretty sure that's correct 22:34:16 or at least, T after u is what's incorrect :) 22:34:54 elliott: hi I'm reading "On computable numbers with an application to the entscheidungsproblem" by Alan Turing. 22:34:54 arguably, that asymmetrical kerning is appropriate for camelCase 22:34:58 * kallisti getting his learn on. 22:37:30 kallisti: Why would you read about computable numbers? 22:37:37 Practically all numbers are uncomputable. 22:38:11 shachaf: so he can entscheid properly, duh 22:39:28 `addquote There.... is a box of Gardasil next to the butter in my fridge. At least my sandwich will be immune to cervical cancer *and* genital warts, I suppose. 22:39:31 795) There.... is a box of Gardasil next to the butter in my fridge. At least my sandwich will be immune to cervical cancer *and* genital warts, I suppose. 22:40:13 OK, that is a good quote 22:40:15 `quote 22:40:17 `quote 22:40:18 `quote 22:40:20 `quote 22:40:21 `quote 22:40:27 356) Grr. Why does it exist? Why can't I kill it? 22:40:29 569) elliott__: my fnord into normal life was a painful and difficult process. [...] 22:40:32 413) so about jacuzzis, do they usually have a way to make it it not heat but freeze the water? 22:40:54 413 is the best of those three 22:40:57 heh result 413 22:40:57 iconmaster: You have 1 new message. '/msg lambdabot @messages' to read it. 22:40:57 but the other two are decent 22:41:05 still waiting on two more 22:41:21 747) Gregor is actually a rare species of mangoat the fashion sense comes from the mango part 22:41:21 45) It looks like my hairs are too fat. Can you help me split them? 22:41:34 elliott: 45? 22:41:40 hey that's a classic! 22:41:54 gives such a nostalgic feeling 22:41:57 is it a /good/ classic? 22:41:58 indeed 22:42:04 747 is fairly lame 22:42:15 * oerjan swats elliott -----### 22:42:20 i knew that would happen 22:42:47 elliott the cassandra 22:42:48 I think I saw the mangoat quote live 22:42:53 shachaf: sorry, as a COMPUTER science major I'm only interesting in the COMPUTERable ones. 22:43:03 elliott: indeed, but it's one of oerjan's better puns 22:43:05 even though that's "practically none" of them. 22:43:06 I didn't see it coming 22:43:13 `delquote 747 22:43:17 ​*poof* Gregor is actually a rare species of mangoat the fashion sense comes from the mango part 22:43:18 it's just not as funny as the others sory 22:43:29 `quote 22:43:29 `quote 22:43:30 `quote 22:43:30 `quote 22:43:30 WAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 22:43:31 `quote 22:43:40 309) oerjan: are you in an aware state when the only hammer you have is for variable assignation and blocks 22:43:44 641) fizzie: it doesn't *use* raw cgi. to my deep fnord i'm only fnord of the job description. it's badly fnord also. 22:44:11 so i just this second realised what "fungot" means 22:44:11 elliott: in a good way though, so it's the left-right eye. you say yeah, but hang it on your wall. literally. 22:44:27 elliott: wait, for the first time? 22:44:34 yes, unless i knew and then forgot 22:44:50 37) kaelis: yes kaelis, but however will get the horses to wear knickers? 22:44:50 77) It's not incest if you're third cousins! 22:44:51 133) what's the data of? [...] Locations in a now deceased game called Mutation I have no problems with you being interested in online games but the necrophilia is disturbing 22:44:53 elliott: what does it mean? 22:45:14 olsner: funge bot 22:45:21 oh, right, I knew that 22:45:25 `delquote 37 22:45:31 ​*poof* kaelis: yes kaelis, but however will get the horses to wear knickers? 22:45:32 -!- zzo38 has joined. 22:45:32 hm apparently there are people named fungot 22:45:32 oerjan: the stuff scattered about your room. you of course it was a nasty pair, but he had already been a mass grave. the grisly abomination for your birthday. a number of interests. 22:45:46 "Funge-98 Bot" is even the realname of eir Twitter account. 22:46:01 fizzie: And the name of the git repo interface thing, IIRC. I just never... made the connection. 22:46:18 elliott: oh, I'd known it was funge bot all along, and your sudden realisation made me doubt that 22:46:26 do you know the etymology behind thutubot's name, btw? 22:46:40 -!- oklopol has joined. 22:46:42 elliott: It's because e's such a FUN guy it crowds out then FUNGy part. 22:46:58 s/then/the/ 22:47:07 ais523: let me think... 22:47:10 thutu + bot? 22:47:13 yep 22:47:14 * olsner follows fungot on twitter 22:47:14 olsner: that is a winner's attitude, and there is no particularly good human translation for this concept. a concept usually denoted by a single, linear concept. a concept usually denoted by a single, linear concept. a concept usually denoted by a single, linear concept. a concept usually denoted by a single, linear concept. a concept usually denoted by a single, linear concept. a concept usually denoted by a single, linear con 22:47:16 gasp!!! 22:47:27 ?messages 22:47:28 itidus21 said 13d 16h 2m 2s ago: welcome back 22:47:28 itidus21 said 13d 16h 1m 10s ago: it was funny for me at the time since you were joining and leaving at a high rate. but the joke has expired 22:47:28 oerjan said 10d 13h 1m 54s ago: btw, fmap' shows that T is also a contravariant functor in its first argument. 22:47:35 ?messages 22:47:36 You don't have any new messages. 22:47:44 ?messages 22:47:44 You don't have any new messages. 22:47:45 I need to restart that Twitter script one day. 22:48:07 oerjan: haskell quiz of the day: can any data type be given both a valid Functor and a valid Contrafunctor instance? 22:48:18 zzo38: lambdabot is supposed to only show them once, but there's some weird resetting going on occasionally... 22:48:24 this is one of those quizzes where I don't know the answer, and want to find out. 22:48:38 its last tweet was twat in May, apparently 22:48:39 elliott: data T a = T hth 22:48:51 indeed fizzie needs to restart the script 22:49:06 or even data T a b = T a 22:49:10 I could try if it has bitrotted away right now. 22:50:02 oerjan: hmm... i think that might violate the laws when _|_ is involved 22:50:08 at least, data T a = T isn't a monad if you count bottoms 22:51:37 It's possible Twitter's authentication API changed and broke it, and that's why I haven't restarted. 22:52:15 fizzie: They're OAuth-only these days, I think. 22:52:18 elliott: who said anything about monad 22:52:27 fmap = id, simply 22:52:39 ok that doesn't quite type 22:52:49 fmap (T x) = T x 22:52:58 >_< 22:53:02 fmap _ (T x) = T x 22:53:22 oerjan: well monads are functors, I was just giving an analogy... 22:53:31 also, fmap = const unsafeCeoerce :P 22:53:33 *Coerce 22:53:42 yeah that also works 22:54:15 fsvo work 22:54:30 but to have a Functor, you just need that all appearances of the last parameter are in covariant, nonstrict positions afaict 22:54:40 and if there are none, it's trivial 22:55:04 and for Contrafunctor, probably the same but with contravariant 22:55:19 oerjan: ok one that actually mentions a /and/ b on the RHS :P 22:55:25 and no cheating by outsourcing to your existing T! 22:55:29 funny guy 22:55:33 well then i don't know 22:56:02 join the club! (the club is mine) 22:56:27 * tswett joins elliott's club. 22:57:21 Is there a stipend associated with this club? 22:57:31 i doubt there are any with simple ADTs, though 22:58:47 tswett: 1,000,000 pounds per day or however much you can afford 22:58:58 oerjan: i don't see how gadts would help 22:59:09 I get paid however much I can afford? 22:59:49 elliott: well i imagined if there is some way to hide the type so it isn't exposed, analogous to show . read ... 23:00:12 oh, fungot twat again! https://twitter.com/#!/fungot/status/154697756248776705 23:00:12 olsner: that is a winner's attitude, and there is no particularly good human translation for this concept. a concept usually denoted by a single, linear concept. a concept usually denoted by a single, linear concept. a concept usually denoted by a single, linear concept. a concept usually denoted by a single, linear concept. a concept usually denoted by a single, linear concept. a concept usually denoted by a single, linear con 23:00:29 huh, that's the exact same thing it said last time 23:00:33 fungot 23:00:33 olsner: you really wish your side. 23:00:46 fizzie: Will it tweet with its fungot dataset too? :p 23:00:46 elliott: the one who got you killed him for it? 23:00:53 I... don't think there's any practical limit to the amount of money I can afford to be paid. 23:01:28 I think the way it works is that if you have lots of money you get lots of money, if you have no money you get no money 23:01:45 I see. 23:01:49 tswett: Oh, I was thinking of tithes. 23:01:56 Shame, too. I can afford to be paid any positive stipend. 23:01:59 like data T a b c = T (a -> c) (c -> b) but where you cannot actually get at the pieces 23:01:59 I... er... congratulations, you have unlimited money! 23:02:20 Excellent. 23:02:28 oerjan: which pieces? c or (a,b)? 23:02:36 elliott: the fields 23:02:43 c 23:02:52 oerjan: data T a b where T :: (a -> c) -> (c -> b) -> T a b? 23:02:52 -!- iconmaster has quit (Ping timeout: 248 seconds). 23:02:54 elliott: Not yet, but maybe soon. 23:02:58 Hoy, it works. 23:03:00 $ ./twungot-poster.py fungot.json 23:03:00 [2012-01-05 00:56:34] Tweeted: About NetHack: of this town. in one hand he held his court. these chosen ones will defend the land, is described in snorri's _edda_ as... (fungot) 23:03:00 fizzie: so, you give up, jade is my slime tube and this is a new game. there is a heavy amount of time i will say you are only here to deliver a message and then i'll put his shit up? 23:03:01 fizzie: you will be taking that crowbar though rare, is quite a troubling development primed for the digestive ruination that's about to take is the ultimate riddle. 23:03:14 elliott: no, the c _should_ still be the type parameter 23:03:20 That's a good moment to sleep. -> 23:03:29 oerjan: you want it existential but exposed? 23:03:43 fizzie: oh, fungot twat again! https://twitter.com/#!/fungot/status/154697756248776705 23:03:44 elliott: to be honest, it doesn't exist in a state of almost perpetual stalemate, and expands to a larger board and more exotic collection of what he refers to as a thermal hull, instead of some kind of clock pun. no, dammit, will this breakfast injure his shrill, bearded, scraggly old men in space. jade's radioactive, omnipotent, space-warping dog named... 23:03:56 elliott: i have no idea if it makes sense in any way 23:04:17 oerjan: well what's the eliminator? 23:04:36 How long as fungot been set to Homestuck? 23:04:37 tswett: your modus grabs, who wants it back. it keeps happening. you seem to have a knack for always guessing right on the first try! r3l4t1v3 to my pr3s3nt to r3m4rk of r34ssur4nc3! 23:04:37 `addquote elliott: to be honest, it doesn't exist in a state of almost perpetual stalemate, and expands to a larger board and more exotic collection of what he refers to as a thermal hull, instead of some kind of clock pun. no, dammit, will this breakfast injure his shrill, bearded, scraggly old men in space. jade's radioactive, omnipotent, space-warping dog named... 23:04:37 elliott: what, the last one. wait no, that just made you disappear" and stuff. this is just the sort of human profanity? 23:04:40 794) elliott: to be honest, it doesn't exist in a state of almost perpetual stalemate, and expands to a larger board and more exotic collection of what he refers to as a thermal hull, instead of some kind of clock pun. no, dammit, will this breakfast injure his shrill, bearded, scraggly old men in space. jade's radioactive, omnipotent, space-warping dog named... 23:05:19 fungot: DO YOU P4Y 4NY 4TT3NT1ON TO TH3 STUFF P3OPL3 S4Y TO YOU? 23:05:20 tswett: for a while it was frustrating. edification. perfection. those are your favorite books of all time, wise, a distinction in men that would forever. how many metalayers removed this story can we just cut it in half, splitting it into two pieces in the two large screens. 23:05:35 NOP3, 1 GU3SS NOT. >:| 23:11:14 -!- NihilistDandy has quit (Read error: Connection reset by peer). 23:11:28 -!- NihilistDandy has joined. 23:11:39 -!- NihilistDandy has quit (Client Quit). 23:16:33 ?messages 23:16:33 You don't have any new messages. 23:17:34 -!- monqy has joined. 23:17:44 messages 23:19:12 kallisti: http://stackoverflow.com/questions/8735132/can-a-php-file-ever-be-read-externally 23:19:38 I found some document of a chess variant, there are four players and the board rotates after every move pair. You have to use divination to determine the direction of rotation. Whenever there is a pawn promotion, you have to bow and make secret hand signs and use cards to determine what you promote to. In case there are two candidates for a winner at the end of the game, use divination to determine which is the winner. The winner can have the k 23:19:51 -!- DCliche has joined. 23:20:18 "The winner can have the k" 23:20:25 ing's ice cream. 23:21:32 There are many methods of divination listed, including: chiromancy, astrology, dowsing, using knucklebones marked with letters of the alphabet, and divination by interpreting the movements of a key suspended by a thread from the nail of the third finger on a young virgin's hand while one of the Psalms was recited. 23:21:57 -!- NihilistDandy has joined. 23:22:20 (Tea leaves is also one of the choices, in case you like to drink tea a lot while playing chess.) 23:22:50 oerjan: hm i have a sort of vague idea of how you could make that nest stuff polymorphic 23:22:52 -!- Klisz has quit (Disconnected by services). 23:22:54 -!- DCliche has changed nick to Klisz. 23:23:16 oerjan: the idea is that inEndo would apply an infinite /stream/ of appEndo 23:23:22 and each one would be used for one argument 23:23:28 so the types never get unified 23:23:37 ofc the problem there is how to get that infinite heterogeneous stream expressed... 23:25:37 ?messages 23:25:37 You don't have any new messages. 23:29:22 elliott: "Not opening the PHP file with XD 23:31:18 elliott: you know that haskell functions with infinite length parameter lists are useless, right? :P 23:31:45 oerjan: um yes... but consider if you could express an infinite stream on the type level 23:32:11 oerjan: the point is that (nest.nest.nest) needs /three/ unwrapprs 23:32:12 unwrappers 23:32:19 so what inEndo has to be able to do is to produce an arbitrary number of appEndos 23:32:34 nest is a bad name but I can't think of a better name 23:34:23 i think you are going to need a class for that 23:34:52 because you cannot have an infinite heterogeneous type 23:35:23 oerjan: no shit, i am speaking in figurative terms to express what inEndo /essentially/ needs to do to get it to work :P 23:35:34 not proposing that if I just define an infinite stream type it'll work 23:37:55 yeah, i just remember you started this earlier with saying you didn't want to use classes 23:39:42 oerjan: well rather i didn't want to use a typeclass to define how to unwrap/wrap a type 23:39:45 that's all 23:39:51 i.e. I don't want to tie (Endo,appEndo) to the Endo type itself 23:39:54 an internal typeclass is fine 23:41:05 oerjan: oh cool, "inEndo id" = Endo 23:41:19 inEndo (flip const) = appEndo 23:41:56 -!- nooga has quit (Ping timeout: 240 seconds). 23:42:38 > let nest (o,os) = result (k os) . argument o then? 23:42:39 : parse error on input `then' 23:42:56 :t let nest (o,os) = result (k os) . argument o in nest 23:42:57 Couldn't match expected type `t -> a -> b' 23:42:57 against inferred type `Expr' 23:42:57 In the first argument of `result', namely `(k os)' 23:43:03 bah 23:43:19 inEndo :: ((forall a. t -> (a -> a) -> Endo a) -> (forall a. Endo a -> a -> a) -> r) -> r 23:43:21 darn this almost works :P 23:43:34 oerjan: well i don't see how you could define an inEndo for that... 23:43:44 oh hmm 23:43:45 :t let nest k (o,os) = result (k os) . argument o in nest 23:43:46 forall t a b (f :: * -> *) a1. (Functor f) => (t -> a -> b) -> (f a1, t) -> (a1 -> a) -> f b 23:43:48 you'd need a typeclass for inEndo itself 23:43:54 that kind of works I guess :/ 23:44:02 elliott: yes, that was what i thought 23:45:54 inEndo seems like the right place to have one if you must 23:46:51 > map return "hi" 23:46:52 No instance for (GHC.Show.Show (m GHC.Types.Char)) 23:46:52 arising from a use of... 23:47:04 > map return "hi" :: [String] 23:47:04 ["h","i"] 23:47:17 oerjan: yeah :/ 23:47:26 oerjan: hm wait 23:47:39 never mind 23:48:06 * Phantom_Hoover → sleep 23:48:09 -!- Phantom_Hoover has quit (Quit: Leaving). 23:49:36 ACTOIN 23:49:43 lol 23:50:12 actoin 23:50:14 CHUCK_NORRIS 23:50:34 > let pal alphabet = []:map (:[]) alphabet >- (\c -> map (\e -> e : c ++ [e]) alphabet) in pal "abc" --oopse 23:50:35 Not in scope: `>-' 23:50:36 unknown CTCP: CHUCK_NORRIS?! 23:50:47 > let pal alphabet = []:map (:[]) alphabet >>- (\c -> map (\e -> e : c ++ [e]) alphabet) in pal "abc" --oopse 23:50:49 ["","aaa","aba","bab","aca","cac","bbb","bcb","cbc","ccc"] 23:50:57 hm nope 23:52:07 > let pal alphabet = join . iterate (>>- (\c -> map (\e -> e : c ++ [e]) alphabet) in pal "abc") $ [] :map (:[]) alphabet 23:52:08 : parse error on input `in' 23:52:23 > let pal alphabet = join . iterate (>>- (\c -> map (\e -> e : c ++ [e]) alphabet) $ [] :map (:[]) alphabet in pal "abc" 23:52:24 : parse error on input `in' 23:52:47 > let pal alphabet = join . iterate (>>- (\c -> map (\e -> e : c ++ [e]) alphabet)) $ [] :map (:[]) alphabet in pal "abc" 23:52:48 ["","a","b","c","aa","aaa","bb","aba","cc","bab","aca","cac","bbb","bcb","c... 23:53:09 > let pal alphabet = join . iterate (>>= (\c -> map (\e -> e : c ++ [e]) alphabet)) $ [] :map (:[]) alphabet in pal "abc" 23:53:11 ["","a","b","c","aa","bb","cc","aaa","bab","cac","aba","bbb","cbc","aca","b... 23:53:17 yeah don't need >>- 23:53:29 for finite alphabets maybe :) 23:53:34 ah, true. 23:53:35 Do you think it should be legal for a man to marry his cat, so that the cat gets health benefits and the man gets a tax deduction? 23:53:48 hmm, if I were zzo38 I'd have said that without the attribution 23:54:17 anyway that code looks kind of ugly to me. 23:56:24 > sequence . return $ [1,2,3] 23:56:25 [[1],[2],[3]]