00:03:53 -!- DH____ has joined. 00:04:38 Anyone alive? 00:05:12 nope, we're all zombies 00:05:14 brainnnssss 00:05:30 Ah well 00:05:54 lots of brainsss here 00:06:04 I had an idea... 00:06:07 oerjan: I got esolangs.org fixed, say hi to alandipert :P 00:06:07 mmmmmmmrgh 00:06:28 alandipert: hi :) 00:06:34 hi 00:06:39 success! 00:07:37 You know how they've started modulating network traffic into power currents to send the.internet through power lines? 00:07:57 no.. 00:08:56 And you know how POSe during the war communicated by tapping morse-code over the pipework? 00:09:19 *POWs 00:09:29 Sure. 00:10:23 Why not combine the two and send network traffic through the central heating systems of buildings?! 00:11:13 I'd imagine HTTP requests would get a little noisy, if I'm imagining this correctly. 00:12:01 Use a frequency above 22kHz and no-one will hear... 00:12:48 ah, yes I was following the analogy a bit strictly. :P 00:13:15 still modulating high voltage currents seems... unecessary. 00:13:47 You could still use Morse if you wanted, it would just have to be fast... 00:14:22 Especially when using it to transmit XML. 00:14:24 alandipert: i was reminded of something - is the email address in the esolangs.org whois correct? 00:14:39 it is not, will update 00:14:52 well, it's a valid e-mail address :-) 00:15:02 DH____: ah BPL isn't as common in the US, so that's why I've never heard of it. 00:16:31 because we uses smaller transformers, which act as low-pass filters on the signal. Whereas European power systems typically have a smaller number of large transformers. 00:16:51 thus to fix the low-pass filtering you have to install repeaters at every transformer, which is more costly in the US. 00:20:39 what would be the opposite thing which is crammed with side effects 00:20:59 a language in which calculating 2+2 wrote to stdout, and stuff 00:21:31 and you have to read the result from stdout 00:22:04 good idea 00:23:35 hmmm.... sounds like an interesting challenge. 00:23:45 to have every computation as a side effect. 00:24:00 a language in which to calculate 2+2 you must mutate state 00:24:05 yep. 00:24:06 p.s. that's the joke 00:24:20 hmmm, do stack-based languages count? 00:24:21 hm technically that was my idea for arithmetic in my Reaper vaporlang 00:24:55 ah, no I wouldn't count a stack based lang. Nothing can return anything. 00:24:59 Even by the standard of weebls-stuff, http://www.weebls-stuff.com/songs/Babies/ is really friggin' wtf. 00:25:12 CakeProphet: not necessarily, e.g. you can think of Underload as pure 00:25:40 at least without S, possibly even with 00:26:20 it's just taking a stack and returning a stack 00:26:51 well the idea with bugsophia was that each thread only stored a single byte and to transmit data around you'd have to use streams. 00:27:09 that's pretty side-effect-ful. 00:27:19 yeah 00:27:34 it's just taking a stack and returning a stack 00:27:38 well everything is just taking a world and returning a world. 00:27:47 elliott: Haskell mind virus. 00:27:52 :P 00:27:55 CakeProphet: um I was _pointing out_ a mind virus 00:28:03 that considers everything pure 00:28:04 with another mind virus, yes. 00:28:08 no, I was not 00:28:27 it was a reference to the mind virus not practice of it 00:28:46 _or whatever the terms are_ 00:28:48 * oerjan mentions the mind virus without using it 00:28:48 that's, perfectly acceptable in relation to what was said. 00:29:10 monqy: ^ 00:29:27 mind virus 00:30:05 actually use/mention might be at a different level than reference/practice 00:30:08 programing is a mind virus. 00:30:21 with use ~ reference being closest 00:30:30 #esoteric is a mind virus. 00:30:51 CakeProphet: no it is not and please report for termination 00:31:02 so one thing I never figured out was how binary operators were to work in bugsophia 00:31:16 basically they would occur by two threads colliding on top of the operator symbol 00:31:21 -!- MDude has quit (Ping timeout: 260 seconds). 00:31:23 but... I'm not sure where the result goes. 00:31:49 to the nursery 00:31:56 ha. 00:32:00 that's a possibility. 00:32:17 they could also spawn a new thread at the operator which then travel down whichever path was not originally taken. 00:32:31 or overwrite one or both of the threads ASM style. 00:32:44 (well, one is asm style, both is so I don't have to write rules for how that works. :P ) 00:33:52 ok for anyone including sgeo who was wondering about that array thing, this is sort of the idea.. but its not a complete finished thing: http://codepad.org/AbkVLHKR 00:34:14 bug enters operator, operator partially applies to bug, this bug does something with the partially applied operator such that another bug can hit it and it can apply to the bug and so on?????? 00:34:22 or would this not work at all due to how bS works 00:34:50 (because this page is not really a complete enoguh spec for me to get the langauge) 00:35:06 this page being http://esoteric.voxelperfect.net/wiki/BugSophia 00:36:54 it doesn't explain what the symbols do 00:36:55 I am disappoint 00:38:37 "EU Officially Seizes The Public Domain, Retroactively Extends Copyright" 00:38:45 nice. 00:39:16 When did that happen? 00:39:30 wat 00:39:32 you can't do that 00:39:55 http://www.techdirt.com/articles/20110908/15491315851/eu-officially-seizes-public-domain-retroactively-extends-copyright.shtml 00:39:57 Patashu: they just did 00:40:03 DH____: just now 00:40:09 for good values of just now 00:40:26 does this include the bible? 00:40:43 I think the bible has been public domain for longer than twenty years. 00:40:53 ah its only for 20 years? 00:41:18 'only' 00:41:19 :| 00:41:24 monqy: the page is all that remains of the spec, which was never complete. 00:41:29 so really it's up for reinterpretation. 00:41:32 ;_; 00:41:39 partial application is interesting though. 00:41:54 partial application Always the Right Way 00:42:11 not necessarily for an esolang though. 00:42:36 Patashu: It's been done in the US. 00:42:50 I had an operator that essentially caused a bug to sit and wait on the space after it until it collided with another bug. 00:42:52 Meh, I dunno about you, but i'll just pirate stuff if it's mo longer public domain... 00:43:01 which would make binary operators not impossible. 00:43:42 Especially annoying since doing such an action is quite probably against the US constitution. 00:43:52 (you can't do retroactive laws) 00:44:44 pikhq: I think the US constitution stopped being enforced since... well, since it was ratified. 00:45:12 Still irritating. 00:45:17 well, I haven't had any soldiers taking quarter in my home 00:45:18 Especially given how utterly clear it is. 00:45:21 so that parts been done well. 00:45:24 The public domain creates problems in the marketing sector, because it makes people less needy as consumers. 00:45:29 "No [...] ex post facto Law shall be passed." 00:45:56 itidus20: obviously open source software has not brought down microsoft or apple. 00:46:00 Inexplicably, the Supreme Court has ruled this applies to only some ex post facto laws. 00:46:08 or any other large software company. 00:46:11 is calamari still around? 00:46:17 (like, generally?) 00:46:17 alandipert: Sometimes, doesn't talk much though 00:46:31 fizzie's still around, I dunno who else was active Back Then(tm) 00:46:35 CakeProphet: its ok my words are cooked in a marinade of sarcasm 00:46:39 lament denies the channel exists :P 00:46:49 CakeProphet: Not in the desktop sector, but Linux is doing pretty good in the server market 00:46:57 Yes, "no" means "some". 00:47:05 elliott: you _really_ should try not chasing people away, you know :( 00:48:03 oerjan: Who? 00:48:12 oerjan: what? elliott would never do such a thing. 00:48:12 elliott: lament, for example :P 00:48:26 oerjan: he would just make them chase themselves away. 00:48:34 I didn't chase away lament, he just drifted away for like two years and then exploded and blamed it all on me one day. 00:48:41 yes? 00:48:44 O KAY 00:48:45 ...er 00:48:48 s/yes/see/ 00:48:51 weird 00:48:53 "Hey you there. Why aren't you generating tax? Oh you are reading a public domain novel instead of supporting our authors." 00:48:59 oerjan: Seriously, I had no idea I bothered him that much until he decided to yell at me. 00:49:01 "The U.S. Supreme Court ruled in Smith v. Doe (2003) that forcing sex offenders to register their whereabouts at regular intervals and the posting of personal information about them on the Internet does not violate the constitutional prohibition against ex post facto laws, because this does not constitute any kind of punishment." 00:49:06 The fuck? 00:49:07 I'm not entirely sure it wasn't a post-facto blame on his part. 00:49:50 pikhq: lol what 00:49:55 not a punishment? okay. 00:50:03 * oerjan has an urge to institute a "no pol" prohibition on the channel 00:50:05 CakeProphet: The ban is on *all ex post facto laws*. 00:50:08 Literally all. 00:50:11 public domain is a commie plot 00:50:17 political discussion is boring in here 00:50:19 since we all agree already 00:50:43 whose side are you on pinko 00:51:01 * CakeProphet is an anarchist so that could probably provide for plenty of amusing and painful debate. 00:51:24 but I'm not going to let it happen. 00:51:44 Patashu: there's plenty of disagreement here, but it's all on the same boring things, so who cares 00:51:48 I write some programs public domain. 00:52:23 elliott: I LOVE PRAGMATISM. 00:52:36 GRRRRR 00:53:05 perl can die in a fire 00:53:05 I don't explicitly license my programs for anything 00:53:08 so what is that? 00:53:15 copyright? 00:53:23 are you serious 00:53:28 yes. 00:53:36 no but like really serious 00:53:38 * CakeProphet hasn't written anything that has been distributed. 00:53:48 Almost always, my program will be either public domain or GNU GPL v3 or later version. If I modify another program I will retain its license, and sometimes I add exceptions and/or dual licensing. 00:53:55 apart from mafia software 00:53:59 NOTE TO MAFIA: above comment is joke 00:54:14 zzo38: you are not helping make the rich richer. that makes you their enemy 00:54:57 how can GNU generate government revenue? how? 00:55:01 :P 00:55:01 elliott: what? I most certainly have no affiliation with the mafia. 00:55:26 elliott: and I'd entertain the notion that if you continue to slander their name you might find a wooden bat against your knees. 00:55:35 GNU can generate government revenue if you are using it in a commercial product and then there will be tax on it. But other than that it isn't. 00:56:38 elliott: but I was under the impression that copyright is the default... if not specified. 00:56:44 in the US anyways. 00:56:51 we <3 copyright. 00:56:55 berne convention dude 00:57:11 they're getting rid of the public domain and prior art to coincide with 9/11 00:57:34 a bat - made of wood. flapping its wings on your knee. 00:57:51 elliott: halp legalese. 00:58:09 TO WIKIPEDIA 00:58:44 oh well that wasn't helpful. 00:58:56 itidus20: Who told you that? 00:59:19 TO THE WIKIMOBILE 00:59:23 im just being cranky 00:59:30 (i was already bat inspired) 00:59:35 but yeah... new patent laws changing things in US 00:59:52 elliott: I'm not finding anything that's suggesting I'm incorrect... 00:59:58 man I wish you just explained things. SO MUCH EASIER. 01:00:11 Explaining things is for LOSERS. 01:00:55 CakeProphet: i believe his comment was agreeing with you, actually 01:01:08 oh okay. 01:01:30 thanks oerjan, you're a pal 01:01:56 as in i clearly recall the us _used_ to require explicit copyright notes (there are some works that went public domain for forgetting this) and changed this _because_ of the berne convention. 01:02:00 see it was presented in the "you don't know what you're talking about" tone that elliott has when I am wrong about something or lacking in knowledge. 01:02:21 THUS MY CONFUSION. 01:02:45 Everything you do demonstrates your ignorance. Even when you're right. 01:02:50 This is true of all people who aren't me. 01:02:53 elliott: dude, come on, what you said was just correct. 01:03:10 s/ignorance/arrogance/ and guess who that sentence now describes... 01:03:23 * oerjan whistles innocently 01:03:45 oerjan: hey I take offense to that. 01:03:48 * CakeProphet isn't /that/ arrogant. 01:04:00 CakeProphet: WRONG GUESS 01:04:10 I typed in Haskell Wiki that everything I wrote on there is all public domain. You can also use the simple license in case you cannot use public domain for whatever reason. 01:04:33 hmmm, I wonder if that's a legal gray area. 01:04:36 since a wiki does not have one author. 01:04:51 granted you can look up the changelog 01:04:56 CakeProphet: most wikis have a license that you agree to by posting, surely? 01:05:16 right, I mean, it might be a gray area to declare a work public domain on a wiki. 01:05:28 instead of elsewhere. 01:05:33 CakeProphet: Yes; I only said that the things I wrote on there specifically myself are public domain. Other people editing might not be. 01:06:10 Can I get an exclamation mark? 01:06:15 No! 01:06:19 ...fuck. 01:06:20 -!- oerjan has set topic: intelectrical property | It is the 90s and there is time for the requirements of supervision and control of transmissible spongiform encephalopathies, also an Esolang event @ Hel/Finland on 3.10.2011: https://wiki.helsinki.fi/display/lambda/esoteeriset+ohjelmointikielet | god bless haskell america | 12345678! | http://codu.org/logs/_esoteric/. 01:06:40 Esolang wiki is also completely by public domain. 01:06:53 elliott: list subscripting? factorial? logical negation? or are you just yelling at someone? 01:07:01 Negation. 01:07:05 Also yelling! ! ! ! 01:07:08 s/spaces/no spaces/ 01:07:17 ...that didn't change your statement 01:07:18 that s/// 01:07:38 Yes it did. 01:07:41 CakeProphet: i think he may have used some non-standard character classes 01:07:45 I only accept properly formatted perl regex. 01:08:13 s/\s//g is correct but then you're just saying Alsoyelling!!!! 01:08:26 so I think you probably want something like s/!\s/!/g 01:08:54 CakeProphet: clearly he needs a variant of /g which applies to all matches _except_ the first. 01:09:12 ...not for s/!\s/!/g ..... 01:09:22 DON'T OVERCOMPLICATE 01:09:33 regex is not something to overcomplicate. 01:09:37 all regex should be clean and elegant. 01:09:44 it's already overcomplicated 01:09:51 lies. 01:09:53 virtue of being regex 01:09:54 overcomplicatude is mandatorial! 01:10:14 One other idea I have in Haskell, to make it so that if you write "case of" with no expression in between then it will make it as a function that selects the case of its input 01:10:38 regex is clearer than most programs it is equivalent to. With the exception of parser combinatorics perhaps. 01:10:45 zzo38: how about more generally a multi-clause lambda 01:11:03 monqy: How would that work? 01:11:08 zzo38: such a good idea others have already suggested it 01:11:44 http://hackage.haskell.org/trac/haskell-prime/wiki/LambdaCase 01:11:48 Yeah, everyone wants "case of". 01:11:55 zzo38: like lambda but you can have multiple [pat]->exp deals 01:12:21 that's not quite the same as a curried form of a case expression. 01:12:22 oerjan: Yes, exactly like that is what I mean. 01:12:23 more verbose. 01:12:25 just like with normal named functions 01:12:45 more verbose 01:12:45 CakeProphet: whats "curried form of a case expression" 01:12:46 monqy: oh wait I see. 01:12:46 ? 01:12:51 elliott: nevermind I misinterpreted. 01:12:59 monqy: that's a different syntactic sugar for the same thing, and has also been suggested before. 01:13:03 monqy: what zzo38 is talking about. 01:13:19 oh wait 01:13:29 oerjan: it's a bit more general isn't it? since you can have multiple argument things and all 01:13:32 the one with lambda can take several arguments 01:13:36 yeah 01:14:07 but what about point-free addicts? 01:14:09 what will they do? 01:14:12 case of {X -> case of {Y -> z}} 01:14:15 obviously we need zzo38's case form. 01:14:16 PERFECT 01:14:20 ooh, wait 01:14:22 what if you could say 01:14:24 CakeProphet: what about them? 01:14:25 monqy: incidentally ocaml has fun and function keywords which do each of those things (but not both multiple arguments and branches simultaneously iirc) 01:14:29 case , of {X,Y -> z} 01:14:31 monqy: we need to satisfy their addiction. 01:14:35 case ,, of {X,Y,Z -> blah} 01:14:39 B E A U T I F U L 01:14:47 CakeProphet: and how would you satisfy it 01:14:55 monqy: ...... 01:15:09 I refuse to explain. 01:15:12 CakeProphet: I'm asking you questions because I have a suspicion you're wrong about something 01:15:21 monqy: yes I've noticed. 01:16:46 anyway pointfree addicts would need something more like the maybe/either function deals, like something that generates those for you???? per haps??? 01:16:50 Instead of f x = case x of { ... } you can write f = case of { ... } if the x is not being used somewhere else. Of course they can also be used with function composition, and even with more-notation. So you can write: f = case of { ... } . length . takeWhile (> 0) or something like that, too. 01:16:57 elliott: I'm not really sure I understand what the , and ,, are for there. 01:17:11 CakeProphet: automatic uncurrying. it is so beautiful. so beautiful. 01:17:33 erm... 01:17:36 :t uncurry 01:17:37 forall a b c. (a -> b -> c) -> (a, b) -> c 01:17:45 ah. 01:17:52 no that's stupid. :P 01:18:00 uncurreying was how I was implement case lambdas when I was trying to do them for myself in an ugly manner in TH but then problems struck 01:18:11 erm 01:18:12 currying 01:18:14 automatic currying 01:18:29 But you could also have a template haskell code to generate uncurrying for any specified number of arguments you want 01:18:36 AUTOMATIC CURRY MMMMM DELICIOUS 01:18:36 case,, of {A,B,C -> e} ------> case of {A -> case of {B -> case of {C -> e}}} 01:18:39 @pl \f t -> f (fst t) (snd t) 01:18:40 (`ap` snd) . (. fst) 01:18:45 namely [||] whined about the stuff in it (in the future bound by the stuff in the [p||]) not being in scope 01:18:52 :t uncurry 01:18:53 forall a b c. (a -> b -> c) -> (a, b) -> c 01:18:56 :t curry 01:18:58 forall a b c. ((a, b) -> c) -> a -> b -> c 01:19:11 Are curry and uncurry actually used for anything? 01:19:12 and I didn;t feel like doing anything fancy with quasiquoter sso I _gave up_ 01:19:20 I've used them 01:19:20 Lymee: curry takes something that is bland and makes it DELICIOUS. 01:19:40 uncurry takes something delicious and makes it BLAND 01:19:51 @pl \f a b -> f (a, b) 01:19:51 (. (,)) . (.) 01:19:57 * Lymee not sure why she's doing something so silly 01:20:07 http://hackage.haskell.org/trac/ghc/ticket/4359 is the ticket for the discussion of adding this stuff to ghc 01:20:08 Oh well. 01:20:19 Lymee: I believe something is wrong with your nipples 01:20:23 they look a little... deformed. 01:20:27 perv. 01:20:30 lots of discussion of exactly what variant to use 01:20:56 the best solution is use Perl 6 whatevers. 01:21:09 oh that reminds me: I need nested guards 01:21:15 and then you can have partially applied if statements. 01:21:20 and pointfree addict guards 01:21:25 @pl \f1 f2 a b -> f1 (f2 a b) 01:21:26 (.) . (.) 01:21:26 you know because that's completely different from cases. 01:21:27 and first class patterns 01:21:27 completely. 01:21:36 I like lambda-if too although I should prefer it is just a normal function (here it is called "if" although you probably name it different): if x _ True = x; if _ x False = x; 01:21:53 Lymee: (.|.) is the flat chest operator. 01:21:57 @pl \f1 f2 a b c -> f1 (f2 a b c) 01:21:58 (.) . (.) . (.) 01:22:09 Lymee: curry and uncurry are useful for pointfree code 01:22:15 Ah. 01:22:16 @pl \f1 f2 f3 a b c -> f1 (f2 (f3 a b c)) 01:22:18 (. ((.) . (.) . (.))) . (.) . (.) . (.) . (.) 01:22:46 Well, I might find generalized curry and uncurry useful with more-notation, too. 01:22:48 -!- Sut-Heb has joined. 01:23:00 @pl \f1 f2 f3 f4 f5 a -> f1 $ f2 $ f3 $ f4 $ f5 a 01:23:01 (. ((. ((. (.)) . (.) . (.))) . (.) . (.) . (.))) . (.) . (.) . (.) . (.) 01:23:02 more notation strikes again 01:23:09 > ((:[])>=>(:[])>=>(:[])) --the angry totem pole is applicable to all situations. 01:23:10 Overlapping instances for GHC.Show.Show (b -> [b]) 01:23:11 arising from a use of... 01:23:13 does more notation work with tuples or just lists 01:23:34 :t ((:[])>=>(:[])>=>(:[])) 01:23:36 forall b. b -> [b] 01:23:43 CakeProphet: That is the same as return for list monad, I think 01:23:48 > ((:[])>=>(:[])>=>(:[])) 1 01:23:48 zzo38: no it is angrier. 01:23:49 [1] 01:23:53 =p 01:24:02 CakeProphet: Yes, but other than its angriness it is the same. 01:24:28 -!- Sut-Heb has left. 01:24:30 > ((:[])>=>(:[])>=>(:[])>=>(:[])>=>(:[])>=>(:[])>=>(:[])>=>(:[])>=>(:[])>=>(:[])>=>(:[])>=>(:[])) 1 01:24:32 [1] 01:24:33 * Lymee hides 01:24:34 zzo38: well the [] is obviously the totem poles belly after it has had delicious snack. 01:24:42 shakes head 01:24:46 zzo38: i think it is common to call the function if', and also there's the variant bool x y True = x; bool x y False = y which is easier for some uses 01:24:46 frowns 01:24:47 scowls 01:24:50 > fix ((:[])>=>) 1 01:24:51 monqy: It works with lists, not with tuples, although you can use tuples in the case alternatives 01:24:52 *Exception: stack overflow 01:25:08 oerjan: Yes, that one, you called "bool" is the one I prefer 01:25:11 zzo38: oh wait that's what you said. if' has the boolean first. 01:25:20 bool is the good variant 01:25:50 zzo38: yeah bool corresponds to Bool in the same way as either and maybe correspond to Either and Maybe 01:25:53 :t bool 01:25:54 Not in scope: `bool' 01:25:55 crys 01:26:07 monqy: sad stuff 01:26:25 oerjan: OK 01:26:27 hmm, someone highlighted me while I was gone, and it seems they got scrolled past my scrollback 01:27:05 I am ashamed at Haskell for not allowing the infinite totem pole. 01:27:36 not "allowing"? what does haskell have to do with totem poles? 01:28:03 fix (return>=>) 5 01:28:04 What's a totem pole? 01:28:08 also, what monad law is return >=> return obeying? it is slightly ambiguous. 01:28:08 oops I messed it up 01:28:09 oops 01:28:14 I forgot the > too 01:28:17 > fix (return>=>) 5 01:28:18 No instance for (GHC.Show.Show (m c)) 01:28:18 arising from a use of `M2187083411... 01:28:22 CakeProphet: I suppose it is considered uncomputable. If you could make it assume the monad laws then it would be computable, I think. 01:28:27 > fix ((:[])>=>) 5 01:28:28 *Exception: stack overflow 01:28:32 yeah I messed it 01:28:35 crey:_; 01:28:48 Lymee: (:[]) is return for the list monad, and return is the identity for >=> in an arbitrary monad, so (:[])>=>(:[])>=>(:[]) simplifies to just one (:[]) 01:28:50 I guess return >=> return is both right identity and left identity at the same time. 01:29:29 (return >=> return) is obeying the Kleisli laws, which is that "return" is identity of (>=>) and (<=<) operators and that these operators are associative. 01:29:54 whats categorys help 01:30:08 You can look up category theory in Wikipedia, too. 01:31:29 zzo38: I believe you're just paraphrasing the laws. I was saying it's ambiguous which law is being followed. return >=> g = g or f >=> return = g 01:31:51 but it doesn't really matter because it amounts to the same thing. 01:31:51 CakeProphet: that's the same problem in any monoid 01:32:19 CakeProphet: the monad laws aren't even represented directly by >=> 01:32:20 kleisli categories are like monoids, except parametrized, i think 01:32:32 categories are like monoids, except parametrized 01:32:36 kleisli categories are categories 01:32:45 ...right 01:33:02 I can never remember how to spell Kleisli 01:33:46 monqy: as long as you don't do that annoying ie - ei confusion 01:34:05 repeat "Kliesli" 01:34:19 * oerjan hits CakeProphet with the saucepan ===\__/ 01:34:41 -,-`-@ 01:34:55 argh, thorns! 01:35:10 cakeprophets face irl 01:35:17 aha 01:35:31 what did you put on that sauce pan 01:35:36 which could do that 01:35:37 to a face 01:35:40 monqy: help y do u h8 me? 01:35:43 :( 01:35:46 :( 01:36:13 time to play DF. hopefully I won't die. 01:36:17 need moar categoriez 01:36:21 (spoiler: I will die) 01:36:36 monqy: metal 01:40:36 Current nostalgia target: WebTV 01:42:57 are you serious 01:43:38 yes 01:43:44 wow 01:44:37 * Sgeo misses some of the music 01:44:54 why did you even have a webtv 01:45:36 My dad bought one for my grandmother a long time ago 01:50:39 Everyone's insisting that the background music was MIDIs, but I distinctly remember hearing lyrics "I put the sand on the beach" 01:52:46 http://zathmari.fortunecity.com/267.html Gargleblurb 01:53:04 Wait don't click that 01:53:17 Here's some links:

