00:03:56 Ima test the iterator thing to see if it works without the list. 00:08:46 {(Nil)[(iter),][(null?)1]} {(Con) [(c__)a2=b1=] [(car)a*] [(cdr)b*] [(null?)0] [(iter)(_fun)1=,a*(_fun)*?(_fun)*b(iter).?] } {M[m(_o)O! ! "H" "e" "l" "l" "o" " " "W" "o" "r" "l" "d" "!"(_a)(Con)! (_a)(Con)!(_a)(Con)!(_a)(Con)!(_a)(Con)!(_a)(Con) (_o)o.(_a)(iter).]} 00:09:00 !glass {(Con) [(c__)a2=b1=] [(car)a*] [(cdr)b*] [(null?)0] [(iter)(_fun)1=,a*(_fun)*?(_fun)*b(iter).?] } {M[m(_o)O! ! "H" "e" "l" "l" "o" " " "W" "o" "r" "l" "d" "!"(_a)(Con)! (_a)(Con)!(_a)(Con)!(_a)(Con)!(_a)(Con)!(_a)(Con) (_o)o.(_a)(iter).]} 00:13:05 !glass {(Con) [(c__)a2=b1=] [(car)a*] [(cdr)b*] [(null?)0] [(iter)(_fun)1=,(car)*?(_fun)*?(cdr)*?(iter)*?] } {M[m(_o)O! ! "H" "e" "l" "l" "o" " " "W" "o" "r" "l" "d" "!"(_a)(Con)! (_a)(Con)!(_a)(Con)!(_a)(Con)!(_a)(Con)!(_a)(Con) (_o)o.(_a)(iter).]} 00:30:25 !ps 00:30:28 2 CakeProphet: ps 00:37:30 -!- bsmnt_bot has quit (Read error: 110 (Connection timed out)). 00:38:35 -!- bsmntbombdood has quit (Read error: 110 (Connection timed out)). 00:41:46 !glass {(BFfeed) [(c__) (_i)I! (code)(_l)l.?= (pos)=<1>] [(next)(_s)S! (_a)!a (code)*(pos)*(_s)i.? (pos)(pos)*<1>(_a)a.=]} ((Array)(c__ 00:41:49 OK 00:42:07 !ps 00:42:11 2 oklopol: ps 00:42:21 Building a BF interpreter in Glass :D 00:42:24 :D 00:42:28 i thought so 00:42:35 now what is !ps? 00:42:44 Shows the process list. 00:42:57 Oh my... 00:43:01 huh? 00:43:33 I have no clue how to implement an array without using a linked list or something. 00:43:41 and my list constructor is still buggy :/ 00:44:16 hmmm... I could use the stack as my array. 00:44:21 no 00:44:27 don't :\ 00:44:54 make an array class for numbers, easy! :D 00:45:08 hmmm... yeah that would be hard to handle if it were right on the stack. 00:45:21 hmm 00:45:26 you could make it a string 00:45:39 you can extract a char from a string 00:45:43 Split by whitespace? 00:45:45 and convert it to a number 00:45:50 no 00:45:57 each character is a number 00:46:13 You would need some symbol to specify where one number begins and where the next ends. 00:46:25 such as.... space :D 00:46:41 CakeProphet: I thought Gregor had that as a glass example. 00:47:13 I haven't seen it. 00:47:14 CakeProphet: Such as, like, realising that a string is an array of chars. 00:47:33 Oh... *thumpforehead* 00:47:48 For some reason I was thinking it HAD to be in numbers. 00:47:58 the thought never occured to me that I could use the CHARACTERS. 00:48:15 hmmm... can Glass strings represent non-printing characters? 00:48:16 i tried to tell you but i was too tired :( 00:48:24 yes 00:48:30 i mean, obviously 00:48:47 It's stored internally as a C++ string, which is stored internally in as C strings with metadata. 00:48:59 shush. 00:49:12 you can't have 0? 00:49:28 oklopol: Part of the metadata in a C++ string is size. 00:49:43 Meaning that a string of 0's is perfectly acceptable. 00:49:45 oh i misunderstood you, sorry 00:49:48 yep 01:00:40 Hmmm... 01:00:54 in Glass... slicing is the equivalent to C slicing, no? 01:00:59 starting a 0? 01:13:23 yes 01:13:29 i mean, obviously 01:13:35 .... 01:13:36 :D 01:13:41 NOT EVERYTHING IS OBVIOUS. 01:13:44 >.< 01:14:46 !glass {M[m"abc"1(_o)O!(_s)0S!s.?(_o)o.]} 01:14:47 ... 01:15:03 !glass {M[m"abc"1(_o)O!0(_s)S!s.?(_o)o.]} 01:15:43 !glass {M[m"abc"1(_o)O!(_s)0S!d.?(_o)o.]} 01:16:04 !glass {M[m"abc"1(_o)O!(_s)0S!d.?(_o)o.?]} 01:16:07 abc 01:16:15 !glass {M[m"abc"2(_o)O!(_s)0S!d.?(_o)o.?]} 01:16:17 abc 01:16:18 {(BFfeed) [(c__) (_i)I! (code)(_l)l.?= (pos)=<1>] [(next)(_s)S! (_a)!a (code)*(pos)*(_s)i.? (pos)(pos)*<1>(_a)a.=]} {(StringSpam)[(lol)(_a)A!(_s)S!(str)2=(num)1=(outstr)""=/(num)(outstr)(outstr)*(str)*(_s)a.?(pos)(pos)*<1>(_a)a.?\(outstr)*]} ((Array)[(c__ ) (_mul)(StringSpam)!(_s)S! (array)<0>(_s)(ns)<15000>= (ptr)<0>=] [(set)(_s)S! (_ps)2= (_str)1(_s)(ns).?= (array)*(_ps)(_s)d.? (_be)1=... 01:16:20 ...(_af)1= (array)(_be)*(_str)*(_af)*(_s)a.?(_s)a.?=] [(move)(_a)A! (_inc)1= (ptr)(ptr)*1(_inc)(_a)a.?=] [(get) (_s)S! (_s)i.} 01:16:21 Is what I've got so far. 01:17:06 !glass {M[m"abc"<2>(_o)O!(_s)0S!d.?(_o)o.?]} 01:17:07 c 01:17:14 !glass {M[m"abc"<1>(_o)O!(_s)0S!d.?(_o)o.?]} 01:17:17 bc 01:17:19 !glass {M[m"abc"<0>(_o)O!(_s)0S!d.?(_o)o.?]} 01:17:23 abc 01:17:47 i don't read glass that fluently yet :) 01:17:54 but i can read that 01:18:00 Nobody really does. 01:18:10 I can read my own. 01:18:14 but other peoples becomes difficult. 01:18:22 -!- jix_ has quit ("Bitte waehlen Sie eine Beerdigungnachricht"). 01:18:26 * pikhq doesn't do Brainfuck, either. . . 01:18:32 And I code in it nearly daily. 01:19:34 You sorta have to think of it as dumping shit onto a big pile. 01:19:41 and then when you see certain symbols... start moving it around. 01:20:01 usually you see the action before you see the subject... but not in postfix. 01:20:28 [(c__) (_i)I! (code)(_l)l.?= (pos)=<1>] 01:20:33 sure about this? 01:20:46 typo 01:20:47 can you explain it? 01:20:51 should (_i)i. 01:21:00 that i thought 01:21:06 (pos)=<1>? 01:21:37 hmmm.. 01:21:39 should be 0 01:21:49 (pos)<0>= 01:21:49 I was thinking Glass might have moved up the slice notation a notch. 01:21:51 ? 01:21:51 for some reason. 01:21:56 yeah 01:22:29 k first func read and debugged :) 01:22:53 StringSpam is just a little thing for "string multiplication" 01:23:11 so I can fill up a string with 15000 void characters quickly. 01:23:26 [(next)(_s)S! (_a)!a (code)*(pos)*(_s)i.? (pos)(pos)*<1>(_a)a.=] 01:23:27 k 01:23:36 (_a)!a -> (_a)A! ? 01:23:50 Yah 01:24:30 you should take advantage of oo! 01:24:46 I'm trying to 01:24:50 don't use an int as the pointer, have a class with .(inc) and so on 01:24:57 .... 01:25:04 (pos)(pos)*<1>(_a)a.= 01:25:06 that would take way more coding. 01:25:07 not pretty 01:25:15 (pos)(inc).? 01:25:22 It's prettier than going through the trouble of making a class. 01:25:25 tho everything is immutable 01:25:37 that's not the point, use OO! :D 01:25:39 :DD 01:25:40 .DDDDDD 01:25:44 k 01:25:51 that way is good 01:25:51 ....there's only so much abstraction that's nessicary. 01:26:12 *necessary 01:26:15 Glass is so terrible because it forces you to abstract fairly low-level operations. 01:26:16 (sorry) 01:26:20 15,000 void characters? 01:26:30 Yeah, a BF array initialized to 0 01:26:31 30000 is teh standard! :D 01:26:37 oh fine... 30000 01:26:39 :P 01:26:40 Oh. You mean null characters. 01:27:44 BfFeed will be expanded later on with loopz right? 01:28:01 CakeProphet: Expand as you go along. 01:28:12 30,000 bytes is a greedy amount of memory. 01:28:14 Sukoshi, can be done later 01:28:32 Hey, if I can make expanding arrays in INTERCAL..... 01:28:40 :D 01:28:51 i wanna sleep, why can't i :( 01:29:05 Who wants to sleep? :O 01:29:13 I sleep out of mental neccessity. 01:29:22 true, but i have to wake up early 01:29:28 How early? 01:29:31 9 01:29:34 3:23 now 01:29:38 ........................... 01:29:54 i usually wake up 13.00 or 14.00 01:30:07 and i ALWAYS have an alarm clock on at 10.00 01:30:25 just never wakes me up... maybe i'm lucky tomorrow 01:30:57 I sleep at 3, wake up at 6:30, with one 30 min nap in the day. 01:31:11 well, i envy you then 01:31:46 less sleep, longer life 01:31:51 {(BFfeed) [(c__) (_i)I! (code)(_i)i.?= (pos)=<0>] [(next)(_s)S! (_a)!A (code)*(pos)*(_s)i.? (pos)(pos)*<1>(_a)a.=]} {(StringSpam)[(lol)(_a)A!(_s)S!(str)2=(num)1=(outstr)""=/(num)(outstr)(outstr)*(str)*(_s)a.?(pos)(pos)*<1>(_a)a.?\(outstr)*]} ((Array)[(c__ ) (_mul)(StringSpam)!(_s)S! (array)<0>(_s)(ns).?<30000>(_mul)(lol).?= (ptr)<0>=] [(set)(_s)S! (_ps)2= (_str)1(_s)(ns).?= (array)*(_ps)(_s)d. 01:31:52 ? (_be)1= (_af)1= (array)(_be)*(_str)*(_af)*(_s)a.?(_s)a.?=] [(move)(_a)A! (_inc)1= (ptr)(ptr)*1(_inc)(_a)a.?=] [(get) (_s)S! (array)*(ptr)*(_s)i.]} 01:32:04 mmm... Glass looks deliciously nonsential. 01:32:08 you didn't fix them :) 01:32:10 you didn't fix them :) 01:32:11 you didn't fix them :) 01:32:11 you didn't fix them :) 01:32:14 fix wha? 01:32:19 (pos)=<0> 01:32:22 (_a)!A 01:32:29 ...yes I did. 01:32:32 oh :( 01:32:38 :P 01:32:40 You lose. 01:32:54 why do i see them there then? :O 01:33:03 >.> 01:33:09 Insanity? 01:33:15 must be 01:33:51 {(BFfeed) [(c__) (_i)I! (code)(_i)i.?= (pos)<0>=] [(next)(_s)S! (_a)A! (code)*(pos)*(_s)i.? (pos)(pos)*<1>(_a)a.=]} {(StringSpam)[(lol)(_a)A!(_s)S!(str)2=(num)1=(outstr)""=/(num)(outstr)(outstr)*(str)*(_s)a.?(pos)(pos)*<1>(_a)a.?\(outstr)*]} ((Array)[(c__ ) (_mul)(StringSpam)!(_s)S! (array)<0>(_s)(ns).?<30000>(_mul)(lol).?= (ptr)<0>=] [(set)(_s)S! (_ps)2= (_str)1(_s)(ns).?= (array)*(_ps)(_s)d. 01:33:53 ? (_be)1= (_af)1= (array)(_be)*(_str)*(_af)*(_s)a.?(_s)a.?=] [(move)(_a)A! (_inc)1= (ptr)(ptr)*1(_inc)(_a)a.?=] [(get) (_s)S! (array)*(ptr)*(_s)i.]} 01:33:56 :P 01:34:33 I should start on that double-ended queue language. 01:35:07 why do you inc pos? 01:35:10 /(num)(outstr)(outstr)*(str)*(_s)a.?(pos)(pos)*<1>(_a)a.?\ 01:35:18 shouldn't you dec num? 01:35:36 /(num)(outstr)(outstr)*(str)*(_s)a.?(num)(num)*<1>(_a)s.?\ 01:35:49 in stringspam 01:35:58 i'm starting to be able to read that 01:36:24 ((Array) 01:36:32 should be { the first one 01:39:58 hmm 01:40:22 i can't see the use of your splitting the array in (Array) 01:40:31 in (set) 01:40:33 (pos) represents the number you're multiplying it by 01:40:49 poorly named. 01:40:54 really? 01:41:04 where is it inited? 01:41:12 and when will the loop end? 01:41:46 "Lolerskates" * 5 ----------- "Lolerskates" <5> (_ss)StringSpam!(_ss)? 01:41:51 When pos is 0 01:42:03 pos is decremented each loop. 01:42:07 Might I reccomend Pastebin? 01:42:24 Spam never hurt anybody. :P 01:42:53 {(StringSpam)[(lol)(_a)A!(_s)S!(str)2=(num)1=(outstr)""=/(num)(outstr)(outstr)*(str)*(_s)a.?(pos)(pos)*<1>(_a)a.?\(outstr)*]} << why would the loop end? 01:43:11 no operation is done to num 01:43:16 {(BFfeed) [(c__) (_i)I! (code)(_i)i.?= (pos)<0>=] [(next)(_s)S! (_a)A! (code)*(pos)*(_s)i.? (pos)(pos)*<1>(_a)a.=]} {(StringSpam)[(lol)(_a)A!(_s)S!(str)2=(num)1=(outstr)""=/(num)(outstr)(outstr)*(str)*(_s)a.?(num)(num)*<1>(_a)a.?\(outstr)*]} ((Array)[(c__ ) (_mul)(StringSpam)!(_s)S! (array)<0>(_s)(ns).?<30000>(_mul)(lol).?= (ptr)<0>=] [(set)(_s)S! (_ps)2= (_str)1(_s)(ns).?= (array)*(_ps)(_s)d. 01:43:18 ? (_be)1= (_af)1= (array)(_be)*(_str)*(_af)*(_s)a.?(_s)a.?=] [(move)(_a)A! (_inc)1= (ptr)(ptr)*1(_inc)(_a)a.?=] [(get) (_s)S! (array)*(ptr)*(_s)i.]} 01:43:20 ack 01:43:22 yeah 01:43:30 should be (num) instead of (pos) 01:43:33 hehe 01:43:40 /(num)(outstr)(outstr)*(str)*(_s)a.?(num)(num)*<1>(_a)a.?\ -> /(num)(outstr)(outstr)*(str)*(_s)a.?(num)(num)*<1>(_a)s.?\ 01:43:44 (pos) is the position we're on in the input. 01:43:46 then i'm happy 01:43:52 i know, i'm not blind 01:43:53 :) 01:44:04 (i am an ass, tho) 01:44:21 eh... everyone is an asshole is some point. 01:44:47 yeah, i'd really like to sleep but i can't :( 01:45:18 k wtf does (set) do? 01:45:24 CakeProphet: Uh... please use Pastebin. 01:45:37 It's also easier to read for a lot of people. 01:46:51 oklopol, set sets (_ps) in (array) to (_str) 01:47:49 you do know _str is "1" and (_ps) is 2? 01:48:03 it sets 2 in (array) to "1"? 01:48:24 1 means "element 1 on the stack" 01:48:49 it isn't ready yet, then? 01:49:07 i mean, it takes those as params and doesn't set them in the function? 01:49:34 It does. 01:49:47 take them as params? 01:50:28 To set a value in the array... we have to split it at (_ps) and concatenate the first half with (_str) and then concatenate those two with the second half. 01:50:47 yeah.. they're params 01:50:53 then i'm happy 01:50:57 indeed. 01:51:18 i just read code as a compiler with only a minor autodebug 01:52:04 so if you put test values in, i don't understand 01:52:05 too hard 01:52:14 oh my eyes hurt 01:53:13 (if you made a (Counter)-class, you'd get rid of TWO ugly additions!) 01:53:34 you have two functions whose main purpose is to inc a var :) 01:53:51 actually, the sole purpose of the other 01:54:21 hey btw 01:54:38 why didn't you tell me i was wrong a while ago 01:54:40 :O 01:55:00 maybe because i make no sence and mostly talk to myself :) 01:55:16 What ugly additions? 01:55:24 i'll now reread that one part keeping in mind 2 != <2> xD 01:55:26 and how is it conceptually possible to get rid of anything ugly with GLASS? 01:55:40 (_inc)1= (ptr)(ptr)*1(_inc)(_a)a.?= 01:55:45 conseptually ugly! 01:55:56 but 01:56:14 A pointer class would just add to the overhead. 01:56:23 as i once again misparsed, 1 IS A FUCKING LIFT, not a number xD 01:56:27 and bloat the whole program. 01:56:55 i hate being a human 01:57:01 mistake after mistake 01:57:07 It's pretty fun. 01:57:14 programmers are kind of insane though. 01:57:59 (_af)1= in (set) should be (_af)0= 01:58:04 oklopol, Did you seem my implementation of a Lisp pair in Glass? 01:58:26 hmmm... I thought pushing something from the stack decrement the position of everything. 01:58:28 i did, but i didn't read it because i had this craaaaaazy idea of going to sleep 01:58:44 huh? 01:58:48 it does 01:59:03 so then why's it wrong? :/ 01:59:07 but (_bf)1= takes off what it puts in 01:59:37 1 if the first part, 0 is the second part, so naturally (_bf)1= (_af)0= 01:59:43 The stack item is removed when its pushed back in? 01:59:44 or 01:59:57 Glass is -not- intuitive. :P 02:00:01 actually i don't know whether = leaves anything on the stack 02:00:04 do not even attempt to think naturally. 02:00:17 = pops the name and the value off 02:00:18 as i thought 02:00:20 numbers leave things on the stack. 02:00:24 oh. 02:00:26 alright :P 02:00:34 obviously! :D 02:00:37 :DDDDDDD 02:00:55 (i looked it up, but it's ONLY because i'm tired) 02:01:05 (it's very obvious) 02:01:20 {(BFfeed) [(c__) (_i)I! (code)(_i)i.?= (pos)<0>=] [(next)(_s)S! (_a)A! (code)*(pos)*(_s)i.? (pos)(pos)*<1>(_a)a.=]} {(StringSpam)[(lol)(_a)A!(_s)S!(str)2=(num)1=(outstr)""=/(num)(outstr)(outstr)*(str)*(_s)a.?(pos)(pos)*<1>(_a)a.?\(outstr)*]} ((Array)[(c__ ) (_mul)(StringSpam)!(_s)S! (array)<0>(_s)(ns).?<30000>(_mul)(lol).?= (ptr)<0>=] [(set)(_s)S! (_ps)2= (_str)1= (array)*(_ps)(_s)d.?... 02:01:21 but 02:01:22 ...(_be)1= (_af)0= (array)(_be)*(_str)*(_af)*(_s)a.?(_s)a.?=] [(move)(_a)A! (_inc)1= (ptr)(ptr)*1(_inc)(_a)a.?=] [(get) (_s)S! (array)*(ptr)*(_s)i.]} 02:01:23 Beautiful 02:01:50 why the fuck (_this)$ leaves the object on the stack :D 02:02:07 makes no sence because no other var oper does 02:02:17 eh... 02:02:22 I'm sure there's a reason 02:02:31 or maybe not 02:02:35 it could also just be there to confuse you. 02:02:36 i don't get it 02:02:46 so... help me think of how a double-ended queue language should work. 02:02:56 the this-pointer must always be both pushed and set into a var 02:02:59 why? 02:03:04 boredom? 02:03:09 you never need both, you must have both 02:03:11 weird :\ 02:03:12 it would be fun... like a merry-go-round 02:03:26 but 02:03:34 and you could evaluate different things at different places... it would be kind of weird. 02:03:34 a two-way queue? 02:03:40 Yeah. 02:03:47 i have some thoughts 02:03:57 push1, pop1, push2, pop2, rotate (being a push2 of pop1) 02:03:57 but i'm not sure if i can take them out 02:04:28 k, that's basically a stack-based lang where you control pop's and pushes right? 02:04:37 Kinda... 02:04:38 kinda like... brainfuck 02:04:40 :) 02:04:42 NO 02:04:43 LIAR 02:04:45 FOOL 02:04:48 wait! 02:04:52 there's more! 02:04:57 It would be different. 02:05:19 You wouldn't control the pushes and pops. 02:05:30 it would just... kinda shift around as you code. 02:05:36 brainfuck goes too far! you can make sence into it by making only the queue part, not also the ridiculously hard inc&dec-only system 02:05:52 You might be able to swap which end of the cue the pushes and pops occur... 02:05:57 but... you don't order them specifically. 02:06:06 ah okay, you should then be able to make it go around in different places 02:06:16 Yeah.... see it would be neat. 02:06:37 very non-modular if there is just one queue with a rolling tape 02:06:43 and that's often boring 02:06:45 Swapping which end you get values from would kind of reverse the evaluation order. 02:06:46 BUT 02:06:52 huh? 02:06:58 ah 02:07:13 i misunderstood the whole queue thing :) 02:07:22 yeah... I'm not sure how it'll work either. 02:07:32 i thought like a circle where you can go around freely 02:07:42 it could rotate after each do-hicky. 02:07:45 but instead you meant a two-sided stacks? 02:07:50 nah... it won't be like brainfuck. 02:07:51 *stack 02:07:55 two-sided queue. 02:08:18 yes, but i confuse consepts 02:08:28 bad recall for terms 02:08:29 :( 02:08:41 i'll do some perusing on the subject now -> 02:08:52 [1,2,3,4,5,6,7,8,9] push1(0) [0,1,2,3,4,5,6,7,8,9] pop2() [0,1,2,3,4,5,6,7,8] push1(pop2()) [8,0,1,2,3,4,5,6,7] 02:09:17 good 02:09:37 anyway, functionality is that of a two-sided stack 02:09:42 so i'll call it that :) 02:09:50 same thing 02:09:57 Pretty much. 02:10:02 It can work like a stake or a queue 02:10:21 a queue language might be more fun though. 02:10:28 i wish i had paper... got some unbelievably cool ideas :D 02:10:37 cause... let's face it... stacks are boring. 02:10:41 true 02:10:45 Now... if we had tubes. 02:11:00 no 3d... like the one i'm gonna show you in a minute :) 02:11:03 with multidimensional arrays being pushed down them... and the data intersecting and crossing based on commands. 02:11:06 THERE'S A LANGUAGE. 02:11:30 a tubular language. 02:11:52 inputs and outputs criss-crossing and connecting... with the data getting tossed around. 02:14:34 :D 02:14:40 TUBU 1.0 02:14:43 can i send you? 02:14:48 made an ugly picture 02:14:59 hmmm? 02:15:10 dunno if it's unugly enough to give you the picture... i mean what i was thinking 02:15:33 it involves a circular tape that can be cut and rotated etc. :) 02:15:38 We could make a dataless language. 02:15:53 iota kinda is 02:15:56 unlambda 02:16:00 zot 02:16:02 jot 02:16:12 purely functional languages 02:16:13 Where "stuff" is sent through structures you've created for it... and somehow magically becomes data. 02:16:16 :D 02:16:35 you don't need data when the structure is perfect! 02:16:58 A spider web language? 02:16:59 a language with no data, no hello world, no factorials, just PERFECT structures :D 02:17:05 pretty much 02:17:13 no I mean 02:17:15 anyways, i wanna send you the ugly pic :( 02:17:18 let's talk about a spider web language. 02:17:20 alright 02:17:22 soon1 02:17:27 first send! 02:17:34 how to? 02:17:51 A lset-based lanauge? 02:17:53 set 02:18:21 it's nosence.bmp... i then realized there is a word nonsence 02:18:28 which would've made more sence 02:18:38 but then again, why should nonsence make sence? 02:18:42 that's just stupid 02:18:45 so it's nosence 02:18:53 hmmm. 02:19:01 maybe a non-determinstic language that doesn't... yanno... suck. 02:19:05 i can't send it, also, with this :) 02:19:31 can i send that another way? 02:19:43 it's very important! 02:19:44 :D 02:20:51 lol it makes me laugh... fuck i'm tired 02:21:25 spiderweb-language? 02:21:33 sound like a job for concurrency! 02:21:42 and heavy subwebbing! 02:21:54 a network language? 02:21:54 and a great support for tcp/ip 02:21:56 :D 02:22:32 nodes... with links. 02:22:36 like neurons. 02:22:40 yes, tons of them 02:22:51 kinda like a cellular automaton 02:22:57 oooh 02:23:01 but you can code each node differently 02:23:15 (there is a macro lang for that, of course) 02:23:16 a language for constructing cellular automatons. 02:23:20 :D 02:23:25 Already done. 02:23:33 that fit specifically for what you need them to do. 02:23:34 prolly 02:23:42 Seriously. 02:23:48 what? 02:23:51 i might have it 02:23:57 * CakeProphet has a Automaton class in Python that can represent any cellular automaton with a universal rule for all cells. 02:25:10 zu 02:25:18 i don't like python :( 02:25:32 has bad lambda support if you ask me 02:26:02 i mean, you have to twiddle to do even conditionals in a lambda 02:26:24 [(stuph) for i in [1] if (cond)] 02:26:47 god, now i have to sleep... really... <.smdfk -> 02:36:39 2.5 has conditional expressions 02:36:50 (blah if condition else otherblah) 02:37:15 Most Python zealots don't consider lambda all that useful anyways... 02:37:18 I like lambda myself :D 02:44:38 me too :) 02:45:12 that's a boring condition 02:45:18 ?: is cooler 02:45:59 i've actually been trying to sleep for 2.5 hours now 02:53:13 Python makes some crappy quines. :P 02:53:22 http://www.nyx.net/~gthompso/self_pyth.txt 02:56:10 I like this one though. 02:56:15 a = ['print "a =", a', 'for s in a: print s'] 02:56:16 print "a =", a 02:56:18 for s in a: print s 03:08:37 extendable, nice 03:08:55 i mean, nicely extendable 03:09:45 5th time's the charm -> 03:23:47 it's fairly terse for a quine as well. 03:24:36 iterating quines are cool. :D 03:25:18 A sequence of programs that each produce the source code of the next one in the sequence. 03:25:36 and I'm guessing the last one prints the source code of the first. 03:32:48 one-liner quine is achieved by this code: print (lambda x:x%x)('print (lambda x:x%%x)(%r)') 03:33:09 good example for repr() ;) 03:45:37 ooooh yah 03:45:45 repr() would be a good way to reproduce source code. 03:45:47 since it... 03:45:52 prints... the source code. 03:50:25 that's a good one. :D 03:57:02 I would be amazed if someone built a phyiscal object that can do the same thing as an iterating quine. 03:57:37 Like a machine that builds a machine that builds a machine that builds a machine that builds the original machine. 04:00:55 You could probably use iterating quines to do a computation of some sort. 04:01:14 maybe a language whose entire function is to shell out successive source codes... which eventually will produce the original. 04:01:38 but the side effects that each one produce create a successive shift... that eventually yields some sort of useful output 04:02:51 * pikhq defines a pointless language 04:02:54 QUINE. 04:03:05 "a" outputs "a". 04:03:11 "b" outputs "c". 04:03:18 "c" outputs "d". 04:03:26 "d" outputs "b". 04:04:10 "" outputs "Sorry, gotta work one more character for that." 04:05:10 Thus, the shortest quine is "a". 04:05:26 And the shortest iterating quine is "b", "c", or "d". 04:05:44 ?/? 04:12:29 -!- ihope has quit ("http://tunes.org/~nef/logs/esoteric/06.08.09"). 04:12:48 tokigun, That's the coolest quine I've seen so far. 04:12:53 Most of them look pretty boring. 04:13:05 Plus it's in one line... which is pretty awesome. 04:13:09 -!- ivan`_ has joined. 04:31:38 -!- ivan` has quit (Read error: 110 (Connection timed out)). 04:32:28 -!- ivan`_ has changed nick to ivan`. 04:36:11 hmmmm 04:36:13 oh 04:36:17 you could make two sister languages. 04:36:32 both made to produce outputs in the form of the other language... 04:36:53 -!- RW63Phi has joined. 04:36:56 A polyglottal iterative quine based language. :D 04:37:55 Could someone please repeat this command and cause it to be executed by another host? 04:38:50 Could someone please repeat this command and cause it to be executed by another host? 04:40:05 Everyone please execute a command which causes each of you to ignite and burn. 04:40:07 -!- Dangermouse has joined. 04:40:38 lol, no IRP allowed..... 04:41:02 -!- RW63Phi has left (?). 04:41:05 Could someone please give someone a command to give someone a command to repeat this command? 04:47:18 -!- Dangermouse has left (?). 05:07:38 Could someone please give someone a command to repeat that command? 05:10:34 Pretty please with sugar on top? 05:13:10 -!- theblue has quit (Read error: 113 (No route to host)). 05:14:07 Could someone please repeat that command? 05:15:21 Could someone please give someone a command to give someone a command to repeat this command? 05:15:29 SIGKILL 05:15:53 WASSAT? 05:16:13 It's a UNIX signal for stopping exeuction. 05:30:22 -!- calamari has quit ("Leaving"). 05:32:27 -!- pikhq has quit (Read error: 54 (Connection reset by peer)). 05:33:55 -!- pikhq has joined. 05:51:07 SIGTERM is for stopping execution; SIGKILL is if you're feeling antisocial. 05:52:43 SIGKILL stops execution *now*. 05:52:49 SIGTERM allows for cleanup. 05:52:54 I'm no neatfreak. 05:55:44 SIGSTOP is for /stopping/ execution :) 05:55:51 SIGTERM is for /terminating/ execution :P 05:55:59 and SIGKILL is for /killing/ execution ;) 05:56:30 And, of course, SIGABRT is for /aborting/ execution. "Do we really need so many?" 05:57:18 SIGILL is for making the execution /ill/, in which case it barfs. "Dumps core", in Unix terminology. 05:58:31 Heh, and of course there's SIGINT for /interrupting/ execution, which kind-of fits in the original list. 05:59:22 And SIGQUIT for /quitting/ execution. Come to think of it, an inordinate amount of the signals seem to be about manhandling the execution somehow. 05:59:51 Why isn't there SIGTHANKS that you can send when a process has diligently worked and behaved in an exemplary manner? 06:25:29 SIGEMT sends a trained EMT for your process. 06:26:03 Needed after SIGSTOP, SIGTERM, SIGKILL, SIGABRT, SIGILL, SIGINT, or SIGQUIT. 06:37:14 Signals -- when you need that time-has-passed feeling. 06:51:52 -!- pikhq has quit (Read error: 110 (Connection timed out)). 06:57:20 -!- werdwerdus has joined. 07:24:32 -!- werdwerdus has quit (Read error: 110 (Connection timed out)). 07:49:33 -!- oerjan has joined. 07:53:39 !ps 07:53:42 2 oerjan: ps 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:01:22 !glass {(Nil)[(iter),][(null?)1]}{(Con) [(c__)a2=b1=,,] [(car)a*] [(cdr)b*] [(null?)0] [(iter)(_fun)1=,a*?(_fun)*?b(iter).?] }{(List)[(build)(_a)A!(_tmp)1=, (_list)(Nil)!/(_tmp)(_list)*(_list)(Con)!(_tmp)0*<1>(_a)s.?=\(_list)*] }{M[m(_o)O! (_l)(List)! "H" "e" "l" "l" "o" " " "W" "o" "r" "l" "d" "!"<12>(_l)(build).?(MyList)1=, (_o)o.(MyList)(iter).?]} 08:02:07 darn 08:04:25 !glass {(Nil)[(iter),][(null?)1]}{(Con) [(c__)a2=b1=,,] [(car)a*] [(cdr)b*] [(null?)0] [(iter)(_fun)1=,a*?(_fun)*?b(iter).?] }{(List)[(build)(_a)A!(_tmp)1=, (_list)(Nil)!/(_tmp)(_list)*(_list)(Con)!(_tmp)0*<1>(_a)s.?=\(_list)*] }{M[m(_o)O! "H" (MyList)0(Nil)!(Con)! (_o)o.(MyList)(iter).?]} 08:04:34 !ps 08:04:38 2 oerjan: ps 08:08:28 !glass {(Nil)[(iter),][(null?)1]}{(Con) [(c__)a2=b1=,,] [(car)a*] [(cdr)b*] [(null?)0] [(iter)(_fun)1=,a*?(_fun)*?b(iter).?] }{M[m(_o)O! "H" (MyList)0(Nil)!*(MyList)(Con)! (_o)o.(MyList)(iter).?]} 08:10:03 !glass {(Nil)[(iter),][(null?)1]}{(Con) [(c__)a2=b1=,,] [(car)a*] [(cdr)b*] [(null?)0] [(iter)(_fun)1=,a*?(_fun)*?b(iter).?] }{M[m(_o)O! "H" (MyList)0(Nil)!*(MyList)(Con)! (_o)o.(MyList)(car).?1?]} 08:10:07 H 08:11:48 !glass {(Nil)[(iter),][(null?)1]}{(Con) [(c__)a2=b1=,,] [(car)a*] [(cdr)b*] [(null?)0] [(iter)(_fun)1=,a*?(_fun)*?b(iter).?] }{M[m(_o)O! "H" (MyList)0(Nil)!*(MyList)(Con)! (_o)o.(MyList)(cdr).?(_t)1=,(_t)(null?).?1?]} 08:11:59 !glass {(Nil)[(iter),][(null?)1]}{(Con) [(c__)a2=b1=,,] [(car)a*] [(cdr)b*] [(null?)0] [(iter)(_fun)1=,a*?(_fun)*?b(iter).?] }{M[m(_o)O! "H" (MyList)0(Nil)!*(MyList)(Con)! (_o)(on).(MyList)(cdr).?(_t)1=,(_t)(null?).?1?]} 08:12:03 0 08:12:11 whoops 08:13:16 !glass {(Nil)[(iter),][(null?)1]}{(Con) [(c__)a2=b1=,,] [(car)a*] [(cdr)b*] [(null?)0] [(iter)(_fun)1=,a*?(_fun)*?b(iter).?] }{M[m(_o)O! "H" (MyList)0(Nil)!*(MyList)(Con)! (_o)(o).(MyList)(cdr).?(_t)1=,(_t)(car).?1?]} 08:18:30 !glass {(Nil)[(iter),][(null?)1]}{(Con) [(c__)a2=b1=,,] [(car)a*] [(cdr)b*] [(null?)0] [(iter)(_fun)1=,a*?(_fun)*?b(iter).?] }{M[m(_o)O! "H" "i" (MyList)0(Nil)!*(MyList)(Con)!(MyList)*(MyList)(Con)! (_o)(o).(MyList)(cdr).?(_t)1=,(_t)(car).?1?]} 08:18:33 i 08:19:08 !glass {(Nil)[(iter),][(null?)1]}{(Con) [(c__)a2=b1=,,] [(car)a*] [(cdr)b*] [(null?)0] [(iter)(_fun)1=,a*?(_fun)*?b(iter).?] }{M[m(_o)O! "H" "i" (MyList)0(Nil)!*(MyList)(Con)!(MyList)*(MyList)(Con)! (_o)(on).(MyList)(cdr).?(_t)1=,(_t)(null?).?1?]} 08:19:11 0 08:29:48 !glass {(Nil)[(iter),][(null?)1]}{(Con) [(c__)a2=b1=,,] [(car)a*] [(cdr)b*] [(null?)0] [(iter)(_fun)1=,a*?(_fun)*?b(iter).?] }{(List)[(build)(_a)A!(_tmp)1=, (_list)(Nil)!/(_tmp)(_list)*(_list)(Con)!(_tmp)0*<1>(_a)s.?=\(_list)*] }{M[m(_o)O! (_l)(List)! "H" "i" <2> (_l)(build).?(MyList)1=, (_o)(o).(MyList)(cdr).?(_t)1=,(_t)(car).?1?]} 08:29:50 -!- Arrogant has joined. 08:31:43 !glass {(Nil)[(iter),][(null?)1]}{(Con) [(c__)a2=b1=,,] [(car)a*] [(cdr)b*] [(null?)0] [(iter)(_fun)1=,a*?(_fun)*?b(iter).?] }{(List)[(build)(_a)A!(_tmp)1=, (_list)(Nil)!/(_tmp)(_list)*(_list)(Con)!(_tmp)0*<1>(_a)s.?=\(_list)*] }{M[m(_o)O! (_l)(List)! "H" "i" <2> (_l)(build).?(MyList)1=, (_o)(o).(MyList)(car).?1?]} 08:33:37 !glass {(Nil)[(iter),][(null?)1]}{(Con) [(c__)a2=b1=,,] [(car)a*] [(cdr)b*] [(null?)0] [(iter)(_fun)1=,a*?(_fun)*?b(iter).?] }{(List)[(build)(_a)A!(_tmp)1=, (_list)(Nil)!/(_tmp)(_list)*(_list)(Con)!(_tmp)0*<1>(_a)s.?=\(_list)*] }{M[m(_o)O! (_l)(List)! "H" "i" <2> (_l)(build).?(MyList)1=, (_o)(o)."test"?1?]} 08:33:46 !ps 08:33:49 2 oerjan: ps 08:36:21 !glass {(Nil)[(iter),][(null?)1]}{(Con) [(c__)a2=b1=,,] [(car)a*] [(cdr)b*] [(null?)0] [(iter)(_fun)1=,a*?(_fun)*?b(iter).?] }{(List)[(build)(_o)O!(_a)A!(_tmp)1=, (_list)(Nil)!/(_tmp)(_list)*(_list)2(_o)o.?(Con)!(_tmp)0*<1>(_a)s.?=\(_list)*] }{M[m(_o)O! (_l)(List)! "H" "i" <2> (_l)(build).?(MyList)1=, (_o)(o).(MyList)(car).?1?]} 08:36:23 i 08:37:27 !glass {(Nil)[(iter),][(null?)1]}{(Con) [(c__)a2=b1=,,] [(car)a*] [(cdr)b*] [(null?)0] [(iter)(_fun)1=,a*?(_fun)*?b(iter).?] }{(List)[(build)(_o)O!(_a)A!(_tmp)1=, (_list)(Nil)!/(_tmp)(_list)*(_list)(_tmp)*(_o)(on).?(Con)!(_tmp)0*<1>(_a)s.?=\(_list)*] }{M[m(_o)O! (_l)(List)! "H" "i" <2> (_l)(build).?(MyList)1=, (_o)(o).(MyList)(car).?1?]} 08:37:31 2 08:38:05 !glass {(Nil)[(iter),][(null?)1]}{(Con) [(c__)a2=b1=,,] [(car)a*] [(cdr)b*] [(null?)0] [(iter)(_fun)1=,a*?(_fun)*?b(iter).?] }{(List)[(build)(_o)O!(_a)A!(_tmp)1=, (_list)(Nil)!/(_tmp)(_list)*(_list)(Con)!(_tmp)*(_o)(on).?(_tmp)0*<1>(_a)s.?=\(_list)*] }{M[m(_o)O! (_l)(List)! "H" "i" <2> (_l)(build).?(MyList)1=, (_o)(o).(MyList)(car).?1?]} 08:38:07 2 08:38:30 -!- Arrogant has quit ("Leaving"). 08:38:58 !glass {(Nil)[(iter),][(null?)1]}{(Con) [(c__)a2=b1=,,] [(car)a*] [(cdr)b*] [(null?)0] [(iter)(_fun)1=,a*?(_fun)*?b(iter).?] }{(List)[(build)(_o)O!(_a)A!(_tmp)1=, (_list)(Nil)!/(_tmp)(_list)*(_list)(Con)!(_tmp)0*<1>(_a)s.?=(_tmp)*(_o)(on).?\(_list)*] }{M[m(_o)O! (_l)(List)! "H" "i" <2> (_l)(build).?(MyList)1=, (_o)(o).(MyList)(car).?1?]} 08:40:11 !glass {(Nil)[(iter),][(null?)1]}{(Con) [(c__)a2=b1=,,] [(car)a*] [(cdr)b*] [(null?)0] [(iter)(_fun)1=,a*?(_fun)*?b(iter).?] }{(List)[(build)(_o)O!(_a)A!(_tmp)1=, (_list)(Nil)!/(_tmp)(_list)*(_list)(Con)!(_tmp)0*<1>(_a)s.?(_tmp)*(_o)(on).?=\(_list)*] }{M[m(_o)O! (_l)(List)! "H" "i" <2> (_l)(build).?(MyList)1=, (_o)(o).(MyList)(car).?1?]} 08:40:46 !glass {(Nil)[(iter),][(null?)1]}{(Con) [(c__)a2=b1=,,] [(car)a*] [(cdr)b*] [(null?)0] [(iter)(_fun)1=,a*?(_fun)*?b(iter).?] }{(List)[(build)(_o)O!(_a)A!(_tmp)1=, (_list)(Nil)!/(_tmp)(_list)*(_list)(Con)!(_tmp)0*<1>(_a)s.(_tmp)*(_o)(on).??=\(_list)*] }{M[m(_o)O! (_l)(List)! "H" "i" <2> (_l)(build).?(MyList)1=, (_o)(o).(MyList)(car).?1?]} 08:41:27 !glass {(Nil)[(iter),][(null?)1]}{(Con) [(c__)a2=b1=,,] [(car)a*] [(cdr)b*] [(null?)0] [(iter)(_fun)1=,a*?(_fun)*?b(iter).?] }{(List)[(build)(_o)O!(_a)A!(_tmp)1=, (_list)(Nil)!/(_tmp)(_list)*(_list)(Con)!(_tmp)0*<1>(_tmp)*(_o)(on).?(_a)s.?=\(_list)*] }{M[m(_o)O! (_l)(List)! "H" "i" <2> (_l)(build).?(MyList)1=, (_o)(o).(MyList)(car).?1?]} 08:41:31 2 08:44:17 !glass {M[m(_a)A!(_o)O!<4><2>(_a)s.?(_o)(on).?]} 08:44:30 !glass {M[m(_a)A!(_o)O!<4><2>(_a)a.?(_o)(on).?]} 08:44:55 !glass {M[m(_a)A!(_o)O!<4><2>(_o)(on).0??]} 08:44:57 0 08:45:12 !ps 08:45:15 2 oerjan: ps 08:45:47 !glass {M[m(_a)A!(_o)O!<4><2>(_o)(on).?]} 08:45:49 2 08:46:07 !glass {M[m(_a)A!(_o)O!<4><2>(_a)a.,(_o)(on).?]} 08:46:56 something is broken with the A class... 08:47:49 !glass {M[m(_b)A!(_o)O!<4><2>(_b)a.,(_o)(on).?]} 08:48:02 !glass {M[m(_b)A!(_o)O!<4><2>(_b)m.,(_o)(on).?]} 08:48:19 !glass {M[m(_b)A!(_o)O!<4><2>(_o)(on).?]} 08:48:24 2 08:49:48 GregorR: The A class in Glass is broken. 09:00:33 !glass {F[f(_a)A!(_o)O!(_t)$(_n)1=,(_isle)(_n)*<2>(_a)(le).?=/(_isle)<1>^\(_n)*<1>(_a)s.?(_t)f.?(_n)*<2>(_a)s.?(_t)f.?(_a)a.?]}{M[m(_a)A!(_f)F!(_o)O!(_n)<1>=(_nlm)<1>=/(_nlm)(_n)*(_f)f.?(_o)(on).?" "(_o)o.?(_n)(_n)*<1>(_a)a.?=(_nlm)(_n)*<20> 09:00:36 OK 09:00:59 !glass {F[f(_a)A!(_o)O!(_t)$(_n)1=,(_isle)(_n)*<2>(_a)(le).?=/(_isle)<1>^\(_n)*<1>(_a)s.?(_t)f.?(_n)*<2>(_a)s.?(_t)f.?(_a)a.?]}{M[m(_a)A!(_f)F!(_o)O!(_n)<1>=(_nlm)<1>=/(_nlm)(_n)*(_f)f.?(_o)(on).?" "(_o)o.?(_n)(_n)*<1>(_a)a.?=(_nlm)(_n)*<20>(_a)(le).?=\]} 09:01:02 0 09:01:29 yep, the Fibonacci program no longer works. 09:09:01 hm... 09:10:04 !glass {M[m(_o)O"Test"T$(_o)o.?]} 09:10:14 !glass {M[m(_o)O"Test"T$,(_o)o.?]} 09:10:30 !glass {M[m(_o)O!"Test"T$(_o)o.?]} 09:10:32 Test 09:10:35 ah 09:12:26 !glass {M[m(_o)O!"ho""Test"T$,(_o)o.?]} 09:12:30 ho 09:13:44 oklopol: sorry about the $ specification, it was a documentation bug 09:41:50 although it would probably have been in the spirit of Glass if it wasn't. 10:03:42 -!- oerjan has quit ("Later"). 11:02:31 oh, DM was around 12:40:30 -!- tgwizard has joined. 13:04:23 -!- pgimeno has quit ("kernel upgrade"). 13:37:55 -!- pgimeno has joined. 13:39:26 -!- jix_ has joined. 16:40:44 -!- pikhq has joined. 16:43:17 * SimonRC looks at the nasty glass 16:43:21 ouch 16:43:36 * pikhq thinks about making BFM shorter 16:44:38 basm 16:54:13 -!- oerjan has joined. 16:57:37 hi 17:02:27 hi 17:11:18 'Lo. 17:32:25 -!- pgimeno has quit (Remote closed the connection). 18:05:48 -!- ihope has joined. 18:44:51 -!- ihope_ has joined. 19:00:55 -!- pgimeno has joined. 19:01:54 -!- ihope has quit (Connection timed out). 19:59:11 -!- ivan`_ has joined. 20:06:53 -!- ivan` has quit (Read error: 60 (Operation timed out)). 20:06:54 -!- ivan`_ has changed nick to ivan`. 20:35:45 -!- ivan`_ has joined. 20:42:41 -!- ehird has joined. 20:43:09 -!- ehird has left (?). 20:43:23 -!- ivan` has quit (Read error: 145 (Connection timed out)). 20:43:26 -!- ivan`_ has changed nick to ivan`. 22:16:24 -!- Asztal has joined. 22:34:48 -!- oklopol has quit (Read error: 54 (Connection reset by peer)). 22:34:54 -!- okokoko has joined. 22:39:47 -!- Asztal has quit (Read error: 104 (Connection reset by peer)). 22:49:13 -!- ivan`_ has joined. 22:54:10 -!- oerjan has quit ("Good night."). 22:55:30 -!- ivan` has quit (Read error: 104 (Connection reset by peer)). 22:55:30 -!- ivan`_ has changed nick to ivan`.