00:02:34 -!- RedDak has joined. 00:26:07 ooooookloooooopolllllllll!!! :D 00:31:14 -!- oerjan has joined. 00:41:11 * oerjan celebrates Irregular Webcomic's 2000th strip 00:41:52 oerjan: It's "Irregular Webcomic!". 00:42:46 YOU BROKE MY CELEBRATION! MY VENGEANCE SHALL BE GRUESOME! 00:43:15 BUT, FULL OF EXCLAMATION MARKS! 00:43:33 surely it makes no sense to celebrate the 2000th strip of a comic called irregular 00:43:40 2000 is so regular! 00:43:53 you should celebrate the 2031 strip. 00:44:12 well Irregular Webcomic! is one of the most regular webcomics out there 00:44:21 ironic 00:45:12 although i vaguely recall DMM hoping to pass Bill Watterson's Calvin and Hobbes score, which is surely more irregular 00:46:14 true geeks will also celebrate 2048, of course 00:46:42 although they will not call it irregular either 00:51:56 http://www.irregularwebcomic.net/15.html 00:51:56 auuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuguuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuur 00:52:02 you'dathought someone would have made it 00:52:23 :D 00:52:53 well that was a long time ago. someone might want to recheck. 00:53:06 not me, i don't read newsgroups any longer :( 00:53:25 http://www.irregularwebcomic.net/15.html 00:53:27 how poignant 00:53:29 i checked 00:53:30 it doesn't exist 00:53:41 how do you make a usenet group again 00:53:42 <.< 00:53:48 also, his website has its own forum (which, for some reason, i read) 00:53:55 when was that strip posted? 00:54:06 oh i see 00:54:09 4 feb 03 00:54:10 shame 00:54:22 itd be more poignant if it was posted in the last week 00:55:05 well it cannot, since DMM is on the Infinite Plane of Death without computer access :D 00:55:07 oooooooo 00:55:33 pardon, the Finite Plane of Death with Two Features 00:55:47 i mean, am i the only one who thinks its ridiculous that half the ISPs in america are banning the alt hierarchy 00:55:48 ?? 00:55:56 (it used to the Infinite Featureless Plane of Death, but then the Mythbusters got onto it) 00:56:09 *to be 00:56:33 HI EVERYBODY 00:56:56 (er, i guess i'm spoiling a lot here) 00:57:27 HI OKLOBEING 00:58:23 the alt hierarchy was always less distributed (when i read newsgroups) 00:58:40 and more noisy 00:58:41 -!- tusho has quit. 00:59:55 and now the alt hierarchy is nonexistant 01:00:07 ofcourse, none of it has to do with what they actually say its about 01:00:14 they wanted the alts shut down because of kiddie porn 01:00:37 but you wanna bet its the MPAA's hand trying to get it shut down because of movie sharing? :) 01:01:10 * oerjan might cough up a couple kroner for that bet 01:01:36 but then, it's probably both 01:03:19 well 01:03:27 ofcourse they got SOME worried parents to back it 01:03:40 but is it those parents that came up with the idea? lolno. 01:03:46 they probably dont even know what usenet is 01:14:03 -!- RedDak has quit (Read error: 104 (Connection reset by peer)). 01:14:56 "Irregular Webcomic: 500 Internal Server Error" 01:15:19 looks like the servers a bit ... IRREGULAR! bwahahahaha!!! XD!!! 01:15:28 hm? i am reading the forum at this moment. 01:15:29 *cough* 01:15:55 hm indeed the main page is down 01:16:43 database error, it says 01:16:47 you act as tho thats at all relevant to the humor :P 01:17:10 oh sorry, was in reading mode 01:17:37 i guess that means my brain is determined to seek out information 01:34:59 waffles! 01:35:07 hrrr! 01:35:10 :( 01:35:15 * oerjan has no waffles 01:35:37 cool waffles 01:35:42 so cool 01:35:49 nope 01:35:53 hot waffles 01:35:59 warm and cuddle 01:36:01 *cuddly 01:37:30 waffles are so tasty omg 01:38:29 maybe if i put some raspberry jam on this cardboard... 01:39:19 god i envy you 01:39:41 i remember i used to enjoy eating paper when i was a kid 01:40:40 HEY I'M TRYING TO PREY MERCILESSLY ON YOUR SYMPATHY HERE, DON' 01:40:45 T RUIN IT! 01:41:35 darn apostrophe so close to the return key 01:45:17 yeah, but the real wtf is that backspace is too. 01:45:37 paper huh 01:45:42 maybe you just needed some fiber 01:47:16 i have a feeling the backspace is less of a problem, perhaps because when i use it i'm snapping out of automatic touch mode anyhow 01:47:58 oerjan: good point, that may be the reason it's much less problematic in practise than you'd think 01:48:08 i have made some pretty nasty mistakes because of it though 01:48:28 since i often first type, then think, then rewrite 01:49:07 well i'm pretty sure i've done some of that too 01:49:22 this is all vague recall territory 01:49:58 <-- coffee 01:50:31 (not --> coffee as i already got it :) ) 01:53:58 -!- Judofyr has quit. 01:57:22 hey i want coffee too 01:58:16 BWAHAHA now you just sit there with your waffles! 01:58:46 mind you it's just instant coffee 01:58:55 -!- adu has joined. 01:59:09 its funny how good news and bad news usually come at the same time 01:59:11 -!- Corun has quit ("This computer has gone to sleep"). 01:59:26 like with the coffee and waffles? 01:59:56 no like promotions and responsibility 02:00:01 ah 02:00:21 :) :( 02:00:35 :/ 02:00:42 :X 02:00:44 >:-> 02:00:50 :P 02:01:08 those should all be vi commands... 02:01:28 should be or actually are? 02:02:08 speaking of which I just realized that the "yi" editor is indistinguishable from "vi" when displayed in a text box that's 5 pixels too small 02:02:45 * oerjan senses a use/mention error there 02:02:50 only the last one is a real command, probably short for :Print or something 02:03:05 not even :X ? 02:03:14 maybe :exit 02:03:22 * oerjan brings up vim 02:03:27 i don't know vi very well 02:03:37 I use emacs 02:03:49 'yi' uses many emacs keybindings 02:03:54 :X is encryption 02:03:58 o heh 02:04:21 although "yi --as=vim" should set vi-like keybindings 02:04:41 :/ can start a command, since /.../ is a search that can give a line number 02:04:54 o wow 02:04:59 -!- GreaseMonkey has joined. 02:05:04 hi GreaseMonkey 02:05:28 i want to implement fancy keybindings 02:05:34 'lo 02:05:36 like yi --as=xcode 02:05:53 or yi --as=kdevelop 02:06:15 or yi --as=vstudio 02:06:26 heh, :P "Just as ":print". Was apparently added to Vi for 02:06:26 people that keep the shift key pressed too long... 02:06:44 i was right! 02:07:32 no 02:07:46 :P is "Put the text before the cursor [count] times 02:07:50 " 02:08:03 no, that's P. :P is different 02:08:16 o hehe 02:08:25 i need to learn how to use vim :help :p 02:08:40 :H 02:09:15 :help :H shows an obscure :Hexplore command 02:09:37 my :help :H shows the help for :h 02:09:53 oklopol: !! 02:09:57 :help :h is different 02:09:59 hows the lang going? 02:10:03 (== :help) 02:10:28 hm :H actually _does_ seem to work as :help 02:11:31 it may be trying the case alternative if it finds nothing more precise 02:11:55 adu: which lang? 02:11:56 :) 02:12:50 i do vaguely recall our talk, but not what the language was 02:14:42 oklang? 02:15:12 hmm, unless you have multiple languages 02:15:41 oklopol has multiple _everything_ 02:15:58 oklopol: do you have multiple girlfriends? 02:17:01 oklopol: so how many languages have you made? 02:18:11 oklopol? 02:18:36 inquiring minds want to know, and will soon start blowing things up if not 02:18:53 well 02:19:10 * oerjan does recall oklotalk 02:19:24 I wouldn't blow up, I'd just start talking about excrement and nasty stuff until oklopol decides to talk... 02:19:45 oklotalk! thats the one 02:19:47 this might actually chase away everyone _but_ oklopol 02:19:59 lol 02:20:27 and lament, who _might_ kickban you in extreme cases 02:20:42 i like lament 02:21:00 he is always sad in the most funny way possible 02:22:22 adu: i have made quite many languages 02:22:42 have you made it to oklotalk++ yet? 02:23:02 :) 02:23:08 i've only made oklotalk-- in fact 02:23:15 ic 02:23:18 even better! 02:23:32 http://www.vjn.fi/oklopol/oklotalk--.txt 02:23:36 not really :P 02:23:38 is that like C with closures, without closures? 02:23:47 it's a simplification of oklotalk, basically. 02:23:53 with a boring lisp-like syntax 02:24:11 you should haskell syntax 02:24:12 and no, not like C with & without anything 02:24:25 well oklotalk has a cool J-like syntax already 02:24:35 i have enough languages with haskell-like syntax 02:24:47 like jo98*&x0fkc9X;;g$[] 02:24:53 well i guess just graphica, and that's not all that close either 02:24:58 yes, something like that 02:25:10 every string is a legal oklotalk program 02:25:17 oo I just had a terrible idea 02:25:22 that was one of my design goals 02:25:22 Funge.NET 02:25:31 i don't know much about .net 02:25:37 its terrible 02:25:43 Funge would be the nice part 02:25:47 well yes i know that much 02:25:50 lol 02:25:55 o_O 02:26:09 oklopol, so since every thread only has a one-byte state... the way you do binary/triary operations is by having two bugs collide on top of the same instruction 02:26:15 (bugSophia here) 02:26:19 and... to make that sane 02:26:23 CakeProphet: yes, i know 02:26:37 so operators are fully symmetric on parameters? 02:26:38 err 02:26:39 i mean 02:26:40 oklopol: for library implementors its a nightmare, because of the magnitude of libraries you have to implement, and for a library user, its a nightmare, because of the magnitude of libraries you have to remember and search through 02:26:43 there's an instruction that's "move forward one step and halt until a non-halted bug collides with you" 02:26:44 sane? isn't this off-topic? 02:27:10 CakeProphet: alright 02:27:22 but, err 02:27:32 all operators can take their operands in any order? 02:27:41 ...if they can't, I'm boned. 02:28:03 CakeProphet: you're boned 02:28:13 * oerjan is suddenly reminded of the sentient ant colonies from Godel, Escher, Bach 02:28:14 well i guess - A B = + (- A) B and similar shit can be done for other non-symmetric things 02:28:19 err 02:28:25 oklopol: /if/ I allow negatives 02:28:28 - A B = + A (- B) 02:28:31 but current state is represented in bites 02:28:34 *bytes 02:28:36 which 02:28:37 are not negative. 02:28:50 bites would be more in keeping with the bug theme :D 02:28:55 ...not to my knowledge. 02:28:56 :) 02:29:06 lolol 02:29:14 CakeProphet: "byte" does not say anything about semantics really 02:29:24 you know 2's complement? 02:29:36 aye 02:29:45 2's company 02:30:07 but I don't really feel like treating bytes as short integers for the purposes of having negatives. 02:30:11 I could just define them as "numbers" 02:30:24 well no need for negatives 02:30:28 in this implementation, Python integers. 02:30:40 ya 02:30:42 oklopol: for subtraction I'd need either negatives or some way to order the operands. 02:31:14 well not necessarily, you need decrement, and flow control 02:31:21 that will be had 02:31:36 I was thinking flow control could be implemented in the halting rules. 02:31:39 so, for example. 02:32:06 all you need to make sure is is that there is infinite space, the rest will come naturally :D 02:32:23 ya 02:32:25 *-is 02:32:36 if you had an operation that tested the equality of two threads... 02:32:41 FungeSpace + BigInteger 02:32:44 alll you need... 02:33:21 no need for bignums 02:33:27 fs is infinite 02:33:47 so that... when they both crossed the operation... a new threads are sent on all the non-taken paths containing either a 1 or 0 02:34:00 -a 02:34:04 and then 02:34:07 oklopol: fs? 02:34:12 fungespace 02:34:20 an operation that kills a thread if its 0... and an operation that kills a thread if its non-0 02:34:26 i assumed you'd get that as you capitalized the chars 02:34:33 oklopol: then what can each cell in fungespace hold? 02:34:41 you can essentially using the "halt until you cross a non-halted bug" rule to implement flow control / conditionals. 02:34:44 well i assume a fixnum 02:34:48 16bit? 32bit? 64bit? which one? why? why not the others? 02:34:53 err 02:34:57 32 perhaps 02:35:03 why not 64? 02:35:22 why not 256-bit? 02:35:24 i've never seen any need for anything other than bignum anywhere 02:35:27 CakeProphet: ya! 02:35:28 so don't ask me 02:35:30 i didn't make it 02:35:44 i believe in the 0/1/infinity rule 02:35:48 oklopol: you mean fixnum 02:36:04 what? 02:36:22 you said you though bignums were all you need 02:36:28 did you mean the opposite? 02:36:50 i meant exactly what i said 02:37:15 i meant, hard to answer why 32 instead of 64, when i find them both quite arbitrary 02:37:25 a ok 02:37:57 I personally thing all bignums should be encoded like UTF8 02:37:59 i don't really care much for the practical aspect of computers 02:38:12 so... if a quote creates a bug with a state of nil... and "e" tests the equality of up to 4 bugs, ~ is the "halt after one step" operator, and # is the "destroy if 0 or nil" operator. 02:38:19 then. 02:38:37 (oh... and ) is increment, and ( is decrement) 02:38:45 :) 02:39:28 CakeProphet: what was ":" do? 02:39:45 adu: anyway, about the languages of mine, http://www.vjn.fi/oklopol/ and see the ones after thue 02:40:14 not all, but most of what i have any kind of specs ready 02:40:32 is that a face? 02:40:32 v))<">))v 02:40:34 | | 02:40:36 >~e~< 02:40:38 ... 02:40:40 it would help 02:40:45 if this was fixed width 02:41:03 I shall pastebin it somewhere. 02:41:11 lol you implemented bf in cise? lol 02:41:41 yes, assuming that's correct 02:41:48 ...it's not 02:41:54 I hit enter too soon 02:42:21 adu: i'm more confident about the shorter programs 02:42:43 although all i've actually implemented abot cise is the parser 02:43:06 whats graphica? 02:43:16 my graph creation language 02:43:31 the sample is a binary hypercube 02:43:45 just had a long lecture about it like yesterday :P 02:44:17 i like straw 02:44:33 tried to make it a bit sane 02:44:55 straw is about clean side-effects when it comes to mutational changes in data structures 02:45:00 basically 02:45:09 ic 02:45:09 you can have a function to change an element in a list 02:45:16 have you heard of Disciple 02:45:20 no 02:45:30 it also takes in interesting approach to side effects 02:45:43 http://pastebin.ca/1076165 02:45:50 comments are like brainfuck comments. 02:45:52 you know how in Haskell, print :: a -> IO () 02:46:04 yeah 02:46:09 in Disciple, print :: a -(IO)> () 02:46:12 just make sure they don't include quotes anywhere otherwise you'll accidentally spawn off extra threads... (though no worries... they'll likely not get anywhere or do anything) 02:46:19 or something like that 02:46:34 basically, you can have a function to change an element in a list, but you can use this functionally, and create an imaginary copy of the list with just the element changed 02:46:35 side effects are put inside the arrow, essentially 02:46:41 but you can still use the original one too 02:46:49 the language keeps track of reverts to the original state 02:46:52 hmm 02:48:03 oklopol: interesting 02:48:10 the equivalent of a string in bugSophia would be make a bug travel down a path... splitting off copies of itself that "pick up" characters via a set-byte-value operator 02:48:17 i don't have anything pretty for the actual IO 02:48:30 and i will certainly have nothing like monads 02:48:36 and then moving those all towards a memory stream... which is some sort of Unicode character with a , (write operator) next to it. 02:48:48 oklopol: I actually perfer arrows to monads 02:48:58 arrows? 02:49:03 you mean what disciple does 02:49:20 Monads are like a safety net, Arrows are like 24/7 body guards 02:49:48 ...aside from being ridiculously concurrent, bugSophia isn't all that conceptually interesting. I kind of want to make it a bit weirder. 02:50:00 oklopol: no, Disciple just adds syntax to describe "->" more indepth 02:50:21 an Arrow is a Haskell type class, just as Monad is a Haskell type class 02:50:28 i need to watch some dark angel now, see you in a while 02:50:32 ah 02:50:32 ok 02:50:32 i see 02:50:38 but bye 02:50:43 l8r 02:53:01 ...perhaps I should have wormholes. 02:53:20 so that all the little - | > < wires don't get cluttered. 02:53:23 also, time travel 02:53:29 on it. 02:54:11 oklopol currently wins at interestingness. ;_; 02:54:14 the negative lists thing is epic. 02:55:34 I think I'll also a ; operator.... which is "write to a stream and then blocking-read" 02:55:51 so you can basically have 02:55:53 functions 02:56:08 oklopol also wins at sexiness. 02:56:17 mind you i've invented more interesting things than negative lists! 02:56:29 oklopol, you need to explain negative lists to me. 02:56:37 I might be able to explain it.... 02:56:40 augur: see logs, it took a while to explain :P 02:56:46 that's another possibility 02:56:47 but I am not too confident 02:56:50 i refuse to look at logs. 02:57:06 augur: I beg to differ: http://i83.photobucket.com/albums/j316/adamadamadamamiadam/sepialol.jpg 02:57:16 that is pure sex. 02:57:23 CakeProphet: you? 02:57:28 mhm 02:57:34 god you've grown 02:57:51 rofl 02:57:52 no sorry 02:57:54 oklopol is hotter 02:57:55 it's been like... 2 years? 02:57:57 you have no lips 02:58:03 if you had lips you might be as sexy as oklopol 02:58:05 but you're not 02:58:15 i like your hair tho 02:58:20 also: shave dude. 02:58:30 TOO 02:58:32 LAZY 02:58:38 i don't shave either 02:58:48 augur is going by an old photo here :) 02:58:53 yeah but oklopol, you're hot. 02:59:01 give me more photos oklopol :D 02:59:29 I bet we both have very slavic noses. 02:59:47 oklopol has a 100% sexy nose 03:00:08 I sometimes think I spend too much time organizing my interpreter code. 03:00:25 I actually document it 03:02:42 oklopol!!! 03:02:45 pictures! 03:05:08 !!!!!!!! 03:05:34 augur: perhaps some day 03:08:14 *today 03:15:17 I believe I had @ as the thread terminator 03:15:18 as 03:15:21 it looks like a big hole 03:15:27 that they would fall in or something. 03:17:56 epic negative lists? 03:18:04 did I miss something? 03:18:36 -!- augur has quit (Nick collision from services.). 03:18:47 a concept i invented for nopol 03:18:58 -!- augur has joined. 03:19:10 rofl... go figure... the halting problem is computable for bugs. 03:19:30 if there is no ~... it's not going to halt (I don't think) 03:19:36 oh 03:19:38 hmmm 03:19:43 but you can't determine when they terminate 03:19:47 which is 03:19:49 what actual halting is. 03:19:51 ... 03:22:48 -!- augur has quit (Nick collision from services.). 03:23:10 -!- augur_ has joined. 03:31:52 oklopol: so whats a negative list? 03:32:00 ...lol 03:33:05 adu: -1. it's a list. -2. it 03:33:10 please forgive adu, i think hes a noob. 03:33:13 's negative. 03:33:17 -!- augur_ has changed nick to augur. 03:33:20 no 03:33:21 -3. darn apostrophe again 03:33:22 I was loling at 03:33:24 how long that will take to explain 03:33:46 noob? no no I'm a boon 03:33:47 -!- augur has changed nick to Guest802. 03:33:54 >O 03:33:55 -!- Guest802 has changed nick to augur_. 03:34:01 >_ boon == good 03:34:17 noob == bad 03:34:40 -!- augur_ has changed nick to psygnisfive. 03:35:17 so 0 = [] and 1 = [[]], 2 = [[], [[]]]? 03:36:28 that makes no sense. 03:36:31 I enjoy writing Python code that only has like... 2 or 3 conditionals. 03:37:03 adu, nope 03:37:04 sure it does, standard von neumann numerals 03:37:07 oklopol: so you still haven't answered my question 03:37:15 i'm talking about negative lists 03:37:18 adu, I could explain if you like. 03:37:20 what are they? 03:37:26 CakeProphet: ok :) 03:37:30 so 03:37:42 if () is a list with a depth of 1 03:37:47 and (()) is a list with a depth of 2 03:37:53 ... then 03:38:00 <> will be a list with a depth of -1 03:38:05 and <<>> will be a list with a depth of -2 03:38:08 for our purposes 03:38:09 i dont know von neuman numerals 03:38:15 oooooooooooo 03:38:19 notation = helpful 03:38:31 are you familiar with how tree rewriting languages work? 03:38:32 so (a, b, <(c, d)>, e) == (a, b, c, d, e)? 03:38:48 ...unfortunately not with the current concept. 03:38:51 o 03:38:52 n/m 03:38:58 it would be nice though 03:38:58 I'm back to confusion 03:39:18 but anyways... are you familiar with how tree rewriting languages work? 03:39:35 I'm familiar with Haskell, Prolog and Mathematica 03:40:00 familiar with thue at least? that's string rewriting. 03:40:12 how do I find information about thue? 03:40:27 http://esolangs.org/wiki/Thue 03:40:35 it just helps to have a solid foundation on tree rewriting 03:40:36 ah 03:40:42 before you can understand why negative lists make sense. 03:40:52 well, Mathematica is a tree rewriting language 03:41:10 tree rewriting is just like string rewriting 03:41:17 I'm also familiar with the lisp ` ' , 03:41:17 except in place of strings you use structures. 03:41:33 oh... alright. 03:41:35 so like 03:41:51 Mathematica and Lisp are very very similar 03:42:27 Every[Thing[In[Mathematica[Uses[Brackets[]]]]]] 03:42:33 for our purposes, we'll use => as a tree rewrite operator [A [B C] => [B [C A]] 03:42:35 for example. 03:42:48 ...actually 03:42:56 we'll use ()'s instead 03:43:00 to fit with our above notation. 03:43:01 (every(thing (in (lisp (uses (parent)))))) 03:43:21 ok 03:43:31 so if you have the rule (A (B C) => (B (C A)) 03:43:47 (add a ")" there) 03:43:53 ok 03:43:58 no, YOU add a ")" there! 03:44:12 and an initial state of... ((1 (2 3)) (3 (2 1)) 03:44:14 ) 03:44:52 after on step you'll get ((2 (1 3)) (2 (3 1))) 03:44:54 *one 03:44:58 ...alright... so yeah 03:45:00 you get that. 03:45:06 right 03:45:24 http://reference.wolfram.com/mathematica/ref/ReplaceAll.html 03:45:38 and you can define functions like (func (arguments) go (here and such)) =>(return value (goes here) and what not) 03:45:44 well 03:45:48 on top of all of that 03:45:56 right 03:46:00 we now have negative lists... 03:46:01 which 03:46:20 basically evaluate into positive lists... as I'll explain in a second. 03:46:48 alright... so if you <1 2 3> 03:46:50 +have 03:47:18 im going to check that production. 03:47:55 if D is the depth of the list, and N is the number of elements. 03:48:25 then you duplicate the list D steps above <1 2 3> and duplicate it N times. 03:48:47 *then you take the list D steps above <1 2 3> and duplicate it N times. 03:49:14 so for example. 03:49:49 (== (+ <1 2 3>)) would rewrite to 03:50:13 erm... bad example. 03:50:38 -thinks- 03:51:04 (== (+ <(2 2) (3 3) (4 4)>)) 03:51:07 would rewrite to 03:51:41 (== (+ (2 2)) (+ (3 3)) (+ (4 4))) 03:51:57 which would then rewrite to 03:52:06 (== 4 6 8) 03:52:10 thats just a map 03:52:12 which would then rewrite to being patently FALSE. 03:52:15 ....righto. 03:52:27 so its like a list that is implicitly mapped over 03:52:33 ...yes. 03:52:36 ok 03:52:40 it took me much longer to explain 03:52:42 BUT 03:52:45 they do more than that. 03:52:52 I just explained that first 03:52:54 because its simple. 03:53:01 ok 03:53:13 what happens when you have two negative lists... 03:53:20 in the same list. 03:53:23 like such 03:53:25 its like map . map 03:53:38 yeah... it maps all the possible pairs more or less 03:53:48 that production from earlier doesnt work. 03:53:57 so more like the Haskell list monad 03:54:06 ...not familiar with Haskell 03:54:13 its da bomb 03:54:39 cakeprophet: that production from earlier doesnt work. 03:54:44 ( (== (+ <1 2 3> <1 4 5>) ) 03:54:47 psygnisfive: which 03:54:53 actually... 03:54:54 haskell's list monad is very similar, yes. 03:55:01 the ((1 (2 3)) (3 (2 1))) 03:55:17 ( (== (+ <<1 2 3>> <<1 4 5>>) ) (I liked the thick list idea) 03:55:30 CakeProphet: my favorite Haskell code: nubBy (((>1) .) . gcd) [2..] 03:55:40 yeah he's gonna find that so interesting 03:55:43 :P 03:55:48 ... 03:56:02 I LIKE IT. 03:56:13 the production doesnt work, cake prophet. 03:56:15 but I am a still-toying-with-C-like-languages fag. 03:56:20 psygnisfive: I heard you. 03:56:28 and why not? 03:56:43 adu: nubBy? 03:56:58 adu: totally can't read that. 03:56:59 because the first transformation should result in (3 ((2 1) (1 (2 3)))) 03:57:08 http://haskell.org/ghc/docs/latest/html/libraries/base/Data-List.html#v%3AnubBy 03:57:29 ...no 03:57:39 (A (B C) => (B (C A) 03:57:42 would not produce that. 03:57:49 adu: that doesn't by any chance calculate primes? 03:57:58 oklopol: yes it does 03:57:59 yes it would. 03:58:07 that's quite nice 03:58:13 :) its a classic 03:58:30 A = (1 (2 3)) b = 2, c = (2 1) 03:58:53 weird i never thought of doing it like that 03:59:07 not in ((1(2 3)) (3(21)) 03:59:12 yes it does. 03:59:20 does anyone else agree? 03:59:29 CakeProphet: yes, i do 03:59:30 I'm new to this stuff so I could be wrong. 03:59:46 what am I agreeing to? 03:59:48 in (A (B C)) replace A with (1 (2 3)) and, B with 2, and C with (2 1) and you get ((1 (2 3)) (3 (2 1))) 03:59:58 yes 04:00:00 except that's not how they map 04:00:05 except it is. 04:00:11 k 04:00:23 i mean, how isnt it? 04:00:35 04:00:45 -!- lilja has quit ("KVIrc 3.2.0 'Realia'"). 04:00:52 you can add restrictions to A B and C, that they be numbers, or non-lists, or something 04:00:59 which would indeed produce what you had earlier 04:01:01 in (A (B C)) replace A with (1 (2 3)) and, B with 2, and C with (2 1) and you get ((1 (2 3)) (3 (2 1))) <<< no. 04:01:19 sorry, B with 3 04:01:19 :P 04:01:28 i keep making typos. 04:01:34 you get the point :P 04:01:48 i did, and it was clearly a typo 04:01:59 but it was still wrong 04:02:00 ! 04:02:03 ...oh lawl 04:02:13 I see. 04:02:13 :p 04:02:13 i love you oklopol :D 04:02:18 you should 04:02:21 now 04:02:25 but the point is, as you stated it, cakeprophet, the production was wrong. 04:02:27 i'm gonna sleep 04:02:32 -> 04:02:43 ::kisscheek:: night oklo. 04:02:50 psygnisfive: correct. but it still remains to be proven if I care. 04:02:55 night. 04:03:09 well you clearly care since you were using it as the basis of your example :P 04:03:18 I was using to demonstrate tree rewriting 04:03:21 in case 04:03:24 it wasn't understood 04:03:31 and it was an incorrect demonstration. 04:03:31 but yeah 04:03:36 it would help to be accurate 04:03:41 but it was mainly to describe it. 04:03:43 in any case. 04:03:45 this conversation sucks. 04:04:00 so lets assume, A, B, C <- Atoms 04:04:02 it would help to be a curate 04:04:06 then yes your example is fine. 04:04:29 psygnisfive: I can't be arsed to be pedantic right now. -tired- 04:04:33 oklopol: there is another version of the prime thing that uses 2:[3,5..] for speed 04:04:49 not that "speed" is an issue... 04:05:33 I noticed a couple days ago that when I wrote a hello world app in Haskell there were 200 symbols in the binary... 04:05:34 psh... if you want speed just compile Haskell to C. 04:05:45 CakeProphet: thats what GHC does 04:06:29 its not pedanticness. 04:06:32 Today, we are going to learn how to make plutonium from common household items. 04:06:39 * pikhq just watched UHF. :D 04:06:39 lol 04:06:44 if youre trying to explain something and you say something wrong, its wrong. 04:06:57 also, your explanation of how negative lists rewrite makes no sense. 04:07:07 Hrm. New people in the channel. . . 04:07:13 hi pikhq 04:07:15 Something of ours hit Digg or something again? 04:07:23 no, I'm just bored 04:07:27 who's new? 04:07:32 I'm old 04:07:38 you sound like a noob. 04:07:42 I've been here 5 times in the past year 04:07:51 you're a noob. 04:08:01 no one here is new. no one. the channel is DYING! 04:08:14 psygnisfive: I wrote a funge98 interpreter in Perl once, so I'm not a noob 04:09:18 Hrm. 04:09:20 pikhq: so what's up 04:09:29 youre still a noob :D 04:09:31 However, there are people who aren't here who used to be. 04:09:40 adu: Nothing much; just sitting here. 04:09:45 excuse me its _boon_ 04:09:51 get it right 04:10:05 * pikhq mutters about the untimely 'death' of Sukoshi. 04:10:06 lmfao 04:10:16 noob. 04:10:20 boon. 04:10:30 and definitely not modest either. 04:10:40 Well, *I'm* no noob. 04:10:51 * CakeProphet is a oldbie noob. 04:10:51 hi pikhq, can I help you today? 04:11:07 adu are you crying for attention? 04:11:08 I wrote PEBBLE before you were born (you young wippersnappers)! :p 04:11:21 lol 04:11:28 get off my lawn! 04:11:37 psygnisfive: is there any other reason to go on irc? 04:11:42 * pikhq gets the self-aiming sprinkler 04:11:57 http://pastebin.ca/1076260 - the current state of my bugSophia interpreter 04:12:18 well-documented, incomplete, and most likely bugged. 04:12:29 like all my other programs. 04:12:39 i should sincerely hope it is bugged 04:13:01 bugged? 04:13:06 are the soviets listening in 04:13:07 ? 04:13:08 CakeProphet: is there a reason you use dict() instead of {}? 04:13:21 other than personal preference, no. 04:13:30 same thing semantically. 04:13:34 no, the north koreans and the zimbabweans 04:13:56 also, cthulhu 04:14:08 damn north koreans 04:14:10 if I had a reason... it'd probably be that I can actually type out dict() faster than I can type {} 04:14:17 because my curly bracket typing abilities are very slow. 04:14:28 CakeProphet: lol fair 'nuf 04:14:54 my parens typing abilities are slow 04:15:12 thats why I perfer Mathematica over Lisp 04:15:16 oh yeah... definetely bugged. 04:15:21 I didn't even do grids = [] 04:15:24 somewhere at the top 04:15:55 lisp is sexier. 04:15:58 so uniform.. 04:16:00 its beautiful T_T 04:16:17 I think Perl is pretty beautiful 04:16:23 for the exact opposite reason. 04:16:26 but so is Lisp 04:16:32 also, i use textmate which autobalances parens :D 04:16:35 I think Io is beautiful 04:16:52 ........oh yeah 04:16:56 I've never used it 04:16:58 but it looks really clean 04:17:01 io huh 04:17:17 Io sono bello 04:17:28 http://www.iolanguage.com/ 04:17:33 I mean seeing "clone" instead of "new" or "class" just seems right... 04:17:41 it looks terribly eh. 04:17:54 adu: you'd like Self then. 04:18:16 you never know if you're subclassing or instantiating... all the same... 04:18:24 I'm not sure if thats a good thing, but its pretty :) 04:18:42 javascript is theoretically like that, but practically its not. 04:18:44 I like that it implements lazy evaluation of function arguments. 04:18:49 by default. 04:18:50 also, im never sure how copying works in prototype based languages. 04:18:58 atleast when it comes to object graphw 04:18:59 s 04:19:10 does a copy of an object also copy all the objects it references? 04:19:17 or does it only copy the object itself, and then copy the references? 04:19:49 psygnisfive: theres probably different methods for each 04:20:05 like copy and copy_recursive 04:20:13 I think its context sensitive 04:20:20 ...for io anyways 04:20:33 it would be a waste of memory to actually make copies of each function 04:20:40 a reference would be enough 04:21:28 but I think io actually makes clones of everything else. 04:21:34 so its a deep copy 04:21:42 psygnisfive: what's your favorite systems language? 04:21:51 "systems" language? 04:22:05 a language that an operating system has been made in 04:22:25 i.e. NOT html 04:22:40 who cares that an OS was made in it? 04:22:48 me 04:22:52 io is very nice... 04:23:02 control flow statements 04:23:04 and functions 04:23:06 are the same 04:23:09 which is very clean to me. 04:23:37 and it uses smalltalk message-pasing syntax, which always looked nice to me. 04:23:40 it lacks a lot of punctuation. 04:23:43 adu: thats a silly requirement. 04:23:49 psygnisfive: what's your favorite usability language? 04:24:03 whats my favorite language in terms of usability? 04:24:08 yes 04:24:08 ...I find Python the easiest used. 04:24:10 but 04:24:15 that's because it was my first 04:24:15 and I am most comfortable with it. 04:24:21 i like ruby. 04:24:26 nice 04:24:37 psygnisfive: what's your favorite obfuscation language? 04:24:41 Ruby is alright. Its syntax is a little weird, but I like some of its design. 04:24:48 adu, also Python. 04:24:56 Perl is next. 04:24:57 ruby syntax is.. very simple. o_O 04:25:02 python for obfuscation? 04:25:11 lets see 04:25:14 psygnisfive: it always reads weird to me... like "list.each do" 04:25:18 it's not conceptually difficult 04:25:21 why?? 04:25:21 -!- oerjan has quit ("And your little dog too!"). 04:25:22 it just sounds weird in my head. ;) 04:25:28 the each method takes a block argument 04:25:32 psygnisfive: I would say Python syntax is simple, Ruby syntax is versitle 04:25:38 its not list.each do 04:25:45 its list.each(do...end) 04:25:52 psygnisfive: not arguing with you there. 04:25:54 right 04:26:00 since parens are optional, each do...end 04:26:01 you don't actually need the parens there. 04:26:03 psygnisfive: what's your favorite compiled language? 04:26:04 yeah 04:26:05 is completely sensible. 04:26:11 ...it is, sematically. 04:26:18 but not in my head.... when I say it mentally-aloud. 04:26:25 obfuscation language: dunno, dont obfuscate. 04:26:30 compiled: well, lisp. 04:26:45 "list each do stuff end" doesn't even vaguely make sense in English 04:26:46 cakeprophet: well you need to mentally read differently 04:26:48 psygnisfive: you could have said lisp for systems language too 04:26:50 I'm used to Python 04:26:54 where everything reads nicely. 04:27:01 adu: ok? 04:27:03 and? 04:27:11 cakeprophet: ruby reads nicely too :P 04:27:24 -shrug- personal preference. 04:27:46 i like Ruby 04:27:55 i love Haskell, tho 04:27:58 cakeprophet: ruby practically reads like english. :P 04:28:03 hakell is nice too yeah 04:28:06 but up to a point. 04:28:08 * adu <3 Haskell 04:28:12 ....that, however, I will disagree with. 04:28:14 its too academic for me, too confusing 04:28:24 using the list.each do ... end example again. 04:28:43 explain how it reads like English. 04:28:53 well, if each were a function it'd be even more like english, yes i agree 04:28:58 each list do ... end 04:29:17 but its a method. so in that regard it has quantifier ordering reversed. 04:29:18 ...that would be odd. 04:29:25 why would that be odd? 04:29:30 it would read more like English, yes. 04:29:30 for each item in list, do ... 04:29:36 but the English that it reads like 04:29:40 would cease matching its semantics 04:29:54 how so? 04:30:08 because "each x" would suggest there are mulltiple x's being looped over. 04:30:11 when it is the thing 04:30:17 that the things come from 04:30:19 with (list) for (each) item in it, (do ... end) 04:30:24 uh.. no it wouldnt. 04:30:39 for each integer, double it. 04:30:43 I think it would make more since if it were a function like each(|dog|, pound, do ... end) 04:30:44 integer.each double 04:30:45 but then 04:30:47 I would stop liking Ruby. 04:31:21 integer is a collection 04:31:21 in english 04:31:21 thats how it works in english 04:31:21 -nod- it would vary by what you named the variable. 04:31:22 quantifiers like each, all, some, etc. all work on classes 04:31:22 I persoanlly like the {'s better 04:31:24 sets, if you will. 04:31:27 instead of do...end 04:31:33 for blah.each 04:31:36 thats an irrelevant choice. :P 04:31:44 because then the variable name is next to the each... and it makes more sense Englishly. 04:31:54 list.each {|item| ....} 04:31:58 or however the syntax is. 04:32:03 that is correct. 04:32:23 Englishly 04:32:26 it doesnt make it more englishy 04:32:34 its only more englishy if the english sentence uses a variable 04:32:37 ...but since I dislike {} for blocks... (because I type them slowly... which is why I use dict() instead of {}) 04:32:38 which it doesnt, when you just use classes. 04:32:45 I would prefer instead indentation... because... I am a pythonfag. 04:32:51 for each integer do something to it 04:33:02 but indentation makes it weird to objectify blocks 04:33:03 that does not have the variable name 04:33:06 ofcourse you're right if you had 04:33:15 which is one of the "benefits" (advantages... or whatever) of Ruby. 04:33:17 for each n in integers, do ... 04:33:36 yeah 04:33:39 that's pretty much 04:33:47 the best English-reading syntax you could do. 04:33:49 but 04:33:51 it's not very terse. 04:33:52 i personally think all this talk about english is leaving other natural languages out in left field, isn't that unfair? 04:34:00 adu, noep 04:34:13 but noone would say that 04:34:15 CakeProphet: have you ever tried to tokanize Japanese? 04:34:16 they can get there own god damn languages. :P 04:34:18 they would just say for each integer, double it. 04:34:39 ive done formal semantics of japanese :D 04:34:39 token 04:34:44 adu, I'm assuming it takes a while? or is it easy because it's characters instead of words? 04:35:21 psygnisfive: anata no nihongo wa perapera desuka? 04:35:48 psygnisfive: yeah... not saying it should be English... I just like for things to make sense in my head. it's not really a fault of the language or anything. 04:35:49 perapera to shiranai no 04:35:50 CakeProphet: its impossible without a dictionary, because there are no spaces 04:35:56 I like Ruby's semantics. 04:36:12 cakeprophet: i suspect you would say "For each blah, do blah" as well 04:36:34 you're reflecting right now, which is iffy. 04:36:34 really in normal conversation 04:36:38 you'd just say double each integer. 04:36:43 well yes 04:36:44 psygnisfive: its ok, perapera == fluent 04:36:48 speaking off 04:36:58 thats the syntax i wanna use in my sexy sexy language 04:36:58 but that's not explicit enough for a programming language 04:37:03 cakeprophet: wanna make it? :D 04:37:08 double(x) each |x| integer 04:37:16 adu: no, i'm not fluent in japanese at all. 04:37:21 there's a missing implied variable there. 04:37:41 cakeprophet: cmon, lets make a language :D 04:37:48 -shrug- I have places to go. 04:38:14 to me... Perl's one-line control flow statements 04:38:19 and Python control-flow expressions 04:38:22 read the most like english 04:38:23 out of all of them. 04:38:27 i wanna make a language that has implicit ability to understand quantified nouns 04:38:30 (... for item in list) 04:38:33 in Python 04:38:35 and 04:38:44 which would make maps nice and each to see 04:38:59 as in your example, double each integer is equivalent to like 04:39:06 map double integers 04:39:19 if this were haskell 04:39:21 ...you can do that in languages already. 04:39:24 yes 04:39:32 but double 5 would just be 10 04:39:34 CakeProphet: which one? 04:39:36 or if you had a double function map(double, integer) in at least 10 languages. 04:39:47 sure but 04:39:49 the point is 04:40:07 double as a function would be taking as its argument a quantified noun 04:40:12 not being passed to a map function 04:40:17 ah 04:40:36 the interpreter would say, aha, this is an application to a quantified item 04:40:46 which means apply it to each item like a map, or some such 04:41:03 double (each integer) 04:41:18 yeah 04:41:33 well... if you had it so that each item in integer implicitly received all messages 04:41:35 that would work 04:41:38 even tho the double function would only ever be defined as int -> int 04:41:43 but it wouldn't work well for lots of other namings. 04:41:47 such as 04:41:49 doucle (each list) 04:41:52 *double 04:41:54 well yes 04:42:04 but thats your problem to name things correctly :P 04:42:18 it does not makes sense 04:42:21 to name a list 04:42:23 as integer 04:42:23 what? 04:42:26 well 04:42:28 integers 04:42:29 integer = [] 04:42:30 ? 04:42:44 ofcourse you could use another quantifier 04:42:46 double all integers 04:43:02 but anyway 04:43:12 even "double each integers" is fine. 04:43:18 not perfectly english but so what 04:43:31 it reads pretty damn close 04:43:57 the point tho is quantifiers 04:44:11 even if it was dbl E ints 04:44:14 the point is the quantifiers. :P 04:48:19 ...if you wanted to break into english parsing. 04:48:34 actually ive got some ideas about using some of that stuff too ;) 04:48:34 you could have variables change form based on context. 04:48:40 tell me more. 04:48:43 rather than being a static name 04:48:56 like you could say 04:49:03 x is some integers 04:49:07 er... 04:49:17 I mean 04:49:27 integers refers to the whole 04:49:31 integer refers to parts 04:49:33 basically 04:50:20 well ive already got ideas about using predicate functions that are flagged as such 04:50:26 so that if you say something like 04:50:54 even? 5 == f 04:51:05 in which case each works a lot like implicit mapping. 04:51:15 where the ? is added in-system 04:51:30 so in a traditional programming language... if each were a keyword 04:51:30 whereas if you did just 04:51:31 and you said 04:51:34 even integers 04:51:35 its a filter 04:51:44 double(each integer) 04:51:47 or even 04:51:53 double(double(each integer)) 04:52:03 it would be like 04:52:06 oh, no, i was thinking each would be some sort of function that produces a quantified expression. 04:52:12 map(double, map(double, integer)) 04:52:24 granted, the sum total of it being quantified would simple be JUST (each integer) :p 04:52:32 ...anyways... I have to go. 04:52:39 ok see ya 04:52:42 thanks for the chat... think about it some more and see if you can make sense of it. 04:53:40 inght 04:53:44 -!- adu has quit. 04:54:54 sense of what? lol 04:54:58 theres nothing to make sense of. :P 05:33:47 -!- pikhq has quit ("leaving"). 06:39:06 -!- CakeProphet has quit (Read error: 110 (Connection timed out)). 06:54:19 -!- cherez has quit ("Leaving."). 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 10:22:28 -!- tusho has joined. 10:22:49 augur: i mean, am i the only one who thinks its ridiculous that half the ISPs in america are banning the alt hierarchy 10:22:51 sucks 10:22:59 i've never read a non-alt. group 10:23:00 well 10:23:02 comp.lang.* 10:25:13 i know i'm responding to message from yesterday, but 10:28:16 19:36:28 that makes no sense. 10:28:28 stop fsking saying that to mean "i don't understand negative lists" 10:28:32 we get it already 10:31:38 oklopol: (a b e f) -> ((a b c e f) (a b d e f)) 10:31:53 (a b <>) -> ??? 10:32:39 -!- GreaseMonkey has quit ("HydraIRC -> http://google.com <- Go find something better"). 10:32:40 20:05:34 psh... if you want speed just compile Haskell to C. 10:32:40 20:05:45 CakeProphet: thats what GHC does 10:32:42 Incorrect. 10:32:47 It uses its own code generator nowadays. 10:32:51 Unless -fvia-c. 10:34:06 20:16:32 also, i use textmate which autobalances parens :D 10:34:13 70s abandonware does paren matching, psygnisfive. 10:34:24 and autobalancing 10:35:35 20:25:28 the each method takes a block argument 10:35:35 20:25:38 its not list.each do 10:35:35 20:25:45 its list.each(do...end) 10:35:36 FAIL 10:35:40 blocks are actually 'special' 10:35:44 you can't do (do...end) 10:35:58 you can only pass one block to a function and it has to be outside any parens and after them 10:36:15 and the function can't access it as a normal argument, it has to use 'yield' or have an argumen with & in front of it at the end 10:36:20 which is bound to the block reified into a Proc. 11:23:49 -!- Judofyr has joined. 12:24:33 morning tusho 12:24:40 hi AnMaster 12:29:26 pikhq: Hrm. New people in the channel. . . <<< no new people 12:31:07 adu: CakeProphet: is there a reason you use dict() instead of {}? <<< there are a few problems with in-place changes with the latter 12:31:21 not that either of adu and CakeProphet are here 12:34:57 oklopol: wtf? 12:34:59 they're indentical 12:35:03 :| 12:35:19 dict(a=2, b=3) is {'a':2, 'b':3} 12:35:20 always 12:37:39 psygnisfive: integer is a collection & psygnisfive: in english <<< i disagree 12:40:55 CakeProphet: really in normal conversation & CakeProphet: you'd just say double each integer. <<< 2 * \integers 12:43:04 psygnisfive: array-processing languages are basically based on the kind of implicit mapping you mentioned 12:43:38 CakeProphet: double (each integer) <<< you can define each to work like this in oklotalk, for an arbitrary iterable sequence 12:43:53 -!- Judofyr has quit. 12:46:05 tusho: (a b <>) -> ??? <<< this would not rewrite to anything 12:46:13 ah of course 12:46:30 (a b <(c d)> e) -> ((a b (c d) e)) 12:46:31 the list cannot be eliminated, so the evaluation would be locked, program would terminate 12:46:31 of course 12:46:42 bit of a weird translation, but makes sense when the negative list has more stuff in 12:47:20 tusho: well 12:47:38 oklopol: well 12:47:41 what about this: 12:47:42 wait 12:47:44 (a b e) 12:47:44 -> 12:47:49 ((a b c e) (a b d e)) 12:47:50 right? 12:48:07 hmm 12:48:11 yes exactly 12:48:20 :D 12:48:22 so 12:48:26 if you have one term 12:48:31 it's just ((a b TERM e)) 12:48:38 if it's special cased for one element, well, that's weird :) 12:48:39 also 12:48:44 (a b <> e) -> () 12:48:45 right? 12:48:52 the problem is, the negative lists are all kinda rewritten at the same time on one level, with the current semantics. 12:48:58 well yeah 12:49:00 so there may be some problems 12:49:01 but (a b <> e) -> () 12:49:02 right? 12:49:04 with complex things 12:49:06 err 12:49:20 yes, that's correct 12:49:28 :D 12:49:30 I get them now! 12:49:35 :) 12:49:39 did you get thick lists? 12:50:01 basically, you can have thinner and thicker lists, but thick negatives will only rewrite thick levels 12:50:18 this lets you do declarative programming without having to calculate your depths exactly 12:50:38 hmm well i don't get it but it doesn't sound too complex 12:50:44 but negative lists are cool 12:51:54 http://www.vjn.fi/pb/p366235241.txt <<< i was referring to this behavior, but right, it's not because you're changing the literal, it's because defaults are only evaluated once. 12:52:53 which is actually quite obvious seeing as they are part of the function's data 12:53:53 oklopol: (<(<>)>) -> ((())) 12:53:54 :D 12:54:21 umm 12:54:37 it's true oklopol 12:54:37 (<>) -> (), yeah 12:54:40 :D 12:54:46 and then the upper one 12:54:48 yep 12:54:50 fun 12:55:13 ya 12:55:14 but err 12:55:47 the "problem" is (a b () c d) -> (a b ((e)) c d), while there is some sense in the negativity, it's not at all pure 12:56:27 () -> ((e)), that's trivial 12:56:29 and makes sense 12:56:33 and then you just embed it in another list 12:56:34 so. 12:57:05 but it makes negatives impure! 12:57:27 well 12:57:33 of course it's just a name for the concept 12:57:37 no it doesn't make them impure 12:57:45 well, i mean, you could make it nesting negatives 12:57:46 in which case 12:57:49 i'd expect 12:58:05 (a b () c d) -> ((a b (e) c d)) 12:58:11 that is, the <>s map the topmost list 12:58:12 not the innermost 12:58:20 the semantics are already definitely impure for stuff like < *<> 12:58:50 <...> will always map just one list on top of it 12:59:00 that's where <<...>> comes in 12:59:43 anyway i should do something 12:59:45 perhaps read 13:00:31 i should really start playing with ai, i almost get a boner from even looking at c++ code describing a flock of birds 13:01:08 also i could probably do something spectacular with ob + simple 2d physics 13:07:42 -!- AnMaster has quit (Remote closed the connection). 13:45:10 -!- Judofyr has joined. 14:36:04 -!- CakeProphet has joined. 15:05:52 -!- lilja has joined. 15:10:22 -!- pikhq has joined. 15:10:34 oklopol: i wish i knew pygame 15:14:28 it's not something you know, it's something you google and copypaste 15:15:50 oklopol: yes but i still suck at it 15:18:46 well it's very, very simple 15:19:52 -!- AnMaster has joined. 15:21:24 tusho, ais not here yet? 15:21:43 no 15:27:04 -!- ihope has joined. 15:52:56 AnMaster: it's saturday. 15:54:42 tusho, and? 15:54:51 and he is never here on a saturday 16:05:55 -!- Judofyr has quit. 16:15:16 -!- Slereah__ has joined. 16:21:04 ais is one weird dude. 16:23:48 why? 16:27:36 not having an internet connection 16:33:09 -!- lilja has quit (Read error: 110 (Connection timed out)). 16:33:10 oklopol: or a computer 16:33:15 well i'm not sure 16:38:08 he does not have a connection, i don't know whether he has a computer 17:12:31 ais523 has no internet connection? 17:12:38 Our only hope is Norgg, then. 17:13:00 -!- Ilari has joined. 17:18:40 is there anything uglier than making a bot control it's own physics. 17:19:06 the answer is "no", five points for a "no", go for it. 17:19:49 That's no uglier than how when you play Solitaire, you make yourself abide by the rules. 17:19:57 If you're the type to do such a thing. 17:20:09 And you are. 17:20:28 ihope: err no, that's different. no one mixes the physical game play with thinking about the strategy. 17:20:34 the cards are there to aid your memory 17:20:50 it's not about getting the cards to move correctly in order to win, it's about the tactics 17:21:00 of course, with many solitaires, there are no tactics, but anyway. 17:21:05 What are you doing? 17:21:18 what am i doing? 17:21:41 Having something to do with a bot that controls its own physics, I see. 17:22:21 i'm reading a book called programming game ai by example and wondering why the fuck i'm reading a book that starts by saying it's made for getting ai to look good in practise, not about beautiful academic shit. 17:22:39 Ah. 17:23:00 "Could not create temporary file." 17:23:05 Fuck you, Mutt. 17:23:20 I have "Artificial Intelligence: A Modern Approach", a.k.a. "Russell and Norvig's Big Green Book". Let's trade. :-P 17:23:34 yeah i'm planning to buy that 17:24:02 anyway the book does have some fun ideas, and seeing the ugly c++ code really inspired further development of Ob. 17:24:27 have you read aiama? 17:24:34 Various bits of it. 17:25:06 i've just taken a few random glances inside it 17:25:26 I've taken many random looks at it. :-) 17:27:21 anyway specifically, a soccer ai aims for a point near the goal, the random offset is not even abstracted away from the ai's main kickball method 17:27:30 it's there, as part of the fucking state machine 17:27:49 * oklopol rips something off something and throws something at something 17:58:59 oklopol: ur 18:08:11 hu? 18:09:43 -!- Slereah__ has quit (Read error: 110 (Connection timed out)). 18:11:20 -!- tusho has quit. 18:12:04 -!- tusho has joined. 18:12:26 -!- tusho has quit (Client Quit). 18:12:45 tusho does grasp pedagogically relevant things. 18:12:47 :( 18:14:13 also, i dont get negative lists at all. :( 18:14:33 (1 2 <3 4> 5) i can get but not the others 18:14:41 since they dont seem to follow the same rule as that one :( 18:18:10 hm. ok so (1 2 <> 3) could make sense too if im interpreting it correctly. 18:18:58 -!- tusho has joined. 18:19:07 oklopol: 18:19:13 -!- Judofyr has joined. 18:21:27 if list = (... neg-list ...), then that evaluates to (list'0 list'1 ...) where list'0 = (... neg-list[0] ...), list'1 = (... neg-list[1] ...) and so on? 18:22:23 that is, a list containing a neg-list of length N evaluates to a list A of similar lists, of length N, where each similar list has one of the elements of the neglist in place of the the neglist. 18:22:24 yes? 18:23:13 hence the reasoning that (1 2 <> 3) would evaluate to () since the neglist has the same length as () 18:23:15 yes? 18:24:59 psygnisfive: well 18:25:00 basically 18:25:11 (a b e f) -> ((a b c e f) (a b d e f)) 18:25:19 you see how that works? <...> means 'one of these' 18:25:24 and it produces a list of all possible choices 18:25:27 filled in 18:25:34 there's some nuances, but that's the basic idea 18:25:38 and since <> is 'no choices' 18:25:39 you get () back 18:26:16 psygnisfive: does that make sense? 18:26:18 it kinda -clicks- 18:26:20 at one point 18:29:44 not with <>. 18:29:52 that was my first assumption but it does fail with <> 18:30:03 afk 18:35:02 psygnisfive: no it doesn't 18:35:23 (1 2 <3 4> 5) -> (For each thing in (3 4), (1 2 thing 5)) 18:35:30 For <>, that becomes 'For each thing in ()'. 18:35:35 Thus, it never runs, and we get (). 18:35:54 which language are we talking about? 18:37:25 Judofyr: oklopol's negative lists 18:37:36 psygnisfive contends they're impossible and meaningless or at least used to 18:37:41 meanwhile, one more person gets them every day 18:37:42 :) 18:38:35 link? 18:39:08 Judofyr: no link 18:39:18 :( 18:39:24 people://oklopol/mind/nopol/neglists 18:39:28 have a URI 18:39:57 (1 2 <3 4> 5) -> (For each thing in (3 4), (1 2 thing 5)) 18:39:58 so... 18:40:10 that is basically (3|4) in a regex? 18:40:15 ......................................... 18:40:16 no 18:40:21 but not a regex of course 18:40:33 being expanded instead to all posibilities 18:40:42 possibilities* 18:40:44 tusho, no? 18:40:57 >_< 18:41:09 what? 18:42:07 tusho, ? 18:42:27 i'm not going to bother explaining because it's not worth it because oklopol is better at it than me 18:42:30 ask him. 18:42:41 also, you'll need a bit of a functional programming mind to grasp it. 18:42:41 oklopol, explain! 18:42:44 you might wanna work on that 18:43:10 tusho, well I do understand some lisp but... no I don't have a functional mind... 18:43:36 get one, then try again 18:43:47 tusho, where can I get one? 18:43:58 ;P 18:44:28 yaht & r5rs 18:44:37 & lc 18:44:55 not at the local walmart? 18:45:16 no. 18:45:22 damn ;P 18:46:48 just because various people get them doesnt mean that they make sense 18:46:59 thanks psygnisfive 18:47:08 psygnisfive: so we're all hallucinating? 18:47:12 no. 18:47:24 psygnisfive: i think what you mean is - they don't make sense to you 18:47:27 and yeah, they didn't to me 18:47:30 no of course not, only 12 year old girls are 18:47:31 * AnMaster runs 18:47:38 but, objectively, they do make sense because, um, they exist, and oklopol's implemented them 18:48:09 tusho, are you saying INTERCAL's random compiler bug make sense? or it's turning text thing for input/output 18:48:14 they exist 18:48:35 objectively, they 'make sense' 18:48:42 because they are specifiable 18:48:44 implementable 18:48:44 and real 18:48:49 subjectively, no, they don't ;) 18:48:52 does TURKY BOMB make sense? 18:49:02 AnMaster: partly 18:49:06 hah 18:49:15 did you ever get anywhere with implementing it? 18:49:19 if you give it a liberal enough interpretation 18:49:46 not really 18:49:52 theoretically it can be taken as a spec for a TC language 18:49:55 but in practice, well.. 18:50:05 give me half a bit ;P 18:50:09 or was it 1/3rd of one? 18:50:39 AnMaster: the point is that although you can't represent half a bit 18:50:44 if you have, say, an array of two half-bits 18:50:49 then you can represent it as one bit 18:50:57 but you can't set each half 18:51:15 I think you have to emulate it or something ;P 18:51:38 say, store it internally in the interpreter as a whole bit 18:51:44 or whatever 18:51:46 AnMaster: yeah, pretty much 18:51:50 you have to do some acrobatics 18:51:58 AnMaster: like, e.g. 18:52:02 is turky bomb actually TC? 18:52:04 NEGATIVE AMICED is a negative amount of bits 18:52:06 what you do 18:52:08 is instead have AMICED 18:52:11 with a postive amount 18:52:15 and just make all operations on it negative 18:52:19 yep 18:52:20 and *turkey 18:52:23 and well 18:52:24 yes typo 18:52:25 it's so vague 18:52:28 you can make it tc 18:52:31 if you take some liberties 18:52:42 implement TURKEY BOMB in TURKEY BOMB! 18:52:43 ;P 18:52:48 it basically ends up as a computer simulation of the described drinking game 18:52:55 haha 19:35:37 tusho, im not saying neglists, as oklopol implemented them, dont make sense 19:35:49 im saying neglists, as theyre being explained dont make sense to me. 19:36:25 yeah. 19:36:28 they're not easy to explain 19:36:28 :P 19:36:33 also, by the normal reasoning about what (... ...) does 19:36:40 (... <> ...) should also do something. 19:37:03 if (... ...) => ((... a ...) (... b ...)) 19:37:25 then (... < > ...) => ((... ...) (... ...)) 19:37:46 => (((... a ...) (... b ...)) ((... c ...) (... d ...))) 19:39:14 this all looks terribly like non-deterministic things in Haskell. 19:39:31 or any system that allows non-deterministic filtering. 19:39:35 only its not filtering, its construction. 19:46:55 its deterministic 19:46:55 but yes 19:46:56 similar to the list monad 19:47:04 also, I believe <<>> does the same as <>, but one level up 19:47:26 so (a (b <> e) f) -> ((a (b c e) f) (a (b d e) f)) 19:47:27 see? 19:47:33 it jumps up a level before doing every possibility 19:49:13 -!- Slereah__ has joined. 19:51:00 i said it looks like deterministic stuff 19:54:10 psygnisfive: this all looks terribly like non-deterministic things in Haskell. 19:54:10 [19:39] psygnisfive: or any system that allows non-deterministic filtering. 19:54:19 yes? 19:54:25 "looks terribly like" 19:55:25 anyway 19:56:10 i would like to see formal rules for doing negative lists 19:56:12 itd help a lot. 20:07:30 -!- timotiis has joined. 20:10:03 oklopol! formalism! 20:10:05 now! 20:11:24 iuo 20:11:30 iuo? 20:11:32 :O 20:11:42 iuo means "kiss me" in my conlang 20:11:43 :o 20:12:35 psygnisfive: if list = (... neg-list ...), then that evaluates to (list'0 list'1 ...) where list'0 = (... neg-list[0] ...), list'1 = (... neg-list[1] ...) and so on? <<< ya. 20:12:44 ok. 20:12:49 psygnisfive: i know 20:12:55 so then by that reasoning 20:13:04 <<...>> should evaluate as I supposed above. 20:14:03 (x < > y) => ((x y) (x y)) => (((x a y) (x b y)) ((x c y) (x d y))) 20:14:07 psygnisfive: the normal rewrite rule is just the case where the negative list contains no negatives 20:14:16 well actually 20:14:32 basically, i have separate rules for when a negative list contains a singleton negative list 20:14:38 ok. 20:14:44 do you have ordered rules? 20:14:45 err, when a negative list is a singleton containing a negative list 20:15:02 yes, the rules are not all that beautiful mathematically. 20:15:02 because if the rule is (... neg-list ...) => ((... neg-list[0] ...) ...) 20:15:26 they are not just recursively defined with the simple rule 20:15:31 then the unwrapping of (x < > y) should unfold as i mentioned 20:15:35 yes 20:15:41 but if you have some other rule like 20:15:46 <... neg-list ...> => ... 20:16:00 and that rule has a higher precedence than (... neg-list...) 20:16:04 then i can see there being a difference 20:16:15 yeah, that's the case 20:16:29 ok. tusho never mentioned such a rule. 20:16:38 tusho may not have known about such a rule 20:16:41 i didn't 20:16:53 i just knew what you told me, you didn't really specify the exact singleton thing 20:16:54 anyway, there is no formal semantics for this, i go by my own intuition. 20:17:01 then negative lists are just non-deterministic elements. 20:17:06 tusho: yeah i just explained the gist of it 20:17:11 psygnisfive: exactly 20:17:12 psygnisfive: except they make the list they're in turn into a list of all possibilities 20:17:14 but yes 20:17:16 ok, thats simple enough. 20:17:17 pretty much 20:17:23 it makes sense to call them negative though psygnisfive 20:17:30 because they "fold" into the thing they're in 20:17:34 i disagree but whatever. 20:18:02 they're just non-deterministic elements. 20:18:14 one way to see it 20:18:16 but 20:18:22 reminds me of haskell's filterM 20:18:22 it's not equivalent to that 20:18:45 it seems like it is :p 20:18:55 atleast for stuff like (... neg-list ...) 20:19:08 i dont know your semantics for <... neg-list ...> yet so. 20:19:20 well the difference is you get a *real* new list on the toplevel 20:19:28 what would 20:19:33 d> 20:19:34 eval to 20:19:40 and what are the steps and rules 20:19:54 nothing, you can't have negative lists without something surrounding them 20:20:11 what would ( d>) evaluate to. 20:20:16 + rules and steps 20:20:56 ((a) () (d)) -> ((a) ((b) (c)) (d)) i think 20:21:23 anyway, this is just basically an unclean way to get deterministic elements, i guess you could say 20:21:29 so its an evaluation no different that the standard (.. neg-list ..) evaluation 20:21:30 *nondeterministic 20:21:45 you unwrap the neglists top down. 20:21:59 psygnisfive: well indeed, the actual exception is when you have 20:22:07 and not <... neglist ...> 20:22:12 (<>) => ? 20:22:35 or () => ? 20:22:47 () = ((a b)) 20:22:47 well, that last one is trivial nevermind 20:22:50 that's obvious 20:22:50 first would fail, i think, latter would be triv 20:22:56 no tusho 20:22:58 thats wrong :) 20:23:04 () => ((a) (b)) 20:23:05 wrong, but triv still 20:23:14 oh yeah 20:23:15 ok so whats the except with ? 20:23:25 psygnisfive: basically, that you jump two levels up 20:23:32 example. 20:23:39 (a <> b) 20:23:44 => ? 20:24:10 (a (b <> c) d) => ((a (b e c) d) (a (b f c) d) (a (b g c) d)) 20:24:21 one step at a time oklopol, please. :P 20:24:26 that's one step 20:24:34 uh huh :P 20:24:35 you remove <> from there 20:24:39 then rise two levels up 20:24:44 yeah 20:24:46 it makes sense psygnisfive 20:24:47 basically 20:24:51 when you do <...> 20:24:51 quiet tusho 20:24:52 and call the list lambda for each elem 20:24:53 it cycles the choices 20:24:53 you're useless. 20:24:56 in the topmost list 20:24:58 :D 20:25:00 <<...>> does it two levels up 20:25:03 <<<...>>> three 20:25:03 etc 20:25:10 tusho 20:25:11 isn't that fairly simple? 20:25:11 be quiet. 20:25:16 psygnisfive: no. 20:25:27 you're fucking up the signal to noise ratio. 20:25:42 oh you 20:25:43 anyway 20:25:44 it wasn't noise. 20:25:44 err 20:26:01 <...> = cycle choices at the list we're in; <<...> = cycle choices in the list containing the one we're in 20:26:01 etc 20:26:10 psygnisfive: i'd say it's simple to see what happens from the example, and i think tusho said it clearly 20:26:21 you rise two levels in lists 20:26:30 so you get on the (a ... d) level 20:26:36 ok i see now. 20:26:50 and you get the list lambda (a (b * c) d), which you call for each elem in <> 20:27:05 wowzers. psygnisfive gets neglists 20:27:09 i thought i'd never see the day 20:27:10 :) 20:27:21 you guys are funny :) 20:27:22 anyway 20:27:28 i'll go eat! -> 20:27:40 (a (b <> e) f) => (a <(b c e) (b d e)> f) => ((a (b c e) f) (a (b d e) f)) 20:28:37 its almost distributive. 20:28:44 so lets see 20:28:57 (list a b c) => '(a b c) 20:29:06 (neg-list a b c) => ' 20:29:37 (list a (neg-list b c) d) => '(a d) => '((a b d) (a c d)) 20:30:42 eh.. 20:30:55 i dont know if its actually distributive but its close with the <<..>> 20:31:43 thats relatively straight forward, but its not what i would call a negative list. 20:31:49 since its not a list. :P 20:32:01 psygnisfive: it's not a list, it's a negative list 20:32:12 because it folds into the list its in 20:32:26 tusho, it's not what i would call a negative list. 20:32:33 you're wrong! ;) 20:32:39 i cant be wrong. 20:32:45 since im not calling it a negative list. 20:32:52 and therefore it is true that i would not call it a negative list 20:33:03 and thus it is true that it's something that i would not call a negative list. 20:33:08 i dont see why this is so hard to grasp. 20:33:22 it's not 20:33:34 i just wanted you to have to explain it 20:33:35 :D 20:34:14 stop trolling, tusho. 20:34:25 you're wrong! 20:34:26 :D 20:35:27 i'd just say they're non-deterministic list elements, where the number of angle brackets specifies how many items above the non-determinism applies to 20:35:28 brb 20:35:43 the list is lie! 20:46:00 the lie is list! 20:46:40 the negative list is a negative lie! 20:47:04 i mean, i can see why you're compelled to call it a negative list 20:48:57 since (a d) has an evaluated length greater than the external forms length, and therefore the external form has "negative" length 20:49:18 not length psygnisfive 20:49:19 it's not length 20:49:21 it's depth 20:49:30 (a) = 1 depth. ((a)) = 2 depth. 20:49:31 etc. 20:49:36 these are negative depth 20:49:38 whatever 20:49:40 thats not the point 20:50:20 the point is that i dont think it really qualifies as a list. 20:50:39 is itself not the list. only works in conjunction with some containing element 20:50:47 and is itself merely shorthand for non-deterministic elements 20:51:45 which is not terribly esoteric, in the grand scheme of things. 20:52:07 if anything it seems like something ruby or lisp might do. 20:53:11 i'd say its pretty esoteric 20:53:15 esp. when nopol _code_ even uses it 20:53:17 and i have no idea how 20:53:37 nopol code is just lisp + some stuff right? 20:53:49 22:34… psygnisfive: i'd just say they're non-deterministic list elements, where the number of angle brackets specifies how many items above the non-determinism applies to <<< make a noun out of that, and i can add it as an optional name in the nopol spec 20:53:50 i mean, it has the whole code-is-data-is-code thing right? 20:54:19 depth-specified non-deterministic elements. 20:54:29 or depth-specifying 20:55:32 -!- tusho has quit ("And then-"). 20:55:33 well it was a joke, i don't give a fuck what you wanna call them, but yes, they are a form of non-deterministic elements, although i didn't know this at the time of inventing them 20:55:43 :p 20:55:45 -!- tusho has joined. 20:55:45 :p 20:55:57 the formal specification for them isnt that hard either 20:56:13 perhaps not 20:56:37 let L be (... (... (... N ...) ...) ...) 20:57:01 let N be the "negative list" containing a b and c 20:57:23 let B be the number of angle brackets in the negative list's enclosure 20:59:06 then L evaluates to a list L' such that the list enclosing N B levels up has the contents of N nondeterministically substituted 20:59:07 or something 20:59:16 i'd need to word it better in that last part but 20:59:57 well yeah and then just the fact all are rewritten at the same time, making the concept even closer to non-determinism 21:01:38 the explanations from earlier were rather confusing, tho. 21:02:05 perhaps, all i know is CakeProphet got it 21:02:18 the concept is simple enough. 21:02:48 cakeprophet and tusho got it because they're as warped and twisted as you are so it makes sense to them to think it warped and twisted explanations :P 21:02:57 <3 21:02:58 true, but as it's not terrible context-insensitive inherently, it's hard to explain 21:03:21 that is, you can't show a simple rewrite rule 21:04:03 ofcourse not. the rewrite depends on numerous things, and it probably requires a Type 0 language to implement using rewrite rules 21:04:18 but the specification mathematically isnt terribly hard. 21:04:35 well yes, although i'm not sure what your point is 21:04:47 err, right, that it was confusing 21:04:52 :D 21:04:58 its not confusing! you just dont get it! 21:04:59 ;) 21:04:59 no one's blaming you for not grasping it from that 21:05:05 tusho is :( 21:05:14 well tusho is gay 21:05:23 hey, dont insult gay people. 21:05:23 how did you know! 21:05:37 we knew because you look like a girl. 21:05:44 you girl. 21:05:47 GIRLY GIRL. 21:07:02 psygnisfive: its not confusing! you just dont get it! <<< err what? 21:07:13 i was pretending to be tusho. 21:07:16 :) 21:07:22 okay, sorry, i guess that was obvious 21:07:34 oklopol: its not confusing! you just dont get it! 21:08:29 fuck you little brat you're so young i could be father's lover, stop making noise 21:08:31 * 21:08:34 *your father's 21:08:52 i bet his father was a girl too :O 21:08:58 *zing* 21:09:03 ;D 21:09:21 so besides boring "negative lists", anything interesting going on? 21:09:28 -!- Keymaker has joined. 21:09:32 psygnisfive: You're only saying that because you're not comfortable with your own masculinity. 21:09:33 OH SNAP 21:09:38 On another topic, hi Keymaker 21:09:43 its true D: 21:09:51 hello 21:10:14 keymaker, a little chinese man who sounds like hes trying to not be chinese way too hard. 21:10:33 actually i got this name after seeing matrix ii :P 21:10:47 THANK YOU CAPTAIN OBVIOUS 21:10:55 am i the only one who thought that the keymakers accent was way to fucking weird? 21:11:06 keymaker is cool. 21:11:08 he makes quines. 21:11:18 hard to remember, matrix was like a decade ago 21:11:33 it sounded like they overdubbed him with a voice actor in order to make him sound completely unchinese 21:11:37 yeah Keymaker is awesome, unfortunately you never get to talk to him 21:11:49 probably writing /quit as i'm typing this 21:11:55 but they pushed him to like.. 120% non-chinese 21:12:36 :D thanks. in fact the reason i came to visit was because i wanted to link my whirl quine i made about a week ago :D 21:12:38 http://koti.mbnet.fi/yiap/programs/whirl/quine.wrl 21:12:51 well yeah, that's why you always come :P 21:13:06 i also finished a collatz program in brainfuck just a few minutes ago: http://bf-hacks.org/hacks/collatz.b 21:13:12 so i came to link both 21:13:32 Keymaker: i'm assuming that was by hand 21:13:52 there are no interesting esolangs :( 21:15:11 psygnisfive: eodermdrome is quite interesting imo 21:15:27 also, oklopol, im trying to figure out a CFG for reactance's shorthands and im finding it tricky. lol 21:15:38 been trying to come up with a way to build an arbitrary graph from a finite amount of initial nodes and finite rules 21:15:43 i got so annoyed moving the whirls so i had to make a program to convert whirl ops to those 0s and 1s. that program took most of the time in the process... and as it was far from good i needed to create padding for jumps and various other things on my own. 21:15:59 eodermdrome seems interesting, is there any examples? 21:16:07 Keymaker: the first phase of whirl is just a syntax replacement? 21:16:18 or is there an actual wheel when running?= 21:16:21 anyone have a link to eodermdrome? 21:16:27 no, there's actual wheel 21:16:34 eodermdrome doesn't have examples, no 21:16:36 or to whirl? 21:16:44 been trying to get ais523 to write some 21:16:47 well how can i look into eodermdrome? :P 21:16:55 so it's not just replacing stuff with 0 and 1. one has to move those wheels (which i caleld whirls) with them to choose instructions 21:17:05 psygnisfive: esolangs.org, i'd have to open a browser as well 21:17:16 http://www.esolangs.org/wiki/Eodermdrome 21:17:27 i see, then it's a lot more interesting than i thought initially 21:17:41 yeah, it is, and damn annoying for making jumps 21:18:12 and you fucker wrote a quine in it. can you elaborate on how? 21:18:16 generally moving in memory and stuff isn't as easy as one'd think, as there's no way to change data between the two wheels other than setting it to memory and the reading in other whirl 21:19:06 hmm, there are multiple wheels? i guess i'm remembering the whole thing wrong 21:19:10 two wheels 21:19:12 ah 21:19:22 and each has different instructions, a few same, but essentially different 21:19:30 yeah i recall now 21:19:36 yea 21:19:44 that sounds pointlessly silly. :P 21:20:08 Keymaker: how did you do the quine? 21:20:15 i've always found quines quite hard in general 21:20:22 especially with esolangs 21:20:52 ah. first i created code snippets for memory storing (both 61 bytes) 21:21:04 then i wrote the main code 21:21:10 then i created data part of that 21:21:35 (i mean the snippets/pieces were 61 per every 0 or 1) 21:22:03 the data part is huge in this program... 21:22:11 the boring is spinning out of control :( 21:22:32 psygnisfive: buy a book 21:22:37 get a life 21:22:38 i have one :o 21:22:44 a book, i mean. 21:22:49 i dont have a life tho. 21:22:54 my advice: go outside 21:23:09 coming from a guy who wrote a quine in whirl. :p 21:23:24 psygnisfive: stop being like that 21:23:41 crochetty? 21:24:10 Keymaker: anyway, err, so basically you have a way to write the data, then write the part that first writes the data as the code that makes it, then as it is, and you just put the program into the data 21:24:13 yes, but i spend a lot time outside nonetheless :] 21:24:17 the way that one commented bf quine did 21:24:31 outside is boring 21:24:35 so do i! i went walking around lond and paris for like 8 hours every day for the last two weeks :O 21:25:32 the only difference between going outside to take a walk and writing a whirl quine is if you take the walk you don't get anything done 21:26:01 hm, it isn't that to me. anyways, first part that writes the data in memory, then part that prints the data part, then parts that prints the data, then of those two parts is created the real datapart 21:26:02 and with a quine in whirl, you get negative amounts done? :P 21:26:30 hey, if you wrote a quine in whirl because it was listed in a negative list, would the negatives cancel out and result in being productive? 21:26:42 -!- lilja has joined. 21:27:54 god i hate it when people don't appreciate others' work on the grounds that it's not useful 21:28:16 its not that i dont appreciate his work because its not useful 21:28:26 i wasnt the one who even brought up getting things done! you were! :O 21:28:34 Keymaker: yeah that's the approach you usually use with esolangs i guess 21:28:42 well, same thing for all langs, but you don't see it as clearly 21:28:48 i dont appreciate it because it seems like a silly rehash of some boring old concept. 21:28:49 in most of them yeah 21:29:13 psygnisfive: well yeah, i agree that's a problem with most esolangs 21:29:30 i mean, if you removed the "wheels" or "whirls" or whatever you want to call them 21:29:36 what distinguishes Whirl? 21:29:42 (and anyways, my esoteric work is useful to me) 21:29:46 removed the wheels? 21:29:50 does it just become Brainfuck? a funge? a whatever? 21:29:52 aren't those the point 21:29:58 but ARE THEY? 21:30:02 it's not a syntactic substitution kid 21:30:12 i mean, the wheels have instructions? 21:30:26 remember those old phones where you choose number by rotating a ring? 21:30:39 how do you select instructions? how do these wheels play into anything? 21:30:40 right, so its a rotary dial version of brainfuck 21:30:50 whirl is a bit like that. it has two such rings with different commands, you have to move them. and different commands than brainfuck 21:30:54 which means that its a silly modification of branfuck. 21:31:08 it doesnt matter that it has different commands than brainfuck 21:31:25 you could say then almost every language in the world is silly modification of brainfuck 21:31:28 its a silly hyperminimal tarpit 21:31:29 i'm pretty sure it becomes fundamentally different to program in with jumps 21:31:46 but i haven't tried 21:31:47 the wheels do absolutely nothing except make it hard to code in 21:32:02 and even then, it doesnt need to be since you can remove the wheels entirely 21:32:11 without actually removing them! 21:32:23 how is that? 21:32:25 if you can do that trivially, then it's a syntactic thing 21:32:42 ofcourse it is, but the point is that the wheels themselves are a syntactic thing if thats the case. 21:32:52 keymaker, if your analogy to a rotary dial telephone is correct 21:33:14 then in some sense each position on the wheel, lets say each angle postion, 0 through 9, for instance, has an instruction, yes? 21:33:16 yeah, and they are not, because with jumps, the meaning of earlier code changes 21:33:32 so you do something akin to move forward n positions 21:33:36 move forward m positions 21:33:41 etc etc to get from one instruction to the next 21:33:42 yes? 21:33:55 yes. you rotate ring with 1, 0 changes the direction, if there's 00 it changes the ring 21:34:01 (and executes the chosen instruction) 21:34:11 so essentially to get to any instruction n 21:34:25 you can just replace n with n numbers of 1, 0, then n numbers of 1 21:34:27 that is 21:34:33 to get to instruction 5 21:34:42 11111*011111 21:34:48 where * is used to indicate "do it" or whatever 21:34:53 so you just won't believe it's not like that? 21:35:01 which is fine 21:35:08 not that i'm sure it's not, but i've said it's not, and you have no reason not to believe that 21:35:23 but that means that the whole wheel gimmick is an obfuscation of instruction symbols since it can be trivially reduced to a 1-to-1 mapping. 21:35:33 it can't be 21:35:41 but you just said it COULD. 21:35:50 its implicit in your design. 21:35:55 anything can be compiled to anything 21:35:58 1 rotates the ring forward one instruction yes? 21:36:09 and 0 changes the direction of rotation, yes? 21:36:48 if thats so, then to access instruct n, from instruction 0, you need to go forward n times. that is you need a string of n 1's in a row. 21:36:54 to get to instruction 5, you need 11111 21:36:55 and so on 21:36:57 yes? 21:37:08 yeah 21:37:10 ok 21:37:12 for jumps you need to create the value in memory by using those instructions, then you have to perform the jump somewhere, land to some place where the rings are in same position than where you jumped and where control is on the same ring than it changed to when you jumped, and most likely you need padding there with sequences that don't execute any instructions 21:37:32 so then if 0 reverses the direction of movement 21:37:40 yeah 21:37:43 you simply do undo all rotates after you do them 21:37:58 so that you get back to 0 every time 21:38:04 just like a rotary dial phone 21:38:19 and your instruction set maps cleanly to a binary string 21:38:29 so basically the interesting part of it is the same as with YABC 21:38:41 which means the wheel is nothing more than a gimmick. 21:38:49 its nothing interesting, just an obfuscatory mechanism. 21:38:52 you have to generate the jumps from calculations 21:38:52 psygnisfive: you're wrong 21:38:54 like usual 21:38:54 theres nothing new conceptually. 21:38:56 :) 21:39:06 -!- lilja has quit ("KVIrc 3.2.0 'Realia'"). 21:39:15 if keymakers description of how the language works is correct, then im not wrong 21:39:43 you can read it here explained better: http://www.bigzaphod.org/whirl/ 21:39:46 without flow control, yes, it's trivial 21:40:07 even assuming that the wheels are absolutely necessary to access the instructions 21:40:12 they're still an obfuscatory gimmick 21:40:27 because the whole thing just reduces to a complication of your instruction set 21:40:41 it introduces nothing fundamentally different in terms of computational perspective 21:40:43 no 21:40:45 not with jumps, psygnisfive 21:40:48 it's not something you can just remove as a separate step, man 21:41:05 you cannot make a trivial two-way compiler between that and, say, brainfuck 21:41:13 im not saying you could 21:41:15 even if you added the necessary shit to brainfuck 21:41:25 and that wouldn't brainfuck then 21:41:26 im simply saying that the wheels seem to be a gimmick and nothing more. 21:41:40 but that it's just another esoteric language, new idea, but not the best ever? 21:41:44 what is your point 21:41:56 in any case, this 1-to-1 mapping doesn't work with these jumps in whirl 21:42:01 my point is that its uninteresting and boring and gimmicky. 21:42:06 oklopol: psygnisfive seems to hate anything that isn't a completely and utterly new paradigm which makes everything seem weird. 21:42:15 because everything else is boring and gimmicky and YAWWWWWWWWWWWWN 21:42:16 its not that tusho 21:42:23 really? 'cause it seems that way 21:42:30 if you just change brainfucks symbols, is it a new esolang? 21:42:30 no. 21:42:37 its a pointless gimmicky rehash of brainfuck. 21:42:47 whirl isnt brainfuck 21:42:48 this isn't brainfuck, the instruction set is compeltely different 21:42:55 but it is pointless and gimmicky. 21:42:57 psygnisfive: many imperative esolangs are only fun and new in the sense that they are very different to program in, yes 21:43:05 anyway im off 21:43:06 bye 21:43:18 maybe we can actually continue this discussion then, Keymaker :P 21:43:59 i would like to do something in eodermdrome, the problem is i want example programs first 21:44:05 since i'm sure my interp is crooked 21:44:18 and i can't really test my own code 21:44:30 i *can*, but it doesn't feel right 21:46:14 the thing i don't get about the whole everything-is-brainfuck mindset is, most esolangs actually differ a lot more in programming experience than, say, haskell and scheme. 21:46:36 the whole language is usually a completely new challenge by just a change of a few operations 21:46:37 -!- timotiis has quit (Connection timed out). 21:46:49 yes, definitely 21:47:15 haskell and scheme are very different, but only when you start making something big; who the fuck makes anything big in esolangs anyway :) 21:47:19 to me only things resembling brainfuck are those languages that are made to just replace brainfuck instructions 21:47:32 yeah 21:47:50 yep 21:48:01 and tusho, what was the discussion? 21:48:07 :D 21:48:16 the discussion is a lie 21:48:18 Keymaker: the one not involving psygnisfive saying how boring whirl was 21:48:40 ah. so what was said last? 21:50:31 it is true of course that not many languages on the wiki have that "new computational model" feelign 21:50:33 *feeling 21:50:47 except for a few of ais's languages, and some other exceptions 21:51:20 it's been my lifelong dream to invent a computational model 21:51:45 but all the simple ones are already taken, and most things are trivially equivalent to them :< 21:52:03 -!- Corun has joined. 21:52:07 i think there are many great language out there, but also too many that are purposefully made to be like brainfuck 21:54:02 agreed 21:54:18 night 21:54:51 n82u2 21:56:54 has anyone ran that collatz program i linked? see if it works any fast 21:57:13 i tried to make it so 21:58:24 i would have to write a bf interpreter 21:58:41 for some reason i never have one at hand even though i've written like a million of them 21:59:14 and a million available in the net, so you wouldn't need to write 21:59:54 well yes but i don't like doing that 22:00:32 i'll write one now, a brainfuck interpreter a day is good for the health 22:01:58 Invent a new computational model, eh? 22:02:13 well yeah 22:02:19 Plain imperative and functional, then rewriting and cellular automata... 22:02:26 -!- calamari has joined. 22:02:59 Though it's pretty easy to express all of those as rewriting. 22:03:15 well ef is a somewhat new paradigm, unfortunately you can think of it as a form of declarative programming. 22:03:16 and isn't it possible as well? 22:03:54 or well, maybe not. i didn't think enough... 22:03:57 but paradigm isn't exactly a computational model 22:04:15 isn't what possible as well? 22:04:40 ef, eh? 22:04:56 * ihope compromises with "eg" 22:05:19 expressing all the computational models in rewriting. but i was thinking more like implementing, so ignore what i said 22:05:19 ef is my fixed-point language 22:05:37 Keymaker: you can both express and implement, same thing really. 22:06:35 Hmm. fix fix, fix (fix fix), fix fix (fix (fix fix)), fix (fix fix) (fix (fix fix)), fix fix (fix (fix fix)) (fix (fix fix))... 22:07:09 ihope: not exactly :) 22:07:16 :-) 22:07:25 it's more like functional programming, but you always apply everything infinite times 22:07:43 also there is a quite intelligent pattern matching 22:08:05 so you express everything as finding a normal form 22:08:44 oh, right, the brainfuck 22:10:22 Interesting. 22:10:51 speaking of cellular automata, it isn't really used too much in esolanguages. i have practically never done stuff with it 22:10:55 The fix function only takes one argument, of course. 22:11:11 Keymaker: that's precisely why we need to create a programming language for cellular automata. 22:11:35 quite right 22:12:57 ihope: there is no fix function 22:13:22 easier said than done though... but also more esolanguages based on that could be interesting. i'll have to try something. i have many language plans but for some reason only few ever get done 22:13:22 and it would make no sense to introduce one, although you can implement it as, err, apply 22:15:33 Suddenly, I get the idea for a programming language where you can apply any programming language any ordinal number of times... 22:17:42 -!- calamari has quit ("Leaving"). 22:21:00 Keymaker: so which was i supposed to test? 22:21:43 found 22:24:57 http://www.vjn.fi/pb/p255422423.txt 22:25:02 hard to say about the speed of this 22:25:26 the numbers show quite fast on my screen, and it's written in python, so i guess it's fast 22:25:41 the extra output is just the number of cycles at different points of evaluation 22:25:45 i made it output @ newline 22:26:02 ah, ok 22:27:13 AnMaster: new Mycology's up, has the null-byte test someone (ais?) came up with 22:28:24 An analog signal processing programming language would be interesting. 22:28:50 elaborate. 22:29:17 I guess electronics is (are?) one of those. 22:30:23 * ihope tries to make a sine wave with DC 22:31:23 i'd say "is" is more used, but both are okay 22:31:32 but you're the native so who cares what i think 22:31:41 have fun 22:33:44 :-) 22:34:05 We care what you think when you tell us how to use "used to" correctly. 22:35:25 what? 22:35:37 that can mean a lot of things 22:36:55 a vacuum cleaner can be used to get rid of a penis / i used to put my penis in a vacuum cleaner as a kid / i'm used to having my penis sucked by a vacuum, cleaner 22:37:33 "vacuum, cleaner" may not be the best way to write that 22:40:26 a vacuum cleaner can be used to get rid of a penis 22:40:27 ... 22:40:53 -!- Corun has quit ("This computer has gone to sleep"). 22:45:27 yes, tusho, i stand behind my words 22:45:53 Hmm. It appears my circadian rythym is a bit. . . Off. 22:46:15 Breakfast at 11, lunch at 3, dinner at (probably) 8 or 9. . . 22:46:18 happens to the best of us 22:46:34 i had breakfast at 20.00 or something 22:46:52 i had breakfast like 10.30 22:46:53 woke up at 14.00 22:47:02 lunch about three-five 22:47:09 dinner, uhh, very recently 22:47:30 heh, i'm such a story-topper 22:49:25 good bye. i'll return some day with some new programs 22:49:36 Keymaker: aww 22:49:37 come in tomorrow! 22:49:39 we're fun! 22:49:53 hah, sorry, i generally hate irc 22:50:01 you hate us because we're FUN >:( 22:50:15 :D 22:50:28 Keymaker: bye 22:50:30 we'll teach you the secrets of being fun if you come in tomorrow 22:50:35 that's how awesome we are. 22:50:36 well yes, that too. 22:50:37 bye. :p 22:50:42 bye :) 22:50:44 -!- Keymaker has left (?). 22:51:11 eyes are getting tired it seems, SparseGraph -> StereoTypical 22:51:18 hahahaha 22:51:30 was a bit wtf to see that in the middle of code. 23:26:09 so tell me why jumps make keymakers language nothing more than a gimmick. 23:26:24 oh no 23:26:26 not this again 23:26:29 anyway its not keymakers language 23:26:37 whatever 23:26:43 tell me how jumps make it not gimmicky. 23:28:54 * tusho rolls eyes 23:29:01 thats not an explanation. 23:29:09 I suddenly realize I was trying to implement goto in Haskell. 23:29:16 ihope: awesome. why. 23:29:17 keymaker's the one who's actually coded in it, so i'd say the onus is on you 23:29:23 psygnisfive 23:29:34 i already showed how its gimmicky. 23:29:39 no you didn't. 23:29:42 you just stated untrue things 23:29:45 when we told you they weren't true 23:29:47 i did no such thing tusho 23:29:48 you stated them again 23:29:53 callCC (\cont -> let label = cont label in return label) was what I'd come up with; that's the same as callCC (return . fix). 23:30:01 psygnisfive: why not compile something into it and show us how it's done 23:30:03 all you said was that it wasn't gimmicky due to jumps. 23:30:22 Oh, I know why. 23:30:30 the ring commands are mappable directly and trivially to individual non-ring based instructions. 23:31:11 no 23:31:11 th 23:31:11 ey 23:31:12 are 23:31:13 not 23:31:16 yes, they, are. 23:31:16 because 23:31:17 they 23:31:17 change 23:31:18 the 23:31:19 offset 23:31:21 of 23:31:23 jumps 23:31:25 so 23:31:27 you 23:31:29 tusho 23:31:29 have 23:31:31 to 23:31:32 did you read what i just said? 23:31:33 think 23:31:36 ahead 23:31:37 a 23:31:39 lot 23:31:41 no 23:31:43 its 23:31:45 not 23:31:47 the 23:31:49 most 23:31:51 imaginative 23:31:53 paradigm 23:31:55 ever 23:31:57 but 23:31:57 tusho stop being a child. 23:31:59 its 23:32:01 marginally 23:32:04 interesting 23:32:16 so 23:32:16 there 23:32:16 its not marginally interesting at all. 23:32:16 psygnisfive: i just explained why jumps make it non-gimmicky 23:32:16 psygnisfive: sorry. next time i'll follow your example and state the same thing over again 23:32:20 * ihope /ignores tusho's one-word-per-lineness 23:32:44 where do you see jumps in the spec, btw. 23:33:09 psygnisfive: it obviously has control flow 23:33:12 or it wouldn't be tc 23:33:22 do you mean if? ok. ill look at that. 23:33:29 If If memval is not 0, then add value to program position pointer (see PAdd). 23:33:50 -!- Judofyr has quit. 23:34:29 this is a computed goto, fairly interesting a thing in a tarpit 23:34:36 as it's not trivial to create the offsets 23:34:46 exactly 23:34:52 the wheel means that the offsets are very hard to calculate 23:34:56 along with the fact that it's hard anyway 23:37:23 hmph, why do they call it dijkstra's algo, who hasn't invented that 23:37:42 oklopol: names are useful. 23:37:45 i used that when i was like 13 23:37:46 well sure 23:37:47 and dijkstra did it first. 23:37:50 but asjdfokajds still :) 23:37:55 yeah, yeah 23:38:09 oklopol: remember, you only get these things easily because CS has advanced so much since then 23:38:12 back then it wouldn't have been so trivial 23:38:20 i'm not saying it shuold actually be changed, i'm once again just wondering how great it would've been to have been born like 50 years ago. 23:38:31 not very 23:38:31 :p 23:38:45 the only things that modify memval are store, and intio. 23:38:57 i didn't know any cs when i was 13 23:39:03 i knew about arrays 23:39:12 oklopol: well yeah but cs has effected programming 23:39:12 therefore the only things that can affect the way the if's evaluate are store and intio. 23:39:14 affected 23:39:15 whatever 23:39:40 tusho: i know i know, that's not the point 23:39:51 i'm just pissed off, i don't actually have a point! :D 23:41:40 psygnisfive: i believe keymaker over you in this issue, unless you actually show a bijection 23:44:20 Upon seeing what Dijkstra's algorithm does, I immediately conceived of an algorithm that would do that. Now I'm reading to see if they're the same. 23:45:47 Looks like it. 23:52:13 you have a priority queue containing nodes you haven't currently explored yet, and you just iterate: pop the queue, then add all the nodes connected to the popped one into the priority queue updating costs. 23:53:05 because you're always handling the node that, from all nodes that can be accessed right now, is found the "fastest", when it comes to total cost of the path to it, you find the shortest paths 23:53:32 easier to invent than understand, really 23:53:43 Have some current nodes, each with a distance assigned to it; take the one with the smallest distance and make all the unvisited nodes next to it current, and make the original one uncurrent. 23:54:18 not that this is a proper example, since it doesnt touch on the if construct but 23:54:38 -!- lilja has joined. 23:55:03 ihope: yes 23:55:20 that's it 23:55:48 the example from that page, the do 1+1, can be summed up as nothing more than "swap not store add store swap one intio" 23:56:03 -!- calamari has joined. 23:56:24 where swap = 00, not = 11111111110000011111111110, store = 1100000110, add = 111000001110, one = 110000010, and intio = 11111111110000011111111110 23:56:26 priority queues are the main point there, though, that's where the interesting comes in 23:56:58 "swap not store add store swap one intio" <<< i don't get this 23:57:07 i'm assuming stack-based 23:57:10 swap errors in my head 23:57:13 see above. 23:57:13 intio makes no sense 23:57:15 hmm 23:57:17 swap is just shorthand for 00 23:57:23 ah. 23:57:26 not is just shorthand for 11111111110000011111111110 23:57:27 etc 23:57:30 ah, that kinda swap 23:57:35 swap rings 23:57:39 yeah 23:57:40 switch, if you want. 23:57:41 whatever. 23:57:45 it doesnt matter what you call it. 23:57:51 but, err, you just do some operations, that's just about rolling the wheels 23:58:05 i know. ill look at control flow in a bit. 23:58:08 as you said, right 23:58:14 but just from that its pretty trivial. 23:58:18 sorry, i'm reading bottom-to-top, it seems :P 23:58:26 well yeah, of course 23:58:38 i shall look at if in a moment tho.