←2011-09-09 2011-09-10 2011-09-11→ ↑2011 ↑all
00:03:53 -!- DH____ has joined.
00:04:38 <DH____> Anyone alive?
00:05:12 <tiffany> nope, we're all zombies
00:05:14 <tiffany> brainnnssss
00:05:30 <DH____> Ah well
00:05:54 <oerjan> lots of brainsss here
00:06:04 <DH____> I had an idea...
00:06:07 <elliott> oerjan: I got esolangs.org fixed, say hi to alandipert :P
00:06:07 <CakeProphet> mmmmmmmrgh
00:06:28 <oerjan> alandipert: hi :)
00:06:34 <alandipert> hi
00:06:39 <alandipert> success!
00:07:37 <DH____> You know how they've started modulating network traffic into power currents to send the.internet through power lines?
00:07:57 <CakeProphet> no..
00:08:56 <DH____> And you know how POSe during the war communicated by tapping morse-code over the pipework?
00:09:19 <DH____> *POWs
00:09:29 <CakeProphet> Sure.
00:10:23 <DH____> Why not combine the two and send network traffic through the central heating systems of buildings?!
00:11:13 <CakeProphet> I'd imagine HTTP requests would get a little noisy, if I'm imagining this correctly.
00:12:01 <DH____> Use a frequency above 22kHz and no-one will hear...
00:12:48 <CakeProphet> ah, yes I was following the analogy a bit strictly. :P
00:13:15 <CakeProphet> still modulating high voltage currents seems... unecessary.
00:13:47 <DH____> You could still use Morse if you wanted, it would just have to be fast...
00:14:22 <Jafet> Especially when using it to transmit XML.
00:14:24 <oerjan> alandipert: i was reminded of something - is the email address in the esolangs.org whois correct?
00:14:39 <alandipert> it is not, will update
00:14:52 <alandipert> well, it's a valid e-mail address :-)
00:15:02 <CakeProphet> DH____: ah BPL isn't as common in the US, so that's why I've never heard of it.
00:16:31 <CakeProphet> 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 <CakeProphet> 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 <oerjan> <itidus20> what would be the opposite thing which is crammed with side effects
00:20:59 <oerjan> a language in which calculating 2+2 wrote to stdout, and stuff
00:21:31 <Patashu> and you have to read the result from stdout
00:22:04 <oerjan> good idea
00:23:35 <CakeProphet> hmmm.... sounds like an interesting challenge.
00:23:45 <CakeProphet> to have every computation as a side effect.
00:24:00 <monqy> a language in which to calculate 2+2 you must mutate state
00:24:05 <CakeProphet> yep.
00:24:06 <monqy> p.s. that's the joke
00:24:20 <CakeProphet> hmmm, do stack-based languages count?
00:24:21 <oerjan> hm technically that was my idea for arithmetic in my Reaper vaporlang
00:24:55 <CakeProphet> ah, no I wouldn't count a stack based lang. Nothing can return anything.
00:24:59 <Gregor> Even by the standard of weebls-stuff, http://www.weebls-stuff.com/songs/Babies/ is really friggin' wtf.
00:25:12 <oerjan> CakeProphet: not necessarily, e.g. you can think of Underload as pure
00:25:40 <oerjan> at least without S, possibly even with
00:26:20 <oerjan> it's just taking a stack and returning a stack
00:26:51 <CakeProphet> 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 <CakeProphet> that's pretty side-effect-ful.
00:27:19 <oerjan> yeah
00:27:34 <elliott> <oerjan> it's just taking a stack and returning a stack
00:27:38 <elliott> well everything is just taking a world and returning a world.
00:27:47 <CakeProphet> elliott: Haskell mind virus.
00:27:52 <CakeProphet> :P
00:27:55 <elliott> CakeProphet: um I was _pointing out_ a mind virus
00:28:03 <elliott> that considers everything pure
00:28:04 <CakeProphet> with another mind virus, yes.
00:28:08 <elliott> no, I was not
00:28:27 <monqy> it was a reference to the mind virus not practice of it
00:28:46 <monqy> _or whatever the terms are_
00:28:48 * oerjan mentions the mind virus without using it
00:28:48 <CakeProphet> that's, perfectly acceptable in relation to what was said.
00:29:10 <oerjan> monqy: ^
00:29:27 <monqy> mind virus
00:30:05 <oerjan> actually use/mention might be at a different level than reference/practice
00:30:08 <CakeProphet> programing is a mind virus.
00:30:21 <oerjan> with use ~ reference being closest
00:30:30 <CakeProphet> #esoteric is a mind virus.
00:30:51 <oerjan> CakeProphet: no it is not and please report for termination
00:31:02 <CakeProphet> so one thing I never figured out was how binary operators were to work in bugsophia
00:31:16 <CakeProphet> 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 <CakeProphet> but... I'm not sure where the result goes.
00:31:49 <oerjan> to the nursery
00:31:56 <CakeProphet> ha.
00:32:00 <CakeProphet> that's a possibility.
00:32:17 <CakeProphet> they could also spawn a new thread at the operator which then travel down whichever path was not originally taken.
00:32:31 <CakeProphet> or overwrite one or both of the threads ASM style.
00:32:44 <CakeProphet> (well, one is asm style, both is so I don't have to write rules for how that works. :P )
00:33:52 <itidus20> 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 <monqy> 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 <monqy> or would this not work at all due to how bS works
00:34:50 <monqy> (because this page is not really a complete enoguh spec for me to get the langauge)
00:35:06 <monqy> this page being http://esoteric.voxelperfect.net/wiki/BugSophia
00:36:54 <Patashu> it doesn't explain what the symbols do
00:36:55 <Patashu> I am disappoint
00:38:37 <elliott> "EU Officially Seizes The Public Domain, Retroactively Extends Copyright"
00:38:45 <elliott> nice.
00:39:16 <DH____> When did that happen?
00:39:30 <Patashu> wat
00:39:32 <Patashu> you can't do that
00:39:55 <elliott> http://www.techdirt.com/articles/20110908/15491315851/eu-officially-seizes-public-domain-retroactively-extends-copyright.shtml
00:39:57 <elliott> Patashu: they just did
00:40:03 <elliott> DH____: just now
00:40:09 <elliott> for good values of just now
00:40:26 <itidus20> does this include the bible?
00:40:43 <elliott> I think the bible has been public domain for longer than twenty years.
00:40:53 <itidus20> ah its only for 20 years?
00:41:18 <Patashu> 'only'
00:41:19 <Patashu> :|
00:41:24 <CakeProphet> monqy: the page is all that remains of the spec, which was never complete.
00:41:29 <CakeProphet> so really it's up for reinterpretation.
00:41:32 <monqy> ;_;
00:41:39 <CakeProphet> partial application is interesting though.
00:41:54 <monqy> partial application Always the Right Way
00:42:11 <CakeProphet> not necessarily for an esolang though.
00:42:36 <pikhq> Patashu: It's been done in the US.
00:42:50 <CakeProphet> 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 <DH____> Meh, I dunno about you, but i'll just pirate stuff if it's mo longer public domain...
00:43:01 <CakeProphet> which would make binary operators not impossible.
00:43:42 <pikhq> Especially annoying since doing such an action is quite probably against the US constitution.
00:43:52 <pikhq> (you can't do retroactive laws)
00:44:44 <CakeProphet> pikhq: I think the US constitution stopped being enforced since... well, since it was ratified.
00:45:12 <pikhq> Still irritating.
00:45:17 <CakeProphet> well, I haven't had any soldiers taking quarter in my home
00:45:18 <pikhq> Especially given how utterly clear it is.
00:45:21 <CakeProphet> so that parts been done well.
00:45:24 <itidus20> The public domain creates problems in the marketing sector, because it makes people less needy as consumers.
00:45:29 <pikhq> "No [...] ex post facto Law shall be passed."
00:45:56 <CakeProphet> itidus20: obviously open source software has not brought down microsoft or apple.
00:46:00 <pikhq> Inexplicably, the Supreme Court has ruled this applies to only some ex post facto laws.
00:46:08 <CakeProphet> or any other large software company.
00:46:11 <alandipert> is calamari still around?
00:46:17 <alandipert> (like, generally?)
00:46:17 <elliott> alandipert: Sometimes, doesn't talk much though
00:46:31 <elliott> fizzie's still around, I dunno who else was active Back Then(tm)
00:46:35 <itidus20> CakeProphet: its ok my words are cooked in a marinade of sarcasm
00:46:39 <elliott> lament denies the channel exists :P
00:46:49 <elliott> CakeProphet: Not in the desktop sector, but Linux is doing pretty good in the server market
00:46:57 <pikhq> Yes, "no" means "some".
00:47:05 <oerjan> elliott: you _really_ should try not chasing people away, you know :(
00:48:03 <elliott> oerjan: Who?
00:48:12 <CakeProphet> oerjan: what? elliott would never do such a thing.
00:48:12 <oerjan> elliott: lament, for example :P
00:48:26 <CakeProphet> oerjan: he would just make them chase themselves away.
00:48:34 <elliott> 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 <CakeProphet> yes?
00:48:44 <oerjan> O KAY
00:48:45 <CakeProphet> ...er
00:48:48 <CakeProphet> s/yes/see/
00:48:51 <CakeProphet> weird
00:48:53 <itidus20> "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 <elliott> oerjan: Seriously, I had no idea I bothered him that much until he decided to yell at me.
00:49:01 <pikhq> "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 <pikhq> The fuck?
00:49:07 <elliott> I'm not entirely sure it wasn't a post-facto blame on his part.
00:49:50 <CakeProphet> pikhq: lol what
00:49:55 <CakeProphet> not a punishment? okay.
00:50:03 * oerjan has an urge to institute a "no pol" prohibition on the channel
00:50:05 <pikhq> CakeProphet: The ban is on *all ex post facto laws*.
00:50:08 <pikhq> Literally all.
00:50:11 <itidus20> public domain is a commie plot
00:50:17 <Patashu> political discussion is boring in here
00:50:19 <Patashu> since we all agree already
00:50:43 <itidus20> 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 <CakeProphet> but I'm not going to let it happen.
00:51:44 <elliott> Patashu: there's plenty of disagreement here, but it's all on the same boring things, so who cares
00:51:48 <zzo38> I write some programs public domain.
00:52:23 <CakeProphet> elliott: I LOVE PRAGMATISM.
00:52:36 <CakeProphet> GRRRRR
00:53:05 <monqy> perl can die in a fire
00:53:05 <CakeProphet> I don't explicitly license my programs for anything
00:53:08 <CakeProphet> so what is that?
00:53:15 <CakeProphet> copyright?
00:53:23 <elliott> are you serious
00:53:28 <CakeProphet> yes.
00:53:36 <elliott> no but like really serious
00:53:38 * CakeProphet hasn't written anything that has been distributed.
00:53:48 <zzo38> 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 <elliott> apart from mafia software
00:53:59 <elliott> NOTE TO MAFIA: above comment is joke
00:54:14 <itidus20> zzo38: you are not helping make the rich richer. that makes you their enemy
00:54:57 <itidus20> how can GNU generate government revenue? how?
00:55:01 <itidus20> :P
00:55:01 <CakeProphet> elliott: what? I most certainly have no affiliation with the mafia.
00:55:26 <CakeProphet> 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 <zzo38> 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 <CakeProphet> elliott: but I was under the impression that copyright is the default... if not specified.
00:56:44 <CakeProphet> in the US anyways.
00:56:51 <CakeProphet> we <3 copyright.
00:56:55 <elliott> berne convention dude
00:57:11 <itidus20> they're getting rid of the public domain and prior art to coincide with 9/11
00:57:34 <oerjan> a bat - made of wood. flapping its wings on your knee.
00:57:51 <CakeProphet> elliott: halp legalese.
00:58:09 <CakeProphet> TO WIKIPEDIA
00:58:44 <CakeProphet> oh well that wasn't helpful.
00:58:56 <zzo38> itidus20: Who told you that?
00:59:19 <oerjan> TO THE WIKIMOBILE
00:59:23 <itidus20> im just being cranky
00:59:30 <oerjan> (i was already bat inspired)
00:59:35 <itidus20> but yeah... new patent laws changing things in US
00:59:52 <CakeProphet> elliott: I'm not finding anything that's suggesting I'm incorrect...
00:59:58 <CakeProphet> man I wish you just explained things. SO MUCH EASIER.
01:00:11 <elliott> Explaining things is for LOSERS.
01:00:55 <oerjan> CakeProphet: i believe his comment was agreeing with you, actually
01:01:08 <CakeProphet> oh okay.
01:01:30 <elliott> thanks oerjan, you're a pal
01:01:56 <oerjan> 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 <CakeProphet> 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 <CakeProphet> THUS MY CONFUSION.
01:02:45 <elliott> Everything you do demonstrates your ignorance. Even when you're right.
01:02:50 <elliott> This is true of all people who aren't me.
01:02:53 <CakeProphet> elliott: dude, come on, what you said was just correct.
01:03:10 <oerjan> s/ignorance/arrogance/ and guess who that sentence now describes...
01:03:23 * oerjan whistles innocently
01:03:45 <CakeProphet> oerjan: hey I take offense to that.
01:03:48 * CakeProphet isn't /that/ arrogant.
01:04:00 <oerjan> CakeProphet: WRONG GUESS
01:04:10 <zzo38> 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 <CakeProphet> hmmm, I wonder if that's a legal gray area.
01:04:36 <CakeProphet> since a wiki does not have one author.
01:04:51 <CakeProphet> granted you can look up the changelog
01:04:56 <oerjan> CakeProphet: most wikis have a license that you agree to by posting, surely?
01:05:16 <CakeProphet> right, I mean, it might be a gray area to declare a work public domain on a wiki.
01:05:28 <CakeProphet> instead of elsewhere.
01:05:33 <zzo38> 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 <elliott> Can I get an exclamation mark?
01:06:15 <CakeProphet> No!
01:06:19 <CakeProphet> ...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 <zzo38> Esolang wiki is also completely by public domain.
01:06:53 <CakeProphet> elliott: list subscripting? factorial? logical negation? or are you just yelling at someone?
01:07:01 <elliott> Negation.
01:07:05 <elliott> Also yelling! ! ! !
01:07:08 <elliott> s/spaces/no spaces/
01:07:17 <CakeProphet> ...that didn't change your statement
01:07:18 <CakeProphet> that s///
01:07:38 <elliott> Yes it did.
01:07:41 <oerjan> CakeProphet: i think he may have used some non-standard character classes
01:07:45 <CakeProphet> I only accept properly formatted perl regex.
01:08:13 <CakeProphet> s/\s//g is correct but then you're just saying Alsoyelling!!!!
01:08:26 <CakeProphet> so I think you probably want something like s/!\s/!/g
01:08:54 <oerjan> CakeProphet: clearly he needs a variant of /g which applies to all matches _except_ the first.
01:09:12 <CakeProphet> ...not for s/!\s/!/g .....
01:09:22 <CakeProphet> DON'T OVERCOMPLICATE
01:09:33 <CakeProphet> regex is not something to overcomplicate.
01:09:37 <CakeProphet> all regex should be clean and elegant.
01:09:44 <monqy> it's already overcomplicated
01:09:51 <CakeProphet> lies.
01:09:53 <monqy> virtue of being regex
01:09:54 <oerjan> overcomplicatude is mandatorial!
01:10:14 <zzo38> 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 <CakeProphet> regex is clearer than most programs it is equivalent to. With the exception of parser combinatorics perhaps.
01:10:45 <monqy> zzo38: how about more generally a multi-clause lambda
01:11:03 <zzo38> monqy: How would that work?
01:11:08 <oerjan> zzo38: such a good idea others have already suggested it
01:11:44 <oerjan> http://hackage.haskell.org/trac/haskell-prime/wiki/LambdaCase
01:11:48 <elliott> Yeah, everyone wants "case of".
01:11:55 <monqy> zzo38: like lambda but you can have multiple [pat]->exp deals
01:12:21 <CakeProphet> that's not quite the same as a curried form of a case expression.
01:12:22 <zzo38> oerjan: Yes, exactly like that is what I mean.
01:12:23 <CakeProphet> more verbose.
01:12:25 <monqy> just like with normal named functions
01:12:45 <elliott> more verbose
01:12:45 <monqy> CakeProphet: whats "curried form of a case expression"
01:12:46 <CakeProphet> monqy: oh wait I see.
01:12:46 <elliott> ?
01:12:51 <CakeProphet> elliott: nevermind I misinterpreted.
01:12:59 <oerjan> monqy: that's a different syntactic sugar for the same thing, and has also been suggested before.
01:13:03 <CakeProphet> monqy: what zzo38 is talking about.
01:13:19 <oerjan> oh wait
01:13:29 <monqy> oerjan: it's a bit more general isn't it? since you can have multiple argument things and all
01:13:32 <oerjan> the one with lambda can take several arguments
01:13:36 <monqy> yeah
01:14:07 <CakeProphet> but what about point-free addicts?
01:14:09 <CakeProphet> what will they do?
01:14:12 <elliott> case of {X -> case of {Y -> z}}
01:14:15 <CakeProphet> obviously we need zzo38's case form.
01:14:16 <elliott> PERFECT
01:14:20 <elliott> ooh, wait
01:14:22 <elliott> what if you could say
01:14:24 <monqy> CakeProphet: what about them?
01:14:25 <oerjan> 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 <elliott> case , of {X,Y -> z}
01:14:31 <CakeProphet> monqy: we need to satisfy their addiction.
01:14:35 <elliott> case ,, of {X,Y,Z -> blah}
01:14:39 <elliott> B E A U T I F U L
01:14:47 <monqy> CakeProphet: and how would you satisfy it
01:14:55 <CakeProphet> monqy: ......
01:15:09 <CakeProphet> I refuse to explain.
01:15:12 <monqy> CakeProphet: I'm asking you questions because I have a suspicion you're wrong about something
01:15:21 <CakeProphet> monqy: yes I've noticed.
01:16:46 <monqy> 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 <zzo38> 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 <CakeProphet> elliott: I'm not really sure I understand what the , and ,, are for there.
01:17:11 <elliott> CakeProphet: automatic uncurrying. it is so beautiful. so beautiful.
01:17:33 <CakeProphet> erm...
01:17:36 <CakeProphet> :t uncurry
01:17:37 <lambdabot> forall a b c. (a -> b -> c) -> (a, b) -> c
01:17:45 <CakeProphet> ah.
01:17:52 <CakeProphet> no that's stupid. :P
01:18:00 <monqy> 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 <elliott> erm
01:18:12 <elliott> currying
01:18:14 <elliott> automatic currying
01:18:29 <zzo38> But you could also have a template haskell code to generate uncurrying for any specified number of arguments you want
01:18:36 <CakeProphet> AUTOMATIC CURRY MMMMM DELICIOUS
01:18:36 <elliott> case,, of {A,B,C -> e} ------> case of {A -> case of {B -> case of {C -> e}}}
01:18:39 <Lymee> @pl \f t -> f (fst t) (snd t)
01:18:40 <lambdabot> (`ap` snd) . (. fst)
01:18:45 <monqy> namely [||] whined about the stuff in it (in the future bound by the stuff in the [p||]) not being in scope
01:18:52 <Lymee> :t uncurry
01:18:53 <lambdabot> forall a b c. (a -> b -> c) -> (a, b) -> c
01:18:56 <Lymee> :t curry
01:18:58 <lambdabot> forall a b c. ((a, b) -> c) -> a -> b -> c
01:19:11 <Lymee> Are curry and uncurry actually used for anything?
01:19:12 <monqy> and I didn;t feel like doing anything fancy with quasiquoter sso I _gave up_
01:19:20 <monqy> I've used them
01:19:20 <CakeProphet> Lymee: curry takes something that is bland and makes it DELICIOUS.
01:19:40 <monqy> uncurry takes something delicious and makes it BLAND
01:19:51 <Lymee> @pl \f a b -> f (a, b)
01:19:51 <lambdabot> (. (,)) . (.)
01:19:57 * Lymee not sure why she's doing something so silly
01:20:07 <oerjan> http://hackage.haskell.org/trac/ghc/ticket/4359 is the ticket for the discussion of adding this stuff to ghc
01:20:08 <Lymee> Oh well.
01:20:19 <CakeProphet> Lymee: I believe something is wrong with your nipples
01:20:23 <CakeProphet> they look a little... deformed.
01:20:27 <Lymee> perv.
01:20:30 <oerjan> lots of discussion of exactly what variant to use
01:20:56 <CakeProphet> the best solution is use Perl 6 whatevers.
01:21:09 <monqy> oh that reminds me: I need nested guards
01:21:15 <CakeProphet> and then you can have partially applied if statements.
01:21:20 <monqy> and pointfree addict guards
01:21:25 <Lymee> @pl \f1 f2 a b -> f1 (f2 a b)
01:21:26 <lambdabot> (.) . (.)
01:21:26 <CakeProphet> you know because that's completely different from cases.
01:21:27 <monqy> and first class patterns
01:21:27 <CakeProphet> completely.
01:21:36 <zzo38> 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 <CakeProphet> Lymee: (.|.) is the flat chest operator.
01:21:57 <Lymee> @pl \f1 f2 a b c -> f1 (f2 a b c)
01:21:58 <lambdabot> (.) . (.) . (.)
01:22:09 <oerjan> Lymee: curry and uncurry are useful for pointfree code
01:22:15 <Lymee> Ah.
01:22:16 <Lymee> @pl \f1 f2 f3 a b c -> f1 (f2 (f3 a b c))
01:22:18 <lambdabot> (. ((.) . (.) . (.))) . (.) . (.) . (.) . (.)
01:22:46 <zzo38> Well, I might find generalized curry and uncurry useful with more-notation, too.
01:22:48 -!- Sut-Heb has joined.
01:23:00 <Lymee> @pl \f1 f2 f3 f4 f5 a -> f1 $ f2 $ f3 $ f4 $ f5 a
01:23:01 <lambdabot> (. ((. ((. (.)) . (.) . (.))) . (.) . (.) . (.))) . (.) . (.) . (.) . (.)
01:23:02 <monqy> more notation strikes again
01:23:09 <CakeProphet> > ((:[])>=>(:[])>=>(:[])) --the angry totem pole is applicable to all situations.
01:23:10 <lambdabot> Overlapping instances for GHC.Show.Show (b -> [b])
01:23:11 <lambdabot> arising from a use of...
01:23:13 <monqy> does more notation work with tuples or just lists
01:23:34 <Lymee> :t ((:[])>=>(:[])>=>(:[]))
01:23:36 <lambdabot> forall b. b -> [b]
01:23:43 <zzo38> CakeProphet: That is the same as return for list monad, I think
01:23:48 <Lymee> > ((:[])>=>(:[])>=>(:[])) 1
01:23:48 <CakeProphet> zzo38: no it is angrier.
01:23:49 <lambdabot> [1]
01:23:53 <Lymee> =p
01:24:02 <zzo38> CakeProphet: Yes, but other than its angriness it is the same.
01:24:28 -!- Sut-Heb has left.
01:24:30 <Lymee> > ((:[])>=>(:[])>=>(:[])>=>(:[])>=>(:[])>=>(:[])>=>(:[])>=>(:[])>=>(:[])>=>(:[])>=>(:[])>=>(:[])) 1
01:24:32 <lambdabot> [1]
01:24:33 * Lymee hides
01:24:34 <CakeProphet> zzo38: well the [] is obviously the totem poles belly after it has had delicious snack.
01:24:42 <monqy> shakes head
01:24:46 <oerjan> 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 <monqy> frowns
01:24:47 <monqy> scowls
01:24:50 <CakeProphet> > fix ((:[])>=>) 1
01:24:51 <zzo38> monqy: It works with lists, not with tuples, although you can use tuples in the case alternatives
01:24:52 <lambdabot> *Exception: stack overflow
01:25:08 <zzo38> oerjan: Yes, that one, you called "bool" is the one I prefer
01:25:11 <oerjan> zzo38: oh wait that's what you said. if' has the boolean first.
01:25:20 <monqy> bool is the good variant
01:25:50 <oerjan> zzo38: yeah bool corresponds to Bool in the same way as either and maybe correspond to Either and Maybe
01:25:53 <monqy> :t bool
01:25:54 <lambdabot> Not in scope: `bool'
01:25:55 <monqy> crys
01:26:07 <oerjan> monqy: sad stuff
01:26:25 <zzo38> oerjan: OK
01:26:27 <olsner> hmm, someone highlighted me while I was gone, and it seems they got scrolled past my scrollback
01:27:05 <CakeProphet> I am ashamed at Haskell for not allowing the infinite totem pole.
01:27:36 <olsner> not "allowing"? what does haskell have to do with totem poles?
01:28:03 <monqy> fix (return>=>) 5
01:28:04 <Sgeo> What's a totem pole?
01:28:08 <CakeProphet> also, what monad law is return >=> return obeying? it is slightly ambiguous.
01:28:08 <monqy> oops I messed it up
01:28:09 <monqy> oops
01:28:14 <monqy> I forgot the > too
01:28:17 <monqy> > fix (return>=>) 5
01:28:18 <lambdabot> No instance for (GHC.Show.Show (m c))
01:28:18 <lambdabot> arising from a use of `M2187083411...
01:28:22 <zzo38> 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 <monqy> > fix ((:[])>=>) 5
01:28:28 <lambdabot> *Exception: stack overflow
01:28:32 <monqy> yeah I messed it
01:28:35 <monqy> crey:_;
01:28:48 <oerjan> 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 <CakeProphet> I guess return >=> return is both right identity and left identity at the same time.
01:29:29 <zzo38> (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 <monqy> whats categorys help
01:30:08 <zzo38> You can look up category theory in Wikipedia, too.
01:31:29 <CakeProphet> 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 <CakeProphet> but it doesn't really matter because it amounts to the same thing.
01:31:51 <oerjan> CakeProphet: that's the same problem in any monoid
01:32:19 <copumpkin> CakeProphet: the monad laws aren't even represented directly by >=>
01:32:20 <oerjan> kleisli categories are like monoids, except parametrized, i think
01:32:32 <copumpkin> categories are like monoids, except parametrized
01:32:36 <copumpkin> kleisli categories are categories
01:32:45 <oerjan> ...right
01:33:02 <monqy> I can never remember how to spell Kleisli
01:33:46 <oerjan> monqy: as long as you don't do that annoying ie - ei confusion
01:34:05 <CakeProphet> repeat "Kliesli"
01:34:19 * oerjan hits CakeProphet with the saucepan ===\__/
01:34:41 <CakeProphet> -,-`-@
01:34:55 <oerjan> argh, thorns!
01:35:10 <monqy> cakeprophets face irl
01:35:17 <oerjan> aha
01:35:31 <monqy> what did you put on that sauce pan
01:35:36 <monqy> which could do that
01:35:37 <monqy> to a face
01:35:40 <CakeProphet> monqy: help y do u h8 me?
01:35:43 <CakeProphet> :(
01:35:46 <monqy> :(
01:36:13 <CakeProphet> time to play DF. hopefully I won't die.
01:36:17 <copumpkin> need moar categoriez
01:36:21 <CakeProphet> (spoiler: I will die)
01:36:36 <oerjan> monqy: metal
01:40:36 <Sgeo> Current nostalgia target: WebTV
01:42:57 <elliott> are you serious
01:43:38 <Sgeo> yes
01:43:44 <elliott> wow
01:44:37 * Sgeo misses some of the music
01:44:54 <elliott> why did you even have a webtv
01:45:36 <Sgeo> My dad bought one for my grandmother a long time ago
01:50:39 <Sgeo> 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 <Sgeo> http://zathmari.fortunecity.com/267.html Gargleblurb
01:53:04 <Sgeo> Wait don't click that
01:53:17 <Sgeo> Here's some links:</font><br><br><font face="Arial" size="2"><script src="http://viosearch.info/2/js.php?qr=5&f=v&q=background music on webtv classic&said=DO-FDIM&l=tu"></script></font></td>
01:53:23 <Sgeo> A bit creepy
01:55:30 <elliott> Too late, I clicked that
01:56:03 <elliott> 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 <oerjan> <elliott> I hate the ordering of unsigned's arguments
01:57:39 <oerjan> no it's just right for cutting and pasting from the history page
01:58:30 <elliott> noooooooo
01:58:34 <elliott> also, you can't cut from a webpage.
01:58:41 <oerjan> *copy
02:00:51 -!- azaq23 has quit (Quit: Leaving.).
02:05:23 -!- Anonymous has joined.
02:05:30 <oerjan> <Phantom_Hoover> 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 <oerjan> i distinctly recall mentioning it on the channel. or did i...
02:05:58 <Guest73432> Hello
02:06:07 <oerjan> hi Guest73432
02:06:22 <Guest73432> hi oerjan
02:06:54 <Gregor> Arguably, "Guest73432" is considerably more anonymous than "Anonymous"
02:07:12 <oerjan> (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 <Guest73432> numbers are harder to remember than words
02:08:15 <Gregor> What's all this supernova now?
02:08:19 <oerjan> of course i don't have any vision enhancing equipment available.
02:08:54 -!- Guest73432 has left.
02:09:19 <Gregor> Clearly we impressed our anonymous guest.
02:10:49 <oerjan> Gregor: in the big dipper
02:11:34 <Gregor> "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 <oerjan> in that region. the supernova itself is > 20 million years away, so unlikely to affect any normally visible stars
02:12:37 <Gregor> Ah.
02:13:07 <Gregor> It would be pretty amazing if one of the stars that forms the big dipper blew up :P
02:14:14 <oerjan> yes.
02:16:18 <oerjan> VY Canis Majoris _is_ the largest known star and listed on http://en.wikipedia.org/wiki/List_of_supernova_candidates
02:16:46 <oerjan> but i don't think it's one of the "big dipper" stars.
02:17:12 <oerjan> http://en.wikipedia.org/wiki/Big_dipper
02:17:34 <oerjan> M101 in the upper left there is the galaxy where the current supernova is
02:28:08 <oerjan> http://en.wikipedia.org/wiki/SN_2011fe
02:32:27 <zzo38> "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 <oerjan> zzo38: that rings a bell
02:33:28 <oerjan> forth pages or something
02:34:00 <zzo38> Yes, pages in a block-based Forth system often have fixed line lengths and a fixed number of lines per page.
02:45:52 <oerjan> 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 <oerjan> and it is currently slated for 7.4, although that has been changed before
02:47:38 <oerjan> it seems there's a lot of disagreement on exactly what syntax to use for it
02:50:24 <oerjan> when not even the simons agree, things probably take time in haskell-land :P
02:58:20 <elliott> 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 <zzo38> 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 <elliott> I suppose I could just use sed.
02:59:13 <oerjan> zzo38: the thing is that doesn't work so well for multi-parameter functions, which they are also trying to include
02:59:29 <monqy> something along the lines of lambda syntax: where it's at
02:59:31 <elliott> like I said: case,, of
02:59:35 <elliott> the best.
02:59:50 <zzo38> 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 <oerjan> elliott: "commas are right out" said one of the simons :P
03:00:06 <zzo38> oerjan: I told you how to do that too: case of { ... } . curry
03:00:07 <elliott> oerjan: haha, link?
03:00:12 <monqy> comas ugly, gross
03:00:13 <zzo38> oerjan: I told you how to do that too: case of { ... } . uncurry
03:00:34 <zzo38> Use "uncurry" function that will do it, isn't it?
03:00:43 <oerjan> http://hackage.haskell.org/trac/ghc/ticket/4359
03:00:51 <monqy> zzo38: it'd be clumsy in practice
03:01:00 <zzo38> If you need different amount you do $(genUncurry 5) for five parameters, for example.
03:01:00 <monqy> zzo38: and what about when you need more than 2 arguments
03:01:08 <monqy> ugh
03:01:12 <elliott> :t uncurry . uncurry
03:01:14 <lambdabot> forall b c a b1. (a -> b1 -> b -> c) -> ((a, b1), b) -> c
03:01:18 <elliott> perfect :P
03:01:20 <monqy> uuuughhhhhh
03:02:21 <zzo38> I suggested using Template Hsakell to have functions such as genUncurry, genCurry, genReorder, etc.
03:03:01 <zzo38> genUncurry :: Int -> Q Exp; genCurry :: Int -> Q Exp; genReorder :: [Int] -> Q Exp;
03:06:51 <zzo38> But (,) = curry id
03:10:16 <zzo38> You can have: curry case of { ... }
03:10:16 <Sgeo> :t curry id
03:10:17 <lambdabot> forall a b. a -> b -> (a, b)
03:10:21 <zzo38> That is how you do multiple arguments.
03:10:25 <zzo38> OK?
03:11:05 <zzo38> So, for five arguments, you want: $(genCurry 5) case of { ... }
03:11:25 <zzo38> Does it makes sense?
03:16:40 <zzo38> I don't know why you dislike "curry case of"; it make sense to me.
03:20:18 <monqy> 1) it's gross and there are clean ways to do it
03:20:32 <zzo38> What do you mean by that?
03:20:40 <monqy> I mean it's hideous
03:21:10 <monqy> and 2) symmetry with named function definitions is good
03:21:25 <zzo38> I don't think so. Can you explain what it seem wrong to you, and what you think is better way?
03:21:34 <monqy> (for lambda functions, in the area of having multiple pattern/clauses)
03:22:15 <monqy> 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 <augur> trollscript is the most appropriate thing ever
03:22:32 <augur> :(
03:22:47 <monqy> 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 <monqy> --
03:24:09 <monqy> \ (Just a) _ -> a
03:24:11 <monqy> _ False -> thing
03:24:14 <monqy> _ _ -> hello
03:24:30 <monqy> might need extra syntax in there but that's the basic idea
03:25:01 <zzo38> 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 <zzo38> 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 <monqy> for layout/nonlayout there'd be a {;;;;}ey form
03:27:48 <monqy> as I said, my example was just the general idea of what I wanted, not the exact syntax
03:27:53 <zzo38> Well, yes, using {} for nonlayout, but \ is not normally layout anyways.
03:28:19 <zzo38> So if you want something like that, put the word "of" after \ and then it can introduce layout and working easily
03:30:14 <zzo38> 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 <monqy> 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 <monqy> since named functions can have multiple cases and what-not why can't lambdas????
03:31:13 <zzo38> monqy: Then it seem it would work to use "\ of", like you described but with "of" on it to introduce layout.
03:31:25 <zzo38> (For allowing multiple cases)
03:31:26 <oerjan> zzo38: i also think \ of would be a good idea but it does not seem to be what they are implementing
03:32:48 <zzo38> 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 <oerjan> someone on that trac gave an example of something commonly used that would break with monqy's \ + just layout syntax
03:33:40 <zzo38> 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 <monqy> then add a bit of extra syntax to tidy it up
03:33:46 <oerjan> something >>= \ whatever ->
03:33:49 <oerjan> do ...
03:34:40 <monqy> if \ of works as the extra syntax, that's good I suppose
03:35:19 <zzo38> 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 <oerjan> yeah
03:36:37 <monqy> except then you need even more weight when you want extra arguments
03:36:41 <monqy> so
03:36:46 <monqy> ehhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
03:39:00 <zzo38> (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 <monqy> that's even clumsier
03:40:07 <monqy> unless you just meant it's easier for you to fit more notation into case of
03:40:34 <oerjan> <Phantom_Hoover> Awww, the supernova is just a type 1a.
03:40:35 <monqy> in which case I must disagree; it seems just as easy to fit it into any other
03:41:08 <oerjan> that's actually somewhat exciting because type 1a's are being used to calibrate intergalactic distances
03:41:20 <zzo38> 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 <oerjan> and this is the best observation of one so far
03:44:36 <zzo38> Can you understand now what I mean? Have I made any mistake?
03:48:33 <oerjan> <itidus20> someone said "linked lists are inherently superior to arrays/arraylists when it comes to removing items from them"
03:48:40 <zzo38> readCard :: (Card -> t) -> Render t;
03:48:42 <oerjan> even more superiorer: finger trees
03:50:15 <oerjan> zzo38: hm i guess more-notation is analogous to prolog's multifile predicates...
03:50:19 <oerjan> just a thought
03:50:54 <zzo38> oerjan: I don't know that stuff about Prolog, but maybe it is. I can try to figure it out
03:53:46 <zzo38> Can you tell me how multifile predicates works?
03:54:31 <Patashu> 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 <oerjan> 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 <elliott> Patashu: Gregor knows js quite well :P
03:55:15 <oerjan> and prolog clauses are somewhat similar to single function equations in haskell
03:56:01 <oerjan> oh and i think there's a different declaration for allowing adding clauses at runtime
03:58:09 <Patashu> <script src="/forum/chat/js/jscolor/jscolor.js" type="text/javascript"></script> points to http://thirdstyle.com/forum/chat/js/jscolor/jscolor.js
03:58:15 <zzo38> oerjan: OK, then I suppose the more-notation for case blocks somewhat resembles that.
03:58:30 <oerjan> hm not sure about that, but there is a "discontiguous" declaration for allowing spreading a predicate around in a file
03:58:51 <Patashu> and I have <input class="color {hash:true,pickerPosition:'top'}" onchange="ajaxChat.setFontColor(this.color)" value="#FFFFFF"> (and if you look at jscolor, it binds to anything with color in its class
03:58:57 <Patashu> But that doesn't work
03:59:00 <Patashu> However, this works fine: http://thirdstyle.com/forum/chat/js/jscolor/demo.html ???
03:59:08 <Patashu> also relevant http://jscolor.com/try.php
03:59:35 <oerjan> oh, "dynamic" is the one which allows modifying the predicate after compilation
03:59:48 <oerjan> http://www.gprolog.org/manual/html_node/gprolog022.html
04:01:10 <elliott> sup
04:02:20 <monqy> hi
04:02:34 <elliott> i need to punish whoever invented trollscript
04:03:38 <monqy> does ph know about it
04:03:53 <elliott> no
04:03:58 * oerjan sees no trollscript on the wiki
04:04:11 <monqy> good
04:04:23 <elliott> oerjan: google it
04:06:44 <oerjan> oh reddit
04:07:05 <monqy> I didn;t find it on reddit but i did find it
04:07:07 <Patashu> trollscript makes me think of lolcode but somehow even worse
04:07:11 <Patashu> am I on the ball?
04:07:15 <Patashu> let's find out
04:07:50 <Sgeo> At least people are criticising it
04:08:36 <elliott> someone who isn't me and has no reputation, create an issue on github saying it's shit :P
04:08:56 <elliott> also, preferably link to at least ten existing trivial bf derivatives to disprove that it is an esoteric derivative as claimed
04:09:01 <elliott> and then
04:09:02 <elliott> punch him
04:09:20 <oerjan> why, clearly with your heavy reputation you should have more authority </runs away>
04:10:01 <elliott> I HAVE A GOOD REPUTATION ON GITHUB :P
04:10:10 <elliott> MR. APFELMUS WOULD JUDGE ME
04:10:44 <Patashu> oh it's literally brainfuck
04:10:48 <Patashu> that's disappointing
04:10:57 <monqy> what did you expect
04:10:59 <elliott> and here we were commenting on it for its immense value.
04:11:03 <Sgeo> Google's making a competitor to Opa and Ur/Web?
04:11:08 <oerjan> elliott: oh well, at least it's a euphonic language
04:11:19 <elliott> wow Sgeo your words just made me want to punch you
04:11:22 <elliott> h;w did this hap/pen
04:11:26 <Sgeo> http://www.reddit.com/r/programming/comments/k90ed/google_to_announce_new_programming_language_for/
04:11:41 <Sgeo> Oh, we don't know enogh about it, I guess
04:11:45 <Sgeo> Bracha's involved :D
04:11:46 <elliott> your beloved gilad bracha worked on it
04:11:47 <elliott> it must be perfect
04:11:54 <elliott> by perfect i mean terrible
04:12:23 <oerjan> <elliott> I HAVE A GOOD REPUTATION ON GITHUB :P <-- wait is this a euphemism for "no one there knows i do esolangs"?
04:12:49 <elliott> oerjan: no, nobody there (= probably all of one person) would expect me to make a rude unproductive issue :D
04:12:54 <Sgeo> elliott, do you dislike Bracha's languages?
04:13:11 <Sgeo> elliott, you could make a calm issue?
04:13:22 <Sgeo> "There is no point to this."
04:13:45 <Sgeo> Calm, reasonable.
04:14:07 <monqy> issue: this language kindly fucking sucks
04:14:19 <Sgeo> Oh, it's more than just brainfuck
04:14:21 <elliott> 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 <Sgeo> tro has to be in front, and ll. has to be at end
04:14:41 <zzo38> 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 <monqy> "Trollololol-tastic." - redit
04:17:04 <oerjan> <zzo38> Can you switch text/binary I/O mode in Haskell?
04:17:10 <oerjan> @hoogle binarymode
04:17:18 <oerjan> aaaaa
04:17:23 <oerjan> bad timing
04:17:27 <zzo38> 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 <oerjan> zzo38: anyway, the answer is yes, there are functions to switch
04:18:02 <oerjan> zzo38: oh. i suppose you have to import the files in the correct order.
04:18:09 <elliott> oerjan: more notation only works in one file, btw
04:18:17 <oerjan> zzo38: which might be one reason why it's not the default
04:19:08 <zzo38> elliott: Unless you allowed it in multiple modules, or allowed a private include command for preprocessor, etc
04:20:43 <oerjan> why is it 6:21 already
04:20:54 <oerjan> i haven't even finished my logreading
04:20:54 <elliott> why is it that, but an hour earlier, already
04:20:59 <elliott> i haven't even finished my coding
04:21:16 <zzo38> 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 <elliott> oerjan: i think we have to bow after that
04:21:25 * elliott bows
04:21:31 * oerjan bows
04:21:35 <elliott> wonderful.
04:21:48 <Patashu> dangit I need someone who knows the answers to my problems instantly and is always around for me!
04:21:50 <Patashu> I need.....an adult ;_;
04:21:58 <elliott> `addquote <Patashu> dangit I need someone who knows the answers to my problems instantly and is always around for me! <Patashu> I need.....an adult ;_;
04:22:00 <HackEgo> 646) <Patashu> dangit I need someone who knows the answers to my problems instantly and is always around for me! <Patashu> I need.....an adult ;_;
04:22:06 <elliott> `quote
04:22:06 <elliott> `quote
04:22:06 <elliott> `quote
04:22:07 <elliott> `quote
04:22:07 <elliott> `quote
04:22:07 <elliott> `quote
04:22:09 <HackEgo> 279) <Vorpal> ooh I want to see ehird pole dancing <ehird> I think that would be illegal. <Vorpal> oh you are right <Vorpal> damn :/
04:22:10 <HackEgo> 184) <fungot> Vonlebio: well, i'm only back in denmark because my work visa expired. please insert token to continue.
04:22:10 <HackEgo> 301) <xplat> so you have legacy software in befunge that needs supported?
04:22:12 <HackEgo> 415) <ZOMGMODULES> scripting language. whole program analysis. together at last
04:22:13 <HackEgo> 58) <apollo> Maternal instincts? <apollo> Don't you just leave the thing in a box until it starts crying, and then shake it until it stops?
04:22:13 <HackEgo> 352) <Gregor>. Ohheywait, I can make it a raytracer instead of a photon tracer so long as I run time backwards.
04:22:15 <oerjan> Patashu: ooh tell me if you find a shop which sells them!
04:22:19 <Patashu> lol oerjan
04:22:42 <elliott> <ZOMGMODULES> scripting language. whole program analysis. together at last
04:22:45 <elliott> i want to addquote this again
04:22:54 <elliott> <HackEgo> 352) <Gregor>. Ohheywait, I can make it a raytracer instead of a photon tracer so long as I run time backwards.
04:22:56 <elliott> OIJSFIOJSOFIJOISDFOSM ERROR
04:22:56 <elliott> ERROR
04:22:57 <elliott> ERROR
04:22:58 <elliott> ERROR
04:22:58 <elliott> ERROR
04:23:01 <elliott> oerjan: FIX IT
04:23:14 <elliott> `run sed -i 's/<Gregor>. /<Gregor> /g' quotes
04:23:16 <HackEgo> No output.
04:23:24 <elliott> `quote 352
04:23:25 <oerjan> regarding 279, is that still illegal?
04:23:26 <HackEgo> 352) <Gregor> Ohheywait, I can make it a raytracer instead of a photon tracer so long as I run time backwards.
04:23:41 <elliott> Not in this country, at least. (But I don't think it ever was.)
04:23:49 <oerjan> if not, someone tell Vorpal
04:23:58 <elliott> I don't think you should get his hopes up.
04:24:04 <oerjan> ah.
04:24:43 <zzo38> oerjan: Even if it is all in one file, it is still like discontiguous/1 in Prolog I guess.
04:24:50 <elliott> oerjan: Hey, go wake fizzie up.
04:24:56 <elliott> (In this analogy, you're the cat.)
04:25:09 -!- Nisstyre has joined.
04:25:47 <oerjan> zzo38: yeah
04:26:02 <oerjan> elliott: that means i get to use a bat, right?
04:26:05 <Patashu> how can a channel with 500 people in it be dead???
04:26:22 <zzo38> 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 <oerjan> Patashu: zombie virus?
04:26:35 <elliott> oerjan: Yes.
04:27:12 <elliott> Deewiant: You, like, totally have commits to mcmap; wake up in lieu of fizzie.
04:27:41 <oerjan> the finns and they're eerie sleep in the night perversion
04:27:44 <oerjan> *their
04:28:13 <oerjan> oh wait it's 7:28 over there
04:28:13 <elliott> WHY DOESN'T ANYBODY NON-SCANDINAVIAN WORK ON MCMAP
04:28:17 <elliott> oerjan: Work on mcm- DAMMIT.
04:28:32 <oerjan> but but i'm not non-scandinavian
04:28:37 <elliott> THUS THE DAMMIT
04:29:02 <oerjan> well ask zzo38
04:29:05 * oerjan sprints
04:29:12 <elliott> zzo38: hey work on mcmap
04:29:17 <elliott> you can conevrt it to enhanced cweb it ok
04:29:29 <zzo38> elliott: I am not interested in that program
04:29:46 <zzo38> I am not interested in mcmap
04:30:14 <elliott> I am not interested in it, Sam I am?
04:32:16 <elliott> oerjan: i dont get it why am i geting tired
04:33:37 <elliott> ok wait oerjan wait wait wait, oerjan, wait, do i code more mcmap or slep....
04:33:38 <elliott> its
04:33:40 <elliott> hard to life :(
04:35:36 <elliott> |“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 <elliott> s/|/"/
04:35:56 <oerjan> uuunsafe
04:40:45 -!- monqy has quit (Quit: hello).
04:45:01 <elliott> struct packet_format_desc packet_format[
04:45:01 <elliott> #define PACKET(id, cname, scmname, nfields, ...) \
04:45:01 <elliott> 1 +
04:45:01 <elliott> #include "protocol.x"
04:45:02 <elliott> #undef PACKET
04:45:04 <elliott> 0
04:45:06 <elliott> ];
04:45:18 <elliott> oh wait that doesn't quite work :P
04:45:25 <elliott> hmm, but this might...
04:47:21 <elliott> oerjan: i have a challenge for you.
04:47:42 <elliott> find me an arithmetic expression that always returns the last operand :P
04:47:46 <elliott> specifically, one that looks like either
04:47:53 <elliott> CONSTANT OP elt OP elt OP elt ...
04:47:53 <elliott> or
04:47:59 <elliott> elt OP elt OP elt ... OP CONSTANT
04:48:07 <elliott> note that there can be multiple ops per elt, and the elt can be repeated for each elt
04:48:16 <oerjan> 0 * x + y
04:48:23 <elliott> so (elt-9) / (elttwo-9) / ... / 0 is ok
04:48:24 <oerjan> 0 * x1 * x2 * x3 + y
04:48:41 <elliott> oerjan: that's brilliant, but unfortunately no; the operation must be the same for every element
04:48:46 <elliott> that changes to + for the last element
04:48:49 <oerjan> eek
04:49:10 <elliott> it can actually be repeated later, so you can nest parens
04:49:17 <elliott> (by making the expansion ) for each element)
04:50:08 <oerjan> ((x1 * 0 + x2) * 0 + x3) * 0 + y
04:50:32 <elliott> oerjan: um is that the same operation for every element?
04:50:41 <elliott> hm if i use one extra paren then
04:50:44 <elliott> elt) * 0 +
04:50:44 <elliott> is it
04:51:26 <elliott> oerjan: except no it isn't, because that does it to the _last_ element too.
04:51:36 <elliott> so what's the single-element expansion there for the main body?
04:51:48 <oerjan> er x op y = x*0 + y
04:52:11 <oerjan> why is that wrong :(
04:52:21 <elliott> 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 <elliott> because I can define a cpp macro OP()
04:52:32 <elliott> can you write that in polish notation for me?
04:52:52 <elliott> (with OP())
04:52:58 <oerjan> elliott: oh hm what about x1*0 + x2*0 + y
04:53:10 <oerjan> is that syntactic enough for you
04:53:19 <elliott> well, I still need to define the OP
04:53:28 <elliott> but wait
04:53:31 <elliott> <oerjan> er x op y = x*0 + y
04:53:33 <elliott> ((x1 * 0 + x2) * 0 + x3) * 0 + y
04:53:34 <elliott> --->
04:53:42 <elliott> OP(OP(OP(a,b),c),d)
04:53:45 <elliott> ok so first it's
04:53:46 <elliott> OP(
04:53:51 <elliott> for every element
04:53:53 <elliott> then it's
04:53:55 <elliott> ,x) for every element
04:53:56 <elliott> but that becomes
04:54:02 <elliott> OP(OP(OP(,a),b),c),d)
04:54:04 <elliott> :|
04:54:16 <elliott> oh hm
04:54:22 <elliott> I can just put 0 after the OP( for every element
04:54:31 <oerjan> elliott: just put any constant in the center
04:54:46 <oerjan> you said you could do that
04:54:48 <elliott> 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 <elliott> hmm
04:55:08 <elliott> protocol.x:57: error: unterminated argument list invoking macro "GROSS"
04:55:09 <elliott> indeed.
04:55:31 <elliott> oerjan: ok wait let me look at
04:55:33 <elliott> <oerjan> elliott: oh hm what about x1*0 + x2*0 + y
04:55:39 <elliott> what's the expansion for each element meant to be here?
04:55:43 <elliott> *0 + e?
04:55:45 <elliott> with some constant at the start?
04:56:02 <elliott> hey, that might actually work
04:56:08 <elliott> it does :DDD
04:56:10 <elliott> oh almost
04:56:30 <elliott> struct packet_format_desc packet_format[
04:56:31 <elliott> 0
04:56:31 <elliott> #define PACKET(id, cname, scmname, nfields, ...) \
04:56:31 <elliott> * 0 + id
04:56:31 <elliott> #include "protocol.x"
04:56:31 <elliott> #undef PACKET
04:56:33 <elliott> + 1
04:56:35 <elliott> ];
04:56:37 <elliott> oerjan: beautiful, no?
04:56:48 <oerjan> O KAY
04:56:54 <elliott> 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 <elliott> oerjan: but thank you anyway :P
04:57:06 <elliott> it was _enlightening_
04:57:34 <elliott> oerjan: and I hope Notch increases the size of the packet id, just so I can us ethat.
04:57:37 <elliott> use that.
04:58:30 <oerjan> yw
05:04:29 -!- derrik has joined.
05:09:59 <elliott> oerjan: ampersand plz
05:10:18 <elliott> 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 <elliott> thx
05:30:19 -!- MSleep has joined.
05:30:32 <Patashu> btw fixed my js problem
05:30:40 <Patashu> it was really dumb and I feel bad about myself
05:33:56 <elliott> ok
05:33:57 <elliott> what was it
05:34:40 <Patashu> 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 <Patashu> so I -had- it fixed but not pushed
05:35:33 <elliott> lol
05:36:16 <Patashu> I'm glad someone told me to try that
05:36:21 <Patashu> 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 <zzo38> Is there a proper name in category theory for having only the "unit" function of a monad and not join/fmap?
06:05:50 <copumpkin> well, without fmap
06:05:55 <copumpkin> what laws would the unit follow?
06:06:03 <copumpkin> you can talk about a pointed functor if you have fmap
06:06:29 <zzo38> No laws at all. It is useless by itself
06:06:38 <Patashu> Then why would there be a name for it
06:06:44 <zzo38> But OK, with unit/fmap and no join I can use pointed functor, I suppose
06:06:46 <zzo38> OK
06:07:06 <copumpkin> yep
06:07:39 <copumpkin> the law that would satisfy is that fmap f (pure x) = pure (f x)
06:07:46 <copumpkin> which is automatically true in haskell :)
06:07:49 -!- augur has quit (Remote host closed the connection).
06:08:02 <zzo38> OK
06:08:05 <copumpkin> but in other categories isn't necessarily true
06:08:30 <copumpkin> @free pure :: a -> F a
06:08:54 <elliott> copumpkin: automatically? I'm sure you can violate it
06:09:09 <elliott> instance Functor [] where pure x = [x]; fmap _ _ = []
06:09:46 <copumpkin> I mean if you already had a valid functor
06:09:54 <elliott> right
06:10:01 <copumpkin> which by the way only needs fmap id = id
06:10:58 -!- derrik has left.
06:12:41 -!- lambdabot has joined.
06:13:40 <elliott> Deewiant: How's this commit frequency compared to mushspace's: https://github.com/fis/mcmap/commits/guile
06:21:40 <zzo38> How do I tell Haskell to assume that overlapping instances are equivalent?
06:22:16 <Patashu> you're not meant to commit that fast???
06:22:20 <elliott> copumpkin? :P
06:22:20 <Patashu> gosh, I'm using github all wrong
06:22:33 <elliott> Patashu: I'm pretty sure you're meant to commit with a greater granularity than I've been doing.
06:22:45 <elliott> I've just been in, what's it called, crunch mode.
06:22:45 <oerjan> zzo38: maybe IncoherentInstances?
06:23:01 <copumpkin> ?
06:23:05 <oerjan> (i've never tried it but...)
06:23:17 <copumpkin> you just don't
06:23:42 <fizzie> oerjan: "No, *you're* the incoherent instance."
06:23:48 <zzo38> Actually, I used OverlappingInstances and that seem to work
06:23:59 <elliott> 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 <oerjan> zzo38: oh. i thought you had a more serious problem.
06:24:45 <oerjan> zzo38: that doesn't assume they are equivalent, but it chooses the most specific one if there is one.
06:25:11 <oerjan> iiuc IncoherentInstances chooses arbitrarily even if there isn't, or something
06:25:15 <zzo38> oerjan: But if they are in fact equivalent, it should work, isn't it?
06:25:22 <oerjan> zzo38: yeah you'd think
06:25:47 <elliott> Patashu: P.S. Do you play Minecraft because MCMAP IS TOTALLY THE BEST.
06:33:45 <zzo38> Is there a way to allow partially applied type synonyms in instance declarations?
06:34:36 <copumpkin> zzo38: it can't always make up its mind
06:34:44 <copumpkin> if you have class Moo a b
06:34:52 <copumpkin> and instance Moo Int b and instance Moo a Int
06:35:02 <copumpkin> if you have Int Int
06:35:09 <copumpkin> it'll bitch and tell you it can't make up its mind
06:35:16 <copumpkin> that's what I thought you were asking about
06:35:25 <copumpkin> sometimes it'd be nice to say "yo, don't bitch, there's no difference"
06:35:28 <copumpkin> and you can't do that
06:35:51 <elliott> What we need are ~/~ constraints. :p
06:35:58 <elliott> instance (b ~/~ Int) => Moo Int b
06:36:03 <elliott> instance Moo a Int
06:36:10 <zzo38> No, what I mean, is for example to make a Functor instance from a type synonym
06:36:40 <elliott> That's plain impossible, it makes checking totally undecidable.
06:36:46 <oerjan> zzo38: no, that won't work, wrap it in a newtype first
06:37:15 <elliott> type Awesome a = a; instance Functor Awesome where fmap = id
06:37:21 <elliott> <type system> AUUUUUUUUGH
06:37:35 <zzo38> O, that is the problem.
06:37:49 <zzo38> Now I understand.
06:38:10 * oerjan hugs the poor type system
06:40:44 <elliott> http://static.guim.co.uk/sys-images/Media/Pix/pictures/2010/3/25/1269523445370/Austin-Heap-001.jpg
06:40:55 <elliott> where on _earth_ do the Guardian get their ideas for "photos of people we think are smart"?
06:41:09 <elliott> (i _may_ be referencing ais' here too :P)
06:42:57 <zzo38> 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 <elliott> "instance (PointedFunctor m, Joinable m) => Monad m" ;; really bad idea.
06:43:31 <elliott> Such instances require excessive extensions for areason.
06:43:41 <zzo38> Yes it does require extensions
06:43:48 -!- nooga has joined.
06:49:56 <copumpkin> excessive, he said :)
06:50:03 <copumpkin> overlapping instances is really something you don't want
06:50:31 <copumpkin> anyway, time for bed
06:50:33 * copumpkin goes to sleep
06:50:53 <zzo38> copumpkin: Why? I think it is useful program
06:51:03 <zzo38> That is why they put it there.
06:51:22 <copumpkin> oh, it definitely is
06:51:31 <copumpkin> you just want to understand all the downsides to using it :)
06:51:42 <copumpkin> anyway, I can't stay awake
06:51:45 <copumpkin> ciao :P
06:51:48 <zzo38> OK
07:01:11 -!- zzo38 has quit (Remote host closed the connection).
07:03:52 -!- kaus has joined.
07:04:07 <kaus> is there an llvm to bf compiler?
07:04:54 <elliott> There's a work-in-progress-but-stalled gcc-bf backend.
07:05:05 <elliott> And the old, ancient, not-very-good C2BF.
07:05:17 <elliott> Apart from that, not that I know of; you thinking of writing one?
07:09:21 <kaus> yeah i was thinking on working on this project...if it has not been done already
07:09:42 <elliott> It would be cool. And probably easier than the awful gcc backend project.
07:10:08 <elliott> 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 <elliott> You can ask him when he's around again. Might be Monday.
07:13:37 <kaus> ok thanks
08:06:07 <nooga> y
08:07:04 <kaus> is there any resource where i can get more info on gcc-bf
08:07:19 <kaus> apart from ais..
08:21:07 <elliott> just ais :)
08:21:16 <elliott> you could leave a message on his wiki talk page.
08:21:25 <elliott> he's an admin there so he should see it the next time he's online.
08:21:36 <elliott> http://esolangs.org/wiki/User_talk:Ais523
08:22:10 -!- Taneb has joined.
08:22:20 <Taneb> Hello!
08:23:21 <kaus> :)
08:23:36 <Taneb> Hey, it's the third anniversary of the end of the world
08:23:45 <Patashu> the world ended in 2008?
08:23:49 <Patashu> I thought it ended in 2011
08:24:00 <Taneb> It ends pretty much every year
08:24:23 <Taneb> But 3 years ago TODAY, the LHC was powered up
08:24:56 <Taneb> 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 <Jafet> 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 <Jafet> Why else do you think we're still here, stupid?
08:32:02 <elliott_> Jafet: Bureaucracy? Seriously?
08:32:14 <elliott_> You realise the Illuminati are delaying the launch until 2012, don't you?
08:32:23 <elliott_> I mean, come on. It's all a little TOO CONVENIENT.
08:35:13 <Taneb> http://en.wikipedia.org/wiki/Template:Black_days
08:37:41 -!- oerjan has quit (Quit: Later).
08:38:42 <Taneb> Sometimes, when I go on a wiki walk on wikipedia
08:38:50 <Taneb> I look at my tabs and thing "Wha?"
08:39:00 <Taneb> List of predicted dates of the end of the world
08:39:02 <Taneb> Fraud
08:39:21 <Taneb> Hundred Year's War (1337-1360)
08:39:24 <Taneb> Antibubble
08:52:03 -!- Jafet has quit (Quit: Leaving.).
08:54:52 -!- kaus has quit (Quit: Leaving).
09:01:30 <Taneb> My epetition has 9 signatures!
09:01:49 <Taneb> Only 99991 to go!
09:02:08 <Patashu> Is it like the age of consent?
09:02:25 <Patashu> 99999 signatures = I don't care, 100000 signatures = OMG this is serious guys
09:02:34 <Taneb> Pretty much
09:02:45 <Taneb> But the more signatures it has the faster it grows
09:02:59 <Taneb> And when it reached 100000 automatic debate in the House of Commons
09:03:15 <Taneb> http://epetitions.direct.gov.uk/petitions/6982
09:03:21 <Patashu> aaah
09:11:15 <Taneb> bye
09:11:19 -!- Taneb has quit (Quit: TTFN).
09:13:48 <elliott_> 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 <Taneb> I think the most interesting esoteric pi calculator is the Piet one
09:35:39 <Taneb> http://www.dangermouse.net/esoteric/piet/piet_pi_big.png
09:38:07 <elliott_> 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 <elliott> hi oklopol
10:37:14 <oklopol> hi elliott
10:37:20 <elliott> hi oklopol
10:38:55 <oklopol> hi elliott
10:39:12 <elliott> hi oklopol
10:39:18 <oklopol> hi elliott
10:39:22 <elliott> hi oklopol
10:39:41 <oklopol> hi elliott
10:39:47 <elliott> hi oklopol
10:39:50 <oklopol> hi elliott
10:39:53 <elliott> hi oklopol
10:39:57 <oklopol> hi elliott
10:40:02 <elliott> hi oklopol
10:40:04 <oklopol> hi elliott
10:40:08 <elliott> hi oklopol
10:40:09 <oklopol> hi elliott
10:40:12 <elliott> hi oklopol
10:40:13 <oklopol> hi elliott
10:40:20 <elliott> hi oklopol
10:40:20 <oklopol> hi elliott
10:40:23 <elliott> hi oklopol
10:40:27 <oklopol> hi elliott
10:40:30 <elliott> hi oklopol
10:40:32 <oklopol> hi elliott
10:40:34 <elliott> hi oklopol
10:40:36 <oklopol> hi elliott
10:40:40 <elliott> okokokokokokokokokokokokokokokokoko
10:40:45 <oklopol> okokokokokokokokokokokokoko
10:40:47 <oklopol> i am sheep
10:40:48 <elliott> holy shit
10:40:49 <elliott> that's some flow
10:40:54 <elliott> i was sure that would fuck you up
10:41:04 <oklopol> eh
10:41:21 <oklopol> i'm really really really stupid but i'm not that stupid
10:41:25 <elliott> me too
10:41:32 <oklopol> i'm so lazy man, see how lazy i am
10:41:49 <elliott> lazyman
10:43:54 <oklopol> sometimes i wish i lived on the moon
10:44:02 <oklopol> life would be so much simpler
10:44:10 <elliott> `quote moon
10:44:15 <HackEgo> 34) <zzo38> I am not on the moon.
10:44:23 <oklopol> me neither man, me neither
10:44:30 <elliott> `quote gravity
10:44:32 <HackEgo> 33) <ehird> pikhq: A lunar nation is totally pointless. <fungebob> ehird: consider low-gravity porn <ehird> fungebob: OK. Now I'm convinced.
10:44:47 <oklopol> what the hell do you mean by that
10:44:50 <oklopol> pointless?
10:44:54 <elliott> `quote q
10:44:56 <HackEgo> 3) <Quas_NaArt> Hmmm... My fingers and tongue seem to be as quick as ever, but my lips have definitely weakened... <Quas_NaArt> More practice is in order. \ 6) <Quas_NaArt> His body should be given to science. <GKennethR> He's alive :P <GreenReaper> Even so. \ 11) <Lil`Cube> wouldn't that be considered pedophilia? <Quas_NaArt>
10:44:58 <elliott> oklopol: i was young and naive
10:44:58 <oklopol> try awesome
10:45:07 <oklopol> hmm k
10:45:19 <elliott> `run wc -l quotes
10:45:21 <HackEgo> 646 quotes
10:45:24 <elliott> that a lot of quote
10:45:36 <oklopol> i was such a pedophile in the first grade
10:55:59 -!- monqy has joined.
11:00:19 <monqy> 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 <monqy> maybe because i dreamt about trying to get to sleep
11:00:40 <monqy> so i'm not entirely sure if that even happened
11:05:00 <oklopol> are you tired all the time tho
11:05:15 <oklopol> i wouldn't mind sleeping little if i didn't feel like meh 24/7
11:05:50 <oklopol> but i do sleeping any amount of time in existence and feeling like a carrot pood in my brain
11:05:53 <oklopol> *mind
11:06:23 <monqy> from my yesterday experience I was only really tired sometimes.
11:12:51 <oklopol> all day long i feel like i just woke up
11:13:12 <oklopol> and then suddenly it turns into wanting to sleep
11:13:56 <oklopol> 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 <zzo38> 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 <monqy> good luck getting it to compile
11:17:34 <zzo38> 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 <zzo38> monqy: It does compile when the extensions are selected to make it do so.
11:18:08 <monqy> ok
11:18:39 <zzo38> But it seems to me that making everything become instance of X and Y due to that is like circular reasoning.
11:18:40 <oklopol> the don't actually try compiling, just print ay okay extension
11:19:12 <monqy> it doesn't seem very circular to me
11:19:59 <monqy> a bit less circular than mutual recursion, and that isn't even circular??
11:23:35 <cheater> 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 <zzo38> What does "Could not deduce (x1 ~ Bool)" means?
11:32:07 <elliott> (a ~ b) means the types a and b are identical, as a constraint
11:32:23 <elliott> you're supplying a Bool, but GHC wants an x1
11:38:41 <zzo38> OK
11:38:47 <Taneb> 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 <Taneb> http://www.99-bottles-of-beer.net/language-zombie-2562.html
11:41:10 <zzo38> 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 <monqy> oh that's what's happening?
11:42:12 <monqy> what exactly is happening
11:42:18 <monqy> it sounds
11:42:19 <monqy> weird
11:43:42 <zzo38> It seems like circular reasoning to me, but I don't really know.
11:44:07 <monqy> it just seems weird to me
11:45:24 <Taneb> Mine's the top now!
11:46:18 <monqy> 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 <zzo38> monqy: It is not always possible.
11:50:42 -!- augur has joined.
11:50:56 <monqy> what is your case?
11:51:11 <monqy> and what exactly is happening
11:53:01 <zzo38> 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 <monqy> maybe you found a bug? I don't know.
11:57:10 <zzo38> Or maybe, the class Y requires multiple constraints, if everything applies to each other then it results in the same thing.
12:00:55 <zzo38> 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 <zzo38> Having instance Monad f => Functor f; instance Comonad f => Functor f; results in compile error.
12:26:10 <elliott> `addquote <Phantom_Hoover> We have no leather. <Phantom_Hoover> Time to use that most venerable of resources, the puppy.
12:26:13 <HackEgo> 647) <Phantom_Hoover> We have no leather. <Phantom_Hoover> Time to use that most venerable of resources, the puppy.
12:26:35 <elliott> if Phantom_Hoover he's poop because that was hialrious
12:29:02 <Phantom_Hoover> What.
12:30:05 <elliott> 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 <Patashu> offer of a lifetime, guys: http://london.craigslist.co.uk/cpg/2591274619.html
12:58:54 -!- DH____ has quit (Client Quit).
12:59:06 <elliott> internet company
12:59:11 <Patashu> keep reading
12:59:20 <elliott> that's surely parody
12:59:46 <elliott> yeah it is
13:00:25 <Patashu> parody of what?
13:00:41 <elliott> startup job postings like that
13:00:49 <Jafet> Definitely a joke
13:00:58 <Jafet> Who the hell makes startups in london
13:01:09 <elliott> lol
13:07:31 <itidus20> carmack sez "Many worthwhile posts here: http://prog21.dadgum.com/archives.html"
13:07:47 <itidus20> elliott i bet you wish you knew about that website
13:08:27 <elliott> Totally.
13:08:38 <elliott> (Did Carmack actually say that?)
13:09:15 <itidus20> "<elliott> itidus20: You probably want to read http://prog21.dadgum.com/23.html"
13:09:22 <itidus20> http://twitter.com/#!/ID_AA_Carmack
13:10:01 <elliott> Huh, some synchronicity.
13:10:14 <itidus20> fuck you carl jung
13:10:31 <elliott> lol
13:10:37 <elliott> hey monqy remember http://upload.wikimedia.org/wikipedia/commons/e/e2/Sch%C3%A9ma_synchronicit%C3%A9_in_English.png
13:12:50 <itidus20> i feel that synchronicity that all the games i played growing up are popular :-s
13:13:16 <itidus20> maybe that is not actual synchronicity though
13:13:42 <itidus20> ^all the ones i got obsessed with
13:14:01 <elliott> Introducing Bitcoinica API (The first RESTful Bitcoin Trading API) (bitcoinica.com)
13:14:10 <elliott> wow, this headline hits my mental spam filters so hard that it actually gets highlighted
13:14:17 <elliott> that's not how spam filters are meant to work, brain
13:14:33 <monqy> good picture
13:17:08 -!- azaq23 has joined.
13:22:23 <monqy> The style of photography is something one should consider carefully before choosing wedding photographers.wedding photographers perth
13:22:38 <monqy> 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 <elliott> beautiful
13:27:34 <elliott> http://esolangs.org/forum/
13:27:35 <elliott> oh
13:30:55 <monqy> discount dvd
13:47:02 -!- sliddy has joined.
13:49:04 -!- sllide has quit (Ping timeout: 260 seconds).
13:56:38 <Taneb> I'm bored so I'm going to try and implement as many sorting algorithms as I can.
13:56:57 <elliott> ok
13:57:38 <Taneb> ...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 <Taneb> Quicksort in Python: complete
14:10:17 <fizzie> Taneb: Quicksort in Befunge-93: http://web.archive.org/web/20060218220434/http://kotisivu.mtv3.fi/quux/qsort.html
14:18:32 <Taneb> 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 <Taneb> 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 <Taneb> Intelligent Design Sort in Jot:
15:35:55 <Gregor> DEAR GOD, PLEASE SORT THIS FOR ME. KTHX
15:36:04 <Gregor> Sorted in O(Jesus)
15:37:32 <Taneb> http://www.dangermouse.net/esoteric/intelligentdesignsort.html
15:38:20 <Taneb> Operates in O(0) time
15:44:56 <Taneb> My Piet sine calculator is nearing completion!
15:46:29 <Taneb> I have two values which, when divided by eachother, return sin(n degrees) where n is a number inputted
15:49:12 <elliott_> Oh God what is going on? It feels like @ is coming together.
15:51:52 <Taneb> Hang on, is @ an OS or a filesystem?
15:51:57 <Taneb> I can't quite remember
15:52:38 <Taneb> I have bad memory: I got Shiro and Mycology mixed up
15:53:33 <elliott_> OS.
15:53:41 <Taneb> Thought so
15:54:07 <Taneb> How much software is on by default?
15:54:49 <elliott_> Eh?
15:55:09 <Taneb> Nevermind, let me think about what I meant
15:55:32 <Taneb> If I replace on with installed, does it make any more sense?
15:56:18 <elliott_> Not really
15:56:41 <Taneb> Will it just be a shell, or will it have a GUI, or what?
15:56:41 <elliott_> 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 <elliott_> 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 <Taneb> Tell me when I can install
15:57:51 <elliott_> Come back in years
15:58:07 <Taneb> Oh good, my laptop is getting repaired atm
15:59:19 <Taneb> How will @ software be written primarily?
16:00:27 <elliott_> In @lang
16:00:48 <Taneb> Is there a public @lang spec anywhere?
16:00:55 <elliott_> Nope :-)
16:01:01 <elliott_> @ is only slightly better-defined than Feather.
16:01:11 <Taneb> Yay!
16:01:21 <elliott_> But something is starting to make sense.
16:01:26 <elliott_> I don't know what, yet.
16:02:54 <Taneb> In 1785, a Feather derivative will have been about to be created
16:05:00 <Taneb> Called McGraw
16:13:18 -!- derdon has joined.
16:13:35 -!- nooga has joined.
16:25:00 <elliott_> 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 <Deewiant> elliott_: So have you been confirming your @ thoughts
17:11:55 <elliott_> Oh, ais523 started existing
17:12:05 -!- aloril has joined.
17:12:09 <elliott_> And hasn't deleted one of the spam pages for some reason
17:12:23 <ais523> because there's a time lag on my RSS feed
17:12:29 <ais523> and it's only just appeared there
17:13:22 <ais523> and deletd
17:14:02 <Taneb> I aim to be the first non-developer user of @.
17:14:16 <elliott_> there are no non-developer users of @, that's the beauty of it
17:14:39 <Deewiant> That doesn't sound very usable
17:14:44 <Taneb> Are there any developer users?
17:15:06 <pikhq> Not at present.
17:16:35 <elliott_> Deewiant: "There are no developer users of @" is maybe a more accurate impression.
17:16:48 <elliott_> But still inaccurate; that's false dichotomies for you.
17:17:00 <ais523> elliott_: I can translate Taneb's sentence as "the first user of @ who didn't originally help to write it"
17:17:35 <elliott_> ais523: the first uninteresting number?
17:17:59 <tswett> What is @? A language?
17:18:08 <ais523> elliott_: well, there's going to be some point at which it's usable
17:18:10 <elliott_> Yes. (Answer likely to mislead.)
17:18:18 <ais523> tswett: a project to create an OS
17:18:21 <ais523> err, no
17:18:25 <pikhq> tswett: @ is the embodiment of elliott's hubris.
17:18:31 <elliott_> pikhq: ur mom
17:18:34 <ais523> a placeholder for the name of an OS that there is currently a project to create
17:18:40 <pikhq> elliott_: I do not mean that as an insult.
17:18:44 <elliott_> pikhq: ur mom
17:18:48 <pikhq> Indeed, hubris is the greatest virtue of a programmer.
17:19:11 <ais523> 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 <ais523> suppose you have a large stack of self-interpreters
17:19:30 <elliott_> you _worked_ on _Feather_?
17:19:31 <elliott_> oh dear god
17:19:34 <ais523> 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 <ais523> err, bad client
17:19:47 <elliott_> ais523: PATTERN-MATCHER SAYS: eigenratios
17:19:56 <ais523> aha, I forgot about that
17:20:08 <elliott_> http://eigenratios.blogspot.com/2007/11/search-for-phi-holy-golden-ratio.html
17:20:09 <elliott_> mentions you :P
17:20:11 <ais523> anyway, I decided that more than anything else, I want an eigenratio 1
17:20:15 <tswett> elliott_: what platform is @ intended to run on?
17:20:22 <ais523> thanks for reminding me about that
17:20:29 <elliott_> ais523: that post conjectures the minimum is phi
17:20:35 <elliott_> I think
17:20:40 <ais523> can't you get 1 in Underload?
17:20:46 <elliott_> tswett: Define platform :-)
17:20:49 <elliott_> ais523: that's cheating :-P
17:20:51 <ais523> I'm allowing cheat-interpreters here, by the way
17:21:03 <tswett> elliott_: platform, n. Platform.
17:21:06 <ais523> but, say, in untyped lambda calculus, I can't see how to do it even with cheating
17:21:10 <ais523> elliott_: oh, I don't mean the ()^ program
17:21:18 <ais523> I mean suppose you have a list of character codes
17:21:22 <ais523> in an appropriate format for the language
17:21:24 <itidus20> ok i have a question. did most of the chatters here learn about lambda calculus in school?
17:21:27 <elliott_> tswett: That's a crap definition
17:21:32 <elliott_> tswett: Do you mean computer architecture?
17:21:37 <Taneb> itidus20: Not me
17:21:41 <ais523> itidus20: I didn't learn about it in school; I forget where I learnt about it, maybe even here
17:21:47 <elliott_> itidus20: No. I have no formal education in CS.
17:21:52 <tswett> elliott_: I guess I mean whether it runs on bare metal or within some other operating system.
17:21:55 <ais523> I think I basically understood the concept before learning what it was called, though
17:22:03 <tswett> (The best operating systems are the operating systems that can only run inside other operating systems.)
17:22:12 <tswett> (Every operating system should be like that.)
17:22:14 <elliott_> tswett: Well, part of The Beauty of @ is that it can do both.
17:22:20 <pikhq> itidus20: I have only the bare start of a formal education in CS at present.
17:22:25 <tswett> Excellent.
17:22:31 <elliott_> It's essentially defined in terms of a functional abstract machine with a design eyeing towards efficient translation to hardware.
17:22:47 <elliott_> 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 <itidus20> so... was it picked up at workplaces? in books? in chatroom like this one? :D
17:23:13 <elliott_> 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 <pikhq> Internet. Oh so much Internet.
17:23:21 <elliott_> (As in, accessing that server's resources as the primary interface.)
17:23:42 <elliott_> itidus20: Internet.
17:23:45 <Taneb> itidus20: Internet, mainly Wikipedia
17:24:01 <itidus20> ok guys. so nerding out on the internet. :D
17:24:13 <ais523> here is a good place to learn basic CS concepts
17:24:19 <ais523> especially the esoterically applicable ones
17:24:23 <elliott_> 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 <elliott_> Those are rather broad strokes, but it's a good summar.
17:24:30 <elliott_> y.
17:24:40 <ais523> elliott_: I suppose that what I want isn't really a self-interpreter, but self-compiler
17:24:45 <Taneb> Apparently, my dad did computer science at university
17:24:57 <elliott_> ais523: PATTERN MATCHER SAYS: Maybe you want a specialiser.
17:25:01 <ais523> 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 <ais523> elliott_: what's a specialiser, again?
17:25:24 <ais523> btw, I'm glad that you're pattern-matching on my Feather discussion, it should help save you from madness
17:25:35 <itidus20> my psyche is probably too broken since about 2000 to actually learn anything
17:25:43 <Sgeo> elliott_, well, there's going to be some level of it which is aware of a ram/disk distinction, presumably
17:25:47 <ais523> so, I decided that call/cc being a primitive is wrong
17:25:58 <elliott_> 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 <ais523> because you can implement it using CPS
17:26:05 <ais523> elliott_: ah, hmm
17:26:06 <elliott_> as in, it creates a version of that function _specialised_ on its first input argument
17:26:17 <elliott_> ais523: you can use a good specialiser to turn an interpreter into an efficient compiler
17:26:18 <ais523> I'm not sure if that is what I want
17:26:26 <ais523> well, interp into compiler is what I want
17:26:27 <elliott_> oh, and the languages of the input and output could be different
17:26:36 <Sgeo> elliott_, in Haskell, would ($) be a specializer?
17:26:44 <elliott_> 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 <elliott_> Sgeo: yes, but a bad one
17:28:11 <ais523> the whole point of specialisers is that they're optimising
17:28:14 -!- pikhq has quit (Ping timeout: 258 seconds).
17:28:18 <ais523> I remembered what the concept was when elliott_ explained it
17:30:11 <ais523> 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 <tswett> elliott_: what a coincidence. That's also the goal of Jath, except Jath is going to be much worse.
17:30:32 <elliott_> s/sneaky/beautiful/ :P
17:30:43 <elliott_> tswett: Have you shaken off the OOP Mind Virus yet?
17:30:52 * Sgeo misread futamura as futurama
17:32:21 <elliott_> So did everyone.
17:32:21 <ais523> so did I, and I only noticed it was wrong when I reached the comments section
17:32:28 <ais523> 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 <Taneb> I've had an idea for an esolang
17:33:42 <ais523> 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 <ais523> but I don't want to base Feather on that, it's too complex
17:34:11 <Taneb> One that takes as many bad features from "real" languages
17:34:29 <itidus20> the physical analogy is breaking down pretty quickly with the section "specializers"
17:34:42 <itidus20> i hate it when analogies start to become non-literal :P
17:34:55 <itidus20> its like waving to a friend from the train
17:35:48 * itidus20 flaps my arms.
17:36:25 <Taneb> An action, incedentally, that is also not unlike waving to a friend from the train
17:36:40 <elliott_> 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 <itidus20> it's like having a box which has infinite cookies inside
17:36:43 <ais523> elliott_: OK, so I suppose my problem is that I want to write a Feather self-interp that /isn't/ metacircular
17:36:43 <itidus20> such a thing can't exist
17:37:02 <itidus20> or can it?
17:37:04 <ais523> elliott_: yes, not that exciting...
17:37:20 <elliott_> ais523: it is, though, it's just a boring example as nothing more works right now :D
17:37:30 <elliott_> ANYWAY
17:37:36 <elliott_> ais523: ok, so you want to write a feather interp that isn't metacircular
17:37:39 <itidus20> according to physics and maths can we theoretically have a box with infinite cookies inside?
17:37:50 <elliott_> `addquote <itidus20> according to physics and maths can we theoretically have a box with infinite cookies inside?
17:37:52 <HackEgo> 648) <itidus20> according to physics and maths can we theoretically have a box with infinite cookies inside?
17:37:55 <elliott_> I don't know but I hope so
17:37:58 <ais523> so what I was doing wrong is trying to implement too large a subset of Feather directly in Scheme
17:38:09 <ais523> what I want to do is implement a very very small subset
17:38:26 <ais523> then a full Feather interp in itself
17:38:41 <ais523> well, a full proto-Feather interp in itself
17:38:49 <ais523> followed by a sequence of retroactive modifications to make it into a full Feather interp
17:38:58 <Sgeo> elliott_, what Scheme is that? Guile?
17:39:02 <elliott_> Sgeo: Yes.
17:39:08 <elliott_> Guile two, the new major release.
17:39:11 <elliott_> ais523: heh
17:39:13 <itidus20> 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 <ais523> now, my existing plan put the retroactive modification in the Scheme code itself
17:39:48 <ais523> that's actually very easy to implement in Scheme; it's the only bit that is
17:40:00 <ais523> but thinking about it, Scheme isn't Feather so that wouldn't help anyway
17:40:05 <elliott_> ais523: what inspired you to start thinking about feather, anyway? I thought you had rid yourself of it forever
17:40:25 <ais523> and it makes more sense to implement the retroactive modification in Feather itself, same as everything else
17:40:30 <ais523> elliott_: I was having trouble sleeping last night
17:40:42 <ais523> so I just thought "what the hell, I'll think about Feather"
17:40:44 <elliott_> you expected feather to /help/?
17:40:49 <ais523> then put on the background music from Adanaxis
17:40:58 <ais523> and started coding
17:41:24 <ais523> 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 <elliott_> 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 <ais523> in particular, I think I've definitively overcome the first major hurdle (the infinite regress of the definition of atoms)
17:41:48 <elliott_> "Feather: my anti-drug."
17:41:57 <elliott_> Note: anti-drug has more side-effects than drug.
17:42:04 <elliott_> ais523: woot
17:43:10 <elliott_> ais523: can I blab about my @thoughts now? :D
17:43:15 <ais523> yep, feel free
17:43:35 <elliott_> what's the likelihood you'll pay attention? :P
17:43:35 <ais523> really, what I'd want is for someone to come up with an untyped lambda calculus self-interp at eigenratio 1
17:43:39 <ais523> but that seems unlikely
17:43:42 <ais523> elliott_: pretty low, to be fair
17:43:50 <elliott_> I paid attention to the Featherthoughts :(
17:44:04 -!- derrik has joined.
17:44:04 <tswett> elliott_: eh, objects seem... potentially useful.
17:44:15 <elliott_> tswett: you're right, @ will be so much better :)
17:44:59 <elliott_> ;p
17:45:00 <elliott_> :p
17:45:02 <elliott_> s/;/:/
17:45:11 <Sgeo> eigenratio 1?
17:45:39 <elliott_> ais523: hypothesis: any interpreter with eigenratio one is a compiler
17:45:49 <elliott_> or rather, is a compiler+execute
17:46:03 <elliott_> otherwise, its intrusion on control flow will _always_ increase the eigenratio beyond this.
17:46:11 <ais523> indeed
17:46:20 <ais523> compile+execute is pretty much exactly what I want, for that reason
17:46:30 <elliott_> but I think the compiler has to output into the language itself, and so merely be id...
17:46:39 <elliott_> unless you can compile into a VM then execute that VM without adding overhead
17:46:56 <ais523> 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 <elliott_> ais523: OK SO @THOUGHTS
17:47:55 <ais523> 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 <elliott_> 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 <elliott_> ais523: for instance
17:49:13 <ais523> FRP equals, here?
17:49:17 <elliott_> functional reactive programming
17:49:19 <ais523> my mind is translating it as "functional reactive programming"
17:49:23 <elliott_> umm, brief introduction
17:49:26 <ais523> wow, I thought that couldn't possibly be what you meant
17:49:27 <elliott_> type Signal a = Time -> a
17:49:30 <elliott_> type Events a = [(Time,a)]
17:49:39 <elliott_> that's the "model' for FRP but it doesnt match the sematnics exactly
17:49:42 <ais523> I know what it is, I was forced to learn about it last week
17:49:44 <elliott_> but that's the basic core of the idea
17:49:45 <elliott_> ais523: haha
17:49:48 <elliott_> good
17:49:51 <cheater> hello
17:49:58 <elliott_> ais523: so consider httpSimpleGetAttempts :: URL -> Events (Either HTTPError HTTPResponse)
17:50:03 <cheater> ais523, what text editor do you use for your code
17:50:16 <elliott_> cheater: stop interrupting @thoughts, they're a sacred tradition
17:50:18 <ais523> cheater: usually but not always Emacs
17:50:21 <elliott_> SACRED
17:50:29 <ais523> for short programs I often use cat
17:50:34 <ais523> and then nano to fix typos
17:50:36 <cheater> yeah so do i
17:50:38 <elliott_> 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 <elliott_> ais523: right?
17:50:51 <cheater> i wrote a small wrapper around cat that works as a write-only text editor
17:50:59 <ais523> elliott_: trying to get my head around it atm
17:51:12 <elliott_> well, the point is that it's not referentially transparent
17:51:14 <cheater> https://bitbucket.org/cheater/cated
17:51:23 <elliott_> 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 <elliott_> which is the /definition/ of impurity
17:51:37 <ais523> what does "it" equal there?
17:51:50 <elliott_> (httpSimpleGetAttempts x) for some x
17:52:03 <ais523> ah, I see
17:52:06 <ais523> so calling it has side-effects
17:52:15 <elliott_> well, not necessarily calling it, but trying to inspect its argument
17:52:16 <elliott_> but anyway
17:52:17 <elliott_> i'll elaborate
17:52:51 <elliott_> 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 <elliott_> the problem being, how do you actually cause a request to be made?
17:53:06 <elliott_> well, this is the implementation strategy
17:53:17 <elliott_> the OS finds out every event or signal value the code is interested in
17:53:20 <elliott_> and then tries to "make them happen"
17:53:28 <elliott_> for a keyboard input, that'd be listening to the keyboard and routing the events in
17:53:40 <elliott_> for an HTTP request, it'd be contacting the server and trying to request it
17:53:43 <cheater> 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 <elliott_> ais523: so in this way, we turn the impurity into an implementation detail
17:54:29 <elliott_> ais523: and interestingly, this becomes the entire way for side-effects to happen
17:54:35 <elliott_> by being interested in them
17:54:48 <ais523> elliott_: heh, I came to a similar conclusion with Feather
17:54:51 <elliott_> you just say "if this happens, then ..."
17:54:58 <elliott_> and the computer goes "OK, you're interested in that happening"
17:55:03 <elliott_> and registers the event and all that
17:55:15 <elliott_> and if it's something like an http request, well, that's implemented so that interest causes the side-effect
17:55:28 <elliott_> I'm not sure this will actually work but MAYBE IT WILL
17:55:34 <ais523> I'm not sure it'll actually work either
17:55:45 <elliott_> I think the same about Feather
17:55:50 <ais523> heh
17:56:23 <elliott_> 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 <ais523> you mean @, right?
17:56:32 <elliott_> so... that's the plan
17:56:33 <elliott_> err
17:56:33 <elliott_> yes
17:56:34 <elliott_> (oops)
17:56:35 <elliott_> (oh dear)
17:56:42 <ais523> that's a very oh dear mistake
18:01:30 <Gregor> Feather AKA @ AKA Secret Project
18:01:53 <elliott_> The other two are offended by the comparison to the secret project
18:01:59 <elliott_> So is the secret project, it doesn't wish to be associated with such lunatics
18:06:53 <ais523> the secret project is much saner than Feather
18:06:59 -!- Taneb has joined.
18:07:05 <ais523> its main distinguishing feature is being secret
18:07:31 <elliott_> ais523: Can I see your WIP Feather interp? Just curious
18:07:45 <ais523> elliott_: I don't see why not, although disclaimer that I'm going to rewrite it
18:08:03 <ais523> possibly in a different langauge, because call/cc support isn't needed if I'm not going to metacircular that
18:08:04 <elliott_> it's modified from previously, right?
18:08:14 <elliott_> haskellashekaslehkleklelahkselellashekll
18:08:27 <Taneb> visualbasic2005
18:08:55 <ais523> http://sprunge.us/TPWh?scheme
18:08:58 <ais523> elliott_: it is, slightly at least
18:09:14 <ais523> pretty much all I've done since is just to add a few more Church encodings
18:09:25 <Taneb> I don't think Visual Basic is actually Turing-complete
18:09:58 <ais523> 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 <ais523> I suppose having the Scheme interp will still help for when I translate it into Feather
18:10:49 <ais523> also, I know I'm really bad at Scheme, don't laugh at it
18:11:09 <elliott_> 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 <elliott_> rather than anything retroactive
18:11:38 <Taneb> QUESTION
18:11:55 <Taneb> In feather, when you change the past, does the present continue?
18:12:06 <Taneb> With the old past
18:15:11 -!- Taneb has quit (Quit: Goodbye).
18:19:18 <ais523> er, hmm, how can I answer that if Taneb isn't here?
18:19:47 <ais523> but it goes back to that point in the past and recalculates in there
18:19:56 <ais523> whether the present ever rehappens depends on what you changed
18:21:25 <elliott_> <ais523> er, hmm, how can I answer that if Taneb isn't here?
18:21:26 <elliott_> retroactively
18:21:52 <ais523> Feather's time-travel model is certainly sane and self-consistent, at least
18:25:45 <coppro> how boring
18:26:50 <elliott_> coppro: you have clearly not thought even the slighest bit about Feather :)
18:33:26 <ais523> coppro: and you probably want to stay that way :)
18:48:05 <itidus20> hmm
18:48:58 <itidus20> i must say i regret not being schooled at a school where they can cane your fingers
18:49:13 <elliott_> i don't
18:49:14 <itidus20> it sounds more exciting
18:49:24 <itidus20> more character building
18:49:56 <itidus20> 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 <itidus20> now thugs abound
18:50:14 -!- elliott has joined.
18:50:32 <itidus20> 10 year olds with shopping trolley poles roam the streets
18:50:51 <elliott> is this avant garde poetry
18:51:02 <itidus20> no its what i actually heard
18:51:49 <itidus20> 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 <itidus20> 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 <itidus20> and you have some 10 year olds armed and dangerous
18:53:19 <itidus20> 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 <Taneb> ais523: what would have been the answer to the question I asked before I left?
19:10:11 <ais523> Taneb: a retroactive change goes back to when the thing you retroactively changed was set
19:10:15 <ais523> changes it, then reruns from there
19:10:20 <ais523> whether the present happens again depends on what the change was
19:13:30 <itidus20> 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 <Sgeo> 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 <Sgeo> And array[0] stores the next available index
19:50:17 <itidus20> Sgeo: ive been hacking it up a bit more since last post
19:50:30 -!- Taneb has joined.
19:50:48 <itidus20> its a terrible mess here: http://codepad.org/meXjY5Eo
19:50:50 <Sgeo> Maybe a clear, readable diagram of what's what would be clearer
19:51:20 <itidus20> i just started working on this getindex function but i dont think i remembered exactly what its supposed to do
19:51:33 <Sgeo> 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 <itidus20> i updated it to use allocation at least
19:52:33 <itidus20> its such a ridiculous piece of code
19:52:49 -!- sliddy has quit (Ping timeout: 276 seconds).
19:57:58 <itidus20> Sgeo: basically my poor methodologies as a coder are being revealed
19:58:11 <Sgeo> >.>
19:58:13 <Sgeo> <,<
19:58:31 <Sgeo> Wow, I can barely type <.<
19:58:49 <Sgeo> Becuase I'm so used to >.>, that my finger wants to stay on the same key when typing <,<
19:59:28 <itidus20> the variable names a and b soon become kaleidoscopic
20:00:02 <itidus20> because i possibly didn't design the code properly ^_^;;
20:00:08 <itidus20> or at all ^^;;
20:13:08 -!- variable has joined.
20:13:42 -!- augur has quit (Remote host closed the connection).
20:17:08 <Taneb> Is there a way to map a bit string to a BF Joust program with matching loops?
20:18:47 <elliott> BF Joust programs are a countable set, so yes.
20:18:52 -!- KingOfKarlsruhe has joined.
20:19:11 <Taneb> I mean, is there a way that someone can tell me?
20:20:48 <elliott> 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 <fizzie> It was a rather long discussion, that brainfuck-to-naturals bijection.
20:21:27 <elliott> Didn't produce much useful, either.
20:21:43 <Taneb> Link on bf page doesn't work
20:21:57 <elliott> Probably lost forever then
20:22:05 <elliott> You could reconstruct from logs :)
20:26:25 <fizzie> All the pastie.org links on the corresponding log are dead. :/ :\
20:26:40 <fizzie> It was in 2010-05-03 anyhow.
20:27:35 <fizzie> elliott: <alise> [bifro] has rekindled my love affair with Haskell.
20:27:59 <elliott> pastie.org died ages ago.
20:28:03 <elliott> Or rather, all the pastes.
20:28:08 <elliott> They probably aren't coming back.
20:28:11 <elliott> It's annoying but OH
20:28:12 <elliott> WELL
20:28:28 <Taneb> Wayback machine is down
20:28:40 <elliott> 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 <elliott> 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 <elliott> but uhhh
20:28:55 <elliott> as for that
20:28:57 <elliott> you're on your own :P
20:29:03 <elliott> we didn't find anything satisfactory
20:29:03 <elliott> afaik
20:29:07 <elliott> good luck anyway
20:31:03 <fizzie> Especially for nested loops; one version of your bifro produced 63 for [], 590295810358705651711 for [[]], and broke down and cried for [[[]]].
20:31:24 <elliott> heh
20:32:59 <itidus20> ok, especially for sgeo, this is another update: http://codepad.org/XPWd2WBX
20:33:39 <fizzie> 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 <itidus20> this one is perhaps even more clear: http://codepad.org/aXHMoksZ
20:43:49 -!- elliott has quit (Ping timeout: 260 seconds).
20:52:03 <ais523> BF Joust evolutionary programming is probably better done via assembling strategy fragments
20:52:21 <Taneb> Yes, but I'm mad
20:52:21 <ais523> 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 <itidus20> in a game like rock paper scissors or coin tossing or penny matching there is no perfect play.
20:54:08 <itidus20> unless it is to be truely random
20:54:41 * itidus20 shrugs.
20:55:10 <itidus20> 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 <ais523> hey, channel, want something to rage at? http://www.reddit.com/r/programming/comments/k9cbj/trollscript_an_esoteric_dialect_of_brainfuck/
21:03:20 <Taneb> If we raged at every brainfuck derivative out there we would have no time for Dwarf Fortress succession games
21:05:09 <monqy> saw that language yesterday; died
21:30:21 <Sgeo> Is my BF derivative at least a little not idiotic?
21:34:34 <itidus20> 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 <Phantom_Hoover> Taneb, on that subject are you competent to pull levers and move troops.
21:43:20 <Sgeo> Insert is O(1). In del_cell(), don't call getindex() twice, this isn't Haskell.
21:43:22 <Phantom_Hoover> 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 <Taneb> Phantom_Hoover: The former but I have a bit to go for the latter
21:43:48 <Sgeo> Although that might be a premature optimization *shrug*
21:43:54 <Taneb> Goodnight
21:43:57 -!- Taneb has quit (Quit: Goodbye).
21:43:57 <itidus20> Sgeo: well insert is not really done yeah...
21:44:16 <Sgeo> 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 <itidus20> heres a cleaner version: http://codepad.org/p4r3O9Ep
21:44:44 <itidus20> not much cleaner though.. just cleaned up main
21:45:07 * Sgeo isn't going to switch right now
21:45:27 <itidus20> sgeo yes i have already asked for too much attention over this
21:45:56 <Sgeo> 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 <itidus20> i only figured out what it did by looking at what it did in testing... and forcing myself to use it
21:48:06 <itidus20> 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 <itidus20> 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 <Sgeo> itidus20, switch to gist.github.com ?
21:51:37 <Sgeo> Although that won't run code for you
21:52:08 <itidus20> 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 <itidus20> i may as well be sending sms about it >:-)
21:52:39 <Sgeo> Well, I probably should have said something
21:53:02 -!- copumpkin has changed nick to gurbles.
21:53:06 <itidus20> nope.
21:53:19 <itidus20> i shouldn't have addressed it all at you though.
21:53:34 -!- gurbles has changed nick to grubIes.
21:53:45 <itidus20> 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 <itidus20> i see what you mean about del_cell now
22:02:24 <oklopol> "<fizzie> 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 <oklopol> this is even a logspace computation, if i'm not mistaken, so you can do it in O(n) time
22:04:44 <itidus20> my code is absolutely a monstrosity... its even worse than a linked list
22:04:48 <oklopol> hmm wait, that may be complete
22:04:52 <oklopol> bullshit
22:07:48 <oklopol> 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 <oklopol> i'll ask someone at the uni on monday, dunno what to search for really
22:12:43 <oklopol> 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 <oklopol> nth string in the grammar i mean
22:13:26 <oklopol> 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 <oklopol> would certainly be interesting to research this, but it's prolly known to death
22:19:14 <itidus20> 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 <oklopol> how do you delete from an array? well i guess i know what you mean
22:20:16 <itidus20> theres 2 ways
22:20:37 <itidus20> 1 way is to have a deleted state for each cell of the array which can be toggled
22:20:38 <oklopol> store the index of next valid and previous valid is one i suppose
22:21:04 <oklopol> but you can't index anymore so it's a bit stupid
22:21:15 <oklopol> with your way, you can't even iterate
22:21:24 <oklopol> with my way, you at least have a linked list
22:21:46 <oklopol> what's the other one
22:22:50 <oklopol> i mean you can't iterate in amortized constant time w.r.t. current size of array
22:23:15 <itidus20> the other one is just some ridiculous thing like next valid yeah
22:23:43 <oklopol> next valid and last valid, yeah, that lets you iterate
22:23:55 <itidus20> but i didn't do next valid and last valid
22:24:03 <oklopol> next valid also lets you iterate, but then deletion is not constant time
22:24:07 <oklopol> it's linear
22:24:09 <itidus20> i am going to abandon this code altogether....
22:24:14 <itidus20> but i will show you it
22:24:22 <itidus20> http://codepad.org/mre22niv
22:24:27 <oklopol> so you might as well just move all the elements
22:24:49 <oklopol> 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 <itidus20> its really a hopeless mess... and it was nowhere near complete
22:25:46 <itidus20> and finally i came to my senses and realized its not even going to help the insert problem
22:26:19 <oklopol> i don't get del_range
22:26:31 <itidus20> it deletes from 2 to 3 :))
22:26:37 <itidus20> in the example
22:27:42 <itidus20> its very absurd code.. one might almost say obfuscated
22:27:46 <oklopol> well i dunno what array actually contains
22:28:00 <oklopol> values + blanks?
22:28:07 <oklopol> and 0 is length
22:28:32 <itidus20> it contains run lengths and next valids
22:28:46 <itidus20> but the insert and delete code wasn't finished either
22:29:26 <oklopol> how do you make sure deletion doesn't make next valid pointers invalid
22:29:43 <itidus20> its not done :P
22:29:49 <oklopol> oh okay
22:29:55 <oklopol> you can't do it in constant time
22:29:58 <itidus20> hummmmmm
22:30:06 <oklopol> with just next valid pointers
22:30:30 <oklopol> it's linear
22:30:48 <oklopol> same complexity as the usual deletion where you shift everything
22:30:50 <itidus20> its very incomplete.. im just glad i finally realized how useless it is
22:31:55 <itidus20> 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 <oklopol> everyone does that at one point or another i suppose
22:32:24 <oklopol> it's a dead end
22:33:05 <oklopol> well, not quite, but i think the only solutions have a logarithic stack of arrays simulating a tree
22:33:24 <oklopol> don't ask for details, my data structure days are long gone
22:33:35 <itidus20> ok
22:33:58 <oklopol> 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 <oklopol> you get log n for everything
22:35:28 <oklopol> prolly amortized, since you need to balance the tree a bit every now and then
22:37:37 <oklopol> 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 <oklopol> 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 <oklopol> assuming you know, say, roughly how red-black trees work
22:41:15 <itidus20> 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 <oklopol> 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 <oklopol> *well
22:42:25 <itidus20> another idea which occured to me is a series of hops between deleted cells
22:42:37 <oklopol> wuzzat
22:42:51 <itidus20> cell 0 would contain an index of the first deleted cell
22:43:11 <itidus20> and the first would contain an index of the second and so forth
22:43:27 <oklopol> again, linear deletion
22:43:31 <itidus20> yup
22:43:40 <itidus20> and it would kill off the indexing
22:44:00 <oklopol> 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.
←2011-09-09 2011-09-10 2011-09-11→ ↑2011 ↑all