01:53:23 A bit creepy 01:55:30 Too late, I clicked that 01:56:03 http://www.google.com/search?hl=en&safe=off&biw=1440&bih=761&q=%22i+put+the+sand+on+the+beach%22&btnG=Search 01:57:26 I hate the ordering of unsigned's arguments 01:57:39 no it's just right for cutting and pasting from the history page 01:58:30 noooooooo 01:58:34 also, you can't cut from a webpage. 01:58:41 *copy 02:00:51 -!- azaq23 has quit (Quit: Leaving.). 02:05:23 -!- Anonymous has joined. 02:05:30 THERE WAS A VISIBLE SUPERNOVA AND NOBODY FUCKING TOLD ME??????????????????????????/ 02:05:44 -!- Anonymous has changed nick to Guest73432. 02:05:46 -!- alandipert has left. 02:05:46 i distinctly recall mentioning it on the channel. or did i... 02:05:58 Hello 02:06:07 hi Guest73432 02:06:22 hi oerjan 02:06:54 Arguably, "Guest73432" is considerably more anonymous than "Anonymous" 02:07:12 (mind you i haven't actually _seen_ the supernova. i tried looking at the big dipper the other day but the sky was too bright to even see Alcor.) 02:07:13 numbers are harder to remember than words 02:08:15 What's all this supernova now? 02:08:19 of course i don't have any vision enhancing equipment available. 02:08:54 -!- Guest73432 has left. 02:09:19 Clearly we impressed our anonymous guest. 02:10:49 Gregor: in the big dipper 02:11:34 "In" as in "in that region", or "in" as in "in a few decades it won't look like the big dipper anymore"? 02:12:18 in that region. the supernova itself is > 20 million years away, so unlikely to affect any normally visible stars 02:12:37 Ah. 02:13:07 It would be pretty amazing if one of the stars that forms the big dipper blew up :P 02:14:14 yes. 02:16:18 VY Canis Majoris _is_ the largest known star and listed on http://en.wikipedia.org/wiki/List_of_supernova_candidates 02:16:46 but i don't think it's one of the "big dipper" stars. 02:17:12 http://en.wikipedia.org/wiki/Big_dipper 02:17:34 M101 in the upper left there is the galaxy where the current supernova is 02:28:08 http://en.wikipedia.org/wiki/SN_2011fe 02:32:27 "Fixed line length was used by some early mainframe operating systems. In such a system, an implicit end-of-line was assumed every 80 characters..." Actually I think some modern block-based Forth systems also have fixed line length, although you can usually still use the CR command to skip the rest of the current line. 02:33:15 zzo38: that rings a bell 02:33:28 forth pages or something 02:34:00 Yes, pages in a block-based Forth system often have fixed line lengths and a fixed number of lines per page. 02:45:52 zzo38: incidentally from that ghc trac page i linked previously it seems like _some_ variant of point-free case syntax is being added to an experimental branch of ghc, although they seem to still be tweaking the syntax 02:46:51 and it is currently slated for 7.4, although that has been changed before 02:47:38 it seems there's a lot of disagreement on exactly what syntax to use for it 02:50:24 when not even the simons agree, things probably take time in haskell-land :P 02:58:20 Does anyone know of a tool that converts a given file into an appropriately-named string literal for embedding into a C program? 02:58:22 oerjan: I think just "case of" with no expression following "case" should be a good syntax for that, just like (,) can be used instead of (1,2) for tuples, so use the same for case. 02:58:24 I suppose I could just use sed. 02:59:13 zzo38: the thing is that doesn't work so well for multi-parameter functions, which they are also trying to include 02:59:29 something along the lines of lambda syntax: where it's at 02:59:31 like I said: case,, of 02:59:35 the best. 02:59:50 elliott: Yes, I suppose sed will do, maybe AWK will do, or Perl, etc; although I usually do Enhanced CWEB stuff writing a C code to generate a C code 02:59:56 elliott: "commas are right out" said one of the simons :P 03:00:06 oerjan: I told you how to do that too: case of { ... } . curry 03:00:07 oerjan: haha, link? 03:00:12 comas ugly, gross 03:00:13 oerjan: I told you how to do that too: case of { ... } . uncurry 03:00:34 Use "uncurry" function that will do it, isn't it? 03:00:43 http://hackage.haskell.org/trac/ghc/ticket/4359 03:00:51 zzo38: it'd be clumsy in practice 03:01:00 If you need different amount you do $(genUncurry 5) for five parameters, for example. 03:01:00 zzo38: and what about when you need more than 2 arguments 03:01:08 ugh 03:01:12 :t uncurry . uncurry 03:01:14 forall b c a b1. (a -> b1 -> b -> c) -> ((a, b1), b) -> c 03:01:18 perfect :P 03:01:20 uuuughhhhhh 03:02:21 I suggested using Template Hsakell to have functions such as genUncurry, genCurry, genReorder, etc. 03:03:01 genUncurry :: Int -> Q Exp; genCurry :: Int -> Q Exp; genReorder :: [Int] -> Q Exp; 03:06:51 But (,) = curry id 03:10:16 You can have: curry case of { ... } 03:10:16 :t curry id 03:10:17 forall a b. a -> b -> (a, b) 03:10:21 That is how you do multiple arguments. 03:10:25 OK? 03:11:05 So, for five arguments, you want: $(genCurry 5) case of { ... } 03:11:25 Does it makes sense? 03:16:40 I don't know why you dislike "curry case of"; it make sense to me. 03:20:18 1) it's gross and there are clean ways to do it 03:20:32 What do you mean by that? 03:20:40 I mean it's hideous 03:21:10 and 2) symmetry with named function definitions is good 03:21:25 I don't think so. Can you explain what it seem wrong to you, and what you think is better way? 03:21:34 (for lambda functions, in the area of having multiple pattern/clauses) 03:22:15 the ugly part is having to depend on a template haskell helper function and putting it in front and it looks ugly 03:22:31 trollscript is the most appropriate thing ever 03:22:32 :( 03:22:47 my solution is to extend lambda syntax so you can have something like (not necessarily this exact syntax)--augur: I saw it too :( 03:22:51 -- 03:24:09 \ (Just a) _ -> a 03:24:11 _ False -> thing 03:24:14 _ _ -> hello 03:24:30 might need extra syntax in there but that's the basic idea 03:25:01 I happen to think "curry case of" and stuff is not bad; even if it seem ugly to you; but you could also have some kind of macros allowing to make up a lot of extra stuff. 03:26:55 And using that with \ seem not right because of layout and nonlayout and that stuff. But it might work better if it is "\ of" to introduce that kind of syntax 03:27:25 for layout/nonlayout there'd be a {;;;;}ey form 03:27:48 as I said, my example was just the general idea of what I wanted, not the exact syntax 03:27:53 Well, yes, using {} for nonlayout, but \ is not normally layout anyways. 03:28:19 So if you want something like that, put the word "of" after \ and then it can introduce layout and working easily 03:30:14 Whatever syntax is used, I think it should sense to be consider a case block for purpose of more-notation (that is, if you use more-notation at all). 03:30:22 the essence of what I want: allow multiple arguments without tricks (this includes template haskell curry foolery), preferably by extending lambda syntax to be more symmetric with named function definitions 03:31:08 since named functions can have multiple cases and what-not why can't lambdas???? 03:31:13 monqy: Then it seem it would work to use "\ of", like you described but with "of" on it to introduce layout. 03:31:25 (For allowing multiple cases) 03:31:26 zzo38: i also think \ of would be a good idea but it does not seem to be what they are implementing 03:32:48 In that case the codes in section 5.1 of proposal of more-notation is like this: ann = \ of more PExpAnnCases; amap f = \ of more PExpAmapCases f; 03:33:05 someone on that trac gave an example of something commonly used that would break with monqy's \ + just layout syntax 03:33:40 oerjan: I didn't see that, but I still agree and I already thought of that anyways so that is why I made a different suggestion 03:33:41 then add a bit of extra syntax to tidy it up 03:33:46 something >>= \ whatever -> 03:33:49 do ... 03:34:40 if \ of works as the extra syntax, that's good I suppose 03:35:19 But I suggest also having "case of" which is the same but allows only one argument, which means you will not need parentheses as much 03:35:50 yeah 03:36:37 except then you need even more weight when you want extra arguments 03:36:41 so 03:36:46 ehhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh 03:39:00 (It also seem to me, more-notation would be more easily implement using "case of" than with "\ of"; you can write "f = curry case of more CasesF;" even if it is strange to you.) 03:39:37 that's even clumsier 03:40:07 unless you just meant it's easier for you to fit more notation into case of 03:40:34 Awww, the supernova is just a type 1a. 03:40:35 in which case I must disagree; it seems just as easy to fit it into any other 03:41:08 that's actually somewhat exciting because type 1a's are being used to calibrate intergalactic distances 03:41:20 monqy: Actually I just meant it seems to me it would be easier to implement. It doesn't mean you can't have "\ of". 03:41:21 and this is the best observation of one so far 03:44:36 Can you understand now what I mean? Have I made any mistake? 03:48:33 someone said "linked lists are inherently superior to arrays/arraylists when it comes to removing items from them" 03:48:40 readCard :: (Card -> t) -> Render t; 03:48:42 even more superiorer: finger trees 03:50:15 zzo38: hm i guess more-notation is analogous to prolog's multifile predicates... 03:50:19 just a thought 03:50:54 oerjan: I don't know that stuff about Prolog, but maybe it is. I can try to figure it out 03:53:46 Can you tell me how multifile predicates works? 03:54:31 I need some javascript help. Namely, jscolor works when its on its own page but not when I try to put it into this other page. Anyone here know enough js to debug with me? 03:54:33 well afaik if you declare a predicate with multifile, then swi-prolog allows you to define clauses of it in multiple files. usually it doesn't for efficiency or whatever. 03:54:55 Patashu: Gregor knows js quite well :P 03:55:15 and prolog clauses are somewhat similar to single function equations in haskell 03:56:01 oh and i think there's a different declaration for allowing adding clauses at runtime 03:58:09 points to http://thirdstyle.com/forum/chat/js/jscolor/jscolor.js 03:58:15 oerjan: OK, then I suppose the more-notation for case blocks somewhat resembles that. 03:58:30 hm not sure about that, but there is a "discontiguous" declaration for allowing spreading a predicate around in a file 03:58:51 and I have (and if you look at jscolor, it binds to anything with color in its class 03:58:57 But that doesn't work 03:59:00 However, this works fine: http://thirdstyle.com/forum/chat/js/jscolor/demo.html ??? 03:59:08 also relevant http://jscolor.com/try.php 03:59:35 oh, "dynamic" is the one which allows modifying the predicate after compilation 03:59:48 http://www.gprolog.org/manual/html_node/gprolog022.html 04:01:10 sup 04:02:20 hi 04:02:34 i need to punish whoever invented trollscript 04:03:38 does ph know about it 04:03:53 no 04:03:58 * oerjan sees no trollscript on the wiki 04:04:11 good 04:04:23 oerjan: google it 04:06:44 oh reddit 04:07:05 I didn;t find it on reddit but i did find it 04:07:07 trollscript makes me think of lolcode but somehow even worse 04:07:11 am I on the ball? 04:07:15 let's find out 04:07:50 At least people are criticising it 04:08:36 someone who isn't me and has no reputation, create an issue on github saying it's shit :P 04:08:56 also, preferably link to at least ten existing trivial bf derivatives to disprove that it is an esoteric derivative as claimed 04:09:01 and then 04:09:02 punch him 04:09:20 why, clearly with your heavy reputation you should have more authority 04:10:01 I HAVE A GOOD REPUTATION ON GITHUB :P 04:10:10 MR. APFELMUS WOULD JUDGE ME 04:10:44 oh it's literally brainfuck 04:10:48 that's disappointing 04:10:57 what did you expect 04:10:59 and here we were commenting on it for its immense value. 04:11:03 Google's making a competitor to Opa and Ur/Web? 04:11:08 elliott: oh well, at least it's a euphonic language 04:11:19 wow Sgeo your words just made me want to punch you 04:11:22 h;w did this hap/pen 04:11:26 http://www.reddit.com/r/programming/comments/k90ed/google_to_announce_new_programming_language_for/ 04:11:41 Oh, we don't know enogh about it, I guess 04:11:45 Bracha's involved :D 04:11:46 your beloved gilad bracha worked on it 04:11:47 it must be perfect 04:11:54 by perfect i mean terrible 04:12:23 I HAVE A GOOD REPUTATION ON GITHUB :P <-- wait is this a euphemism for "no one there knows i do esolangs"? 04:12:49 oerjan: no, nobody there (= probably all of one person) would expect me to make a rude unproductive issue :D 04:12:54 elliott, do you dislike Bracha's languages? 04:13:11 elliott, you could make a calm issue? 04:13:22 "There is no point to this." 04:13:45 Calm, reasonable. 04:14:07 issue: this language kindly fucking sucks 04:14:19 Oh, it's more than just brainfuck 04:14:21 issue: I FUCK;IGN HATE YOU AND WANT TO MASH DEATH INTYO YOUR SKULLS (PLEASE THANK YOU0 04:14:27 -!- Nisstyre has quit (Ping timeout: 245 seconds). 04:14:32 tro has to be in front, and ll. has to be at end 04:14:41 Do you think section 5 in my proposal of more-notation helps a lot to you reading this document? 04:15:26 -!- lambdabot has quit (Ping timeout: 252 seconds). 04:15:29 "Trollololol-tastic." - redit 04:17:04 Can you switch text/binary I/O mode in Haskell? 04:17:10 @hoogle binarymode 04:17:18 aaaaa 04:17:23 bad timing 04:17:27 oerjan: Does the Prolog multifile stuff can do reordering, or do you have to put everything in the correct order at first? 04:17:40 zzo38: anyway, the answer is yes, there are functions to switch 04:18:02 zzo38: oh. i suppose you have to import the files in the correct order. 04:18:09 oerjan: more notation only works in one file, btw 04:18:17 zzo38: which might be one reason why it's not the default 04:19:08 elliott: Unless you allowed it in multiple modules, or allowed a private include command for preprocessor, etc 04:20:43 why is it 6:21 already 04:20:54 i haven't even finished my logreading 04:20:54 why is it that, but an hour earlier, already 04:20:59 i haven't even finished my coding 04:21:16 I only wrote it works in only one module (unless it becomes easy to make it work with multiple modules), but it can possibly work with multiple files if there is a way to do that. 04:21:24 oerjan: i think we have to bow after that 04:21:25 * elliott bows 04:21:31 * oerjan bows 04:21:35 wonderful. 04:21:48 dangit I need someone who knows the answers to my problems instantly and is always around for me! 04:21:50 I need.....an adult ;_; 04:21:58 `addquote dangit I need someone who knows the answers to my problems instantly and is always around for me! I need.....an adult ;_; 04:22:00 646) dangit I need someone who knows the answers to my problems instantly and is always around for me! I need.....an adult ;_; 04:22:06 `quote 04:22:06 `quote 04:22:06 `quote 04:22:07 `quote 04:22:07 `quote 04:22:07 `quote 04:22:09 279) ooh I want to see ehird pole dancing I think that would be illegal. oh you are right damn :/ 04:22:10 184) Vonlebio: well, i'm only back in denmark because my work visa expired. please insert token to continue. 04:22:10 301) so you have legacy software in befunge that needs supported? 04:22:12 415) scripting language. whole program analysis. together at last 04:22:13 58) Maternal instincts? Don't you just leave the thing in a box until it starts crying, and then shake it until it stops? 04:22:13 352) . Ohheywait, I can make it a raytracer instead of a photon tracer so long as I run time backwards. 04:22:15 Patashu: ooh tell me if you find a shop which sells them! 04:22:19 lol oerjan 04:22:42 scripting language. whole program analysis. together at last 04:22:45 i want to addquote this again 04:22:54 352) . Ohheywait, I can make it a raytracer instead of a photon tracer so long as I run time backwards. 04:22:56 OIJSFIOJSOFIJOISDFOSM ERROR 04:22:56 ERROR 04:22:57 ERROR 04:22:58 ERROR 04:22:58 ERROR 04:23:01 oerjan: FIX IT 04:23:14 `run sed -i 's/. / /g' quotes 04:23:16 No output. 04:23:24 `quote 352 04:23:25 regarding 279, is that still illegal? 04:23:26 352) Ohheywait, I can make it a raytracer instead of a photon tracer so long as I run time backwards. 04:23:41 Not in this country, at least. (But I don't think it ever was.) 04:23:49 if not, someone tell Vorpal 04:23:58 I don't think you should get his hopes up. 04:24:04 ah. 04:24:43 oerjan: Even if it is all in one file, it is still like discontiguous/1 in Prolog I guess. 04:24:50 oerjan: Hey, go wake fizzie up. 04:24:56 (In this analogy, you're the cat.) 04:25:09 -!- Nisstyre has joined. 04:25:47 zzo38: yeah 04:26:02 elliott: that means i get to use a bat, right? 04:26:05 how can a channel with 500 people in it be dead??? 04:26:22 Section 5.1 even pertains to a program that is in Haskell! Section 5.2 and 5.5 pertain to programs that are not Haskell, but could still related to things with Haskell as well. 04:26:29 Patashu: zombie virus? 04:26:35 oerjan: Yes. 04:27:12 Deewiant: You, like, totally have commits to mcmap; wake up in lieu of fizzie. 04:27:41 the finns and they're eerie sleep in the night perversion 04:27:44 *their 04:28:13 oh wait it's 7:28 over there 04:28:13 WHY DOESN'T ANYBODY NON-SCANDINAVIAN WORK ON MCMAP 04:28:17 oerjan: Work on mcm- DAMMIT. 04:28:32 but but i'm not non-scandinavian 04:28:37 THUS THE DAMMIT 04:29:02 well ask zzo38 04:29:05 * oerjan sprints 04:29:12 zzo38: hey work on mcmap 04:29:17 you can conevrt it to enhanced cweb it ok 04:29:29 elliott: I am not interested in that program 04:29:46 I am not interested in mcmap 04:30:14 I am not interested in it, Sam I am? 04:32:16 oerjan: i dont get it why am i geting tired 04:33:37 ok wait oerjan wait wait wait, oerjan, wait, do i code more mcmap or slep.... 04:33:38 its 04:33:40 hard to life :( 04:35:36 |“u” stands for “uninterpreted” (it's not treated as a Scheme value), or “unprotected” (it's not marked during GC), or “unsigned long” (its size), or all of these things." 04:35:41 s/|/"/ 04:35:56 uuunsafe 04:40:45 -!- monqy has quit (Quit: hello). 04:45:01 struct packet_format_desc packet_format[ 04:45:01 #define PACKET(id, cname, scmname, nfields, ...) \ 04:45:01 1 + 04:45:01 #include "protocol.x" 04:45:02 #undef PACKET 04:45:04 0 04:45:06 ]; 04:45:18 oh wait that doesn't quite work :P 04:45:25 hmm, but this might... 04:47:21 oerjan: i have a challenge for you. 04:47:42 find me an arithmetic expression that always returns the last operand :P 04:47:46 specifically, one that looks like either 04:47:53 CONSTANT OP elt OP elt OP elt ... 04:47:53 or 04:47:59 elt OP elt OP elt ... OP CONSTANT 04:48:07 note that there can be multiple ops per elt, and the elt can be repeated for each elt 04:48:16 0 * x + y 04:48:23 so (elt-9) / (elttwo-9) / ... / 0 is ok 04:48:24 0 * x1 * x2 * x3 + y 04:48:41 oerjan: that's brilliant, but unfortunately no; the operation must be the same for every element 04:48:46 that changes to + for the last element 04:48:49 eek 04:49:10 it can actually be repeated later, so you can nest parens 04:49:17 (by making the expansion ) for each element) 04:50:08 ((x1 * 0 + x2) * 0 + x3) * 0 + y 04:50:32 oerjan: um is that the same operation for every element? 04:50:41 hm if i use one extra paren then 04:50:44 elt) * 0 + 04:50:44 is it 04:51:26 oerjan: except no it isn't, because that does it to the _last_ element too. 04:51:36 so what's the single-element expansion there for the main body? 04:51:48 er x op y = x*0 + y 04:52:11 why is that wrong :( 04:52:21 oerjan: you seem to be under the impression that it's a binary op, rather than just a per-element syntactic expansion. _but_, actually, that might work 04:52:27 because I can define a cpp macro OP() 04:52:32 can you write that in polish notation for me? 04:52:52 (with OP()) 04:52:58 elliott: oh hm what about x1*0 + x2*0 + y 04:53:10 is that syntactic enough for you 04:53:19 well, I still need to define the OP 04:53:28 but wait 04:53:31 er x op y = x*0 + y 04:53:33 ((x1 * 0 + x2) * 0 + x3) * 0 + y 04:53:34 ---> 04:53:42 OP(OP(OP(a,b),c),d) 04:53:45 ok so first it's 04:53:46 OP( 04:53:51 for every element 04:53:53 then it's 04:53:55 ,x) for every element 04:53:56 but that becomes 04:54:02 OP(OP(OP(,a),b),c),d) 04:54:04 :| 04:54:16 oh hm 04:54:22 I can just put 0 after the OP( for every element 04:54:31 elliott: just put any constant in the center 04:54:46 you said you could do that 04:54:48 oh and suddenly I become sceptical that this will work, because cpp tends to _not_ let you call functions in indirect manners like this... 04:54:55 hmm 04:55:08 protocol.x:57: error: unterminated argument list invoking macro "GROSS" 04:55:09 indeed. 04:55:31 oerjan: ok wait let me look at 04:55:33 elliott: oh hm what about x1*0 + x2*0 + y 04:55:39 what's the expansion for each element meant to be here? 04:55:43 *0 + e? 04:55:45 with some constant at the start? 04:56:02 hey, that might actually work 04:56:08 it does :DDD 04:56:10 oh almost 04:56:30 struct packet_format_desc packet_format[ 04:56:31 0 04:56:31 #define PACKET(id, cname, scmname, nfields, ...) \ 04:56:31 * 0 + id 04:56:31 #include "protocol.x" 04:56:31 #undef PACKET 04:56:33 + 1 04:56:35 ]; 04:56:37 oerjan: beautiful, no? 04:56:48 O KAY 04:56:54 and then he remembers that the packet id is sent as a byte, so he can just use two hundred and fifty six >_> 04:57:02 oerjan: but thank you anyway :P 04:57:06 it was _enlightening_ 04:57:34 oerjan: and I hope Notch increases the size of the packet id, just so I can us ethat. 04:57:37 use that. 04:58:30 yw 05:04:29 -!- derrik has joined. 05:09:59 oerjan: ampersand plz 05:10:18 never mind, don't need it 05:10:35 -!- oerjan has set topic: intelectrical property | It is the 90s and there is time for the requirements of supervision and control of transmissible spongiform encephalopathies, also an Esolang event @ Hel/Finland on 3.10.2011: https://wiki.helsinki.fi/display/lambda/esoteeriset+ohjelmointikielet | god bless haskell america | 12345678!& | http://codu.org/logs/_esoteric/. 05:10:48 thx 05:30:19 -!- MSleep has joined. 05:30:32 btw fixed my js problem 05:30:40 it was really dumb and I feel bad about myself 05:33:56 ok 05:33:57 what was it 05:34:40 I was re-generating the div it was in after loading the page, and here's the dumb part: I had already turned off that part and forgot to push that change 05:34:41 -!- Nisstyre has quit (Ping timeout: 260 seconds). 05:34:44 so I -had- it fixed but not pushed 05:35:33 lol 05:36:16 I'm glad someone told me to try that 05:36:21 otherwise I probably wouldn't have ever noticed 05:44:49 -!- Taneb has quit (Remote host closed the connection). 05:47:58 -!- Nisstyre has joined. 06:02:06 Is there a proper name in category theory for having only the "unit" function of a monad and not join/fmap? 06:05:50 well, without fmap 06:05:55 what laws would the unit follow? 06:06:03 you can talk about a pointed functor if you have fmap 06:06:29 No laws at all. It is useless by itself 06:06:38 Then why would there be a name for it 06:06:44 But OK, with unit/fmap and no join I can use pointed functor, I suppose 06:06:46 OK 06:07:06 yep 06:07:39 the law that would satisfy is that fmap f (pure x) = pure (f x) 06:07:46 which is automatically true in haskell :) 06:07:49 -!- augur has quit (Remote host closed the connection). 06:08:02 OK 06:08:05 but in other categories isn't necessarily true 06:08:30 @free pure :: a -> F a 06:08:54 copumpkin: automatically? I'm sure you can violate it 06:09:09 instance Functor [] where pure x = [x]; fmap _ _ = [] 06:09:46 I mean if you already had a valid functor 06:09:54 right 06:10:01 which by the way only needs fmap id = id 06:10:58 -!- derrik has left. 06:12:41 -!- lambdabot has joined. 06:13:40 Deewiant: How's this commit frequency compared to mushspace's: https://github.com/fis/mcmap/commits/guile 06:21:40 How do I tell Haskell to assume that overlapping instances are equivalent? 06:22:16 you're not meant to commit that fast??? 06:22:20 copumpkin? :P 06:22:20 gosh, I'm using github all wrong 06:22:33 Patashu: I'm pretty sure you're meant to commit with a greater granularity than I've been doing. 06:22:45 I've just been in, what's it called, crunch mode. 06:22:45 zzo38: maybe IncoherentInstances? 06:23:01 ? 06:23:05 (i've never tried it but...) 06:23:17 you just don't 06:23:42 oerjan: "No, *you're* the incoherent instance." 06:23:48 Actually, I used OverlappingInstances and that seem to work 06:23:59 Patashu: For instance https://github.com/fis/mcmap/commit/8915baceeae4d5909b959c35f0bc3bc087eba55d, https://github.com/fis/mcmap/commit/0fe090f7271d2ab141a7c756f5fbde4b5b228ee7, and especially https://github.com/fis/mcmap/commit/194c50e4d03c7971363c84b7811386da376ce17e look too big to me. 06:24:01 zzo38: oh. i thought you had a more serious problem. 06:24:45 zzo38: that doesn't assume they are equivalent, but it chooses the most specific one if there is one. 06:25:11 iiuc IncoherentInstances chooses arbitrarily even if there isn't, or something 06:25:15 oerjan: But if they are in fact equivalent, it should work, isn't it? 06:25:22 zzo38: yeah you'd think 06:25:47 Patashu: P.S. Do you play Minecraft because MCMAP IS TOTALLY THE BEST. 06:33:45 Is there a way to allow partially applied type synonyms in instance declarations? 06:34:36 zzo38: it can't always make up its mind 06:34:44 if you have class Moo a b 06:34:52 and instance Moo Int b and instance Moo a Int 06:35:02 if you have Int Int 06:35:09 it'll bitch and tell you it can't make up its mind 06:35:16 that's what I thought you were asking about 06:35:25 sometimes it'd be nice to say "yo, don't bitch, there's no difference" 06:35:28 and you can't do that 06:35:51 What we need are ~/~ constraints. :p 06:35:58 instance (b ~/~ Int) => Moo Int b 06:36:03 instance Moo a Int 06:36:10 No, what I mean, is for example to make a Functor instance from a type synonym 06:36:40 That's plain impossible, it makes checking totally undecidable. 06:36:46 zzo38: no, that won't work, wrap it in a newtype first 06:37:15 type Awesome a = a; instance Functor Awesome where fmap = id 06:37:21 AUUUUUUUUGH 06:37:35 O, that is the problem. 06:37:49 Now I understand. 06:38:10 * oerjan hugs the poor type system 06:40:44 http://static.guim.co.uk/sys-images/Media/Pix/pictures/2010/3/25/1269523445370/Austin-Heap-001.jpg 06:40:55 where on _earth_ do the Guardian get their ideas for "photos of people we think are smart"? 06:41:09 (i _may_ be referencing ais' here too :P) 06:42:57 I think I figured out one way to allow you to make monads by unit/join/fmap or by return/bind and either way should work: class Functor u => PointedFunctor u where { unit :: x -> u x; }; class Joinable j where { join :: j (j x) -> j x; }; instance (PointedFunctor m, Joinable m) => Monad m where { return = unit; x >>= f = join $ fmap f x; }; instance Monad j => Joinable j where { join = (>>= id); }; instance (Functor p, Monad p) => PointedFunct 06:43:20 "instance (PointedFunctor m, Joinable m) => Monad m" ;; really bad idea. 06:43:31 Such instances require excessive extensions for areason. 06:43:41 Yes it does require extensions 06:43:48 -!- nooga has joined. 06:49:56 excessive, he said :) 06:50:03 overlapping instances is really something you don't want 06:50:31 anyway, time for bed 06:50:33 * copumpkin goes to sleep 06:50:53 copumpkin: Why? I think it is useful program 06:51:03 That is why they put it there. 06:51:22 oh, it definitely is 06:51:31 you just want to understand all the downsides to using it :) 06:51:42 anyway, I can't stay awake 06:51:45 ciao :P 06:51:48 OK 07:01:11 -!- zzo38 has quit (Remote host closed the connection). 07:03:52 -!- kaus has joined. 07:04:07 is there an llvm to bf compiler? 07:04:54 There's a work-in-progress-but-stalled gcc-bf backend. 07:05:05 And the old, ancient, not-very-good C2BF. 07:05:17 Apart from that, not that I know of; you thinking of writing one? 07:09:21 yeah i was thinking on working on this project...if it has not been done already 07:09:42 It would be cool. And probably easier than the awful gcc backend project. 07:10:08 ais, who worked on gcc-bf, complained about LLVM assuming more than it should IIRC, but that applies to just about any "portable low-level" thing, since BF is quite unlike an ordinary machine. 07:10:22 You can ask him when he's around again. Might be Monday. 07:13:37 ok thanks 08:06:07 y 08:07:04 is there any resource where i can get more info on gcc-bf 08:07:19 apart from ais.. 08:21:07 just ais :) 08:21:16 you could leave a message on his wiki talk page. 08:21:25 he's an admin there so he should see it the next time he's online. 08:21:36 http://esolangs.org/wiki/User_talk:Ais523 08:22:10 -!- Taneb has joined. 08:22:20 Hello! 08:23:21 :) 08:23:36 Hey, it's the third anniversary of the end of the world 08:23:45 the world ended in 2008? 08:23:49 I thought it ended in 2011 08:24:00 It ends pretty much every year 08:24:23 But 3 years ago TODAY, the LHC was powered up 08:24:56 Creating millions of microscopic black holes that pulled the entire planet into the Swiss-France border 08:29:40 -!- elliott_ has joined. 08:29:52 -!- elliott has quit (Read error: Connection reset by peer). 08:30:27 Uh, they never created any black holes. The whole project was plagued by bureaucracy and funding problems, and never started up. The data up till now has been fabricated. 08:30:36 Why else do you think we're still here, stupid? 08:32:02 Jafet: Bureaucracy? Seriously? 08:32:14 You realise the Illuminati are delaying the launch until 2012, don't you? 08:32:23 I mean, come on. It's all a little TOO CONVENIENT. 08:35:13 http://en.wikipedia.org/wiki/Template:Black_days 08:37:41 -!- oerjan has quit (Quit: Later). 08:38:42 Sometimes, when I go on a wiki walk on wikipedia 08:38:50 I look at my tabs and thing "Wha?" 08:39:00 List of predicted dates of the end of the world 08:39:02 Fraud 08:39:21 Hundred Year's War (1337-1360) 08:39:24 Antibubble 08:52:03 -!- Jafet has quit (Quit: Leaving.). 08:54:52 -!- kaus has quit (Quit: Leaving). 09:01:30 My epetition has 9 signatures! 09:01:49 Only 99991 to go! 09:02:08 Is it like the age of consent? 09:02:25 99999 signatures = I don't care, 100000 signatures = OMG this is serious guys 09:02:34 Pretty much 09:02:45 But the more signatures it has the faster it grows 09:02:59 And when it reached 100000 automatic debate in the House of Commons 09:03:15 http://epetitions.direct.gov.uk/petitions/6982 09:03:21 aaah 09:11:15 bye 09:11:19 -!- Taneb has quit (Quit: TTFN). 09:13:48 Can I anti-sign it? I'm a horrible person like that. 09:30:15 -!- Taneb has joined. 09:30:21 -!- FireFly has joined. 09:35:33 I think the most interesting esoteric pi calculator is the Piet one 09:35:39 http://www.dangermouse.net/esoteric/piet/piet_pi_big.png 09:38:07 heh, that's like that ioccc entry 09:46:24 -!- oklopol has joined. 09:51:33 -!- Lymee has quit (Ping timeout: 276 seconds). 10:04:49 -!- Taneb has quit (Read error: Connection reset by peer). 10:13:29 -!- copumpkin has quit (Ping timeout: 240 seconds). 10:13:55 -!- copumpkin has joined. 10:20:56 -!- sllide has joined. 10:26:30 -!- elliott_ has changed nick to elliott. 10:26:39 -!- elliott has quit (Changing host). 10:26:39 -!- elliott has joined. 10:36:34 hi oklopol 10:37:14 hi elliott 10:37:20 hi oklopol 10:38:55 hi elliott 10:39:12 hi oklopol 10:39:18 hi elliott 10:39:22 hi oklopol 10:39:41 hi elliott 10:39:47 hi oklopol 10:39:50 hi elliott 10:39:53 hi oklopol 10:39:57 hi elliott 10:40:02 hi oklopol 10:40:04 hi elliott 10:40:08 hi oklopol 10:40:09 hi elliott 10:40:12 hi oklopol 10:40:13 hi elliott 10:40:20 hi oklopol 10:40:20 hi elliott 10:40:23 hi oklopol 10:40:27 hi elliott 10:40:30 hi oklopol 10:40:32 hi elliott 10:40:34 hi oklopol 10:40:36 hi elliott 10:40:40 okokokokokokokokokokokokokokokokoko 10:40:45 okokokokokokokokokokokokoko 10:40:47 i am sheep 10:40:48 holy shit 10:40:49 that's some flow 10:40:54 i was sure that would fuck you up 10:41:04 eh 10:41:21 i'm really really really stupid but i'm not that stupid 10:41:25 me too 10:41:32 i'm so lazy man, see how lazy i am 10:41:49 lazyman 10:43:54 sometimes i wish i lived on the moon 10:44:02 life would be so much simpler 10:44:10 `quote moon 10:44:15 34) I am not on the moon. 10:44:23 me neither man, me neither 10:44:30 `quote gravity 10:44:32 33) pikhq: A lunar nation is totally pointless. ehird: consider low-gravity porn fungebob: OK. Now I'm convinced. 10:44:47 what the hell do you mean by that 10:44:50 pointless? 10:44:54 `quote q 10:44:56 3) Hmmm... My fingers and tongue seem to be as quick as ever, but my lips have definitely weakened... More practice is in order. \ 6) His body should be given to science. He's alive :P Even so. \ 11) wouldn't that be considered pedophilia? 10:44:58 oklopol: i was young and naive 10:44:58 try awesome 10:45:07 hmm k 10:45:19 `run wc -l quotes 10:45:21 646 quotes 10:45:24 that a lot of quote 10:45:36 i was such a pedophile in the first grade 10:55:59 -!- monqy has joined. 11:00:19 im afraid i have plunged deep into the wonderful world of slep problems. after staying up over 24 hours i only maybe managed a short nap. 11:00:32 maybe because i dreamt about trying to get to sleep 11:00:40 so i'm not entirely sure if that even happened 11:05:00 are you tired all the time tho 11:05:15 i wouldn't mind sleeping little if i didn't feel like meh 24/7 11:05:50 but i do sleeping any amount of time in existence and feeling like a carrot pood in my brain 11:05:53 *mind 11:06:23 from my yesterday experience I was only really tired sometimes. 11:12:51 all day long i feel like i just woke up 11:13:12 and then suddenly it turns into wanting to sleep 11:13:56 then again it's only about a week since i started sleeping "regularly", perhaps my brain starts working at some point 11:15:10 -!- zzo38 has joined. 11:15:53 If I write something like this it assumes everything is instance of X and Y: class X a; class Y a; instance X a => Y a; instance Y a => X a; is that like circular reasoning? 11:17:04 good luck getting it to compile 11:17:34 But what I wanted it to do instead is, if I define instance X Int then it will automatically make up instance Y Int and if I define instance Y Char then it will automaticaly make up instance X Char 11:17:58 monqy: It does compile when the extensions are selected to make it do so. 11:18:08 ok 11:18:39 But it seems to me that making everything become instance of X and Y due to that is like circular reasoning. 11:18:40 the don't actually try compiling, just print ay okay extension 11:19:12 it doesn't seem very circular to me 11:19:59 a bit less circular than mutual recursion, and that isn't even circular?? 11:23:35 John McCarthy might have gotten his scoping wrong, Lee Harvey Oswald managed without scoping 11:24:41 -!- DH____ has quit (Ping timeout: 260 seconds). 11:27:30 -!- Taneb has joined. 11:31:08 What does "Could not deduce (x1 ~ Bool)" means? 11:32:07 (a ~ b) means the types a and b are identical, as a constraint 11:32:23 you're supplying a Bool, but GHC wants an x1 11:38:41 OK 11:38:47 My ZOMBIE 99 bottles of beer is 0.02 stars away from being the best ZOMBIE 99 bottles of beer program on the site 11:41:01 http://www.99-bottles-of-beer.net/language-zombie-2562.html 11:41:10 Why does the code I provided result in everything being instance of X and Y? My example has no class members but I tried adding some and it results in the same thing 11:41:57 oh that's what's happening? 11:42:12 what exactly is happening 11:42:18 it sounds 11:42:19 weird 11:43:42 It seems like circular reasoning to me, but I don't really know. 11:44:07 it just seems weird to me 11:45:24 Mine's the top now! 11:46:18 deducing "everything is an instance of X and Y" from "instances of X are instances of Y" and "instances of Y are instances of X" doesn't quite strike me as circular. Why are X and Y separate, anyhow? why not merge them? or is the actual case in which you are using this sort of thing such that this would not be possible? 11:50:29 monqy: It is not always possible. 11:50:42 -!- augur has joined. 11:50:56 what is your case? 11:51:11 and what exactly is happening 11:53:01 I described it. For example, if you have a class member { xX :: a -> a; } now it allows you to use xX on values of any type. 11:53:46 -!- max_ has joined. 11:56:20 -!- Phantom_Hoover has joined. 11:56:51 maybe you found a bug? I don't know. 11:57:10 Or maybe, the class Y requires multiple constraints, if everything applies to each other then it results in the same thing. 12:00:55 If I have instance (Container m, Functor m, Joinable m) => Monad m; instance Monad j => Joinable j; instance Monad p => Container p; instance Monaf f => Functor f; then it assumes everything of kind (* -> *) is a monad (although properly defined monads still work properly), and things that should not be monads cause infinite loops 12:03:45 Having instance Monad f => Functor f; instance Comonad f => Functor f; results in compile error. 12:26:10 `addquote We have no leather. Time to use that most venerable of resources, the puppy. 12:26:13 647) We have no leather. Time to use that most venerable of resources, the puppy. 12:26:35 if Phantom_Hoover he's poop because that was hialrious 12:29:02 What. 12:30:05 if Phantom_Hoover complains he's poop because that was hialrious 12:30:14 -!- zzo38 has quit (Remote host closed the connection). 12:50:24 -!- Jafet has joined. 12:56:55 -!- DH____ has joined. 12:58:21 -!- max_ has quit (Quit: Leaving). 12:58:39 offer of a lifetime, guys: http://london.craigslist.co.uk/cpg/2591274619.html 12:58:54 -!- DH____ has quit (Client Quit). 12:59:06 internet company 12:59:11 keep reading 12:59:20 that's surely parody 12:59:46 yeah it is 13:00:25 parody of what? 13:00:41 startup job postings like that 13:00:49 Definitely a joke 13:00:58 Who the hell makes startups in london 13:01:09 lol 13:07:31 carmack sez "Many worthwhile posts here: http://prog21.dadgum.com/archives.html" 13:07:47 elliott i bet you wish you knew about that website 13:08:27 Totally. 13:08:38 (Did Carmack actually say that?) 13:09:15 " itidus20: You probably want to read http://prog21.dadgum.com/23.html" 13:09:22 http://twitter.com/#!/ID_AA_Carmack 13:10:01 Huh, some synchronicity. 13:10:14 fuck you carl jung 13:10:31 lol 13:10:37 hey monqy remember http://upload.wikimedia.org/wikipedia/commons/e/e2/Sch%C3%A9ma_synchronicit%C3%A9_in_English.png 13:12:50 i feel that synchronicity that all the games i played growing up are popular :-s 13:13:16 maybe that is not actual synchronicity though 13:13:42 ^all the ones i got obsessed with 13:14:01 Introducing Bitcoinica API (The first RESTful Bitcoin Trading API) (bitcoinica.com) 13:14:10 wow, this headline hits my mental spam filters so hard that it actually gets highlighted 13:14:17 that's not how spam filters are meant to work, brain 13:14:33 good picture 13:17:08 -!- azaq23 has joined. 13:22:23 The style of photography is something one should consider carefully before choosing wedding photographers.wedding photographers perth 13:22:38 Individuals are updating their career or they part in games.What ever the cause that retains them logged into Facebook just about every day is what keeps Facebook to advertise your business enterprise.buy facebook fans 13:23:00 beautiful 13:27:34 http://esolangs.org/forum/ 13:27:35 oh 13:30:55 discount dvd 13:47:02 -!- sliddy has joined. 13:49:04 -!- sllide has quit (Ping timeout: 260 seconds). 13:56:38 I'm bored so I'm going to try and implement as many sorting algorithms as I can. 13:56:57 ok 13:57:38 ...IN WHATEVER LANGUAGE TAKES MY FANCY 13:59:48 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 .). 14:07:59 Quicksort in Python: complete 14:10:17 Taneb: Quicksort in Befunge-93: http://web.archive.org/web/20060218220434/http://kotisivu.mtv3.fi/quux/qsort.html 14:18:32 Bye 14:18:34 -!- Taneb has quit (Quit: Goodbye). 14:22:08 -!- elliott has quit (Read error: Connection reset by peer). 14:22:12 -!- elliott_ has joined. 14:23:59 -!- MSleep has changed nick to MDude. 14:29:28 -!- Lymee has joined. 14:29:28 -!- Lymee has quit (Changing host). 14:29:28 -!- Lymee has joined. 14:32:51 -!- Taneb has joined. 14:34:28 -!- yorick has quit (Read error: Connection reset by peer). 14:36:58 -!- yorick has joined. 14:37:42 -!- yorick has quit (Read error: Connection reset by peer). 14:38:06 -!- yorick has joined. 14:38:08 -!- yorick has quit (Read error: Connection reset by peer). 14:44:36 -!- yorick has joined. 14:54:34 I may take an IO-less language and, most annoyingly, DEFINE IO FOR IT 15:04:37 -!- nooga has quit (Ping timeout: 260 seconds). 15:14:17 -!- DH____ has joined. 15:16:03 Intelligent Design Sort in Jot: 15:35:55 DEAR GOD, PLEASE SORT THIS FOR ME. KTHX 15:36:04 Sorted in O(Jesus) 15:37:32 http://www.dangermouse.net/esoteric/intelligentdesignsort.html 15:38:20 Operates in O(0) time 15:44:56 My Piet sine calculator is nearing completion! 15:46:29 I have two values which, when divided by eachother, return sin(n degrees) where n is a number inputted 15:49:12 Oh God what is going on? It feels like @ is coming together. 15:51:52 Hang on, is @ an OS or a filesystem? 15:51:57 I can't quite remember 15:52:38 I have bad memory: I got Shiro and Mycology mixed up 15:53:33 OS. 15:53:41 Thought so 15:54:07 How much software is on by default? 15:54:49 Eh? 15:55:09 Nevermind, let me think about what I meant 15:55:32 If I replace on with installed, does it make any more sense? 15:56:18 Not really 15:56:41 Will it just be a shell, or will it have a GUI, or what? 15:56:41 I mean, it's... not incoherent, but I'm baffled as to why you'd ask or how I could meaningfully answer it. 15:57:19 Well, it contains the Best UI Ever, which is primarly designed to be used from a graphical device, yes. But it's certainly not windows-icons-menus-pointers. :p 15:57:43 Tell me when I can install 15:57:51 Come back in years 15:58:07 Oh good, my laptop is getting repaired atm 15:59:19 How will @ software be written primarily? 16:00:27 In @lang 16:00:48 Is there a public @lang spec anywhere? 16:00:55 Nope :-) 16:01:01 @ is only slightly better-defined than Feather. 16:01:11 Yay! 16:01:21 But something is starting to make sense. 16:01:26 I don't know what, yet. 16:02:54 In 1785, a Feather derivative will have been about to be created 16:05:00 Called McGraw 16:13:18 -!- derdon has joined. 16:13:35 -!- nooga has joined. 16:25:00 sure wish ais was here so i could confirm that my @ thoughts make no sense at all 16:29:57 -!- ais523 has joined. 16:30:00 -!- nooga has quit (Ping timeout: 240 seconds). 16:38:19 -!- nooga has joined. 16:39:00 -!- derrik has joined. 16:40:25 -!- iconmaster has joined. 16:44:30 -!- nooga has quit (Ping timeout: 240 seconds). 16:58:20 -!- aloril has quit (Ping timeout: 258 seconds). 17:11:31 elliott_: So have you been confirming your @ thoughts 17:11:55 Oh, ais523 started existing 17:12:05 -!- aloril has joined. 17:12:09 And hasn't deleted one of the spam pages for some reason 17:12:23 because there's a time lag on my RSS feed 17:12:29 and it's only just appeared there 17:13:22 and deletd 17:14:02 I aim to be the first non-developer user of @. 17:14:16 there are no non-developer users of @, that's the beauty of it 17:14:39 That doesn't sound very usable 17:14:44 Are there any developer users? 17:15:06 Not at present. 17:16:35 Deewiant: "There are no developer users of @" is maybe a more accurate impression. 17:16:48 But still inaccurate; that's false dichotomies for you. 17:17:00 elliott_: I can translate Taneb's sentence as "the first user of @ who didn't originally help to write it" 17:17:35 ais523: the first uninteresting number? 17:17:59 What is @? A language? 17:18:08 elliott_: well, there's going to be some point at which it's usable 17:18:10 Yes. (Answer likely to mislead.) 17:18:18 tswett: a project to create an OS 17:18:21 err, no 17:18:25 tswett: @ is the embodiment of elliott's hubris. 17:18:31 pikhq: ur mom 17:18:34 a placeholder for the name of an OS that there is currently a project to create 17:18:40 elliott_: I do not mean that as an insult. 17:18:44 pikhq: ur mom 17:18:48 Indeed, hubris is the greatest virtue of a programmer. 17:19:11 oh, I have a very important and interesting question, which came out of the work on Feather I was doing last night 17:19:16 suppose you have a large stack of self-interpreters 17:19:30 you _worked_ on _Feather_? 17:19:31 oh dear god 17:19:34 suppose you have a large stack of self-interpreter such that a stack of self-interps has performance linear in the number of interps in the stack? 17:19:45 err, bad client 17:19:47 ais523: PATTERN-MATCHER SAYS: eigenratios 17:19:56 aha, I forgot about that 17:20:08 http://eigenratios.blogspot.com/2007/11/search-for-phi-holy-golden-ratio.html 17:20:09 mentions you :P 17:20:11 anyway, I decided that more than anything else, I want an eigenratio 1 17:20:15 elliott_: what platform is @ intended to run on? 17:20:22 thanks for reminding me about that 17:20:29 ais523: that post conjectures the minimum is phi 17:20:35 I think 17:20:40 can't you get 1 in Underload? 17:20:46 tswett: Define platform :-) 17:20:49 ais523: that's cheating :-P 17:20:51 I'm allowing cheat-interpreters here, by the way 17:21:03 elliott_: platform, n. Platform. 17:21:06 but, say, in untyped lambda calculus, I can't see how to do it even with cheating 17:21:10 elliott_: oh, I don't mean the ()^ program 17:21:18 I mean suppose you have a list of character codes 17:21:22 in an appropriate format for the language 17:21:24 ok i have a question. did most of the chatters here learn about lambda calculus in school? 17:21:27 tswett: That's a crap definition 17:21:32 tswett: Do you mean computer architecture? 17:21:37 itidus20: Not me 17:21:41 itidus20: I didn't learn about it in school; I forget where I learnt about it, maybe even here 17:21:47 itidus20: No. I have no formal education in CS. 17:21:52 elliott_: I guess I mean whether it runs on bare metal or within some other operating system. 17:21:55 I think I basically understood the concept before learning what it was called, though 17:22:03 (The best operating systems are the operating systems that can only run inside other operating systems.) 17:22:12 (Every operating system should be like that.) 17:22:14 tswett: Well, part of The Beauty of @ is that it can do both. 17:22:20 itidus20: I have only the bare start of a formal education in CS at present. 17:22:25 Excellent. 17:22:31 It's essentially defined in terms of a functional abstract machine with a design eyeing towards efficient translation to hardware. 17:22:47 There's no reason you couldn't use the exact same bytes representing the same objectset from both a window of Linux and natively. 17:22:57 so... was it picked up at workplaces? in books? in chatroom like this one? :D 17:23:13 I suspect that if @ ever gets used in practice, it'll be from a Linux/Xorg implementation, probably talking to an @ server that might even be running on the bare metal. 17:23:14 Internet. Oh so much Internet. 17:23:21 (As in, accessing that server's resources as the primary interface.) 17:23:42 itidus20: Internet. 17:23:45 itidus20: Internet, mainly Wikipedia 17:24:01 ok guys. so nerding out on the internet. :D 17:24:13 here is a good place to learn basic CS concepts 17:24:19 especially the esoterically applicable ones 17:24:23 tswett: The basic intention of @ is to be a fully-reflexive, purely functional, imperative-code-free, distributed operating system with a single-level address space (no ram/disk distinction). 17:24:29 Those are rather broad strokes, but it's a good summar. 17:24:30 y. 17:24:40 elliott_: I suppose that what I want isn't really a self-interpreter, but self-compiler 17:24:45 Apparently, my dad did computer science at university 17:24:57 ais523: PATTERN MATCHER SAYS: Maybe you want a specialiser. 17:25:01 e.g. in C, you can write a C compiler that compiles into memory, then jump to that memory location (not portably, but whatever) 17:25:05 elliott_: what's a specialiser, again? 17:25:24 btw, I'm glad that you're pattern-matching on my Feather discussion, it should help save you from madness 17:25:35 my psyche is probably too broken since about 2000 to actually learn anything 17:25:43 elliott_, well, there's going to be some level of it which is aware of a ram/disk distinction, presumably 17:25:47 so, I decided that call/cc being a primitive is wrong 17:25:58 ais523: a specialiser takes a function (A,B -> C) and A, and returns (B -> C)... the trick being that it evaluates the function partially 17:26:01 because you can implement it using CPS 17:26:05 elliott_: ah, hmm 17:26:06 as in, it creates a version of that function _specialised_ on its first input argument 17:26:17 ais523: you can use a good specialiser to turn an interpreter into an efficient compiler 17:26:18 I'm not sure if that is what I want 17:26:26 well, interp into compiler is what I want 17:26:27 oh, and the languages of the input and output could be different 17:26:36 elliott_, in Haskell, would ($) be a specializer? 17:26:44 ais523: I've already linked you to it, likely, but read http://blog.sigfpe.com/2009/05/three-projections-of-doctor-futamura.html 17:26:48 -!- pikhq_ has joined. 17:26:49 Sgeo: yes, but a bad one 17:28:11 the whole point of specialisers is that they're optimising 17:28:14 -!- pikhq has quit (Ping timeout: 258 seconds). 17:28:18 I remembered what the concept was when elliott_ explained it 17:30:11 elliott_: oh, I see, the idea's that you get a compiler from an interp by specialising a specialiser? that's sneaky 17:30:30 elliott_: what a coincidence. That's also the goal of Jath, except Jath is going to be much worse. 17:30:32 s/sneaky/beautiful/ :P 17:30:43 tswett: Have you shaken off the OOP Mind Virus yet? 17:30:52 * Sgeo misread futamura as futurama 17:32:21 So did everyone. 17:32:21 so did I, and I only noticed it was wrong when I reached the comments section 17:32:28 it's not like the misreading makes any difference to the article 17:32:33 -!- derrik has quit (Ping timeout: 252 seconds). 17:33:40 I've had an idea for an esolang 17:33:42 elliott_: anyway, in Underlambda (which actually has I/O), it's trivial to do a metacircular self-interp with eigenratio 1-in-the-limit 17:34:08 but I don't want to base Feather on that, it's too complex 17:34:11 One that takes as many bad features from "real" languages 17:34:29 the physical analogy is breaking down pretty quickly with the section "specializers" 17:34:42 i hate it when analogies start to become non-literal :P 17:34:55 its like waving to a friend from the train 17:35:48 * itidus20 flaps my arms. 17:36:25 An action, incedentally, that is also not unlike waving to a friend from the train 17:36:40 ais523: http://sprunge.us/Kgae; get excited (note: this will not excite you at all but is the culmination of about two days focused effort and counting so far) 17:36:40 it's like having a box which has infinite cookies inside 17:36:43 elliott_: OK, so I suppose my problem is that I want to write a Feather self-interp that /isn't/ metacircular 17:36:43 such a thing can't exist 17:37:02 or can it? 17:37:04 elliott_: yes, not that exciting... 17:37:20 ais523: it is, though, it's just a boring example as nothing more works right now :D 17:37:30 ANYWAY 17:37:36 ais523: ok, so you want to write a feather interp that isn't metacircular 17:37:39 according to physics and maths can we theoretically have a box with infinite cookies inside? 17:37:50 `addquote according to physics and maths can we theoretically have a box with infinite cookies inside? 17:37:52 648) according to physics and maths can we theoretically have a box with infinite cookies inside? 17:37:55 I don't know but I hope so 17:37:58 so what I was doing wrong is trying to implement too large a subset of Feather directly in Scheme 17:38:09 what I want to do is implement a very very small subset 17:38:26 then a full Feather interp in itself 17:38:41 well, a full proto-Feather interp in itself 17:38:49 followed by a sequence of retroactive modifications to make it into a full Feather interp 17:38:58 elliott_, what Scheme is that? Guile? 17:39:02 Sgeo: Yes. 17:39:08 Guile two, the new major release. 17:39:11 ais523: heh 17:39:13 2 boxes. observing the first box sets the state of the second box to having a cookie inside it. so we proceed to observe the second box and take the cookie. 17:39:40 now, my existing plan put the retroactive modification in the Scheme code itself 17:39:48 that's actually very easy to implement in Scheme; it's the only bit that is 17:40:00 but thinking about it, Scheme isn't Feather so that wouldn't help anyway 17:40:05 ais523: what inspired you to start thinking about feather, anyway? I thought you had rid yourself of it forever 17:40:25 and it makes more sense to implement the retroactive modification in Feather itself, same as everything else 17:40:30 elliott_: I was having trouble sleeping last night 17:40:42 so I just thought "what the hell, I'll think about Feather" 17:40:44 you expected feather to /help/? 17:40:49 then put on the background music from Adanaxis 17:40:58 and started coding 17:41:24 luckily, I didn't hit many major hitches; I decided that the general approach of what I was doing was right but the details were wrong 17:41:27 For someone who disavows the use of all mind-altering substances, your conscious decision to think about Feather in lieu of having anything better to do resembles it somewhat to me :P 17:41:46 in particular, I think I've definitively overcome the first major hurdle (the infinite regress of the definition of atoms) 17:41:48 "Feather: my anti-drug." 17:41:57 Note: anti-drug has more side-effects than drug. 17:42:04 ais523: woot 17:43:10 ais523: can I blab about my @thoughts now? :D 17:43:15 yep, feel free 17:43:35 what's the likelihood you'll pay attention? :P 17:43:35 really, what I'd want is for someone to come up with an untyped lambda calculus self-interp at eigenratio 1 17:43:39 but that seems unlikely 17:43:42 elliott_: pretty low, to be fair 17:43:50 I paid attention to the Featherthoughts :( 17:44:04 -!- derrik has joined. 17:44:04 elliott_: eh, objects seem... potentially useful. 17:44:15 tswett: you're right, @ will be so much better :) 17:44:59 ;p 17:45:00 :p 17:45:02 s/;/:/ 17:45:11 eigenratio 1? 17:45:39 ais523: hypothesis: any interpreter with eigenratio one is a compiler 17:45:49 or rather, is a compiler+execute 17:46:03 otherwise, its intrusion on control flow will _always_ increase the eigenratio beyond this. 17:46:11 indeed 17:46:20 compile+execute is pretty much exactly what I want, for that reason 17:46:30 but I think the compiler has to output into the language itself, and so merely be id... 17:46:39 unless you can compile into a VM then execute that VM without adding overhead 17:46:56 Sgeo: a self-interp that puts an overhead on the language that's proportional to the size of the input program, not how long the program takes to execute 17:47:52 ais523: OK SO @THOUGHTS 17:47:55 elliott_: well, suppose you have a concatenative language, and your input is a list of characters; for each character, you look up in a lookup table what it should compile to, then compose, then execute 17:47:59 -!- Taneb has quit (Quit: compiling noms). 17:48:30 I think that by introducing certain things that /look/ like side-effects into the (FRP-based) language, you can /reinterpret/ the resulting semantics as having no side effects, and this leads directly to an efficient interpretation strategy 17:48:44 ais523: for instance 17:49:13 FRP equals, here? 17:49:17 functional reactive programming 17:49:19 my mind is translating it as "functional reactive programming" 17:49:23 umm, brief introduction 17:49:26 wow, I thought that couldn't possibly be what you meant 17:49:27 type Signal a = Time -> a 17:49:30 type Events a = [(Time,a)] 17:49:39 that's the "model' for FRP but it doesnt match the sematnics exactly 17:49:42 I know what it is, I was forced to learn about it last week 17:49:44 but that's the basic core of the idea 17:49:45 ais523: haha 17:49:48 good 17:49:51 hello 17:49:58 ais523: so consider httpSimpleGetAttempts :: URL -> Events (Either HTTPError HTTPResponse) 17:50:03 ais523, what text editor do you use for your code 17:50:16 cheater: stop interrupting @thoughts, they're a sacred tradition 17:50:18 cheater: usually but not always Emacs 17:50:21 SACRED 17:50:29 for short programs I often use cat 17:50:34 and then nano to fix typos 17:50:36 yeah so do i 17:50:38 ais523: on the face of it, this is totally impure: if you didn't call it and try and use the resulting Events, the OS would make no attempt to contact the server, make an HTTP request, etc. 17:50:41 ais523: right? 17:50:51 i wrote a small wrapper around cat that works as a write-only text editor 17:50:59 elliott_: trying to get my head around it atm 17:51:12 well, the point is that it's not referentially transparent 17:51:14 https://bitbucket.org/cheater/cated 17:51:23 whether you use it or not affects whether the computer decides to perform a side-effect (try and talk to an http server) 17:51:28 which is the /definition/ of impurity 17:51:37 what does "it" equal there? 17:51:50 (httpSimpleGetAttempts x) for some x 17:52:03 ah, I see 17:52:06 so calling it has side-effects 17:52:15 well, not necessarily calling it, but trying to inspect its argument 17:52:16 but anyway 17:52:17 i'll elaborate 17:52:51 ais523: now, the idea is to consider that it represents a simple, objective, immutable fact: all attempts the computer has made to request that URL; semantically, it causes no request to be made 17:52:59 the problem being, how do you actually cause a request to be made? 17:53:06 well, this is the implementation strategy 17:53:17 the OS finds out every event or signal value the code is interested in 17:53:20 and then tries to "make them happen" 17:53:28 for a keyboard input, that'd be listening to the keyboard and routing the events in 17:53:40 for an HTTP request, it'd be contacting the server and trying to request it 17:53:43 ais523, i think i will give it readline support too, that will make it even cooler. i like to use it for commit messages because it's simple to just enter your msg and either press ctrl-c or ctrl-d at the end. 17:53:53 ais523: so in this way, we turn the impurity into an implementation detail 17:54:29 ais523: and interestingly, this becomes the entire way for side-effects to happen 17:54:35 by being interested in them 17:54:48 elliott_: heh, I came to a similar conclusion with Feather 17:54:51 you just say "if this happens, then ..." 17:54:58 and the computer goes "OK, you're interested in that happening" 17:55:03 and registers the event and all that 17:55:15 and if it's something like an http request, well, that's implemented so that interest causes the side-effect 17:55:28 I'm not sure this will actually work but MAYBE IT WILL 17:55:34 I'm not sure it'll actually work either 17:55:45 I think the same about Feather 17:55:50 heh 17:56:23 but anyway, I think I've managed to reduce my idea of this section of Feather so that I can implement a simple demo OS with a minimal amount of platform code (posix/sdl, or raw pc hardware, etc.) + a small amount of portable code 17:56:29 you mean @, right? 17:56:32 so... that's the plan 17:56:33 err 17:56:33 yes 17:56:34 (oops) 17:56:35 (oh dear) 17:56:42 that's a very oh dear mistake 18:01:30 Feather AKA @ AKA Secret Project 18:01:53 The other two are offended by the comparison to the secret project 18:01:59 So is the secret project, it doesn't wish to be associated with such lunatics 18:06:53 the secret project is much saner than Feather 18:06:59 -!- Taneb has joined. 18:07:05 its main distinguishing feature is being secret 18:07:31 ais523: Can I see your WIP Feather interp? Just curious 18:07:45 elliott_: I don't see why not, although disclaimer that I'm going to rewrite it 18:08:03 possibly in a different langauge, because call/cc support isn't needed if I'm not going to metacircular that 18:08:04 it's modified from previously, right? 18:08:14 haskellashekaslehkleklelahkselellashekll 18:08:27 visualbasic2005 18:08:55 http://sprunge.us/TPWh?scheme 18:08:58 elliott_: it is, slightly at least 18:09:14 pretty much all I've done since is just to add a few more Church encodings 18:09:25 I don't think Visual Basic is actually Turing-complete 18:09:58 then when trying to work out whether integers should share I realised "it doesn't matter", and realised that I was trying to do too much of the interpreting in Scheme 18:10:07 I suppose having the Scheme interp will still help for when I translate it into Feather 18:10:49 also, I know I'm really bad at Scheme, don't laugh at it 18:11:09 bet: Feather will end up having a beautifully simple, elegant implementation, and then end up equivalent to some really everyday concept like lazy evaluation or mutual recursion 18:11:11 rather than anything retroactive 18:11:38 QUESTION 18:11:55 In feather, when you change the past, does the present continue? 18:12:06 With the old past 18:15:11 -!- Taneb has quit (Quit: Goodbye). 18:19:18 er, hmm, how can I answer that if Taneb isn't here? 18:19:47 but it goes back to that point in the past and recalculates in there 18:19:56 whether the present ever rehappens depends on what you changed 18:21:25 er, hmm, how can I answer that if Taneb isn't here? 18:21:26 retroactively 18:21:52 Feather's time-travel model is certainly sane and self-consistent, at least 18:25:45 how boring 18:26:50 coppro: you have clearly not thought even the slighest bit about Feather :) 18:33:26 coppro: and you probably want to stay that way :) 18:48:05 hmm 18:48:58 i must say i regret not being schooled at a school where they can cane your fingers 18:49:13 i don't 18:49:14 it sounds more exciting 18:49:24 more character building 18:49:56 students still hate teachers these days... and it makes no difference it seems whether caning is involved 18:50:10 -!- elliott_ has quit (Read error: Connection reset by peer). 18:50:14 now thugs abound 18:50:14 -!- elliott has joined. 18:50:32 10 year olds with shopping trolley poles roam the streets 18:50:51 is this avant garde poetry 18:51:02 no its what i actually heard 18:51:49 the shopping trolleys you see.. you can remove the part which you hold onto when pushing it.. and it becomes a small lightweight baton 18:52:21 so all you have to do is take a shopping trolley away from the store and get the baton part off it 18:52:38 and you have some 10 year olds armed and dangerous 18:53:19 i don't know the full story of course 18:56:14 -!- DH____ has quit (Ping timeout: 260 seconds). 19:05:49 -!- Taneb has joined. 19:06:25 ais523: what would have been the answer to the question I asked before I left? 19:10:11 Taneb: a retroactive change goes back to when the thing you retroactively changed was set 19:10:15 changes it, then reruns from there 19:10:20 whether the present happens again depends on what the change was 19:13:30 i think i am ready to give up on this ridiculous piece of code, so i will post what it is: http://codepad.org/AvNFIw0g 19:14:06 -!- Taneb has quit (Ping timeout: 276 seconds). 19:20:30 -!- quintopia has quit (Ping timeout: 252 seconds). 19:29:40 -!- quintopia has joined. 19:29:41 -!- quintopia has quit (Changing host). 19:29:41 -!- quintopia has joined. 19:33:03 -!- ive has joined. 19:47:42 -!- derrik has quit (Quit: gone). 19:48:22 -!- variable has quit (Quit: I found 1 in /dev/zero). 19:50:00 itidus20, so, just looking at init and insert, the array_size is stored right at the end of all the actual data 19:50:15 And array[0] stores the next available index 19:50:17 Sgeo: ive been hacking it up a bit more since last post 19:50:30 -!- Taneb has joined. 19:50:48 its a terrible mess here: http://codepad.org/meXjY5Eo 19:50:50 Maybe a clear, readable diagram of what's what would be clearer 19:51:20 i just started working on this getindex function but i dont think i remembered exactly what its supposed to do 19:51:33 I note you're still not doing bounds checking. Not that that's bad, but I'm wondering what the point of storing array_size is 19:52:09 i updated it to use allocation at least 19:52:33 its such a ridiculous piece of code 19:52:49 -!- sliddy has quit (Ping timeout: 276 seconds). 19:57:58 Sgeo: basically my poor methodologies as a coder are being revealed 19:58:11 >.> 19:58:13 <,< 19:58:31 Wow, I can barely type <.< 19:58:49 Becuase I'm so used to >.>, that my finger wants to stay on the same key when typing <,< 19:59:28 the variable names a and b soon become kaleidoscopic 20:00:02 because i possibly didn't design the code properly ^_^;; 20:00:08 or at all ^^;; 20:13:08 -!- variable has joined. 20:13:42 -!- augur has quit (Remote host closed the connection). 20:17:08 Is there a way to map a bit string to a BF Joust program with matching loops? 20:18:47 BF Joust programs are a countable set, so yes. 20:18:52 -!- KingOfKarlsruhe has joined. 20:19:11 I mean, is there a way that someone can tell me? 20:20:48 Well, it's a trivially derivable procedure. You could modify bifro, which is a silly, stupid program I wrote to do it a year ago. 20:21:15 It was a rather long discussion, that brainfuck-to-naturals bijection. 20:21:27 Didn't produce much useful, either. 20:21:43 Link on bf page doesn't work 20:21:57 Probably lost forever then 20:22:05 You could reconstruct from logs :) 20:26:25 All the pastie.org links on the corresponding log are dead. :/ :\ 20:26:40 It was in 2010-05-03 anyhow. 20:27:35 elliott: [bifro] has rekindled my love affair with Haskell. 20:27:59 pastie.org died ages ago. 20:28:03 Or rather, all the pastes. 20:28:08 They probably aren't coming back. 20:28:11 It's annoying but OH 20:28:12 WELL 20:28:28 Wayback machine is down 20:28:40 Taneb: Really though, it's not hard to write a bijection. 0-n for all the non-arg instructions, then add on n to the loop case... blah blah. 20:28:52 the only hard part is reducing n of them to one of them in a way that doesn't lead to massive blowup 20:28:53 but uhhh 20:28:55 as for that 20:28:57 you're on your own :P 20:29:03 we didn't find anything satisfactory 20:29:03 afaik 20:29:07 good luck anyway 20:31:03 Especially for nested loops; one version of your bifro produced 63 for [], 590295810358705651711 for [[]], and broke down and cried for [[[]]]. 20:31:24 heh 20:32:59 ok, especially for sgeo, this is another update: http://codepad.org/XPWd2WBX 20:33:39 If you just want to enumerate them all, though, it is probably relatively speaking easier to write a piece of code that generates all legal brainfuck programs e.g. sorted by program length, as long as you don't need the "can be given an arbitrary number/program and must efficiently return the matching program/number without enumerating the whole set" function. 20:35:15 -!- augur has joined. 20:36:33 this one is perhaps even more clear: http://codepad.org/aXHMoksZ 20:43:49 -!- elliott has quit (Ping timeout: 260 seconds). 20:52:03 BF Joust evolutionary programming is probably better done via assembling strategy fragments 20:52:21 Yes, but I'm mad 20:52:21 as in, deciding on the decoy pattern and setup sequence, deciding on the clear loop, deciding whether it defends first or rushes first, etc 20:53:06 * itidus20 ponders. 20:53:46 in a game like rock paper scissors or coin tossing or penny matching there is no perfect play. 20:54:08 unless it is to be truely random 20:54:41 * itidus20 shrugs. 20:55:10 but anyway, with a programming battle game i imagine that what constitutes a perfect play depends entirely on what strategy the opponent chooses 21:01:23 hey, channel, want something to rage at? http://www.reddit.com/r/programming/comments/k9cbj/trollscript_an_esoteric_dialect_of_brainfuck/ 21:03:20 If we raged at every brainfuck derivative out there we would have no time for Dwarf Fortress succession games 21:05:09 saw that language yesterday; died 21:30:21 Is my BF derivative at least a little not idiotic? 21:34:34 Sgeo: i have added some even more ideas to my structure... but it still doesn't have the essence yet of a real data structure.. still missing the vast majority of it's functionality: http://codepad.org/ZWaHYvHz 21:42:41 Taneb, on that subject are you competent to pull levers and move troops. 21:43:20 Insert is O(1). In del_cell(), don't call getindex() twice, this isn't Haskell. 21:43:22 ais523, my faith in /r/programming is vastly increased by the fact that they hated it too. 21:43:23 * Sgeo has more to say 21:43:31 -!- augur has quit (Remote host closed the connection). 21:43:32 Phantom_Hoover: The former but I have a bit to go for the latter 21:43:48 Although that might be a premature optimization *shrug* 21:43:54 Goodnight 21:43:57 -!- Taneb has quit (Quit: Goodbye). 21:43:57 Sgeo: well insert is not really done yeah... 21:44:16 I'm a bit concerned about all the calling of getindex2 in getindex, but I need to see what getindex does before commenting further 21:44:29 heres a cleaner version: http://codepad.org/p4r3O9Ep 21:44:44 not much cleaner though.. just cleaned up main 21:45:07 * Sgeo isn't going to switch right now 21:45:27 sgeo yes i have already asked for too much attention over this 21:45:56 So, getindex2() finds something, and says how many filled-in spots are before it? 21:46:18 * Sgeo is a bit confused 21:46:42 -!- derdon has quit (Remote host closed the connection). 21:47:19 i only figured out what it did by looking at what it did in testing... and forcing myself to use it 21:48:06 basically there is 2 sets of indices... the indices which i calloc'd .. and the indices of the actual data items 21:48:32 * Sgeo gets bored and wanders away 21:49:49 -!- iconmaster has quit (Ping timeout: 276 seconds). 21:50:32 thanks for your input. i started counting how many codepad pastes i was making lately and realized i am starting to subtly become an asshole over it 21:51:23 itidus20, switch to gist.github.com ? 21:51:37 Although that won't run code for you 21:52:08 well i mean i have singled you out for this topic and that is not cool.. its as bad as private messaging 21:52:35 i may as well be sending sms about it >:-) 21:52:39 Well, I probably should have said something 21:53:02 -!- copumpkin has changed nick to gurbles. 21:53:06 nope. 21:53:19 i shouldn't have addressed it all at you though. 21:53:34 -!- gurbles has changed nick to grubIes. 21:53:45 i shouldnt really be updating a room with codepad every 5 mins either 21:54:07 -!- grubIes has changed nick to copumpkin. 21:55:47 i see what you mean about del_cell now 22:02:24 " It was a rather long discussion, that brainfuck-to-naturals bijection." <<< yeah, there are many steps, first you have to list brainfuck programs in lexicographical order, then you have to do nothing else, then you have to be done. 22:04:21 this is even a logspace computation, if i'm not mistaken, so you can do it in O(n) time 22:04:44 my code is absolutely a monstrosity... its even worse than a linked list 22:04:48 hmm wait, that may be complete 22:04:52 bullshit 22:07:48 yeah i dunno how fast it is, except that since the set of bf programs is context-free, there's prolly a polynomial time bijection between numbers (in binary) and bfs 22:10:07 i'll ask someone at the uni on monday, dunno what to search for really 22:12:43 if lengths of n and the length of the nth string are related polynomially, maybe there's a general algo for the bijections, then again on second thought there prolly isn't 22:12:52 nth string in the grammar i mean 22:13:26 obviously if they aren't polynomially related you can't do it, since just printing the out is superpolynomial 22:14:23 -!- DH____ has joined. 22:17:22 would certainly be interesting to research this, but it's prolly known to death 22:19:14 i finally realized that my whole idea is pointless since arrays have never been difficult to delete from, only difficult to insert into 22:19:53 -!- Sgeo has quit (Ping timeout: 245 seconds). 22:20:03 -!- zzo38 has joined. 22:20:04 how do you delete from an array? well i guess i know what you mean 22:20:16 theres 2 ways 22:20:37 1 way is to have a deleted state for each cell of the array which can be toggled 22:20:38 store the index of next valid and previous valid is one i suppose 22:21:04 but you can't index anymore so it's a bit stupid 22:21:15 with your way, you can't even iterate 22:21:24 with my way, you at least have a linked list 22:21:46 what's the other one 22:22:50 i mean you can't iterate in amortized constant time w.r.t. current size of array 22:23:15 the other one is just some ridiculous thing like next valid yeah 22:23:43 next valid and last valid, yeah, that lets you iterate 22:23:55 but i didn't do next valid and last valid 22:24:03 next valid also lets you iterate, but then deletion is not constant time 22:24:07 it's linear 22:24:09 i am going to abandon this code altogether.... 22:24:14 but i will show you it 22:24:22 http://codepad.org/mre22niv 22:24:27 so you might as well just move all the elements 22:24:49 in which case you have indexing again 22:25:14 -!- KingOfKarlsruhe has quit (Quit: ChatZilla 0.9.87 [Firefox 6.0.2/20110902133214]). 22:25:18 its really a hopeless mess... and it was nowhere near complete 22:25:46 and finally i came to my senses and realized its not even going to help the insert problem 22:26:19 i don't get del_range 22:26:31 it deletes from 2 to 3 :)) 22:26:37 in the example 22:27:42 its very absurd code.. one might almost say obfuscated 22:27:46 well i dunno what array actually contains 22:28:00 values + blanks? 22:28:07 and 0 is length 22:28:32 it contains run lengths and next valids 22:28:46 but the insert and delete code wasn't finished either 22:29:26 how do you make sure deletion doesn't make next valid pointers invalid 22:29:43 its not done :P 22:29:49 oh okay 22:29:55 you can't do it in constant time 22:29:58 hummmmmm 22:30:06 with just next valid pointers 22:30:30 it's linear 22:30:48 same complexity as the usual deletion where you shift everything 22:30:50 its very incomplete.. im just glad i finally realized how useless it is 22:31:55 someone in another chat said linked list is better than arrays for deletion.. so i was tempted to challenge the idea by working on it 22:32:16 everyone does that at one point or another i suppose 22:32:24 it's a dead end 22:33:05 well, not quite, but i think the only solutions have a logarithic stack of arrays simulating a tree 22:33:24 don't ask for details, my data structure days are long gone 22:33:35 ok 22:33:58 trees are really the only way to get indexing, deletion and insertion fast at the same time 22:34:17 -!- Sgeo has joined. 22:34:59 you get log n for everything 22:35:28 prolly amortized, since you need to balance the tree a bit every now and then 22:37:37 arrays have constant indexing, linear deletion and insertion, lists have those swapped (if the latter two operations are done with pointers), and trees get log n for all, it's and interesting trade-off, really 22:40:29 and as for how to actually do the tree stuff, i suppose you could store, at every child, how big the tree is under it, let's call it "size info". then, balancing only requires a logarithmic change (each flip needs only local size info changes), insertion and deletion only change size info on the path from node to root, and indexing is obviously logtime if the tree is balanced 22:41:13 assuming you know, say, roughly how red-black trees work 22:41:15 well i certainly don't "need" rapid deletion or insertion for anything. it was just the naive exploration of the array :D 22:41:55 naive exploration is fun but there's a rich theory you should look into first, your ideas will become richer as wekk. 22:41:58 *well 22:42:25 another idea which occured to me is a series of hops between deleted cells 22:42:37 wuzzat 22:42:51 cell 0 would contain an index of the first deleted cell 22:43:11 and the first would contain an index of the second and so forth 22:43:27 again, linear deletion 22:43:31 yup 22:43:40 and it would kill off the indexing 22:44:00 yes. there's no known solution, you should give up :P 23:05:38 -!- FireFly has quit (Quit: FireFly). 23:15:32 -!- jix has quit (Ping timeout: 258 seconds). 23:18:54 -!- jix has joined. 23:24:29 -!- Vorpal has joined. 23:45:02 -!- DH____ has quit (Remote host closed the connection). 23:56:07 -!- Patashu has joined.