←2008-04-25 2008-04-26 2008-04-27→ ↑2008 ↑all
00:13:02 <ihope> My password for the esolang wiki is "esoteric"? How insecure.
00:13:53 <ehird> ihope: No, it's not.
00:14:14 <ehird> <.<
00:14:14 <ihope> You didn't try it, did you?
00:14:17 <ehird> Yes
00:14:18 <ehird> Yes I did
00:14:19 <oklopol> no one would ever expect it to be that simple!!
00:14:32 * ihope Swhacks oklopol
00:14:58 <oklopol> did you just shit me?
00:15:04 <ehird> no
00:15:05 <ehird> swhack
00:15:07 <ehird> it's an #ircnomic term
00:15:22 <ehird> i do believe you are a player
00:15:23 <ehird> therefore
00:15:27 <ehird> oklopol: do you accept the Swhack?
00:15:59 -!- pikhq has joined.
00:16:22 <ehird> pikhq: You'd like #ircnomic. It has silly Agora-Like Uppercase Terms
00:16:30 <ehird> The new ruleset is proving to be quite a joy,
00:16:44 <oklopol> i don't know what swhacking is, but my pun works no matter what it is
00:17:28 <ehird> oklopol: You must answer yes or no - do you accept the Swhack?
00:18:00 <oklopol> you are confusing the real world with ircnomic, man :)
00:18:12 <oklopol> i refuse to do either until i know what swhackin is
00:18:19 <oklopol> *g
00:18:24 <ehird> oklopol: that's not an option. Do you accept the Swhack or not?
00:18:35 <pikhq> ehird: w00ts.
00:18:45 <oklopol> :)
00:18:48 <pikhq> There's but one problem: ATM, I don't have time for much in the way of nomics.
00:18:53 <ehird> pikhq: and ihope is an admin there, so there's even part of Agora in there
00:18:55 <pikhq> I will post-graduation, though.
00:19:00 <ehird> and it's not like ircnomic does anything
00:19:04 <ehird> it's not the most in-depth nomic
00:19:07 <lament> don't nomics kinda suck?
00:19:08 <pikhq> Which will be in a month.
00:19:11 <pikhq> lament: I love them.
00:19:13 <ehird> lament: no.
00:19:14 <ehird> no they don't
00:19:26 <lament> don't they all die because the players lose interest because the game is so boring?
00:19:32 <oklopol> nomi omi o
00:19:45 <oklopol> lament: isn't that true for everything?
00:19:54 <pikhq> lament: Agora is in its second decade of existence.
00:20:11 <lament> oklopol: no, people manage to finish other games quite often
00:20:27 <oklopol> games that can be finished are never fun
00:20:42 <lament> the finish that can be finished is not the true finish.
00:20:55 <oklopol> hmm, i guess you got me there
00:20:56 <ehird> lament: Heck, you should pop in to #ircnomic. It's not *totally* lame, I promise ;)
00:21:09 <ehird> Although some people don't like the vote-tracking bot, you probably will, because it's PYTHON OH GOD
00:21:10 <oklopol> i'm going to do some serious sleeping now
00:21:10 <oklopol> ->
00:21:23 <ehird> (The rule list website is also written in Python, so I guess you like that too)
00:23:31 <lament> how many rules are there?
00:23:48 <ihope> Of Agora?
00:23:49 <ehird> lament: only like 14
00:23:51 <ehird> and they're short
00:23:56 <ihope> Oh, right.
00:23:56 <ehird> of agora, though, a few hundred
00:24:30 <lament> what is agora?
00:25:07 <ehird> lament: The longest-running nomic.
00:25:13 <ehird> Started in 1993/
00:25:15 <ehird> Still going today.
00:25:24 <ehird> Not the oldest one, but the longest-running
00:25:24 <lament> i mean apart from being a nomic
00:25:34 <ehird> lament: It's just ... a very long-running, famous nomic.
00:25:41 <lament> well
00:25:47 <ihope> It's a nomic with many rules.
00:25:47 <lament> the united states is a nomic, but it's also a country
00:26:03 <ehird> ihope: "(Yep, I just said I disliked scamming in another message.)" -- you
00:26:06 <ihope> The canonical example is Canada, not the United States. :-P
00:26:06 <pikhq> Oh, right. I forgot that recent Agoran ruling.
00:26:17 <ehird> pikhq: ihope just did a great scam by defining Marvy
00:26:33 <pikhq> ehird: Unless it's in the rules, the definition does not apply.
00:26:35 <ehird> and is now messing around with things for not Dancing a Powerful Dance
00:26:38 <ihope> Nobody's paying attention to it yet. :-P
00:26:42 <ehird> pikhq: Well it's on general-business
00:26:54 <pikhq> (believe me, I've tried to scam a lack of definition for something before)
00:27:27 <ihope> The Marvies accused are a contract, myself, and an instance of a currency. I'm guessing that I'm the only one that can actually be charged with anything.
00:28:09 <lament> heh, the map of agora is interesting
00:28:13 <pikhq> ihope: Unless the rules define a Marvy, Marvies do not exist, as far as that rule is concerned.
00:28:27 * ihope shrugs
00:28:48 <ihope> At least I have that contract that aspires to be a rule.
00:29:16 <pikhq> ihope: Stick the power-4 rule in the contract, and start an equity case. :p
00:30:43 <ehird> lament: anyway, although Agora is a nomic it's hard to define what else it is, because the gameplay that isn't meta is much less long-lived
00:31:03 <ehird> The gameplay itself rapidly changes and disappears and reappears.
00:31:11 <ehird> and there's multiple modules of gameplay at once - or none
00:31:15 <pikhq> ehird: The *mechanics* of the gameplay change rapidly.
00:31:23 <pikhq> The types are actually fairly stable.
00:31:33 <ehird> Well, yes.
00:31:53 <pikhq> The electoral system, courts, contests, and contracts have been in the rules since '93 or '94.
00:32:05 <pikhq> Of course, the mechanics since then have changed so incredibly much. ;)
00:33:16 <lament> sounds cool
00:33:34 <pikhq> Oh, can't forget the patent title system.
00:33:58 <pikhq> There's a few hundred, at my last count.
00:34:14 <pikhq> (which, admittedly, is a bit old.)
00:39:26 <lament> "Esperanto conferences average 2000 to 3000 participants every year whereas Ido conferences have had anywhere from 13 to 25 participants over the last decade. Each language also has a number of regional conferences during the year on a much less formal basis, and with smaller numbers."
00:39:32 <lament> heh
00:39:52 <lament> if the world conference has 13 participants, then how many participants does a conference "with smaller numbers" have?
00:40:06 <lament> is it still a conference when there're two participants? :)
00:41:01 -!- olsner has joined.
00:41:36 <pikhq> Whereas Esperanto may be averaging a few hundred per smaller conference.
00:41:39 <pikhq> ;)
00:42:10 <ihope> Doesn't the Bible define a conference or something? :-P
00:42:31 * pikhq knows that the Esperantido is smaller, but damn; didn't know it was that much smaller.
00:42:49 <ehird> esperantido, heh
00:43:15 <pikhq> ehird: That *is* the etymology of Ido.
00:43:26 <ehird> pikhq: But amusing
00:43:36 <pikhq> And there's a reason for it, to.
00:43:39 <pikhq> s/to/too/
00:43:51 <pikhq> Ido *is* an Esperantido. The very first, in fact. ;)
00:44:43 <ehird> Esperanto is lame. I like lojban.
00:44:44 <pikhq> (Esperantido being the family of languages related to Esperanto; the term comes from Esperanto: "Esperantido".)
00:44:47 <ehird> If only because I know the very basics
00:44:55 <ehird> mi'e .Eli,at.xrd.
00:44:56 <ehird> I do believe
00:45:09 <pikhq> I think Lojban is a very interesting linguistic experiment.
00:45:22 <pikhq> Unlikely that many will use it, but interesting, nevertheless.
00:45:25 <lament> i think lojban is far more lame than esperanto.
00:45:40 <ehird> Lojban is a lot of fun.
00:45:50 <lament> esperanto has the goal of allowing people to communicate.
00:45:54 <lament> which is a lot of fun.
00:46:09 <lament> lojban has the goal of trying to be weird.
00:46:21 <lament> which is... kinda lame in comparison :)
00:46:29 <pikhq> lament: Esperanto is meant as a practical interesting language. Lojban is meant as *just* an interesting language.
00:46:50 <pikhq> Both are admirable goals. . . Especially since Lojban does it in a way easily parsable by computers.
00:47:00 <ehird> Lojban has a defined goal
00:47:02 <pikhq> (the official Lojban grammer is published in BNF)
00:47:02 <ehird> And yeah.
00:47:05 <ehird> pikhq: no
00:47:08 <ehird> it's published as a yacc file
00:47:10 <lament> i strongly believe lojban is pure idiocy
00:47:10 <ehird> which is more impressive
00:47:35 <pikhq> ehird: The BNF file is considered official, the YACC file is considered something useful, and *should* be equivalent to the BNF (but isn't necessarily).
00:47:46 <lament> having a computer-parsable grammar should not be a design goal for human languages, for several reasons, of which the main one is that humans aren't computers
00:47:59 <ehird> lament: It's not designed for every-day use.
00:48:04 <ehird> It's an experiment, an idea.
00:48:04 <pikhq> lament: The main suggested uses of Lojban involve artificial intelligence usage.
00:48:07 <ehird> It's interesting. It's fun to learn!
00:48:14 <ehird> What's wrong with that?
00:48:17 <lament> for an example of something else that was designed to be readable by both humans and computers, see XML.
00:48:31 <ehird> lament loses the conversation
00:48:37 <ehird> for saying the stupidest thing imaginable
00:48:39 <pikhq> For an example of XML failing at that, see SVG.
00:48:51 <ehird> pikhq: He was being sarcastic.
00:48:57 <ehird> But in a totally lame, irrelevant way
00:48:58 <pikhq> ehird: And I'm not.
00:49:03 <lament> i'm not being sarcastic, i'm saying lojban is similar to xml in a way
00:49:13 <lament> it tries to do two things, and is pretty bad at both :)
00:49:30 <lament> ehird: you don't need a whole new language to talk to computers.
00:49:41 <ehird> lament: .. you don't understand what lojban is for
00:49:54 <ehird> but I can only point you to #lojban for an explanation of why you are wrong
00:50:05 <lament> yes, that's your usual strategy for arguments :)
00:50:15 <ehird> It's valid.
00:50:18 <lament> you claim something, you can't substantiate it at all, and you direct me to some IRC channel.
00:50:54 <lament> no, it's not, if you know i don't understand then i have to assume that you do understand, otherwise how could you know i don't? And if you understand, then you could tell me.
00:50:55 <pikhq> In this case, he's saying "I suck at arguing this point; these people don't."
00:50:59 <ehird> what's wrong with an irc channel if they can explain better than I can, lament?
00:51:15 <pikhq> (or, alternatively, "I have no fucking clue; these people do.")
00:51:21 <ehird> pikhq: Oh come on.
00:51:41 <pikhq> ehird: In this case, it's not you saying *that*, though.
00:54:17 <lament> ehird: my issue with this line of argument is not that they can explain better than you do. I'm sure they can.
00:54:36 <lament> my issue is that you're wrong to begin with. :)
00:55:03 <ehird> lament: you are wrong
00:55:12 <lament> i mean, this is why your way of arguing can't work
00:56:07 <lament> as far as i'm concerned, i'm right (otherwise i wouldn't be arguing)
00:56:37 -!- timotiis has quit (Read error: 110 (Connection timed out)).
00:56:39 <lament> if somebody explains to me why i'm wrong, i can accept that.
00:56:53 <ehird> lament: that somebody resides within a certain channel.
00:57:15 <lament> they're free to argue with me if they want to, but i don't think they do.
00:57:25 <lament> you're in a way pushing _your_ responsibility on them.
01:04:29 <lament> the goal of lojban is to be geeky.
01:04:33 <lament> I quote wikipedia:
01:04:36 <lament> "There are generational "classes" of Lojbanists: Old Growth, Sci-Fi (in the late 1980s, recruited through Sci-fi cons), Conlangers (in the early 1990s, recruited through constructed language afficionadodom), Geeks (always present, but somewhat more prominent in the late 1990s, recruited mostly through computer science interest), New Growth."
01:05:26 <ehird> lament: uhh, so what wikipedia thinks of lojban users means that the language itself has a certain property
01:05:36 <ehird> pikhq: deferring this to you, i have better things to do - like sleep
01:09:57 <pikhq> lament: My retort: who cares? It's an interesting linguistic experiment; leave it at that.
01:11:58 <lament> pikhq: oh, certainly.
01:17:50 <pikhq> Obviously, I'm not a major Lojban freak. ;)
01:20:16 <pikhq> BTW: one of the most painful things ever is hearing Shatner in "Inkubo".
01:20:48 <lament> you watched that movie? In Eo?
01:21:23 <pikhq> It's only in Eo.
01:21:38 <lament> is it as terrible as everybody says?
01:21:47 <pikhq> The pronunciation, yes.
01:21:51 <pikhq> (I've only seen short clips)
01:22:20 <pikhq> Shatner speaks Esperanto with a French accent, for God's sake.
01:22:44 <lament> you speak eo?
01:23:12 <lament> shouldn't eo be fairly insensitive to pronunciation, being universal and all?
01:23:46 <pikhq> I speak some Esperanto, yes.
01:24:02 <pikhq> It's still possible to royally fuck up the pronunciation.
01:24:23 <lament> ooh
01:24:45 <lament> i'm trying to learn eo at the moment
01:26:37 * pikhq wonders how the Esperanto in "Red Dwarf" is. . .
01:27:58 <pikhq> ("Red Dwarf" is a British comedy series from the 80's, set in a bilingual space ship: eo-utf8 and en-uk-utf8)
01:29:14 <ehird> pikhq: I don't think they specified utf-8.
01:29:25 <lament> oddly, the (English) wikipedia article on Red Dwarf doesn't mention esperanto at all :)
01:29:27 <pikhq> ehird: Probably not.
01:29:32 <pikhq> lament: Odd.
01:29:35 <lament> (but the esperanto one does)
01:30:08 * pikhq nods
01:30:25 <pikhq> The Wikipedia page on Esperanto culture, IIRC, mentioned it.
01:30:28 <pikhq> (in en)
01:30:42 <pikhq> ehird: You're right. eo-spoken and en-uk-spoken, then? :p
01:31:18 <ehird> pikhq: how about Esperanto and British English, you dork
01:31:28 <pikhq> ehird: But I'm a dork!
01:32:10 * pikhq looks at the Japanese page on it
01:33:09 <pikhq> Not seeing it there.
01:34:06 * pikhq looks at the Japanese article on Esperanto. :p
01:34:45 <lament> Esperanto kaj Brita anglo :)
01:34:51 <pikhq> Jes.
01:35:53 <lament> how long did you learn eo for?
01:37:12 <pikhq> 4 years, *but* I've only really studied intensively for a few weeks. Do, mia Esperanto ne bonegas.
01:37:26 <pikhq> (and not recently, either)
01:38:19 -!- ehird has quit (Remote closed the connection).
01:40:56 <pikhq> Amusing; the Japanese Esperanto article has a section on words Esperanto borrows from Japanese.
01:41:40 <pikhq> Did not know Eo used "hasxioj" for chopsticks.
01:41:51 <pikhq> (from the Japanese, "hashi".)
01:50:29 <lament> the Chinese must be pretty upset about that one.
01:53:24 <lament> although the mandarin pronunciation is very close, so it's easier for them as well.
01:54:29 <pikhq> Odds are, the Chinese pronunciation was closer when the Japanese first used that as a loan word. ;)
01:55:20 <lament> only if japanese is more conservative
01:56:20 <pikhq> Pronunciation-wise, at least.
01:56:36 <pikhq> They've dropped a few phonemes in the past several hundred years, though.
03:42:32 -!- Corun has quit ("This computer has gone to sleep").
04:15:49 -!- evincarofautumn has joined.
04:19:09 <evincarofautumn> Hey there.
04:19:19 <pikhq> Hey.
04:19:46 <evincarofautumn> Fairly dead, then, eh?
04:19:53 * pikhq nods
04:20:00 <evincarofautumn> To be expected.
04:20:02 <pikhq> At least, ATM.
04:20:38 <pikhq> Get something going about esoteric programming languages, and people atart talking more.
04:20:49 <evincarofautumn> Hm.
04:21:04 <evincarofautumn> Well, it's been a while for me, so I figured I'd get back in the swing, you know?
04:21:09 <pikhq> Mmkay.
04:21:32 <evincarofautumn> Last time I implemented an esolang was...
04:21:37 <evincarofautumn> maybe a few years ago.
04:21:42 <pikhq> Shameful.
04:21:51 <evincarofautumn> Sho' you right.
04:22:03 <pikhq> Not that I'm one to talk.
04:22:10 <evincarofautumn> Ha.
04:22:10 <pikhq> My last work on PEBBLE was last year.
04:22:14 <evincarofautumn> Happens to the best of us.
04:22:32 <pikhq> Senior year of high school takes a lot of time, oddly. :p
04:22:48 <pikhq> Full high school + college workload: not the wisest of ideas.
04:24:00 <evincarofautumn> Heh. I'm a senior right now.
04:24:17 <evincarofautumn> It's a damn shame the way school gets in the way of learning sometimes.
04:24:26 <pikhq> Seriously.
04:24:39 <evincarofautumn> So.
04:24:40 <pikhq> Just let me write my kernel in peace.
04:24:41 <evincarofautumn> Esolangs.
04:24:56 <evincarofautumn> I have an idea formulating.
04:25:00 <pikhq> Mmkay.
04:25:41 <evincarofautumn> Let's see... it's 2d. There's an execution pointer as a vector offset into the space. Some standard-issue commands, whatever.
04:25:48 <evincarofautumn> But.
04:25:58 <pikhq> So far, it's standard Funge. . .
04:25:58 <evincarofautumn> Execution can be branched.
04:26:09 <pikhq> Forkfunge? Oh god.
04:26:21 <evincarofautumn> You can have multiple execution pointers running at once.
04:26:27 <evincarofautumn> They're guaranteed to run concurrently.
04:26:29 <pikhq> Like I said: forkfunge.
04:26:36 <evincarofautumn> If they crash together, they unify into one thread.
04:26:57 <pikhq> And the direction?
04:27:01 <evincarofautumn> Hm.
04:27:03 <evincarofautumn> Oh, man.
04:27:05 <evincarofautumn> Best idea ever.
04:27:10 <evincarofautumn> Attractors.
04:27:17 <pikhq> :D
04:27:25 <evincarofautumn> There are attractors, toward which a thread moves.
04:27:38 <evincarofautumn> The attractor can be moved when the thread reaches a certain position.
04:27:43 <evincarofautumn> There's your event-handling code, right there.
04:27:55 <pikhq> :D
04:28:02 <evincarofautumn> I think maybe one attractor for each thread?
04:28:24 <evincarofautumn> And moving two attractors to the same position guarantees that the threads will crash and unify.
04:28:37 <evincarofautumn> I'm on a roll!
04:28:52 <evincarofautumn> But to think of syntax...
04:28:54 <evincarofautumn> Um.
04:28:56 <evincarofautumn> Help.
04:29:05 <pikhq> Funge it.
04:29:05 <evincarofautumn> Ack!
04:29:08 <evincarofautumn> Help!
04:29:13 <evincarofautumn> Yeah...
04:29:23 <evincarofautumn> Wait, what am I saying.
04:29:30 <evincarofautumn> Basic instruction set before syntax.
04:29:38 <evincarofautumn> (It _has_ been a while)
04:30:21 <evincarofautumn> Um. Well, we can assume one thread that starts at (0, 0), attracted to the bottom right of the program.
04:30:48 <evincarofautumn> Should vertical and horizontal movement be independent?
04:30:55 <evincarofautumn> Otherwise you'd have the problem of rounding.
04:33:15 <pikhq> DUnno.
04:35:47 <evincarofautumn> Well, whatever. This one kind of crapped out on me.
04:35:53 <evincarofautumn> I'll sleep on it later.
05:00:01 -!- dbc has joined.
05:11:03 <evincarofautumn> Hello.
05:11:23 <evincarofautumn> Too late, must sleep.
05:11:29 <evincarofautumn> I'm outta here.
05:11:31 -!- evincarofautumn has quit ("ChatZilla 0.9.81 [Firefox 2.0.0.14/2008040413]").
07:39:01 -!- Sgeo has quit ("Ex-Chat").
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
09:06:42 -!- Iskr has joined.
09:08:13 -!- bsmntbombdood has quit (Read error: 113 (No route to host)).
09:09:19 -!- bsmntbombdood has joined.
09:12:00 <oklopol> at least the user base of lojban is very clear on lojban being made for *actual use*, my arguments about adding modules, and having less words for boring real life objects and more for abstract concepts aren't usually taken that well.
09:12:08 <oklopol> because it's made for use by people
09:12:22 <oklopol> which i find stupid, who cares about people, i want a good language.
09:13:22 <oklopol> lojban is indeed more computer-friendly than many languages, but in my opinion it is way too set in its ways, for instance, you cannot program in it directly, during conversation
09:16:21 <oklopol> attractor based programming seems like a genuinely new idea
09:16:31 <oklopol> i'll go drink coffee ->
09:17:02 <oklopol> remind me to tell evin to fuck themselves if they return, for inventing it before me!
09:17:02 <oklopol> ->
09:30:23 <oklopol> hmph, no i have in mind an incredibly cool language, WITH GRAPHS, but the main idea is still to attract the computational agent towards a certain spot, just to move that spot before it gets there
09:30:26 <oklopol> *now
09:30:44 <oklopol> and that was not an original idea, so it's totally useless
09:31:25 <oklopol> asd
09:37:03 <oklopol> lojban's main problem, imo, is the fact every construct has its own brackets for nesting
09:37:31 <oklopol> i guess it might be easier for humans, again, but it's not very pure
09:38:08 <oklopol> lalna did nesting using rising and falling tones, it was far more beautiful
09:38:35 <oklopol> i should continue it
09:40:24 <oklopol> lojban has a very weird *vocabulary*, nothing else is weird about it
09:41:03 <oklopol> also magenta disappointed me, most of it is quite ordinary and boring
09:41:08 <oklopol> but ais prolly doesn't logread
09:41:16 <oklopol> ehird prolly does
09:41:24 <oklopol> i'm not sure if they care or anyone else cares
09:41:33 <oklopol> hehe
09:41:48 <olsner> please, do continue ;-)
09:42:16 <oklopol> btw, that graph thing is the ultimate uncompilable language: when an agent moves towards an attractor, it always takes the shortest path within the graph :D
09:43:08 <oklopol> you can have any number of agents, and attractors, both have a "color", and agents move towards the closest attractor of same color, or towards a black one
09:43:18 <oklopol> now
09:43:33 <oklopol> nodes may contain operations that modify the graph
09:43:38 <oklopol> well
09:43:42 <oklopol> really quite a lot of things
09:44:07 <oklopol> what this means is, we essentially need to do a bredth-first search for the whole graph for each agent each cycle :)
09:44:23 <oklopol> olsner: i can't! that was it about magent
09:44:23 <oklopol> a
09:44:25 <olsner> so it's pathfinding, walking a vertex, then modifying the graph? how are modifications synchronized between agents?
09:44:41 <oklopol> they happen simulateneously.
09:45:10 <oklopol> show me an example of two actions within a graph that cannot, and i'll explain why you're wrong!
09:45:31 <oklopol> but yes, that's the evaluation model.
09:45:50 <oklopol> there is a lot of attractor teleportation and graph expanding ofc
09:46:19 <olsner> I believe there are useful N-to-N pathfinding algorithms out there, so you might not have to BFS the whole graph every time
09:46:22 <oklopol> i'd love something like this in graphs, it's fairly tiring using a set number of dimentions½!
09:46:40 <oklopol> indeed, and you just have to search new paths.
09:46:50 <oklopol> i mean
09:47:03 <oklopol> if something changes, just check if that has an effect on an agent
09:47:04 <olsner> yeah, graphs are the shit
09:47:28 <oklopol> ...so do you know graphica HAVE I MENTIONED GRAPHICA?
09:47:42 <olsner> no, and I believe you just mentioned it
09:48:05 <oklopol> i'm so gonna paste my n-dimensional hypercube now.
09:48:15 <oklopol> http://www.vjn.fi/oklopol/graphica.txt
09:48:58 <olsner> that looks somewhat like haskell
09:49:11 <olsner> but also not
09:49:33 <oklopol> the graph creation model was inspired by the haskell type system
09:49:37 <oklopol> well, the syntax of it
09:50:17 <oklopol> just the idea that because you can make a tree very nicely with that kinda recursive structure
09:50:27 <oklopol> it might be nice to use that as the base
09:50:27 <oklopol> but
09:50:41 <oklopol> we can make it an arbitrary graph by tagging nodes
09:50:45 <oklopol> and later connecting to a certain tag
09:51:46 <oklopol> i have no idea what happens in that code.
09:51:57 <oklopol> :: tags a node
09:52:05 <oklopol> = redirects the evaluation of a node
09:52:06 <oklopol> umm
09:52:27 <oklopol> it basically means the node is re-evaluated as whatever is the ropd
09:52:30 <oklopol> right operand
09:52:48 <oklopol> so Main = BHCube 5 means we don't make a main node, but a bhcube instead
09:53:02 <oklopol> because main is assumed to be the node created
09:53:33 <oklopol> i've prolly explained all this to you separately too :D
09:53:51 <oklopol> it's just i have a boner for graphica, because it's one of my few *awesome* ideas
10:01:10 <oklopol> i'm getting desperate, if anyone knows of a keyboard where keys aren't in fact dispersed completely randomly, meaning keys in all rows are on top of each other or that the top and the bottom row are, and the middle row is half a key off so it's a diagonal grid kinda, i'm willing to pay anything
10:01:48 <oklopol> i just can't take it, it makes no sense
10:01:59 * oklopol explodes
10:08:35 <oklopol> i don't understand how people can use this thing
10:08:36 <oklopol> i mean
10:08:53 <oklopol> especially if you use the whole home row system
10:09:04 <oklopol> fingers need to bend in very weird positions
10:09:29 <oklopol> do even dvorak keyboards still use these key positions?
10:10:52 <oklopol> http://www.maltron.com/images/keyboards/maltron-usb-dual-l90-uk-mac-dvorak-1-large.jpg <<< there is a god!!!
10:11:02 <oklopol> hmm
11:25:37 -!- UnrelatedToQaz has joined.
11:26:13 <UnrelatedToQaz> hey all
11:41:30 -!- Corun has joined.
11:42:11 -!- Corun has quit (Client Quit).
11:42:22 -!- UnrelatedToQaz has quit ("ChatZilla 0.9.81 [Firefox 3.0b5/2008032620]").
12:13:58 <oklopol> o
12:14:29 -!- olsner has quit ("Leaving").
12:24:06 -!- timotiis has joined.
13:01:11 -!- ihope has quit ("ChatZilla 0.9.81 [Firefox 2.0.0.14/2008040413]").
13:26:54 -!- Slereah_ has quit (Read error: 104 (Connection reset by peer)).
13:29:52 -!- Slereah has joined.
13:59:47 -!- ehird has joined.
14:03:46 -!- ehird has quit (Read error: 104 (Connection reset by peer)).
14:04:25 -!- ehird has joined.
14:13:25 <ehird> <oklopol>lojban is indeed more computer-friendly than many languages, but in my opinion it is way too set in its ways, for instance, you cannot program in it directly, during conversation
14:13:32 <ehird> I eagerly await the pronounciation guide for oklotalk
14:14:58 -!- Slereah_ has joined.
14:15:06 <ehird> <oklopol>but ais prolly doesn't logread09:41:08
14:15:06 <ehird> <oklopol>ehird prolly does
14:15:07 <ehird> we both do
14:15:11 <ehird> religiously
14:15:11 <ehird> ;)
14:19:21 <ehird> oh, and if ais523 is logreading, it seems http://indecenturl.com/ got put up for realz
14:27:32 -!- Corun has joined.
14:30:54 -!- oklofok has joined.
14:32:23 -!- ihope has joined.
14:33:22 <ehird> oklofok: time to logread
14:33:26 <ehird> i replied to your logreads
14:38:48 -!- oklopol has quit (Success).
14:41:03 -!- Slereah has quit (Read error: 110 (Connection timed out)).
14:41:12 -!- ehird has quit ("Leaving").
14:41:27 -!- ehird has joined.
14:52:09 <ehird> Silly idea: Make your cursor transparent, put xeyes in each corner.
15:04:15 <SimonRC> lol
15:08:23 <ehird> SimonRC: Also, use twm.
15:08:50 <SimonRC> "twm"?
15:10:24 <fizzie> "the window manager of last resort", to quote wikipedia.
15:13:19 -!- oklofok has quit (Read error: 104 (Connection reset by peer)).
15:15:08 <ehird> if we had Endeavour in here, i'd just do this:
15:15:10 <ehird> .w twm
15:15:14 <ehird> and it'd quote the opening paragraph
15:15:15 <ehird> beat that
15:16:20 <SimonRC> yeah
15:17:49 <ehird> SimonRC: it wouldn't screen-scrape either, oh no
15:17:56 <ehird> it would get the raw wikitext and render that into text
15:18:01 <SimonRC> nice
15:18:42 <ehird> SimonRC: e.g. http://en.wikipedia.org/w/index.php?title=twm&action=raw
15:18:58 <ehird> and then just change things like ''a'' to *a*
15:19:04 <ehird> well
15:19:06 <ehird> ''a'' to _a_
15:19:08 <ehird> since it's italics
15:19:13 <ehird> so:
15:20:05 <ehird> In computing, *twm* (*Tom's Window Manager* or *Tab Window Manager*) is the standard window manager for the X Window System, version X11R4 onwards. twm was created by Tom LaStrange. It is a re-parenting window manager that provides title bars, shaped windows and icon management, and is extensively configurable.
15:20:09 <ehird> If it highlighted links:
15:20:31 <ehird> In <computing>, *twm* (*Tom's Window Manager* or *Tab Window Manager*) is the standard <window manager> for the <X Window System>, version X11R4 onwards. twm was created by Tom LaStrange. It is a <re-parenting window manager> that provides title bars, shaped windows and icon management, and is extensively configurable.
15:21:01 <SimonRC> neat
15:22:06 -!- oklopol has joined.
15:22:12 <ehird> helloklopol
15:23:31 <Slereah_> Hi... klopol.
15:23:34 <oklopol> hello
15:23:41 <oklopol> hieslereah
15:24:38 <SimonRC> kl;;klayhdfoig
15:29:35 <pikhq> 'Lo.
15:30:19 <oklopol> loes
15:32:10 <ehird> SimonRC: asjhdkj
15:32:38 <SimonRC> aoeu
15:36:42 <ehird> ghjk
15:37:38 <oklopol> okokoko
15:38:41 <oklopol> { ´. _a--¤
15:39:13 <SimonRC> oklopol: you have a weird keyboard
15:39:37 <ehird> SimonRC: finnish
15:39:39 <ehird> I think.
15:43:49 -!- timotiis_ has joined.
15:55:58 -!- timotiis has quit (Read error: 110 (Connection timed out)).
16:14:54 -!- timotiis_ has changed nick to timotiis.
16:16:20 <oklopol> yeah finnish
16:16:39 <SimonRC> as I said, a weird keyboard
16:17:19 <oklopol> but ¤ is just the generic currency symbol, it's an encoding issue
16:17:22 <oklopol> nnscript fails
16:17:29 <oklopol> or whatever the name is
16:18:34 <ehird> oklopol: hmm
16:18:38 <ehird> name a good gc algo!
16:18:55 <ehird> wanna do a fun scheme in python again :P
16:32:29 <ehird> oklopol: link to your schm interp
16:32:31 <ehird> i wanna rip it off
16:34:34 <ehird> oklopol: actually
16:34:51 <ehird> oklopol: if i give you one php file that'll add searching to vjn.fi/pb will you add it?
16:34:56 <ehird> then i can just find my own scm each time i want it
16:34:56 <ehird> ;)
16:36:02 <pikhq> ehird: There aren't any. There's only crappy and more crappy.
16:36:02 <pikhq> :p
16:37:11 <ehird> pikhq: :P
16:48:08 <ehird> oklopol: plz?
16:49:27 <oklopol> ehird: i can do a search myself, the biggest problem is having to connect to the page to upload it
16:49:40 <ehird> oklopol: yeah, but this is one php file that does it all for you
16:49:47 <ehird> and supports everything grep does, regexps etc
16:50:32 <oklopol> well, as hard as it is to write a program to search a set of files for a regexp given a built-in support for that exact thing, i think i could manage.
16:51:27 <oklopol> also i'm not sure i want people to search it, i've uploaded a lot of private stuff,.
16:52:33 <ehird> oklopol: heck, the only person who would use it is me, to find your scheme interpreter, once in a blue moon
16:54:08 <ehird> oklopol: also, mine bolds the text that matches and stuffs :P
16:54:59 <ehird> also, i've almost finished writing it
16:55:00 <ehird> :-P
17:00:57 <ehird> oklopol: think it's done.
17:00:59 <ehird> can't test it
17:01:03 <ehird> wanna upload it to test? :<
17:01:42 <ehird> oklopol: well, here it is http://www.vjn.fi/pb/p464335445.txt
17:01:49 <ehird> put it as vjn.fi/pb/search.php and everything SHOULD work
17:04:15 <ehird> oklopol: if it doesn't work, add more oko to it
17:04:16 <ehird> then it should
17:04:26 <ehird> hmm wait
17:04:28 <ehird> it's not ready yet
17:04:36 <ihope> Hum. What did I say my password for the wiki is?
17:04:50 <ehird> oklopol: http://www.vjn.fi/pb/p336232313.txt fixed
17:04:53 <ehird> ihope: 'esoteric'
17:04:55 <ehird> but it doesn't work
17:05:15 <ihope> I'll try it a few more times.
17:05:34 <ihope> Hmm. Subtle typing error, I guess.
17:06:04 <ehird> ihope: Don't worry. I'll work it out for you!
17:06:25 <ihope> I already figured it out. :-P
17:06:30 <ehird> ihope: What is it?
17:06:45 <ihope> "esoteric", of course.
17:07:04 <ehird> ihope: Which wiki account is this?
17:07:09 <ihope> ihope127.
17:07:18 <ehird> ihope: The password for Ihope127 is not: esoteric
17:07:22 <ehird> I just tried it. Multiple times.
17:07:31 <ihope> You might stumble upon a revelation that allows you to log in as me eventually. :-P
17:07:40 <ihope> You're right. It's not "esoteric".
17:08:07 <ehird> it's not: "esoteric" either
17:08:10 <ehird> it's not even: 'esoteric
17:08:10 <ihope> "esoteric" is just the mnemonic.
17:08:31 <ehird> ihope: sotric?
17:08:36 <ehird> sotearic?
17:09:02 <ihope> |_00|<, 1'|\/| &1\/1|\|& `/0|_| |\/||_|(|-| 0|= +|-|3 1|\||=0|2|\/|4+10|\| `/0|_| |\|33|).
17:09:04 <ehird> oklopol: plz?
17:10:08 <ehird> oklopol: i dun wrote it gud
17:10:15 <ihope> Now quit trying to log in as me :-P
17:10:44 <ehird> ihope: Oh come on, I'm not THAT good at leetspeak
17:20:13 <oklopol> me leaves!
17:20:14 <oklopol> ->
17:20:16 -!- oklopol has quit ("( www.nnscript.com :: NoNameScript 4.2 :: www.regroup-esports.com )").
17:20:54 <ehird> sghsfgsdgfhdfg
17:28:39 -!- Corun has quit ("This computer has gone to sleep").
17:56:58 <ehird> hmm
17:57:01 <ehird> anyone know grep
17:57:03 <ehird> if so
17:57:09 <ehird> how can i reverse the filename and regexp arguments?
17:57:15 <ehird> specifically, i want to put the regexp after --
17:57:19 <ehird> so no options are interpreted in it
17:57:22 <ehird> like, -+
17:57:58 -!- oklopol has joined.
17:59:10 <ehird> oklopol: yay you're back
17:59:15 <ehird> i actually made my pastey search work
17:59:16 <ehird> i tested it
17:59:17 <oklopol> yes.
17:59:18 <ehird> :D
17:59:30 <ehird> there's only one teeeeny bug i need to fix and even then it doesn't affect anything
17:59:33 <oklopol> well, good for you!
17:59:38 <ehird> oklopol: now put it up
17:59:39 <ehird> :<
17:59:48 <oklopol> whhhhell
17:59:50 <ehird> i'll paste it
17:59:56 <oklopol> i'm not sure i want people to search the pastespace
17:59:57 <oklopol> because
17:59:59 <oklopol> i have
18:00:00 <oklopol> private
18:00:01 <oklopol> stuff
18:00:02 <oklopol> in there
18:00:11 <oklopol> perhaps i could refresh the folder
18:00:13 <oklopol> or smth
18:00:17 <ehird> hmm
18:00:22 <ehird> refresh the folder but keep the scheme interp
18:00:22 <ehird> :P
18:00:25 <ehird> heck
18:00:27 <oklopol> :D
18:00:30 <ehird> oklopol: gimme the paster source
18:00:32 <ehird> i'll add private pastes
18:00:37 <ehird> their url will be longer and they won't be searched
18:00:44 <ehird> should only take ~5 min
18:00:45 <oklopol> i could make a search for logged in users with admin levels and search for ya?
18:01:00 <ehird> oklopol: whole point is don't wanna botehr you :P
18:01:06 <ehird> but if you gimme the source i'll just add private pastes
18:01:11 <ehird> actually
18:01:13 <ehird> neat idea:
18:01:16 <ehird> private pastes keep the current urls
18:01:21 <ehird> non-private pastes get different-looking urls
18:01:25 <ehird> and the search ignores private pastes
18:01:30 <ehird> oklopol: then you don't need to do anything
18:01:33 <ehird> because all current pastes get private
18:01:36 <ehird> and kept
18:01:50 <oklopol> the pb is not entirely mine, and officially, it's not at all mine.
18:02:04 <oklopol> you can make your own pastebin and put your search in there maybe? :)
18:02:08 <ehird> oklopol: i'm sure you'll be killed for improving it without any effect
18:02:09 <ehird> :P
18:02:22 <ehird> since this wouldn't require any kind of moving etc etc
18:02:24 <oklopol> volimo does not like people touching his code
18:02:35 <oklopol> but yeah, i guess it wouldn't be that bad, it's just i don't want a search there.
18:02:44 <oklopol> so...
18:02:50 <ehird> oklopol: why not, if only public-marked pastes are searched
18:04:37 <oklopol> yeah it's no prob then, but i don't have time to add the functionality
18:04:45 <oklopol> and you cannot do it, sry.
18:04:59 <ehird> oklopol: :P
18:05:05 <oklopol> what i should be doing is to read about web programming :D
18:05:19 <ehird> oklopol: in php? you'd rather rot out your brain, i assure you
18:05:31 <oklopol> what in php?
18:05:35 <ehird> web programming in php
18:05:41 <oklopol> the course includes quite a lot of languages
18:06:04 <oklopol> multiple for asp and cgi, javascript, applets, php, perl, ruby etc.
18:06:30 <ehird> oklopol: so if i make a pastebin just like the vjn.fi one but with awesome searchy and private pastes and coolness itself and ... will you use it? :P
18:06:34 <ehird> or at least put your scheme interp on it
18:07:23 <oklopol> i don't see why i should use it, i can just add the search at some point myself :|
18:07:34 <oklopol> it's like 3 lines of code
18:07:49 <ehird> oklopol: :P
18:07:54 <oklopol> grep_with_line_numbers()
18:07:57 <ehird> it would have syntax highlightinggg....
18:08:13 <oklopol> just call it like that, and it'll make the form to ask for the regexp, then search
18:08:23 <oklopol> php is just that awesome
18:08:26 <ehird> oklopol: ah yes but mine links to the pastes and seperates by filename and it's all fancy
18:08:34 <ehird> and it's only like 30 lines
18:08:34 <ehird> :P
18:09:12 <oklopol> (link_to_paste_where_regexp_was_found line_number_of_first_occurrance "\n")*
18:09:14 <oklopol> ?
18:09:33 <ehird> oklopol: noes
18:09:36 <ehird> mine is far more awesome
18:09:40 <oklopol> aha
18:09:44 <oklopol> well, tell me
18:09:45 <ehird> and you'll only see how awesome if that's uploaded as search.php
18:09:46 <ehird> :D
18:09:52 <ehird> its hard to explain
18:09:55 <ehird> but the output is truly awesome.
18:09:58 <oklopol> a-ha
18:10:01 <ehird> nicest search interface, evar
18:10:06 <oklopol> just tell me what it is.
18:10:12 <ehird> oklopol: it even sorts it, damnit
18:10:12 <oklopol> nothing is hard to exlain
18:10:14 <oklopol> *explain
18:10:23 <ehird> yeah, oko is
18:10:26 <ehird> that searcher is a bit like oko
18:10:46 <oklopol> you called the primitive sort function? how the fuck did you manage to do that ;)
18:11:03 <oklopol> just tell me exactly what it output
18:11:04 <oklopol> s
18:11:20 <ehird> oklopol: uhh i could paste loads of html i guess
18:11:30 <oklopol> do
18:11:35 <ehird> but just put it up for like 3 seconds and give it a search like: '^class '
18:11:39 <ehird> and see the awesome
18:11:50 <ehird> and then like make it only available to admins
18:11:52 <ehird> :P
18:11:55 <ehird> (which IS like 3 lines)
18:12:02 <ehird> (i assume)
18:12:52 <oklopol> i'm not going to do that especially if you won't tell me what's so awesome about it.
18:13:48 <ehird> oklopol: it sorts it right, it handles everything like you'd expect, the links are in a nice place and are nicely standing-out, the included matching lines display is great, ...
18:14:10 <oklopol> so give me the bnf representing the output, man
18:14:23 <oklopol> (link_to_paste_where_regexp_was_found line_number_of_first_occurrance "\n")* <<< can't imagine anything better than this
18:14:26 <ehird> oklopol: that would make no sense
18:14:32 <ehird> and yeah, it is better than that
18:14:34 <ehird> it lists matches great
18:14:39 <ehird> seriously, just goddamn upload it and look at it
18:14:40 <ehird> for like 3 seconds
18:14:42 <ehird> then remove it
18:14:54 <oklopol> (link_to_paste_where_regexp_was_found line_number_of_occurrance+ "\n")* ?
18:14:57 <ehird> no
18:15:11 <oklopol> sorry, man, no sale.
18:15:17 <ehird> oklopol: it's more like
18:15:31 <ehird> <b>Paste <a href="...">NUMBER</a></b>
18:15:32 <ehird> then
18:15:33 <ehird> in monospaced
18:15:42 <ehird> (line_number occurance "\n")+
18:15:42 <oklopol> what's number?
18:15:46 <ehird> oklopol: paste number
18:15:48 <ehird> like 23872349
18:15:59 <ehird> but upload it and try it out
18:16:00 <ehird> it's great
18:16:10 <oklopol> ("Paste" link_to_paste_where_regexp_was_found (line_number_of_occurrance "\n")+ "\n")*
18:16:14 <ehird> oklopol: nope
18:16:32 <ehird> you forgot the styling (which makes it look a lot nicer believe me - i tweaked with it a bit)
18:16:35 <ehird> and the actual occurance
18:16:37 <ehird> etc etc etc
18:16:47 <ehird> see this is why it's hard to explain, it's great, try it out
18:16:56 <oklopol> i don't care much for styling
18:17:13 <ehird> oklopol: it's not STYLING
18:17:15 <ehird> it's just marking
18:17:18 <ehird> it makes it a lot easier to skim the results
18:17:20 <oklopol> show me an example, if you've tested it, you should have one
18:17:23 <ehird> & click quickly
18:17:30 <ehird> and i tested it but it was in my cache and it's gone now
18:17:37 <ehird> and i don't have good enough test data to demonstrate it properly
18:18:03 <oklopol> i just want to see how it shows its findings.
18:18:13 <oklopol> i can't see how it can be different from what i said
18:18:17 <oklopol> but i hear it's far more awesome
18:18:24 <ehird> oklopol: if you don't get it then you'll just need to look at it
18:18:28 <ehird> because i have explained it in various ways
18:18:59 <oklopol> (<b>Paste <a href="...">NUMBER</a></b> (line_number occurance "\n")+ paste_separator)+
18:19:05 <oklopol> you explained something like this
18:19:09 <ehird> oklopol: kiiiiind of
18:19:14 <ehird> but you need to see it to 'get' it, really
18:19:15 <oklopol> this is exactly what i said
18:19:19 <oklopol> a-ha
18:19:32 <oklopol> will you give me the source for upload?
18:19:34 <oklopol> or did you already?
18:19:53 <oklopol> hmm
18:20:02 <oklopol> i guess if you give me the source i could just look at that
18:20:03 <ehird> i'll paste it
18:20:06 <ehird> to make sure it's the latest version
18:20:17 <ehird> also, the source undersells it
18:20:18 <ehird> believe me
18:20:21 <ehird> oklopol: http://www.vjn.fi/pb/p526561254.txt
18:20:38 <oklopol> so basically, i put that up in the same folder as search.php or smth, and then open it in browser?
18:20:41 <ehird> totally honest when i say it's the best search interface for anything i've used
18:20:49 <ehird> oklopol: you put that up in /pb/
18:20:55 <ehird> and then go to http://vjn.fi/pb/search.php
18:21:02 <ehird> and enter a regexp - for example, '^class '
18:21:08 <ehird> and apply pressure to the button
18:21:22 <oklopol> so exactly what i said?
18:21:47 <ehird> oklopol: yes
18:21:47 <ehird> :)
18:22:57 <ehird> oklopol: it must be in /pb/ though
18:23:02 <ehird> and it must be called search.php
18:23:04 <ehird> otherwise breakage
18:24:37 <oklopol> okay, so it was (link_to_paste (line_number line_content separator)+ separator)+
18:24:57 <oklopol> that was hard tell me because..? :D
18:25:11 <ehird> oklopol: wait, how did you check that -- it's not on the server
18:25:12 <ehird> :P
18:25:17 <oklopol> oh yeah it is
18:25:26 <ehird> oklopol: how can it work, it links to search.php directly
18:25:39 <oklopol> yes, but i illegally changed the code so it works :|
18:25:42 <ehird> haha
18:25:45 <oklopol> so you can't use it before i remove it!!
18:25:48 <ehird> oklopol: now will you add it :P
18:25:54 <ehird> plzzzz, it's awesoe
18:25:55 <ehird> *awesome
18:26:05 <ehird> and i'll only use it to get the scheme and other code you've linked
18:26:07 <ehird> promise <3
18:27:27 <oklopol> http://www.vjn.fi/pb/p435344445.txt <<< lolwat :D
18:28:06 <ehird> oklopol: beats me, will you put the search up now and i'll love you forever and ever :p
18:28:11 <oklopol> http://www.vjn.fi/pb/p222552612.txt <<< this has some history related notes in finnish
18:28:24 <oklopol> it is up, you just can't find it! :D
18:28:32 <ehird> oklopol: it's not called oko.php
18:28:34 <ehird> or okosearch.php
18:28:36 <ehird> or searchoko.php
18:29:07 <ehird> oklopol: a hint plz? :<
18:29:22 <oklopol> eh, you think the random generator in my head is that logical?
18:29:44 <ehird> oklopol: hint :<
18:30:00 <oklopol> it's a random set of characters
18:30:05 <oklopol> well, pronouncible
18:30:12 <oklopol> *pronouncable
18:30:16 <ehird> oklopol: it's not saf
18:30:17 <oklopol> *pronouncoble
18:30:18 <ehird> *sadf
18:30:26 <ehird> oh just link it :P
18:30:32 <ehird> i wanna see how it works with a real data set actually
18:30:35 <ehird> my little baby!
18:30:47 <oklopol> you can't find it. and no i won't link it, really, there's private stuff in there.
18:31:12 <oklopol> most of it in finnish, but i'm a very paranoid guy. make your own pastebin : D
18:31:28 <ehird> oklopol: i can't find the code you give to me using my own pastebin :>
18:31:32 <oklopol> but really, i gotta check what the bin contains, it seems people outside vjn are using it nowadays :|
18:31:37 <ehird> also: why not just leave it there for 3 minutes, sheesh ;P
18:31:45 <ehird> i can hardly read anything private in 3 minutes
18:31:52 <ehird> also, reading private things is not what us unicorns do
18:31:56 <oklopol> you can search all.
18:32:12 <oklopol> and you probably would, you sneaky bastard!! :D
18:32:24 <ehird> oklopol: no i wouldn't, sheesh, you think i care about anything personal about you? :p
18:32:54 <oklopol> that has nothing to do with this, make you own pb :)
18:33:02 <ehird> oklopol: i can't find the code you link me with my own pb
18:34:13 <oklopol> btw you were right, it was different from what i said, you also printed the line
18:34:27 <ehird> oklopol: i was right then, i must be right now
18:34:27 <oklopol> but that was really a defect in my bnf, i meant to put content there
18:34:29 <ehird> so link me :D
18:34:44 <ehird> i just wanna see what it looks like on a data set bigger than 3 test files..
18:34:47 <oklopol> sorry, doesn't exist anymore.
18:34:51 <oklopol> i can paste you the result.
18:34:53 <ehird> and find the scheme helpfully while i'm at it
18:35:01 <ehird> oklopol: :( alright then
18:35:06 <ehird> did you find the scheme?
18:35:41 <oklopol> http://www.vjn.fi/pb/p255331634.txt <<< this may be some version of it
18:36:10 <ehird> oklopol: yep! any others there or was that it
18:36:13 <oklopol> http://www.vjn.fi/pb/p213151116.txt <<< thi too
18:36:17 <ehird> and .. can you paste the search results then
18:36:17 <ehird> :D
18:36:20 <oklopol> no other containing sch.
18:36:24 -!- Corun has joined.
18:36:30 -!- Sgeo has joined.
18:36:31 <ehird> also, those two are identical
18:38:06 <ehird> oklopol: now paste the search results
18:38:09 <ehird> so i can see my coool app
18:38:44 <oklopol> http://www.vjn.fi/pb/p234546123.txt
18:38:59 <oklopol> they are exactly the same? you checked
18:39:00 <oklopol> ?
18:39:56 <ehird> at a glance yes
18:40:29 <ehird> oklopol: that's not a long search
18:40:30 <ehird> :P
18:40:31 <ehird> however
18:40:40 <ehird> my search is kinda cool right mabye you should put it up for admins only
18:40:47 <ehird> and then whenever i yell at you you can just do a quick search
18:40:47 <ehird> :p
18:41:38 <oklopol> peeeeeerhaps i could, perhaps i could... but actually making it admin-only requires *some* work
18:42:04 <oklopol> anyway, opening a power-point thingie now, so see you in a while ->
18:54:53 -!- Judofyr has joined.
19:02:45 <ehird> Judofyr: so you like ruby a lot - coderay sucks. what can i use?
19:02:46 <ehird> pygments is great.
19:02:55 <ehird> it actually, you know. supports languages.
19:06:36 <ehird> Judofyr: no?
19:30:12 <Judofyr> ehird: I'm back!
19:30:36 <Judofyr> Ultraviolet is awesome!
19:30:54 <Judofyr> ehird: http://ultraviolet.rubyforge.org/
19:32:45 <Judofyr> uses TextMate-themes :)
19:32:53 <Judofyr> but your not there right now, or?
19:47:34 <ehird> back
19:47:46 <ehird> Judofyr: i'd rather something that didn't use textmate-themes
19:47:50 <ehird> the yare the thing that sucks about TM
19:47:50 <ehird> :)
19:47:59 <Judofyr> what?
19:48:06 <Judofyr> they are awesome!
19:48:07 <Judofyr> :P
19:48:25 <ehird> also, i'd rather it didn't use textmate syntax files
19:48:26 <ehird> they suck
19:48:27 <ehird> :)
19:48:35 <ehird> right now i'm just going to shell out to pygments
19:49:31 <ehird> Judofyr: Oh, and feel free to tell the author of ultraviolet that hogging two-character command names is bad.
19:49:32 <Judofyr> do what you like; I like both TM syntax + themes :P
19:49:45 <ehird> Especially for something as unimportant as a syntax highlighter
19:49:56 <Judofyr> I don't know the author :P
19:50:00 <ehird> and that abbreviating namespaces sucks highly, and that it should be 'Ultraviolet' not 'Uv'
19:50:20 <ehird> Judofyr: Ever seen TextMate's Haskell support? Yeeeahhh.
19:50:45 <ehird> Personally I want to shell out to emacs and somehow get HTML out of that - Since the highlighters are arbitary emacs lisp code, it handles just about everything
19:50:51 <ehird> Even 2D languages and similar
19:51:04 <Judofyr> I don't use Haskell, so I don't care about that :)
19:51:24 <Judofyr> as long as it does JS, HTML, CSS and Ruby I'm fine :)
19:53:21 <ehird> Judofyr: I think I'll just make this expect a class with a .highlight(source) method and expect html back
19:53:24 <ehird> :-P
19:53:38 <Judofyr> ^^
19:53:53 <Judofyr> what are you doing?
19:54:04 <Judofyr> something cool? :P
19:54:35 <ehird> Judofyr: pastebin
19:54:59 <ehird> i usually favour python over ruby these days. But Rack is close enough to WSGI and far enough away from the ugly Ruby frameworks that I'm considering trying it out :-)
19:55:13 <Judofyr> Rack is awesome
19:55:25 <Judofyr> are you using Rack::Request & Response too?
19:55:49 <ehird> Judofyr: Dunno. Should I?
19:55:58 <ehird> A Hash isn't very nice to play with, that's true.
19:56:11 <ehird> Judofyr: Also, if you like Rack you gotta give credit to ruby - it's almost a 100% rip-off of WSGI :)
19:57:20 <Judofyr> ehird: It's probably easier to work with Req & Res than a Hash :P And I know that Rack is based on WSGI :)
19:57:29 <ehird> Judofyr: 'based on', heh.
19:57:42 <ehird> you can port wsgi apps almost 1:1
19:57:48 <Judofyr> have you read the slides? http://chneukirchen.org/talks/euruko-2007/chneukirchen-euruko2007-introducing-rack.pdf
19:57:59 <Judofyr> it's an example of Req & Res there :)
19:58:00 <ehird> no, i don't like presentations
19:58:10 <ehird> i like good rdocs
19:58:56 <Judofyr> then you better look at the source...
19:59:08 <ehird> Judofyr: I said rdocs
19:59:10 <ehird> http://rack.rubyforge.org/doc/
19:59:11 <Judofyr> they're poorly documented :(
19:59:45 <Judofyr> the online doc isn't updated for 0.3...
19:59:58 <ehird> I forgot how much I hate the web
20:00:00 <ehird> :)
20:01:27 <Judofyr> yeah, I find web-developement booring..
20:01:32 <Judofyr> booooooring*
20:02:26 <ehird> Judofyr: but the output fun.
20:02:48 <Judofyr> yeah :)
20:03:11 <ehird> great mail I just got from nearlyfreespeech.net: "Hello, <quote> Yes. Thanks, Jeff"
20:03:56 <Judofyr> lol
20:04:26 <Judofyr> what did you ask about?
20:04:47 <ehird> Judofyr: web apps that weren't PHP or CGI
20:04:53 <ehird> i asked if they weren't supported
20:05:16 <ehird> which is understandable, although they run seperate DB instances and are often faster than a VPS or similar etc they're still a shared host
20:05:28 <ehird> the prices are niiiice though
20:05:50 <Judofyr> the best thing is to have your own server, though
20:07:53 <ehird> Judofyr: as in a literal dedi?
20:07:55 <ehird> a friend has one of them.
20:08:29 <Judofyr> great for testing out things and be able to do whatever you like
20:09:02 <ehird> Judofyr: take a look at nearlyfreespeech.net though
20:09:05 <ehird> it's not like the typical shared hosts
20:09:25 <ehird> Judofyr: it's charged based on your usage
20:09:30 <ehird> $10=1GB
20:09:40 <ehird> but if you get an influx of traffic it doesn't drain the bank
20:09:44 <ehird> because of how the system woorks
20:09:44 <Judofyr> traffic or storage?
20:09:47 <ehird> Judofyr: traffic
20:09:57 <Judofyr> that sounds good
20:10:02 <Judofyr> but only PHP + CGI?
20:10:12 <ehird> Judofyr: it IS a shared host
20:10:13 <ehird> but yes
20:10:17 <ehird> however, they support tons of cgi languages
20:10:23 <ehird> 12+ according to them
20:10:26 <ehird> and the versions appear to be recent
20:10:27 <Judofyr> like Ruby?
20:10:36 <ehird> yes
20:10:39 <ehird> even Haskell
20:10:49 <ehird> http://example.nfshost.com/versions.php lists the versions for the most popular languages
20:11:10 <Judofyr> 1.8.6 isn't bad..
20:11:52 <ehird> Judofyr: oh cool:
20:11:53 <ehird> Data Transfers (Bandwidth): Starts at $1.00 per gigabyte and goes down.
20:11:57 <ehird> "What does "and goes down" mean? It means that we keep track of how much bandwidth you use; the more you use, the cheaper it gets:
20:11:58 <ehird> "
20:12:11 <Judofyr> übercool
20:13:01 <ehird> Judofyr: one of the main things they toot about it though is that they don't censor (could you guess from the name? totally suprising.)
20:13:17 <ehird> it would be nice to be able to run non-PHP&non-CGI languages though
20:13:25 <ehird> i guess they're just not popular enough to warrant them doing it yet
20:13:35 <ehird> also, loads of the long-running process solutions are quite unstable and eat memory
20:13:41 <Judofyr> well, right now I'm fine with my own server :
20:13:42 <Judofyr> :) *
20:14:57 <ehird> Judofyr: i'm with slicehost right now, so it's a vps
20:15:05 <Judofyr> slicehost looks fine
20:15:23 <ehird> but they don't seem to be very strong proponents of the 'no censorship' maxim
20:15:34 <ehird> i mean, their TOS says non-illegal stuff, but they don't seem to make it one of their points
20:18:16 -!- calamari has joined.
20:18:25 <calamari> hi
20:18:40 <Judofyr> hi ):
20:18:43 <Judofyr> :) *
20:19:16 -!- atsampson has quit ("nope, turns out I do still need a -rt kernel...").
20:21:20 <Judofyr> anyone tried Neko?
20:21:55 <calamari> Judofyr: this? http://en.wikipedia.org/wiki/Neko_%28programming_language%29
20:22:06 <Judofyr> yes
20:22:31 -!- atsampson has joined.
20:22:47 <calamari> first I've heard of it :)
20:23:02 <calamari> looks like php
20:23:23 <ehird> calamari: i think $ means 'primitive'
20:23:36 <ehird> People seem to use http://www.haxe.org/ which compiles to Neko's VM.
20:25:14 <calamari> compile to javascript.. interesting idea
20:25:58 <Judofyr> and flash
20:26:31 <Judofyr> chirrp is built with haXe
20:26:40 <Judofyr> http://hackety.org/2008/04/23/yourEightSecondCallingCard.html
20:42:13 -!- Judofyr_ has joined.
20:51:08 <ehird> oklopol: i haff a cool language in the works
20:51:11 <ehird> it's kind of like oklotalk
20:51:12 <ehird> but not
20:55:51 <ehird> oklopol: take a look
20:55:51 <ehird> (set '_cdr'
20:55:51 <ehird> {(x i)
20:55:51 <ehird> (if (== i (- (length x) 1))
20:55:51 <ehird> []
20:55:52 <ehird> (++ [(at x i)] (_cdr x (+ i 1))))})
20:55:54 <ehird> (set 'cdr'
20:55:56 <ehird> {(x) (_cdr x 0)})
20:58:41 <ehird> oklopol: it has message sendy thingies
20:58:45 <ehird> but it supports any number of args
20:59:39 -!- Judofyr has quit (Read error: 110 (Connection timed out)).
21:01:31 <ehird> oklopol: likey
21:01:32 <ehird> ?
21:03:14 <oklopol> ooo
21:03:45 <ehird> oklopol: all i have to do now is implement BORING THINGS like strings
21:03:49 <ehird> and get the actual primitives down
21:03:51 <ehird> and the parser
21:03:54 <ehird> wanna help? :PPPP
21:04:01 <oklopol> i have no idea what that code does
21:04:02 <ehird> also, i call names 'toms'
21:04:04 <ehird> geddit
21:04:04 <ehird> 'atom'
21:04:05 <ehird> 'tom'
21:04:07 <ehird> oklopol: and
21:04:09 <ehird> it's lisp cdr!
21:04:17 <ehird> (cdr [1,2,3]) -> [2,3]
21:04:23 <ehird> set does what you expect
21:04:27 <ehird> {(args) code} is a function
21:04:29 <oklopol> well, duh, got i have no idea how it works
21:04:34 <ehird> ++ is append
21:04:39 <oklopol> yeah do explain
21:04:44 <ehird> oklopol: which part don't you get
21:04:46 <ehird> i'll translate to python
21:05:00 <oklopol> (x i) <<< what's x
21:05:14 <oklopol> oh
21:05:26 <ehird> oklopol: also, (at LST INDEX)
21:05:28 <ehird> is LST[INDEX]
21:05:52 <ehird> hmm
21:05:55 <ehird> i haff bug;
21:05:56 <ehird> :DD
21:06:02 <oklopol> i didn't get it's {(args) (expr) (expr)...}
21:06:16 <oklopol> mainly cuz i didn't read it through and didn't see the actual cdr
21:06:19 <oklopol> just _cdr
21:06:46 <ehird> oklopol: okay wait
21:06:47 <ehird> look:
21:07:24 <ehird> (set 'drop' {(i x) (if (== i (length x)) [] (++ [(at x i)] (drop (+ i 1) x)))})
21:07:31 <ehird> (set 'cdr' {(x) (drop 1 x)})
21:07:34 <ehird> oklopol: drop is like haskell drop
21:07:38 <ehird> drop 1 [1,2,3] => [2,3]
21:07:43 <ehird> drop 5 [1,2,3,4,5,6] => [6]
21:07:44 <ehird> etc
21:07:50 <ehird> so, in that case:
21:07:54 <ehird> 'set' is a primitive function
21:07:57 <ehird> but '==' is a message
21:07:59 <oklopol> yeah the other raeson was the bug
21:08:02 <oklopol> *reason
21:08:03 <ehird> 'length' is a message, so is '++'
21:08:12 <ehird> 'drop' is a function
21:08:15 <oklopol> couldn't deduce "at", because it made no sense
21:08:15 <ehird> 'at' is a message
21:08:18 <ehird> 'if' is a function
21:08:21 <ehird> oklopol: yeah
21:08:28 <ehird> if in (A B C ...), A is not a function
21:08:32 <ehird> and it's a Tom instead
21:08:40 <ehird> we send A to B with C ... as the arguments
21:08:53 <ehird> so (at [1,2,3] 0) sends 'at' to [1,2,3] with arg 0
21:09:17 <oklopol> so exactly like oklotalk--?
21:09:27 <oklopol> do you generalize over n args?
21:09:45 <ehird> oklopol: yes, n args
21:09:48 <ehird> but not exactly like oklotalk--
21:09:53 <ehird> i'll show you the impl
21:09:53 <oklopol> what's different?
21:09:57 -!- timotiis_ has joined.
21:10:01 <oklopol> oh
21:10:23 <ehird> oklopol: http://www.vjn.fi/pb/p463212552.txt
21:10:27 <ehird> all that needs to be added is
21:10:29 <ehird> 1. more primitives
21:10:32 <ehird> 2. more messages
21:10:32 -!- timotiis has quit (Nick collision from services.).
21:10:33 <ehird> 3. a parser
21:10:34 <ehird> :P
21:10:37 -!- timotiis_ has changed nick to timotiis.
21:11:20 <oklopol> class Koed(Lst): :P
21:12:02 <ehird> oklopol: my little homage to okoness
21:12:05 <ehird> or should it be okoity
21:12:09 <oklopol> what does it mean to send "at" to an object with arg 0?
21:12:21 <oklopol> how is that received?
21:13:01 <ehird> oklopol: welllll, in python (at X 0)
21:13:02 <ehird> translates to
21:13:11 <ehird> X.sent('at', [Num(0)])
21:13:19 <ehird> oklopol: this is done in Koed's eval
21:13:22 <ehird> look at it :)))
21:13:59 <oklopol> doesn't help me
21:14:03 <oklopol> how is it received?
21:14:11 <ehird> oklopol: whut do you mean
21:14:12 <oklopol> as a 2-tuple?
21:14:17 <ehird> oh
21:14:18 <ehird> uhhh
21:14:19 <ehird> what
21:14:20 <ehird> no
21:14:23 <ehird> X.sent('at', [Num(0)])
21:14:23 <oklopol> if you send "at", and give 0 as param
21:14:27 <ehird> yes
21:14:27 <oklopol> how would you receive that?
21:14:32 <oklopol> in the functino
21:14:34 <ehird> oklopol: read Koed's eval!!!!
21:14:34 <oklopol> function
21:14:42 <ehird> and
21:14:45 <ehird> functions are specially handled
21:14:54 <oklopol> please just who me in that-language code
21:14:56 <ehird> there's no way to make a message-reciever in user code
21:14:57 <ehird> yet
21:15:00 <oklopol> oh
21:15:03 <ehird> but
21:15:06 <ehird> it will look something like this
21:15:09 <oklopol> so "i dunno" would've been the answer
21:15:18 <ehird> (recv {(msg args) ...})
21:15:23 <oklopol> ah
21:15:26 <oklopol> so as a 2-tuple
21:15:26 <oklopol> thans
21:15:28 <oklopol> thanks
21:15:33 <ehird> oklopol: not as a 2-tuple
21:15:34 <ehird> as 2 args
21:15:37 <ehird> it has real args, remember?
21:15:51 <oklopol> if it gets zero args, how do you receive
21:15:52 <oklopol> ?
21:16:03 <oklopol> (msg [])
21:16:07 <ehird> oklopol: yes
21:16:10 <oklopol> and one is (msg [arg])
21:16:15 <ehird> yes
21:16:15 <oklopol> two is (msg [arg arg])
21:16:15 <ehird> BUT
21:16:20 <ehird> they're real arguments
21:16:21 <ehird> because
21:16:23 <ehird> {(a b c) ...}
21:16:24 <oklopol> okay, so special syntax for 2-tuple
21:16:28 <ehird> it's not passed as a tuple DAMNIT
21:16:34 <oklopol> who cares? same thing
21:16:36 <ehird> {(a b c) ...}
21:16:37 <ehird> is
21:16:39 <ehird> (lambda (a b c) ...)
21:16:43 <ehird> they're real, honset-to-god args
21:17:28 <oklopol> i don't see a difference
21:18:02 <oklopol> the point wwas
21:18:03 <oklopol> *was
21:18:09 <oklopol> just to get what the gist is
21:18:24 <oklopol> i don't care how much you wanna emphasize the fact it's not a list
21:18:25 <ehird> oklopol: but it's different from ot--
21:18:29 <ehird> i hope you agree :<
21:18:35 <oklopol> to me, it's a list, but you cannot pattern match on it with a var.
21:18:58 <oklopol> so it's just a list with functionality stripped
21:19:36 <oklopol> ehird: yeah it's a bit different
21:19:47 <ehird> oklopol: nooo it's like scmtalk
21:20:42 <oklopol> function calling is pretty much always the same, you send an argument object to the function.
21:20:50 <oklopol> sometimes that argument object is fixed to be a list
21:21:09 <oklopol> and pattern matching can make a conceptual distinction between a real list, and "multiple arguments"
21:21:46 <ehird> oklopol: i wonder what would happen if you made a language that was integrated with pygame
21:21:46 <ehird> like
21:21:48 -!- calamari has quit ("Leaving").
21:21:48 <ehird> okogame
21:21:51 <ehird> and then wrote pong in it
21:21:55 <ehird> i predict asplosions
21:22:10 <oklopol> but when you said something about messages and params being separate, i thought you might have something special in mind for those, kinda like oo does with method names... but you didn't, it was a list, which is why i said "so it's a 2-tuple" or whatever i said
21:23:12 <ehird> oklopol: it is method names
21:23:13 <ehird> thingy
21:24:06 <oklopol> yes, i know it is, you explained about the tuple thing
21:24:15 <oklopol> so
21:24:22 <oklopol> how does {(a b c) ...} workl
21:24:23 <oklopol> *work
21:24:24 <oklopol> i mean
21:24:33 <oklopol> if you do a call (a b c d e f) and a can be called
21:24:45 <oklopol> what arg-tuple is a called with?
21:24:47 <oklopol> if it can be called
21:25:32 <oklopol> *is "a" called
21:25:35 <ehird> oklopol: it's called with (b c d e f)
21:25:38 <ehird> and crashes and burns :D
21:25:42 <oklopol> oh
21:25:45 <oklopol> and if a can't be called
21:25:47 <oklopol> then
21:25:51 <ehird> oklopol: then it depends
21:25:52 <ehird> if it's a tom
21:25:55 <ehird> then we do the sendy sendy dance
21:25:56 <oklopol> b is called with (a [c d e f])
21:26:01 <ehird> otherwise, we buhrn
21:26:01 <ehird> and n
21:26:02 <ehird> and no
21:26:07 <ehird> message sends are NOT CALLS
21:26:08 <ehird> NOT NOT CALLS
21:26:16 <ehird> they're totally seperate
21:26:18 <oklopol> what's the difference?
21:26:31 <ehird> functions <-- things you can applyerate --> things that respond to things
21:26:56 <ehird> (recv {(msg args) ...}) <-- recv just lets you give it a function and it gives you a responder that just forwards it to that function
21:27:25 <oklopol> forwards what to that function?
21:27:36 <oklopol> whatever it's called with?
21:27:39 <ehird> oklopol: the message and the arguments
21:28:21 <oklopol> okay, so there's two kinds of things which can be sent stuff, functions, which are called, and ***'s, which are sent messages?
21:28:35 <ehird> oklopol: yes
21:28:41 <oklopol> ah.
21:28:45 <ehird> oklopol: the ***s native tounge is python
21:28:48 <ehird> look at def sent()
21:29:03 <ehird> oklopol: actually, here's one way to put it
21:29:06 <ehird> when you do {...}
21:29:13 <ehird> you get a *** that responds to only one message: apply
21:29:25 <ehird> and the arguments you give with that message are passed to the code block.
21:29:32 <ehird> oklopol: and that's *actually how it's implemented*
21:29:32 <ehird> so
21:29:38 <ehird> ({...} b c)
21:29:39 <ehird> is
21:29:45 <ehird> (apply {...} b c)
21:29:51 <ehird> or in python:
21:29:59 <ehird> ({...} b c) -> {...}.sent('apply', [b,c])
21:30:04 -!- Judofyr_ has quit (Read error: 104 (Connection reset by peer)).
21:30:06 <ehird> (a b c) -> a.sent(b, [c])
21:30:08 <ehird> err no
21:30:10 <ehird> b.send(a, [c])
21:30:24 -!- Judofyr has joined.
21:30:28 <oklopol> in case a is... what?
21:30:32 <oklopol> err
21:30:35 <oklopol> i mean
21:30:40 <oklopol> hmm
21:30:49 <oklopol> oh
21:31:39 <oklopol> so, functions need to be called as the first param, in message passing you have to have the object that receives the message as the second param
21:31:51 <oklopol> but
21:32:07 <ehird> oklopol: ... but ....
21:32:24 <oklopol> the question is, what's the difference between a function and a thing that receives a message, syntactically
21:33:19 <ehird> oklopol: okay:
21:33:24 <ehird> when i say {...} i mean 'some function'
21:33:29 <ehird> when i say 'foo' i mean 'some atom'
21:33:34 <ehird> when i say '?' i mean 'something else'
21:33:39 <ehird> here's how it translates into python:
21:33:47 <ehird> ({...} b c) -> {...}.sent('apply', [b,c])
21:33:58 <ehird> (foo b c) -> b.sent('foo', [c])
21:34:05 <oklopol> i know this
21:34:05 <ehird> (foo b c d) -> b.sent('foo', [c,d])
21:34:12 <ehird> (? ...) -> ERRORERRORERROR
21:34:48 <oklopol> in this case, what might b be?
21:35:03 <oklopol> if it is sent "foo", [c,d]
21:35:11 <ehird> oklopol: b is a recevier
21:35:15 <oklopol> ...
21:35:18 <oklopol> what's that?
21:35:21 <ehird> oklopol: umm
21:35:22 <ehird> a receiver
21:35:27 <oklopol> what's the difference between a function and a thing that receives a message?
21:35:39 <oklopol> b can't be a function?
21:35:39 <ehird> oklopol: one's a function and the other is a thing that receives a message..
21:35:50 <ehird> well, functions are receivers that only respond to 'apply'
21:35:53 <ehird> <ehird> ({...} b c) -> {...}.sent('apply', [b,c])
21:35:53 <ehird> <ehird> (foo b c) -> b.sent('foo', [c])
21:35:55 <ehird> with those
21:35:56 <ehird> we can see
21:35:56 <ehird> that
21:36:03 <ehird> (apply {...} b c) -> {...}.sent('apply',[b,c])
21:36:10 <ehird> which you'll notice is the same as the first rule
21:36:18 <ehird> oklopol: and look at the code for 'Func'
21:36:22 <oklopol> please just tell me what the fuck a receiver is, THE WORD ITSELF DOES NOT MEAN ANYTHING
21:36:25 <ehird> the response to 'apply' is to do a normal function call
21:36:29 <ehird> and ... read the goddamn code
21:36:39 <ehird> it's an abstract concept
21:36:39 <ehird> sheesh
21:36:42 <oklopol> no. if you can't explain this, i'm going to sleep
21:36:47 <oklopol> umm
21:36:53 <oklopol> can you give me an example, perhaps?
21:37:04 <oklopol> basically
21:37:43 <ehird> oklopol: i can't.
21:37:45 <ehird> just read it.
21:37:49 <ehird> it's only 100 lines of trivial code
21:38:27 <oklopol> def sent(self, name, args):
21:38:27 <oklopol> if name == '++':
21:38:27 <oklopol> return self._oppy(lambda a,b: a+b, '++', args)
21:38:30 <oklopol> okay, i opened it
21:38:34 <oklopol> and it seems b can be a list
21:38:36 <oklopol> is this correct?
21:38:57 <ehird> oklopol: well err
21:39:00 <ehird> that's just in Lst
21:39:09 <ehird> that's just the code for adding two Lsts
21:39:11 <ehird> oklopol: see _oppy
21:39:13 <ehird> it's a little helper
21:39:16 <oklopol> so it cannot be a list?
21:39:18 <ehird> ....
21:39:22 <ehird> weoprkopfkopfkeorjoiwejfiojfifgjerlg
21:39:23 <ehird> READ THE CODE
21:39:37 <oklopol> well
21:39:47 <oklopol> you are saying you cannot give an example what b could be
21:39:53 <ehird> oklopol: i can
21:39:55 <ehird> it is a Lst.
21:39:57 <ehird> read _oppy
21:39:59 <ehird> please
21:40:00 <ehird> READ _OPPY
21:40:01 <oklopol> but, it seems if b is a list, it can handle the message ++
21:40:07 <ehird> how can you expect to understand it if you don't READ _OPPY
21:41:19 <oklopol> it seems ++ would append a list to a list
21:41:28 <oklopol> but i don't see what use reading _oppy was
21:41:59 <ehird> oklopol: because you were asking about ++
21:42:07 <oklopol> okay, is (++ [1 2] [3 4]) correct?
21:42:12 <oklopol> ==> [1 2 3 4]
21:42:15 <ehird> oklopol: err, of course it is
21:42:17 <ehird> why wouldn't it be
21:42:31 <oklopol> so in (a b c), when a is an atom, and b is sent a message, b can be a list?
21:42:39 <ehird> oklopol: b can be ANYTHING
21:42:55 <ehird> EVERYTHING responds to .sent, but if you send something silly it goes 'i can't handle this' and throws an error
21:42:59 <oklopol> 23:36… oklopol: please just tell me what the fuck a receiver is, THE WORD ITSELF DOES NOT MEAN ANYTHING
21:43:01 <ehird> what the heck is hard to understand
21:43:07 <oklopol> i mean
21:43:11 <ehird> oklopol: ITISANABSTRACTCONCEPT
21:43:23 <oklopol> why couldn't you just say it's an object?
21:43:31 <ehird> it's not
21:43:33 <oklopol> abstract concept with no meaning
21:43:35 <oklopol> is nothing.
21:43:39 <ehird> it doesn't resemble an object
21:43:41 <ehird> it's just a THING
21:43:44 <oklopol> but
21:43:44 <ehird> that can get a message
21:43:48 <oklopol> an example of it is a list
21:44:04 <ehird> oklopol: or a function
21:44:06 <ehird> or a number
21:44:07 <ehird> or a string
21:44:08 <oklopol> this is a bit contradictory, because you said at some point you cannot give an example of it
21:44:09 <ehird> or an atom
21:44:17 <ehird> or an error
21:44:21 <ehird> EVERYTHING is a receiver
21:44:25 -!- Judofyr_ has joined.
21:44:32 <oklopol> 23:36… oklopol: can you give me an example, perhaps?
21:44:32 <oklopol> 23:36… oklopol: basically
21:44:32 <oklopol> 23:37… ehird: oklopol: i can't.
21:44:36 <oklopol> i assumed nothing is.
21:44:39 <oklopol> sofar
21:44:48 <ehird> oklopol: look at Obj
21:44:50 <ehird> it has a sent method
21:44:51 <oklopol> in which case i would've assumed the answer "nothing yet"
21:44:54 <ehird> ergo everything is a receiver
21:45:08 <ehird> (+ 1 2) ends up with Num's sent being called
21:45:12 <ehird> and it uses _oppy
21:45:14 <oklopol> if you say something, i assume it overrides the code.
21:45:18 <ehird> _oppy handles a lisp-style variadic
21:45:25 <ehird> you give it a lambda of two args
21:45:28 <oklopol> it is very annoying to make me read tons of code over something trivial.
21:45:30 <ehird> and it unwraps your value
21:45:32 <ehird> and the first args value
21:45:35 <ehird> and wraps the result of that
21:45:36 <oklopol> tons = over 2 lines
21:45:39 <ehird> then recurses with the rest of the args on that result
21:45:45 <ehird> so (+ 1 2 3) works
21:45:49 <ehird> it ends up being (+ (+ 1 2) 3)
21:45:51 <ehird> thanks to _oppy
21:47:07 <oklopol> yes, but this is irrelevant, so, how do functions pmatch on calls, and how on messages?
21:47:23 <oklopol> [...] for calls, and (atm, [...]) for messages?
21:47:24 <ehird> oklopol: no pattern matching
21:47:33 <ehird> and..... FUNCTIONS CANNOT BE USED AS RECEIVERS
21:47:35 <ehird> well
21:47:35 <ehird> kinda
21:47:38 <ehird> {...} will accept ONE message
21:47:39 <ehird> 'apply'
21:47:47 <ehird> it does what you expect. applies the function to the arguments given
21:47:48 <ehird> oklopol: BUT
21:47:51 <ehird> (recv {...})
21:47:52 <oklopol> ...
21:47:53 <ehird> is a receiver
21:47:57 <ehird> which when sent a message
21:48:01 <oklopol> you just said a function can be a receiver.
21:48:01 <ehird> calls the function given with (msg args)
21:48:04 <ehird> AND IT CAN
21:48:07 <ehird> BUT ONLY WITH ONE MESSAGE
21:48:11 <ehird> oklopol: READ FUNC'S .SENT()
21:48:12 <oklopol> ehird: and..... FUNCTIONS CANNOT BE USED AS RECEIVERS
21:48:15 <ehird> IT CAN
21:48:15 <oklopol> ...
21:48:17 <ehird> BUT JEEZ
21:48:22 <ehird> READFUNC'S.SENT()READFUNC'S.SENT()READFUNC'S.SENT()READFUNC'S.SENT()
21:48:36 <ehird> def sent(self, name, args):
21:48:36 <ehird> if name == 'apply':
21:48:37 <ehird> .......
21:48:38 <ehird> etc
21:48:49 <ehird> oklopol: SO IT RESPONDS to one fixed message: APPLY, which does function application
21:48:53 <ehird> IF YOU WANT TO MAKE YOUR OWN RECEIVER
21:48:55 <ehird> there is a heper function
21:48:57 <ehird> (recv {...})
21:49:02 <ehird> gives you a receiver
21:49:10 <ehird> which when sent the message M with args A
21:49:13 <ehird> calls the function with (M A)
21:50:39 <oklopol> so "b can be anything but a function that has not been wrapped with recv"? would've been the answer to "oklopol: in this case, what might b be?"
21:50:47 <oklopol> *-?
21:51:00 <ehird> oklopol: no
21:51:02 <ehird> it can be a function
21:51:07 <ehird> but it won't receive the message or whatever
21:51:07 <oklopol> oh?
21:51:13 <ehird> it'll just error out, unless you're sending it 'apply'
21:51:20 <ehird> because the function class responds to 'apply'
21:51:22 <oklopol> so "can be anything" would've been the answer
21:51:22 <ehird> for function application
21:51:33 <ehird> and in ({...} ...) it sends apply to {...}
21:51:41 <oklopol> "is a receiver" means: "it is whatever b is in that situation"
21:51:43 <ehird> oklopol: yes, but {...} by itself is not useful if you want to make a receiver for yourself
21:51:49 <ehird> recv helps
21:52:01 <oklopol> are there other ways?
21:53:02 <ehird> oklopol: yeah .. write a python subclass of Obj
21:53:09 <ehird> and override .sent(name, args)
21:53:10 <ehird> :-)))
21:53:16 <oklopol> anyway, all i wanted was an answer to that question, you are a bit hard to get stuff out of, sometimes
21:53:18 <oklopol> hmm
21:53:19 <ehird> (name will be a string, args a list of Obj subclasses of some kind)
21:53:21 <oklopol> rright.
21:53:46 <oklopol> and the use of this distinction is?
21:54:11 <oklopol> the fact you cannot just use a function for any message
21:54:18 <ehird> oklopol: because...that's not what a function is
21:54:32 <oklopol> right, i guess there doesn't have to be a reason
21:54:54 <oklopol> except that it wouldn't make sense, or something
21:54:54 <oklopol> but
21:55:06 <ehird> oklopol: a function is something that has a lexical closure and takes some arguments, runs some code, and returns something
21:55:21 <ehird> a receiver is just something that will give you something if you give it a message name and a list of objects
21:55:21 <ehird> :)
21:55:22 <oklopol> i'm assuming these method-call like things where you send the atom name and args separately are used for making objects?
21:55:45 <ehird> oklopol: the swapping of the first two args is just so that you can use lisp-style prefix syntax
21:55:51 <ehird> (length x) instead of (x length) etc
21:56:21 <oklopol> it is? i thought it was for message passing
21:56:24 <oklopol> i mean
21:56:28 <ehird> oklopol: welllll
21:56:28 <ehird> okay
21:56:31 <ehird> let's get to the bottom of this
21:56:34 <ehird> i'll explain it simply
21:56:35 <ehird> first
21:56:38 <ehird> forget about functions
21:56:42 <oklopol> a-ha
21:57:00 <ehird> (a b ...) means 'send the message b to a, with the arguments ....'
21:57:01 <ehird> now
21:57:07 <ehird> b and a and all the args are evaluated
21:57:12 <ehird> so
21:57:16 <ehird> that's not a special case
21:57:16 <ehird> but
21:57:18 <ehird> (a b ...) is like
21:57:21 <oklopol> i do understand it already, it's just i don't see why you're making the distinction between calling and message passing, i'm assuming message passing is for objects, but you said it's not like that
21:57:26 <oklopol> so i'm assuming you just do it for fun?
21:57:27 <ehird> b.sent('a', ...)
21:57:32 <ehird> oklopol: I SAID FORGET ABOUT FUNCTIONS
21:57:36 <oklopol> k
21:57:40 <ehird> until you stop talking about functions i can't explain it properly
21:57:46 <ehird> now do you get the evaluation strategy so far, oklopol?
21:57:53 <ehird> you just send something a message.
21:58:07 <ehird> now, that's just things getting a name and some stuff and doing some stuff.
21:58:14 <ehird> oklopol: important - THEY DON'T HAVE LEXICAL CLOSURE
21:58:20 <ehird> because there's no concept of closure
21:58:21 <ehird> or body
21:58:24 <ehird> or anything
21:58:25 <ehird> they're opaque
21:58:46 <ehird> oklopol: now, say we want functions -- which are things which remember their env as a closure, have a func body which is run through, ETC
21:58:49 <oklopol> oh, so that's the difference, why didn't you say so?
21:58:50 <ehird> there's some special syntax
21:58:52 <ehird> {argspec ...}
21:58:54 <ehird> so
21:58:56 <oklopol> different scoping.
21:58:58 <ehird> how do we represent that as a receiver?
21:59:00 <ehird> oklopol: URHGHGHGGHHGHGHGHg
21:59:02 <ehird> NO!!!!!!!
21:59:05 <oklopol> k
21:59:08 * ehird bangs head against wall
21:59:10 <oklopol> anuway
21:59:19 <ehird> oklopol: receivers and functions HAVE ABSOLUTELY NO RELATION WHATSOEVER
21:59:29 <oklopol> ehird: (a b ...) means 'send the message b to a, with the arguments ....' <<< i thought a is called with ('apply', [b ...])
21:59:45 <ehird> oklopol: FORGETABOUTGODDAMNFUNCTIONSJESUSCHRIST
21:59:49 <ehird> FORGETABOUTFUNCTIONSFORGETABOUTFUNCTIONSFORGETABOUTFUNCTIONSFORGETABOUTFUNCTIONSFORGETABOUTFUNCTIONSFORGETABOUTFUNCTIONSFORGETABOUTFUNCTIONSFORGETABOUTFUNCTIONSFORGETABOUTFUNCTIONSFORGETABOUTFUNCTIONS
22:00:09 <oklopol> k
22:00:28 <ehird> oklopol: okay
22:00:28 <ehird> now
22:00:34 <ehird> forget everything i've said about the application
22:00:34 <ehird> and
22:00:36 <ehird> (a b ...)
22:00:37 <ehird> this means
22:00:52 <ehird> 'x = evaluate a; y = evaluate b; evaluate all of ...'
22:01:00 <ehird> 'send y to x with the arguments ...'
22:01:04 -!- Judofyr has quit (Read error: 110 (Connection timed out)).
22:01:09 <oklopol> k
22:01:12 <ehird> oklopol: the ONLY propery about x is that it'll happily take a message name and some arguments
22:01:14 <ehird> and give you a value
22:01:18 <ehird> *property
22:01:28 <ehird> there's nothing relating to function bodies, scoping... ANYTHING specified in it
22:01:30 <ehird> ok?
22:01:33 <oklopol> k
22:01:40 <ehird> now, let's say that we want functions in this language
22:01:46 <ehird> how will we represent that as a receiver?
22:01:46 <ehird> ah!
22:01:51 <ehird> we could respond to a message like 'apply'
22:01:56 <ehird> and give the function the arguments we get
22:02:01 <ehird> OK.
22:02:08 <ehird> So, now let's say we want to make our own special receivers
22:02:17 <ehird> Hey, we can just pass the message name and arguments to a function!
22:02:25 <ehird> So we need a function that takes a function and gives us a receiver
22:02:30 <ehird> (recv {(message args) ...})
22:02:34 <ehird> oklopol: ok. got it now?
22:03:33 <oklopol> not really
22:03:34 <oklopol> because
22:03:51 <oklopol> ehird: (a b ...) means 'send the message b to a, with the arguments .... <<< i don't see this in code
22:04:05 <ehird> oklopol: elif func.tag() == 'tom':
22:04:06 <ehird> return args[0].sent(func.val, args[1:])
22:04:08 <ehird> then you can't read.
22:04:12 <ehird> (func is a bad name)
22:04:16 <ehird> (func is just the first argument, evaluated)
22:04:27 <oklopol> umm
22:04:33 <oklopol> doesn't that send the message a to b?
22:04:35 -!- Judofyr has joined.
22:04:57 <ehird> oklopol: func is the first argument
22:04:59 <ehird> (a b c)
22:05:02 <ehird> func = a, evaluated
22:05:06 <ehird> args = [b,c] evaluated
22:05:23 <oklopol> so a is sent to b, with arg c?
22:05:47 <ehird> oklopol: no
22:05:48 <ehird> with args [c]
22:05:53 <ehird> (a b c d) would be with args [c,d]
22:06:03 <oklopol> that's not the point
22:06:13 <oklopol> ehird: (a b ...) means 'send the message b to a, with the arguments .... <<< so you mixed a and b?
22:06:22 <ehird> oklopol: yes
22:06:23 <ehird> yes i did
22:06:25 <ehird> :p
22:06:44 <oklopol> okay, well, you didn't provide me any new information, but you did confuse me a bit.
22:06:49 <oklopol> i get it all now
22:06:53 <ehird> oklopol: yayyy :P
22:07:03 <ehird> now do you see that this lang != ot--
22:07:03 <ehird> :P
22:07:12 <oklopol> sure
22:07:13 <oklopol> now
22:07:44 <oklopol> what i was originally trying to ask
22:07:44 <oklopol> is
22:07:55 <oklopol> hmm
22:08:55 <oklopol> it was "why do you separate between a receiver and a function, why not just have a function?"
22:09:05 <oklopol> both take a list of args, and return a result
22:09:22 <oklopol> but, scoping makes a difference
22:09:34 <ehird> oklopol: looks like you didn't read what i said!
22:09:37 <oklopol> i did get it, it's just i didn't see what the use was.
22:09:39 <ehird> scoping isn't ASKJDHJKASDHKLSJDH relevant
22:09:41 <ehird> asdjoiasdjoidfujoidsfgjsiofgjsofgijsodig
22:09:44 <oklopol> sure is
22:09:46 <ehird> SCOPING IS JUST NOT ANYTING IN IT
22:09:48 <ehird> goddamn it
22:09:54 <oklopol> :)
22:09:57 <ehird> this is such a bunch of crap, i've explained it so many god damn times
22:10:01 <ehird> and you haven't listened once
22:10:03 <oklopol> heh
22:10:08 <oklopol> i have understood it all along
22:10:15 <ehird> no
22:10:17 <ehird> you haven't
22:10:21 <ehird> <oklopol> it was "why do you separate between a receiver and a function, why not just have a function?"
22:10:21 <ehird> <oklopol> both take a list of args, and return a result
22:10:21 <ehird> <oklopol> but, scoping makes a difference
22:10:22 <ehird> that shows it
22:11:18 <oklopol> asd.
22:11:46 <ihope> It sounds like you've been misunderstanding each other for over an hour.
22:11:54 <ehird> ihope: tell me about it
22:13:42 <ihope> What are you talking about, anyway?
22:14:13 <oklopol> ehird's language
22:14:51 <ehird> back in ~30m
22:17:03 <oklopol> i'm pretty sure the fact a function only takes "apply" as the first arg separates whatever conceptual functions you have into two groups, ones that are called (func arg ...) and (atom receiver arg ...), i just don't see what the reason is.
22:17:38 <oklopol> receiver can also be called as (receiver arg ...), in which case it is told with the "apply" atom that it is used as a function
22:17:46 <oklopol> not a message-receiver
22:17:56 <oklopol> but, you haven't said why, that's all i've been asking
22:19:01 <oklopol> anyway, i'm off to sleep, i'll read the spec if you finish this, so i can explain to you why you did all this.
22:19:02 <oklopol> ->
22:21:17 -!- Judofyr_ has quit (Read error: 110 (Connection timed out)).
22:22:25 -!- Iskr has quit ("Leaving").
22:24:39 <oklopol> meh as if i could sleep after being told i still don't get it
22:25:41 <oklopol> i guess i have to read the code
22:27:51 -!- Judofyr_ has joined.
22:29:51 <oklopol> perhaps you think i didn't understand that a function is a special case of a receiver, because i asked why you had both? i was just wondering why not have a function be a normal receiver.
22:33:39 <oklopol> in case the second sentence showed i didn't get it, why exactly? "both take a list of args, and return a result" isn't this entirely true? first takes the list [atom args], second takes just args, if the atom is "apply", otherwise fails
22:33:45 <oklopol> but they are both conceptually functions.
22:33:49 <oklopol> they take stuff, and return stuff
22:35:22 <oklopol> "scoping makes a difference" <<< this was the only thing resembling an explanation, i first assumed it might be you wanted receivers to be more like objects, and conceptually differentiate between them and functions... but apparently that was completely wrong too
22:35:53 <oklopol> 23:55… oklopol: i'm assuming these method-call like things where you send the atom name and args separately are used for making objects?
22:35:54 <oklopol> 23:55… ehird: :)
22:35:59 <oklopol> actually, you didn't say no
22:36:01 <oklopol> :)
22:38:03 <oklopol> dunno, hopefully you return soon, and are willing to explain this to me all night long
22:39:40 <ihope> Yeah, looks like a function is a type of receiver, and functions and receivers are effectively the same thing.
22:39:49 <oklopol> yes.
22:40:10 <oklopol> but apparently, saying so shows one has no idea how all this works.
22:40:46 <ihope> If you can transform a function that does a certain thing when called with certain arguments into a receiver that does the same thing when sent the same arguments, and vice versa, and it doesn't look all cluttered, functions and receivers are the same thing.
22:41:00 <oklopol> yes, exactly.
22:41:16 <ihope> If there is a difference, it will be difficult to express one or the other, and ehird will be able to give you an example of it.
22:41:23 * ihope shrugs
22:41:41 <ihope> I said that he was able, not that he should.
22:41:41 -!- oerjan has joined.
22:42:05 <oklopol> well, took me ten minutes to get the fact a list can be a receiver out of him.
22:42:23 <oklopol> this might be a bit harder
22:43:21 <ihope> Do you really want to know, if you have to do that to find out?
22:43:34 <oklopol> i cannot sleep if i don't know.
22:43:38 <oklopol> really.
22:44:05 <oklopol> i have my reasons for not being all that good at leaving irc.
22:44:07 <ihope> He said to read the code, yes? Where is the code?
22:44:14 <oklopol> http://www.vjn.fi/pb/p463212552.txt
22:44:33 -!- Judofyr has quit (Read error: 110 (Connection timed out)).
22:48:38 <ihope> There's a thing called an Obj, and it has a val that's set when created, and I assume that __repr__ and __str__ are just for display and all, and its tag is 'obj', and it can't be eval'd, and I'll get to _oppy later, and if you try to send it a message, you get an "unhandled message" error.
22:49:53 <oklopol> yeah
22:50:37 <ihope> When you _oppy an object, its value and the first argument are "added", then self.__class__(the "sum") is sent the message with the rest of the arguments.
22:50:45 <ihope> What's __class__?
22:51:26 <oklopol> containing class
22:51:28 <oklopol> i mean
22:51:35 <oklopol> the class the object is instance of
22:52:15 <ehird> Back
22:52:28 <ihope> ehird: what does op() do?
22:52:29 <oklopol> basically, that call to it is changing the primitive object back into an object of ehird's creation
22:52:37 <ehird> receiver can also be called as (receiver arg ...), in which case it is told with the "apply" atom that it is used as a function
22:52:38 <ehird> nope
22:52:42 <ehird> that only applies if it is actually a real function
22:53:06 <oklopol> aha
22:53:07 <oklopol> so
22:53:36 <oklopol> you have a clear distinction between receiver and function, yet both these are conceptually functions, and yet you don't have two kinds of conceptual functions?
22:53:37 <ihope> Oh, it's an argument.
22:54:13 <ehird> oklopol: they're nt both conceptually functions
22:54:14 <ehird> :)
22:54:22 <ehird> ihope: oppy is quite complex
22:54:25 <ehird> if you are a number 1
22:54:27 <ehird> and you're told to '+'
22:54:29 <ehird> with [2,3,4]
22:54:31 <oklopol> ihope: oppy does exactly what you said
22:54:32 <ehird> then
22:54:34 <ehird> the underlying function
22:54:36 <ehird> is basically
22:54:37 <ehird> lambda x,y: x=y
22:54:38 <ehird> err
22:54:39 <ehird> x+y
22:54:40 <ehird> but
22:54:43 <oklopol> umm
22:54:45 <ehird> the x and y are wrapped in the .vals
22:54:54 <ehird> so _oppy does the unwrapping/rewrapping required
22:54:57 <ehird> and then recurses
22:54:59 <ihope> Must you split your sentences over so many lines?
22:55:00 <ehird> so that you can do variadicness
22:55:06 <ehird> ihope: stream of conciousness. :)
22:55:17 <ehird> my sentences are lazily loaded
22:55:21 <ehird> i write the first part, and then the rest
22:55:25 <ihope> Maybe I should find a way to get my client to concatenate them.
22:55:31 <oklopol> ehird: how is a receiver not conceptually a function?
22:55:39 <ehird> oklopol: it's just ... not :<
22:55:46 <oklopol> you said it takes a message, and an arg, and returns something
22:55:53 <oklopol> then it is a function.
22:55:55 <ehird> they're just not the asme thing
22:55:55 <ehird> :))
22:55:59 <oklopol> a-ha
22:56:19 <oklopol> if you leave it at that, i'll assume you have no idea yourself, and go to sleep
22:56:24 <ehird> oklopol: nope
22:56:24 <ehird> i do
22:56:24 <oklopol> is that case?
22:56:26 <oklopol> *the
22:56:28 <ehird> i've tried to explain
22:56:29 <oklopol> okay.
22:56:31 <ehird> apparently my methods of explanation suck
22:56:42 <ehird> ihope: anyway oppy is just an internal helper
22:56:44 <ehird> ergo the unerscore
22:56:45 <ehird> *under
22:56:58 <ihope> So you _oppy stuff with an operation, and when you _oppy a vanilla Obj, the operation is performed on the Obj and the first argument, and then... yeah.
22:57:10 <oklopol> ehird: it is fairly easy to tell me why it's not a function, just tell me what separates it from a function
22:57:11 <ehird> ihope: on the obj's VALUE
22:57:15 <ehird> and the first arguments value
22:57:25 <ehird> it unwraps the values, passes it to the operation, wraps it again
22:57:34 <ehird> and then that wrapped thing is told to do the same thing with the rest of the args
22:57:35 <oklopol> if the only difference is name, then you don't know what "conceptual" means
22:57:42 <ehird> oklopol: it's hard to explain!
22:57:56 <oklopol> okay.
22:57:59 <ihope> Oh, I see.
22:58:27 <ehird> ihope: so
22:58:29 <ehird> (+ 1 2 3)
22:58:30 <oklopol> ihope: how did you not get that, you explained it earlier in your own words?
22:58:33 <ehird> 1 is told to + with [2,3]
22:58:38 <ehird> so we unwrap the python int inside the 1 object
22:58:40 <ehird> same with 2
22:58:43 <ehird> and pass it to the python-int-adder
22:58:44 <ihope> oklopol: I didn't know what op was, I suppose.
22:58:48 <ehird> then wrap it into a number object again
22:58:52 <ehird> and we have 3
22:58:55 <ehird> so we tell 3 to + with [3]
22:59:01 <ehird> and it does the same thing, but then we run out of args
22:59:03 <ehird> so we stop
22:59:34 <oklopol> well, you did say it's used to make a sum, perhaps you didn't know the sum was made with folding the lambda
22:59:46 <ehird> oklopol: it's kinda folding yeah
22:59:55 <ehird> but it's used for variadic division too
23:00:01 <ehird> and variadic list concatenation
23:00:16 <oklopol> ...so not folding, or not sum?
23:00:24 <ehird> uhhh
23:00:55 <ihope> If you send + with no arguments to a number, you get the number; if you send - with no arguments to a number, you get its opposite. If you send an arithmetic operation with arguments to a number, you get fancy folding.
23:01:12 <ihope> Left-associative folding, I assume.
23:01:13 <oklopol> ihope: exactly
23:01:20 <oklopol> yeah
23:01:21 <ehird> ihope: it's just so (+ 1 2 3) works
23:01:24 <ehird> you could make it do
23:01:29 <ehird> Num(self.val + args[0].val)
23:01:34 <ehird> but that wouldn't be as nice
23:01:59 <oklopol> ehird: how is a receiver conceptually not a function??
23:02:01 <ihope> And now you have Toms, which are cute, I guess.
23:02:13 <ehird> ihope: Toms are atoms
23:02:15 <ehird> just names
23:02:18 <ehird> 'A tom'
23:02:51 <ihope> Hmm, that's nice.
23:03:30 <ihope> And that link, http://www.vjn.fi/pb/p463212552.txt, is all there is to it?
23:04:02 <ehird> ihope: It needs primitives, more messages, and a parser!
23:04:03 <ehird> But yes.
23:04:05 <ehird> That's all there is to it.
23:04:30 <ihope> And Toms are applicable.
23:04:57 -!- Judofyr has joined.
23:05:03 <ihope> Hmm, are Koeds the result of parsing stuff like (+ 1 2 3)?
23:05:18 <ihope> Does sound like "code".
23:05:32 <oklopol> it means code
23:06:33 <ehird> ihope: Toms are only applicable because they're what we send off to receivers
23:06:33 <ehird> :P
23:06:41 <ehird> Koed is "code", yeah.
23:06:46 <ehird> Just like skoep is the skope
23:06:47 <ehird> *scope
23:06:53 <ihope> And if you send apply to a Func, something I didn't feel like reading happens. I presume the Func is applied.
23:07:03 <ihope> Oh, scope. Cool.
23:08:28 <ihope> And Prim is some wacky little thing.
23:08:48 <ehird> ihope: Prim is for primitive functions.
23:08:59 <ehird> Builtins, if you will.
23:09:08 <oklopol> ehird: how is a receiver conceptually not a function??
23:09:17 <ehird> oklopol: how is a receiver conceptually not a function??
23:09:37 <ihope> So yeah, everything's a receiver, and receivers are an odd way of making (+ 1 2 3)... do what it does.
23:10:03 <oklopol> ehird: asking me?
23:10:09 <ihope> I don't see why you send 1 the message + with the arguments 2 and 3 rather than calling + with the arguments 1, 2 and 3, but I guess skoep has something to do with it.
23:10:17 -!- Judofyr__ has joined.
23:10:21 <ehird> ihope: Because ... that would just be functions.
23:10:23 <ihope> So all three of us are right. Happy ending!
23:10:47 <oklopol> ihope: that's the distinction between functions and receivers that no one understands.
23:11:16 <ehird> brb.
23:11:19 <oklopol> :|
23:11:21 <oklopol> oh fuck
23:11:28 <oklopol> i'm not gonna sleep tonight, am i?
23:11:43 <ihope> You can convert a receiver into a function easily enough. I think the set of receivers, though, is finite and unchanging and all.
23:12:22 <oklopol> that would not make them not conceptually functions, though
23:12:32 <ihope> Receivers are conceptually functions.
23:12:35 <oklopol> are they?
23:12:42 <oklopol> ehird has clearly stated they aren't.
23:12:42 <ihope> From my reading of it, yes.
23:12:54 <oklopol> should i assume he's *wrong*, and go to sleep?
23:13:01 <ihope> Well, when you see (+ 1 2 3) and are told that it adds 1, 2 and 3, do you think of 1 as being the function here?
23:13:17 <ihope> It's the receiver, because ehird wanted it to be implemented that way for some reason.
23:13:30 <oklopol> well i know that, the idea is from oklotalk
23:13:55 <oklopol> but, conceptually, a function takes something, and returns something, ehird says receivers aren't conceptually functions, yet do exactly this
23:14:02 <oklopol> i find this a bit weird.
23:14:15 <ihope> I think how in (+ 1 2 3), 1 doesn't seem like a function is the limit to how receivers aren't conceptually functions.
23:14:46 <ihope> If that 1 isn't "conceptually" a function, receivers aren't "conceptually" functions. If that 1 is "conceptually" a function, receivers are "conceptually" functions.
23:14:57 <oklopol> :)
23:16:43 <oklopol> so basically, receivers and functions are separate in that receivers are *objects*, they take a method name, the atom, and dispatch primarily on that
23:17:02 <oklopol> still function.
23:17:16 <ehird> back
23:17:23 <oklopol> all i've been asking is "why the distinction?"
23:17:36 <oklopol> "no specific reason" is fine
23:17:43 <oklopol> but "you just don't get it, idiot" is not.
23:17:46 <ihope> Well, there is kind of a reason.
23:17:58 <ehird> wellll
23:18:03 <ehird> it's just like how oko can't be explained
23:18:06 <ihope> 1, treated as a receiver, is what it is. 1, treated as a function, is junk.
23:18:07 <ehird> apparently when you explain it
23:18:09 <ehird> nobody understands :)
23:18:37 <ihope> A function, when treated as a receiver, needs "apply" to do anything meaningful. A function, when treated as a function, is just that.
23:19:07 <ihope> "Hi! Do you want me to be a number or a function today?"
23:19:38 <ihope> The message you're sending: "Be a function. Take these arguments."
23:19:38 <ehird> Wellll no ihope
23:19:39 <oklopol> so basically, receivers are objects, that's what objects are, functions that are used as data, and who are always called with an atom as the "message"
23:19:43 <ehird> A function is just a receiver
23:19:51 <ehird> with some sugar for sending a certain message - apply
23:19:52 <ihope> oklopol: sounds about right.
23:20:10 <oklopol> in my opinion too, but ehird hasn't said that, so i'm assuming it's wrong
23:20:22 <ihope> oklopol: well, I agree with you.
23:20:42 <ihope> It sounds like ehird is trying to convince you that his way of looking at it is the correct one.
23:20:45 <oklopol> and even if they were, if the object 1 has an input->output interface with no side-effects, it is a function, conceptually.
23:20:52 <ihope> Yeah.
23:21:50 <ehird> Conceptual example: a number should be a receiver, but the identity function a..well,function
23:21:56 -!- Judofyr_ has quit (Success).
23:22:24 <ihope> So a receiver that returns its message is impossible?
23:22:38 <ihope> Or just discouraged?
23:23:06 <ihope> If it's impossible, I assume that's because messages aren't objects.
23:23:14 <oklopol> ehird: distinction between data and functions, no problem, except 1 still has a function interface, right?
23:23:28 <ehird> <ihope> So a receiver that returns its message is impossible?
23:23:30 <ehird> not impossible
23:23:37 <ehird> but .... nonsensical
23:23:45 <ehird> oklopol: no
23:23:47 <ehird> 1 is only a receiver
23:24:51 <oklopol> people should, by convention, use receivers for data and functions for functions, but they are jsut two types of functions called differently?
23:24:56 <oklopol> *just
23:26:31 <ehird> nooooot really ... i mean everything is a func [see LC]
23:26:50 <oklopol> everything is not a function. you've said receivers aren't functions
23:27:00 <ehird> oklopol: everything in the world is a function
23:27:02 -!- Judofyr has quit (Read error: 110 (Connection timed out)).
23:27:03 <ehird> the lambda calculus proved this
23:27:04 <oklopol> ehird: no
23:27:19 <ehird> there is nothing in any TC language you cannot express as a function.
23:27:38 <oklopol> ...so everything in the world is a function?
23:27:48 <oklopol> so, everything in the world is an iota combinator?
23:27:54 <ehird> oklopol: yes
23:28:10 <oklopol> a-ha
23:28:32 <oklopol> a function is a set of pairs (a, b), where no two pairs exist with the same a
23:28:44 <oklopol> and you use it by giving it an a and getting a b out
23:28:49 <ehird> oklopol: btw - how do you have a zeroadic message?
23:28:51 <ehird> (a)
23:28:53 <ehird> a can only be a function
23:28:57 <ehird> because there's nothing to send a to
23:29:22 <oklopol> then it's a function with just the one pair (() result)
23:29:44 <ehird> oklopol: but it can't be a messagesend to a receiver
23:29:56 <ehird> so recv sends != funcalls
23:29:59 <ehird> Q.E.D.
23:30:23 <oklopol> (IO a, IO b) pairs if you have side-effects, no prob for functions
23:30:29 <oklopol> IO being the state of the world
23:30:55 <oklopol> just different definitino of function
23:30:57 <oklopol> *definition
23:31:00 <oklopol> well
23:31:09 <oklopol> with that IO thing, same definition, ofc
23:31:40 <oklopol> ehird: that is a syntactic thing
23:31:46 <oklopol> (a) can mean "send nothing to a"
23:31:58 <ehird> nope, message comes first oklopol
23:32:15 <ehird> and 'nothing' cant be sent
23:32:24 <oklopol> well, they already had syntactic differences
23:32:29 <oklopol> how the fuck does this change anything?
23:33:19 <ihope> oklopol: I advise you to stop listening to ehird.
23:33:29 <ehird> ihope: :(
23:33:35 <oklopol> ihope: that might be good for my mental health
23:34:12 <oklopol> unfortunately my mental health is already in bad enough shape for me to be quite unable to do that.
23:34:19 <oklopol> err
23:34:32 <oklopol> negate that once, in an appropriate way.
23:34:45 <oklopol> eh
23:34:47 <oklopol> donät
23:34:50 <oklopol> god i'm tired
23:34:56 <oklopol> perhaps it's time to do a sleep
23:34:56 <ihope> oklopol: what would happen if you just went to bed?
23:35:29 <oklopol> well, right now, i prolly would fall asleep.
23:35:41 <oklopol> i'm starting to feel i *did* get it all along
23:35:43 <ihope> Sleep, then; you're tired. :-)
23:35:48 <ihope> I think you're right.
23:35:56 <oklopol> is that a direct order?
23:36:11 <ihope> It is.
23:36:19 <oklopol> well, i don't really have a choice then!
23:36:21 <oklopol> nighty nigt!
23:36:24 <oklopol> *night
23:36:25 <oklopol> ->
23:36:26 <ihope> So if you don't get to bed, fancy serotonin things will yell at you.
23:36:29 <ihope> Good night :-)
23:46:20 <oklopol> no way i'm gonna fall asleep :P i really should see a shrink or something, perhaps time to continue my reading
23:47:54 -!- evincarofautumn has joined.
23:48:24 <oklopol> evincarofautumn: i hate you! (but don't worry, it's not real hate)
23:48:25 <evincarofautumn> Hello all.
23:48:29 <oklopol> i mean
23:48:31 <evincarofautumn> Dang.
23:48:34 <oklopol> recall that attractor idea
23:48:40 <evincarofautumn> Best. Greeting. Ever.
23:48:43 <oklopol> :)
23:48:43 <evincarofautumn> Ha!
23:48:45 <evincarofautumn> No way.
23:48:50 <evincarofautumn> I've already started a spec.
23:49:01 <evincarofautumn> And I'm doing a reference interpreter in--
23:49:03 <evincarofautumn> get this
23:49:07 <evincarofautumn> --QuickBASIC.
23:49:09 <evincarofautumn> Yes sir.
23:49:14 <evincarofautumn> I feel like abusing myself.
23:49:15 <RodgerTheGreat> hoorays
23:49:18 <evincarofautumn> And others, matter of fact.
23:49:30 <ehird> evincarofautumn: Wow -- you split sentences up MORE THAN ME!
23:49:31 <oklopol> well, my idea was about graphs... but the concept of a moving attractor was gotten from you :D
23:49:41 <oklopol> qbasic <3
23:49:58 <oklopol> well not moving, perhaps more like jumping
23:50:06 <evincarofautumn> ehird--We make eso langs. We should have eso speech.
23:50:34 <ehird> evincarofautumn: I quite like the Queen's English, thanks.
23:50:57 <oklopol> i've made a few esoteric natural language stubs
23:51:01 <oklopol> conlang
23:51:58 <evincarofautumn> Conlangs are great.
23:52:09 <evincarofautumn> I was working on an ideographic system for English recently.
23:52:14 <evincarofautumn> Worst idea ever, I might add.
23:52:18 <evincarofautumn> It's just not built for it.
23:53:21 <oklopol> ideographic = phonetic?
23:53:23 <oklopol> wuzzit
23:54:08 <oklopol> how did you do that attractor thing btw, what path is used to get to the attractor?
23:54:10 <evincarofautumn> each character represents an idea, carrying with it one or more pronunciations.
23:54:15 <evincarofautumn> Like...japanese kanji.
23:54:18 <oklopol> oh.
23:54:23 <oklopol> i see, i see
23:54:30 <evincarofautumn> oklopol--Oh, it just increments the x and y each execution frame.
23:55:01 <evincarofautumn> ...Or decrements, as the case may be.
23:55:09 <oklopol> okay, so first diagonally, then horizontall-/vertically
23:56:03 <evincarofautumn> Um...no?
23:56:14 <oklopol> i found all possible movement in n dimensions a bit clumsy, except for real numbers, for which it's just too hard, so i went for graphs
23:56:17 <oklopol> no?
23:56:29 <evincarofautumn> x and y movement are independent...
23:56:37 <oklopol> hmm
23:56:42 <oklopol> let me get this straight
23:56:49 <oklopol> there's a set number of dimensinos
23:56:53 <oklopol> dimensions
23:57:10 <oklopol> and, each point is identified by a vector giving coordinates
23:57:16 <evincarofautumn> if attractor-x > thread-x then thread-x++
23:57:21 <evincarofautumn> That kind of thing.
23:57:21 <evincarofautumn> Yessir.
23:57:28 <oklopol> and there are attractors
23:57:29 -!- Judofyr has joined.
23:57:49 <oklopol> and there are turtles
23:57:52 <oklopol> moving towards them
23:58:11 <evincarofautumn> Yep. When a turtle walks over a command character, it executes it.
23:58:15 <oklopol> okay.
23:58:16 <oklopol> so
23:58:24 <oklopol> let's say the turtle is at (0, 0)
23:58:31 <oklopol> and the attractor is at (5, 10)
23:58:35 <oklopol> what would the turte do?
23:58:39 <oklopol> *turtle
23:59:19 <oklopol> move first through n in [1..5]: (n, n)
23:59:21 <oklopol> then
23:59:28 <oklopol> (5, [6, 10])
23:59:30 <oklopol> err
23:59:35 <oklopol> (5, [6...10])
23:59:48 <oklopol> n in [6...10]: (5, n) in my earlier notation
←2008-04-25 2008-04-26 2008-04-27→ ↑2008 ↑all