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