←2008-04-05 2008-04-06 2008-04-07→ ↑2008 ↑all
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:30:45 <SimonRC> bed-time
04:49:08 * pikhq is curious: how many people here went to their high school prom?
04:52:28 <lament> i didn't.
04:53:00 * pikhq is going to his senior prom. w00ts.
04:53:15 <pikhq> (and went to his junior prom)
05:06:03 <GregorR> LOOOOSER
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:18:32 <RodgerTheGreat> I'm back
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:56:52 <RodgerTheGreat> but, nothing ventured, nothing gained
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:27 <pikhq> GregorR: Grrr.
06:59:31 * GregorR takes a bow.
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:38 <pikhq> Hmm.
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:03:48 <RodgerTheGreat> discuss.
07:04:01 <pikhq> Kanojou ha sou itta.
07:04:06 <pikhq> (that's what she said.)
07:04:41 <RodgerTheGreat> palpable irony
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:31 <RodgerTheGreat> well, good night everyone
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:57:14 <oklopol> but i do like the results
07:57:19 <oklopol> now kebab ->
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:24 <oklopol> i should eat something
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:31 <GregorR> BUG ... SO ... STUPID ...
10:14:36 <GregorR> CAN'T ... BREATHE ...
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:20 <oklopol> yarr
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:37 <oklopol> or do an andance
10:15:44 <oklopol> :D
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:03 <GregorR> In what?
10:17:07 <oklopol> my oklotalk interp
10:17:10 <GregorR> Ah
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:18:52 <oklopol> oklotalk has both <3
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:20:01 <oklopol> ->
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:22 <oklofok> ais523: he told already
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:52:10 <oklofok> this is what you missed
10:55:35 -!- oklopol has quit (Read error: 110 (Connection timed out)).
12:06:01 <ais523> '.1$#248'~'#0$#252'
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.
15:25:08 <pikhq> GregorR: 'Nice'.
16:10:16 -!- ehird_ has joined.
16:39:14 <ehird_> doot to doot
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:42:53 <ehird_> you can't join
16:42:54 <ehird_> :(
16:45:09 <oklopol> pfft i had more than lament
16:46:35 <vixey`> was this during study time?
16:47:25 <oklopol> 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:48 <ehird_> 'but'
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:26 <ehird_> i guess:
17:26:27 <ais523> ehird_: it is
17:26:32 <ehird_> TRUE but TRUE = FALSE
17:26:33 <ais523> it can be used like AND or OR
17:26:38 <ehird_> FALSE but TRUE = TRUE
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:15 <RodgerTheGreat> ehird_: how is that not xor?
17:27:25 <ais523> RodgerTheGreat: TRUE xor FALSE = TRUE
17:27:26 <RodgerTheGreat> er, wait
17:27:28 <vixey> TRUE but FALSE = FALSE
17:27:32 <RodgerTheGreat> yeah, I missed one
17:27:37 <ehird_> hmm
17:27:41 <ehird_> SHOULD 'true but false' be false?
17:27:45 <ehird_> it seems so
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:28:41 <ehird_> bah
17:28:46 <ehird_> i want
17:28:48 <ehird_> 'if not x but y'
17:28:52 <ehird_> to do the intuitive
17:29:34 <ehird_> *Main> not test `but` test1
17:29:34 <ehird_> False
17:29:35 <ehird_> darn
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:49 <oklopol> and
17:30:50 <ais523> ehird_: `but` is just `and` in the not a but b situation
17:30:59 <ehird_> yes, that is true
17:31:00 <ehird_> i guess
17:31:01 <ehird_> :(
17:31:06 <ehird_> there's no new operators under the sun
17:31:16 <oklopol> sure there ae
17:31:16 <RodgerTheGreat> just ones that don't have common names
17:31:17 <oklopol> are
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:38 <RodgerTheGreat> there are exactly 16 binary logical operators
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:06 <RodgerTheGreat> vixey: 2^4
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:27 <RodgerTheGreat> xor is, conveniently, binary addition without carries
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:33:50 <RodgerTheGreat> ...
17:33:54 <vixey> :O
17:34:04 <ehird_> ooh, wait a second..
17:34:23 <ehird_> oklopol: what was your 'natural language OR' again?
17:34:25 <ehird_> NMOR or something
17:34:37 <oklopol> what
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:03 <oklopol> hmm
17:35:05 <oklopol> did i now
17:35:10 <RodgerTheGreat> I guess that makes as much sense as anything
17:35:10 <ehird_> you said that natural language's "OR" was not the OR in programming languages
17:35:12 <ehird_> which is obvious
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:18 <oklopol> what's "a while back"?
17:36:26 <ehird_> like
17:36:28 <ehird_> a few months
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:04 <oklopol> implementation
17:38:06 <ehird_> oklopol: oh that's easy
17:38:09 <ehird_> that's like amb
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:35 <ehird_> 'yay' will be printed
17:38:38 <oklopol> the definition of or
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:38:58 <ehird_> its ruby
17:39:00 <ehird_> but its very clear
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:22 <ais523> ehird_: no
17:39:27 <ais523> it's using MAYBE/GO BACK/GO AHEAD
17:39:32 <ais523> Backtracking INTERCAL
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:48 <ehird_> well
17:39:52 <ehird_> you can implement or kind of well
17:39:55 <ehird_> if you can overload ==
17:39:57 <ehird_> and +
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:09 <ehird_> using amb
17:40:13 <ehird_> oklopol: but really, look at amb
17:40:18 <oklopol> eh
17:40:22 <oklopol> the amb part is trivial
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:32 <oklopol> *function
17:41:32 <ehird_> and a macro TRY(x)
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:11 <ehird_> oh
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:30 <vixey> (amb x y z)
17:42:31 <ais523> ehird_: you still can't change the type of the return value
17:42:40 <ehird_> ais523: well, no :)
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:30 <ehird_> not hard
17:44:31 <ehird_> :)
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:52 <ehird_> It's a little ugly
17:44:53 <ais523> ehird_: no it is hard, because you don't call va_end before TRY returns
17:44:59 <vixey> lol
17:45:02 <vixey> wtf
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:47 <ehird_> ais523: No
17:46:55 <ehird_> the C is only old-style in that it casts malloc
17:46:57 <ehird_> and some other stuff
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:13 <ais523> ehird_: yes
17:48:14 <ais523> yes
17:48:15 <ais523> yes
17:48:22 <ehird_> ok
17:48:23 <ehird_> ok
17:48:23 <ehird_> ok
17:48:24 <ehird_> :)
17:48:24 <ehird_> fine
17:48:26 <ehird_> i agree then
17:48:26 <ehird_> :p
17:48:30 <ehird_> but anyway
17:48:33 <ehird_> Haskell's amb is really nice
17:48:35 <ehird_> it's [] in the list monad ;)
17:48:39 <ehird_> well
17:48:39 <ehird_> it's id
17:48:44 <ehird_> foo <- [1,2,3]
17:48:45 <ais523> saving the context does not alter the stack, so va_end is still necessary!
17:48:48 <ehird_> and []
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:36 <ehird_> return x = [x]
17:49:40 <vixey> (>>=) = flip concatMap -- !!
17:49:43 <ehird_> yep
17:49:52 <vixey> return = (:[])
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:24 <ehird_> amb in prolog is nice
17:50:26 <ehird_> (from the wiki:)
17:50:26 <ehird_> amb(E, [E|_]).
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:50:41 <ehird_> ais523: exactly
17:50:57 <vixey> nah
17:51:00 <vixey> I disagree
17:52:14 <wildhalcyon> bah
17:52:16 <ais523> well, apart from cut, which is really anti-Prolog
17:52:26 <vixey> cut is very Prolog
17:52:28 <vixey> :P
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:36 <vixey> just say *
17:54:52 <oklopol> cut == !?
17:54:55 <vixey> I definitely agree
17:54:57 <ais523> oklopol: yes
17:55:00 <vixey> !/0 is cut
17:55:05 <EgoBot> Huh?
17:55:30 * vixey pets EgoBot
17:55:43 * oklopol spoons EgoBot
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:30 <ais523> vixey: why is that?
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:25 <oklopol> (= w {
17:58:27 <oklopol> (-> (@ n [$any [1 2 3]]) n)
17:58:29 <oklopol> (-> (@ n 0) 4)})
17:58:31 <oklopol> (+ (w 2) (w 0))
17:58:33 <oklopol> ==> 6
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:58:56 <oklopol> well, not amb
17:58:58 <ais523> vixey: it's a NOP
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:31 <vixey> say you have,
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:08 <ais523> vixey: that's correct
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:56 <vixey> haha
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:02:46 <vixey> oh right
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:28 <SimonRC> ok
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:15:01 <SimonRC> ah, ok
18:15:04 <SimonRC> that makes sense
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:46:45 <wildhalcyon> So what's going on?
20:49:53 <ehird_> five things
20:51:47 <vixey> yes?
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:20 <SimonRC> Some disagree
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:05 <SimonRC> "hillarious"?
21:04:19 <SimonRC> great, certainly, but n ot"hillarious"
21:06:41 -!- Tritonio_ has joined.
21:07:03 <wildhalcyon> I do enjoy linerider
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:11:06 <SimonRC> odd
21:11:12 <SimonRC> but not that odd
21:15:48 <wildhalcyon> This stuff is giving me a headache
21:15:58 <SimonRC> hm?
21:16:27 <wildhalcyon> I've been reading about "pure" object-oriented programming
21:16:35 <SimonRC> ok
21:16:56 <vixey> what is that?
21:17:00 <wildhalcyon> A lot of academic papers and things
21:17:06 <vixey> my favorite text on object orientation is AMOP
21:17:13 <wildhalcyon> do you have a link?
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:19:46 <SimonRC> ehird: yes, and?
21:19:46 <vixey> loool
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:23 <SimonRC> is he really that bad?
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:15 <SimonRC> maybe
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:21:44 <SimonRC> vixey: "seductive"?
21:21:47 <wildhalcyon> Well, I've read up on lisp a bit.
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:22:42 <SimonRC> *groan*
21:23:14 <wildhalcyon> that was pretty bad
21:23:25 <oerjan> Thank you, thank you.
21:23:40 <wildhalcyon> SimonRC - there was an esolang proposed once in which operations were sex acts
21:23:42 -!- ais523 has joined.
21:23:52 <wildhalcyon> You know how folks are in this channel
21:24:09 <SimonRC> ooh, didn't encounter that one
21:25:14 <oklopol> :D
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:01 <wildhalcyon> it is?
21:26:05 <wildhalcyon> are you a masochist?
21:26:37 <oklopol> well si don't like waiting.
21:26:40 <oklopol> *i
21:26:45 <oklopol> so no, it's not actually that fun
21:27:57 <SimonRC> huh, an app can crash Vista?
21:27:59 <SimonRC> how?
21:28:54 <wildhalcyon> Existance?
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:19 <SimonRC> gaaah
21:31:25 <SimonRC> it should not be possible damnit
21:31:49 <oklopol> ais523: someone pasted it here
21:31:49 <vixey> ?!?
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:07 <oklopol> j602
21:32:14 <vixey> ...
21:32:18 <vixey> you wrote that?
21:32:22 <oklopol> oh no.
21:32:36 <vixey> oh I see
21:32:36 <oklopol> i'm new to J.
21:32:47 <vixey> when you said "my J interp" you meant the one I'm using :P
21:32:48 <vixey> sorry....
21:32:58 <oklopol> well, it doesn't seem too hard, J isn't all that extendable
21:33:00 <oerjan> hm frago perhaps
21:33:14 <oklopol> vixey: i realized one might think i meant i'd coded them
21:33:36 <oklopol> but didn't fix
21:33:44 <oklopol> cuz i'm evil
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:38:47 <oklopol> :-----------)
21:39:34 <oklopol> before you know it, i'm also talking haskell gibberish and making pun out of nowhere.
21:39:38 <oklopol> *puns
21:40:42 <oerjan> as long as you don't vaguely recall talking gibberish about haskell puns
21:41:57 <oklopol> i don't seem to
21:42:08 <oklopol> or... perhaps i do
21:42:13 <oklopol> my memory is a bit vague here.
21:42:28 <oerjan> GAAH
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:46 <oerjan> ?_?
21:43:59 <ais523> oerjan: I'm making the topic portalbe
21:44:03 <ais523> s/albe/able/
21:44:17 <ais523> Of course, it requires your interp to be case-sensitive
21:44:44 <vixey> hahahahaha
21:44:45 <vixey> WOW
21:45:20 <ais523> sorry, I accidentally wrote the wrong stropping style first time
21:45:23 <oerjan> is this still ALGOL?
21:45:27 <ais523> oerjan: yes
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:46:30 <SimonRC> :-)
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:40 <oklopol> haskell?
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:26 <oklopol> oklotalk has it
21:49:29 <vixey> ....
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:43 <vixey> :P
21:49:46 <oklopol> :D
21:49:56 <vixey> and I am waiting
21:49:59 <oklopol> i should have oklotalk-- by wednesday
21:50:05 <vixey> cool
21:50:09 <oklopol> well
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:04 <oklopol> i've heard about view, ya
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:56 <oklopol> defined?
21:51:57 <vixey> so I'm just guessing I know what you mean
21:52:00 <oklopol> oh
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> (-> [$+ (/ dd dn)]
21:53:11 <oklopol> (= g (gcd dn n))
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:53:53 <oklopol> (-> [pb $/] [d n])
21:53:54 <oklopol> here
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:54:44 <oklopol> this is much prettier.
21:54:51 <oklopol> but... not very concise
21:55:21 <oklopol> i guess i could make a hybrid of the old and the new
21:55:27 <oklopol> revolutionize everything
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:38 <oklopol> *- other now
21:56:46 <vixey> (which I have no idea how to implement)
21:56:48 <oklopol> vixey: SHOW IT
21:57:01 <oklopol> lazyness is fairly simple
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:27 <oklopol> *on
21:57:52 <oklopol> not that i've ever done anything with lazyness, perhaps i should
21:57:56 <oklopol> layztalk
21:57:59 <oklopol> *lazytalk
21:58:19 <GregorR> http://www.codu.org/jsmips/test.html // can anybody say JSMIPS FIBONACCI?
21:58:22 <GregorR> That's right!
21:58:37 <GregorR> And JEBUS it's slow X-D
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
21:59:31 <oklopol> yarr
21:59:32 <oklopol> it was
22:00:06 <GregorR> Not sure what you mean by "that compileration you did some months ago" :P
22:00:43 <oklopol> length([])=0.
22:00:43 <oklopol> length([_|xs])=1+length(xs). %% not sure about this (how could this generate lists of a given length?)
22:00:50 <oklopol> vixey: what do you mean?
22:00:51 <vixey> yes it can I tested it
22:00:57 <vixey> you would be able to go
22:01:03 <vixey> 3=length(x)
22:01:08 <oklopol> thought so
22:01:09 <vixey> and it would result in ()
22:01:14 <oklopol> aha
22:01:15 <oklopol> why?
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:32 <vixey> yes g for gensym
22:01:38 <vixey> they are new variables
22:01:47 <oklopol> okay
22:01:49 <oklopol> what's the prob
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:17 <oklopol> you can't?
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 <oklopol> well should it?
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:41 <oklopol> sure
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:09:39 <GregorR> Yup
22:10:43 <SimonRC> nice
22:10:51 <SimonRC> is MIPS a simple architecture?
22:12:33 <GregorR> Extremely.
22:12:38 <GregorR> MIPS I has about 60 operations.
22:12:55 <SimonRC> nicer than x86
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:13:53 <GregorR> oklopol: GCC
22:14:10 <GregorR> http://www.codu.org/jsmips/patches/
22:14:12 <GregorR> Target mips-jsmips
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:33 <ehird> yeah
22:16:36 <ehird> but
22:16:36 <ehird> fast
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:16:56 <ehird> :D
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:29 <ehird> ais523: OH YES
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:48 <vixey> amb on MIPS? lol
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:10 <vixey> cool
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:19:59 <GregorR> ais523: GIVE ME THE ROM
22:20:00 <ais523> but presumably that isn't identical to JS-mips
22:20:02 <GregorR> ais523: DO IT
22:20:04 <GregorR> ais523: I NEED THE ROM
22:20:05 <GregorR> :P
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:52 <GregorR> X-P
22:20:58 <GregorR> I did - wanted Windows NT 3 on MIPS.
22:21:05 <GregorR> But alas, no ROM, no fun.
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:24:30 <ais523> s/x/x,/
22:27:02 <ehird> GregorR: Almost done with the prog
22:28:19 <ehird> GregorR: okay
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:48 <ehird> vixey: yes
22:30:49 <vixey> it's python terminology right?
22:30:54 <ehird> no
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:46 <vixey> lol
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:20 <vixey> o_____O
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:27 <ehird> ais523: :)
22:35:33 <ehird> PLEASE DO ASK
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:11 <ais523> DO RESUME #1
22:36:16 <vixey> haha
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:19 <oerjan> i have a plan?
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:08 <oklopol> nothing wrong with that
22:42:40 <SimonRC> heh
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:15 <oklopol> and make rest crash
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:43:44 <oklopol> every tc language
22:45:47 <ais523> oklopol: even oerjan's crazy HQ9+ extension?
22:46:08 <oklopol> :D
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:08 <oklopol> right?
22:47:24 <oklopol> meaning you could do it so that it's always tc
22:47:24 <oerjan> right
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:14 <oklopol> dunno
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:48:21 <oklopol> qsort might work soon
22:48:22 <oklopol> exciting
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:25 <SimonRC> um, gravitational *field*
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:51:25 <SimonRC> etc
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.
←2008-04-05 2008-04-06 2008-04-07→ ↑2008 ↑all