00:05:37 -!- atsampso1 has changed nick to atsampson.
00:12:38 -!- Judofyr has quit.
00:24:31 -!- Tritonio_ has quit (Remote closed the connection).
00:44:34 -!- Tritonio_ has joined.
00:48:37 -!- jix has quit ("This computer has gone to sleep").
00:53:35 -!- carl has joined.
01:08:38 -!- tola_ has quit.
01:13:19 -!- tola_ has joined.
01:22:45 -!- carl has quit (Read error: 110 (Connection timed out)).
01:32:14 -!- tola_ has quit.
02:10:04 -!- ehird_ has quit ("This computer has gone to sleep").
02:10:04 -!- ehird has quit.
02:44:05 -!- Overand_ has joined.
02:45:17 -!- Overand has quit (Read error: 104 (Connection reset by peer)).
02:45:24 -!- Overand_ has changed nick to Overand.
03:14:57 -!- adu has joined.
03:19:17 -!- GreaseMonkey has joined.
03:29:15 -!- adu has left (?).
04:49:08 * pikhq is curious: how many people here went to their high school prom?
04:53:00 * pikhq is going to his senior prom. w00ts.
04:53:15 <pikhq> (and went to his junior prom)
05:06:16 <pikhq> GregorR: No, a loser goes to prom without a date.
05:06:29 <pikhq> I had a date the first time, and I have a girlfriend now.
05:27:22 <RodgerTheGreat> I went to my senior prom. I was glad I went at least once, I guess.
05:36:16 <pikhq> Congrats: you're ahead of the average computer geek.
05:37:54 * pikhq notes that this year, prom ought to be cheaper, by merit of *owning* a tux. . .
05:38:52 <RodgerTheGreat> I went with a friend, but I did have a date (and she was pretty cute, too.)
05:40:56 <RodgerTheGreat> overall, I'd say it was a fun experience, but not really my style. I'm not big on parties.
05:54:52 * Sgeo went to his high school prom
05:55:00 <Sgeo> Without a date :(
05:55:40 <Sgeo> I did ask a girl if she would go to the prom with me. She said something about how she wasn't sure if she was going :(
05:55:45 <Sgeo> She did end up going though
05:56:38 <RodgerTheGreat> ouch, yeah that's something like what happened with the first girl I asked.
05:57:16 <Sgeo> I kept wondering if I should keep waiting for her to get back to me
06:06:01 <pikhq> The girl I asked this year was apparently almost ready to ask *me*. XD
06:50:11 -!- Sgeo has quit ("Ex-Chat").
06:56:27 <lament> welcome to #esoteric-i-had-more-sex-in-high-school-than-you!
06:57:25 <pikhq> lament: Some people don't have a "alright, I'll date, wait a bit fuck, break up, repeat" attitude with relationships.
06:58:08 <lament> pikhq: some people commit suicide due to unrequited love
06:58:18 <RodgerTheGreat> I, however, agree with lament in the sense that this is bordering on becoming a pissing contest. As they say on somethingawful, "MY GIRLFRIEND"
06:58:57 <pikhq> RodgerTheGreat: It had been done with for almost an hour when he brought it back up. :p
06:59:04 <RodgerTheGreat> if you have a happy relationship, good for you. Not everyone needs to hear about it.
06:59:16 <GregorR> pikhq: That's what she said.
06:59:42 <pikhq> Now you just reminded me of my Japanese teacher saying that in Japanese.
07:00:05 <pikhq> Needless to say, nobody was expecting it.
07:00:51 <pikhq> RodgerTheGreat: BTW, it's not so much a pissing contest as it is a dick-measuring contest. :p
07:01:27 <RodgerTheGreat> an inability to interpret straightforward metaphor and common figures of speech is not a virtue
07:02:03 <lament> pikhq: that's what she said.
07:02:12 <pikhq> lament: ... in bed.
07:02:29 <pikhq> Anyways, this has now degenerated into a series of cliches.
07:02:31 <lament> ... in the type system
07:02:46 <pikhq> A type system based on common cliches?
07:03:44 <RodgerTheGreat> cliches are memetic macros, serving to obviate active thought.
07:04:01 <pikhq> Kanojou ha sou itta.
07:04:06 <pikhq> (that's what she said.)
07:04:42 <lament> RodgerTheGreat: TAKE OFF EVERY ZIG. MOVE ZIG.
07:04:43 <pikhq> Anyways, yes, that much is obvious.
07:04:59 <lament> PLEASE TAKE OFF EVERY ZIG ... IN BED
07:05:08 <pikhq> In fact, arguably, it is exactly the same in purpose, if not in form, as extensive psuedointellectualism.
07:05:22 <pikhq> (as most commonly seen in Basketweaving Monthly. ;p)
07:05:45 <RodgerTheGreat> what's interesting, though, is what seems to be an inherent tendency toward cliched behavior and thought patterns
07:06:19 <RodgerTheGreat> if this is the case, what drives the impetus for novel behavior, and what can we draw from this as a whole?
07:06:20 <pikhq> It's almost a herd mentality.
07:06:59 <RodgerTheGreat> pikhq: I would argue that it *is* a herd mentality. Humans are significantly more instinctual creatures than we like to think.
07:07:24 <pikhq> The impetus for novel behavior is, surely, a moderately rare, and therefore not terribly succesful, evolutionary strategy.
07:07:47 <pikhq> Sure, we see the rare genius: eccentric and brilliant.
07:07:52 <pikhq> How many of them breed?
07:08:26 <pikhq> (answer: not as many as those who follow the herding instincts of most of homo)
07:08:43 <RodgerTheGreat> Is meme-forging a trait that exists in all humans, and if so does this tendency come in many weights? Is there a genetic predisposition, a shared neurological background?
07:08:56 <lament> geniuses aren't a race, though. Genius is not genetic.
07:09:00 <pikhq> Or perhaps it's culturally based?
07:09:04 <lament> so it doesn't matter if they breed or not
07:09:05 <pikhq> lament: It could be a rare genetic mutation.
07:09:16 <lament> their children are normal.
07:09:31 <pikhq> Or it could be a damned rare application of persperation.
07:09:45 <RodgerTheGreat> Is it even important that these individuals reproduce? Perhaps the ideas they generate, memetic children so to speak, represent as great a degree of success as biological reproduction?
07:09:46 <GregorR> I don't think "genius" is well-defined enough that it can be associated with any particular genetic factor, upbringing, etc, etc.
07:10:01 <pikhq> Which would indicate that the lack of novel behavior is more of a cultural detail.
07:10:12 <lament> "exceptionally talented people" is a pretty well-defined group
07:10:24 <RodgerTheGreat> A tendency that requires a specific environment to blossom?
07:10:35 <pikhq> RodgerTheGreat: Perhaps.
07:10:37 <lament> you tend to notice when somebody's exceptionally talented (so they become world-class at some endeavour)
07:14:45 -!- RodgerTheGreat has quit.
07:51:49 -!- oklopol has joined.
07:54:26 <oklopol> http://pastebin.com/m5c392293 <<< rational class with just multiplication implemented in oklotalk--
07:54:46 <oklopol> where oklotalk-- is the name for oklotalk with this retarded syntax
07:55:20 <oklopol> if anyone is at all interested, i would, naturally, love to explain
07:56:04 <oklopol> multiplies 4/9 by 3/2 and simplifies to 2/3
07:57:01 <oklopol> i'm surprised i'm actually capable of keeping on a project for over a day when i have a deadline
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:59:16 -!- oklopol has quit (Read error: 113 (No route to host)).
09:02:53 -!- oklopol has joined.
10:02:20 <oklopol> http://www.vjn.fi/pb/p441122612.txt pretty much complete
10:02:39 <oklopol> although i'm sure gcd fails on negatives, since i don't even know what it should return :P
10:02:48 <oklopol> to make the numbers work that is
10:03:16 <oklopol> perhaps there is a simple way, haven't given any thought to it, because this is just a small example of making new types in oklotalk
10:04:03 <oklopol> why is everyone so quiet now that THERE IS SOMETHING INTERESTING GOING ON FOR ONCE! :D
10:04:15 <oklopol> i know, i know, no one cares
10:04:31 <oklopol> the fucking kebab place was closed :<
10:13:02 <fizzie> Maybe you should then use a normal kebab place instead of a... uh, procreation-oriented one.
10:14:44 <oklopol> well fucking kebab was really en euphemism for hot gay love.
10:15:07 <GregorR> Let's say you have a byte, arranged something like this: aaaaabbb, and you wanted to get just the 'a' part, multiplied by 4.
10:15:18 -!- ais523 has joined.
10:15:28 <oklopol> so you fibble a few rotations
10:15:34 <GregorR> If you're an idiot, like Gregor is, you would simply shift it right by 1, leaving some random-arsed part of the 'b' part still in tact BECAUSE YOU'D BE A DUMBFUCK
10:15:53 <oklopol> haha lol, let's all point at GregorR and laugh
10:15:55 <GregorR> So, uh, JSMIPS works much better now >_>
10:16:13 * oklopol would never make such a dumb mistake
10:16:19 <GregorR> And it is beyond shocking how much actually worked with that bug in place.
10:16:35 <oklopol> btw. spent 3 hours yesterday just to do a add->try_add fix.
10:16:46 <oklopol> i mean, changed the variable add to try_add.
10:17:17 <GregorR> And couldn't quite find every last instance? :P
10:17:22 <oklopol> these adds copy around function namespaces
10:17:28 <GregorR> (Shouldn't smart compilers be able to tell you these things?!)
10:17:58 <oklopol> and in almost every case, add works, but in some corner cases, it overwrites some variables with old ones, when you create an inner function in another function
10:17:58 -!- GreaseMonkey has quit ("nighty").
10:18:17 <oklopol> i kinda assumed after sk worked, scoping worked... but noooo
10:18:36 <oklopol> sk doesn't really test dynamic scoping though, i had separate tests for it
10:19:26 <oklopol> hehe, pressed on another channel's name by accident, for a second i though saying that got me kicked :P
10:19:41 <oklopol> "both? GET THE FUCK OUTTA HERE, SICKO"
10:19:48 <oklopol> but i guess it's not that weird
10:20:00 <oklopol> uhhh i need to pee, god i'm talkative today
10:33:27 -!- oklopol has quit (Read error: 104 (Connection reset by peer)).
10:35:19 -!- oklopol has joined.
10:36:57 -!- oklofok has joined.
10:40:36 <ais523> GregorR: what was the bug?
10:51:33 -!- Judofyr has joined.
10:51:42 <ais523> oklofok: I only caught the second half of the explanation
10:51:56 <oklofok> GregorR: Let's say you have a byte, arranged something like this: aaaaabbb, and you wanted to get just the 'a' part, multiplied by 4.
10:52:03 <oklofok> sorry, i didn't see you join
10:55:35 -!- oklopol has quit (Read error: 110 (Connection timed out)).
12:06:15 <ais523> (translation of that operation into INTERCAL, hopefully correct)
12:22:56 -!- oklopol has joined.
12:23:24 -!- oklofok has quit (Read error: 113 (No route to host)).
12:55:29 -!- ais523 has quit (Read error: 110 (Connection timed out)).
13:19:39 -!- ais523 has joined.
14:19:33 -!- Iskr_ has joined.
14:20:54 -!- Iskr has quit (Nick collision from services.).
14:21:02 -!- Iskr_ has changed nick to Iskr.
14:38:54 -!- Tritonio_ has quit (Remote closed the connection).
15:13:14 -!- vixey` has joined.
16:10:16 -!- ehird_ has joined.
16:39:57 <vixey`> hmmmmmmmmmmmm Hi ehird
16:42:36 <ehird_> <lament>welcome to #esoteric-i-had-more-sex-in-high-school-than-you!
16:45:09 <oklopol> pfft i had more than lament
16:46:35 <vixey`> was this during study time?
16:47:58 -!- RodgerTheGreat has joined.
16:51:24 -!- vixey` has quit ("Leaving").
16:51:58 -!- vixey has joined.
17:25:46 <ehird_> ais523: I had an idea for an operator like and/or
17:25:59 <ais523> ehird_: there's a BUT in TriINTERCAL
17:26:13 <ais523> search the logs for its definition (I discussed it recently), or look at the C-INTERCAL manual
17:26:23 <ehird_> ais523: i'm talking about a logical operator though
17:26:24 <ais523> (it exists in CLC-INTERCAL too, but its docs say 'see the C-INTERCAL manual')
17:26:33 <ais523> it can be used like AND or OR
17:26:41 <ehird_> TRUE but FALSE = FALSE
17:26:44 <ais523> but it works on ternary logic levels
17:26:45 <ehird_> FALSE but FALSE = FALSE
17:26:56 <ais523> ehird_: you've just defined not-reverse-implies
17:27:10 <ehird_> ais523: well, that's too wordy. I call it 'but'
17:27:25 <ais523> RodgerTheGreat: TRUE xor FALSE = TRUE
17:27:28 <vixey> TRUE but FALSE = FALSE
17:27:41 <ehird_> SHOULD 'true but false' be false?
17:28:03 <ais523> ehird_: just use the INTERCAL definition
17:28:11 <ehird_> ais523: naww, i want a binary definition
17:28:25 <ais523> ehird_: stop being so attached to binary!
17:28:36 <ais523> ternary is the NUMBER SYSTEM of the FUTURE
17:29:34 <ehird_> *Main> not test `but` test1
17:30:31 <ehird_> but :: Bool -> Bool -> Bool
17:30:31 <ehird_> True `but` True = True
17:30:31 <ehird_> True `but` False = False
17:30:31 <ehird_> False `but` True = False
17:30:31 <ehird_> False `but` False = False
17:30:50 <ais523> ehird_: `but` is just `and` in the not a but b situation
17:31:06 <ehird_> there's no new operators under the sun
17:31:20 <ais523> ehird_: crz was pretty weird
17:31:29 <ais523> (the only logical operation available in Malbolge)
17:31:34 <vixey> there's 32 of them
17:31:40 <oklopol> anyway, the problem with but is it's not purely a logical operator, it has expectancy integrated
17:31:51 <oklopol> and expectancy doesn't occur in programming languages
17:32:39 <ais523> RodgerTheGreat: 2^4 == 6 in C
17:33:00 <RodgerTheGreat> that's because in C, a carat has nothing to do with powering
17:33:16 <oklopol> RodgerTheGreat: i'm sure ais523 didn't know that :D
17:33:36 <ais523> no, xor is subtract-without-borrow
17:33:41 <ais523> add-without-carry is sharkfin
17:33:46 <ais523> it's just that they happen to be the same in base 2
17:34:23 <ehird_> oklopol: what was your 'natural language OR' again?
17:34:37 <ehird_> it was 'exclusive maybe or' or something lik ethat
17:34:48 <ehird_> oklopol: you said it a while back
17:34:48 <oklopol> i'm not sure what you are referring to
17:34:54 <ais523> I conclude that C's ^ is actually sharkfin, because it uses the same character as INTERCAL's sharkfin
17:35:02 <ais523> but C only works in binary, so it's hard to tell
17:35:10 <ehird_> you said that natural language's "OR" was not the OR in programming languages
17:35:17 <ehird_> you said it was NMOR, or something like that
17:35:25 <ehird_> which was "Exclusive maybe or", or something like that
17:35:55 <oklopol> i don't know what you mean, sorry :D
17:36:54 <oklopol> i was thinking i'd implement a natural language or in oklotalk, though, for instance (4 or 7) + 2 == 6 ==> true
17:37:17 <oklopol> this needs to be done in a dirty fashion, though, because oklotalk is a dirty language.
17:37:28 <oklopol> meaning it doesn't work 100%
17:38:00 <oklopol> once i do state lists, this should be possible, but that's not for this implementatino
17:38:06 <ehird_> oklopol: oh that's easy
17:38:18 <oklopol> ehird_: show it to me in a language
17:38:27 <ehird_> x = amb(4,7); if (x+2 == 6) { print("yay"); } else { amb(); }
17:38:53 <ehird_> oklopol: well, its isomorphic to 'amb'
17:38:53 <ehird_> http://www.randomhacks.net/articles/2005/10/11/amb-operator
17:38:55 <ais523> DO .1 <- #4 MAYBE DON'T .1 <- #7 DO .2 <- #2 DO (1000) NEXT DO ABSTAIN '.3~.3'~#1 FROM (1) (1) DO GO BACK DO GO AHEAD
17:38:57 <ehird_> there is an implementation
17:39:02 <ais523> see, it's possible in INTERCAL too
17:39:11 <ehird_> oklopol: it uses callcc, though, so make sure you understand that ;)
17:39:17 <ehird_> ais523: is that using the continuation lib?
17:39:27 <ais523> it's using MAYBE/GO BACK/GO AHEAD
17:39:35 <ehird_> oklopol: but yeah, http://www.randomhacks.net/articles/2005/10/11/amb-operator. it includes a simple explanation of it and a simple implementation
17:39:40 <oklopol> ehird_: i know all this, naturally, that doesn't necessarily make implementing or trivial
17:39:48 <ehird_> oklopol: you know amb?
17:39:52 <ehird_> you can implement or kind of well
17:39:55 <ehird_> if you can overload ==
17:40:05 <ehird_> just make the + etc provide a temp object
17:40:06 <oklopol> well that doesn't sound too convenient
17:40:08 <ehird_> then == to morph itself correctly
17:40:13 <ehird_> oklopol: but really, look at amb
17:40:40 <oklopol> the problem is about generic operator type checking, at least in oklotalk
17:41:08 <ais523> amb((char*)x, (int*)y)+1
17:41:16 <oklopol> but anyway, i still don't know what you mean by NMOR
17:41:20 <ehird_> ais523: I made amb in C once
17:41:26 <ais523> ehird_: bet it couldn't handle that
17:41:27 <oklopol> ehird_: why should i look at amb, it's a fairly simple operator
17:41:27 <ehird_> It used a continuation lib using stack smashing
17:41:36 <ehird_> TRY(x) is like return x;
17:41:38 <ehird_> but you can backtrack to it
17:41:48 <ehird_> FAIL; backtracks to the latest TRY(x) and resumes from there
17:42:02 <ehird_> ais523: it could handle mostly anything
17:42:04 <ehird_> it was something like this
17:42:14 <oklopol> the C implementation was quite interesting, i gotta admit
17:42:14 -!- Judofyr has quit.
17:42:14 <ehird_> ais523: but you needed to specify the argc
17:42:22 <ehird_> since c cannot do varargs without knowing that
17:42:31 <ais523> ehird_: you still can't change the type of the return value
17:42:42 <ais523> which is needed for that expression to work
17:43:15 <ehird_> typedef int amb_t; amb_t amb(size_t argc, ...) {va_list ap; amb_t x; va_start(ap, argc); while (argc--) {x = va_arg(ap, amb_t); TRY(x);} FAIL;}
17:43:34 <ehird_> the end FAIL will mean that we exhausted the args, but maybe things can get better if some other thing changes
17:43:41 <ehird_> mostly it'll just terminate the program since there's no previous backtracks
17:43:46 <ehird_> anyway, here's an amb usage example in c
17:44:08 <ais523> ehird_: that's really bad C, because you didn't use va_end
17:44:10 <vixey> Scheme is a better place to describe AMB :/
17:44:23 <ehird_> int x = amb(3, 1, 2, 3); int y = amb(3, 4, 5, 6); if (x*y == 8) {printf("%i %i\n", x, y);} else {amb(0);}
17:44:29 <ehird_> ais523: just add it before the FAIL
17:44:30 <oklopol> vixey: that's the charm, of course
17:44:36 <ehird_> ais523: i just typed that out now, anyway
17:44:49 <ehird_> vixey: But you need two callcc's in Scheme to do it
17:44:53 <ais523> ehird_: no it is hard, because you don't call va_end before TRY returns
17:45:09 <ehird_> ais523: but that's alright, because we have to return there
17:45:12 <ehird_> ais523: think about it like a coroutine
17:45:14 <vixey> you -are- mad ehird
17:45:17 <ehird_> it is still running, just blocked
17:45:18 <ais523> ehird_: you have to call va_end before you return
17:45:21 <ais523> or the stack may be wrong
17:45:23 <ehird_> ais523: TRY() is not return
17:45:29 <ehird_> ais523: TRY() ACTS like return
17:45:32 <ais523> ehird_: but it can act like return
17:45:34 <ehird_> it in fact does some stack magic
17:45:39 <ehird_> ais523: it is implemented totally differently
17:45:43 <vixey> http://rosettacode.org/wiki/Amb
17:45:43 <ais523> and if you return while the stack is wrong, you /will/ end up jumping to a random location
17:46:06 <ehird_> vixey: I talked to marshmallows when he made that page.
17:46:09 <ais523> however, va_end is a NOP in most C implementations, which is why you never noticed
17:46:17 <ehird_> ais523: Sigh... http://homepage.mac.com/sigfpe/Computing/continuations.html
17:46:23 <ehird_> Read the implementation (it's old-style C though)
17:46:33 <ehird_> vixey: That AMB is horrific, and he agreed.
17:46:40 <ais523> ehird_: then you can get away with it, because you're using varargs not stdarg
17:46:55 <ehird_> the C is only old-style in that it casts malloc
17:47:55 <ais523> ehird_: that definition of TRY may fail if va_end hasn't been called
17:48:06 <ehird_> ais523: did you look at the actual code that it calls?
17:48:33 <ehird_> Haskell's amb is really nice
17:48:35 <ehird_> it's [] in the list monad ;)
17:48:45 <ais523> saving the context does not alter the stack, so va_end is still necessary!
17:49:04 <ehird_> and what's more, the list it generates is the bag-of
17:49:08 <ehird_> to get just one, you use 'head'
17:49:15 <ehird_> so 'head' is the list monad's run :)
17:49:22 <oklopol> wonder if i can manage amb without continuations in oklotalk...
17:49:25 <ehird_> ais523: and here's the [] monad's >>=
17:49:33 <ehird_> xs >>= f = concatMap f xs
17:49:40 <vixey> (>>=) = flip concatMap -- !!
17:49:56 <ehird_> it's a really elegant way to use amb
17:50:02 <vixey> upside down robot ninja !
17:50:08 <ehird_> vixey: Pointless Haskell considered harmful in most cases.
17:50:17 <vixey> upside down robot ninja > "harmful"
17:50:26 <ehird_> amb(E, [_|ES]) :- amb(E, ES).
17:50:33 <vixey> amb = member in Prolog yeah
17:50:36 <ehird_> but then prolog implementations practically have 'amb' built in
17:50:37 <ais523> ehird_: every single operation in Prolog is amb, more or less
17:52:16 <ais523> well, apart from cut, which is really anti-Prolog
17:52:26 <vixey> cut is very Prolog
17:52:35 <ais523> when doing a Prolog interp in Prolog, you have to use weird things like nonlocal cuts
17:52:56 <ais523> vixey: yes, it's a useful part of the language, but it goes horribly against the theoretical foundations it's built on
17:53:45 <ais523> ehird_: amb in Cyclexa: ('abc')^ is amb('a', 'b', 'c')
17:54:00 <wildhalcyon> Prolog's one of those cases where the theory is more interesting than the application.
17:54:19 <vixey> did you just math is interesting?!
17:54:55 <vixey> I definitely agree
17:56:33 <vixey> implementing Prolog with cut using streams is very natural
17:57:02 <vixey> It's hard to do it with explicit choice point stack though :[
17:57:39 <ais523> Backtracking INTERCAL uses at least one choice point stack
17:57:46 <ais523> more if you have multiple threads
17:58:03 <ais523> and stack elements are refcounted so they can belong to more than one thread, allowing you to backtrack past a fork
17:58:27 <oklopol> (-> (@ n [$any [1 2 3]]) n)
17:58:33 -!- wildhalcyon has quit (Read error: 104 (Connection reset by peer)).
17:58:39 <oklopol> oklotalk does have something of an amb, for pattern matching
17:58:42 <vixey> just because I don't know what , does
17:58:48 <vixey> in terms of choice points
17:59:07 <ais523> a, b means run a, then run b
17:59:08 <oklopol> but i mean... whazzitcalled that declarativeness
17:59:14 <ais523> if a backtracks then b is never run
17:59:30 <ais523> if b backtracks then it can backtrack into a, because it was run earlier
17:59:47 <vixey> ( member(X,[a,b,c]) , member(Y,[x,y,z]) )
18:00:08 <ais523> then member sets X=a and sets two choicepoints
18:00:18 <ais523> then the other member sets Y=x and sets two more choicepoints
18:00:21 <ais523> I don't see the problem
18:00:25 <vixey> if you solve the LHS then the RHS, backtrack, RHS, backtrack, RHS, backtrack
18:00:34 <vixey> next you should redo member(X,[a,b,c])
18:00:52 <vixey> but once you do, how do you know to solve member(Y,[x,y,z]) next?
18:00:59 -!- wildhalcyon has joined.
18:01:01 <vixey> it was popped off the stack
18:01:25 <ais523> you put it back on the stack starting from the start, because the next thing that runs after member(X... is member(Y...
18:01:30 <ais523> because it follows it after the comma
18:01:50 <vixey> so the choice point stack also holds the entire rest of the program?
18:01:50 <ais523> imagine (member(X, http://en.wikipedia.org/wiki/Special:Search?go=Go&search=a,b,c],[d,e,f],[g,h,i), member(Y,X))
18:01:59 -!- oerjan has joined.
18:02:09 <ais523> vixey: well, reconstruct what I said
18:02:15 <ais523> the choicepoint stack holds continuations
18:02:32 <ais523> which do hold the entire rest of the program conceptually, but that can normally be optimised
18:03:20 * vixey tries to write this out in code
18:03:26 <ais523> e.g. in INTERCAL you can deduce the rest of the program from the IP and the NEXT stack
18:10:06 <SimonRC> ais523: and the variables?
18:10:20 <ais523> SimonRC: they're stored in the continuation too
18:10:28 <ais523> but don't apply to deducing what the rest of the program is
18:10:59 <SimonRC> what about conditional jumps?
18:11:12 <SimonRC> unless I misconstrue your meaning
18:14:37 <ais523> SimonRC: the route through the rest of the program varies, of course, but all the information needed to be able to work out the place in the program where execution would have proceeded, and should proceed after a choicepoint returns, is available in the IP and NEXT stack
18:45:51 -!- jix has joined.
18:51:54 -!- ais523 has quit ("(1) DO COME FROM ".2~.2"~#1 WHILE :1 <- "'?.1$.2'~'"':1/.1$.2'~#0"$#65535'"$"'"'&.1$.2'~'#0$#65535'"$#0'~#32767$#1"").
18:56:41 -!- jix has quit (Nick collision from services.).
18:56:53 -!- jix has joined.
19:19:39 -!- Judofyr has joined.
19:35:05 -!- Sgeo has joined.
19:50:37 -!- oerjan has quit ("leaving").
20:21:42 -!- AnMaster has quit (No route to host).
20:56:31 -!- ehird_ has changed nick to cboat.
20:56:39 -!- cboat has changed nick to ehird.
21:00:11 -!- oerjan has joined.
21:01:18 <SimonRC> wildhalcyon: well, I think that TechDawg's "Discarded" is art.
21:01:30 -!- tola_ has joined.
21:01:45 <SimonRC> wildhalcyon: BTW, http://www.youtube.com/watch?v=cW44BpXpjYw
21:01:54 <ehird> line rider is lovely
21:03:15 <SimonRC> in fact, several of TD's things are art
21:03:45 <ehird> http://www.youtube.com/watch?v=rn8ULJGboOE&feature=related is hilarious
21:04:19 <SimonRC> great, certainly, but n ot"hillarious"
21:06:41 -!- Tritonio_ has joined.
21:08:00 <wildhalcyon> Its a great form of art, too. I agree SimonRC
21:08:38 -!- Quendus has quit ("Reconnecting").
21:08:49 -!- Quendus has joined.
21:09:18 <wildhalcyon> but the smb 1-1 level ehird posted was better
21:10:09 <ehird> SimonRC: I found it funny
21:16:27 <wildhalcyon> I've been reading about "pure" object-oriented programming
21:17:06 <vixey> my favorite text on object orientation is AMOP
21:17:25 <vixey> Art of the Metaobject Protocol
21:18:31 <wildhalcyon> I think that might have been one of the ones I read yesterday, I'll have to double-check
21:18:58 * SimonRC drags out his usual text on what OO is: http://www.paulgraham.com/reesoo.html
21:19:07 <ehird> SimonRC: you just quoted paul graham
21:19:42 <SimonRC> It list 9 things that make up OO, and points out that no-one agrees which are the essence of OO
21:20:03 <ehird> paul graham is a blabbering moron with nothing worthwhile to say who is wrong about just about everything he talks about
21:20:04 <SimonRC> actually, that is Jonathan Rees, not PG
21:20:14 <ehird> i wish i could be less harsh, but experience gives me no choice
21:20:34 <ehird> SimonRC: IMO, yes.
21:20:39 <ehird> A Plan for Spam wasn't all that bad, though.
21:20:40 <wildhalcyon> I guess I'm glad I don't know who Paul Graham is
21:20:50 <vixey> http://www.dreamsongs.com/ObjectsHaveFailedNarrative.html
21:21:12 <SimonRC> wildhalcyon: I disagree. He is a good person to read if you disagree with him.
21:21:16 <vixey> wildhalcyon: He wrote a couple very bad books about Lisp and some very seductive essays
21:21:29 <vixey> wildhalcyon: He also wrote Roots of Lisp which -is- very good and worth reading though
21:22:01 <wildhalcyon> SimonRC, haven't you heard about the XXX-oriented paradigm?
21:22:04 <vixey> on lisp is rubbish
21:22:12 <vixey> you should burn it or delete
21:22:29 <SimonRC> wildhalcyon: "XXX-oriented"?
21:22:33 <oerjan> aiming for high penetration, i assume
21:23:40 <wildhalcyon> SimonRC - there was an esolang proposed once in which operations were sex acts
21:23:42 -!- ais523 has joined.
21:24:09 <SimonRC> ooh, didn't encounter that one
21:25:32 <oklopol> god it's fun debuggin' with vista
21:26:00 <oklopol> whole computer crashes for 10 minutes when it infloops
21:26:37 <oklopol> well si don't like waiting.
21:26:45 <oklopol> so no, it's not actually that fun
21:27:57 <SimonRC> huh, an app can crash Vista?
21:29:10 <wildhalcyon> App says, "I exist, therefore I can crash Vista"
21:29:21 <ais523> SimonRC: I saw a 'review of Windows XP' that was a disguised version of a Vista review
21:29:38 <ais523> it was talking about how downgrading to XP added pre-emptive multithreading to your computer
21:29:52 <oerjan> Sum ergo Vistam, er...
21:31:08 <oklopol> SimonRC: dunno, but both my J interp and python interp do that quite often
21:31:25 <SimonRC> it should not be possible damnit
21:31:49 <oklopol> ais523: someone pasted it here
21:31:54 <vixey> I want J interpreters!
21:31:57 <oklopol> SimonRC: indeed it shouldn't
21:32:04 <vixey> lots of people seem to have written ones and not released them
21:32:47 <vixey> when you said "my J interp" you meant the one I'm using :P
21:32:58 <oklopol> well, it doesn't seem too hard, J isn't all that extendable
21:33:14 <oklopol> vixey: i realized one might think i meant i'd coded them
21:34:19 <oerjan> Sum, ergo Vistam frangere possum
21:35:16 <oklopol> i still have no idea what the use of boxing is in J
21:35:26 <oklopol> perhaps one of you explain that
21:35:58 <vixey> changes the way things compose and operate
21:36:26 <vixey> also they are useful as tuples
21:36:27 <ais523> s/downgrading/upgrading/
21:37:35 <oerjan> ais523: i recall pasting that
21:37:48 <ais523> oerjan: I wasn't online at the time
21:38:04 <ais523> so it's just a happy coincidence
21:38:23 <oklopol> i vaguely recalled it was oerjan
21:38:34 <oklopol> but thought oerjan isn't really the pasting type
21:38:42 <oerjan> no you didn't! I do the vague recalling here!
21:39:34 <oklopol> before you know it, i'm also talking haskell gibberish and making pun out of nowhere.
21:40:42 <oerjan> as long as you don't vaguely recall talking gibberish about haskell puns
21:42:13 <oklopol> my memory is a bit vague here.
21:42:41 -!- ais523 has set topic: http://bespin.org/~nef/logs/esoteric/ --> .pr POINT .pr STRING p=".pr POINT .pr STRING p=?;print(p[:22]+REPR 34+p+REPR 34+p[24:])";print(p[:22]+REPR 34+p+REPR 34+p[24:]).
21:42:58 -!- ais523 has set topic: http://bespin.org/~nef/logs/esoteric/ --> .pr UPPER .pr STRING p=".pr UPPER .pr STRING p=?;print(p[:22]+REPR 34+p+REPR 34+p[24:])";print(p[:22]+REPR 34+p+REPR 34+p[24:]).
21:43:59 <ais523> oerjan: I'm making the topic portalbe
21:44:17 <ais523> Of course, it requires your interp to be case-sensitive
21:45:20 <ais523> sorry, I accidentally wrote the wrong stropping style first time
21:45:43 * SimonRC wonders in what ways PG's thing on bosses is BS.
21:46:26 <SimonRC> "Lots more people could start startups if they wanted to. In fact, our business model depends on it. If the pool of founders was limited to a few rare geniuses, Y Combinator wouldn't work." <-- Proof by business model requirements.
21:48:21 <oklopol> hmm... how many languages actually have extendable pattern matching?
21:48:28 <oklopol> i don't seem to recall any
21:48:53 <ais523> oklopol: Perl clames to be able to, but that's done by putting a preprocessor on regexen
21:49:15 <oklopol> i didn't even know perl had pattern matching
21:49:19 <oklopol> then again, i don't really know it
21:49:19 <vixey> can you define extendable pattern matching?
21:49:40 <oklopol> my rational numbers can be pattern matched on (/ d n)
21:49:42 <vixey> I still don't have an oklotalk interpreter and user manuel
21:49:59 <oklopol> i should have oklotalk-- by wednesday
21:50:25 <oklopol> should be --oklotalk-- or something, because it's both a subset *and* a different syntax.
21:50:30 <oklopol> but at least it's something...
21:50:36 <oerjan> haskell has had discussions on adding generalized "views" but they haven't made it into ghc at least
21:50:53 <oklopol> this must be my first project in years where i've actually been on one project for over 2 days
21:51:00 <oerjan> s/discussions/research papers/, i think actually
21:51:15 <vixey> well I can easily do this in a Lisp or Prolog but I think you mean something more general
21:51:26 <oklopol> for me, adding extendable pattern matching was a 15 minute scribble, but i guess you can think about it for years too :P
21:51:34 <oklopol> whatever suits the language designers
21:51:49 <vixey> you still haven't defined it :/
21:51:52 <oklopol> (okay, oklotalk does it fairly dirty)
21:51:57 <vixey> so I'm just guessing I know what you mean
21:52:10 <oklopol> i can show my rational number class again
21:52:21 <oklopol> and explain where you can see extended pattern matching
21:52:55 <oklopol> http://www.vjn.fi/pb/p441122612.txt
21:53:11 <oklopol> <-- addition with another rat -->
21:53:11 <oklopol> (rat (+ (* d (/ dn g)) (* dd (/ n g))) (/ (* dn n) g)))
21:53:33 <oklopol> addition, we match on the pattern [$+ (/ dd dn)], so addition by something that can be split by / into dd and dn
21:53:46 <oklopol> a rational number can be split this way, defined in the same class...
21:53:53 <oklopol> <-- pattern match on division -->
21:54:11 <vixey> })}) <-- I like this language already -->
21:54:14 <oklopol> pb means pattern match both, there are a few match tag kinda things like this
21:54:32 <oklopol> vixey: this is not actually the real syntax, although i'm beginning to like it as much as the original :P
21:55:21 <oklopol> i guess i could make a hybrid of the old and the new
21:55:35 <oklopol> does sound like something i would do
21:56:02 <vixey> I was thinking about making a new language
21:56:09 <vixey> it's kind of rubbish though
21:56:14 <vixey> it seemed good earlier :/
21:56:33 <oklopol> actually, i'll change the whole tag system now, so stuff will prolly stop working for 6 hours now.
21:56:37 <vixey> I made a prototype anyway and it really needs lazyness
21:56:46 <vixey> (which I have no idea how to implement)
21:57:09 <oklopol> you simply don't evaluate stuff until you have to
21:57:26 <oklopol> instead of evaluating the ast, you just pass it one
21:57:52 <oklopol> not that i've ever done anything with lazyness, perhaps i should
21:58:19 <GregorR> http://www.codu.org/jsmips/test.html // can anybody say JSMIPS FIBONACCI?
21:59:05 <oklopol> did you write that manually?
21:59:17 <oklopol> or was it that compileration you did some months ago
21:59:21 <vixey> http://rafb.net/p/8dTURb60.txt
21:59:22 <GregorR> http://www.codu.org/jsmips/test.c
22:00:06 <GregorR> Not sure what you mean by "that compileration you did some months ago" :P
22:00:43 <oklopol> length([_|xs])=1+length(xs). %% not sure about this (how could this generate lists of a given length?)
22:00:51 <vixey> yes it can I tested it
22:00:57 <vixey> you would be able to go
22:01:09 <vixey> and it would result in ()
22:01:18 <vixey> but also binding x to [g1,g2,g3]
22:01:26 <oklopol> shouldn't it result in each and every list of length 3?
22:01:38 <vixey> they are new variables
22:01:57 <vixey> well you can't write permutation([x|xs])=insert(x,permutation(xs)).
22:02:03 <oklopol> GregorR: indeed, i don't always speak human.
22:02:18 <vixey> you have to write permutation(insert(x,xs))=[x|permutation(xs))].
22:02:26 <vixey> which is much less natural, and that's because of strictness
22:02:53 <vixey> (I tested both in my interp, the one I -wanted- to write loops but the other works)
22:03:17 -!- Sgeo_ has joined.
22:03:22 <oklopol> what's wrong with the first one?
22:03:39 <vixey> it doesn't terminate
22:03:53 -!- Sgeo has quit (Read error: 104 (Connection reset by peer)).
22:04:00 <vixey> I would rather it did :P
22:04:24 <vixey> the plan is that lazyness finds an evaluation order that terminates if one exists
22:04:37 <vixey> so it would be very nice to have that property in a logic lang
22:04:45 <vixey> I don't know if it would translate across though
22:06:41 <oklopol> hehe, that rational number example is fun to run, 4000 lines of output
22:07:41 -!- Sgeo_ has quit (Read error: 104 (Connection reset by peer)).
22:07:48 -!- Sgeo has joined.
22:07:56 <vixey> ehird did you see it?
22:09:29 <SimonRC> GregorR: wait, MIPS under Javascript
22:10:51 <SimonRC> is MIPS a simple architecture?
22:12:38 <GregorR> MIPS I has about 60 operations.
22:13:13 <oklopol> you probably already told me, but how do you do the compilation?
22:13:18 <SimonRC> "rep strtostr" and all that
22:13:29 <SimonRC> oklopol: with a normale compiler I think
22:13:40 <SimonRC> then he has a translating program
22:14:10 <GregorR> http://www.codu.org/jsmips/patches/
22:14:37 <GregorR> And make sure you use CFLAGS="-g -O0" when compiling newlib ... something in the -O2 version borks :(
22:16:01 <ehird> GregorR: slow? hardly
22:16:15 <ehird> runs in about 4 seconds in total over here
22:16:20 <ehird> it freezes a tiny bit at the start
22:16:24 <ehird> then runs without lag
22:16:28 <GregorR> The freeze at the start is loading the ELF.
22:16:39 <GregorR> The 4 seconds is much slower than a real MIPS X-P
22:16:55 <ehird> GregorR: If I write a c program will you test it on jsmips?
22:17:01 <ehird> I want to try ridiculous things
22:17:03 <ehird> Like mucking with memory
22:17:20 <GregorR> Mucking with memory is perhaps the /least/ ridiculous thing you could try.
22:17:26 <ais523> ehird: use that C continuation program
22:17:34 <ehird> ais523: I will do that!
22:17:45 <ehird> It'll just require a little modding
22:17:46 <GregorR> Make your own cross-compiler and try it yourself :P
22:17:53 <ehird> GregorR: I'll have a crazy program for you, stat :D
22:18:10 <vixey> can the thing to set/longjmp?
22:18:14 <SimonRC> ais523: oh gods not the one that memcopys functions about is it?
22:18:24 <ehird> SimonRC: memcpy's the stack actually
22:18:26 <ais523> SimonRC: not functions, just the call stack
22:18:27 -!- Iskr has quit ("Leaving").
22:18:43 <GregorR> vixey: I haven't tested it, but it's in the standard library - in the grand scheme of things it's not that complicated, so it ought to work.
22:18:46 <ais523> once you've done that, try a multithreaded C-INTERCAL program
22:18:52 <ehird> GregorR: This will be fun
22:18:57 <ais523> or one that uses the external calls system
22:19:21 <GregorR> If I published a binary cross compiler for x86, would you people compile your own stuff? :P
22:19:29 * oklopol starts tackling quicksort in oklotalk
22:19:52 * ais523 has qemu-mips over here
22:19:58 <ehird> GregorR: For OS X? Sure.
22:20:00 <ais523> but presumably that isn't identical to JS-mips
22:20:24 <ais523> GregorR: you mean from the qemu sourcecode?
22:20:35 <GregorR> I thought qemu-mips needed an external ROM?
22:20:46 <ais523> GregorR: no idea, I've never tried to run it
22:20:58 <GregorR> I did - wanted Windows NT 3 on MIPS.
22:21:47 <ehird> almost done evil.c :D
22:24:20 <ais523> GregorR: seems that qemu-system-mips can only run Linux on a simulated Malta board
22:27:02 <ehird> GregorR: Almost done with the prog
22:28:59 <ehird> GregorR: http://rafb.net/p/tpuvWN89.html
22:29:03 <ehird> compile with 'gcc foo.c -o foo'
22:29:06 * ais523 has the evil idea of implementing Brainfuck using a single one-byte auto variable to hold all stack elements and using stack-smashing
22:29:07 <ehird> i.e. nothing special
22:29:15 <ehird> GregorR: the expected output is at the end
22:29:26 <ehird> if you put it on your site, i want to seeee it :D
22:29:39 <ehird> ais523: take a look at my link: it implements a generator using the continuations
22:30:08 <ais523> ehird: yes, I looked at it before you said that
22:30:10 <ehird> TRY() is yield, and generator() ... FAIL is an implicit loop through the items
22:30:38 <vixey> are "generators" not just streams?
22:30:49 <vixey> it's python terminology right?
22:31:06 <vixey> never heard it outside of there
22:31:09 <ehird> Generators first appeared in CLU (1975)[1] and are now available in Python[2], C#, and JavaScript[3]. (In CLU and C#, generators are called iterators.) Generators are also a prominent feature in the string manipulation language Icon.
22:31:15 <ehird> but the most common usage is in python yes
22:32:36 <ais523> incidentally, MAYBE COME FROM is a trivial way to do a generator in INTERCAL
22:32:50 <vixey> what does MAYBE COME FROM do?
22:33:03 <ais523> COMEs FROM a line, but after backtracking don't come from that line
22:33:36 <ais523> so exactly like the TRY in ehird's program, except in the calling not the called function
22:33:38 <vixey> do people write real programs with INTERCAL?
22:33:45 <ehird> vixey: INTERCAL is an esolang..
22:33:47 <ais523> depends on what you mean by 'real program'
22:33:55 <vixey> like webservers .. and stuf..
22:34:04 <ais523> there's an INTERCAL CGI script running somewhere
22:34:12 <ehird> vixey: INTERCAL is an esolang..
22:34:18 <ehird> This is #esoteric.
22:34:22 <ais523> and a CLC-INTERCAL version of a highly simplified wget
22:34:25 <vixey> why does that change anything ehird?
22:34:26 <ehird> You know. Like Brainfuck
22:34:36 <ehird> vixey: Would you ask if people made webservers with brainfuck?
22:34:53 <ais523> ehird: do people make webservers with brainfuck?
22:35:47 <ais523> PLEASE CREATE (1450) ASK
22:36:01 <ais523> PLEASE NEXT FROM [22:35]
22:36:05 <ais523> PLEASE CREATE (1650) ASK
22:36:30 <ais523> sorry I realised that the CREATE statement had to come /before/ ehird's message
22:36:31 -!- AnMaster has joined.
22:37:19 <oerjan> what you mean the compiler doesn't look for future CREATE commands? i sense a feature missing ;)
22:37:44 <ais523> oerjan: I thought of doing it like that, and decided the case where it didn't was more interesting
22:38:00 <ais523> after all, there are a range of ways to work around the problem in your own software
22:38:18 <ais523> and once I implement computed CREATE, it'll be possible to do things like DO CREATE .1 ABC DO ABC as a computed NEXT
22:38:36 <ais523> you'd lose all that if CREATE happened at compile-time
22:39:08 <oerjan> oh i didn't mean for it _always_ to happen at compile-time. perish the thought!
22:39:54 <vixey> ehird did you see my lang though :(
22:39:58 <ais523> so what's you're plan?
22:40:05 <ais523> allow some commands to work retroactively?
22:40:14 <ais523> DO CREATE (1850) ASK RETROACTIVELY #50
22:40:34 <ais523> oerjan: I didn't realise you did, but I assumed you had something or other in mind
22:41:05 <ais523> (RETROACTIVELY would be basically impossible to implement in INTERCAL by the way; I think it might be able to solve the halting problem with the semantics I have in mind and therefore be truly impossible)
22:42:45 <vixey> you could have it try to solve the halting problem and crash if it's too hard
22:42:46 <ais523> oklopol: but I can't implement any theoretically impossible commands in C-INTERCAL
22:43:00 <ais523> vixey: that would be INTERCAL's style, I agree
22:43:09 <ais523> but it would still be basically impossible in a compiled language
22:43:12 <oklopol> you can implement the non impossible parts of them
22:43:22 <oklopol> every language has programs that cannot run through
22:43:22 <ais523> maybe I'll suggest it to CLC-INTERCAL's maintainer
22:43:39 <vixey> oklopol not true :P
22:45:47 <ais523> oklopol: even oerjan's crazy HQ9+ extension?
22:46:13 <ais523> it's not entirely clear whether that was TC, because any given program designed to be TC only had a 1 in 256 chance of working
22:46:17 <ais523> and errored the rest of the time
22:46:28 <ais523> like the random-bug in INTERCAL, but much worse
22:46:37 <oklopol> the language now specifies how to make it tc?
22:46:51 <ais523> oklopol: it had an X command
22:47:00 <ais523> specified as "Makes the language Turing-complete".
22:47:04 <oklopol> but the perl extension was just one wait to do it
22:47:24 <oklopol> meaning you could do it so that it's always tc
22:47:35 <oklopol> i consider the extension a parametrizable language
22:47:45 <oklopol> because it's clear the language's semantics aren't complete as such
22:48:09 <oklopol> it's just a framework for another language to fill (be tc given X)
22:48:15 <ais523> I was going to suggest a language whose semantics were expandable at runtime, but CLC-INTERAL already does that (and C-INTERCAL to a much lesser extent)
22:57:54 <ais523> http://elliotthird.org/mirror/c-intercal/ick-0.28/pit/sort.i <--- see if you can figure out how the flow control in this works, it took me ages to write
23:23:15 * Sgeo sees what looks like a mistake in http://qntm.org/?frontier
23:23:20 <Sgeo> "We appear to have gravity in here because the screw drive in the ship skeleton is accelerating upwards and pulling the ship up with it at nine point eight one metres per second per second."
23:23:25 <Sgeo> But they should be at a point above Jupiter where they feel equivelent gravity.. or am I missing something here
23:23:29 <Sgeo> does escape velocity being the same not mean that the gravity they feel is the same?
23:24:56 <oklopol> well i haven't read the article but they might be falling freely towards jupiter, rotating it or something
23:25:08 <oklopol> in which case no gravity is perceived
23:25:25 <Sgeo> (not an article, it's fiction)
23:25:27 <oklopol> but fuck, another problem with scoping :D
23:25:38 <oklopol> it's a piece of text, so i call it an article
23:27:25 <Sgeo> They started out in the basement, and jumped to equivelent gravitational potential energy somewhere above Jupiter, conserving momentum
23:39:35 -!- oerjan has quit ("Good night").
23:49:06 <SimonRC> escape velocity is proportional of the root of the intergral of gravitational potential out to infinity
23:49:46 <SimonRC> there is no formula that directly relates escape velocity and gravitational field
23:51:14 <SimonRC> and, as oklopol pointed out, they might not be at a constant height
23:51:24 <SimonRC> and up might not be directly away from Jupiter
23:52:21 <SimonRC> if you really wanted to nitpick, you could point out that they are ignoring special relativity too
23:52:56 -!- oklopol has quit (Read error: 104 (Connection reset by peer)).
23:53:46 -!- oklopol has joined.