00:09:55 -!- pikhq has quit (Read error: 110 (Connection timed out)). 00:16:28 -!- pikhq has joined. 00:26:21 pikhq, how would you react if I said that I was scrapping PSOX? 00:26:56 That depends: why are you scrapping PSOX? 00:27:03 Something better, or just fed up? 00:27:20 pikhq, I'm not. I just want to know how you'd react >.> 00:27:25 Ah. 00:27:39 I'd appreciate it if you're moving on to something better. 00:27:43 -!- jix has joined. 00:27:51 Be a bit annoyed if it was just you being fed up. 00:28:00 And pissed off if you were selling it to Microsoft. :p 00:28:04 lol 00:28:18 * Sgeo is getting fed up with PSOX File Descriptors, tbh 00:29:20 Also, I don't know what license to put it under, but that's not too relevent right now 00:29:48 Maybe MIT? 00:29:49 GPL. 00:30:13 All this license stuff just goes over my head 00:30:36 I'm a programmer, not a lawyer, dangit! 00:30:43 >.> 00:31:37 Just GPL it. 00:32:07 pikhq, also, can you help make the file descriptor stuff sane? 00:33:03 http://trac2.assembla.com/psox/browser/trunk/spec/psox.txt 00:40:22 grr I don't know how to implement the input pseudodomain 00:40:37 hm, n/m maybe 00:42:54 I think I can do this 00:45:00 "EOF status is 0x01 if there was no EOF encountered, 0x00 if there was an EOF" 00:45:04 Should I reverse that? 00:45:09 n/m 00:54:25 Ok, I finished db_input.py 00:54:41 Almost 00:56:34 pikhq, look at this horribleness 00:56:34 http://trac2.assembla.com/psox/browser/trunk/impl/psox/db_input.py 01:08:47 pikhq, you awake? Or at least capable of typing in your sleep? >.> lol 01:09:35 Heh. 01:10:36 Hrm. 01:14:07 -!- UnrelatedToQaz has joined. 01:14:11 hey all 01:15:07 Hi UnrelatedToQaz 01:18:50 -!- calamari has quit ("Leaving"). 01:27:45 * oerjan wonders who Qaz is 01:31:16 Well, not that guy. 01:32:13 I don't know who he is 01:32:22 I just know that I'm unrelated to him. 01:32:30 Or her or it. 01:32:39 ic 01:33:03 What if he's your long lost twin? 01:33:35 He can't be, as that would mean s/he was related to me. And s/he isn't. 01:33:47 Well, that's why I said "lost". 01:34:36 But it's the definition of Qazness that I am unrelated to Qaz. If a claimant to the title of Qaz was related to me, they couldn't be Qaz. 01:34:39 Uc? 01:36:24 I see 01:37:24 * oerjan found a Qaz computer virus or something when googling 01:37:47 good you're not related :) 01:39:41 I think I've figured out my knot programming language, slightly. 01:39:59 Oh? 01:40:03 "Knot" meaning "link of unknots", which really isn't a knot at all. 01:40:20 Elucidate, if you would. 01:40:47 Though I guess they wouldn't have to be unknots... anyway, I guess ponderings are required. 01:41:39 Ponder away thn! 01:43:19 First, the unknots-only version, I guess. 01:44:10 Memory consists of a single link. The only operation I can really think of right now is destroying one knot. 01:45:34 Every knot in the link is oriented. 01:46:25 "Reading" a knot consists of grabbing a list of all knots which must "go through" the knot and which direction they go through. 01:47:00 Going through a knot is defined as crossing a Seifert surface of the knot. I guess that means that "must go through" would be crossing all Seifert surfaces of the knot. 01:47:57 i hope i'm not the only one who doesn't know what seifert surface is and will not google. 01:48:03 because you'll have to explain. 01:48:16 and i need coke 01:48:19 What, doesn't everybody automatically know what a Seifert surface is? :-P 01:48:25 oklopol: he's not :D 01:48:32 A Seifert surface is just any surface whose boundary is the knot. 01:49:28 Stick a knot in bubble solution and hopefully you'll end up with one of its Seifert surfaces. :-) 01:49:43 are we talking about the same kind of knots? 01:49:47 So "crossing a Seifert surface" basically means "going through the knot". 01:50:09 Yes. 01:50:20 Me or oklopol> 01:50:33 As in yes to Unrelated, possibly not to oklopol. 01:50:45 well - anything must probably cross _some_ seifert surface 01:50:56 are knots the stuff that you do with rope :) 01:51:01 Is this "knot" as in "thing tied in string, rope, flax or hemp"? 01:51:08 Indeed, but it's harder to cross all Seifert surfaces. 01:51:23 This is a knot: http://en.wikipedia.org/wiki/Image:ThreeFoldKnot.jpg 01:52:05 a knot is an embedding of a topological circle in R3, iirc 01:52:10 Ah, that sort of knot. As in knot theory knots. 01:52:17 Yes yes. 01:52:26 graphica with the possibility to specify how the nodes are connected! 01:52:28 knottica 01:52:33 ...or, a better name. 01:52:47 Why would I be speaking of Seifert surfaces of actual knots? :-P 01:54:02 "Knot another knot language" 01:54:56 So, once you've read your knot...? 01:55:17 Profits! 01:55:21 Yeah, that. 01:55:37 ohh... the seifert surface is the 2d surface of the knot there? 01:56:16 i assumed you'd think of knots are a logical structure rather than a presentation of the rope's surface... 01:56:23 unless i'm wrong and that's true. 01:56:32 in which case i'd also be right. 01:57:02 A Seifert surface isn't the surface of a torus that's tied in a knot. 01:57:25 This is a Seifert surface, though it's a Seifert surface of an entire link: http://en.wikipedia.org/wiki/Image:Moebiusband_wikipedia.png 01:58:16 WIKIPEDIAAAAA 01:58:22 This is just silly. 02:00:25 A trefoil knot's Seifert surface: http://www.josleys.com/show_gallery.php?galid=303 02:01:48 And that Seifert surface has a hole in it, so I guess you can pass another knot through that hole and it wouldn't really be going through the trefoil knot, kind of. 02:03:12 asdf, why can't i even get anything without inventing it myself :-) 02:03:49 *ever 02:05:04 seifert surface is a *surface* though? it's a 2d (or other) plane? 02:05:24 surface = 2d but may be curved 02:05:34 e.g. a sphere 02:05:52 right 02:22:40 Hmm, I just got another idea. 02:22:58 a surface is like a manifold, right? 02:23:08 Yes. 02:23:10 Instead of just a link, you have a bunch of oriented "strands" which can be open or closed. If they're closed, they 02:23:21 Although there's surfaces which aren't manifolds. 02:23:45 If they're closed, they're just knots, but if they're open, they begin and end at surgery points. 02:23:53 -!- jix has quit ("CommandQ"). 02:24:08 Surgery...that sounds familiar. 02:24:30 It's a topology thing, right? Cutting and stitching. 02:24:50 A surgery point has two "in" slots and two "out" slots, and each may or may not be filled. If all of them are filled, the surgery point can be replaced by a crossover in either direction or... um, lemme get a picture. 02:25:03 Removing a section of something and replacing it with something that... fits. 02:25:54 -!- Jontte has quit ("Konversation terminated!"). 02:25:58 Think of surgery points as the yellow things under this section: http://en.wikipedia.org/wiki/Knot_theory#Knot_polynomials 02:29:57 So I guess you can create surgery points in random places, and you can create strands going between them, and you can delete the surgery points to connect the strands. 02:30:29 I guess more pondering will definitely be required before I can turn this into a language, eh? 02:31:27 Well, at least I don't have any clue of how to do it! 02:32:19 i wonder if you could make a borromean ring with any number of rings... 02:32:31 i smell awesome kinetic experiment 02:32:56 I'm pretty sure you can. 02:33:10 not sure whether you can make a chain reaction out of that 02:33:23 Wikipedia is nice, isn't it? http://en.wikipedia.org/wiki/Brunnian_link 02:34:00 hehe 02:34:11 i suppose the chain reaction thing depends on how tight they are 02:34:14 whoa, deja vu 02:34:49 i'm currently playing with continuations trying to make subtle cough tc, or at least more powerful, by creating new kinds of continuations 02:35:19 i'm gonna call it supercough if i find something interesting, i'm just that lame :-) 02:35:59 http://www.google.com/search?q=supercough... >:-) 02:36:58 Oh yips, continuations. Fancy basing a language on the only Unlambda primitive I don't understand... 02:37:45 UnrelatedToQaz: it's easy 02:38:00 it's just never made that explicit... 02:39:39 my way to get it was to make a new notation for it and play with unlambda a bit 02:39:45 Finally, my FTP works again. 02:39:46 as you do 02:40:05 http://membres.lycos.fr/bewulf/Russell/BRAINFUCK%20INTERPRETER%20ON%20A%20ONE.htm 02:40:08 although, like always, i had to guess how it might work before i understood it 02:40:37 luckily, everything that is in any way meaningful seems to be inventable in a few hours of thinking 02:40:52 i mean, the simple kind of stuff :) 02:41:59 Hmm...let's see... 02:42:14 So a continuation is a way of storing the current state of a program? 02:42:18 yes 02:43:14 i used a notation for a continuation, where i actually took the whole program and put it in braces with * where the value would be returned 02:43:43 need to see the whole state at once, or it feels too magical to be understandable 02:44:12 like ``cc`cc, the first `cc is evaluated first to make ``c{`*`cc}`cc 02:44:42 the current continuation is the place where c was called, with the knowledge about where to return if the continuation is called. 02:45:08 It's like going back in time, then? 02:45:53 kinda. but using my notation (or some other that turns it into simple combinatorics..) you can just think of it as string transformations 02:46:30 * oerjan thought it was his notation... 02:46:34 i didn't understand the notation used on the unlambda page, it's prolly much better. 02:46:36 hehe :P 02:46:46 well, it's kinda trivial 02:47:00 i added it to the Unlambda page after all 02:47:01 and * was from the unlambda page notation, which i did not understand. 02:47:06 oh. 02:47:44 in that case i read your notation's description, didn't understand it, and then invented it myself :P 02:48:20 perhaps i subconsciously got it or something, although i myself don't believe in that kinda magic. 02:48:54 incidentally, I'm writing an interpreter for a language of my own 02:49:01 (a parser, more like) 02:49:07 well the * was the important part, at least as i used it in the Subtle Cough page 02:49:10 oerjan: the notation actually shows the whole continuation as a lambda inside the partially evaluated program? 02:49:38 in Perl. Could anyone advise me on how I'd later add - well, modules - to it? 02:50:02 There'd have to be some modification of the actual interpreter, as I see it. 02:50:11 oklopol: um, yes? 02:50:18 well not in lambda notation 02:50:49 can you show me how ``cc`cc evolves? 02:51:08 in your notation... or is that an example on the page :P 02:51:34 i can't find the notation on the page anymore... i kinda suck ;) 02:52:10 yep, on the subtle cough page: 02:52:12 ``cc`cc = `(`*`cc)`cc = `(`*`cc)(`(`*`cc)*) = `(`(`*`cc)*)`cc = `(`*`cc)`cc (circular, because (`(`*`cc)*) = (`*`cc)). 02:52:46 that is using some shortcuts from the others i think 02:52:53 `cc = (*) 02:53:31 hehe 02:53:34 i don't get that :) 02:53:36 ``cc`cc -> ``c{`*`cc}`cc -> `{`*`cc}{`*`cc}`cc -> `{`*`cc}`cc -> ``cc`cc 02:53:38 my version 02:53:51 i'll look more closely, it may be 100% identical 02:54:14 hmm 02:54:16 your 4th step is my second 02:54:27 oh. 02:54:53 "circular, because..." why don't you just evaluate until it becomes the original prog :\ 02:54:58 i mean, ihope 02:55:10 um it never quite does i think... 02:55:21 is my evaluation wrong there? 02:55:50 {...} is a function, that when called, forgets the current context and puts the arg where the * is 02:56:00 i used that to represent a continuation 02:56:02 you are missing the evaluation of the `cc at the end 02:56:27 oh 02:56:35 didn't think it's necessary to do that ;-) 02:56:45 it has to be evaluated before applying the continuation 02:56:55 righties. 02:57:01 i'll try again -> 02:57:29 bye folks 02:57:33 3am :) 02:57:59 -!- UnrelatedToQaz has left (?). 03:01:25 hehe, the only difference was the fact i used {} and you used () then :P 03:02:03 that's what i thought 03:03:25 hm i wonder if it _does_ return properly ever, or if i recall correctly that it somehow grows while staying equivalent 03:03:51 i'll make an interp, and see 03:03:57 that's hell to do by hand. 03:04:16 although, i think it grows infinitely... 03:04:22 had a *feeling* 03:04:46 i'm sure someone here could just *see* it. 03:04:52 * oklopol highlights everyone 03:05:18 we were at `(`(`*`cc)*)`cc before i "cheated" 03:05:39 hey, wait! 03:05:48 -!- ihope has quit (Read error: 110 (Connection timed out)). 03:05:52 = `(`(`*`cc)*)(`(`(`*`cc)*)*) 03:06:22 =`(`*`cc)(`(`(`*`cc)*)*) 03:06:38 = `(`(`(`*`cc)*)*)`cc 03:06:47 right 03:06:58 it seems to grow one extra level per iteration 03:07:02 indeed 03:07:34 but given ø-reduction, it stays the same. 03:07:40 heh :D 03:07:56 ø-reduction? 03:08:13 Slereah: oerjan 03:08:15 "oe" 03:08:39 Heh. 03:08:52 i'm assuming oerjan did the ``cc`cc proof here, even though subtle cough is ihope's, am i correct? 03:09:16 "before i cheated" 03:09:20 i'm such a detective. 03:09:36 http://www.technologyreview.com/printer_friendly_article.aspx?id=19845 03:09:53 (yes, i read the unlambda page; if it was there, lol :)) 03:10:34 yep 03:11:27 actually i think i started with the subtle cough proof and after i finished it i wrote the notation in the unlambda page so others might have a hope of understanding it 03:11:43 ah. 03:12:07 so, ihope comes up with a language, and you ruin it by telling him it only has 3 progs? :) 03:12:08 plus some ideas of how to make the notation more powerful 03:12:15 yeah :D 03:12:23 :P 03:12:56 although, ihope was probably happier with that, than if it would just have been left without any research. 03:13:02 otoh i cannot prove noone else has made such a notation before in the context of lambda calculus with continuations or something 03:13:50 well 03:14:03 considering my notation, i'd say it's not *that* improbable 03:14:34 i first used x 03:14:56 then realized there will always be just one thing arg, since further conts would be nested anyway 03:16:22 * is one of the chars i consider objokenish enough to be used as a value, not an operator. 03:16:46 the other non-ascii chars that have this property are @, and ¤ 03:16:55 i'd seen * on the page, so i used it. 03:17:10 just trying to prove to myself i didn't steal your notation 03:17:18 what's the point? no idea. 03:17:22 i'll continue my prog -> 03:19:24 perhaps the point is i represented it as *my* notation, which is kinda rude :P 03:21:08 "Bad artists copy. Great artists steal." -- Pablo Picasso 03:21:52 "I stand on the shoulders of giants." -- Isaac Newton (paraphrased) 03:22:11 "Sometimes you need to ruin it with something completely random" -- oklopol 03:22:34 "Argle bargle, glop glyf" -- Douglas Adams 03:22:58 Adams' insight never ceases to astound. 03:24:21 "Dragons logically follow evolution, so they would be able to wield metal" -- Kenneth Eng 03:28:06 hm, Zzo38 is also using continuations in his latest. 03:31:51 in the forum or what? 03:33:31 on the wiki 03:36:39 hmm, looks fun 03:42:34 OK, i need to start reading the wiki, that language was actually a mindblowing experience :) 03:44:40 G'night all 03:45:00 Bai. 03:45:15 oerjan: did you mean continuousequation? 03:45:24 or what was "latest" 03:45:34 not that one 03:45:38 thought so 03:45:56 since it doesn't use continuations, just the word continuation 03:45:58 Ctonia 03:46:00 oh 03:46:02 i'll look 03:46:24 but Zzo38 is incredibly prolific... 03:46:28 Why is channel awake NOW, when I need to leave? 03:47:11 It's a secret conspiracy against you. 03:47:25 Don't eat the muffin on your table. 03:47:53 ooh, muffin 03:47:59 right, time for food 03:48:02 -!- Sgeo has quit (Read error: 104 (Connection reset by peer)). 03:48:23 xD 03:48:29 searching for zzo: View (previous 500) (next 500) (20 | 50 | 100 | 250 | 500). 03:48:38 okay, quite prolific 03:48:58 i guess... i didn't actually look what are listed there. 03:49:15 for a second i thought they were just the wiki pages he had authored :P 03:49:26 and actually 03:49:29 seems they are. 03:49:46 hehe 03:50:02 just 30, i just fail to understand the ui on the search page. 03:50:13 Ooooh, he did the Twoducks. 03:50:22 I liek it. 03:51:27 * Slereah tries to make some sort of unlambdaish interpreter on the Love Machine 9000 03:54:16 i've thought about something twoduck'ish... i'm fairly sure all my ideas exist on the esolang wiki already 03:54:22 someday i'll read it. 03:54:24 all of it 03:54:35 Heh. 03:56:27 * Slereah passes his finger over some unlambda expression, thinking "What would Turing do?" 03:57:50 i wonder if twodux has an interp 03:58:10 turing would own us all at esolangs :) 03:58:11 Depends. Do you have a flux capacitator? 03:58:45 he did a lot of code on paper, even a program that played a board game or something, or do i remember totally wrong here? 03:58:59 i wonder if all that code actually works 03:59:27 Well, back then, he couldn't just fire up his computer to try it! 03:59:45 indeed. this is why i wonder 04:00:24 I don't envy Turing and the like. Doing a Turing machine by hand is bothersome. 04:00:31 i mean, i rarely get a program right the first time 04:01:31 doing or running? 04:01:40 can you do them automatically? :-) 04:01:44 Running. 04:02:19 I wonder if he had some tape at home, and wrote symbols on it, while going "beep boop". 04:02:31 hmm... actually, i rarely get a program 100% correct in a normal language, but for some reason esolang programs usually work on the first attempt 04:02:38 most likely because i give it more thought 04:02:51 with python, i just write a few lines of random code every now and then 04:02:55 Lucky you. 04:03:01 I don't have that luck! 04:03:14 and my program is almost ready now even though i've been chatting this whole time :P 04:03:25 What program? 04:03:56 making a subtle cough interp to test my idea 04:04:23 and also perhaps to be able to visualize continuations a bit better in general. 04:15:49 Is an Unlambda combinator always made up of x primitive combinators and x-1 `? 04:16:04 yep 04:21:00 Hm. If I get `iC, can I just erase `i from the tape? 04:21:52 i think so 04:24:09 hmm, d never makes it matter? 04:24:17 i don't know how d works really... 04:24:23 I won't include d. 04:24:28 d matters 04:24:45 d matters, or d makes i matter? 04:24:52 It will probably be pretty much Lazy k with the .x combinator 04:25:21 yay, the interp worked on the first attempt 04:25:32 oh you mean that 04:26:00 no i don't think d affects removing `i 04:26:22 i'm not doing a deepcopy everywhere where i copy the whole program into a continuation... guess i should add that, or i may get something too interesting. 04:26:57 can you sum up d in a sentence so i don't need to open the page again? :P 04:26:58 unlambda has no mutable structures 04:27:04 nope, but python has. 04:27:08 so deep copying is unnecessary 04:27:18 hmm 04:27:51 you see, when i swap '*' inside the continuation 04:28:00 i destroy the whole program, why not? 04:28:05 for an expression `EF if after evaluating E it happens to be d, then F is not evaluated 04:28:06 i actually don't 04:28:46 i see, it will *never* be evaluated, or when it is further applied, like ``d.xi 04:28:59 or what would that do 04:29:18 oh if you implement continuations like that, yes it sounds dangerous 04:29:35 indeed. 04:30:15 i'm implementing them that way because i'm going to extend that a bit 04:30:25 so i actually want the program to be inside the continuation. 04:30:27 ``dFG : first evaluate G e.g. to g. then evaluate `Fg 04:30:33 explicitly 04:31:10 -!- GreaseMonkey has quit ("Welcome to 2008. I will be your tour guide."). 04:31:27 oh, right, it will evaluate the d'd expression once the d expression is further applied, then, like i suggested? 04:31:34 right 04:31:46 okay, then i invented the d combinator. 04:31:48 :) 04:32:02 well, learning is inventing for everyone, i guess 04:32:17 I discovered salt, and invented FM radio. 04:38:42 hehe, quite ironic the first time i actually have a need to use a continuation is when implementing subtle cough :) 04:39:20 well that certainly gives a minimal implementation 04:40:06 The *D* combinator? 04:40:15 oh, i'd never use call/cc for the c combinator 04:40:16 Care to give me a lambda expression of it? 04:40:19 that'd be cheating 04:41:09 IIRC, d isn't really a combinator 04:41:29 that's not what i'd've used it for, just so i could replace the whole program with the contents of the {...} without having to unwind the call stack, if i'm inside another expression when evaluating it 04:41:30 Combinatorial sugar or something! 04:41:39 well, basically the same thing, but less obvious. 04:41:46 "obvious" 04:41:50 asd, whatever 04:42:42 -!- calamari has joined. 04:42:48 * oerjan was going to paste d from unl2caml but it was a bit complicated 04:43:37 what's the lambda expression of c? 04:44:07 well c isn't in lambda calculus either 04:44:48 s,k,i, and v are combinators though 04:45:56 yeah, my point was c and d are called combinators just because it's more convenient than calling them "those things unlambda has that aren't exactly combinators, but you know what i mean" 04:46:15 Heh. 04:46:23 "functions" 04:46:36 ...your mother :) 04:46:40 Aren't combinators functions? 04:46:48 sure 04:47:01 but not all functions are combinators, especially impure ones 04:47:23 What defines impurity? 04:48:08 side effects, non-local control... 04:48:24 non-referential transparency 04:48:28 * Slereah lacks concepts. 04:49:22 pure functions: evaluates a result given arguments, no other effect 04:49:39 giving the same arguments always gives the same result 04:54:08 i'm gonna call them fumbinators from now on. 04:54:51 Schmombinator 04:57:07 how the heck do i check whether two objects are in the same memory location in python... 05:07:13 -!- oerjan has quit ("Good night"). 05:09:23 http://www.vjn.fi/pb/p346643411.txt 05:11:23 i guess i should implement ø-reduction :D 05:12:31 Oh hell. Already a problem. 05:16:59 Ah yes, a marker deleted a piece of code, that's why. 05:22:42 whatcha cooking? 05:25:09 Unlambda-ish interpreter. 05:25:23 A minimal one. s, k, i, .x 05:25:33 Maybe some other combinators for kicks. 05:26:08 So far I have some piece of code to at least check if the program has the right number of combinators and ` 05:26:35 cise (bit of speccing), graphica (version 0.5), supercough (currently just an idea i haven't tested) and ...that one language (example code + lots of ideas), and 82 problems in project euler 05:26:40 this has been a good holiday. 05:27:17 what language are you using? 05:28:01 The Love Machine 9000. 05:28:16 ohh, then it may not be that trivial :) 05:28:52 The idea will be to use 4 tapes. 05:30:02 If I encounter some other combinator than i, the tapes 3 and 4 counts the ` and primitive combinators until I'm sure to have a whole combinator, and then the evaluation is copied on tape 2. 05:31:01 i see (no i don't) 05:31:24 Well, I'm not exactly sure of a simple way to use the counter either. 05:31:28 But I'll figure it out. 05:31:41 i'm sure you will 05:31:51 now... what should *i* be cooking 05:32:02 feel kinda lazy. 05:32:13 But well, for instance, if I have ``k(C1)(C2), C1 will be copied on the second tape. 05:32:25 i'll go outside, perhaps i come up with something 05:32:27 oh, right 05:32:39 Because it would be complicated to rewrite the expression on one tape 05:32:44 i guess i do understand 05:32:59 Writes it on the second tape, erase the first, and copy the second tape onto the first. 05:33:53 yeah, or you can duplicate your code and move back and forth and do a step each time. 05:34:43 also, if you're doing .x, you have side-effects, so remember to change the copying head into the identity head once you've made one rewrite. 05:35:02 identity head just copies without evaluating, that is :) 05:35:13 No need. The `i is just removing `i 05:35:32 Or, for .x, printing x and removing `.x 05:36:00 i mean 05:36:40 -!- weilawei has quit (Nick collision from services.). 05:37:18 if you have ``a`bc`de, you can't evaluate both `bc and `de in one step 05:38:00 because a might apply after evaluation of `bc 05:38:49 Probably. But I'll try the simple way first. 05:38:56 because there's no referential transparency guaranteed, you have to be sure to just do one thing per step; this is why after evaluating one subexpression inside the whole thing, you need to copy it all to the next tape 05:39:02 Wait, what am I saying. 05:39:05 I misread 05:39:07 well, that's not necessarily more complicated 05:39:23 Every step will only evaluate one combinator, oklopol 05:40:14 It looks at the first combinator, checks if there's enough combinators in front to evaluate it, and if there are, returns the evaluation on the second tape. 05:40:23 Or if not, just continues. 05:41:30 okay, xchat started lagging too much now 05:41:34 i think i'll restart it 05:43:34 should i do a time traveling language, or a program that wraps up a given ca based on sending messages between the nodes of a graph and visualizing it by showing the messages move between the nodes? 05:43:46 both useless to the max 05:44:21 Well, if you want, there's useful equations for it in here : http://membres.lycos.fr/bewulf/Russell/incomplete_equation.jpg 05:44:40 First one is useful for timetravel 05:45:26 jailbatylicious 05:45:38 hmm 05:45:54 i'm not sure i can use use that media. 05:46:04 too powerful encryption 05:46:43 the eyes cannot make out the text 05:46:56 What text? 05:47:09 there is some scribble in their backs 05:47:17 Equations. 05:47:23 First one is general relativity 05:47:30 Second one is electromagnetism. 05:47:36 Third one is mechanic. 05:47:44 Last one is quantum mechanic. 05:47:48 yes, but my eyes are too distracted 05:53:32 Hm. I think I can probably make the interpreter with just one counter. 05:53:58 Starts at 1, adds 1 for every `, substract 1 for every primitive combinator 05:55:13 Although I probably should make the code every two cells to have some markers in here. 06:16:55 http://www.veling.nl/anne/lang/lambda/ i wonder how lambda calculus inspired this :D 06:17:33 oh, invented by a girl 06:25:48 Oh hell. Once again, the problem of a state that deals with characters! 06:38:27 okay, i'll stop using python for a while now, just too trivial 06:38:34 it feels like cheating :\ 06:39:45 Heh. 06:39:51 It does write itself! 06:40:13 i'll make an interp for a small concurrent language in scheme 06:40:33 should finally try *using* it for something 06:41:08 @ ` # r # ` # ` # ` # ` # ` # ` # ` # ` # ` # ` # ` # . H # . e # . l # . l # . o # . b # . w # . o # . r # . l # . d # i # # 06:41:12 Poifect. 06:41:31 works already? 06:41:51 No. 06:41:59 ah, okay 06:42:00 But it writes that code every two cells! 06:42:03 how many stacks are you using? 06:42:13 Stacks? 06:42:18 tapes, sorry 06:42:24 Three. 06:42:33 if you use 1, there should be a trivial mapping to brainfuck 06:43:22 I'm not so sure. Since it's based on states, not instructions, I can't think of a trivial isomorphism. 06:44:35 hmm... three tape code -> one tape code: take the three tapes, and make an empty cell between every two cells, then zip the cells getting [1,2,3...],[5,3,7...],[67,3,6...] -> [1,0,5,0,67,0,2,0,3,0... etc] 06:44:48 now, put a 1 into 2nd, 4th and 6th cell 06:45:02 [1,1,5,1,67,1...] 06:45:57 then, when you change tape from ath tape to bth tape, move (b-a)*2 cells backwards 06:46:10 then find the 1 on that tape 06:46:43 when moving, move the one, when checking / using the value, use the number that is in the cell just left of the current cell, which should hold the 1 06:47:08 basically simulate multiple tapes using a separate token for show where the head is 06:47:33 hmm... i guess you need to have 2's in every cell *before* the head. 06:47:38 so you know which way to look 06:48:09 this can be done after you are ready of course, and if you don't wanna do it, perhaps let me, since ski->brainfuck would be great 06:48:40 Well, right now, I'm still on making the code pretty for the Love Machine 9000. 06:49:07 no hurry, it's just i've been thinking about ski->brainfuck, but i haven't gotten much done 06:49:12 I have one combinator/`operator every two cells on the second tape so far 06:50:04 Well, not exactly, but there's an empty cell between 'em all. 06:58:22 -!- calamari has quit ("Leaving"). 07:04:52 hehe, tried making a page on esowiki, and failed badly :P 07:05:43 http://www.esolangs.org/wiki/YABC 07:06:17 i think that's tc via a not-too-trivial isomorphism to bf 07:07:01 but, anyone with any skill, please fix that, i can't figure out how to get the instructions on separate lines or to look nice otherwise :-) 07:13:05 http://www.esolangs.org/wiki/YABC lol getting closer :) 07:13:18 oh, right, the link isn't a fixed one 07:13:23 i mean... immutable 07:14:37 basically, you have a language with do while loops instead of while loops 07:14:56 and you have to make the value to jump with on the tape yourself 07:15:09 i think this has been discussed sometime 07:15:40 i mean, the do...while thing 07:16:52 perhaps later today i'll put something real there 07:16:53 now food -> 07:22:34 -!- oklopol has quit (Read error: 104 (Connection reset by peer)). 07:25:31 -!- oklopol has joined. 07:27:46 Everything nice on the first tape. Now, to evaluate! 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:15:37 H 08:15:37 l 08:15:37 o 08:15:37 w 08:15:37 r 08:15:37 d 08:15:52 Well, I've seen better, but it's a start. 08:16:40 :D 08:22:17 "H" 08:22:22 Aw hell/ 08:22:29 I'll just put the tape display on. 09:13:44 Ah, finally. 09:13:52 i, r and .x works 09:14:01 Now, to tackle the big un's. 09:17:21 What's a nice short Unlambda program with s's and k's? 09:20:50 Hm. 09:21:06 Idea : Replace all s by ```kiss 09:29:16 :D 09:29:26 that'd be just ``sik 09:29:30 oh 09:29:33 ```sick 09:30:28 ``ik`ck -> `k`k(`k*) 09:30:41 Hm. Kisses would be ((se)s) 09:30:50 ? 09:30:59 So applying a kiss to something would be (eC)(sC) 09:31:12 Terminating the program? 09:32:02 what's e 09:32:02 "When applied, e exits the program, possibly providing its argument as the program's result." 09:32:09 oh 09:32:13 what's that 09:32:21 So kisses on some operator outputs the operator! 09:32:45 Errr, combinator 09:33:21 heh 09:34:14 ``````kisses X -> ```sesX -> ``ex`sx, indeed 09:34:21 i'm a bit schlow. 09:35:27 "Kiss your program goodbye!" 09:36:35 >>> i o 09:38:21 -!- Jontte has joined. 09:39:03 I'm going to have to rewrite it entirely after I'm done with this version. 09:39:09 It's full of redundant states. 10:35:32 -!- weilawei has joined. 12:43:36 -!- jix has joined. 13:10:21 -!- Jontte has quit (Remote closed the connection). 13:10:53 -!- Jontte has joined. 13:15:34 -!- oerjan has joined. 13:49:13 -!- SimonRC has quit (Connection timed out). 13:57:03 -!- RedDak has joined. 15:01:50 -!- SimonRC has joined. 15:29:04 -!- jix has quit (Nick collision from services.). 15:29:14 -!- jix has joined. 15:32:34 -!- RedDak has quit (Remote closed the connection). 15:32:59 -!- oerjan has quit ("Dinner"). 16:44:54 -!- mtve has joined. 17:13:34 -!- Jontte has quit (Remote closed the connection). 17:14:02 -!- Jontte has joined. 17:39:28 -!- Jontte has quit (Remote closed the connection). 17:39:56 -!- Jontte has joined. 18:42:05 -!- calamari has joined. 20:18:22 -!- calamari has left (?). 21:07:32 -!- oerjan has joined. 21:11:23 -!- RedDak has joined. 21:27:10 oklopol: Anne Veling is male 21:33:43 in that case i cannot resort to the "women can't code" stereotype, and ask how lambda is related to lambda calculus 21:33:50 *hva to ask 21:33:57 *have 21:34:02 anne is a male name? where? 21:34:16 in holland, according to his homepage 21:34:47 oh holland, you crack me up! 21:34:57 he probably gets to point it out a lot :D 21:35:28 hehe, prolly, it's a female name in english, finnish and pretty much all over europa... i think 21:36:24 well france is worse. you know that joke about Jean Marie... they found out everything about the person except the gender 21:37:00 * pikhq wonders how a programming language can claim to be 'inspired by lambda calculus' without lambda expressions 21:37:07 * oerjan wouldn't advise telling that joke to le Pen, he thinks 21:37:11 what language is that? 21:37:29 http://www.veling.nl/anne/lang/lambda/ 21:38:17 It's a fairly basic assembly kinda thing, apparently. 21:39:15 indeed. 21:39:34 it does seem to be done not that seriously, i just don't get the joke... 21:42:12 Mistah sir oerjan! 21:42:36 Can I assume that a k is evaluated only if preceded by ``? 21:43:49 yeah 21:44:02 Same with s and ```? 21:44:06 of course 21:44:11 Thanks. 21:47:43 Let's see how those k states fares. 21:52:43 btw maybe you could use the idea from my unlambda meta-notation of having a different symbol (e.g. ') for expressions that have already been fully evaluated 21:53:21 I'm not sure how that works out. 21:53:23 Got an example? 21:53:39 hm... 21:54:26 "Not enough tapes. Program interrupted. 21:54:29 Oh hell. 21:55:10 Wrong state on the end of k. 21:58:12 wait a moment, are you using lazy or strict evaluation? 21:58:23 What would be the difference. 21:58:50 do you evaluate the arguments of s and k before applying them? 21:59:00 No. 21:59:15 ok then my ' suggestion is probably useless 21:59:31 If there's a s or k and enough arguments, it rewrites the string in the proper form on the second tape. 21:59:52 and you probably take the first s or k you find too :) 22:00:05 The first of everything. 22:00:16 Unless there's not enough argument. 22:00:34 that's lazy, or perhaps rather call-by-name, since i assume you have no sharing among copied terms 22:00:53 this being string-based 22:02:06 Here's an example : 22:02:07 # ` # ` # k # ` # i # . x £ ` # i # . i ¤ µ # # # # # # # # # # # # # # # # # # # 22:02:07 # # # # # # # # # # # # @ ` # i # . x # µ # # # # # # # # # # # # # # # # # # # # 22:07:17 -!- wooby has joined. 22:07:52 GregorR: has c2bf seen any recent development? 22:07:56 Well, ``k`i.x`i.i prints x. 22:07:59 So far so good! 22:08:18 Slereah: um, that's a bit different from unlambda 22:08:34 Slereah: prints or evaluates to? 22:08:42 in unlambda .x prints when _applied_, not when evaluated 22:08:45 oh, x. 22:08:46 Prints. 22:09:00 what oerjan said. 22:09:09 Good enough for me. 22:09:13 of course in a lazy language your way may be just as fine 22:09:22 The laziest! 22:09:31 You should see the code, it's full of redundant states. 22:10:10 http://membres.lycos.fr/bewulf/Russell/Unlambda%202.txt 22:10:30 Still need to deal with s and not enough argument for k. 22:12:02 (It might actually be shorter if the printing of characters was just the character and the combinator preceded by ., but well) 22:14:11 ``k````.p.e.n.i.s```.b.u.t.t -> penis 22:14:14 * Slereah thumbs up 22:15:33 Let's see what will happen for only one argument! 22:31:13 Ah yes. i->erase `i only works for when i is applied. 22:31:52 If I have something of the form `k.x, is it reasonable to evaluate .x and change it to `ki? 22:33:22 it would be unusual, but your language already is... 22:33:26 it's reasonable if it'd be tons harder to do it like unlambda does it 22:33:50 ...i tried to wait for you to answer, and when i do, you answer on the same second :) 22:33:53 Well, I suppose it wouldn't be too hard. 22:34:14 I could just check if there's ` before to change it. 22:34:30 or just print when a .x is applied 22:34:46 unless you meant just that 22:35:27 Sort of. Although I think that with the current code, it will still print it if only .x remains. 22:35:50 Or maybe not if I add the ` condition. 22:36:01 well, if the ski part works, count me happy. 22:36:08 I should also add a halting condition if only i remains. 22:36:21 now in weak head-normal evaluation, you can just stop if your k doesn't have enough arguments 22:36:24 Otherwise, it will be bothersome. 22:37:27 So far, the halting condition is that the evaluation reach the end of the program, meaning that nothing must remain at the end. 22:37:30 because any program can be written such that the first primitive always is the next to be applied 22:37:49 oerjan: your unlambda in unlambda, does it just convert the string to an unlambda expression and then evaluate that, or do you simulate the whole thing or something? 22:37:51 "just" 22:38:11 it's almost the first 22:38:27 it does an eta-expansion, essentially 22:39:02 expand `FG -> ``s expand F expand G 22:39:20 expand primitive = `k primitive 22:40:12 and when the result is applied to anything, it works equivalently to evaluating the original unlambda expression 22:41:06 although i made one exception: the e function is implemented as i, meaning that the argument passed to the expression must be e or some continuation to quit the program 22:41:08 * Slereah will continue later. 22:41:23 Self-rewriting code puts a strain on my smile. 22:41:27 *implemented = expanded 22:43:46 this exception means that you could theoretically embed the interpreter in a larger program and have it return in the larger program when the interpreted program calls e 22:44:45 Or ``````kisses 22:48:08 oh and expand F = abstraction elimination of \e -> F, essentially 22:53:36 -!- RedDak has quit (Remote closed the connection). 23:04:27 -!- tesseracter_ has joined. 23:11:03 -!- tesseracter__ has joined. 23:14:37 -!- weilawei has quit (Read error: 110 (Connection timed out)). 23:17:56 -!- tesseracter has quit (Read error: 110 (Connection timed out)). 23:22:20 -!- tesseracter_ has quit (Connection timed out).