2008-04-01: 00:23:57 -!- ihope has quit (Read error: 110 (Connection timed out)). 00:46:44 -!- olsner has quit ("Leaving"). 01:21:07 -!- sebbu has quit ("@+"). 01:48:06 ehird, smalltalk is pretty cool. 01:54:34 heh :) 01:58:22 I'm starting to understand the syntax better, but I still think there are some superfluous semicolons. 01:58:50 I haven't figured out how to change syntax in squeak 02:00:12 which semicolons are superfluous? 02:02:00 For instance: Transcript show: 'hello world'; cr. (quoted from the Squeak By Example documentation, pg 12) 02:02:19 what does cr mean? 02:02:35 carriage return? 02:02:39 I believe so, yes 02:03:22 well.. compare that to what you would have in some other language 02:03:29 Transcript.show("hello world") 02:03:33 Transcript.cr() 02:04:04 I'm not saying its not better, or wicked cool. Because it is, on both counts. 02:04:23 the thing the semicolon does is called "cascade" 02:04:27 Maybe I should spend some more time on it 02:04:32 cascade? 02:04:49 both the message show: and the message cr are sent to Transcript 02:05:05 ohh, okay 02:05:06 ; is shortcut for "send to the same receiver the previous message was sent to" 02:06:05 Alright 02:06:24 I guess that makes sense 02:08:32 I was hoping something cool would happen if I typed in 3 + 4; + 2 02:08:36 but.. nothing exciting happened 02:09:54 right, you want side-effecty messages for that to make any sense 02:10:12 -!- ehird_ has quit (Read error: 113 (No route to host)). 02:10:46 I guess so, either that or I shouldn't have used a constant 02:11:10 self-modification is a side effect 02:12:10 Oh, well that makes sense from a purely functional perspective 02:13:54 ; makes you lose the return value of the first message 02:14:11 so if there were no side effects, nothing happens 02:16:05 Alright 02:27:27 -!- oklopol has quit (No route to host). 02:31:41 Thanks lament. Im off to bed now 02:31:43 g'night 02:32:20 -!- wildhalcyon has left (?). 02:43:10 -!- pikhq has quit (Read error: 110 (Connection timed out)). 02:49:44 -!- marshmallows has joined. 02:53:48 -!- kwertii has joined. 03:32:19 -!- okopol has joined. 03:38:47 -!- GreaseMonkey has joined. 03:45:09 -!- adu has joined. 03:59:45 -!- kwertii has quit ("bye"). 03:59:57 -!- kwertii has joined. 04:04:42 -!- calamari has joined. 05:42:12 http://veroz.vox.com/library/photo/6a00b8ea0717ec1bc000c2251f6997f219.html 05:53:09 -!- calamari has quit ("Leaving"). 06:11:00 hi 06:18:43 'night folks 06:18:47 cya adu 06:18:58 cya 06:19:04 -!- RodgerTheGreat has quit. 07:33:29 -!- adu has quit (Client Quit). 07:33:48 -!- kwertii has quit ("bye"). 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:03:53 -!- GreaseMonkey has quit ("getting off, has headache"). 08:33:00 does halting problem ask: "will halt in finite time" vs. "will run forever", where that may include infinite loop or such? 08:33:37 if that is the case, you can partially solve the halting problem for befunge, any befuge program not containing, @, q, p or s will never halt I think 08:33:47 any program with one of those may halt 08:33:49 or may not 08:55:00 you can also partially solve the problem by running the program and waiting to see if it halts or not 08:59:01 -!- immibis has joined. 08:59:33 What happened to XKCD? 09:03:21 attacked by a bear 09:04:52 seriously? 09:29:12 -!- immibis has quit ("Hi Im a qit msg virus. Pls rplce ur old qit msg wit tis 1 & hlp me tk ovr th wrld of IRC. and dlte ur files. and email ths to). 10:15:12 marshmallows, a 1 april joke I guess 10:17:01 just front page joke 10:22:13 -!- AnMaster_ has joined. 10:36:55 -!- AnMaster has quit (Connection timed out). 10:37:20 -!- Iskr has joined. 10:55:58 marshmallows, there? 10:56:01 I finally got it 10:56:07 the xkcd thing 10:56:12 three web comics have rotated 10:56:14 -!- AnMaster_ has changed nick to AnMaster. 10:57:13 eheh yes 10:57:31 today it's on qwantz.com 10:57:37 =) 10:58:12 basically three different webcomics are mixed up, so xkcd's front page display another comic, that other comic's front page display a third and the third one display xkcd 10:58:16 Iskr, exactly 11:00:07 Iskr, as I only read xkcd and userfriendly it took a while to find out 11:01:01 have you seen the thing about the penguins yet? 11:01:13 DOES NOT APPROVE 11:01:15 SimonRC, eh what? 11:01:15 PLEASE STOP MAKING COMICS 11:01:20 um, oops, wrong button 11:01:30 what are you talking about 11:01:35 http://www.telegraph.co.uk/news/main.jhtml?xml=/news/2008/04/01/npenguin101.xml 11:01:44 http://www.youtube.com/watch?v=23qDl1aH9l4 11:01:53 2 correct urls ^^ 11:02:01 * SimonRC curses the X clipboards 11:03:10 SimonRC, oh seen the google one? 11:03:14 and the youtube one? 11:03:57 for youtube. click on any "featured video" on front page 11:04:02 the star wars rube golberg machine? 11:04:04 http://www.google.com/virgle/index.html for google one 11:04:08 SimonRC, just click on any 11:04:12 see what happens 11:04:14 ah 11:04:34 I think it is some silly meme iirc? 11:04:42 yes 11:18:14 heh, the beeb have an iPlayer video about Rickrolling 12:12:34 I decided to try some fuzz testing 12:12:40 cat /dev/urandom | tr -Cd -- '-[:lower:][:digit:]\n\\ ;",.+*[](){}^<>@'\' | head -n 100 > fuzz.tmp 12:12:46 for befunge, just playing around 12:12:58 amzingly it turned out the program halted and produced output 12:13:06 "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 i0 0 0 44 0 0 i32 0 0 0 44 0 0 0 i32 49 0 0 0 0 44 99 0 0 0 0 0 i32 49 \0 0 0 0 44 99 0 0 0 0 0 i32 49 \>0 0 0 0 0 0 44 99 108 0 0 0 0 0 0 i32 49 \>123 0 0 0 0 0 0 " 12:14:55 I ran it in sandbox mode of course 12:15:47 121 threads 12:19:12 hm and here is one producing a pattern like: 12:19:13 11 11 12:19:14 11 11 12:19:17 and so on 12:26:59 hah was useful found one that caused segfault, now to find out why 12:38:48 -!- sebbu has joined. 12:42:53 -!- marshmallows has quit ("Leaving"). 13:26:36 -!- jix has joined. 13:46:07 Deewiant, consider a program that is is just: 7kt 13:46:12 now that cause issues 13:46:20 valgrind screaming 13:46:30 * AnMaster wonders if ccbi handles that 13:46:56 $ ~/ccbi/ccbi_linux/ccbi tests/wtf.b98 13:46:57 Exited due to an error: at :0 13:47:00 Deewiant, seems like it didn't 13:47:01 hehehe 13:52:18 probably runs out of memory, what's there to 'handle'? :-P 13:52:33 Deewiant, hm would reflecting on that be allowed? 13:52:41 no? 13:52:45 hm 13:52:48 if you put something smart after that it's fine 13:52:55 eh? 13:53:02 7kt@ 13:53:20 perfectly valid 13:53:26 hm 13:54:08 makes 8 IPs, 7 of them go through the '7' before wrapping to the @, the original goes straight to the @, one goes through k7@ 13:55:54 hrrm 13:56:00 * AnMaster add kludges to k 13:58:28 if you put something smart on the stack beforehand and put some #s and branches there so that the IPs separate that's an OK way of making a bunch of threads 14:05:02 hrrm 14:12:13 -!- Judofyr has quit. 14:20:30 Deewiant, in the case of k, what ip should execute next? 14:21:18 Deewiant, because should it work as original ip spawned each time or as each new ip gets spawned? 14:25:19 "this duplicate is added to the IP list such that it is executed for the first time before the parent IP is next executed. " 14:25:29 yes indeed 14:25:36 among all those that are added by k, I suppose the order is undefined 14:25:41 indeed 14:25:43 as long as they're all before the one that came to the k 14:25:44 and would it matter? 14:25:53 Deewiant, yes that they should be 14:25:58 don't think it can matter 14:26:25 Deewiant, I'm doing fuzz testing atm btw: 14:26:32 cat /dev/urandom | tr -Cd -- '-[:lower:][:digit:]\n\\ ;",.+*[]{}^<>@`_|?:%$#!'\' | tr -d 'mhlior' | head -n 100 > fuzz.tmp 14:26:32 valgrind --leak-check=full ./cfunge -St 9 fuzz.tmp 14:26:34 over and over 14:26:43 yep, I saw that above :-) 14:26:44 aborting if the program gets into infinite loop 14:26:52 Deewiant, found two bugs so far 14:26:57 heh 14:26:58 of about 50 tests or so 14:27:08 what kind of stuff 14:27:23 one where I checked for (unsigend int - other unsigned int) > 0 14:27:25 XD 14:27:30 -!- Sgeo has joined. 14:27:31 the other the t in k 14:27:48 aiee 14:27:52 ▒┴␋␍@├┤│ ·/␌/␌°┤┼±␊/├┤┼┐ $ 14:27:55 my terminal now 14:27:59 * AnMaster uses reset to reset it 14:29:20 I'd make a script which runs that repeatedly, piping cfunge to /dev/null, and only stopping when you hit a segfault 14:30:14 Deewiant, well some programs do have issues like infinite loop 14:30:20 so I'd need a timeout of some kind 14:30:37 of course 14:30:38 run for 1 second 14:30:47 Deewiant, also the t in k wasn't a segfault, it was just valgrind "invalid read" 14:30:55 ah 14:31:01 well, you can check for whatever of course 14:31:07 run once normally, check for segfault 14:31:12 run once under valgrind, check for segfault or errors 14:31:22 and any other mem/whatever testers you want 14:31:26 things do segfault under valgrind too normally 14:31:40 I haven't seen valgrind ever preventing a segfault from happening? 14:32:23 I have 14:32:29 hm 14:32:34 and programs that segfault only in valgrind 14:32:39 weird stuff 14:32:56 well the latter yes 14:33:09 if I link against boehm-gc it will segfault under valgrind 14:33:20 not odd considering both mess with memory in odd ways 14:34:34 tix=0 tid=0 x=324 y=0: (32) 14:34:34 tix=0 tid=0 x=325 y=0: (32) 14:34:36 huh 14:34:39 that shouldn't happen 14:34:58 it is a known issue that is does not print several space in row currently 14:34:59 so wtf 14:35:26 oh wait 14:35:30 it was in a string 14:35:32 that explains it 14:37:33 Deewiant, btw some output quite funny stuff 14:37:35 this was one: 14:37:36 http://rafb.net/p/ZtwV5r41.html 14:37:45 looks like a hillside viewed from the side IMO 14:37:51 heh 14:38:13 wait long enough and you'll get the works of Shakespeare ;-) 14:38:14 http://rafb.net/p/qq4XGt40.html was another such 14:38:17 Deewiant, XD 14:38:59 Deewiant, I wonder, you know, those that study evolving programs, using simulated genetics thing? 14:39:06 how would that work on befunge? 14:39:11 maybe a project for you? 14:39:16 :-P 14:39:33 I've got enough work as it is :-) 14:39:36 oh one that prints a endless stream of "ggggggggggggggggggggg" and so on 14:39:59 using a few thousands instructions for each g 14:40:10 hah 14:40:52 tix=64 tid=66 x=20 y=1: N (1128682830) <- the thing inside () is the ASCII code, I guess (char) wraps around heh 15:07:23 Well, I really have to go now. Bye all! 15:10:06 Deewiant, so I made an option to compile with alarm that causes program abort in case of too long running program 15:10:12 but yes I made a script now 15:10:36 Deewiant, ulimit -t didn't really work for a very simple reason: valgrind summary was not showed then 15:11:33 whoa another segfault 15:12:05 ==23783== Warning: client switching stacks? SP change: 0x7FEFFF1D0 --> 0x5E4CD4740 15:12:06 ==23783== to suppress, use: --max-stackframe=9029462672 or greater 15:12:06 ==23783== Invalid write of size 8 15:12:06 ==23783== at 0x4046E6: StackStackBegin (stack.c:364) 15:12:06 ==23783== Address 0x5e4cd4738 is on thread 1's stack 15:12:06 huh 15:13:03 err wtf 15:13:10 heh 15:13:27 Deewiant, random crash or infinite loop 15:13:38 a ? instruction duh 15:13:54 -!- Sgeo has quit ("Ex-Chat"). 15:14:52 ah *replaces with <* 15:21:08 Deewiant, ccbi gives "Exited due to an error: at :0" at that thing 15:21:45 at same point that cfunge segfaults 15:21:55 Deewiant, oh wait on { does ccbi allocate stuff on the stack? 15:22:01 while copying elements? 15:23:35 Deewiant, this cause the issue for both ccbi and cfunge: 15:23:37 yy$c{{{ 15:24:42 well hmm, I wonder why 15:24:58 trying to move 1128481353 elements 15:25:05 Deewiant, yes indeed 15:25:26 Deewiant, mine allocates a variable length array on the stack and then overflows it 15:25:38 not sure if the heap would help 15:25:47 it would run out of memory either way right? 15:27:41 of course 15:27:52 mine uses the heap in all such cases 15:28:10 Deewiant, according to the specs you should reflect 15:28:14 nope 15:28:20 { may act like r if no more memory is available for another stack. 15:28:24 two things 15:28:26 right may 15:28:27 first, 'may' 15:28:35 second, there is mem for the other stack 15:28:45 the problem is the way I do { 15:28:46 actually why the temp storage hrrm 15:28:55 If the SOSS contains k elements, where k is less than n, the k elements are transferred as the top k elements and the remaining bottom (n-k) elements are filled in with zero-value cells. 15:28:56 I don't need it in fact 15:29:10 what I do is I just pop n elements from the SOSS 15:29:29 and they'll become zeroes after the SOSS is emptied, of course 15:30:11 but they need to be put in temp storage and allocating a 4-gigabyte array doesn't work 15:30:18 but in any case, it doesn't matter 15:30:27 since they wouldn't fit on the stack 15:30:30 actually if I can't allocate temp storage, there is no space for the new stack either 15:30:35 as growing the stack to 4 gigabytes doesn't work either :-P 15:34:41 hm what about } then 15:35:01 transfering 1128481353 elements that way doesn't work either 15:35:13 but can you reflect on that? 15:35:14 Deewiant, ? 15:35:21 up to you 15:35:30 can you detect whether the host machine has enough mem for that? 15:36:57 Deewiant, well other programs can use memory, then linux will overcommit memory and so on 15:37:03 so hard to say if it will work in advance 15:37:20 but I will make it reflect in both cases 15:37:30 Deewiant, I *can* check if malloc returns NULL 15:37:54 AnMaster: you'd have to check every time you grow the stack 15:38:02 if you want to, I guess that's fine 15:38:06 the alternative is to crash hard. 15:38:14 the specs, as usual, say nothing. 15:38:16 well yes I mean, I can check on allocating temp storage 15:38:18 for transfer 15:38:29 but you'd have to check on growing the stack as well 15:38:36 because you need to move all that temp to the stack :-P 15:38:47 I do that already 15:39:00 in that case I simply abort() 15:39:20 because no funge program will ever be coded to accept reflect on, say, 5 15:39:31 you can't know that 15:39:32 :-P 15:39:35 so normally reflecting on push is just pointless 15:39:41 and will mess up stuff even more 15:39:50 I just perror and abort 15:40:02 on stack transfer however 15:41:10 Deewiant, the thing that really confused me was valgrind's cryptic message when I overflowed stack space 15:41:24 seems clear enough to me 15:41:29 I think it is possible some kernel internals reallocated stack to make it grow 15:41:34 first time at least 15:48:34 there mine is fixed 15:48:35 hehe 15:48:37 Deewiant, ^ 15:49:13 AnMaster: ? 15:49:24 Deewiant, as in "does not crash" 15:49:35 oh and why does CCBI give such cryptic errors? 15:49:52 I /think/ it's an error thrown by the RTS 15:50:03 RTS? 15:50:10 since it's an OutOfMemoryError there's no guarantee that there's enough memory to allocate an error message 15:50:13 so it has no data 15:50:18 run-time system 15:50:20 aha 15:50:51 a lot of programs/libraries pre-allocates stuff for that in a static array 15:51:02 well there's not really much to say 15:51:14 you know it's an OOM exception since it has no msg :-) 15:52:35 and like said, I could fix CCBI (would be trivial, wrap try {} around the whole func instead of just the new stack creation bit), but I don't think there's much point 15:53:05 what should be done is checking it for every instruction 15:53:17 which would be slow 15:53:24 which would be mostly pointless 15:53:44 at this point, I defer to people: if somebody wants to use CCBI with an app using that much memory, I'll implement it 15:53:44 ah a false positive 15:53:47 but not until then :-P 15:53:59 I check if exit code is greater than 100, and not the one of alarm 15:54:09 so false positives can happen 15:54:22 -!- ehird has joined. 15:54:46 Deewiant, still a good script 15:55:18 I know, it was my idea ;-) 15:55:33 yeah but my implementation 15:55:34 ;P 15:56:36 installing realplayer on linux at the last minute is not fun 15:56:58 hurry UP you stupid computer 15:58:06 -!- ais523 has joined. 15:58:30 hello, ais523 15:58:36 hi, ehird 15:58:46 DID YOU KNOW: bbc's online radio player is hell to get working on linux 15:59:10 * ehird should probably rant about it other places than #esoteric though 15:59:11 ;) 16:01:57 Deewiant, want the script? it depends on the interpreter existing with the return code of alarm to detect "time out" 16:03:16 also I haven't tested if return codes for those are same on other systems 16:06:17 nah, I'm good as long as you test whatever crashes cfunge on CCBI as well ;-) 16:07:42 http://www.nethack.org/2008-04-01.html 16:07:48 ooh, new NH release 16:08:17 wow 16:08:24 is it at 1.0 yet 16:08:26 :p 16:08:29 or joke? 16:08:33 web integration? 16:08:33 ehird, duh it is 3.x 16:08:34 hah 16:08:35 april fools 16:08:44 yeah 16:08:54 ehird, I just opened it 16:08:56 internet jackass day is fun! 16:09:11 ehird, ah yes inspircd's one was very fun 16:09:27 http://mail.google.com/mail/help/customtime/index.html Brilliant! 16:09:28 http://www.inspircd.org/forum//showthread.php?t=2978 16:09:31 err 16:09:37 http://www.inspircd.org/forum/showthread.php?p=4972 16:09:39 I meant 16:09:47 ehird, yes and saw the Virgle thing? 16:09:53 Virgel 16:09:54 I mean 16:09:56 hmm 16:09:58 where's slashdots 16:09:59 err spelling 16:10:04 AnMaster: no i just got online 16:10:09 ehird, I don't read slashdot 16:10:13 neither do i 16:10:14 ehird, anyway google did several this year 16:10:15 except on april 1 16:10:23 ehird, Virgle was one 16:10:31 AnMaster: uuugh, i hate that inspircd community 16:10:32 'For those of you who didn't figure out already, (DUH) this is an April Fools joke :-)' 16:10:44 for everyone too retarded to be of any use to anyone, this was a joke! ha! ha! ha! 16:10:47 :D 16:11:01 ehird, you know both w00t and Brain are developers btw 16:11:11 it's still lame to point out april fools jokes :< 16:11:16 that comment wasn't there this morning though 16:11:21 and Brain should have waited 16:11:25 until tomorrow IMO 16:13:11 should've never posted, its more fun when people still don't get it days later 16:13:48 HAHA wow 16:13:50 youtube wins 16:13:54 try one of the featured videos 16:14:21 ehird, already know that 16:14:30 waiting for the RFC 16:14:37 oh joy, the rfc! 16:14:48 it may be after 12am here, but on the internets the fools have only just begun :D 16:15:00 it isn't out yet 16:15:01 sigh 16:15:04 tis apr 1 17:15:03 CEST 2008 16:15:07 already late here 16:15:07 :/ 16:15:15 16:15 16:15:21 no problem though 16:15:28 i can still enjoy the ones 16:15:39 the ones? 16:16:15 AnMaster: on the internets 16:16:57 ah 16:17:02 internets .... 16:17:03 :/ 16:17:50 hmm 16:17:55 ais523: did you see the bbcs april fool? 16:17:57 the flying penguins 16:18:08 ehird: I haven't seen any of them yet 16:18:16 but I hope that's a Linux joke 16:18:17 ais523: it was on bbc1 or something earlier today 16:18:23 ais523: and no, unfortunately 16:18:26 obviously not 16:18:30 it was on the BBC's main tv channel 16:18:31 ;p 16:19:24 ais523: http://www.bbc.co.uk/iplayer/page/item/epeng001.shtml?src=ip_potpw 16:19:51 "Sorry, this programme is only available to play in the UK (Why?)" 16:19:53 that's all? 16:19:54 ehird, ? 16:20:05 AnMaster: uh, because it's the bbc 16:20:12 so most ppl can't see it 16:20:15 legal issues etc with broadcasting 16:20:18 I read about it on another site though 16:20:20 BBC = british broadcasting corporation 16:20:25 they are a non-profit 16:20:26 ehird, I know what BBC is 16:20:29 well 16:20:30 kind of non-profit 16:20:35 a little bit is non-profit 16:20:36 it's public service yes 16:20:37 .. 16:20:37 pretending to be, at least 16:20:51 but with all the corporation on top of it i actually have no idea how you can define the BBC's status exactly 16:20:51 we got public service TV/radio in Sweden too 16:21:21 the reason being that all British people have to pay tax to the BBC to be allowed to watch their programs 16:21:25 yeah, ais523 16:21:30 you can get out of it, but only if you can prove that you don't have a television 16:21:32 ok I know how to work around that 16:21:37 tor exit node in UK 16:21:38 :) 16:21:46 AnMaster: that'll be sooo good for streaming videos.. 16:21:51 lovely and zippy and fast 16:21:54 ehird, yeah that's the downside :( 16:23:06 can you listen to bbc streaming radio outside of uk? 16:23:07 i imagine not 16:23:14 yes I think you can 16:23:17 or could at least 16:23:20 a year ago or so 16:23:40 and you could watch TV outside UK before too, at lower resolution 16:23:47 Rights agreements mean that BBC iPlayer television programmes are only available to users to download or stream (Click to Play) in the UK. However, BBC Worldwide is working on an international version, which we will make available as soon as possible. 16:23:47 16:23:47 Radio programmes are available outside the UK in addition to podcasts at http://www.bbc.co.uk/radio/podcasts/directory/. Many BBC News programmes are available for viewers outside the UK at http://news.bbc.co.uk/2/hi/video_and_audio/default.stm, BBC Sport highlights are available at http://news.bbc.co.uk/sport and BBC Radio stations are available at http://www.bbc.co.uk/radio/ 16:24:17 yeah it was news I watched 16:24:27 iPlayer has massive DRM, though 16:24:33 I see 16:24:38 so won't ever work on linux? 16:24:46 well, all the Linux people complained 16:25:00 so they made a 'streaming' version using Flash, which can of course be captured by tech-savvy people 16:25:09 ah 16:25:19 yeah, of course it can :) 16:25:26 but that doesn't work on the iPhone, so they also made a completely DRM-free version with a user-agent check to see if you're an iPhone 16:25:32 guess how well that secures it... 16:25:44 ais523: probably the drm was required 16:25:46 beyond their control 16:25:51 ehird: yes 16:25:55 btw: PHP is funny! "9999999999999999" == "10000000000000000", "0xa" == "1e1" 16:25:58 but they shouldn't have asked Microsoft to design it 16:26:16 ais523: meh. the flash version works ok for me 16:26:20 and i can always rip em 16:26:36 whoo, make install of libxslt fails with make -j2 16:26:36 heh 16:26:50 AnMaster: lots of things do 16:26:52 recursive make, etc 16:27:03 not like 'make' takes a long time .. 16:27:03 ehird, well I have seen recursive make that works with it 16:27:11 ehird: "0" == false == "" != "0" 16:27:18 ehird, depend on what you are building 16:27:26 ehird, say, firefox? 16:27:34 or qt? 16:27:38 AnMaster: C-INTERCAL also fails with make -j2, probably because the dependencies on header files generated by bison are slightly wrong 16:28:03 hm I wonder if I can make something not build without -j2 16:28:13 and not "work sometimes" with -j2 16:28:17 but always work with it 16:28:27 Deewiant: yeah, but ... "0xa" == "1e1" 16:28:32 AnMaster: just write the dependencies in such a way that there are hidden dependencies that are implied by the dependencies you've written, but not stated 16:28:46 ais523, yes but that could fail under -j2 too 16:28:48 ehird: 0xa==1e1 is true in C too 16:28:52 ehird: each integer in a PHP array takes 68 bytes of storage 16:28:58 ais523: not in strings 16:29:00 ais523: yeah, but these are strings. 16:29:05 Deewiant: yeah, i read reddit too ;) 16:29:11 AnMaster: sorry, I misread your question 16:29:31 Deewiant: I noticed, but string comparison of numbers is fine if you have a separate compare-as-strings operator 16:29:42 in perl, "02" == "2", but "02" ne "2" 16:29:54 ais523, so would it be possible? 16:30:06 I'm thinking 16:30:19 what about writing a hidden dependency 16:30:27 ais523: === compares type&value in php 16:30:28 but... 16:30:28 yes you will always need that 16:30:29 but having the file that's needed rmd at the end of the step 16:30:32 "0xa" == "1e1"!!!!!! 16:30:46 ais523, hm still I think order may fail 16:30:57 unless maybe build an app, and have make run it wait for a file to exist or something like that 16:30:58 so I have thing3:thing1 and thing2:thing1 16:31:21 thing3 creates thing2.h at the start of the instructions and deletes it at the end 16:31:22 ais523, still you can't know in what order they will be exectued 16:31:34 and thing2 needs thing2.h somewhere in the middle 16:31:50 ais523, hm you would still need some kind of mutex 16:32:06 you can't know for certain, but if those are the only two things that depend on thing1 and everything else depends on one of those, then make would be stupid not to put things in the order where the -j2 works 16:32:14 maybe building an app first and have that app called in both rules to sync them in some way? 16:32:24 AnMaster: named pipes 16:32:30 -!- Judofyr has joined. 16:32:33 ais523, uhu? 16:32:37 have one rule write to a named pipe 16:32:41 and another rule read from it 16:32:43 a fifo? 16:32:45 yes 16:32:52 hm 16:32:54 ok 16:32:54 they'll both block until they're in sync 16:32:56 interesting 16:33:05 but without -j2 you'll get an infinite loop, because the one rule will block forever 16:33:10 yeah 16:33:23 ais523, and all package maintainers will forever curse me ;) 16:33:35 ehird: in essence, == in PHP is crap, never use it 16:33:51 Deewiant, not even when comparing numbers? 16:34:01 Deewiant: In essence, PHP is crap, never use it 16:34:05 say a=3; if ($a == 3) 16:34:14 AnMaster: you mean $a=3 16:34:17 ha! ha! ha! 16:34:21 AnMaster: only if you're 110% sure they're both numbers 16:34:22 oh 16:34:24 yes, you must prefix every variable, everywhere with $ 16:34:27 it isn't even a sigil 16:34:28 ehird, I'm not PHP programmer 16:34:28 AnMaster: but if you are, might as well use ===... 16:34:29 like % or @ 16:34:30 it's $ 16:34:33 for no reason 16:34:36 every variable must start with $ 16:34:37 Deewiant, eh ===? 16:34:38 oh 16:34:41 and variable variables! 16:34:48 AnMaster: essentially, typesafe == 16:34:50 $$foo, where $foo = 'hello', is $hello 16:34:51 :D 16:34:56 i believe they can nest 16:35:12 oh god 16:35:15 yep 16:35:18 its so funny 16:35:42 AnMaster: or rather, returns false if they're of differing types, so not really 'safe' but at least it's always right 16:35:56 hm the fuzz test isn't finding anything new any longer 16:36:22 anyway it isn't useful for fingerprints or IO 16:37:01 you can test fingerprints, too, just prepend "ASDF"4( to the program 16:37:05 oh god this REM song again 16:37:07 bloody hell 16:37:19 * ehird should shout at mplayer instead of konversation 16:37:21 probably. 16:37:21 Deewiant, true 16:37:53 Deewiant, need to know what fingerprint I want to test, not easily to do randomly though 16:38:31 Deewiant, and for IO I'm too lazy to set up a chroot for this 16:38:34 AnMaster: just run a couple (dozen/hundred/whatever) times for each print 16:38:41 hmm 16:38:45 i have a file in ~ called 1 16:38:51 another called _#84*\\1-:0\\:0\\#_5553ppppppppppppppppppppppppp 16:39:00 and one called ,,,,,[- 16:39:13 -!- cherez has quit (Read error: 113 (No route to host)). 16:39:15 ehird, those latter look like funge 16:39:17 ehird: I often accidentally create files called 1 16:39:27 it's easy to type 2>1 rather than 2>&1 by mistake 16:39:37 ehird, yeah but that doesn't explain the other two 16:39:58 eh 16:39:59 ais523, ^ 16:40:18 hmm... the second one looks very like a Funge program in some ways, but the backslashes seem to imply it isn't 16:40:18 the second-last looks like funge 16:40:20 the last is brainfuck 16:40:27 yeah 16:40:41 ,,,,, isn't very useful Brainfuck anyway in most cases 16:40:46 ais523, \ exists in funge 16:40:53 and well ls may escape \ 16:40:54 iirc 16:40:56 AnMaster: always in pairs? 16:41:02 oh 16:41:09 ais523, as I said, something may have escaped it 16:41:25 what's the betting that there were < or > characters at the ends of the Brainfuck or (presumably Unefunge) programs? 16:41:28 ais523, but no, \ is used to swap top items of stack 16:41:58 ais523, for funge, why not, befunge at least 16:42:01 so yes, the second one is probably Unefunge assuming that the \ have been doubled by something 16:42:03 to wrap 16:42:15 because it would be unlikely to type Befunge in on the command line... 16:42:18 eh 16:42:20 ais523: Wow. apparently BBC Northwest rickroll'd the news. 16:42:34 that's just crazy 16:42:47 ais523, to me it looks quite like that "sucide program" someone made 16:42:51 not exactly but close 16:42:58 ie, it removed itself from memory 16:43:01 the row of ps is what makes it look like that 16:43:06 indeed 16:43:34 wow... 16:43:38 ehird, what? 16:43:39 webcomics are redirecting to each other 16:43:43 that's confusing 16:43:45 ehird, ah yes 16:43:50 xkcd and two other 16:43:51 hehe 16:43:52 xkcd.com takes 3 hops to actually get to xkcd 16:44:03 xkcd redir> questionablecontent redir> dinosaur comics redir> xkcd 16:44:13 ehird, I found out hours ago 16:44:34 * ais523 checks to see what Wikipedia are doing 16:44:36 i just got on the interwebs earlier this hour 16:44:37 :( 16:44:42 ais523, they do something? 16:44:47 haven't noticed before 16:45:10 Ima Hogg 16:45:11 lmao 16:45:11 AnMaster: generally they feature an article with the Main Page summary written to look like it's an April Fools' joke, but is actually true 16:45:11 AnMaster: featured article 16:45:18 last year they featured George Washington 16:45:27 ais523: not the president, though 16:45:29 but it was a different person with that name, not the American president 16:45:29 and? 16:45:43 jesus 16:45:46 Talk:Main_Page 16:45:48 has a notice about it 16:45:53 i hate the world :( 16:47:09 some admins are trying harder: see http://en.wikipedia.org/w/index.php?title=MediaWiki:Tagline&diff=next&oldid=202527747 for instance 16:47:19 for those who don't know, that line's on every page on the entire wiki 16:47:59 yeah I know 16:48:09 it's in the MediaWiki namespace after all 16:48:50 heh, the on this day is quite good as well 16:48:53 ais523: hmm 16:48:56 that revert is :( 16:49:06 there have been edit wars there all day 16:49:11 and admins are getting blocked, as usual 16:49:19 eh 16:49:19 April 1 must be the record day for admin blocks 16:49:20 what? 16:49:24 bureaucracy.. 16:49:27 oh? 16:49:29 weird 16:49:30 they're normally given an expiry time of 00:01 April 2 16:49:38 ah 16:52:38 oh yay, I Might Be Wrong 16:56:54 wow: http://www.channelregister.co.uk/2008/03/31/microsoft_india_tax_ruling/ 16:57:01 it's dated March 31, so is hopefully true 16:58:20 march 31 is popualr for april fools 16:58:21 unfortunately 16:58:29 its not like the Register is often accurate though 16:59:28 the BBC have an iPlayer thing about Rick "Roll" Astley 17:00:32 http://news.bbc.co.uk/player/nol/newsid_7320000/newsid_7323500/7323544.stm?bw=bb&mp=wm&news=1&bbcws=1 17:01:46 SimonRC: apparently bbc northwest rickrolld the news 17:02:05 maybe that's it 17:02:06 um, how? 17:02:10 not watching, busy listening to the radio 17:02:17 SimonRC: um, by showing rickroll on the news 17:02:31 surely it doesn't count unless you are tricked into clicking it? 17:02:51 BTW, all YouTube's featured videos redirected to rr too 17:02:56 HAHAHA 17:02:57 on the fron page, at least 17:03:01 Now playing: 'Radio Head by Talking Heads' 17:03:05 that's just teasing 17:03:56 then there're the flying penguins... 17:04:09 including video on YouTube 17:05:12 of course, the bbc news rr is on YT: http://www.youtube.com/watch?v=spOOo0oyM5U 17:05:31 i haven't seen the usual stupid ones yet 17:05:32 thank god 17:37:16 -!- timotiis has joined. 17:38:30 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)). 17:53:26 -!- okopol has changed nick to oklopo. 17:53:28 -!- oklopo has changed nick to oklopol. 18:10:58 -!- RodgerTheGreat has joined. 18:11:12 hey everyone 18:11:20 hi 18:11:25 RodgerTheGreat: hi 18:11:37 hi ehird, ais523- what's up, guys? 18:11:47 ok, what I'm going to do is this: 18:12:16 C-INTERCAL 0.28 has just been released, so I'm going to announce the rival compiler CLC-INTERCAL instead 18:12:35 the latest version available at http://www.intercal.ukfsn.org/download/CLC-INTERCAL-1.-94.-2/ and claims to be dated today 18:12:42 I'm then going to let ehird announce the compiler I wrote 18:13:57 haha 18:14:09 that will be confusing :D 18:14:31 that will be my first comp.lang.intercal post 18:14:33 scary 18:14:57 oh, I thout you were just goign to announce it here 18:15:05 ah, that's a good point 18:15:11 but you've just told everyone 18:15:14 and it's actually alt.lang.intercal because nobody seriously thought the Big 8 would approve it 18:15:17 ehird: that was the joke 18:15:21 ah 18:15:22 :D 18:15:23 but I didn't say where it was 18:15:27 so it isn't really released 18:15:28 that's a good point 18:15:50 but isn't the joke kind of thin now, after me just misunderstanding it and you explaining what's funny about it? :p 18:16:22 yes 18:16:45 wait a moment 18:17:53 actually, even if you had suggested usenet, i'd have to post through google groups and that would be embarrasing ;) 18:17:59 don't think my isp offers usenet 18:18:56 C-INTERCAL is available at , , and 18:19:31 heh, did they just put it on freehsell? 18:19:31 :D 18:19:48 the changelog is at 18:19:50 ehird: yes 18:19:59 but it's nice to have multiple mirrors 18:20:00 i am fasterr! ;) 18:20:02 yes 18:20:03 it is 18:20:13 now I have to compose a witty message 18:20:29 ais523: you have donated C-INTERCAL to the gnu project 18:20:31 quoting continuation.i will probably be good 18:20:34 ehird: where? 18:20:40 ais523: i meant as a witty message 18:20:43 not really that funny though 18:21:01 hmm 18:21:04 ESR got there first: 18:21:07 " 18:21:07 Someday, maybe, this will be made part of GNU. 18:21:07 ;; But probably not unless they take many mind-eroding drugs first. 18:21:09 " 18:21:11 i'll put a README.txt on my site 18:21:18 comment in http://elliotthird.org/mirror/c-intercal/ick-0.28/etc/intercal.el 18:21:22 in case anyone wonders who the hell this elliotthird guy is 18:21:30 and what he's doing hosting c-intercal expanded tarballs 18:21:51 ais523: ah :) 18:22:06 ais523: you could say that you are going to reimplement seaside in it 18:22:15 but that probably won't be familiar with most a.l.intercal people 18:22:34 maybe just something along the lines of C-INTERCAL being a pioneer in the next generation of web development as you can use continuations with them? 18:22:43 I'll say that you challenged me to write a continuation library in INTERCAL 18:22:47 and a blurb about productivity benefits over Java & COBOL ("two other well-known web languages") 18:22:48 and that I managed it in 24 hours 18:22:53 nobody will believe that 18:22:53 ais523: yes! 18:23:09 'INTERCAL is 10x more rapid than Java and COBOL, and 3x faster than Ruby.' 18:23:17 also a crap joke 18:23:21 (Ruby is slow as molasses) 18:23:25 make your own jokes 18:23:26 ;) 18:23:47 ais523: hmm, should i serve .doc as text/plain? 18:23:51 right now it's serving as a word file 18:23:54 probably 18:24:02 that extension scheme wasn't my fault 18:24:09 it's legacy stuff 18:24:17 probably dates from before Word became popular... 18:24:32 http://elliotthird.org/mirror/c-intercal/ick-0.28/pit/t_tet 18:24:33 what is 'tet'? 18:24:40 not sure 18:24:48 that file has no extension 18:24:57 and is a data file either for the Intercal FFT, or for the Game of Life program 18:24:57 Content-Type: application/msword 18:24:58 i'll fix that 18:25:13 my server is ready to handle just about anything right now though 18:25:17 so feel free to post any urls publically 18:26:36 ais523: hmm 18:26:39 i can host the html documentation 18:26:40 if you want 18:27:05 that's being hosted at freeshell, but good idea 18:27:23 you'll have to regenerate it first, but doc/Makefile can do that easily enough 18:27:34 ais523: what directory name, though? 18:27:40 perhaps i should make a directory name for each release 18:27:53 http://elliotthird.org/mirror/c-intercal/0.28/ick-0.28 18:27:56 http://elliotthird.org/mirror/c-intercal/0.28/ick-0-28.tgz 18:28:02 http://elliotthird.org/mirror/c-intercal/0.28/docs 18:28:12 decide quickly, before I finish writing this announcement! 18:28:18 ais523: haha, well 18:28:25 if you can give me a good name for a documentation url 18:28:27 without one like that 18:28:30 then i won't chang eit 18:29:02 c-intercal/doc-0.28 would be one way to do it 18:29:36 ais523: well, you decide. depends how you'd like it layed out, really 18:29:49 I don't really mind 18:30:04 ais523: yes, but there's no real distinction, and it's your compiler, so i'm going to let you decide :p 18:30:16 go for doc-0.28 then 18:30:20 okay 18:30:35 ais523: how would i go about building it without trashing the source tree? 18:31:20 easiest to copy the makefile, *.txi, and *.css from doc into a separate directory, and doing it there with make ickhtml 18:31:31 wait, you also need to copy *.pl across 18:31:43 because I use Perl to do a bit of formatting and touching-up 18:32:02 ais523: then just 'make'? 18:32:09 make ickhtml 18:32:19 there are different targets for each possible version 18:32:26 ais523: the other kinds of documentation are already in the source tree, right? 18:32:28 so i just need the html 18:32:42 ehird: only the .txt and .info are built by default 18:32:48 there's make all to generate it in all formats 18:32:57 ais523: what others are there? 18:33:03 pdf 18:33:05 and html i guess 18:33:07 PDF, info, plain text, two HTML formats 18:33:11 two? 18:33:12 ah 18:33:15 single file & multi file 18:33:19 i'll only do multi file 18:33:23 seems like the only useful one to me 18:33:43 make: *** No rule to make target `tidy.cfg', needed by `html/index.htm'. Stop. 18:33:56 copied that over too 18:33:56 that's in the dir too, I forgot it was needed 18:34:04 even though I remembered that tidy was 18:34:12 (texinfo produces lousy HTML, it badly needs the tidy) 18:34:43 ais523: i'll put it at http://elliotthird.org/mirror/c-intercal/doc-0.28/html/ in case i ever need new formats 18:34:45 actually, wait 18:34:53 i doubt i'll ever publish more formats 18:34:53 so. 18:35:34 ais523: so it'll just be 18:35:36 http://elliotthird.org/mirror/c-intercal/doc-0.28/ 18:35:40 OK? 18:35:41 OK 18:36:05 ok 18:36:07 have a canonical url 18:36:08 http://elliotthird.org/mirror/c-intercal/doc-0.28/ 18:36:09 WITH the slash 18:36:16 since it's a directory 18:36:23 yes 18:36:31 okay 18:36:32 i think that's it 18:36:49 okies 18:36:51 now i'll announce here 18:36:54 *a-hem* 18:37:08 * Iskr claps 18:37:36 C-INTERCAL 0.28 is available at http://elliotthird.org/mirror/c-intercal/ick-0-28.tgz. The changelog is at http://elliotthird.org/mirror/c-intercal/ick-0.28/NEWS.txt, and documentation at http://elliotthird.org/mirror/c-intercal/doc-0.28/. 18:37:57 It is also available at http://www.intercal.ukfsn.org/download/ick-0-28.tgz and http://intercal.freeshell.org/download/ick-0-28.tgz. 18:38:01 * Iskr reclaps 18:38:10 *end of release.txt 18:38:18 Iskr: i know, isn't it brilliant 18:38:41 well i wanted to ask 18:38:52 ais523: haha: 18:38:53 'RELEASE NOTES FOR THE RELEASE NOTES FOR C-INTERCAL VERSION 0.27' 18:38:53 does someone here use prolog? 18:39:01 Iskr: yeah quite a few 18:39:24 Iskr: I've read the manuals for a decades-old Prolog compiler, from which I learnt the language, but have never used it 18:39:32 #prolog channel seems dead 18:39:52 ais523: I can't wait for the continuation.i stuff 18:40:04 I bet people will think it's an infinite loop or something 18:40:16 Or something that spews garbage characters 18:40:23 But you can certainly use it as an advertising point 18:40:30 ehird: how do you suggest that I advertise it? 18:40:51 -!- Judofyr has joined. 18:40:52 for the time being I'm going to say that I wrote a continuation library in 24 hours, give lots of impossible-sounding details about how it was done which aren't very useful, and not link to it 18:40:56 ais523: INTERCAL is a tried-and-tested (since 70s), well-maintained language that can be used to rapidly develop new features like continuations 18:41:13 ehird: everyone on alt.lang.intercal know what INTERCAL is already 18:41:25 (if someone has used flora-2 or logtalk or other oo prolog please let me know) 18:41:26 ais523: yeah, but release notes often include things like that 18:41:29 but I'll paste my announcement so you can look at it and suggest improvements before sending it 18:41:32 i was just summarizing the joke 18:41:52 because most languages wouldn't let you implement continuations in them, let alone that fas 18:41:53 t 18:42:10 its a crap joke though 18:42:11 ignore me 18:42:12 :) 18:43:22 ais523: I wonder how many people have found it already 18:43:41 maybe Debian have, they have a bot watching intercal.freeshell.org for new releases 18:43:53 * SimonRC admires the new CodingHorror theme 18:43:59 SimonRC: codinghorror is a bunch of crap 18:44:01 on another note 18:44:04 i am tail -f'ing my log 18:44:09 ehird: huh? 18:44:11 91.105.71.115 =ais? 18:44:27 very nice, though visited links are rather similar in colour to plain text 18:44:28 SimonRC: never seen good content there 18:44:52 ehird: don't recognise the IP 18:44:59 I normally start with 147 18:45:12 ah 18:45:14 you have hits ther too 18:45:15 must be me 18:45:20 ehird: odd, I do find interesting stuff there 18:45:21 SimonRC: hah, the latest post is hilarious 18:45:29 jwz uses OS X on his personal computer 18:46:32 ais523: I am refreshing a.l.intercal in anticipation. ;) 18:46:40 ehird: haven't finished writing it yet 18:46:47 anything engineered, where mass-production is not a factor, will keep becoming harder and harder until humans can only just manage it 18:47:00 see: software, any buisness, spacecraft 18:48:29 ais523: ... http://groups.google.com/group/alt.lang.intercal/browse_thread/thread/5a0696843eeeb5b6/65b0d4a066a4c544#65b0d4a066a4c544 18:48:39 you are evil 18:48:43 hmm, maybe I am overstretching this 18:48:45 not implemented anywhere yet 18:48:51 it's still a drawing-board idea 18:49:36 -!- olsner has joined. 18:49:52 ais523: will c-intercal ever get a 1.0? 18:49:57 or is 0.99 followed by 0.100 18:50:03 ehird: it has a 1.27 18:50:09 the minor version number comes before the . 18:50:22 with the major version number afterwards 18:50:45 wow 18:51:00 ais523: i have a suggestion when you get to 9.99 18:51:18 invent a TC programming language for expressing version numbers 18:51:25 and make it fully alphanumeric 18:51:30 oh, and . 18:51:31 and - 18:51:32 so the release fater 9.99 18:51:34 migth be: 18:51:41 Da9-f.7 18:51:48 and you'd have to run the interpreter to find out what it is 18:51:57 :D 18:51:58 ehird: Debian would really like that! 18:52:08 ais523: isn't that a plus point? :D 18:52:12 they have to invent version number mangling schemes for INTERCAL as it is 18:52:21 so this will be 28:0.28-1 on Debian 18:52:37 you should see what they do to CLC-INTERCAL version numbers, though 18:52:54 ais523: when you release an Extra Special Release of some kind 18:53:00 it should be a program that outputs pi in increasing accuracy 18:53:04 so it starts 18:53:07 2,3,3.1 18:53:08 etc 18:53:14 or maybe just one that outputs pi 18:53:17 so its 18:53:19 3.14...... 18:53:21 there's a pi.i already 18:53:27 and the program never terminates because it keeps calculating 18:53:33 i propose that the program for that version should be 18:53:36 oh, for a version number 18:53:46 Da90df98asdDFa0sa.D-a048aASd-ASd--A..asdAS89d82axpA0i92 18:53:52 and then debian will kill themselves 18:53:56 because they can't mangle it sanely 18:54:04 well, they could try 3.14 18:54:13 but that would clash with a real release 18:54:17 ehird: they'll just stick a sequence number on the start 18:54:17 whose version evaluates to 3.14 18:54:22 ais523: that's true 18:54:27 ais523: but i still love my idea :D 18:54:31 hey, you've given me a great idea for an esolang 18:54:36 of course the version evaluator would be in INTERCAL 18:54:40 using C-INTERCAL extensions 18:54:42 and each version, 18:54:43 all programs and their results are stored in a central repository 18:54:47 you update it to require features from the latest one 18:54:54 so to find out the version, you have to download the tarball 18:54:56 compile it 18:54:58 compile version.i 18:55:00 then feed it through 18:55:14 to write a program, you just pick a random string of characters like Da90df98asdDFa0sa.D-a048aASd-ASd--A..asdAS89d82axpA0i92 that nobody has used yet, and define the result 18:55:39 that way programs have no resemblence at all to what they do 18:55:56 ais523: can you compose together programs? 18:55:59 then primitives are simple 18:56:07 just make a program ';' 18:56:11 -!- jix has quit (Nick collision from services.). 18:56:12 and define the result via a primitive function 18:56:21 -!- jix has joined. 18:56:27 ehird: writing two programs in a row in INTERCAL normally has the effect of running the first and then quitting, unless they happen to have line numbers in common or use computed COME FROM 18:56:46 ah, you're talking about the new idea I had 18:56:54 the answer is maybe 18:57:59 ais523: make it graphical 18:58:05 you tag a value with a name 18:58:08 and that uploads it to the repository 18:58:14 but the value can also be the feeding of one program into another 18:58:25 so if you have an if, passing to several functions, it's a tree structure 18:58:33 and you have to come up with names for each 'if' or similar you write 18:58:40 ehird: http://pastebin.ca/966339 18:58:45 that's my draft for the announcement 18:58:56 what do you think, and have I spelt your name correctly? 18:59:18 ais523: Elliott 18:59:25 the URL does have it in it, you know 18:59:38 ais523: also, a link to the docs on mine may be helpful, since freeshell haven't updated yet 18:59:40 last i checked 18:59:47 yes 19:00:20 and about your name: I nearly always get it wrong first time for some reason 19:00:29 Everyone does :) 19:00:30 I think my fingers have memorised something else 19:00:59 elliot third 19:01:13 elliot III 19:01:24 ais523: also, you have no link to the changelog 19:01:35 which is available on mine (i think the only one, since i am the only one to expand afaik) 19:01:39 ehird: I don't normally, maybe I should 19:01:51 ais523: it's customary, but your call 19:01:53 http://elliotthird.org/mirror/c-intercal/ick-0.28/NEWS.txt if so 19:01:59 actually, I will, so as to give an idea of the expanded version 19:02:06 and to give people a chance of finding continuation.i 19:02:13 Any other changes needed? 19:03:19 ais523: you might want to link to continuation.i directly 19:03:25 though it may be a bit of an 'easter egg hunt' 19:03:34 but yeah, apart from that it looks OK 19:03:36 the easter egg hunt was the whole point 19:03:40 apart from using < as the first character on a line 19:03:43 looks kind of odd 19:03:48 why? 19:04:07 Not sure. Think it's just pastebin.ca's font. 19:04:37 OK, I'll submit the message, then 19:05:40 grr, Google Groups screwed up the line breaks 19:05:40 ais523: 'thttpd/2.23beta1 26may2002' 19:05:48 funny 19:05:50 a beta 19:05:53 is the most stable web server out there 19:06:00 ais523: aww 19:06:12 ais523: you can cancel google groups posts iirc 19:06:13 if you do it fast 19:06:31 nah, I'll just post an unmangled version 19:06:58 cool 19:07:00 TWO links to my site 19:07:01 ;) 19:07:45 ais523: did you link to my html docs? 19:07:49 yes 19:07:53 ah 19:07:55 didn't read it properly 19:07:55 :) 19:08:01 yeah, i see 19:08:17 i'm surpised my server's that fast 19:08:34 its pretty darn good for $20/mo 19:08:45 256mb ram, 10gb storage, 100gb bandwidth 19:08:49 root access and all that 19:08:52 oh well, it mangled some on the correction, but they're /different/ URLs, so all the URLs have some correct version now 19:09:21 ais523: you could post it with 'Revised^3' in the title 19:09:25 that's probably not funny to intercalers though 19:09:27 the joke: 19:09:38 scheme's latest standard is Revised^6 Report On the Algorithmic Language Scheme 19:09:41 originally it want 19:09:47 Revised Report on the Algorithmic Language Scheme 19:09:50 Revised Revised Report on the Algorithmic Language Scheme 19:09:56 but then it got too cumbersome 19:09:59 so to expand in full... 19:10:11 Revised Revised Revised Revised Revised Revised Report on the Algorithmic Language Scheme 19:10:12 ehird: I won't try again, there'd just be too much of a chance of a further messup 19:10:51 yeah 19:11:28 ais523: maybe you should tell the debian people? 19:11:32 might speed up the flow of versions 19:11:50 ehird: as I said, they have a bot watching intercal.freeshell.org for new versions 19:11:56 ah 19:11:57 ooh 19:12:00 so generally you only have to tell them if you change the version number scheme 19:12:01 someone on Fedora just requested my site 19:12:07 not me 19:12:20 yeah 19:12:23 think it's an a.l.intercal 19:12:24 you have tail -f on the logs, presumably 19:12:27 yep 19:12:28 :D 19:12:40 unlikely that i'll get a flood of traffic though 19:13:30 speaking of which 19:13:34 it'd be helpful if I installed ick myself.. 19:13:34 :D 19:13:42 well, i have an EXCELLENT place to download it from.. 19:15:49 ais523: MAJOR BUG 19:15:50 ./config.sh: 910: Syntax error: "(" unexpected (expecting "fi") 19:16:01 oh no 19:16:05 let me try over here 19:16:30 works fine for me 19:16:42 and I generated it using the normal methods 19:16:47 what shell are you using, and what OS? 19:17:00 ais523: os - ubuntu 7.10 19:17:01 shell - bash 19:17:05 all i did was untar 19:17:05 so am I 19:17:07 then ./config.sh 19:17:16 and that's all I did too, on the exact same file 19:17:17 ais523, link so I can try it? 19:17:29 AnMaster: my server has it 19:17:34 ehird, and where si that? 19:17:35 http://elliotthird.org/mirror/c-intercal/ick-0-28.tgz 19:17:36 is* 19:17:38 that's where 19:17:45 -!- Tritonio_ has quit (Excess Flood). 19:18:01 ehird: there isn't a ( on line 910 19:18:23 INFODIRFILE=(irrelevant) 19:18:24 -!- Tritonio_ has joined. 19:18:25 the next line 19:18:34 echo "configure: warning: Could not find Info directory file, set infodirfile in the Makefile by hand" 1>&2 19:18:38 else 19:18:42 echo "$ac_t""$INFODIRFILE" 1>&6 19:18:42 fi 19:18:42 else 19:18:42 INFODIRFILE=(irrelevant) 19:18:42 fi 19:18:42 relevant context 19:18:49 yes, there's a ( on line 911 19:18:55 so, what's up?! 19:18:56 but then why would it report a bug on 910 19:19:11 ais523, is config.sh configure? 19:19:15 by autotools? 19:19:19 yes 19:19:25 configure generated by autoconf version 2.13 19:19:26 old 19:19:31 AnMaster: boo hoo 19:19:39 AnMaster: but does i twork for you? 19:19:40 autoconf-2.61 is what I got locally 19:19:51 ais523: because shlels often get that wrong 19:19:52 ehird: I just downloaded it from your server a second time, untarred, cd and config.sh, and it worked 19:20:03 sdfsddfgdfghfh 19:20:03 ./config.sh --prefix=$HOME/local/ick works yes 19:20:07 ehird, ^ 19:20:15 maybe it's just be 19:20:21 GNU bash, version 3.2.25(1)-release (i486-pc-linux-gnu) 19:20:24 ehird: are you sure you were using bash? The default /bin/sh on Ubuntu is dash 19:20:31 GNU bash, version 3.2.17(1)-release (x86_64-pc-linux-gnu) 19:20:38 ehird, ah yes that may be it 19:20:40 ais523: ahh 19:20:44 another ubuntu mess up 19:20:45 Try bash ./config.sh 19:20:47 ubuntu is crap indeed 19:20:48 manually change config.sh 19:20:53 to /usr/bin/env bash 19:20:59 that's my suggestion 19:21:00 I set it to bash wonce I discovered dash was buggy 19:21:01 (for the next release) 19:21:12 AnMaster: ehm, depending on bash and saying '/bin/sh' is what is crap 19:21:15 s/w// 19:21:21 ehird: I don't depend on bash 19:21:24 ais523, file a bug for ubuntu or autoconf then? 19:21:26 it works on other shells too 19:21:27 ais523: ok, just non-dash 19:21:28 ? 19:21:36 add a check at the start 19:21:37 I know dash is buggy, but am not sure how 19:21:45 ais523: shouldn't be hard 19:21:47 ais523, file a bug against ubuntu! 19:21:49 check $SHELL for 'dash' 19:21:52 it went and added -e on lots of lines at random when I used it for a makefile elsewhere 19:22:00 and say 'please use a non-dash shell' and exit if it is 19:22:03 and I haven't pinned down the bug 19:22:07 ais523, 19:22:08 $ make install 19:22:08 cp bin/ick bin/convickt /home/arvid/local/ick/bin 19:22:08 cp: target `/home/arvid/local/ick/bin' is not a directory 19:22:08 make: *** [install-common] Error 1 19:22:12 mkdir first.... 19:22:25 ais523: '-DICK_HAVE_' is that.. intentional? :p 19:22:30 ehird: yes 19:22:37 not the -DICK, sorry 19:22:42 :p 19:22:44 I thought you were asking if I wrote that line in the first place 19:22:45 software naming 19:22:46 what fun 19:22:49 ais523, well your make install is broken 19:22:57 liboser.so 19:22:58 -loser 19:23:01 liburk.so -lurk 19:23:07 AnMaster: it expects the --prefix to be layed out like a typical /usr 19:23:15 so it needs to have a /bin, /share subdir, etc 19:23:18 gnu's libiberty is -liberty 19:23:23 ais523, all other software seem to be able to create those if missing 19:23:23 how about a libick that requires ICK to be defined :P 19:23:29 ais523, so I'd suggest it is a bug 19:23:33 AnMaster: I wasn't aware that people did that elsewhere 19:23:39 so I agree that it's a bug 19:23:39 olsner: -lick 19:23:42 ais523, well automake does iirc 19:23:44 a simple mkdir -p should sort it 19:23:46 ehird: -DICK 19:23:48 and cmake does and so on 19:23:57 ais523, except -p may not work on really old systems iircv 19:23:58 olsner: well, yeah 19:23:59 iirc* 19:24:03 olsner: but ick is the intercal compiler 19:24:05 AnMaster: yes, but I use it anyway 19:24:07 and it already defines stuff starting with ICK 19:24:11 so that joke is already done :) 19:24:18 -DICKDATADIR etc 19:24:24 I use ICK_ and ick_ as name-mangling prefixes for all externally-visible symbols in this version 19:24:26 beh 19:24:33 sh -c "(test -f /home/arvid/local/ick/info/ick.info.gz && install-info --quiet --dir-file=/usr/share/info/dir /home/arvid/local/ick/info/ick.info.gz) || true" 19:24:34 /usr/share/info/dir: Permission denied 19:24:37 ais523, another one 19:24:48 AnMaster: uhh 19:24:49 you need to sudo 19:24:51 you don't use --prefix at all? 19:24:55 or using sh 19:24:56 ah, a --prefix bug 19:24:57 oh 19:24:58 i see 19:24:59 ehird, I'm installing in my home dir using --prefix 19:24:59 yeah 19:25:00 ... 19:25:00 that's a bug 19:25:07 ais523: I'm happy to host 1.28 :p 19:25:20 that bug was in 0.27, anyway 19:25:28 ais523, oh and tell me wtf is this meant for: 19:25:29 sh -c ": -q" 19:25:30 it's just nobody caught it before 19:25:38 AnMaster: it does nothing 19:25:42 ais523, why? 19:25:45 it's a nice smiley 19:25:46 it would have updated the man database on a system that needed it 19:25:53 oh I see 19:25:59 but autoconf noticed that youre system didn't need that, and commented out the line 19:26:05 s/youre/you're/ 19:26:10 ah yes 19:26:12 well, coloned it out 19:26:35 unlambda.i is weird 19:26:38 ' PLEASE NOTE THAT IMMORTALITY IS TREASON' 19:26:41 ais523, what is convickt for? 19:26:53 AnMaster: converting INTERCAL files between different character sets and syntaxes 19:27:03 because some operators are written differently in different versions 19:27:04 ah 19:27:05 I see 19:27:08 also: 19:27:10 -b :reduce the probability of IE774 to zero 19:27:11 eh? 19:27:21 that's a typo, it should say E774 19:27:22 convickt.c -- translate between various INTERCAL formats 19:27:28 there's a random bug in the compiler 19:27:35 AnMaster: intercal specifies a random bug in the compiler 19:27:42 I see... 19:27:47 by N probability, the E774 will be trigggered 19:27:47 and what is that random bug? 19:27:55 AnMaster: random bug = E774 is triggered 19:27:59 I see 19:28:04 so basicall ify ou don't use -b it might randomly fail to compile 19:28:06 with E774 19:28:08 which is the random bug error 19:28:13 ehird: not fail to compile, E774 is runtime 19:28:26 ah, yes 19:28:30 $ bin/ick -b pit/continuation.i 19:28:30 ICL555I FLOW DIAGRAM IS EXCESSIVELY CONNECTED 19:28:36 ais523, you wrote the code, explain 19:28:43 you need to give -am as command-line options 19:28:50 i get 19:28:51 ICL017I DO YOU EXPECT ME TO FIGURE THIS OUT? 19:28:51 ON THE WAY TO 20 19:28:52 which is funnier 19:29:04 ehird: that's bad 19:29:06 ais523: -am is not valid 19:29:08 :\ 19:29:13 are you sure you're compiling with 0.28 and not 0.27? 19:29:21 it would have produced E017 on that file 19:29:23 ais523, god, it took over 10 seconds for ick to run on that file?! 19:29:26 but E017 has been toned down a lot 19:29:29 oh duh 19:29:31 i didn't make install 19:29:32 heh 19:29:41 AnMaster: most of it's gcc 19:29:45 yeah 19:29:46 gcc is slow 19:29:50 and the c files are huge 19:29:53 ah 19:29:55 AnMaster: try compiling with -c 19:29:57 that'll dump the c file 19:29:59 and you can take a look at it 19:30:03 that should help you understand ;) 19:30:05 ehird, I don't want to 19:30:12 or -g, which will dump the C file but complete the compilation anyway 19:30:14 ICL633I PROGRAM FELL OFF THE EDGE ? 19:30:21 ie how do I use ./continuation 19:30:32 you just use ./continuation, I thought, it's a test program 19:30:42 $ ./continuation 19:30:43 ICL633I PROGRAM FELL OFF THE EDGE 19:30:43 ON THE WAY TO THE NEW WORLD 19:30:43 CORRECT SOURCE AND RESUBNIT 19:30:45 really? 19:30:50 it should just output a bunch of roman numerals 19:30:55 it outputs that 19:31:00 hmm... maybe the test program was deleted by mistake 19:31:07 what's the very last line of your continuation.i? 19:31:20 DO RESUME #1 19:31:22 ais523: its fine for me 19:31:22 i don't really know anything about intercal, how did you make continuations? 19:31:24 :/ 19:31:34 ais523, ^ 19:31:39 oklopol: he wrote stuff that uses multithreading to do them 19:31:47 and used his compiler's CREATE to define syntax for them 19:31:55 oh 19:31:58 AnMaster: there shouldn't be an error 633 if there's a RESUME #1 as the last line 19:31:59 extendable syntax 19:32:09 oklopol: he just implemented it 19:32:09 ais523, well explain it then? 19:32:09 i really should learn it 19:32:10 that doesn't make any sense 19:32:23 AnMaster: uh you effed up 19:32:25 try redownloading 19:32:27 'cause it works for me 19:32:34 ehird, you got x86_64? 19:32:47 * AnMaster runs that platform 19:32:53 no idea if that would cause an issue 19:33:13 AnMaster: it wouldn't 19:33:17 just try redownloading 19:33:26 ehird, can I get md5sum for the tarball 19:33:27 AnMaster: use ick -abgm continuation.i, then tell me what's on line 4489 of continuation.c 19:33:49 bin/ick -abgm pit/continuation.i to correct for paths 19:33:51 67459c1a46e016d25de7c30968b676d7 19:33:53 md5sum 19:33:56 I assume that would not be an issue 19:34:03 no 19:34:06 oh, i should pubilsh .sum 19:34:08 shouldn't i? 19:34:11 $ md5sum ../ick-0-28.tgz 19:34:11 67459c1a46e016d25de7c30968b676d7 ../ick-0-28.tgz 19:34:17 ehird, same here 19:34:20 ick-0-28.sum is the filename to use right 19:34:21 so not a download error 19:34:31 AnMaster: beats me 19:34:39 ais523, what line did you say? 19:34:42 4489 19:34:58 ick_skipto = ick_resume(0x1); goto top; 19:35:00 should i publish an md5sum? 19:35:07 OK, that's correct 19:35:25 ais523, want md5sum for the c file? 19:35:36 no, I've just had another idea 19:35:43 oh? 19:35:54 nobody? :p 19:36:00 maybe the kill-all-threads code is being invoked early and turning off the RESUME 19:36:07 ehird: I thought it was .md5, but am not sure 19:36:22 normally the md5 sums are in the release message, not in the directory itself 19:36:27 ais523: ick-0-28.md5 19:36:29 67459c1a46e016d25de7c30968b676d7 ick-0-28.tgz 19:36:30 .md5 is the usual 19:36:33 and i think lots of mirrors include it 19:36:44 I think 19:36:51 yes, it's worthwhile having it in the same directory as that's where people will check 19:36:53 AnMaster: so 'ick-0-28.md5'? 19:36:56 ais523, well I didn't understand the " maybe the kill-all-threads code is being invoked early and turning off the RESUME" 19:36:58 ehird, not sure 19:37:22 AnMaster: I'm trying to figure out how the hell that code managed to error out with 663 when it had a RESUME as the last line 19:37:37 the only thing I can think of is that the RESUME got ABSTAINed from by mistake 19:37:45 ehird, gentoo use .DIGESTS 19:37:46 AnMaster: compile with -abgmw 19:37:50 http://ftp.ing.umu.se/linux/gentoo/releases/amd64/current/stages/stage1-amd64-2007.0.tar.bz2.DIGESTS 19:37:52 as in that 19:38:11 ais523, and then? 19:38:20 then run the code with +printflow (as in ./continuation +printflow), capture stdout, and paste it somewhere 19:38:28 I'll compare it to what I get over here 19:38:41 ais523: http://elliotthird.org/mirror/c-intercal/ick-0-28.md5 19:38:47 feel free to post that url somewhere 19:38:49 if you want 19:39:01 ais523, http://rafb.net/p/uc3S5q93.html 19:39:02 ehird: it's pretty obvious, I think just having it in the same directory will be enough 19:39:06 okay 19:39:10 should I do CURRENT-doc? 19:39:13 and CURRENT.md5 19:39:23 i guess the advantage of version directories 19:39:27 is that i could just have one CURRENT 19:39:28 to the directory 19:39:31 ehird, hm http://ftp.ing.umu.se/linux/gentoo/releases/amd64/current/stages/stage1-amd64-2007.0.tar.bz2.DIGESTS 19:39:32 and then collect all of these inside it 19:40:22 ais523, any idea? 19:40:35 AnMaster: I'm comparing the files at the moment 19:41:01 ais523, what gcc options do you use? 19:41:03 ais523: however i won't switch to a different format until several releases forward 19:41:08 and even then i'll maintain redirects 19:41:11 because I tried to compile the c file by hand 19:41:12 for backwards compatibility 19:41:14 it didn't work 19:41:21 AnMaster: a bunch of -D and -I, -o and -O2 19:41:23 AnMaster: he links with his cmpiler 19:41:30 ok forget it then 19:41:40 AnMaster: the very top of the C file gives the compile command you need to use 19:41:40 ais523, was thinking of testing -m32 19:41:52 oh, and -l as well 19:41:59 because it links against the INTERCAL runtime library 19:42:03 ah then it won't work 19:42:10 can't link 32-bit and 64-bit objects 19:42:49 AnMaster: compile ick with -m32 19:42:56 ehird, too much work 19:43:05 $ echo $CFLAGS 19:43:05 -pipe -march=k8 -O2 -msse3 19:43:06 btw 19:43:07 sane ones 19:43:14 oh 19:43:16 undo that 19:43:18 while compiling ick 19:43:20 undo what? 19:43:21 actualy 19:43:24 $CFLAGS is a dumb idea 19:43:28 not really 19:43:30 projects require wildly different stuff 19:43:37 setting it is making far too many assumptions 19:43:45 i suggest trying CFLAGS='' make clean all 19:44:06 ehird, it still uses those btw 19:45:42 AnMaster: I'm pretty confused at this point 19:46:01 the two programs ran exactly the same, until your program just errored out with E663 at random 19:46:12 despite the two programs doing the same thing up to that point 19:46:28 the only thing that stands out about that point was that it was the first place where I access a function pointer 19:46:49 * ais523 checks something 19:46:56 ais523, want me to pastebin the C file? 19:47:10 ahh wait, ais523 19:47:11 AnMaster: no, I'm pretty sure it's identical to mine 19:47:16 AnMaster uses stack protection and stuff 19:47:22 maybe the function pointer was on the stack or.. i don't know 19:47:23 yes 19:47:26 I got a hardened system 19:47:30 using PaX and so on 19:47:45 ehird: a function pointer on the stack should still work, though 19:47:52 as for function pointer on stack it would still work 19:47:56 but I'm wondering if the function's prototype was accidentally wrong 19:48:06 ais523, so want the c file? 19:48:07 which is to say: AnMaster prefers the silly comfort of non-executable stack in favour of programs that work 19:48:21 ehird, very few programs fail 19:48:29 AnMaster: just tell me its md5 sum, and I'll compare it to the one I have over here 19:48:49 ais523, the first line will differ as it contains "-I/home/arvid/local/ick/include/ick-0.28" 19:48:55 so I can't see how that would work 19:48:59 AnMaster: remove the first line 19:49:00 oh, of course 19:49:05 might help 19:49:17 given that the lines far down the file were the same, I suspect the compiler produced the same output 19:49:29 so I remove the first line? 19:49:44 with first line removed: 43410b9d29f3e79ce17b80ff1dc972a1 19:50:42 it differs, pasting the .c file may be useful 19:50:56 AnMaster: what is sizeof(int) on x86_64? 19:50:58 http://rafb.net/p/1q4ZNK43.html 19:51:01 ais523, it is 4 19:51:07 long and long long are both 8 19:51:16 size_t and void* are also 8 19:51:19 OK, so that isn't the problem 19:51:34 I just noticed a typedef unsigned int ick_type32; that someone else had written 19:51:36 ais523, see the paste 19:51:40 debugging intercal compilers is so exciting 19:51:43 ais523, use int32_t 19:51:49 ehird, hahahr 19:51:53 woah 19:51:54 googlebot 19:51:55 on my site? 19:51:57 :O 19:52:01 thanx google groups 19:52:04 but i don't have content yet 19:52:09 i really should have put my site up before ;) 19:52:20 AnMaster: I know why it was different, the second line has the directory name of the file in 19:52:23 hahah wow 19:52:26 it's going to my dead links 19:52:29 as does the last one 19:52:35 ais523, ah ok 19:52:39 ais523, otherwise the same? 19:52:44 I did run from top directory yes 19:52:50 AnMaster: I think so 19:53:03 there are other things that differ to, as it uses randomish numbers for the names of function pointers 19:53:03 ais523, otherwise no differences? 19:53:13 ah 19:53:43 ais523: non-deterministic compiler output 19:53:44 I love you 19:53:45 :D 19:54:05 ehird: the numbers are actually pointers returned from malloc and written as hex 19:54:16 ew 19:54:19 ewwwwwwww 19:54:20 I could explain why if you wanted 19:54:43 brilliant 19:54:46 ais523, want the binary then? 19:54:48 AnMaster: why say 'ew' it's INTERCAL 19:54:49 jez 19:54:51 *jeez 19:54:55 AnMaster: I couldn't run it over here 19:54:58 I'm only on x86 19:55:04 ais523, oh and those pointer names? 19:55:14 are they cast to 32-bit? 19:55:22 because they look a bit short for being 64-bit ones 19:55:28 they're cast to unsigned long IIRC 19:55:38 ais523, size_t is the correct one 19:55:56 actually, intptr_t is the correct one, but it's C99 19:55:58 [u]intptr_t 19:56:10 hm 19:56:18 and most compilers don't have a printf size specifier for it 19:56:19 yeah indeed 19:56:28 ais523, I'm quite certain gcc does 19:56:35 ick_lose(IE000, 121, "PLEASE NOTE This double assignment is actually correct,\n\ 19:56:35 because :1602 is overloaded."); 19:56:36 huh 19:56:44 but pointer values tend to be 'small' for user programs on x86_64 19:56:46 why is a comment in the generated file? 19:56:57 AnMaster: in case it was execute 19:57:01 s/execute/executed/ 19:57:05 *blink* 19:57:08 there are no 'comments' in INTERCAL 19:57:16 but syntax errors happen at runtime, as E000 19:57:17 just invalid statements 19:57:20 that you make sure not to be executed 19:57:21 :) 19:57:28 god 19:57:36 so you write PLEASE NOT at the start and then they are ignored by default 19:57:41 AnMaster: it's INTERCAL, are you expecting it to be an elegant amazing language? 19:57:49 if you write PLEASE REINSTATE COMMENTS then your program will crash the next time it reaches a comment 19:58:01 no. I'm just amazed it is so silly 19:58:23 I thought you were complaining about what I put in the comment, which is also somewhat silly 19:58:26 ais523, oh and why pit and not examples 19:58:29 intercal is elegant for very small values of elegance 19:58:44 AnMaster: not entirely sure, that predates me by years 19:59:26 hm 19:59:29 hmm, so PLEASE NOTE in the "comment" is actually PLEASE NOT followed by an E? 19:59:33 olsner: yes 19:59:34 ais523, ok so got any idea what happened? 19:59:36 it's idiomatic 19:59:41 AnMaster: not yet 20:00:30 actually, that *is* kind of elegant 20:02:36 AnMaster: what's confusing me now is that for a PROGRAM FELL OFF THE EDGE is basically impossible to get when you're using the standard library (as continuation.i does), because it's appended to the program 20:02:45 and E663 is caused by falling off the end of the program 20:03:01 ais523, no clue then 20:03:04 falling off the program when the standard library is there gives you E000 PLEASE KNOCK BEFORE ENTERING intstead 20:03:11 ais523, beer.i example work 20:04:02 life2.i works 20:04:12 AnMaster: comment out line 33 of continuation.i by changing CREATE to DON'T CREATE 20:04:13 life.i is just odd not sure if it works 20:04:15 what happens then? 20:04:53 ICL777I A SOURCE IS A SOURCE, OF COURSE, OF COURSE 20:04:54 ON THE WAY TO 1 20:04:54 CORRECT SOURCE AND RESUBNIT 20:04:55 ??+ 20:04:55 ???? 20:04:59 did not compile 20:05:02 AnMaster: that means you wrote the wrong filename 20:05:06 ah thank you 20:05:10 that's 'Cannot read input file' in INTERCAL-speak 20:05:17 I see 20:05:26 ais523, is there a wimp mode for errors? 20:05:27 you must resubnit 20:05:38 AnMaster: no, but they're explained in plain language in the documentation 20:05:45 Deewiant: that typo's been preserved since 1972 20:05:50 ais523, still ICL633I PROGRAM FELL OFF THE EDGE 20:05:53 ais523: yes, I know :-) 20:06:09 ais523, assuming it did compile as well as create the C file? 20:06:17 when doing: 20:06:18 ../bin/ick -abgmw continuation.i 20:06:19 ? 20:06:22 AnMaster: yews 20:06:51 ais523, it did it seems 20:06:51 AnMaster: what happens when you delete lines 256 to 268 inclusive, and then try running again? 20:07:18 PLEASE DO REINSTATE (8205) AGAIN 20:07:18 to 20:07:19 PLEASE GIVE UP 20:07:20 ? 20:07:27 yes 20:07:46 same error 20:07:50 ??? 20:07:51 but compiled WAY faster 20:08:16 ais523, unless ick decided to not overwrite file if it existed? 20:08:24 AnMaster: it does overwrite existing files 20:08:29 good 20:08:34 can't be sure with intercal 20:08:37 you could delete the executable and .c and try again to check if that's the problem 20:09:03 no indeed not the issue 20:09:43 do you have gdb? 20:09:54 of course I do 20:10:01 try looking at the C file for the line where that error happens 20:10:11 (search for the string IE663) 20:10:22 then putting a breakpoint on it in gdb 20:10:35 (the -g option makes the output debuggable, for certain values of 'debuggable') 20:10:40 string "IE663" not found? 20:10:56 it should be near the bottom of main() 20:11:02 oh, and no quotes 20:11:08 it's a #defined constant 20:11:22 I didn't have quotes 20:11:30 kate had in "not found" message 20:11:34 ais523: he's deleted the lines 20:11:35 remember? 20:11:38 and no it isn't in main() 20:11:44 ehird: that wasn't in the deleted lines 20:12:00 AnMaster: what's the last occurence of ick_lose 20:12:09 192.139.27.18 - - [01/Apr/2008:19:06:01 +0000] "GET /mirror/c-intercal/ick-0.28/ HTTP/1.0" 200 50000 "http://groups.google.com/group/alt.lang.intercal/browse_thread/thread/9e9ad7d6875e9582/d930aa96e48e2f11" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET " 20:12:12 a real person 20:12:18 unfortunately their software sucks 20:12:19 but \o/ 20:12:24 IE6? 20:12:25 ais523, in ick_os687760 20:12:27 not me, then 20:12:29 ick_lose(IE277, ick_lineno, (char*) NULL); 20:12:33 that is the last in the file 20:12:35 AnMaster: what's the last occurence inside main? 20:12:49 I forgot about the errors about assigning to constants when I asked that 20:12:58 ais523, there are none? 20:13:15 and yet you're still getting error 663 when you run? 20:13:17 or do you mean ick_main ? 20:13:23 instead of main()? 20:13:32 is there an ick_main? 20:13:38 ICK_EC_FUNC_START(ick_main) 20:13:41 is there at least 20:13:45 AnMaster: that's #ifdeffed out 20:13:54 that's why I forgot about it 20:14:00 ais523, maybe, kate fails at the complexities of that file 20:14:23 OK, inside what appears to be ick_main due to kate not understanding #ifdef 20:14:48 ais523, it does handle #ifdef 20:14:55 just not that complex huge C file you got 20:15:13 if you paste your new version, I'll take a look and tell you which line I'm talking about 20:15:27 ais523, http://rafb.net/p/9rIGxf57.html 20:15:34 yeah I can't see where your ick_main ends 20:15:52 line 3824 20:15:57 sorry about the indentation 20:16:13 (that's the line to put a breakpoint on) 20:16:14 you said IE663 not IE633 20:16:17 (search for the string IE663) 20:16:22 ah 20:16:37 I must have remembered it incorrectly 20:16:50 Breakpoint 1, main (argc=, argv=0x401fb0) at continuation.c:3824 20:16:50 3824 ick_lose(IE633, 575, (char *)0); 20:16:54 right? 20:16:57 now what? 20:17:05 what does a backtrace say? 20:17:13 (gdb) bt 20:17:13 #0 main (argc=, argv=0x401fb0) at continuation.c:3824 20:17:19 and what's the value of the ick_next array? 20:17:20 as it is in main, what else *could* it say? 20:17:25 AnMaster: you'd be surprised 20:17:31 (gdb) print ick_next 20:17:32 $1 = (unsigned int *) 0x630320 20:17:38 (gdb) print *ick_next 20:17:38 $2 = 166 20:17:43 seems reasonable 20:17:57 the abstain status of the line before will be useful 20:17:58 what next? 20:18:06 ais523, how do I get that ... 20:18:07 wait a moment while I figure out what variable it is 20:18:22 you know, why not write a intercal debugger? 20:18:32 ick_abstained[464] 20:18:39 AnMaster: I did, but it can't handle the continuations code 20:18:48 (gdb) print ick_abstained[464] 20:18:48 $3 = 0 20:18:52 in much the same way that gdb can't handle longjmp 20:19:05 and longjmp *is* evil 20:19:24 I know, that's why I use it 20:19:29 -_- 20:19:56 OK, so the issue is that the if immediately above where you are ran 20:19:59 and ends with a goto 20:20:07 so there's no way that control could have reached that line 20:20:19 um 20:20:22 what's ick_lineno, by the way? 20:20:31 52 20:20:56 also telling me what the issue is won't help, 1) I do know C, but not this autogenerated *MESS* 2) I don't know intercal 20:21:15 I will be happy to run commands as long as they aren't along the lines of rm -rf / 20:21:48 you know enough C to see that switch(...){... if(1){... goto x} /* no labels here */} /*error*/ shouldn't reach the error line 20:21:57 ah, except if the switch finds no labels 20:22:08 I forgot to put an erroring default() in there as a paranoia check 20:22:12 what's the value of ick_skipto? 20:22:24 (gdb) print ick_skipto 20:22:24 $5 = 4294901750 20:22:38 that explains what's happened 20:22:46 well why didn't it fail for you then? 20:22:48 ais523: how come only AnMaster has the problem? 20:22:49 a negative number has been stored in an unsigned 32-bit integer 20:22:54 64-bit overf- 20:22:55 ah 20:22:58 and then assigned to a signed 64-bit integer 20:23:01 I wrote an implementation of MISC at least a year ago and never published it - it's still marked as unimplemented on the wiki :P 20:23:01 I see 20:23:02 ahaaaaaaa 20:23:07 and so has ended up with the wrong value 20:23:14 ais523, so you are broken on 64-bit? 20:23:15 GregorR: JSMMIX going anywhere? 20:23:21 GregorR, what is MISC? 20:23:24 AnMaster: presumably, but only very slightly 20:23:29 ais523: am I about to have to upload 1.28? ) 20:23:30 *;) 20:23:34 ais523, hope you can make a patch soon 20:23:37 AnMaster: A concrete OISC design, see wiki. 20:23:38 ehird: I'll collect some bugfixes soon 20:23:49 ehird: It's so slow it became insufferable. 20:23:54 AnMaster: it'll be a one-liner for that particular bug 20:24:11 ais523, ok, where should I change a line? 20:24:21 I'm trying to find it at the moment 20:24:55 line 89 of ick-wrap.c 20:25:00 cast ick_skipto to (int) 20:25:27 $ find . -iname ick-wrap.c 20:25:27 ./lib/ick-wrap.c 20:25:27 ./src/ick-wrap.c 20:25:29 which one? 20:25:34 the one in src 20:25:39 the one in lib is a temporary copy 20:25:45 which will be copied over by the makefile 20:25:53 GregorR: :( 20:26:16 GregorR: which instruction does it use? 20:26:26 ais523, oh and consider running astyle or some such tool to clean up your indention 20:26:34 AnMaster: I have considered it 20:26:38 { 20:26:39 case 0: 20:26:39 $G 20:26:39 } 20:26:41 the rest are spaces 20:26:48 that is just fuubared 20:27:01 also wtf "$G"? 20:27:02 I love how AnMaster always complains about style in possibl ythe most hacky, ugly language in existance 20:27:03 AnMaster: the generated code is mostly inside strings in feh2.c 20:27:06 making it hard to indent 20:27:09 'Your *C* contains *tabs*!' 20:27:19 AnMaster: its the SKELETON... $G is a placeholder 20:27:22 and that code is C plus placeholders for 'compiler generate things here' 20:27:26 ehird, either tabs or spaces 20:27:29 but not a MIX 20:27:36 ehird: it isn't particularly consistent 20:27:37 I use pure tabs for indention myself 20:27:38 AnMaster: boo hoo 20:27:46 I'll have to try to get the newlines fixed, first 20:27:53 ais523, I got a script for such 20:27:58 only once I've done that will the start-of-line indentation work better 20:28:00 i don't see a problem really. 20:28:05 and yes, I know I could just run the output through indent 20:28:16 ais523, can't really pastebin it as it contains a literal CR to be able to remove them 20:28:18 but as it's only an intermediate file I don't see what the point is 20:28:24 I'll upload it somewhere 20:28:28 ais523, it uses ed 20:28:48 if I'm going to regularise .c output, I'll write my own program 20:28:57 ais523, oh and still that error 20:28:58 because things like {;} aren't particularly useful in real life 20:29:01 did a make clean all 20:29:13 AnMaster: what's the value of ick_skipto this time? 20:29:21 a sec 20:29:31 ais523, I restored original file 20:29:36 so where should I break then? 20:29:49 on the E633 line 20:30:08 odd still 4498 20:30:28 $1 = 4294901748 20:30:29 still that 20:30:44 * AnMaster tries rebuilding again 20:30:58 AnMaster: but that seems reasonable based on what the patch does 20:30:59 maybe I didn't make install 20:31:03 what's (int)ick_skipto? 20:31:15 oh yes I forgot make install 20:31:17 that's all 20:31:23 working now? 20:31:27 ais523, assume so 20:31:28 not sure 20:31:31 I 20:31:32 III 20:31:32 II 20:31:34 is how it looks 20:31:38 yes, that's right 20:31:39 with blank lines in between 20:31:43 so 20:31:45 what was the problem? 20:31:49 ais523, ok what does it *mean* 20:31:52 sj 20:31:54 AnMaster: that's to give space for the overbars if they're needed 20:31:54 i see 20:31:55 *ah 20:31:59 AnMaster: it's just a simple test program 20:32:10 overbars? 20:32:11 the numbers are trace output so you can see it working 20:32:12 ??????????????? 20:32:17 AnMaster: for roman numerals over 1000 20:32:28 hm you just do MMM then? 20:32:30 iirc? 20:32:31 e.g. 5000 is V with a bar over it 20:32:33 AnMaster: intercals standard output is in roman numerals 20:32:58 ais523, sure that is the format used by Romans? 20:33:03 AnMaster: it isn't 20:33:14 INTERCAL uses lowercase for numerals like v which means 5000000 20:33:16 also why does pow not do ANYTHING? 20:33:21 it's known as 'butchered roman numerals' 20:33:30 AnMaster: which pow? 20:33:35 pow.i 20:33:37 from pit 20:33:45 is there any other? 20:34:00 I assumed you meant the C function, and was confused 20:34:03 or am I supposed to enter something? if yes, what? 20:34:24 a numer 20:34:27 s/numer/number/ 20:34:29 AnMaster: note 20:34:31 you must enter it in digits 20:34:31 spell it out as digits 20:34:32 like this 20:34:36 e.g. for 123, type ONE TWO THREE 20:34:37 THREE FOUR ZERO ZERO TWO 20:34:39 heh 20:34:43 (34002) 20:34:45 so ONE NINE? 20:34:48 yes 20:34:48 or NINER? 20:34:56 considering what befunge call 9 20:35:03 ais523, yes to which? 20:35:10 ais523: It's subtract-and-branch-if-negative 20:35:10 AnMaster: either 20:35:14 ais523, I see 20:35:21 ais523, err 20:35:22 ehird: I will gladly hand you the reigns if you want to continue work on JSMMIX :P 20:35:23 ICL000I (1999) DOUBLE OR SINGLE PRECISION OVERFLOW 20:35:23 ON THE WAY TO 66 20:35:23 CORRECT SOURCE AND RESUBNIT 20:35:28 GregorR: aieeee 20:35:29 AnMaster: try a smaller number, then 20:35:29 ais523, after entering ONE TWO 20:35:33 so 12 20:35:35 not large 20:35:46 yes, but I'm not entirely sure what that program does 20:35:49 ais523, it just runs on and on? 20:36:12 well, it'll take me a few hours to figure out what it does from the source 20:36:15 ICL129I PROGRAM HAS GOTTEN LOST 20:36:17 ais523, ?????????? 20:36:19 I didn't write all or even most of the programs there 20:36:28 AnMaster: which program? 20:36:30 $ ../bin/ick -b flonck.i 20:36:31 that 20:36:42 it needs lib/floatlib.i appended to it 20:37:00 same error 20:37:02 it says that in its docs, presumably assuming that people will read them 20:37:04 $ ../bin/ick -b flonck.i lib/floatlib.i 20:37:04 ICL129I PROGRAM HAS GOTTEN LOST 20:37:14 you need to append it 20:37:14 AnMaster: that's not appending floatlib.i to it 20:37:17 yourself 20:37:18 manually 20:37:19 oh 20:37:19 that's compiling both files 20:37:39 ICL533I YOU WANT MAYBE WE SHOULD IMPLEMENT 64-BIT VARIABLES? <-- yes! 20:37:45 ais523, add a -combine like gcc got? 20:37:52 (unlambda) 20:37:57 AnMaster: it's certainly a thought 20:37:58 AnMaster: it's meant to be awkward 20:38:04 but maybe ok 20:38:05 as a wimpmode 20:38:13 $ cat flonck.i lib/floatlib.i > stupid.intercal.i 20:38:14 $ ../bin/ick -b stupid.intercal.i 20:38:16 worked :) 20:38:20 ehird: what line was that ON THE LINE TO? 20:38:32 s/LINE/WAY/ 20:38:52 AnMaster: I strongly advise you to read the docs for flonck and floatlib, or you won't be able to figure out how the hell to use it 20:38:58 ais523: 324 20:39:03 ais523, I am reading the docs 20:39:09 and well I'm deciding to NOT use it 20:39:33 -!- olsner has quit (Read error: 110 (Connection timed out)). 20:39:34 ais523, just one thing, if you add a befunge bridge, be sure to not make the messages from befunge silly ;) 20:39:34 ehird: I patched my version of unlambda.i because it had an error on line 323 20:39:44 (4402) DO RESUME '?'"?!101~#128'$!101~.101'"~#65535'$#2'~#3 20:39:46 is the correct lien 20:39:49 s/lien/line/ 20:40:00 ais523: maybe include that in the next release? 20:40:02 I thought I'd put the corrected version in the pit, though 20:40:05 ehird: yes 20:40:52 (oerjan didn't notice the error earlier because it was hidden by a bug in C-INTERCAL itself; when I corrected the C-INTERCAL bug, I had fix to unlambda.i which was relying on it) 20:41:37 ehird: does it work now? 20:42:01 ais523: gonna try 20:42:05 hmm 20:42:09 i want an editor that lets me: 20:42:25 $ eddy -l323 20:42:28 (4402) DO RESUME '?'"?!101~#128'$!101~.101'"~#65535'$#2'~#3 20:42:29 ^D 20:42:31 err 20:42:32 make that 20:42:36 ais523, you know all intercall errors in your head? 20:42:37 eddy -l323 unlambda.i 20:42:38 but yeah 20:42:42 something that lets me do quick edits like that 20:42:46 given precise information 20:42:48 AnMaster: not the numbers, but I do know the word descriptions 20:42:54 ais523, ah 20:43:01 most of them are related to the error in some way 20:43:14 ais523, "configdj.sh"? 20:43:17 things like "IT CAME FROM BEYOND SPACE", for instance, are reasonably obvious 20:43:22 AnMaster: for configuring it for DOS 20:43:25 oh 20:43:35 ais523, you don't do native windows binaries? 20:43:42 AnMaster: no, what would be the fun in that? 20:43:49 err, whateer 20:43:51 whatever* 20:43:53 you have to compile it yourself, I only distribute source 20:44:07 but you do dos binaries? 20:44:11 AnMaster: no 20:44:12 ah 20:44:19 but why support dos today? 20:44:24 who on earth will use that!? 20:44:25 AnMaster: because I don't support Windows 20:44:26 haha 20:44:28 yahoo! found me 20:44:29 :D 20:44:34 ais523, err? 20:44:39 you said it did work on windows? 20:44:42 AnMaster: Windows can run DOS programs 20:44:51 AnMaster: The same reason that the documentation's filenames are random 20:44:52 ais523, not in 64-bit windows 20:44:53 (e.g. 4589fjas.htm) 20:44:58 to maek them 8.3 20:45:00 for DOS 20:45:13 I'll have to go, this place closes at 9pm 20:45:13 That is: It's in INTERCAL's spirit to support old, dead platforms. 20:45:20 ais523, this place? 20:45:21 ais523: bye :) 20:45:24 AnMaster: library 20:45:24 ais523, cya 20:45:26 ah 20:45:28 I can move to another connection if you like 20:45:37 should I do that, or should I just go home? 20:45:42 ais523, would like that :) 20:45:49 ais523: me too 20:45:53 -!- ais523 has quit ("moving to a different connection"). 20:45:59 whee 20:46:29 i wish yahoo slurp and googlebot came at a time when i had stuff on 20:46:29 would it be possible to have a cleanly coded intercal compiler? 20:46:29 :| 20:46:40 AnMaster: Yes, but that would suck. 20:46:45 The whole point of INTERCAL is that it's, you know, fun. 20:46:50 And the compiler's obscurity reflects it 20:47:02 INTERCAL's weirdness isn't just the language itself. It's its culture 20:47:07 ehird, I find it fun to code perfect warning free code 20:47:09 but whatever 20:47:41 brb phone 20:48:19 that's because you're obsessive about clean C 20:48:22 an oxymoron if i ever heard one ;) 20:56:05 -!- ais523 has joined. 20:56:25 welcome back 20:56:27 where are you now? :p 20:57:13 common room in my department 20:57:19 in range of a wireless access point 20:58:09 heh! 20:58:39 how's the C-INTERCAL testing going? 20:58:54 AnMaster went brb phone 20:58:56 so nothing 20:58:58 oh looky 20:58:59 5242 A Generalized Unified Character Code: Western European and CJK 20:58:59 Sections. J. Klensin, H. Alvestrand. April 1 2008. (Format: TXT=31314 20:59:00 bytes) (Status: INFORMATIONAL) 20:59:03 * ehird grabs it from ftp 20:59:17 back 20:59:23 ehird: link? 20:59:27 ais523: getting one now 20:59:31 i got that from the big .txt index of rfcs 20:59:45 wow 20:59:48 ehird, link!!! 21:00:00 ftp://ftp.rfc-editor.org/in-notes/rfc5242.txt 21:00:09 it was published 20 minutes ago apparently 21:00:15 (it says 9:44 presumably +1) 21:00:17 err wait 21:00:18 hmm 21:00:19 maybe 9am 21:00:20 not sure 21:00:22 but whatever, it's new 21:00:32 I've been wondering about the April Fool's RFC 21:00:43 hmm 21:00:46 is this even april fools? 21:00:50 maybe i'm reading too quickly 21:01:16 unified-ccs@xn--iwem3b1f.xn--90ase1a.bogus.domain.name 21:01:19 http://www.rfc-editor.org/rfc/rfc5241.txt 21:01:20 that seems april foolsy 21:01:22 is the rfc 21:01:28 ehird: top of page 3 looks pretty aprilfoolsy 21:01:31 * SimonRC goes 21:01:40 it's basically the opposite of the Unicode guidelines for such things 21:01:52 ais523, ee 21:01:55 eeh* 21:02:07 middle of page 3 is even worse 21:02:45 if its an april fools, its not very funny 21:03:22 ehird: in that case, you've missed the joke entirely 21:03:26 maybe 21:04:01 wow, it allows you to define INTERCAL characters 21:04:10 ais523, ehird or maybe: http://www.rfc-editor.org/rfc/rfc5241.txt is the joke one? 21:04:14 INTERCAL's been missing forever and has had to use a backspace as a replacement 21:04:50 AnMaster: maybe 21:04:51 "For example, the characters "b" and "d" are coded as o and o, respectively." 21:04:57 that surely isn't serious 21:05:07 ais523: 5241 seems like a joke though 21:05:16 maybe they're both jokes 21:05:43 Raising an additional US$1 M from the rental of naming rights could 21:05:43 significantly change the budget dynamics. Perhaps meeting fees could 21:05:43 be reduced for all attendees or special subsidies could be provided 21:05:43 to needy students, researchers, or job seekers. 21:05:43 or none of them are? 21:05:43 5242 wasn't produced by the IETF; apparently, more than one standards body can produce RFCs 21:06:37 6.1. Acceptable Taste-Wise 21:06:44 OK, 5242 is definitely a joke, no serious RFC leaves things as exercises for the reader 21:06:49 IP: Garmin GPS Destination Address 21:06:53 IP: White & Day Mortuary Time-to-live 21:06:57 TCP: Princess Cruise Lines Port Number 21:07:01 ARP: Springfield Preschool Timeout 21:07:04 ok 21:07:05 BGP: Sharpie Marker field 21:07:09 TFRC: Traveler's Insurance Loss Period 21:07:13 SCTP: Hershey's Chunk {type|flags|length} 21:07:13 SMTP: eHarmony HELO 21:07:13 5241 is certainl the funnier one 21:07:13 ais523: but its not as funny as 5241 21:07:13 because its the biggest bikeshed ever 21:07:23 Upon the adoption of this proposal the RFC Editor SHALL create XML 21:07:23 versions of all IETF RFCs. The XML must be such that a perfect copy 21:07:23 of the original RFC can be produced using a tool such as xml2rfc 21:07:23 [XML2RFC]. The XML versions of RFCs must identify all individual 21:07:23 protocol fields using an XML protocol field element of the form: 21:09:21 " between a term that would best represent the half-life of an Internet 21:09:22 startup (1 or 2 years)" 21:10:13 hah 21:12:38 http://www.google.com/virgle/images/opensource.jpg 21:12:43 that's a great image 21:14:03 ais523, what is the other figure? 21:14:06 the non-tux one 21:14:10 AnMaster: an alien 21:14:14 ah 21:14:15 virgle is a space travel joke 21:14:16 not a logo then 21:14:18 ehird: you beat me to it 21:14:25 its also one of the Google Talk avatars you can select 21:14:31 yes I read the Virgle stuff 21:14:32 -!- Judofyr has quit. 21:14:40 * ehird is full of knowledge 21:14:46 Google Talk? never used it 21:15:10 neither have I, but I think it's just an interface to Jabber 21:15:24 yeah 21:15:28 pretty much 21:15:36 i use the address for my jabber stuff 21:17:42 [21:17] Rienzilla, what do you mean by physical devices ... 21:17:46 [21:17] a thing 21:17:50 [21:17] if you throw it at someone, it might hurt :) 21:17:55 ehird: which channel was that in? 21:17:58 ais523: #debian 21:20:10 ais523, oh and I'd like to know more about details for funge <-> intercal stuff 21:20:14 ie, exactly what you mean 21:20:48 oh and any patches will not be accepted in the current coding style of ick ;P 21:20:48 well, maybe I should show you an example of INTERCAL <-> C, then we can discuss how it would apply to funge 21:20:54 AnMaster: they won't be 21:21:02 http://adsense.blogspot.com/2008/04/introducing-adsense-for-conversations.html 21:21:20 Orkut also displayed name as Yoghurt 21:21:28 'Google launches Dajare in Japan (google.co.jp), with the mission of "organizing the world’s laughter." [2]' 21:21:33 'Google announces gDay in Australia (http://www.google.com.au/intl/en/gday/press.html), a new beta search technology that will search web pages 24 hours before they are created.' 21:21:38 ehird, yes didn't get that one 21:21:40 'Google announces Google 사투리 번역 (Google dialect translation) for translating regional dialects of Korean to and from Standard Korean.[3]' 21:21:41 the last I mean 21:21:42 err 21:21:47 Dajare I mean 21:21:49 'Google added the "I'm Feeling Lucky" button to its calendar feature. When you tried to create a new event, you were given the regular option of entering the correct details and hitting "Create Event," and also the new option of "I'm Feeling Lucky" which would set you up with an evening date with, among others, Matt Damon, Eric Cartman, Tom Cruise, Jessica Alba, Pamela Anderson, Paris Hilton, Angelina Jolie, Britney Spears, Anna Kournikova, Johnny Depp, 21:21:49 George W. Bush, or Lois Griffin.' 21:21:56 'Google launched their "Wake Up Kit" as a calendar notification option. The option sends a series of increasingly aggressive alerts, starting with an SMS message to your cellphone, and ending with a bucket of water dumped into your bed, which would then flip over, tossing you out (all using apparently-free equipment).' 21:22:03 ehird, it is just easier to paste link to wikipedia you know 21:22:03 :P 21:22:03 'A little easter egg was added, where a user can click the file menu and directly under new document is "New Airplane" which immediately opens a copy of a Google branded paper airplane. To reach the file menu, click the new menu, then "Document" then a new window opens.' (google docs) 21:22:08 AnMaster: stuff you :D 21:22:13 'Google launches Manpower Search (谷歌人肉搜索) in China (google.cn). This new feature is powered by 25 million volunteers who do the searching around the clock. When the user entered a keyword, volunteers will search any possible answers from a mass of paper documents as well as online resources. The user is expected to get the search result within 32 seconds.' 21:22:18 'Google Books has a new section allowing users to 'scratch and sniff' certain books. Users are asked to "...please place your nose near the monitor and click 'Go'" which then 'loads odours'. When clicking on 'Help' users are redirected to a Google Book page entitled "Belgravia: A London Magazine"' 21:22:19 there 21:22:20 that's all of em 21:22:20 heh 21:22:51 AnMaster: the way INTERCAL <-> C linking works is this: 21:22:52 so far 21:23:01 you designate functions inside a C program using ICK_EC_FUNC_START 21:23:20 which basically defines a wrapper around a void(*)(void) 21:24:01 you can write COME FROM, NEXT, NEXT FROM, RESUME, FORGET, and CREATE inside the C function using C-named statements (like ick_comefrom) 21:24:31 when the INTERCAL program encounters a line label, it calls all the specially-marked C functions, and jumps between the ick_comefrom calls in them using a chain of gotos 21:24:47 hm 21:24:52 and if any of them want to do the comefrom, they can steal execution and transfer it to the body of the program 21:25:09 that will be terribly hard to do in befunge 21:25:11 (actually I pass through all of them once to verify that there's exactly one COME FROM, and then again to jump to the right one if there is) 21:25:22 even if you could say have M for come from 21:25:24 in Befunge, you'd have a fingerprint add COME FROM, etc., to the language 21:25:25 what parameters to M? 21:25:28 you couldn't know 21:25:32 until you hit it 21:25:33 AnMaster: it would have to take them from the playfield 21:25:42 ais523, they can be stored anyhow 21:25:44 as far as I can tell it's the only solution 21:25:48 vertically or whatever 21:26:13 or using x, anywhere at all 21:26:14 indeed 21:26:22 -!- Iskr has quit ("Leaving"). 21:26:31 you could write the char for 1666 followed by M, to do a COME FROM (1666) 21:26:35 well 21:26:41 and modify the playfield to do computed COME FROMs 21:26:42 char for it? 21:26:56 you need maths to push on the stack 21:26:59 like say 21:27:21 AnMaster: do you think it should run a Befunge program instead to calculate the line label? 21:27:30 ais523: c-intercal downloads are absolutely crushing my traffic 21:27:31 not 21:27:40 not one person apart from you three have downloaded the tgz yet 21:27:45 something like M1a*6+a*6+a*6+@ 21:27:52 would be COME FROM 1666 21:27:53 f7*6+ 21:27:56 to get 111 21:27:58 I think 21:28:26 but you could store that as: 21:28:29 ICL240I ERROR HANDLER PRINTED SNIDE REMARK 21:28:31 brilliant 21:28:32 and then when the line (1666) was reached, the Befunge program would gain control from the M, but going, for instance, downwards, so that it didn't hit the calculate line number code 21:28:37 M+6*7f< 21:28:39 ais523, ^ 21:28:43 or vertically or so on 21:29:05 or do you mean a marker in the code? 21:29:06 AnMaster: you mean it would look for < ^ > v on the same line as the COME FROM 21:29:14 the M would be the marker 21:29:15 ais523, wouldn't work 21:29:25 but I guess you could restrict it to a special format 21:29:25 AnMaster: what's the issue here? 21:29:42 ais523, using x it may be stored diagonally or whatever as well 21:29:55 so there needs to be some kind of marker 21:30:11 or you would have to restrict it to ordinary-moving IPs 21:30:26 you would have to restrict to cardinal IPs you mean? 21:30:31 yes 21:30:37 ^>v< is called cardinal ;P 21:30:38 cardinal, and one char at a time 21:30:40 in befunge-speak 21:30:56 which, considering how intercal speak looks, I feel isn't so bad 21:31:03 ;P 21:31:06 intercal looks so awesome 21:31:13 no comments 21:31:16 oklopol: you been playing with the new compiler too? 21:31:24 ais523: i haven't done anything with intercal 21:31:34 but i love the way it mixes ork and malgolbe 21:31:36 *malbolge 21:31:37 ais523, oh another thing, how would you locate Ms? 21:31:42 remember funge-space can change 21:31:47 AnMaster: look at the playfield 21:31:54 and well my funge-space doesn't work well for searching in 21:31:57 whenever you reached a line number you'd have to scan the playfield for Ms 21:32:10 and don't worry about the efficiency of COME FROM, it's inefficient more or less by definition 21:32:12 ais523, that would be awesomelly slow 21:32:25 ais523, because I use a hash library 21:32:27 what about caching a list of all playfield locations with Ms in 21:32:34 ais523, ok you could do that 21:32:40 wouldn't be to hard 21:32:50 you would need to hook into the loading routines for files 21:32:54 and into set routine 21:32:59 to notice when new are added 21:33:04 well all use the set one 21:33:08 so not too hard 21:33:24 no, not hard at all 21:33:31 FUNGE_FAST static inline void FungeSpaceSetNoBoundUpdate(FUNGEDATATYPE value, const fungePosition * restrict position) 21:33:33 that :) 21:33:42 FUNGE_FAST expands to regparam(3) attribute btw 21:33:46 on i386 21:34:01 # define FUNGE_FAST __attribute__((regparm(3))) 21:34:03 anyway, COME FROM, NEXT FROM, and line labels are the 'feral' things that can gain control from anywhere 21:34:22 ais523, hope you won't barf on that calling convention ;) 21:34:27 pancakes 21:34:30 AnMaster: I shouldn't 21:34:50 oklopol: why not download C-INTERCAL 0.28 and run some of the example programs? 21:35:24 oklopol: intercal predates ork and malbolge 21:35:35 ais523, hm, hope so, well stuff will fail if you compile one bit with gcc and another with another c compiler 21:35:44 AnMaster: -e requires gcc to work 21:35:45 AnMaster: I find your micro-optimization disturbing. 21:35:58 ehird, well you didn't like clean code did you? 21:35:58 ehird: i know it does 21:36:05 ehird: AnMaster put lots of effort into beating ccbi by as much as possible 21:36:06 that's a bit beside the point 21:36:11 ais523: quite 21:36:12 ais523, correct 21:36:20 and I beat it very very far on x86_64 21:36:20 oklopol: and if you do download it.. http://elliotthird.org/mirror/c-intercal/ick-0-28.tgz :D 21:36:25 i'm like sgeo 21:36:28 without the psox 21:36:52 oklopol: actually, the command syntax of both ORK and INTERCAL parodies COBOL, so in that sense it's not surprising that they're similar 21:37:54 ais523, is intercal case sensitive? 21:38:02 AnMaster: yes by default 21:38:09 by default *sigh* 21:38:19 there's a define somewhere in the lexer that lets you change that 21:38:29 but it's compiled in, and I don't know of anyone who changed it 21:38:36 k 21:38:47 well I got nothing against case sensitivity 21:39:19 I just thought it would look very different with lower case 21:39:28 the point was not that intercal is like ork/malbolge, just that it mixed the two styles in a fun way. 21:39:41 i mean, superficially, i really don't know anything about it 21:40:01 oklopol: the flow control model is actually really interesting once you get used to it 21:40:02 ais523, as for "look for < on same line" 21:40:05 that wouldn't really work 21:40:23 AnMaster: agreed, it seems a bit hacky 21:40:24 ais523, another thing, the value in question you should look for should be in RPN notation, going towards M 21:40:28 that is what you need 21:40:28 like DO loops in Fortran 21:40:58 ais523, there are fingerprints that allow moving the ip one line down without changing delta anyway ;P 21:40:58 AnMaster: INTERCAL allows non-constants in COME FROMs, but Befunge can do that anyway using p 21:41:34 as for searching for < and so on, it wouldn't really be a case of doing it because that's the only way to reach the M 21:41:44 more a case of you have to write it like that so that the compiler can find it 21:43:04 ais523, well you would have to maintain a cache, because I want to be able to just take out most of the funge-space stuff and replace it 21:43:04 either that, or you could add some sort of marker character that marked the start of a COMEFROM input, with M at the end 21:43:17 ais523, as profiling show that is the slowest bit for x86_64 21:43:21 by far 21:43:49 well, it would be possible to write a search-for-Ms-script in pure Befunge 21:43:57 ridiculously slow, but avoid messing with the interpreter 21:44:04 ais523, well a hook would be easy 21:44:11 the general layout would be maintained for such stuff 21:44:42 just the actual calls to the hash library may change drastically 21:45:53 you could do the hook as a function call to a function that isn't in your compiler guarded by a #define 21:47:10 yes sure I could add a function pointer hook 21:47:25 I need something like that for my debugger protocol anyway 21:48:07 AnMaster: is cfunge reentrant? 21:48:40 ais523, depends, I may use non _r stuff 21:48:42 that is, can I simulate a function call by taking control from the hook, doing my own things, and then calling cfunge again to cause it to simulate things in a different place, with the old IP still on the C call stack? 21:48:44 but well what do you mean 21:48:53 ais523, I got no clue 21:48:55 I never tried 21:49:00 no, most people don't 21:49:13 ais523, I mean, that is not something I planned for 21:49:22 it would be needed for function calls out of Befunge to the INTERCAL program to work 21:49:34 if the INTERCAL program was allowed to call back to the Befunge from there 21:49:52 ais523, well I do use global variables for stuff 21:50:05 and if you do from hook into funge space code, well things would be uggly 21:50:20 the ideal situation would be if you used global variables for everything but the IP 21:50:32 but it's trivial to work around that being global too by making a local copy 21:50:35 ais523, the ip/ip list is a static variable 21:50:48 ip is then passed around 21:51:18 ip list is currently passed around as well but I plan to change that for performance reasons 21:51:23 OK, I think I could make that work with single-threaded Befunge, no idea how it would work with concurrency in the Befunge program 21:52:04 ais523, you know, I'm not sure how I made concurrency work with befunge at all in some places ;P 21:52:18 concurrency in befunge really makes stuff complex 21:52:30 one reason for the debugging protocol stuff 21:52:39 brb 21:54:36 tons o' Ubuntu users 21:54:38 or is that me 21:54:57 ehird: probably you and me 21:55:14 disregard your own IP range 21:55:30 and mine's 147.188.0.0/16 when I'm here 21:56:37 -!- cherez has joined. 21:56:53 ehird: now if you were really doing a Sgeo, you'd spam cherez at this point 21:57:35 oops 21:57:46 cherez: Tried out C-INTERCAL 0.28? 21:57:50 ... 21:57:52 cherez: ping 21:57:58 cherez: Hello?????? 21:58:03 :D 21:58:14 Gentoo 21:58:24 AnMaster: Windows 21:58:49 are you both calling out the names of operating systems at random, or is there some purpose to that? 21:58:57 i have no idea 21:59:07 is sgeo gone, by the way? 21:59:08 ehird: pong 21:59:11 i haven't seen him recently 21:59:17 cherez: ignore me, i was imitating Sgeo 21:59:24 I figured as such. 21:59:39 Always spamming me. 21:59:43 I released a new version of the C-INTERCAL compiler today, and ehird is hosting it and therefore decided to spam everyone about it 22:01:45 -!- cherez has quit (Read error: 104 (Connection reset by peer)). 22:02:04 ais523: ? 22:02:12 I just pinged everyone in #esoteric 22:02:14 ais523, oh and for cfunge you need to distrbuted version control system bazaar installed 22:02:14 -!- cherez has joined. 22:02:15 out of interest, mostly 22:02:20 version 0.92 or later 22:02:28 1.3 recommended 22:02:42 strangely, not everyone replied, maybe because their clients don't do CTCP ping 22:02:43 ais523, and bzr needs python, so for DOS you got to copy the files ;P 22:02:55 that's more interesting 22:02:57 RodgerTheGreat was fastest, by the way, and lament was slowest 22:03:08 'VERSION' 22:03:10 not Version 22:03:22 ehird, mine sent Version? 22:03:22 [CTCP] Received Version request from ehird to channel #esoteric. 22:03:27 oh 22:03:28 okay then 22:03:30 ehird: that's pretty bad 22:03:36 I'm quite sure mine sent VERSION 22:03:37 ais523: ? 22:03:39 yeah 22:03:41 konversation bug 22:03:51 [22:02] [CTCP] Received CTCP-VERSION reply from Deewiant: Deewiantbot version NaN 22:03:55 ehird: worked for me 22:04:03 I wrote /ctcp #esoteric version 22:04:04 -Deewiant- VERSION Deewiantbot version NaN 22:04:11 * Received a CTCP version from ais523 (to #esoteric) 22:04:16 ais523, you sent lower case 22:04:33 so Konversation doesn't automatically upcase ctcps? 22:04:38 no clue 22:04:39 I got lots of responses, anyway 22:04:45 some were also in lowercase 22:04:47 it may do 22:04:53 like the ones from RodgerTheGreat and clog 22:04:55 I sent upper case I'm sure 22:04:59 /ver #esoteric 22:05:08 no 22:05:09 and I got all upper case 22:05:12 konversation titlecases thm 22:05:13 on recieve 22:05:19 AnMaster: you sent your answer in uppercase 22:05:24 -RodgerTheGreat- VERSION Colloquy 2.1 (3761) - Mac OS X 10.4.11 (Intel) - http://colloquy.info 22:05:27 that 22:05:35 ais523, yes I know 22:05:47 ais523, I love my irc client you know what one it is 22:06:08 should put "made with emacs" on cfunge website 22:06:10 ;P 22:06:10 well, I like Konversation, and telnet, but for almost opposite reasons 22:06:12 well got to sleep now 22:06:59 byebye AnMaster 22:07:01 :p 22:08:20 BTW, the CLC-INTERCAL maintainer gave me some clues on how to do an IRC client in CLC-INTERCAL, so I may have a go at that 22:10:02 ais523: you should make a graphical intercal 22:10:05 program = tree structure 22:10:16 it should be 'helpful' in various ways that are more useless than helpful 22:10:20 also, use Athena or something else outdated 22:10:24 but make it look like Motif 22:10:35 because 'that's what you're used to on your SCO Unix desktop' 22:11:00 'You can see motiflook.c and modify it if you are used to another desktop look (such as Tk or Xt).' 22:14:05 ais523: no? ;) 22:14:13 ehird: not entirely sure what you mean 22:14:17 do you mean graphical source code 22:14:21 or a graphical IDE, or what 22:16:10 ais523: both 22:16:20 ais523: it gets 'serialized to INTERCAL for the compiler' 22:16:29 but you can only serialize it from the program, and only to put it in the compiler 22:16:34 to save it, it uses a complex format 22:16:38 which is like a bitmap with semantic metadata 22:16:47 ehird: no, I'd prefer to have some proper way to convert to INTERCAL 22:16:47 ais523: but a graphical IDE using graphical source code 22:16:50 i.e. the program is a tree 22:16:52 :D 22:16:56 ais523: offer a perl script 22:17:01 although doing it using a decompiler that reverses C-INTERCAL's effect would be interesting 22:17:02 it parses the bitmap, does OCR on the text 22:17:07 and uses the semantic metadata to convert to text 22:17:52 and say 'If you do not have a PERL implementation on your system, you can telnet in to my box at ais.cwrccu.mit.edu and copy it from /usr/sww6/r/bin/perl.' 22:17:54 :D 22:20:27 ais523: Maybe I'm the only person that is amused by that 22:20:32 Prboably. 22:20:36 Oh look, msnbot is poking around my site. 22:20:39 I'm popular. 22:20:40 I do like the idea of copying a binary acrss 22:20:54 ehird: this just goes to show that Google and Yahoo! are faster at indexing than Windows Live 22:20:59 Someone just tried with Lynx and w3m.. 22:21:23 ehird: are you getting some idea of what the popularity of INTERCAL is like, now? 22:21:28 I bet they were going to say 'YOUR SITE DOESN'T WORK IN HIGHLY IMPORTANT TEXT ONLY BROWSERS. THEY CANNOT DOWNLOAD C-INTERCAL. ALSO BLIND PEOPLE CANNOT EITHER. FIX YOUR WEBSITE TO W3CSTANDARDX' 22:21:34 remember that many people will be downloading from the other websites 22:21:40 :D 22:21:42 ais523: Yeah, that's true 22:21:43 ehird: it does work in w3m, presumably? 22:21:48 actually, I'll test 22:21:52 yeah, i'm sure it does 22:21:55 look at the dir listing source 22:21:56 very simple 22:22:11 yep, it's fine 22:22:15 just the skeleton, an H2, and a PRE 22:23:09 and ehird, I wouldn't be at all surprised if text-browser usage and INTERCAL usage were positively correlated 22:23:42 yeah 22:23:50 but i think it was just someone trying to find something to whine about 22:23:56 there's a lot of people who do that with text-only browsers 22:24:02 like someone complained about reddit not being usable in lynx 22:24:23 hmm... it seems the largest INTERCAL programs in the examples are unlambda.i, quine.i and interfunge.i in that order 22:24:27 the dir listing is really usable via lynx actually 22:24:37 ehird: yes, via w3m too 22:25:17 -debug DO NOT USE -- w3m 22:25:20 i love that doc 22:25:36 there's a similar option in C-INTERCAL 22:25:41 ais523: elinks too. of course it does, its an html, head, title, body, h2, and pre with a 22:25:45 oh, and an hr 22:25:50 hardly any possibility to go wrong 22:25:53 generated programs have a +mystery option that is deliberately undocumented 22:26:42 what DOES it do? 22:26:49 ehird: normally nothing 22:27:08 if you happened to compile with the constant-output optimiser, though, it cuts off the program after 4 billion steps 22:27:17 ais523: btw c-intercal won't -F quine.i 22:27:17 and returns with an unusual error code 22:27:20 maybe runs a bit too long 22:27:43 ehird: I doubt that's the problem, it's likely something else, because -F is pretty conservative 22:27:53 beer.i too 22:28:47 actually, -F isn't working at all for me at the moment 22:28:53 it doesn't work on primes.i, but used to 22:29:18 so I've probably broken it somewhere 22:29:35 oh well, at least it still bumps gcc up to -O3 22:29:43 I'll have to look into what's wrong there, as well 22:33:30 ais523: http://en.wikipedia.org/wiki/Continuation 22:33:32 the example there 22:33:39 will it work with continuation.i? 22:33:42 ehird: that requires an interactive program 22:33:51 -!- oklopol has quit (No route to host). 22:33:55 you can't set up the calls in the right way, because the continuations themselves run off 22:34:11 e.g. it calls theContinuation multiple times, but never gets control back again 22:35:45 yeah 22:35:48 i guess so 22:35:53 ais523: implement an intercal repl! 22:36:00 repl? 22:36:46 -!- wildhalcyon has joined. 22:37:24 ais523: Read,Eval,Print,Loop 22:37:35 Hi folks 22:37:37 there's intercalc, which is a CLC-iNTERCAL version 22:37:39 hi wildhalcyon 22:37:40 You can actually define it like that in a forth-alike 22:37:44 we were discussing INTERCAL 22:37:47 : loop read eval print loop ; 22:37:57 INTERCAL, huh? 22:38:07 I released a new version of C-INTERCAL today 22:38:12 oh? congrats 22:38:35 and a new version of the rival CLC-INTERCAL was also released 22:39:20 I didn't know you were in charge of C-INTERCAL development. 22:39:33 DID I MENTION I HOST A MIRROR? 22:39:38 ok, this sgeo imitation is getting old 22:39:45 i'll stop now 22:39:52 well, I just released the last few versions, and eventually decided that I was the de facto C-INTERCAL maintainer 22:40:30 ehird, you could imitate me. Just claim that you've invented some particularly well-known entity. 22:40:34 ais523: you seem to be the only one who actually works on it 22:40:45 wildhalcyon: I invented mirrors! Take a look: http://elliotthird.org/mirror/c-intercal/ick-0-28.tgz Aren't they cool? 22:40:46 like that? 22:40:49 ehird: Joris Huizer has sent me a lot of patches 22:40:56 yeah, pretty much :-) 22:41:17 I can normally expect a bugfix from Joris within a week or so of releasing a new version 22:42:12 so who's Eric Raymond then? 22:42:22 wildhalcyon: who's Eric Raymond? 22:42:22 Hah! 22:42:37 I've heard the name a few times. 22:42:44 I'd say "an idiot", other people say "a revolutionary" 22:42:46 man, I'm really sounding pretty ignorant these days 22:43:00 I know he's kind of been pioneering the open source stuff 22:43:04 * ais523 remembers Raymond, Stallman and Torvalds as being some of the best known names in Open Source 22:43:07 basically - apparently is 'integral to the open source movement' but doesn't really do anything 22:43:14 and basically he himself claims that 22:43:25 he wrote 'fetchmail', and that's about it. and fetchmail is more of a shame than a positive thing 22:43:36 also gpsd 22:43:43 also, he's very egotistical, a gun nut and intolerant. BUT that's just my opinion. 22:43:46 Other people like him. 22:43:47 and C-INTERCAL, of course 22:43:50 ais523: Well, yes. 22:44:18 i did find 'How to be a hacker' amusing, though, because it should have been titled 'How to be me' 22:44:20 ... what's gpsd? 22:44:25 wildhalcyon: Make your own decisions. http://www.catb.org/~esr/ 22:44:41 wildhalcyon: daemon for communicating with a GPS receiver 22:44:50 I happened to be using it recently 22:45:04 so ais, are you now the defacto maintainer of C-INTERCAL? Did Eric abandon it? 22:45:18 eric abandoned it pretty much 22:45:43 it hadn't been updated in a year 22:45:44 Well, glad someone took it up 22:45:48 well, more than a year 22:45:52 INTERCAL is outstanding. I'd hate to lose it 22:45:57 so I forked but used the next available version number 22:46:01 and then it just continued from there 22:52:03 oh well, conversation seems to have died now, and it seems unlikely I'll get many more requests for help, bugfixes, etc. right now, so I may as well go home 22:52:41 bbl folks 22:52:44 -!- RodgerTheGreat has quit. 22:52:48 oop 22:52:55 just as i was about to write an intercal program 22:52:55 :) 22:53:03 bye, ais523! 22:54:32 umm... I didn't mean to set away 22:54:36 oh, okay, bye 22:55:12 -!- ais523 has quit ("bye, everyone!"). 23:18:59 -!- kwertii has joined. 23:19:27 -!- timotiis has quit ("leaving"). 23:46:34 -!- jix has quit ("CommandQ"). 23:56:42 hello 2008-04-02: 00:22:47 -!- olsner has joined. 00:42:03 -!- olsner has quit (Read error: 110 (Connection timed out)). 00:46:32 -!- olsner has joined. 00:56:32 -!- sebbu has quit ("@+"). 01:04:59 -!- olsner has quit (Read error: 110 (Connection timed out)). 01:05:34 -!- olsner has joined. 01:16:19 -!- oklopo has joined. 01:25:15 -!- RodgerTheGreat has joined. 01:28:26 -!- wildhalcyon has left (?). 02:14:36 -!- ehird has quit ("Konversation terminated!"). 02:27:42 -!- GreaseMonkey has joined. 02:28:15 So, y'know how I mentioned that JSMMIX was too slow? 02:28:19 I just wrote JSMIPS 8-O 02:29:03 Hm, ehird isn't on :P 02:55:10 -!- oklopo has changed nick to oklopol. 04:14:37 -!- oklopol has quit (Read error: 113 (No route to host)). 04:19:41 -!- Sgeo has joined. 04:57:58 No xkcd tonight, Randall's taking a vacation. 05:14:52 -!- kwertii has quit ("bye"). 06:07:08 -!- Sgeo has quit (Read error: 104 (Connection reset by peer)). 06:23:43 -!- RedDak has joined. 06:26:38 -!- calamari has joined. 06:35:14 -!- calamari has quit ("Leaving"). 07:10:44 -!- adu has joined. 07:42:28 -!- RedDak has quit (Remote closed the connection). 07:48:07 -!- adu has quit (Remote closed the connection). 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:12:20 -!- olsner has quit (Read error: 110 (Connection timed out)). 08:23:41 -!- Deformati has joined. 09:15:44 -!- GreaseMonkey has quit ("So long, and thanks for all the CPU time!"). 09:20:18 -!- Iskr has joined. 10:14:53 JSMIPS is coming together much better than JSMMIX did ^^ 10:25:27 Deewiant, is it allowed to make the , instruction output the cell as UTF8? 10:25:40 or maybe UCS4 11:22:53 Deewiant, I made ccbi segfault 11:23:21 Deewiant, in REFC, I believe, I fixed the valgrind error that happened for cfunge in that one, but well I don't know where ccbi segfaults 11:24:31 Deewiant, basically 0D before you do any R, test code (complex because it was found using fuzz testing) at http://rafb.net/p/zjR5x060.html 11:27:08 -!- bsmntbombdood has quit (Read error: 113 (No route to host)). 11:36:04 Deewiant, in fact this is enough to crash ccbi: "CFER"4(0D @ 11:39:48 Deewiant, oh wait, you crash on any invalid value to D 11:39:52 that is bad 11:41:13 -!- olsner has joined. 12:42:53 -!- oklopol has joined. 12:45:30 -!- oklopol has quit (Client Quit). 12:45:44 -!- oklopol has joined. 13:12:08 -!- fizzie has joined. 13:18:04 -!- oklopol has quit (Read error: 113 (No route to host)). 13:52:18 AnMaster: yep, doing array[ip.stack.pop()] isn't a good idea ^_^ 14:24:09 -!- RedDak has joined. 14:33:13 GregorR: is JMIPS a MIPS-architecture CPU simulator written in JavaScript? 14:59:45 -!- jix has joined. 15:31:21 Deewiant, hope you fixed it :) 15:31:33 AnMaster: yep, 1.0.8 15:31:55 Deewiant, oh btw I found some new nifty functions to microoptimize with, mostly to irritate ehird really 15:32:00 posix_fadvice 15:32:09 and posix_fallocate 15:32:23 Deewiant, ;) 15:32:38 sigh >_< 15:32:43 look up the man pages if you want the details, anyway I check if they are available ;P 15:33:07 15:33:19 Deewiant, ;P 15:34:25 Deewiant, however man posixoptions is interesting 15:44:49 -!- bsmntbombdood has joined. 16:00:35 -!- Sgeo has joined. 16:34:26 -!- RedDak has quit (Remote closed the connection). 17:34:08 Deewiant, I'm rewriting parts of the hash library to make it less generic, and more fit for cfunge 17:34:12 that is helping actually 17:36:01 shaved about 0.010 seconds of the hash stuff, which is around 1/5 of the time spent in that code 18:01:15 -!- EgoBot has quit (brown.freenode.net irc.freenode.net). 18:18:26 -!- sebbu has joined. 18:19:44 -!- EgoBot has joined. 18:56:56 -!- timotiis has joined. 18:57:05 -!- jix has quit (Nick collision from services.). 18:57:15 -!- jix has joined. 19:30:52 -!- shinkuzin has joined. 19:47:27 -!- boily has joined. 19:47:48 Hello, world! 19:50:26 hm 19:50:36 I wonder if hash table is in fact not the wrong way 19:58:38 Deewiant, what would you recommend for funge-space? 19:58:53 ? 19:59:01 some sort of binary tree maybe? 19:59:20 would that work better do you think? 19:59:26 I'd say hash table is, of the 'simple' data structures, the best 19:59:37 what you can think about is the fact that the usual use case is: 19:59:40 move around in one area 19:59:44 Deewiant, ok I get quite a few hash collisions 19:59:55 do pg stuff in some area which may or may not be the same 19:59:57 and that's it 20:00:07 Deewiant, well we do move around in one area, but that doesn't really help much 20:00:09 so some sort of partitioned tree might be nice 20:00:19 unless... hrm 20:00:30 AnMaster: for non-flying deltas you'd get O(1) access to the next node 20:00:39 and I'd argue that 99% of the time you are, in fact, not flying ;-) 20:00:51 Deewiant, not really as you need to look up the next cell 20:01:00 ? 20:01:13 I mean, if you have a quadtree or octree 20:01:18 ah yes 20:01:21 you can just follow a pointer to get to the next cell 20:01:24 I thought you meant hash 20:01:39 Deewiant, yes but what about non-flying? 20:01:46 flying, you mean 20:01:49 yeah 20:02:02 say, partition space into 128x128 squares 20:02:10 Deewiant, also what about looking up value at another place, using p or such 20:02:12 within such a square, always travel by the trees 20:02:18 get or set 20:02:36 if moving to another square which is some distance away, lookup that square and find the target cell from a tree 20:02:42 s/a tree/its tree/ 20:02:51 and the same applies to g/p 20:03:12 I'd possibly keep a few 'last accessed' pointers to trees 20:03:17 hm 20:03:25 sounds complex to implement 20:03:28 and check them on funge-space access to see if you already have a close cell 20:03:31 or is there any library I wonder? 20:03:32 somewhat 20:03:35 dunno 20:04:16 Deewiant, also that would not work with current funge-space interface, would have to extend it for IP travel 20:04:29 hmm? sure it would work 20:04:40 current is get (x,y) basically 20:04:49 and that's fine 20:04:51 so I would need a getnext(x,y,direction) 20:04:52 right? 20:05:00 no 20:05:06 since you already have the current position 20:05:11 well I do, per IP 20:05:33 so you know that get(x+1, y) is like get(x,y, east) 20:05:35 or whatever 20:05:36 but still need a funge-space interface for this special "get from current" instead of just "get absolute x,y) 20:05:47 not really 20:05:51 -!- Judofyr has joined. 20:05:54 as an optimization, sure 20:05:57 but you don't /need/ it 20:06:09 hm 20:07:21 but yeh, something to think about 20:07:27 I don't know if it's really that big an advantage 20:07:38 or an advantage at all 20:08:21 well I was able to speed up current hash a bit but making it less general 20:08:53 ie, sizeof(fungekeytype) and getting rid of memcmp and doing comparing by hand, ie the reverse of generic types 20:09:11 Deewiant, still I think what I really need is a better hash function 20:09:18 it gets too many collisions 20:11:07 -!- EgoBot has quit (brown.freenode.net irc.freenode.net). 20:14:34 -!- EgoBot has joined. 20:14:56 -!- ehird has joined. 20:15:01 -!- boily has quit ("quit quit quit"). 20:15:13 -!- ehird has quit (Remote closed the connection). 20:36:11 Deewiant, any idea how to do copy on write in C? it seems the best for opcode stacks in split 20:36:55 yes I know CCBI doesn't duplicate them across split 20:37:34 keep a pointer, set copy to true, when writing, if copy, copy the data and set copy to false 20:37:55 something similar in both the original and the split IP 20:40:25 hm wonder if overhead is larger or not 20:45:02 Deewiant, how is speed on my current trunk for you? 20:46:13 linux machine isn't on, can't test 20:46:55 k 20:47:05 Deewiant, it doesn't compile on windows? 20:47:12 haven't tried 20:47:18 but since you're using POSIX-only stuff, probably not 20:47:26 well since windows is posix iirc it should 20:47:27 ;P 20:47:37 (does this sound familiar?) 20:47:42 I don't have the required crap installed 20:47:48 I could run it in cygwin, of course 20:47:53 but I don't have bzr and can't be bothered 20:48:06 ok 20:48:09 and performance testing is kinda pointless in such an environment 20:48:19 whether I use cygwin or MS's stuff 20:48:19 heh true, windows does suck indeed 20:48:24 it'll be a billion times slower than on *nix 20:48:35 of course, all windows stuff are 20:48:51 not necessarily 20:49:01 but emulating posix is, definitely 21:01:28 RodgerTheGreat: Yes. 21:17:14 GregorR: sweet! 21:17:31 the full instructions set? 21:17:33 Although still slow, it's faster than JSMMIX was. malloc isn't working right now though >_< 21:17:38 Except for the FPU. 21:17:45 But that can be worked around with -msoft-float 21:17:50 piddling details- that's still really cool 21:18:20 I know some MIPS ASM- lemme know if you need help writing demo apps for it or something 21:18:36 My goal is to use /real/ apps as demo apps :P 21:18:58 I can do "Hello, world!" with write(), but not with printf() since that uses malloc (which, as I mentioned, isn't working) 21:25:50 -!- ehird has joined. 21:27:11 Foo 21:27:34 ehird: JSMIPS 21:27:41 JSMUMPS 21:27:49 Except JSMIPS exists :P 21:29:24 -!- ehird_ has joined. 21:29:42 so it turns out 21:29:46 the intercal community is huge 21:29:50 all of one person downloaded my mirror 21:30:29 -!- oerjan has joined. 21:31:28 maybe it was oerjan 21:31:40 * oerjan wonders what kind of bug ais523 is talking about 21:31:43 nope 21:33:35 http://www.codu.org/jsmips/ 21:34:29 * oerjan isn't a productive Intercal programmer, the unlambda interpreter is my only work afair 21:35:15 ehird, hi 21:35:38 ehird_, you will be happy over my last extreme microoptimizing 21:36:05 posix_fadvice when reading files ;) on and posix_fallocate when writing ;P 21:36:08 * AnMaster runs 21:36:16 I decided to use them just to irritate you 21:36:30 Heh. "fallocate" 21:37:12 GregorR: wow- JSMIPS is pretty impressively fast for what it does 21:37:30 -!- Judofyr has quit. 21:37:41 Please note that the vast majority of the time after you press the button is taken loading the ELF file :P 21:38:14 ais523 isn't here 21:38:22 it only takes a few milliseconds to run in my browser 21:38:39 Well then your computer clearly rawx0rz mine >_> 21:38:44 Whut is Mipss 21:39:07 MIPS is a CPU architecture common in embedded systems and the Playstation 1 and 2 21:39:10 but it runs in a few mips here too 21:39:18 RodgerTheGreat: Oh my god you MUST implement the PS api 21:39:24 I want playstationweb 21:39:26 PostScript? 21:39:28 oh, nvm 21:39:38 Wow, THAT would be fast :P 21:39:59 hehe. GregorR: think you could hack JSMIPS into an EmotionEngine emulator? :) 21:40:06 But I'm going to stick with the loftier goal of printf("Hello, world!") for the moment. 21:42:50 Uhh 21:42:53 GregorR: Printf doesn't need malloc 21:43:24 hm. I'm tempted to take a crack at implementing my "Revolver" architecture in JS and creating a similar VM. 21:45:14 GregorR: http://rafb.net/p/PH5m5q12.html 21:45:16 printf skeleton 21:49:50 -!- jix has quit ("CommandQ"). 21:57:59 Hmm 21:58:12 NOTE-AIS523: In file included from src/cesspool.c:40: 21:58:12 /usr/lib/gcc/i686-apple-darwin8/4.0.1/include/varargs.h:4:2: error: #error "GCC no longer implements ." 21:58:15 Please use stdarg.h 21:58:29 cesspool? 21:58:36 olsner: C-INTERCAL source file 21:58:53 ick/src/cesspool? :P 21:59:23 intercal is funny 22:00:06 ais523 - in fact just define _POSIX_SOURCE 22:00:07 -!- pikhq has joined. 22:02:32 ehird_: It shouldn't, but newlib's does :P 22:02:45 GregorR: It just needs _POSIX_SOURCE 22:02:47 And then it works 22:03:09 ? 22:03:41 Oh wait, cross-contaminated conversations? 22:03:55 ehird_: printf shouldn't need malloc, but newlib's does :P 22:03:58 Hail. 22:04:46 GregorR: Ah 22:04:49 GregorR: So use my skeleton 22:04:54 Not that hard to implement a full printf 22:05:07 ehird_: I'm not going to diverge from newlib just to bypass a bug I'll need to fix anyway ... 22:05:27 GregorR: http://sourceforge.net/projects/pdclib 22:05:38 That is quite complete, has a real printf, a real malloc 22:05:39 etc 22:05:42 And its very simple to understand 22:05:44 Maybe give it a shot 22:06:07 Its malloc probably won't work either - I just need to fix whatever bug in the CPU implementation causes malloc to fail. 22:07:25 GregorR: Still, take a look at it anyway 22:11:35 -!- RodgerTheGreat_ has joined. 22:12:51 -!- RodgerTheGreat has quit (Read error: 104 (Connection reset by peer)). 22:12:59 byebye 22:13:03 -!- RodgerTheGreat_ has changed nick to RodgerTheGreat. 22:16:50 RodgerTheGreat: it's lowercase, #esoteric 22:16:50 :-P 22:17:06 Heh 22:17:07 I like my version better 22:17:19 RodgerTheGreat: but all irc chans are lowercase 22:17:19 :( 22:17:30 not in my client 22:17:33 not #ESOTERIC 22:17:50 #Esoteric 22:17:59 -!- ehird_ has set topic: #esoteric LOGS: http://ircbrowse.com/cdates.html?channel=esoteric WIKI: http://esolangs.org/wiki/ FILES: http://esolangs.org/files/. 22:17:59 #esoteriC 22:18:15 -!- lament has set topic: LOGS: http://ircbrowse.com/cdates.html?channel=esoteric WIKI: http://esolangs.org/wiki/ FILES: http://esolangs.org/files/. 22:18:22 oops 22:18:26 -!- lament has set topic: #eSOTERIC LOGS: http://ircbrowse.com/cdates.html?channel=esoteric WIKI: http://esolangs.org/wiki/ FILES: http://esolangs.org/files/. 22:19:20 -!- ehird_ has set topic: #esoteric = http://ircbrowse.com/cdates.html?channel=esoteric. 22:19:42 Hahahaha, if I got GCC in MIPS, I could compile stuff (extremely slowly) in my browser! :P 22:19:50 nooo what about the link to the wiki 22:19:57 -!- ehird_ has set topic: ircbrowse.com/cdates.html?channel=esoteric. 22:20:00 lament: who needs it 22:20:06 the only reason the logs are there is because freenode requires it 22:20:09 -!- GregorR has set topic: PLACE TOPIC HERE. 22:20:17 GregorR: freenode doesn't allow that 22:20:24 mine was the shortest valid one 22:20:28 I DON'T SEE THEM STOPPING ME 22:20:37 -!- ehird_ has set topic: logs@ircbrowse.com. 22:20:41 people can find 'em themselves 22:20:45 and logs@ is useless 22:20:47 -!- ehird_ has set topic: ircbrowse.com. 22:20:51 GregorR: is that MIPS the instruction set/cpu or some other meaning of MIPS you're referring to? 22:20:52 and people can find ircbrowse on google 22:20:55 -!- ehird_ has set topic: ircbrowse. 22:21:00 olsner: The ISA 22:21:16 olsner: And no, not that kind of ISA *hah hah hah ambiguity is fun* 22:21:26 (That is, the instruction set :P ) 22:21:31 * olsner suddenly understands nothing 22:21:42 http://www.codu.org/jsmips/ 22:21:50 you've found a MIPS emulator in JS or something like that? 22:21:59 ah, indeed 22:22:02 I /write/ a MIPS emulator in JS 22:22:11 s/\/write\//\/wrote\// 22:22:42 well, MIPS is pretty common, so it shouldn't be hard to get a GCC running... but you do need some kind of OS interface for GCC to use for reading files and stuff like that 22:23:09 does freenode actually require to disclose the location of the logs? 22:23:11 wouldn't know how hard it would be to hand-code syscalls out into JS code for everything that GCC needs to interface 22:23:26 you should just boot linux on it! :P 22:23:46 -!- lament has set topic: LOGGED. 22:24:28 I've written a few basic syscalls, and I have a GCC /targeting/ it :P 22:25:45 aah, you're just one step away from cross-compiling gcc to be hosted on it then 22:25:45 -!- GregorR has set topic: W/LOG. 22:25:48 Even shorter. 22:26:09 -!- olsner has set topic: LOGD. 22:28:21 -!- GregorR has set topic: To anyone whom it may concern, the discourse, discussions and general chatting of any sort on this channel are recorded by an automated program, which then proceeds to copy said recordings (herein "logs") into a permanent location. Although not easily alterable, the logs are accessible via a web page (using the Hypertext Transfer Protocol) with the Universal Resource Locator http://ircbrowse.com/cdates.html?channel=esoteric. 22:28:23 -!- Iskr has quit ("Leaving"). 22:28:41 -!- pikhq has set topic: cat /var/log/#esoteric. 22:28:53 -!- ehird_ has set topic: ircbrowse. 22:29:06 -!- GregorR has set topic: To whom it may concern, the discourse, discussions and general chatting of any sort on this discussion forum (colloquially, "channel") are recorded by an automated program, which then proceeds to copy said recordings (herein "logs") into a permanent location. Although not easily alterable, the logs are accessible via a web page (using the Hypertext Transfer Protocol) with the Universal Resource Locator http://ircbrowse.com/cdates.html?channel=eso. 22:29:10 -!- oerjan has set topic: ln. 22:29:10 -!- ehird_ has set topic: ircbrowse. 22:29:14 logs, naturally 22:29:18 Hahahaha 22:29:20 -!- ehird_ has set topic: ibrowse. 22:29:26 people can deduce irc themselves 22:29:28 -!- ehird_ has set topic: browse. 22:29:36 GregorR: It's Uniform Resource Locator, not Universal. 22:29:37 browse, abbeviated -> bws 22:29:39 -!- ehird_ has set topic: bws. 22:29:43 bws, abbrev. -> bs 22:29:43 Argh 22:29:45 -!- ehird_ has set topic: bs. 22:29:49 -!- GregorR has set topic: To whom it may concern, the discourse, discussions and general chatting of any sort on this discussion forum (colloquially, "channel") are recorded by an automated program, which then proceeds to copy said recordings (herein "logs") into a permanent location. Although not easily alterable, the logs are accessible via a web page (using the Hypertext Transfer Protocol) with the Uniform Resource Locator http://ircbrowse.com/cdates.html?channel=esote. 22:30:12 got cut off 22:30:18 Whoops 22:30:35 -!- GregorR has set topic: To whom it may concern, the discourse, discussions and general chatting of any sort on this discussion forum (colloquially, "channel") are recorded by an automated program, which then copies said recordings (herein "logs") into a permanent location. Although not easily alterable, the logs are accessible via a web page (using the Hypertext Transfer Protocol) with the Uniform Resource Locator http://ircbrowse.com/cdates.html?channel=esoteric. 22:31:20 Maximally verbose, minimally informative. 22:32:14 :) 22:32:28 * oerjan wants that in Victorian English 22:32:52 Does babelfish have an English->Victorian English translation service? 22:33:05 * oerjan doubts it 22:33:34 -!- ehird_ has set topic: Quien corresponda, a, el discurso, los debates generales y de charlar de cualquier tipo en este foro de debate (coloquialmente, "canal") son registrados por un programa automatizado, que luego copia dice grabaciones (en lo sucesivo "registros") en una ubicación permanente. Aunque no son fácilmente modificables, los registros son accesibles a través de una página web (utilizando el Protocolo de transferencia de hipertexto) con el localizador u. 22:33:37 awwww 22:33:53 -!- olsner has set topic: Den hr This kanalen channel loggas is being logged och and loggarna the logs sparas are saved p on en a server server p on internet the internet, p at adressen address http://ircbrowse.com/cdates.html?channel=esoteric. 22:33:59 bilingual! 22:34:06 in a minimally readable way 22:34:06 -!- ehird_ has set topic: 関係者各位は、談話は、いかなる種類のチャット及び全般的な議論をしてこのディスカッションフォーラム(口語では、 "チャネル" )は、自動で記録されたプログラムは、その後のコピーによると録音(ここに"ログ" )を恒久的なロケーションです。簡単に変更はないが、これらのログには、ウェブページを介してアクセスできる(. 22:34:12 Jttekul 22:34:13 that should be japanese. 22:34:25 ehird_: as if that is the actual topic message? 22:34:41 also, apply SJIS to UTF-8 recoding on that 22:34:54 blame google translate 22:34:55 oerjan: ja, visst r det? :P 22:34:58 -!- ehird_ has quit (Excess Flood). 22:35:18 -!- ehird_ has joined. 22:35:28 الى من يهمه الامر ، الحديث ، والمناقشات العامة الدردشه من اي نوع على مناقشة هذا المنتدى (بشكل عامي ، "قناة") لم تسجل مؤتمت البرنامج ، الذي قال بعد ذلك نسخ التسجيلات (هنا "السجلات") الى موقع ثابت. وان لم يكن للتغيير بسهولة ، ويمكن الوصول اليها عبر الجذوع صفحة 22:35:32 ويب (باستخدام بروتوكول نقل النص التشعبي) مع عنوان إنترنت http://ircbrowse.com/cdates.html؟channel=esoteric 22:35:35 -!- ehird_ has set topic: الى من يهمه الامر ، الحديث ، والمناقشات العامة الدردشه من اي نوع على مناقشة هذا المنتدى (بشكل عامي ، "قناة") لم تسجل مؤتمت البرنامج ، الذي قال بعد ذلك نسخ التسجيلات (هنا "السجلات") الى موقع ثابت. وان لم يكن للتغيير بسهولة ، ويمكن الوصول اليها عبر الجذوع. 22:35:41 hmph 22:35:42 now that is seriously broken in xchat 22:35:57 zero ligatures 22:36:59 * ehird_ is putting multibebl on it 22:41:26 -!- ehird has quit (brown.freenode.net irc.freenode.net). 22:41:26 -!- shinkuzin has quit (brown.freenode.net irc.freenode.net). 22:41:26 -!- bsmntbombdood has quit (brown.freenode.net irc.freenode.net). 22:41:27 -!- Tritonio_ has quit (brown.freenode.net irc.freenode.net). 22:42:09 Process-prominent the relative one, the argument and diverse variable 22:42:10 arguments and in this general of tribune (" in the universal 22:42:10 word,; this interests channel" ) in sistemazione (here " 22:42:10 What logs" of the interests; Memorizzato he) around the neighbor 22:42:10 to the copy of the automated program, in the position of the normal 22:42:11 position. The probably easy modification, but that one interests the 22:42:14 HTTP of the URL of the logarithm of Naperian: 22:42:19 /ircbrowse.com/cdates.html? (of the FTP of the end of the customs of 22:42:19 the File Transfer Protocol) it is with the simple exactitude of 22:42:19 channel=esoteric the homepage 22:43:41 -!- ehird has joined. 22:43:41 -!- shinkuzin has joined. 22:43:41 -!- bsmntbombdood has joined. 22:43:41 -!- Tritonio_ has joined. 22:44:02 -!- sekhmet has left (?). 22:44:37 -!- ais523 has joined. 22:47:59 o_O 22:48:12 ais523: what bug? 22:48:28 oerjan: you mingle a value which might be above 65535 22:48:42 (you throw the high bits away anyway, but it can cause an error before then) 22:48:58 the bug in your code was hidden by a bug in C-INTERCAL, which when I fixed exposed the bug in your code 22:49:19 (4402) DO RESUME '?'"?!101~#128'$!101~.101'"~#65535'$#2'~#3 22:49:34 (that's the corrected line, you can find the original by searching for the line number (4402)) 22:49:46 I added the select against 65535 22:49:55 ais523: look at logs 22:49:55 :) 22:50:01 (while compiling on os x) 22:50:09 -!- ais523 has changed nick to ais523|busy. 22:50:40 ehird_: I'm busy with something else at the moment, I don't have time to go logreading 22:50:44 ok 22:50:44 :) 22:50:50 but its a severe c-intercal bug 22:50:52 (won't compile) 22:50:54 or even to answer questions about compiling unless they're easy enough to answer in a couple of line 22:50:56 s/$/s/ 22:51:00 i got it to compile 22:51:03 but it required hand-hacking 22:51:12 -!- ais523|busy has changed nick to i. 22:51:18 -!- i has changed nick to ais523|busy. 22:51:21 whoops 22:51:46 ehird_: most versions of C-INTERCAL before I fixed the build system needed hand-hacking for me too 22:51:50 so I'm not very surprised 22:53:26 can you explain the problem quickly? 22:53:44 yes 22:54:01 ais523|busy: you use va_dcl and vaargs.h and other stuff on OS X 22:54:06 defining _POSIX_SOURCE for it fixes it 22:54:30 ehird_: varargs vs. stdarg has been conditioned on _POSIX_SOURCE for ages 22:54:46 for some reason they didn't pick an identifier which is defined by default, obviously 22:54:49 (all that predates me) 22:54:58 ais523|busy: But you don't define _POSIX_SOURCE on OS X. You should. 22:55:00 but I should be able to change it to something autoconf-detected easily enough 22:55:03 Because otherwise it breaks 22:55:10 ehird_: it isn't defined anywhere AFAICT 22:55:35 so I'll get autoconf to define it if it finds stdarg.h (which should be strong enough evidence that stdarg is available) 22:55:43 C-INTERCAL predates C89 catching on, you see 22:56:02 and the use of stdarg.h was hacked in later as a nonstandard default... 23:00:25 anyway, the solution's pretty simple once the problem's known, so I can fix that for the next version 23:00:25 (which I'll probably release once the bug reports die down as 1.28) 23:00:41 ais523|busy: nobody used my mirror, btw :) 23:00:49 well, like 2 people 23:00:49 ehird: wtf is the meaning of this scribbley moonspeak 23:00:58 RodgerTheGreat: it's your topic, in arabic 23:01:05 but broken 23:01:08 xchat sux 23:01:25 Colloquy handles the arabic script like a champ, naturally 23:02:02 Konversation has no problems either 23:02:23 (of course, I'd have no hope of understanding it if I were using telnet, but it's Konversation today as I'm too busy to respond to pings manually) 23:03:11 what i'm saying is: 23:03:16 it didn't copy right 23:03:18 so the text is broken 23:04:25 -!- ehird has quit (brown.freenode.net irc.freenode.net). 23:04:27 -!- shinkuzin has quit (brown.freenode.net irc.freenode.net). 23:04:27 -!- Tritonio_ has quit (brown.freenode.net irc.freenode.net). 23:04:27 -!- bsmntbombdood has quit (brown.freenode.net irc.freenode.net). 23:04:59 heh, I just got a notification because ehird_'s ghost was on the wrong side of a netsplit 23:05:32 heh 23:06:06 that's one of the most pointless things my client's ever started flashing at me about 23:09:25 hmm... it seems that C-INTERCAL is Debian's 17745th most popular package in terms of the number of people who use it regularly 23:09:30 which is apparently 4, by the way 23:09:54 (and that doesn't count me, because I don't have the Debian package for C-INTERCAL installed because it would interfere with my development) 23:13:29 ais523|busy: how many packages does it beat? 23:13:52 * oerjan wonders if it follows Zipf's law 23:15:15 -!- Deformative has quit (Connection reset by peer). 23:16:00 (in which case, somewhere between 50 and 70 thousand perhaps?) 23:16:15 -!- Deformati has changed nick to Deformative. 23:17:15 RodgerTheGreat: sufficiently many that both Firefox and Kate went SIGSEGV when I tried to paste the list from one into the other 23:18:00 and even more interesting would be how many of those 50-70 thousand packages are included in the "over 2000" figure for GPLv3 projects 23:19:58 it ranks 58523rd in terms of packages for which users had sent invalid data back for, though, so there must be at least that many packages 23:20:18 (apparently, all data anyone has sent back about C-INTERCAL usage are vaild) 23:24:29 -!- ehird has joined. 23:24:29 -!- shinkuzin has joined. 23:24:29 -!- bsmntbombdood has joined. 23:24:29 -!- Tritonio_ has joined. 23:35:05 -!- timotiis has quit ("leaving"). 23:39:37 -!- oerjan has quit ("Good night"). 2008-04-03: 00:02:32 -!- ais523|busy has quit ("(1) DO COME FROM ".2~.2"~#1 WHILE :1 <- "'?.1$.2'~'"':1/.1$.2'~#0"$#65535'"$"'"'&.1$.2'~'#0$#65535'"$#0'~#32767$#1""). 00:39:44 PLEASE ABSTAIN FROM INTERCAL SIGS! 00:39:53 it burns! 01:27:42 -!- Sgeo has quit (Read error: 104 (Connection reset by peer)). 01:30:05 RodgerTheGreat: No it doesn't. 01:30:25 Well, unless you mean in the sense that sufficient levels of radiation burn. 01:30:46 "burn" is used somewhat figuratively 01:31:09 -!- Sgeo has joined. 01:36:38 -!- boily has joined. 01:37:10 -!- boily has quit (Client Quit). 01:49:55 -!- wildhalcyon has joined. 01:53:10 Why is our topic in arabic? 01:57:20 Because someone insisted upon it. 01:57:30 -!- pikhq has set topic: It's all Arabic to me!. 01:58:39 Well, that works 02:05:50 * pikhq is astounded 02:06:11 One of the guys in the Fantasy Rules Comission had a metalogic class. . . Taught by Suber. 02:06:53 -!- ehird_ has quit ("This computer has gone to sleep"). 02:06:53 -!- ehird has quit. 02:26:06 -!- Tritonio_ has quit (Remote closed the connection). 02:26:59 -!- Tritonio_ has joined. 03:13:59 -!- wildhalcyon has left (?). 03:16:40 -!- calamari has joined. 03:22:58 I've come to the conclusion that all of the opcodes in JSMIPS are implemented correctly to the best of my ability, and so the problem with malloc() is in another part of the design. 03:24:45 However, I'm still loathe to suspect that the error is in newlib's implementation of malloc. That seems extremely unlikely. 03:34:31 Newlib's malloc, last I checked, was a fairly simple and bog-standard algorithm. . . And a fairly reliable one at that. 03:35:20 I haven't a clue why this doesn't work D-8 03:35:42 I'm in an infinite loop of (basically) while ((a & b) == 0) { a <<= 1; } 03:36:06 Shockingly, that doesn't accomplish much. 03:38:59 I suspect that a is either 0x00 or 0xFF. 03:39:29 Or malloc is *really* fucked up. :p 03:40:00 Both a and b are 0x00 03:40:05 Hence the infinite loop. 03:40:27 * GregorR goes to publish the latest state of things. 03:46:25 -!- CakeProphet has joined. 03:47:38 Ah. 03:50:10 :D 03:50:46 http://www.codu.org/jsmips/ 03:51:03 I have it switching into debug mode when _malloc_r is called and then dying in 100 ops. 03:51:15 You can see it go into the loop, but everything is right except for the actual functionality. 03:53:58 Uh, test.html is a test program, in case you couldn't guess :P 03:55:15 ...what exactly is the output supposed to mean 03:55:34 It's the pre- and post- of every operation after it goes into _malloc_r. 03:56:13 Oh, and the address of every operation :P 03:56:24 more importantly... wtf does this program do. I kind of arrived late I suppose. 03:56:42 http://www.codu.org/jsmips/test.c 03:56:47 ^ that, in theory 03:58:54 Yeah, it's that, compiled. 03:59:11 In fact, if you watch carefully, the first thing it outputs is the result of that syscall - but that's before it goes into debug mode. 03:59:47 ...something in assembly? 04:03:39 I made a syscall that just outputs its argument in hex - I was testing strlen, which worked fine. 04:13:38 * pikhq makes a syscall that forks the processor. 04:13:48 I think I'll call that syscall 'infinity'. 04:14:48 -!- CakeProphet has quit ("haaaaaaaaaa"). 04:16:02 :P 04:16:13 How 'bout you figure out why malloc doesn't work for me! :P 04:17:25 Oh, I uploaded the binutils/gcc/newlib patches too. 04:38:14 Bye all 04:39:07 Is there something geeky about going to the prom with an SCA member? 04:39:07 -!- shinkuzin has quit (Read error: 113 (No route to host)). 04:40:11 -!- Sgeo has quit ("Ex-Chat"). 05:08:28 -!- sebbu2 has joined. 05:13:03 hey everyone, I reorganized my code page! http://rodger.nonlogic.org/code.php 05:13:37 -!- EgoBot has quit (brown.freenode.net irc.freenode.net). 05:14:06 -!- EgoBot has joined. 05:19:31 -!- GreaseMonkey has joined. 05:19:53 -!- EgoBot has quit (brown.freenode.net irc.freenode.net). 05:20:41 -!- EgoBot has joined. 05:25:38 there are neat things there, honest! 05:26:29 -!- sebbu has quit (Connection timed out). 05:26:30 -!- sebbu2 has changed nick to sebbu. 05:33:34 * pikhq sees firmware for a fembot. 05:33:37 Liar. 05:33:37 :p 05:33:49 :( 05:34:32 closest thing I ever did to that was the abandoned "botlogic" project: http://rodger.nonlogic.org/botlogic/ 05:35:10 You going to get more people in on The Abyss? 05:35:11 >:D 05:35:24 that would be fun, to be certain 05:35:34 * pikhq is still proud of being the first person to finish the last puzzle without a hint 05:35:43 as well you should be 05:36:06 hell, if there's enough interest I might spend some time putting together another level for the Abyss. 05:36:10 w00ts. 05:55:59 ARGH 05:56:01 * GregorR smashes something. 05:56:14 malloc fails before even getting to sbrk() 8-O 05:56:33 8-O 05:56:39 Try mmap? :p 05:56:51 GregorR: check out the new area on my site! http://rodger.nonlogic.org/code 05:56:56 (yeah, I know, I know: sbrk() is much easier. . .) 05:57:04 I mean http://rodger.nonlogic.org/code.php 06:03:31 pikhq: did you appreciate the fact that the "screenshot" for Abyss highlights the most devious puzzle in the entire game? 06:10:32 That I did. :) 06:34:27 Grrf 06:34:39 GregorR: ? 06:34:44 You people are shockingly useless, do you know that? 06:35:00 "malloc fails in my implementation I'm trying to make work properly." "Use mmap!" 06:35:02 *slap* 06:35:05 sorry, I don't think I'd be of much assistance debugging your malloc routine 06:35:15 I was referring to pikhq :P 06:35:38 GregorR: I was *kidding*. 06:35:44 YOUR MOM 06:35:50 WAS KIDDING 06:35:57 So anyway, I made malloc "work" by disabling -O2 (:( ) 06:36:04 First you start with mmap, then you take the leap into memory space randomization. 06:36:10 But printf still doesn't work (not a clue why) 06:36:20 And soon, you're running OpenBSD. 06:36:29 lol - but in your web browser :P 06:37:01 Touche. 06:38:46 well, if we are to believe the "blogosphere", "web 2.0" heralded the evolution of a web-browser from a program to a huge, bloated program referred to as a "platform". 06:39:04 it's about damn time it started ACTING like a proper platform and running BSD. 06:40:39 It's about damn time it started *ACTING* like a proper platform and support multitasking. 06:40:46 (tabs and windows don't count.) 06:41:26 good night everyone 06:41:29 I WANT VIM IN MY BROWSER DAMN IT 06:41:40 -!- RodgerTheGreat has quit. 06:41:47 (If somebody who isn't me could write a vt100 simulator in JS, that'd rool) 06:41:53 I want more than just that. 06:42:10 I WANT MY BROWSER TO HAVE A SANE LANGUAGE IN IT. 06:42:17 HTML? Not sane. 06:42:29 http://pikhq.nonlogic.org/test.html Does that *look* sane to you? 06:42:47 (view source; most browsers can't handle the features of HTML used there) 06:44:41 JavaScript has a nice design, but a poor design. 06:45:54 OK, SOME instruction is horribly wrong, as fflush is jumping off into the ether >_> 06:53:37 Heh, I love the W3 validator's response for that page. 06:53:51 Basically: "Well, yeah, it's correct, I guess, but you really shouldn't be doing this ..." 06:55:52 Yeah; ain't it wonderful? 06:58:07 With luck, HTML5 will be a lot cleaner 06:58:15 Deewiant: Funny. 06:58:30 pikhq: not feeling lucky? :-) 06:58:30 In the same way that Perl6 should be cleaner than Perl5 (haw haw haw) 06:58:42 And the same way that C++ should be cleaner than C. 06:59:03 Deewiant: Here's how to make HTML5 cleaner. 06:59:09 Step 1: NEW SYNTAX. 06:59:16 Break backwards compatibility. 06:59:28 Step 2: Get someone with some sanity on the project. 06:59:37 already exists, it's called JSON/YAML/sexps/whathaveyou. 06:59:45 sexps would be ideal. 06:59:56 SEXPEES 07:12:55 -!- calamari has quit ("Leaving"). 07:26:25 sexps? 07:26:31 S-Expressions? 07:26:46 Deewiant, ^ 07:31:34 AnMaster: almost certainly 07:31:44 k 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:22:52 -!- Iskr has joined. 08:46:47 -!- ais523 has joined. 08:49:36 -!- olsner has quit ("Leaving"). 09:01:16 -!- oklopol has joined. 09:01:36 oh shit 09:02:26 i was just idly coding at the uni... and a religious freak started talking loudly in his cell phone about how merciful god can be 09:02:49 also every 5 seconds mirc tells me i cannot connect 09:02:57 in a pop-up window 09:03:01 life can be so cruel. 09:03:55 "david lived a year in sin before god killed him" 09:04:44 wonder if it would be too impolite if i told this guy he's ruining my day 09:27:16 Deewiant, FIXP's N is mostly useless isn't it? you could do the same by 0\- I think? 09:34:17 AnMaster: well, it manages it in one character 09:34:40 many other fingerprints, such as ROMA, are trivial to expand the individual instructions into multi-character code 09:34:42 ais523, but you got to load the fingerprint first 09:34:56 AnMaster: yes, but only once 09:35:02 then you can use N as much as you like 09:35:08 ais523, not if you want to load some other that also define N 09:35:12 (unless you load another fingerprint that defines N) 09:35:41 ais523, or if you unload another fingerprint defining N ;P 09:35:53 well, yes... 09:47:49 -!- GreaseMonkey has quit ("/me is creating a telnet version of mafia - stay tuned"). 09:55:45 ais523, well I'm adding FIXP fingerprint 09:55:56 which one's that? 09:56:26 rcfunge one, some fixed point math stuff 09:56:51 * ais523 was using fixed point a while ago in some DSP programming 09:57:02 it's the one with the assembly language opcode with about 6 parameters 09:57:18 ais523, well I looked at how ccbi does it, and it just cast to floating point and then rounds 09:57:20 the assembly language also implemented Fortran's DO instruction 09:57:24 so *shrug* did the same there 09:57:36 the one where you specify the line label of the end of the loop 09:57:40 it's very COME FROM-like 09:57:56 I got no clue how do do cos without using the cos from libm 09:58:01 so I just cast and round 09:58:19 AnMaster: I implemented cos in MediaWiki once 09:58:24 eh? 09:58:30 what do you mean? in php? 09:58:37 no 09:58:40 in MediaWiki markup 09:58:44 um wtf 09:58:46 http://en.wikipedia.org/wiki/Special:Search?go=Go&search=User:ais523/Sandbox/cos 09:58:47 is it turing complete?! 09:58:51 AnMaster: no 09:58:56 because you can't write an infinite loop 09:59:11 so what computational class? 09:59:14 if you remove the arbitrary anti-loop restriction, or allow loops to be restarted by hand, then it's TC 09:59:33 OTOH, you can write a finite loop of almost any size with enough repetition 09:59:59 ais523, oh you are an admin on wikipedia? 10:00:02 AnMaster: yes 10:00:13 as for computational class, it's below FSM because it can't infinite-loop 10:00:27 hrrm 10:00:49 (clearly, infinitely looping wikimarkup would be a nightmare for the servers, which is why it isn't allowed) 10:00:56 ais523, your user page is.... fancy.... 10:01:35 the clock was one of my first serious markup projects 10:02:02 oh, BTW, the cos function is only accurate in about the range -pi to pi, because I used the Taylor series, but you can correct that with mod easily enough 10:02:04 so mediawiki will let you draw images? 10:02:13 AnMaster: that's not an image 10:02:20 try dragging your mouse over it 10:02:30 ais523, does not select anything 10:02:38 you're not accurate enough, then 10:02:43 the dots are all bullet points 10:02:50 positioned using CSS 10:02:53 ouch 10:03:11 clearly, mediawiki markup should have an entry on esolang 10:03:12 :D 10:03:15 OK, so I was showing off 10:03:27 AnMaster: look at Wiki Cyclic Tag on Esolang 10:03:40 that's proof that MediaWiki markup is TC when you allow loop-restarting by hand 10:04:23 that would allow DoS though 10:05:09 AnMaster: a restart-by-hand infinite loop is DOS even without the infinite loop bit 10:05:25 because someone's making a huge number of edits (or at least previews) 10:05:26 well but much more rate limited 10:05:42 there will be delay due to network 10:06:13 oh well, there's always the pre-expand include limit 10:06:27 mhm? 10:06:30 it's an anti-DOS measure that has been known to confuse the hell out of people 10:06:40 if you write a page that's too complicated, bits near the end just stop working 10:06:47 oh? 10:06:49 and there's an error message, but it's in HTML comments in the output 10:07:22 well that is stupid 10:07:27 (an overly-complex page has to fail /somehow/, so as not to DOS the servers, but the avoid-error-messages-at-all-costs philosophy strikes me as being slightly counterproductive) 10:07:45 yeah 10:09:09 Deewiant, oh btw I found some new nifty functions to microoptimize with, mostly to irritate ehird really 10:09:16 -!- oklopol has quit (Read error: 110 (Connection timed out)). 10:09:16 sorry, I was logreading and that just jumped out at me 10:09:34 ais523, :) 10:09:40 tools/fuzz-test.sh: line 109: 30792 Floating point exception( ./cfunge -S fuzz.tmp ) 10:09:41 hm 10:09:52 division by zero, probably 10:10:08 that produced NaN before when I tried 10:10:09 iirc 10:10:43 wow, posix_fadvice is so obscure Google can't figure out what it does 10:11:02 and in my experience division by zero is NaN in floats, but a floating point exception when done with integers. Go figure... 10:11:29 and the fuzz program got ? in it, can't figure reproduce due to them 10:12:37 try running it again maybe 4 times to see if you get the same result 10:13:47 no I don't because there are quite a few ? in it 10:13:53 oh dear 10:14:13 you need something like C-INTERCAL's +printflow 10:14:35 just print out the coordinates at every step and save to a logfile, so that when it errors you can go back and see what route was taken 10:14:41 ah at last I got it 10:15:02 ais523, I got trace yes, but wasn't enabled in fuzz testing because it tends to spam with like 200 threads that fuzz sometimes cause 10:15:27 (+printflow is weirder; it does static compile-time analysis to figure out what line is executed after each other line (which is far from perfect), and then after each line is executed prints the line it predicted would be executed next) 10:15:36 AnMaster: what was the problem 10:15:53 ais523, not sure yet, trying to follow program flow 10:16:10 oh wait 10:16:17 not div by zero, mod by zero 10:16:20 StackPush(ip->stack, (FUNGEDATATYPE)random() % StackPop(ip->stack)); 10:16:23 or maybe negative? 10:16:37 mod by negative doesn't SIGFPE, I think 10:16:43 hm 10:16:45 but mod by zero probably does 10:18:05 * ais523 goes to get lunch 10:18:09 -!- ais523 has quit ("will be back after lunch"). 10:26:32 Deewiant, ccbi crashes on "PXIF"4( 0D @ 10:26:40 with a "floating point exception 10:57:02 -!- ais523 has joined. 11:02:37 AnMaster: "mostly useless" is up to you, Befunge-98 is turing complete even without fingerprints so you can do whatever however in any case ;-) 11:03:05 Deewiant, was just noting that it was unusually useless 11:03:19 it's one instruction to replace 3 11:03:25 can be handy if you need it a lot 11:03:37 true 11:04:33 Deewiant, fixed the crash in ccbi? 11:04:45 yeah, div by zero 11:05:14 fuzz testing is useful for such basic things 11:06:07 quad tree looks very useful, but there are of course issues with it 11:06:14 like quite complex to implement 11:06:33 I think befunge98 used some kind of octree 11:06:43 !befunge or? 11:06:46 Huh? 11:06:47 befunge98 11:06:50 ah 11:07:03 but it didn't work 11:07:06 but octree would be for 3D? 11:07:16 it crashed loading mycology, so he just made the initial size bigger ;-) 11:07:21 might have fixed it since 11:07:25 yeah I can make quadtree work, would just be painful to do it 11:07:35 and probably have a lot of bugs 11:07:38 AnMaster: works for 2D fine, too, you can keep the diagonals for each cell as well 11:07:57 a lot of references to update on changes, say new cell added 11:08:41 might still be less work than hashing + inserting 11:08:43 I don't know 11:08:47 hm 11:08:59 oh, and ehird, after all your complaints about Debian's speed: 11:09:00 Accepted intercal 28:0.28-1 (source i386)Thu 03/04/2008 04:36 11:09:06 so split into 128x128? well it would allow some nice things 11:09:10 that came in my inbox this morning 11:09:21 (ehird: I know you're not in the channel right now but I'm assuming you logread) 11:09:31 Deewiant, for single ip it would be easy to use it to optimize say strings 11:09:41 and JIT 11:09:46 ie store a faster way to do it 11:10:01 for multiple IPs that would be "bloody hard" 11:12:13 Deewiant, oh btw the fingerprint testing bit my my fuzz testing script is quite nice, it looks up in the source what instructions are implemented by the fingerprint it is told to test 11:12:28 to reduce useless bounce on not implemented 11:13:03 heh 11:13:24 depends on this format of lines in manager.c: 11:13:25 { .fprint = 0x544f5953, .loader = &FingerTOYSload, .opcodes = "ABCDEFGHIJKLMNOPQRSTUVXYZ", 11:13:46 ie, looks for the correct Finger.*load, then finds opcodes on same line 11:13:48 XD 11:14:01 actually no, it just find everything between "" on same line 11:14:31 still, as long as it works 11:15:42 * ais523 imagines TRDS being fuzz-tested 11:16:14 oh, and a quadtree would be a pain if you had a flying IP 11:16:15 ais523, and I won't implement TRDS so... 11:16:23 ais523, true 11:16:33 but most time the ip doesn't fly 11:16:39 not very efficient if you do a lot of p and g instructions either 11:16:50 that can be dealt with by space partitioning 11:17:24 i.e. you can lookup a certain 'area' quickly 11:17:38 and a hash table for storing references to cells recently accesses 11:17:41 accessed* 11:17:56 what you could do would be to make a quadruply linked list 11:18:15 and have a 2D array of pointers pointing to it 11:18:17 however, there is one issue, linked list would destroy locality of reference 11:18:34 that would optimise many common cases 11:18:44 and would use up huge amounts of memory, but be speed-efficient 11:18:52 ais523, yeah, but you forgot negative funge space and so on 11:19:04 you could use the 2D array of pointers near the centre, and some sort of tree system outside 11:19:19 because most programs are going to have most non-32 values at small positive locations 11:19:28 and that funge space is two vectors that are signed x-bit integers 11:19:32 where x is 32 or 64 11:19:36 hm 11:19:37 AnMaster: I know 11:19:55 but an array is still fastest in the cases where it works, you just need something to supplement it in the cases where it doesn't 11:20:02 hm 11:20:05 sounds complex 11:20:10 in general, if people use pg, it's probably within everything that can be accessed quickly, i.e. up to (15,15) 11:20:28 ais523, profiling shows that searching in bucket in hash table is the slowest part 11:20:34 Deewiant: apart from that Befunge sieve-of-eratosthenes program 11:20:35 so I guess I need a better hash function? 11:20:53 ais523: where's it then 11:20:55 currently I think some standard crc is used 11:21:02 Deewiant: can't remember 11:21:11 ais523: it probably uses only a few cells which are close by, anyway 11:21:20 but it worked by writing 234567890234567890234567890, etc in an commented-part of Funge space 11:21:28 and obliterated all the complex numbers in it 11:21:34 s/complex/composite/ 11:21:41 ais523: so once you find that pos, which only takes time the first time, you can cache a pointer to it and after that all accesses are quick 11:21:54 Deewiant: yes, agreed 11:22:05 hm 11:22:18 which is why I think a tree is good, since it optimizes the common case of just an IP moving 11:22:30 ais523, actually if you know a good hash for two 64-bit integers that generate few collisions 11:22:35 I think that would help a lot 11:22:46 and you can use such caching to take care of 90% of pg use 11:22:48 AnMaster: mingle from INTERCAL 11:22:52 alternate bits in the two integers 11:22:53 because currently I get a lot of linear search into buckets 11:23:07 ais523, um? 11:23:08 typedef struct s_fungeVector { 11:23:08 FUNGEVECTORTYPE x; 11:23:08 FUNGEVECTORTYPE y; 11:23:08 } fungeVector; 11:23:11 that is what I need to hash 11:23:17 although a faster method would be to take the bottom few bits of each of x and y and preserve those literally 11:23:19 where FUNGEVECTORTYPE is either 32-bit or 64-bit 11:23:41 e.g. to hash into 1024 buckets, take ((x & 32) << 5) + (y & 32) 11:23:49 AnMaster: I use murmurhash, seems decent 11:23:55 Deewiant, link? 11:23:58 totally insecure, but will spread the typical rectangular program out 11:24:01 google.com 11:24:20 bah 11:24:24 if you want to optimise for Unefungish programs too, you can do that with a small modification 11:24:44 (((x + y/32) & 32) << 5) + ((y + x/32) & 32) 11:25:26 and you could modify it slightly so that you can sort a Befunge-93 program into 2000 different buckets out of 2048 11:25:30 not sure how useful that would be 11:26:37 Deewiant, where is your implementation of it? 11:26:47 space.d 11:27:04 must have an old source code version 11:29:57 Deewiant, your looks 32-bit specific? 11:30:09 what do you think the static assert's for 11:30:17 exactly 11:37:29 Deewiant, what is hash_t? 11:37:50 beats me, probably uint 11:38:07 Deewiant, also do you do one hash for x and then one for y or? 11:38:26 eh? only one hash is returned 11:38:33 hm 11:38:46 0x_c6a4_a793 11:38:49 wtf is that number? 11:38:50 _? 11:38:53 if you do one hash for x and one for y, then as long as small integers hash to different things then you're likely to end up with few collisions 11:38:59 _ is just for readability 11:39:02 doesn't affect value 11:39:13 Perl does that too AFAIR 11:39:59 gcc didn't like it 11:40:00 it hashes together the x and y as though they're a block of data 11:40:16 AnMaster: ? 11:43:36 no difference for speed really it seems, hrrm 11:44:50 Deewiant, in fact it is worse than the current crc 11:45:12 AnMaster: for me it was much faster, shows just how crap the builtin D hashtable is :-) 11:45:12 for 32-bit values, I have not yet tried for 64-bit 11:45:49 Deewiant, it is faster than CRC, but generates more collisions here 11:46:03 I have no way of counting them so I don't know 11:47:14 well mine is based on a simple trick of making the search_in_bucket call another function for each comparing of item, and prevent gcc from inlineing it 11:47:21 and then look at result of profiling 11:53:35 307859 vs. 201398? 11:53:36 hn 11:53:37 hm* 11:53:50 Deewiant, it seems crc gets more collisons, yet it is faster overall 11:53:52 weird 11:54:12 AnMaster: so maybe a binary tree instead of a hash table would be faster :-) 11:54:22 (assuming the fallback is a bintree) 11:54:32 hm? 11:54:59 i.e. maybe whatever the hash table uses to resolve collisions would be faster overall 11:55:20 most hash tables I know just use a linear linked list to resolve collisions 11:55:27 on the basis that they don't happen very often 11:55:30 Deewiant, anyway why use a different constant m than the the "upstream" murmur does? 11:55:41 ais523, true 11:55:50 AnMaster: I don't think I do, maybe it changed since 11:56:00 Deewiant, murmur2 or murmur1? 11:56:02 ais523: the D one uses a binary tree 11:56:03 AnMaster: 2 11:56:06 hm 11:56:11 well this is 2 11:56:22 const unsigned int m = 0x5bd1e995; 11:56:22 vs 11:56:24 const hash_t m = 0x_c6a4_a793; 11:57:00 Deewiant, oh wait you got fixed seed? 11:57:21 unsigned int h = seed ^ len; 11:57:23 vs 11:57:24 hash_t h = 0x7fd6_52ad ^ (8 * m) 12:10:06 130574 vs 109371 for 64-bit hm 12:10:48 Deewiant, it seems even with IO disabled and fingerprints disabled the main mycology uses something random? 12:10:56 oh wait, that would probably be time from y? 12:14:42 1397330 vs 868481 12:14:46 Deewiant, that is for the scheme thing 12:14:49 the latter is crc 12:15:28 so on mycology murmur is better but on the fib in scheme converted to befunge thing, crc is way better 12:15:29 hm? 12:17:25 4331048 vs. 4330944, almost even, again crc slightly better 12:18:58 Deewiant, looks 4330944 4364795, it looses for 32-bit too hm 12:19:21 in fact it is only better for mycology it seems 12:20:08 ais523, wow, posix_fadvice is so obscure Google can't figure out what it does <-- try the man page, it knows 12:20:27 $ man posix_fadvice 12:20:27 No manual entry for posix_fadvice 12:20:29 posix_fadvise 12:20:31 typoed it 12:20:32 the name 12:20:47 ah, that explains why I couldn't find it 12:20:55 as man posix_fad would tell you 12:20:55 ;P 12:21:05 assuming you got completion of that set up 12:21:52 ais523, also one hint may have been that google said: "Did you mean: posix_fadvise" 12:21:53 yes, it does tab-complete, although man tabcompletion takes sufficiently long that I can sense the hesitation 12:21:56 right at the top 12:22:08 AnMaster: yes, but I assumed that it was just trying to fix typoes in programmer words again... 12:22:29 the tabcompletion over here is pretty good; it can tab-complete subversion and make too 12:22:36 so can mine 12:22:41 gentoo :) 12:22:53 (make is particularly interesting because it has to dive into the makefile to find out what make targets are available) 12:23:07 indeed 12:23:17 ais523, fails at included makefiles however 12:23:42 http://rafb.net/p/MURI6z45.html 12:23:46 pity, otherwise it might have been possible to prove tab-completion Turing-complete 12:23:50 ais523, the ones marked with star are enabled 12:24:03 very nitfy gentoo tool eselect 12:24:06 when it works 12:24:19 ais523, it is turing complete in fact 12:24:26 it is just a bash function 12:24:34 that returns a result 12:24:56 I mean without writing extensions for it 12:24:56 so you could make it handle included make files 12:25:03 as in, is the 'in the wild' version of tabcompletion TC? 12:25:05 heh 12:25:19 ais523, well if you make a patch and send it upstream? 12:25:27 that would be cheating 12:25:35 you can make any program TC like that 12:25:37 even /bin/true 12:25:41 hah 12:25:42 if you can somehow get the patch accepted 12:26:00 ais523, well no, just "look at included makefiles" patch 12:26:05 it would be an useful feature 12:35:01 -!- ais523 has quit ("leaving for a while, will be back later"). 12:58:39 -!- ais523 has joined. 13:06:02 -!- Tritonio_ has quit (Remote closed the connection). 13:06:58 ais523, hm is the C-INTERCAL website down? 13:07:34 Firefox can't establish a connection to the server at intercal.freeshell.org. 13:09:57 -!- Tritonio_ has joined. 13:10:55 -!- ais523_ has joined. 13:11:11 -!- ais523 has quit (Read error: 104 (Connection reset by peer)). 13:11:17 -!- ais523_ has changed nick to ais523. 13:11:34 sorry, my wireless dropped for a while 13:11:36 ais523, ais523, hm is the C-INTERCAL website down? Firefox can't establish a connection to the server at intercal.freeshell.org. 13:11:51 I think it is, because I can't get a connection either 13:11:58 ehird's mirror is up, though 13:12:11 (and that's the CLC-INTERCAL website, it just happens to host C-INTERCAL too) 13:13:16 ais523, wikipedia refers to C-INTERCAL on ESR's website, hm? 13:13:23 I think so 13:13:47 I mentioned intercal.freeshell.org on the talk page, but nobody answered, and I don't want to add it myself because I have a conflict of interest with respect to ir 13:13:48 he stopped maintaining it I see, but why not provide info to new source it 13:13:49 s/ir/it 13:13:55 s/$/\// 13:14:09 ais523, oh? so ESR still thinks he is maintaining it? 13:14:21 AnMaster: not sure 13:14:32 but if he reads alt.lang.intercal, then he'd know about the newer versions 13:14:39 the catb site hasn't been updated in ages AFAICT 13:15:00 ais523, does intercal have any PLEASE MAKE THIS WORK? 13:15:10 AnMaster: not exactly 13:15:12 heh 13:15:12 what isn't working? 13:15:28 ais523, anything anyone try to write in intercal ;) 13:15:35 AnMaster: not true 13:15:37 well apart from you 13:15:42 and a few more 13:15:46 hey, lots of people get INTERCAL programs to work! 13:15:54 in fact, nowadays I think they work more often than not, on average 13:16:04 hm 13:16:06 mostly because people tend to be conservative and stick to the J-INTERCAL command set 13:16:18 well I didn't mean compiler bugs 13:16:19 (i.e. INTERCAL-72 + COME FROM label) 13:16:24 AnMaster: neither did I 13:16:38 what about LOLINTERCAL? 13:16:42 lolcode + intercal 13:16:43 hrrm 13:16:54 PLEASE -> PLZ 13:16:56 and so on 13:17:11 AnMaster: that's a worrying thought 13:17:13 probably not worth it 13:17:17 haha 13:21:18 -!- Tritonio_ has quit ("Bye..."). 13:21:34 ais523, in fact lolintercal would be much easier than lolC 13:21:41 AnMaster: yes 13:21:48 because INTERCAL has so many keywords 13:22:02 I find DO and V are the hardest to avoid when CREATING new statements, though 13:23:09 eh 13:23:13 CREATING new statements? 13:23:20 it's new in 0.28 13:23:23 there's a CREATE command 13:23:26 are you saying you can create new keywords? 13:23:31 AnMaster: new commands 13:23:32 sounds like forth 13:23:39 which is not exactly the same as creating new keywords 13:23:43 hm ok 13:23:51 it took a while to figure out how to do it in a compiled language, though 13:24:13 (CLC-INTERCAL is interpreted, and the INTERCAL code itself is implemented entirely using its own version of CREATE) 13:24:39 but C-INTERCAL has to compile invalid commands speculatively in case they gain a meaning later 13:25:38 ais523, is C-INTERCAL slow or? 13:25:52 AnMaster: it's pretty fast for an INTERCAL compiler 13:25:56 considering it seems to love function pointers 13:26:04 in some cases you can convert C to INTERCAL, and get back what's almost the original C 13:26:19 hm 13:26:28 the function pointers are used to implement operand overloading; if you don't specify -a and don't use the / operator, they aren't used 13:26:45 likewise, if you don't use -m or -e, it does everything entirely without longjmp 13:27:01 the general rule is that things that could slow it down have their own command line option 13:27:20 (correction: if you don't use -m, -e, or variants on computed COME FROM, it does everything entirely without longjmp) 13:27:48 except that things don't have a command line option if they can easily be autodetected 13:27:56 hm 13:28:44 whoops, sorry, -v also turns on operand overloading, but it's rare to need that switch because it allows you to assign to constants, which tends not to lead to maintainable programs 13:31:13 hm 13:31:44 here's a simple example 13:31:58 suppose I compile the following program, with optimisation and debugging enabled: 13:32:04 DO .5 <- '?"'&"':2~:5'~'"'?"'?":5~:5"~"#65535$#65535"'~'#65535$#0'"$#32768'~'#0$#65535'"$"'?":5~:5"~"#65535$#65535"'~'#0$#65535'"'"$"':5~:5'~#1"'~#1"$#2'~#3 13:32:10 um 13:32:13 what does that do? 13:32:14 I can then type e 1 into the debugger 13:32:24 and it tells me what the line does (which is what it optimised to): 13:32:31 yuk007 e 1 13:32:31 C1: Expression is (0x2 - ((:2 > (:5 ^ :2)) & (! (! :5)))) 13:32:45 ok that is nifty, that it can tell that 13:32:51 still what is that useful for? 13:32:53 so it's part of a test for greater-than, which is not at all obvious by looking at the original INTERCAL 13:33:20 it was part of the original division routine in the system library 13:33:25 (arithmetic generally requires a loop) 13:33:27 ais523, to me it looks like more than "greater than"? 13:33:58 it's a greater-than-and-not-equal-to test, showing that the syslib's designers didn't really understand their own code themselves 13:34:02 it was part of the original division routine in the system library <-- well you could implement divide directly into the compiler, something like gcc's __builtin__ 13:34:03 ? 13:34:07 because the and-not-equal-to is redundant 13:34:09 AnMaster: I did 13:34:33 and INTERCAL used to use 1 and 2 as logic levels because they were easier to do conditional branches with 13:35:11 thus the 0x2 - at the start 13:35:33 ais523, compiled with -Os and then stripped cfunge is 51 kb btw 13:36:02 ick is 409 kb with -O2 and not stripped 13:36:04 the debug binary is around 986K heh 13:36:24 but it has lots of libraries that compiled programs link with, which are just as much a part of C-INTERCAL as the compiler is 13:36:27 ais523, anyway I seen far worse 13:36:33 do you know of the game supertux? 13:36:49 compile with plain -g, not even -ggdb3, the binary is over 50 MB! 13:36:59 I don't know of supertux 13:37:00 stripped the same binary is around 3 MB iirc 13:37:18 ais523, it is a mario like platform jumping 2D game, staring Tux 13:37:30 -rw-r--r-- 1 root root 106704 2008-04-03 11:35 /usr/local/lib/libick.a 13:37:30 -rw-r--r-- 1 root root 121872 2008-04-03 11:35 /usr/local/lib/libickec.a 13:37:30 -rw-r--r-- 1 root root 127390 2008-04-03 11:35 /usr/local/lib/libickmt.a 13:37:36 the libraries aren't too bad 13:37:41 hmm... what about the debugger? 13:37:52 -rw-r--r-- 1 root root 29128 2008-04-03 11:35 /usr/local/lib/libyuk.a 13:37:59 wow, it's smaller than yours 13:38:14 ais523, well that is not a binary 13:38:17 (again, you probably don't want to know why the debugger is stored in object code form, although you can probably guess) 13:38:28 ais523, no I'm happy I can't guess it 13:38:49 on the other hand, supertux is in C++, so that can explain the huge size of debugging data 13:39:57 yes, C++ is hard to debug naively 13:40:14 hmm... I wonder how much extra space in the executable C-INTERCAL debugging data takes up? 13:40:28 ais523, strip will take away symbol table too 13:40:38 and in C++ again that is rather large 13:40:45 consider long mangled names 13:41:09 when compiling with -y C-INTERCAL stores a line number map, explanations for each expression in the program, and the entire program source code in the executable 13:41:14 that has to take up some space 13:41:53 (that's how to avoid problems with list commands not finding files, or finding the wrong version; you just store the original source in the executable) 13:41:58 ais523, btw the 986 KB for cfunge with debug info is for -O0 -ggdb3 13:42:21 so it makes a big difference sizewise 13:42:27 ais523, is there any intercal quine? 13:42:37 AnMaster: yes 13:42:42 amazing 13:42:43 there's pit/quine.i in the C-INTERCAL distribution 13:42:57 it looks like the standard quinish stuff 13:43:11 lots of data in a predictable format that represents the rest of the code, followed by the code itself 13:44:22 normally using PLEASE on every fourth line is a copout (varying it is more aesthetic), but in the case of a quine program I can understand it 13:45:38 ais523, a large risk with the befunge bridge thing would be that all someone wrote in intercal was "invoke befunge" basically 13:45:52 AnMaster: I'm happy with that 13:45:56 because befunge seems way easier to program in ;P 13:46:05 AnMaster: they're good for different things 13:46:17 just try to write an 8-bit bit-reverse in Befunge, for instance 13:46:18 DO .5 <- '?"'&"':2~:5'~'"'?"'?":5~:5"~"#65535$#65535"'~'#65535$#0'"$#32768'~'#0$#65535'"$"'?":5~:5"~"#65535$#65535"'~'#0$#65535'"'"$"':5~:5'~#1"'~#1"$#2'~#3 13:46:22 not comparing numbers 13:46:29 agreed 13:46:30 very simple to do that in befunge 13:46:36 just try to write an 8-bit bit-reverse in Befunge, for instance 13:46:36 INTERCAL is bad at the ordinary sorts of arithmetic 13:46:37 hm 13:46:40 good question 13:46:47 it's very good at bitwise stuff, though 13:47:03 ais523, there are fingerprints for bitwise and/or/xor 13:47:07 so not that hard 13:47:27 yes, but it's just 3 lines of INTERCAL 13:47:30 and they're all the same line 13:47:41 here's the shortest addition I know of, by the way: 13:47:41 hm? 13:47:43 (1) DO COME FROM ".2~.2"~#1 WHILE :1 <- "'?.1$.2'~'"':1/.1$.2'~#0"$#65535'"$"'"'&.1$.2'~'#0$#65535'"$#0'~#32767$#1 13:47:51 22+ 13:47:52 :) 13:48:08 that line describes how to do long addition using the old school method 13:48:27 add corresponding bits, store the carries separately, left shift the carries and add to the result, repeat until the carry is 0 13:48:39 ais523, but why does it have a 2 there? I thought it used TWO for 2? 13:48:49 AnMaster: that's on input 13:48:53 ah 13:48:57 #2 is the constant 2, unless/until you assign to it 13:49:03 .2 is a 16-bit variable 13:49:08 which is not the same variable as .1 or .3 13:49:08 ais523, so you can't read strings from input? 13:49:19 AnMaster: yes you can, you just use a different input instruction 13:49:32 but you get the differences between consecutive characters 13:49:36 oh god 13:49:39 rather than the characters themselves 13:49:46 ais523, well the first one... 13:49:49 AnMaster: it could be worse, CLC-INTERCAL inputs in Baudot 13:49:56 what is Baudot? 13:50:07 5-bit communication system with shift codes 13:50:13 dates back to the days of teletypewriters 13:50:22 I see 13:50:42 yes, but it's just 3 lines of INTERCAL 13:50:42 hm 13:50:46 for reversing bits? 13:50:48 yes 13:51:07 what data type? 13:51:18 8-bit integer 13:51:21 ah 13:51:27 it's 4 lines for a 16-bit integer, 5 for a 32-bit integer 13:51:32 simple in C I think 13:51:40 I would say 'and so on' but there are no larger integers unless you simulate them yourself 13:51:49 AnMaster: C uses a similar looking method that differs in the details 13:52:27 in C you swap blocks of 4 bits, then 2 bits, then 1 bit 13:52:47 something like char in = 2, out = 0; for(i=0; i < 8; i++) { in <<= out < 1 } 13:52:50 or something like that 13:52:56 AnMaster: that's terribly inefficient 13:53:00 ais523, that is true 13:53:05 Or you just table-lookup. 13:53:17 fizzie, for 8 bit values certainly that would work 13:53:26 actually I would need 13:53:30 { in <<= out > 1 } 13:53:34 err 13:53:36 c = (c & 0x0f) << 4 | (c & 0xf0) >> 4; 13:53:36 { in <<= out >> 1 } 13:53:36 c = (c & 0x33) << 2 | (c & 0xcc) >> 2; 13:53:36 c = (c & 0x55) << 1 | (c & 0xaa) >> 1; 13:53:37 even 13:53:46 that's an 8-bit-reverse directly from cesspool.c 13:53:46 ais523, ok 13:54:00 ais523, now: what do you use 8-bit-reverse for? 13:54:14 well, character output has to be bit-reversed 13:54:17 err 13:54:18 ? 13:54:19 but its main use is for Fourier transforms 13:54:22 For 16-, 32- and 64-bit values you can use the 256-element table and swap the bytes while looking-up. 13:54:22 ah 13:54:24 and why the name "cesspool.c"? 13:54:31 fizzie, hm true 13:54:36 AnMaster: it's the runtime library, the name predates me 13:54:41 but most of the source files have names like that 13:54:44 ais523, I see....... 13:54:49 except the ones designed to include in other people's programs 13:54:52 I'm sure this link has been mentioned, but for C bit-twiddling, there's http://graphics.stanford.edu/~seander/bithacks.html 13:54:54 like ick_ec.h, which is sensible 13:54:57 ais523, does ick compile with -Wall -Werror? 13:55:00 DO .1 <- !1~#255'$!1~#65280' 13:55:00 DO .1 <- !1~#255'$!1~#65280' 13:55:00 DO .1 <- !1~#255'$!1~#65280' 13:55:00 DO .1 <- !1~#255'$!1~#65280' 13:55:01 -ansi too btw 13:55:09 oh and -pedantic 13:55:10 AnMaster: I already use -Wall 13:55:19 ais523, no warnings? 13:55:20 there's one warning, which is caused by the output from flex 13:55:26 For example, reversing a single byte with b = (b * 0x0202020202ULL & 0x010884422010ULL) % 1023; 13:55:28 -ansi makes it fail because it uses POSIX stuff 13:55:29 fair enough 13:55:49 ais523, -std=c99 -pedantic -Wall -Wextra? 13:55:56 fizzie: that's slow unless your system has a fast 64-bit multiply 13:55:59 ais523, or the set of warnings used by cfunge? 13:56:02 AnMaster: that still excludes POSIX stuff 13:56:21 ais523, not from headers no 13:56:24 but let me put it this way: I've personally reviewed all 8000 warnings that Splint came up with 13:56:38 and there are 2 valid ones left 13:56:43 ais523, just -D_POSIX_SOURCE or whatever 13:56:49 I don't want gnu extensions 13:56:57 fizzie: that's slow unless your system has a fast 64-bit multiply <-- well.... mine does I think 13:56:59 I don't use them 13:57:27 The few benchmarks I've seen seem to have looked like small table-lookups would be "fast enough", and they have the (dis)advantage of being very readable code. 13:57:31 ais523, splint is more or less crap due to needing stupid annotation IMO 13:57:36 except occasionally ({ ... }) to solve a preprocessing problem, but that was in the bit that needed gcc anyway 13:57:37 oh and the (void)puts thing 13:57:40 AnMaster: I added the annotations 13:58:02 ais523, I would never to my code, they make the code harder to read and therefore maintain 13:58:04 many of them are useful to humans too, because wherever I added a warning-suppress annotation I explained why my code was actually correct 13:58:27 and things like /*@null@*/ aren't too hard to read, and document the input taken by a function quite well 13:58:29 ais523, oh and splint fails on cfunge with parser error 13:58:32 due to C99 stuff 13:58:48 AnMaster: it fails on some of the INTERCAL files like that for no apparent reason 13:58:51 so I don't run it on those 13:59:05 ais523, well virtually all files for cfunge 13:59:12 as it fails on a global header 13:59:39 return (fungeVector) { .x = x, .y = y }; 13:59:40 BTW, the external calls code - which can be made standalone to allow COME FROM, etc., to be used in C programs - is as far as I can tell standard strictly conforming freestanding-legal C89 13:59:43 fails on that for example 13:59:46 apart from a few calls to printf 13:59:50 ais523, I mailed the author of splint a test case 14:00:06 and the use of stdint.h for uint16_t and uint32_t, which are easily typedefed in C89 14:00:10 ais523, who would want COME FROM in C? :( 14:00:29 AnMaster: not sure, but the ability to do computed COME FROMs is an interesting one 14:00:38 ais523, unreadable code 14:00:43 for C 14:00:51 for intercal it is fine 14:00:53 in C, though, they clobber your procedure's return address and all your auto variables, so you have no way to escape except by doing still more COME FROMs 14:00:55 but for normal C... 14:01:23 ais523, well -fstack-protector would HATE that 14:01:28 (you can also use NEXT/RESUME to encapsulate them, which are call/return from function in INTERCAL, with some INTERCAL-like twists as usual) 14:01:36 it checks that return address wasn't overwritten iirc 14:01:43 AnMaster: are you sure? I implemented it in standard strictly-conforming freestanding-legal C89 14:01:48 I don't overwrite the return address 14:01:57 I longjmp out of the function and recall it from elsewhere 14:01:58 ais523, well, you said it "clobber your procedure's return address" 14:02:05 ais523, hm 14:02:06 thus the return address ends up wrong 14:02:06 ok 14:02:23 this also explains why the auto variables go missing 14:02:34 with auto you mean? 14:02:48 well, auto's the default 14:03:01 non-register non-volatile? 14:03:03 it's a completely useless keyword, because it's illegal everywhere it isn't the default 14:03:18 AnMaster: register variables get lost too, and volatile makes no difference 14:03:27 static is fine, as is malloced storage and global storage 14:03:33 well that is what auto is "compiler selects" 14:04:22 ais523, just don't do that in cfunge code please 14:04:38 nowhere apart from the interface functions, if I can avoid it 14:05:00 as in, write my own functions that COME FROM the INTERCAL program and then call cfunge 14:05:11 ais523, if you make it so you can only return between instructions, and that doesn't include k, that must execute in one go, but as in main loop instruction 14:05:15 it should probably work fine 14:05:26 yes 14:05:39 although kNEXT ought to be able to work 14:05:40 just need to replace main loop code then with something else 14:05:56 kNEXT? that would iterate over kN only 14:06:31 I meant NEXT as in (whatever character represents NEXT) 14:06:45 which would be a single character in the fingerprint, presumably 14:06:47 well, you are on your own there 14:07:02 unless... unless you have to spell out COMEFROM in some direction in the Befunge code to do a COME FROM 14:07:02 making k work over t was a pain 14:07:09 ais523, ewww 14:07:22 ais523, that would be against the philosophy of funge 14:07:27 yep 14:07:34 that one char = one instruction 14:07:35 but somewhat within the philosophy of INTERCAL 14:07:46 the problem is where to draw the boundaries when linking the two languages 14:07:52 hm true 14:07:56 but I think it's best if each language keeps its own philopsophy 14:07:59 maybe an RPC interface? XD 14:08:09 except for INTERCAL flow control to link the two languages, whatever they are 14:08:14 yeah 14:08:21 that way, if you link INTERCAL, C, and Befunge, the Befunge can COME FROM the C, etc 14:08:29 in either case, doing it as a fingerprint will have problems with unloading, but I guess you can just let ppl load it again 14:08:44 yes, that would be the plan 14:09:17 ais523, also, how would you specify what thread to come from in? 14:09:23 or would it create a new ip each time? 14:09:39 multithreading doesn't mix well with external calls 14:09:39 new ip can only be created by duplicating an existing ip as it is now 14:09:58 INTERCAL multithreading (-m) conflicts with INTERCAL external calls (-e), for instance 14:10:01 ais523, ah skip -DCONCURRENT_FUNGE then iirc 14:10:02 so each program may only use one or the other 14:10:13 or something like that 14:10:17 cmake knows better :9 14:10:18 :)* 14:10:46 hmm... an INTERCAL fork bomb works correctly 14:10:56 (1) DO COME FROM (1) WHILE COME FROM (1) 14:11:10 of course, they don't break your computer because all the threads share one process 14:11:13 just like in Befunge 14:11:31 ais523, oh and patches are welcome as long as they are not intercal interface specific and 1) follow current coding style 2) gives no new valgrind error 3) works fine both with boehm-gc and without 14:11:32 (that's the closest I could get to the effect of kt, but it doesn't terminate) 14:11:50 AnMaster: I'm a bit busy at the moment, but I'll look into it sometime 14:11:55 ais523, also how would you handle q in befuge? 14:11:58 befunge* 14:12:11 AnMaster: the same as an exit() command in C 14:12:14 all programs exit 14:12:16 ais523, and with your C bridge, how do you handle _exit() 14:12:22 AnMaster: I exit 14:12:24 that is a "fast down" iirc 14:12:28 _exit != exit 14:12:30 in C 14:12:39 well, I exit without deallocating memory or closing filehandles, then 14:12:47 and the OS has to clean up 14:12:56 most OSs should be able to handle it 14:13:06 DOS couldn't, but you don't write _exit in DOS unless you know what you're doing 14:13:23 ais523, you wouldn't use DOS IF you know what you were doing ;P 14:13:39 AnMaster: some people like a challenge ;-) 14:14:01 well yes... but not write a OS from scratch instead 14:14:01 ? 14:14:26 AnMaster: no computers I dare to run it on 14:14:36 qemu 14:14:43 I have one program (the MiniMAX interp) written in machine code, but I've never dared run that either 14:14:53 ais523, again, qemu 14:15:04 sounds like an interesting idea, I may install it 14:15:15 ais523, or vmware or something similar 14:15:36 ais523, for decent performance with qemu you want kqemu too iirc 14:15:43 some kernel module for speeding things up a bit 14:19:34 ais523, would depending on complex.h be an issue for you? 14:19:43 considering CPLI fingerprint 14:19:47 probably not 14:19:47 -!- Judofyr has joined. 14:19:54 and I think even in recent versions gcc got issues with it 14:20:12 as in "not exactly the way C99 says it should be" 14:20:22 ais523, but well you could take a fingerprint out if you didn't like it 14:20:23 the only points of contact between your program and mine when I'm using the external calls system are ick_ec.h and my own linker 14:20:50 which basically just looks through the output of cpp and changes special predefined tokens into labels which point to each other in the right way 14:21:07 ./src/ick_ec.h 14:21:07 ./include/ick_ec.h 14:21:07 ?? 14:22:09 ais523, before you include it into cfunge fork thing, please make it stop depending on tab == 8 spaces 14:22:10 :/ 14:22:16 AnMaster: it doesn't 14:22:17 it is unreadable when tabstop is set at 4 14:22:25 oh, that 14:22:26 or two 14:22:31 I can M-x untabify if you like 14:22:38 but tab=8 is pretty much a standard for new code 14:22:40 ais523, well astyle is a great tool 14:22:50 ais523, see my tab standard in cfunge :) 14:22:54 it is way better IMO 14:22:56 tabs vs. spaces vs. tab=8, spaces for 2/4/6 is a matter of personal preference 14:23:05 and what a lot of modern code does 14:23:11 tab for each indent level 14:23:22 AnMaster: but sometimes I indent more than 8 levels 14:23:24 space to adjust to line up at parentheses after that 14:23:26 s/8/10/ 14:23:32 so that would be unreadable on an 80-character screen 14:23:58 ais523, hm? well just change tab stop then? 14:23:58 in the editor 14:24:10 AnMaster: tab set to anything other than 8 is evil 14:24:22 3 here \o 14:24:24 well in cfunge code you will have to live with that 14:24:29 because then other people's code will break at your end, and vice versa 14:24:38 Deewiant, indeed and 4 here, yet your code is perfectly readable 14:24:39 it's fine to indent by smaller amounts, and I usually do 14:24:41 ais523, no it won't 14:24:43 nothing will break if you use tabs correctly 14:24:53 tab for each indent level 14:24:54 as in, "indent by one level" instead of "go to next offset of N spaces" 14:25:05 then spaces after that to line up at parentheses 14:25:16 do not use tab after any non-whitespace on a line 14:25:28 that works perfectly 14:25:31 AnMaster: most INTERCAL code is written as a tab followed by a line 14:25:37 or a line label, then a tab, then the line 14:25:47 so you'll have a hard time reading it if tab != 8 14:25:50 ais523, we were discussing C here I think? 14:26:05 AnMaster: you mean your editor has different tab-stop settings for different types of input? 14:26:15 sure, very easy in emacs 14:26:18 so if you copy/paste a fragment of INTERCAL into a comment in a C file, it'll look different? 14:26:25 -*- mode: C; coding: utf-8; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- 14:26:32 is what I put at the top of every file 14:26:50 why does that not allow indent-style too? 14:26:57 ais523, eh? 14:27:01 I have to use eval to set the c-indent-style in the mode line 14:27:09 because writing c-indent-style:bsd doesn't work 14:27:12 ais523, ah well no idea 14:27:21 ais523, anyway I use my own indent style 14:27:24 not bsd at all 14:27:40 bsd's the best approximation to the one I use in Emacs' menus 14:27:43 from the kdevelop project file: 14:27:44 eakAll="0" PadParenthesesIn="0" IndentClasses="1" IndentBlocks="0" FillForce="0" /> 14:27:46 :) 14:27:51 and I generally just let it autoindent like that, fixing it myself if needed 14:28:02 ais523, see the astyle stuff from kdevelop 14:28:05 that is how I do it 14:28:16 I have indent installed, but it isn't very good 14:28:25 ais523, astyle is way better than indent 14:28:31 I guessed 14:30:38 bbl food 14:39:51 back 14:54:19 ais523, it seems those kdevelop options match astyle --indent-preprocessor --indent-namespaces --indent-labels --indent=tab=4 --max-instatement-indent=40 --brackets=linux --min-conditional-indent=1 --unpad=paren --indent-switches --pad=oper 14:54:23 not prefectly 14:54:28 but almost 14:54:36 * AnMaster tries to find what is missing 14:54:38 -!- RedDak has joined. 15:02:34 -!- shinkuzin has joined. 15:07:23 -!- RodgerTheGreat has joined. 15:13:34 AnMaster: astyle badly messes up some of the INTERCAL source files 15:14:00 no idea about that 15:14:20 it works for cfunge apart from a few cases 15:14:41 code compiles in both cases 15:14:46 see http://filebin.ca/mxyxwt/perpet.c 15:14:55 the indentation doesn't even finish at the left margin 15:15:03 (that was using your settings, by the way) 15:15:09 and all the comments are badly messed up 15:15:17 at least, the multi-line ones 15:15:34 ais523, I'd say that file is pretty messed up before 15:15:40 no it wasn't 15:16:03 if (tp->exechance != 100 && tp->exechance != -100) { /* AIS: The double-oh-seven operator prevents 15:16:04 coopt working. However, syslib contains a 15:16:04 well 15:16:15 having a comment at the end of the line like that is bad style 15:16:19 since it is multiline 15:16:20 see http://elliotthird.org/mirror/c-intercal/ick-0.28/src/perpet.c 15:16:27 AnMaster: it wasn't on the end of the line before 15:16:41 it was presumably on the same line as a { which was /below/ the IF 15:16:42 ais523, probably too many #ifdef confused it 15:16:44 s/IF/if/ 15:16:53 AnMaster: it's not the ifdefs that confuse it AFAICT 15:16:58 because the indentation is sane near them 15:17:06 well if you want the style where if and { are on different lines just change the options 15:17:28 having a comment after a { is pretty bad IMO 15:17:39 and why does it put seven spaces before the final }? 15:18:21 no clue 15:18:31 also, things like #ifdef are sometimes indented and sometimes aren't 15:18:33 ais523, it obviously failed at some construct in that file 15:19:09 ais523, about ifdef indention, astyle doesn't do that at all 15:19:15 so look in the original source for that 15:19:17 yes it does 15:19:22 --indent-preprocessor is only for: 15:19:26 --min-conditional-indent=1 15:19:29 #define foo(a,b) \ 15:19:32 blah blah 15:19:39 ais523, no --min-conditional-indent=1 is for normal if 15:19:40 like: 15:19:51 if (very long line blah blah && 15:19:55 here goes more 15:20:12 well, the bit starting with remspace -= strlen(" -lickec"); is completely screwed up 15:20:22 and it looks completely fine to me 15:20:28 maybe astyle doesn't like -=? 15:20:44 ais523, I'm quite sure it didn't cause issues for me 15:20:53 so probably it got confused somewhere before there 15:25:58 ais523, does it work on other source files? 15:26:09 feh2.c breaks slightly, but isn't too bad 15:26:23 and most "clean" source files 15:26:25 let me try unravel.c; I wrote that one entirely myself so its indentation was consistent beforehand 15:26:55 ais523, I don't think it got an issue with existing indention really, but it *does* with very very complex #ifdef 15:27:13 ie, where there is a { inside *one* #ifdef #else #endif 15:27:15 but not in the other 15:28:09 AnMaster: I don't do that normally (although there's one example in ick-wrap.c) 15:28:24 although I do it with ( in order to use snprintf if available and sprintf otherwise 15:28:41 ais523, that is very likely to confuse it 15:28:48 I'd use a varadic macro instead 15:28:52 it seemed to handle that bit fine 15:28:53 but then you would have C99 anyway 15:28:58 so wouldn't really help heh 15:29:00 but got confused later on 15:29:24 wow, it's really hard to read code with { on the same line as the if 15:29:28 also sometimes when {-nesting is not the same at the start of #ifdef and the end of the block 15:29:34 ais523, hm, change that 15:29:34 easy 15:29:40 just select another style 15:29:43 I know 15:29:51 but I was seeing how it worked on your style 15:30:02 --brackets=break maybe 15:30:07 I prefer --brackets=linux 15:30:27 ais523, I find it easier to read 15:30:40 lots of line with a single { on just confuses 15:30:45 locality of reading ;) 15:30:47 yes, when I was experimenting with my own styles I used --brackets=break 15:30:58 and anyway, astyle got lots of options 15:31:05 but it's hard to tell between a multiline if and a single-line if when the { is hidden at the end of the preceding line 15:31:13 you have to look down a couple more lines to tell what the scope of the if is 15:31:19 and it's worse if there are comments in between 15:31:22 hm 15:32:15 ais523, I work at 1400x1050, 20", something like Courier New, font size 10 15:32:34 that would explain why you got away with so much indentation 15:32:40 I tend to stick to 80-char lines 15:32:40 slight antialias, with the patent encumbered hinting on 15:32:57 ais523, well I try to not go above 80 chars in README and such 15:32:58 that's full screen in DOS, but one typical-sized Emacs window on Linux 15:33:11 (it loads at 80 chars wide unless/until I resize it) 15:33:18 ais523, you can change default size in .emacs iirc 15:33:26 yes, but I like this default 15:33:29 I think I display around 120 chars wide 15:33:49 but, in kate I got a think grey vertical line at column 80 15:33:57 don't know if that is possible in emacs 15:34:06 it probably is 15:34:14 but I find that sort of setting very hard to find 15:34:22 because it doesn't seem to be in Customize for some reason 15:34:24 yeah and wouldn't work in non-X mode 15:34:45 I use both text mode and X mode 15:34:47 quite a lot 15:35:02 ais523, anyway with tab stop 4 my code doesn't look bad 15:35:20 for bash I even use tab stop 2 15:35:21 :) 15:35:25 I prefer 2 for C because I'm horizontal-space-challenged 15:35:31 I've been known to use 1 for Brainfuck 15:36:37 hah 15:36:48 ais523, well then just set tab stop 2 15:36:50 very easy 15:37:06 AnMaster: yes, changing indentation size is rarely a problem 15:38:00 anyway I checked with tab stop 4 in interpreter.c, of a total of 607 lines, just 13 lines are wider than 80 chars 15:38:05 and those are mostly long strings 15:38:06 like 15:38:15 fprintf(stderr, 15:38:15 "WARN: Unknown instruction at x=%" FUNGEVECTORPRI " y=%" FUNGEVECTORPRI ": %c (%" FUNGEDATAPRI ")\n", 15:38:15 ip->position.x, ip->position.y, (char)opcode, opcode); 15:38:32 hard to break such up, breaking a string up is not something I like 15:39:38 ais523, I don't know if astyle can do it, but I know indent can: put the return type on a different line from the rest 15:39:39 like: 15:39:48 static inline void 15:39:49 PrintUnknownInstrWarn(FUNGEDATATYPE opcode, instructionPointer * restrict ip) 15:39:51 { 15:39:51 code 15:39:52 } 15:39:55 ais523, ^ 15:40:09 don't think astyle will change current such line break 15:40:15 gnu indent can do it 15:40:25 astyle doesn't mess with line breaks at all, apart from at { } and ; 15:40:35 indent goes further than astyle does in terms of messing around with the code 15:40:46 ais523, well it can be set to add newlines on stuff like: 15:40:54 foo(x); bar(y); 15:41:01 or { blah blah } 15:41:10 ah yes that's what you said 15:41:17 * AnMaster should read properly first heh 15:41:37 * ais523 is running their Brainfuck reindenter on Lost Kingdoms to see if it works 15:41:50 I spotted one bug already: blank lines in the source break it 15:42:00 ais523, oh? link to that reindenter? 15:42:22 I pasted it once, but it'll be easier to paste it again than to find the link 15:42:24 ais523, well lost kingdoms will be a mess 15:42:31 it's a part of my collection of esolang modes for Emacs 15:42:37 it was auto generated after all 15:42:45 from basic I think 15:42:53 yes, I know 15:43:02 but it'll be a good test case, I hope 15:43:11 mhm 15:43:12 torture-test case, if nothing else 15:43:20 hahah 15:43:23 I've had the idea of converting it to Fugue at some point 15:43:34 but that would last several years in terms of the generated music 15:43:47 and I'll need to come up with a portable way to do it 15:43:47 well brainfuck already lacks very much context info 15:43:52 so it would expand even more 15:44:04 basic to befunge directly would probably work better 15:44:05 Prelude is normally shorter than BF because you can optimise constants 15:44:15 Prelude? 15:44:21 some IDS isn't it? 15:44:23 Prelude converts to Fugue 15:44:31 ah, you misread Fugue as Funge 15:44:39 ais523, ah yes I did 15:44:42 it's a music-based programming language 15:44:46 ah I see 15:44:59 I wrote a hello world in it, compiled from BF 15:45:09 I see 15:45:21 I managed to make a compiler system, but it was sufficiently nonportable that I don't think it would run on any computer other than the one it ran on 15:45:31 I see 15:45:39 ais523, not posix then? 15:45:54 -!- shinkuzin has quit (Read error: 113 (No route to host)). 15:46:02 I generated output in a Fugue precursor output, then used VBA on Word to generate a stream of keystrokes that would type the output into a proprietary MIDI editor that happened to be on that computer 15:46:17 and I had to heavily customise its keymappings first to avoid needing to use control or alt 15:46:20 eww 15:46:33 I'll have to find a better way 15:46:39 ais523, why not just generate midi using some library for it? 15:46:51 I think there are libraries for midi 15:46:53 AnMaster: this was back in my Windows days 15:46:58 ah 15:47:00 the concept of using external libraries was a joke, more or less 15:47:13 ais523, yeah dll is a joke 15:47:18 apart from system dlls 15:47:25 no, they're jokes too 15:47:30 ais523, well ppl use them 15:47:41 only because they have no choice 15:47:45 yeah 15:48:15 ais523, well rosegarden or timidity must have midi parsing code 15:48:28 one is a editor for midi (rosegarden, KDE based) 15:48:38 yes, I have both installed 15:48:40 and the other is a software midi player 15:48:51 anyway, here it is: http://pastebin.ca/969225 15:48:56 it's still a little buggy, though 15:49:10 well timidity is certainly buggy yes 15:49:16 I use hardware based midi :) 15:49:32 it wasn't timidity I was referring to, which I'm pretty fond of 15:49:37 but to esolangs.el, which I just pasted 15:49:40 # 15:49:41 ("(:\\*)" . font-lock-constant-face) 15:49:41 # 15:49:41 ("(::\\*\\*)" . font-lock-constant-face) 15:49:41 # 15:49:41 ("(:::\\*\\*\\*)" . font-lock-constant-face) 15:49:43 # 15:49:45 ("(::::\\*\\*\\*\\*)" . font-lock-constant-face) 15:49:47 huh? 15:49:51 it goes on like that 15:50:50 AnMaster: because Emacs regexps aren't very powerful 15:50:56 so they can't recognise Underload constants 15:51:02 ah 15:51:27 ais523, are you sure there are no pcre bindings or such for emacs? 15:51:40 I seem to recall that there are python bindings 15:51:44 pymacs or something 15:51:53 probably, but they don't hook into Font Lock AFAIK 15:52:11 hm ok true 15:52:52 how much Emacs-lisp do you know? 15:52:55 I'm not very good at it 15:53:33 although I have resorted to evil tricks in the past, like doing string processing on numbers because Emacs couldn't handle them as numbers due to it not supporting a full 32-bit range for integers 15:54:51 how much Emacs-lisp do you know? 15:54:53 not much 15:55:07 just coded a bit for erc 15:55:13 so not very much indeed 15:55:21 pity, I was hoping someone who knew more than me could go through it and say "you're doing it all wrong! you should be doing it like this!" 15:55:32 tried #emacs ? 15:55:56 it's not really worth bothering them with something as pointless as esolangs.el until the code is a bit more mature 15:56:12 (e.g. the BF indenter failing on blank lines problem, but I think I know what's causing that) 15:56:38 it doesn't support GNU-style indentation, though, just the equivalents of K&R and BSD, and any mix between them 15:57:08 it preserves newlines and doesn't add new ones, at the moment, so they determine what sort of indentation is wanted 15:57:47 although I'm planning to add an auto-indenter that sorts out newlines: remove existing newlines, change [ and ] to \n[\n and \n]\n, change \n[\n-\n]\n to [-], and reindent 16:01:08 BTW, C-g seems to fail as an interrupt key on GTK Emacs on Ubuntu, which is annoying 16:01:53 typedef int bigint_t __attribute__ ((__mode__ (__TI__))); <-- seems that give 128 bit integers, a gcc hack of course 16:01:55 hm... 16:02:56 ais523, no idea about gtk emacs 16:03:21 AnMaster: gcc should support 2^n bit integers for all n >= 3 16:03:26 I doubt it does, though 16:03:28 __int128_t hm __uint128_t 16:03:38 ais523, "should"? 16:03:44 and what should the types be called? 16:03:45 in my opinion 16:03:51 and why not just use int128_t? 16:03:58 it's reserved by C99 for that purpose 16:04:04 no clue 16:04:09 an implementation is allowed to define intanything_t 16:04:24 for any positive integral value of anything that's a multiple of CHAR_BIT 16:04:29 int12_and_a_half_t? 16:04:42 oh wait that sounds like TURKY BOMB 16:04:44 the _least and _fast versions can have any positive integral value because padding is allowed 16:04:59 ais523, I still want an "_most" 16:05:07 to define not bigger than this 16:05:46 int_most16_t would therefore be int on DOS, short on Linux, and not implementable at all on some 32 bit DSPs? 16:05:48 ais523, anyway I lack any clue about printf modifier for int128_t 16:06:01 ais523, aye that would be the case 16:06:09 ais523, it could be char too 16:06:12 if they had used int128_t, then they would have put a relevant printf modifier in stdint.h 16:06:14 as I said at most 16:06:24 CHAR_BIT is 32 on some DSps 16:06:30 ouch 16:06:49 ais523, so a byte there is 32 bits XD 16:06:52 yes 16:07:01 they can't sensibly address anything smaller without using bitwise arithmetic 16:07:02 what is a DSP exactly 16:07:07 digital signal processor 16:07:22 hm 16:07:22 a bit of hardware designed to do numerical computations that are useful for processing signals 16:07:34 so they're really good at doing Fourier Transforms, for instance 16:07:47 generally speaking they have some ridiculously specific asm instructions 16:08:09 And fancy addressing modes, like hardware-based circular buffer access. 16:08:21 yes, and I've actually used bit-reversed addressing 16:08:30 $ grep -R int128 /usr/include/ 16:08:30 /usr/include/valgrind/libvex_ir.h: Ijk_Sys_int128, /* amd64/x86 'int $0x80' */ 16:08:31 that is all 16:08:35 interesting 16:08:53 and that one is not even related 16:09:14 -!- jix has joined. 16:09:23 AnMaster: I got exactly the same results as you on that grep 16:09:52 $ grep -R int128 /usr/x86_64-pc-linux-gnu/ 16:09:57 hits some binary matches 16:10:09 $ strings /usr/x86_64-pc-linux-gnu/bin/strip | grep int128 16:10:10 unsigned __int128 16:10:11 nice 16:11:31 dsp can also mean digital signal processing in general, not necessarily hardware 16:11:49 heh, when I run strings on ick I get the error message Failed! almost at the end 16:11:55 generally speaking they have some ridiculously specific asm instructions 16:11:56 like? 16:12:07 ais523, hahah 16:12:23 (rnd >= 0) && (rnd <= 3) 16:12:29 debugging data 16:12:55 multiply together two registers and add the result to an accumulator, then load those two registers from memory through two pointers which are then incremented, then optionally store the value of another accumulator into memory 16:13:04 ais523, nice on a stripped binary I get a list of fingerprints at the end 16:13:05 but 16:13:07 they are reversed 16:13:08 that's a single asm instruction 16:13:14 as in SYOT 16:13:15 for TOYS 16:13:28 and the source doesn't have reversed fingerprint names anywhere 16:13:50 ais523, ok that is crazy 16:13:53 oh, you can also subtract from the accumulator instead of add, and you can add or subtract 1, 2, or 3 words from the pointers rather than just incrementing 16:13:58 ais523, what is the use for such an instruction? 16:14:05 AnMaster: it actually has lots of uses 16:14:10 oh? 16:14:15 generally speaking you run it in a loop 16:14:22 I see and? 16:14:24 to do things like multiplying matrices 16:14:41 and lots of calculations can be written in terms of multiplying matrices 16:14:41 hm 16:15:02 I've also seen it be used to take the squared magnitude of all complex numbers in a vector 16:15:06 why have you programmed for DSPs? 16:15:13 university project 16:15:16 ah 16:15:31 although I did get a stripped-down version of INTERCAL running on PICs 16:15:35 so can a DSP do normal stuff? 16:15:35 which are even less powerful 16:15:40 AnMaster: yes, but not very well 16:15:46 ais523, I know what a PIC is yes, 16:15:47 because they tend not to have much memory 16:15:52 I used one very simple once 16:15:55 12Fsomething 16:15:56 say a few kilobytes of RAM at once 16:16:01 12F6*? 16:16:08 AnMaster: I generally use the 16F series 16:16:20 12F would be even more primitive 16:16:21 anyway I remember the serial port interrupt routine *shudder* 16:16:29 ais523, it was, 32 instructions I think 16:16:41 that sort of thing is enough to make me write the serial port routines in software 16:16:53 ais523, I did write one, in asm yes 16:17:07 the university has a C to PIC compiler 16:17:15 but it was buggy and I preferred to write in asm 16:17:16 ais523, well with 1 kb ram... 16:17:24 eh 16:17:28 1 kb program memory 16:17:31 even less ram 16:17:33 on a PIC, the RAM is measured in tens of bytes, normally 16:17:44 I vaguely remember that one version I used had 56 bytes memory 16:17:47 but most of them have more 16:17:49 ais523, yeah, don't remember exactly 16:18:14 this explains why in PIC-INTERCAL, the NEXT stack has only 16 entries, and STASHes are limited to one member 16:18:16 12F629 it seems 16:18:30 and I store abstention statuses in 1-bit integers to save space 16:18:49 there is no such thing in C unless you use a bitfield, but some PIC C compilers support them anyway because they're so useful 16:19:06 hah 16:19:26 ais523, but you can't adress on bit-basis in pic iirc? 16:19:28 or can you? 16:19:35 you can 16:19:35 I think it was using bytes of some size 16:19:38 using bitwise instructions 16:19:38 hm 16:19:43 yeah 16:19:48 there's a 'skip if bit n of register r is 0' instruction 16:19:53 you can on anything with bitwise 16:20:00 which is bitwise addressing, but only for literal addresses 16:20:03 but I mean, you can't take a pointer to a bit 16:20:03 you can't have bitwise pointers 16:20:32 ais523, well I think you could on some historical systems heh 16:20:37 but INDF is a bit of a tricky way to emulate pointers anyway, especially if they're nested 16:20:46 e.g. a->b->c 16:20:49 true 16:21:03 it's useful for accessing things in the wrong bank, though; that's often faster than bank switching 16:21:04 ais523, anyway it was years ago I coded for PIC 16:21:14 don't even remember most of the asm opcodes 16:21:23 I can still remember many of them 16:21:37 PIC asm is much better than x86 asm 16:21:43 well yes 16:21:45 it is RISC 16:21:50 x86 is CISC 16:21:59 so so much more to keep track of on x86 16:23:01 well, x86 isn't nearly as CISC as DSPs can be 16:23:09 it's more a medium instruction set computer 16:23:15 hm 16:23:33 ais523, where is the source of PIC-INTERCAL? 16:23:42 it's in the C-INTERCAL compiler 16:23:43 ick -P 16:23:54 but most of the advanced features are disabled if you do that 16:23:56 hm 16:24:31 (INTERCAL parsing is sufficiently bad that other dialects of INTERCAL tend to get bolted onto something that has an INTERCAL parser built-in already) 16:24:47 hahah 16:25:03 Incidentally, I've done an university project DSP programming thing too, for our "Digital Signal Processors and Audio Signal Processing" course. 16:25:11 ais523, isn't it just a case of a bison/lex/yacc/whatever file 16:25:17 I can't remember which does what of them 16:25:22 AnMaster: have you /read/ it? 16:25:35 ais523, nop I haven't looked at ick source 16:25:44 the parsing takes place both in the flex file and in the bison file 16:26:07 ais523, well what exactly is the difference between flex, bison and yacc? 16:26:10 and there are interactions both ways for various complicated reasons 16:26:16 flex generates lexical analysers 16:26:26 so you give it a stream of characters, and it generates tokens 16:26:30 ah ok 16:26:35 bison takes the tokens and gives you a parse tree from them 16:26:46 and yacc is the program that bison was based on, and is older 16:26:52 ah 16:27:18 ais523, I have seen programs that bison fail at, and only byacc can handle 16:27:35 yes, the two languages are slightly different 16:27:46 but hopefully parser.y works in both bison and yacc 16:28:18 ais523, well the file in question didn't work under normal yacc either, it needed byacc 16:28:29 it's a bit like writing files that are valid C and also valid C++; you can /almost/ do it just by writing C, but there are pitfalls to watch out for 16:28:51 AnMaster: I can sort of imagine how to write a file like that, but it's hard to see how one would go about doing it accidentally 16:29:06 ais523, no clue, it was from some shell 16:29:21 netbsd mksh or something unusal like that 16:29:25 don't remember exactly 16:29:36 -!- oklopol has joined. 16:29:38 I have a collections of shells with an automated building system for them 16:29:50 ais523, the build system unpacks and so on, written in bash 16:30:07 have you seen dd/sh? 16:30:17 I do have a few called sh 16:30:23 $ ls /home/arvid/shells/ 16:30:23 README akanga bash ccsh dash fish ksh93 oksh pdksh psh sash sh shellbuild-lib tcsh 16:30:23 STATUS ash build compile-tools es ftsh mksh osh posh rc scsh shellbuild shish zsh 16:30:47 http://intercal.freeshell.org/ talks about what's effectively an esolang that they call dd/sh, which is basically POSIX sh + its builtins + dd 16:30:57 ais523, ah it was some ash variant that needed byacc 16:31:08 the result is Turing-complete and bf-complete, although they recommend that you also use rm to avoid a tempfile leak 16:31:47 anyway you can code lots of things with just shell built ins 16:31:56 at least if you use bash or ksh or some other modern shell 16:32:17 zsh you can even do a irc *client* in pure zsh 16:32:30 may be possible in bash but I wouldn't know how 16:32:40 bash has no way to select AFAIK 16:32:44 zsh was always better at piping 16:32:47 ais523, yeah 16:32:54 There's at least one IRC client in bash. 16:32:55 you can do loadables in bash however 16:33:02 fizzie, pure bash? 16:33:07 and irc client, not bot 16:33:12 I wrote an irc bot in bash 16:33:13 works fine 16:33:18 bots are easier 16:33:22 indeed 16:33:46 I got ThutuBot to connect to freenode on several occasions, but I never managed to get it to join a channel 16:34:07 I think it was confused by spurious control chars coming out of telnet, but am not sure 16:34:28 I'm quite sure it was pure bash; and a client, yes; I used it because it was the smallest binary to download with a GPRS link. I just can't seem to remember the name. 16:34:47 a file written in pure bash isn't exactly a 'binary' 16:35:03 ais523, you should have used netcat 16:35:13 yes, I probably should 16:35:21 how do you use netcat to get a two-way link going? 16:35:36 ais523, see how envbot does it? 16:35:52 where's the link to envbot source? 16:36:05 http://envbot.org/trac/browser/anmaster-trunk/transport 16:36:11 select the netcat module I guess 16:36:25 ais523, it does use some named fifos 16:36:28 don't worry about it 16:36:39 no, I was using them too 16:36:50 although I did make a named fifo alternative script for a University project 16:37:06 eh? 16:37:07 that was a wrapper around a shell command that opened various pipes and told it the file descriptors of the ends 16:37:35 as you can see from the comment, I recommend other tools 16:37:55 According to my irclogs I had to port the bash IRC client to use netcat instead of the /dev/tcp/foo pseudo-files because Debian's bash is compiled without those. But I _still_ haven't mentioned the name of the client in that conversation. 16:38:14 fizzie: that's pretty impressive 16:38:49 fizzie, well yes, I know debian is stupid 16:39:00 there are various rants in envbot source about it 16:39:50 42 dev-tcp: 16:39:50 43 The bash you use must support the pseudo device /dev/tcp. Debian is known 16:39:50 44 to disable this. Most other distros are sane and have it on. 16:39:53 http://envbot.org/trac/browser/anmaster-trunk/README 16:39:56 just one example 16:40:20 -!- ais523_ has joined. 16:40:30 OK, this is me online using netcat 16:40:36 hah 16:40:42 Heh, I've been trying to find the client name earlier, too; my irclogs have something like (translated) "I wonder what was the name of that bash irc client. Can only find discussion about it, not the name of the thing." 16:40:43 backspace may not work 16:40:46 doesn't strike me as being very different from telnet 16:41:00 let me test: b 16:41:09 said b yes? 16:41:16 yes, it works, I think it's reading from stdin 16:41:25 I typed a backspace b 16:41:33 ah 16:41:41 ais523, of course it reads from stdin 16:41:43 and I'm benefitting from stdin's line-buffering 16:41:46 where else would it read from? 16:42:09 * AnMaster wonders if you can do ctcp here? 16:42:14 ais523, ^ 16:42:41 * ais523_ gets annoyed at AnMaster for sending them lots of CTCPs 16:42:48 two= 16:42:51 that isn't lots 16:42:57 three 16:43:05 nah the first was a /me 16:43:06 you did an ACTION immediately beforehand 16:43:09 yes 16:43:19 ais523, but most real clients doesn't show it as ctcp 16:43:23 and it arrived here, therefore you sent me three CTCPs 16:43:35 ais523, servers with channel modes that block ctcps, does not block /me 16:44:07 maybe they should if they're sent to an individual user rather than a channel 16:44:24 nop they don't 16:44:36 but I suppose that blocking messages like VERSION sent to a channel would be even more important than blocking them against individual users 16:44:43 ais523, yeah 16:45:00 the CTCP spec says that I'm meant to be able to put a CTCP in the middle of a line! Why did nobody respond? 16:45:01 they do block ctcp (anything but ACTION) 16:45:14 ais523, because most clients do not understand that 16:45:27 mine showed a small box with \001 in it 16:45:29 this is as bad as that technically-correct-SGML website that someone, I think maybe pikhq, linked to a while ago 16:45:41 ais523, oh? link? 16:45:53 http://pikhq.nonlogic.org/test.html 16:45:53 it validated, but with lots of warnings about most browsers not understanding it 16:46:07 http://pikhq.nonlogic.org/test.html 16:46:20 ais523, as Deewiant just said 16:46:39 yes, messages can cross quite effectively on IRC 16:46:54 especially when I'm not paying attention in an effort to finish typing my message 16:47:05 or in this case copy/pasting 16:47:46 -!- ais523_ has left (?). 16:48:41 ais523, of the browsers I tried only lynx could show that page 16:49:02 AnMaster: that single line deserves to be qdb'd 16:49:04 I tried: firefox, konqueor, links2, w3m and lynx 16:49:18 I think the client might've been this one, but the code really isn't very impressive. It seems to just sort-of alternate between reading the stdin and the IRC fd. http://www.darkwired.org/~dodo/code/junk/pre/bairc/releases/bairc-1.3.bash 16:49:23 ais523, haha 16:49:37 ais523, don't have elinks installed 16:52:04 elinks doesn't seem to like it. 16:52:15 ok 16:52:18 lynx is best 16:52:25 Firefox just shows a blank page with no title 16:52:38 ais523, same as all the others did basically 16:52:49 except lynx 16:52:57 Elinks shows "" as the title, a ""-labeled link to http://pikhq.nonlogic.org/foo and the text " ". 16:53:32 the link works in lynx 16:54:05 I actually visited that link in fizzie's comment, and started laughing 16:54:31 My version of lynx makes the whole "This stuff doesn't show at all, but only because HTML renderers suck." text the link, and the "Valid link" text isn't shown. Not quite sure how it's supposed to work, though. 16:54:47 fizzie, ah true 16:54:55 -!- thutubot has joined. 16:54:56 fizzie, but way better than the others 16:54:59 yay! 16:55:11 now I just have to remember which commands I programmed into it 16:55:12 ais523, fizzie someone should file a bug to mozilla about that page breaking ;) 16:55:14 \hello 16:55:14 Hello, ais523! 16:55:17 \helop 16:55:19 \help 16:55:22 \hello 16:55:23 Hello, AnMaster! 16:55:28 I think it's just got \hello and \quit at the moment 16:55:32 \quit 16:55:32 -!- thutubot has quit (Client Quit). 16:55:35 ah yes it does 16:55:36 What, no "!list"? 16:55:38 (sorry) 16:55:54 now I have to come up with something useful to do with the world's first IRC bot written in Thutu 16:56:12 ais523, is it same as thue? 16:56:14 or? 16:56:19 no, it's my own language 16:56:26 think of it as Thue with regular expressions and flow control 16:56:29 http://esolangs.org/wiki/Thutu 16:57:53 ais523, isn't Thue turing complete? 16:58:01 so you could write a irc bot in thue? 16:58:06 it's Turing-complete 16:58:10 but I'm not sure about BF-complete 16:58:14 hm ok 16:58:15 because its I/O is somewhat primitive 16:58:28 Thutu is nicer to work with, anyway 16:58:41 btw it would be possible to do a irc bot in befunge without any external tool 16:58:43 just painful 16:58:58 there is the SOCK fingerprint 17:07:04 -!- thutubot has joined. 17:07:15 \ul (:aSS):aSS 17:07:15 (:aSS):aSS 17:07:26 \ul (x):::::*****S 17:07:27 xxxxxx 17:07:43 be careful with it, though, it'll go into an infinite loop on most invalid input 17:07:47 to \ul, that is 17:08:50 actually, I'm not sure, maybe it'll just reply with garbage 17:08:58 \ul (((unbalanced 17:09:08 \ul (did I break it?)S 17:09:17 yes, it goes into an infinite loop 17:09:21 -!- thutubot has quit (Remote closed the connection). 17:09:32 -!- thutubot has joined. 17:10:41 !daemon ul bf http://pastebin.ca/raw/367774 17:11:26 \ul ((!ul )Sa(\ul )~*aS(:^)S):^ 17:11:27 !ul (\ul ((!ul )Sa(\ul )~*aS(:^)S)):^ 17:11:41 !ul (EgoBot, are you working?)S 17:11:43 EgoBot, are you working? 17:11:56 OK, there must have been a mistake in the input I gave to ThutuBot 17:12:06 oh, of course 17:12:45 \ul ((!ul )Sa(\ul )~*(:^)*aS(S)S):^ 17:12:45 !ul (\ul ((!ul )Sa(\ul )~*(:^)*aS(S)S):^)S 17:12:47 ul ((!ul )Sa(ul )~*(:^)*aS(S)S):^ 17:13:14 hmm, Egobot's mishandling backslashes. That could be bad for this... 17:13:29 escape it? 17:13:44 writing a quine that escapes backslashes in itself is harder 17:13:53 because all characters are given literally in Underload 17:14:05 maybe I should just switch thutubot to a different escape character 17:14:07 \quit 17:14:07 -!- thutubot has quit (Client Quit). 17:15:31 -!- thutubot has joined. 17:15:35 +hello 17:15:35 Hello, ais523! 17:15:43 +ul ((!ul )Sa(+ul )~*(:^)*aS(S)S):^ 17:15:44 !ul (+ul ((!ul )Sa(+ul )~*(:^)*aS(S)S):^)S 17:15:47 +ul ((!ul )Sa(+ul )~*(:^)*aS(S)S):^ 17:15:47 !ul (+ul ((!ul )Sa(+ul )~*(:^)*aS(S)S):^)S 17:15:49 +ul ((!ul )Sa(+ul )~*(:^)*aS(S)S):^ 17:15:49 !ul (+ul ((!ul )Sa(+ul )~*(:^)*aS(S)S):^)S 17:15:51 +ul ((!ul )Sa(+ul )~*(:^)*aS(S)S):^ 17:15:51 !ul (+ul ((!ul )Sa(+ul )~*(:^)*aS(S)S):^)S 17:15:52 \quit 17:15:53 spam 17:15:53 +ul ((!ul )Sa(+ul )~*(:^)*aS(S)S):^ 17:15:53 !ul (+ul ((!ul )Sa(+ul )~*(:^)*aS(S)S):^)S 17:15:55 +ul ((!ul )Sa(+ul )~*(:^)*aS(S)S):^ 17:15:55 !ul (+ul ((!ul )Sa(+ul )~*(:^)*aS(S)S):^)S 17:15:57 +quit 17:15:57 -!- thutubot has quit (Client Quit). 17:15:57 +ul ((!ul )Sa(+ul )~*(:^)*aS(S)S):^ 17:15:58 +quit 17:16:11 well, it works, anyway 17:16:29 -!- thutubot has joined. 17:16:39 that's the first time I've done a bot loop in pure Underload, I think 17:17:08 and it's meta-esolangy because the thutubot Underload interp's written in Thutu, and the EgoBot Underload interp's written in Brainfuck (by Keymaker) 17:22:59 -!- CakeProphet has joined. 17:23:44 Hello, CakeProphet! 17:23:58 yay, oklotalk has a parse 17:23:59 r 17:24:03 :) 17:24:04 :D 17:24:06 :) 17:24:07 :D 17:24:10 Hello you bastards. 17:24:20 * ais523 has written an IRC bot in Thutu 17:24:22 even CakeProphet may have heard about oklotalk, it's just taken me that long. 17:24:25 which runs Underload programs 17:24:31 ais523: cewl :D 17:24:37 oklopol: I'm vaguely aware of it 17:24:43 but can't remember much about what it does 17:24:47 oklotalk? 17:24:48 +ul (:aSS):aSS 17:24:48 (:aSS):aSS 17:24:53 oklopol: yes 17:25:00 well it's a fairly large thing 17:25:15 currently, i just have a prefix-kinda parser for it 17:25:23 because the actual parsing is not that easy 17:25:25 ....no. no I have not. 17:25:46 does anyone want to start a life insurance company with me? I have a brilliant idea to defeat all competition. 17:25:47 current factorial (= fact {(-> 1 1) (-> n (* n (out (' (- n 1)))))}) (fact 4) 17:26:18 with actual oklotalk parsing it would be,,, 17:26:36 looks like demented Lisp. 17:26:44 fact={1->1;N->N*out'(n-1)};fact 4 17:26:57 CakeProphet: it's sexps, so, duh 17:27:15 rofl... sexps. What a dirty phrase. 17:27:23 I have a massive lang project which is about 2/3 of a spec and a parser at the moment 17:27:29 Did you know Christianity has a lot of sects? 17:27:38 so probably at the same stage as oklotalk 17:27:40 oklotalk doesn't have much to do with lisps 17:27:54 it's just sexps are trivial to parse 17:28:16 yes 17:28:23 I suppose that Underload uses sexps in theory 17:28:42 but it's really just that balanced parens are the only things in the syntax that don't parse as single characters 17:29:09 well then it has nested structures, that's not really sexps automatically 17:29:22 sexps = balanced parens, mostly, in my view 17:29:24 i think sexp implies (verb object object*) 17:29:30 so... when I start a life insurance company. 17:29:31 although I'm sure that a Lisper would tell me that I was wrong on that 17:29:31 is that so? 17:29:39 I am going to hire assassins to murder people who use other company's plans. 17:29:47 until the company's go out of business from having to pay out so much 17:29:47 well, then i'd say almost every language uses sexps 17:29:55 CakeProphet: as a loss-leader kind of thing? 17:29:56 (oklotalk doesn't, still) 17:30:03 ...yes. 17:30:37 -!- RedDak has quit (Read error: 104 (Connection reset by peer)). 17:30:49 the same concept could be applied to auto insurance. Simply sabotage people's vehicles in order to cause accidents. 17:31:15 ...but not flood insurance. Unless you can bomb some kind of dam or levi. 17:31:28 CakeProphet: or control the weather 17:31:34 that also 17:31:34 but that would affect you too 17:31:42 unless you did it in areas far from where your customers were 17:32:51 though it would be hard to get away with repeated murder. Perhaps the auto sabotage is more feasible. 17:33:16 CakeProphet: doing it one at a time would be too small-scale to make any differences 17:33:39 break into a company that makes cars, and alter the firmware so you can cause large-scale accidents remotely 17:33:43 -!- Sgeo[College] has joined. 17:34:08 +ul (Hello, Sgeo!)S 17:34:08 Hello, Sgeo! 17:34:22 ...haha. We are demented geniuses. 17:34:31 Hi all 17:34:33 ais523: hm? 17:34:54 thutubot's a Thutu program double-piped to netcat 17:34:58 that runs Underload programs 17:35:08 it also has a +hello command which was just a test 17:35:09 +hello 17:35:09 Hello, ais523! 17:35:22 +gtfo 17:35:32 IT'S NOT WORKING 17:35:44 CakeProphet: I don't know that abbrev, so it's unlikely that my bot will 17:35:50 Can Underload support PSOX? >.> 17:35:59 gtfo == get the f*** out 17:36:14 ais523, gtfo = "get the fuck off" or "get the fuck out" depending on the context. 17:36:24 Sgeo[College]: you'd have to embed literal \0s into strings 17:36:27 and most interps couldn't handle that 17:36:30 it's a... 4chanism 17:36:34 oh :( 17:36:55 \0 is a very inconvenient character to type 17:37:06 I guess maybe PSOX should support some way to work with clients that can't just send nulls 17:37:23 In the magic, I guess 17:37:24 besides, Underload doesn't have any input 17:37:38 so it's not going to be able to communicate very well with PSOX anyway 17:37:42 ais523: well,... wait, how can there be a bot with no input? 17:37:46 Oh, n/m 17:37:48 the bot's running on Thutu 17:38:12 although I do like the idea of a bot that would send out random messages every now and then 17:38:31 it could also send out regular PINGs to Freenode; if you ping a server often enough, it doesn't ping you back 17:38:39 that way, it wouldn't need input 17:40:09 rofl. nice. It's like how I deal with annoying people. 17:40:18 ignore them. 17:40:40 CakeProphet: wha? 17:40:55 it could also send out regular PINGs to Freenode; if you ping a server often enough, it doesn't ping you back 17:41:13 client: "ping ping ping ping ping ping ping" server: "stfu I'm ignoring you." 17:41:19 What ab... oh n/m 17:41:29 I thought you felt insulted about something someone said 17:41:38 ... 17:41:39 no? 17:41:42 CakeProphet: no, it PONGs you back instead 17:42:22 ........... 17:42:29 I don't think I have ever 17:42:43 willingly talked to a more pedantic crowd than you guys. 17:43:10 well, I've been on comp.lang.c, and I think that they're slightly more pedantic than #esoteric, but they're an exception 17:43:19 they basically all make their living out of being pedantic 17:43:36 ...well yeah. But I don't talk to those people. All complang communication channels are like that. 17:43:37 Am I pedantic? 17:43:44 Sgeo[College]: no, just persistent 17:43:51 but I don't mind it all that much 17:43:51 >.> 17:44:02 ...#esoteric is more like... theoretical pedantic. 17:44:20 we refuse to be bound by the mundane shackles of common sense and efficiency 17:44:29 Am I ever persistent about things other than PSOX? 17:44:31 lol ais523 17:44:48 Sgeo[College]: not sure, you're so persistent about PSOX we haven't had the chance to check 17:45:02 but of course, that sort of persistence leads to a better program overall 17:45:11 I can get in that sort of mood over INTERCAL sometimes 17:45:16 and I'm sort of in that mood at the moment 17:46:04 I'm pretty non-pedantic. for a programmer. I consider it a good thing. 17:46:43 many languages need pedantry to work properly 17:46:52 you can't be sloppy with Malbolge, for instance 17:47:01 ...yeah. They do. But people don't. 17:47:12 yes, I suppose that makes sense 17:47:25 thereis a difference in communicating with people and machines. 17:47:42 my guess is that people who stay in complang channels are so used to getting into a pedantic frame of mind for talking to computers that it boils over into their interaction with humans 17:47:50 ...yeah. 17:48:04 OTOH, I'm naturally pedantic anyway, which is maybe why I got into computer programming 17:48:10 -shrug- it's not bad. Just slightly annoying. 17:52:38 * oklopol saw no pedantry 17:52:53 yay, oklotalk has a parse 17:52:54 where? 17:53:01 on my computer 17:53:09 i will put it on an irc bot once it can do anything 17:53:13 i mean 17:53:17 once there's something it can do. 17:53:31 because the code isn't really meant for reading 17:53:35 that's not my style 17:53:50 oklopol, can you give an example of a oklotalk program? 17:53:50 i did use multiple files this time, though! 17:53:50 oklopol: what do you mean by 'meant for reading' 17:53:59 guess i'm growing up or something 17:54:01 do you mean 'nicely commented so that others can follow' 17:54:04 yes 17:54:05 oklopol, and list some key features of it 17:54:20 or 'full of idioms, in-jokes, and other things that make the program harder to read but are a fun challenge'? 17:54:31 AnMaster: well, the fact i use lisp syntax currently kinda ruins explaining it 17:54:35 because the syntax is part of the fun 17:54:47 oklopol, so have an example or not? 17:54:54 and key features 17:54:55 i'll make a rational number class once i get a few things working 17:54:59 e.g. when I wrote clc-cset.c, which handles CLC-INTERCAL character sets, I filled my C code with Perl idioms, because CLC-INTERCAL is written in Perl 17:55:18 oklopol, so no example then? sigh 17:55:26 AnMaster: well i can show the factorial... 17:55:31 oklopol, paste 17:55:38 (= fact {(-> 1 (outn 1)) (-> n (outn (* n (' (- n 1)))))}) (fact 4) 17:55:43 this is a simpel recursive one 17:55:45 explain? 17:55:47 *simple 17:55:57 oklopol, explain it 17:55:57 well that's sexps, so (function arg arg arg...) 17:56:03 = ? 17:56:05 (= 17:56:06 ? 17:56:08 list: [elem elem elem ...] 17:56:23 lambda: {expression expression expression ...} 17:56:25 oklopol, ok, doesn't seem too hard to parse 17:56:36 AnMaster: this is the simple lisp syntax 17:56:44 which has nothing to do with oklotalk's actual syntax 17:56:52 oklopol, so same with the oklotalk syntax? 17:56:56 care to show it? 17:57:08 it's just so simple to parse i made a parser for it to be able to code stuff without parsing manually 17:57:10 sure 17:57:17 i can show the factorial again 17:57:19 wait a sex 17:57:31 um you mean sec 17:57:32 ... 17:57:45 Fact={1->1;N->N*out'(n-1)};fact 4 17:57:51 i mean sex, but by that i mean sec. 17:58:08 basically, just a simple pattern matching 17:58:16 +quit 17:58:16 -!- thutubot has quit ("ThutuBot quitting"). 17:58:18 -!- ais523 has quit ("(1) DO COME FROM ".2~.2"~#1 WHILE :1 <- "'?.1$.2'~'"':1/.1$.2'~#0"$#65535'"$"'"'&.1$.2'~'#0$#65535'"$#0'~#32767$#1""). 17:58:22 well the second expression in the lambda may be a bit complicated 17:58:35 oklopol: look, you made ais523 leave 17:58:38 GOOD JOB 17:58:49 Fact={1->1;N->N*out'(n-1)};fact 4... N*out'(n-1) means N * (out (' (n - 1))) 17:58:55 where out and ' are unary functions 17:58:55 yes 17:58:56 :<< 17:59:01 oklotalk was too much for them 17:59:02 but that syntax doesn't seem too hard? 17:59:14 AnMaster: it is not *that* hard 17:59:25 but it does have quite a few quirks 17:59:31 like? 17:59:31 for instance, it's 100% robust 17:59:34 eh 17:59:39 any string is a legal program 17:59:40 you mean no side effects? sure 17:59:46 oh 17:59:55 oklopol, so cat /dev/urandom is? 17:59:58 even non-ascii chars? 18:00:17 well, in theory, but they will be nops, mostly 18:00:30 because an unknown character means a one-character variable 18:00:35 #vt"drwolH">:#,_ @ 18:00:35 >"lo le">:#,_a,@ 18:00:41 what would that program do? 18:00:46 it is befunge 18:00:51 wait a mo 18:00:52 but what would it to in oklotalk 18:01:03 do you know of any programming languages besides Perl that can evaluate undefined variables to null values? 18:01:04 it will take me a minute to parse that 18:01:17 CakeProphet: oklotalk does variable -> atom(its name) 18:01:20 CakeProphet, hm bash evaluates them to empty strings 18:01:37 so yes empty or unset 18:01:51 CakeProphet, string and arrays being the only data types of bash 18:01:52 I ask because I am looking for a new language to write poems in. I have been using Python lately... but I might switch to Perl or something else. 18:01:54 this is because 5 + 2 actually sends the message [+ 2] to 5 18:02:21 CakeProphet, however you need $ at the start of variable names of course 18:02:28 CakeProphet, also not sure if awk would do it 18:02:35 yeah 18:02:53 AnMaster: i'll tackle your program now, wait a mo -> 18:03:05 this is because 5 + 2 actually sends the message [+ 2] to 5 18:03:06 hm.... 18:03:11 that sounds like smalltalk? 18:03:23 sure, if "sending a message" sounds like smalltalk 18:03:28 it does 18:03:31 to me ;P 18:03:33 sure 18:03:47 or objc 18:03:53 every OO-based language and functional language is about messages, though 18:03:57 it's justt terminology 18:03:59 *jsut 18:04:01 *just 18:04:28 most OO-based languages and functional languages don't have messages 18:04:31 well what does my program do? 18:04:38 lament, indeed C++ doesn't 18:04:45 objc and smaltalk does 18:04:48 smalltalk* 18:04:53 but, indeed, oklotalk and smalltalk have a lot in common, which is quite ironic, because i had no idea what smalltalk was when i came up with the name and the semantics for oklotalk 18:05:18 lament: they pass information around 18:05:37 oklopol, or want a harder program: 18:05:38 #vtf2*2+"olleH">:#,_'>11p> ><"dlrow">:#,_'>fb+0p@ 18:05:41 any high-level language will be about sending messages, if you want to think that way 18:05:41 what about that one? 18:05:48 AnMaster: i haven't started yet 18:06:09 oklopol: "passing information around" is more general than "sending messages" 18:06:25 ...except for the fact smalltalk *did* inspire the *name* 18:06:28 lament: okay 18:06:43 how so? 18:06:55 i don't know any exact definition for message-passing 18:06:55 ... -facepalm- I don't like where this is heading. 18:06:56 because it's up to the object to dispatch on the messages 18:06:57 oklopol, tell me when you are done, I may be afk 18:07:49 so the dispatch happens at runtime at the discretion of the object 18:07:57 late binding 18:08:04 i see 18:08:18 well, all i meant was passing information around 18:08:21 "I got this message, let's see what i can do with it" 18:08:40 hmmm... sounds like lament is talking about the difference between static and dynamic typing. 18:08:49 is he? 18:08:49 sort of. 18:09:02 i would say binding 18:09:06 which is a bit different 18:09:23 -shrug- whatever. my patience with comp terminology is growing thin. 18:09:27 :) 18:09:28 lately. 18:09:55 take it easy, man, you seem goddamn tense. 18:10:20 oklopol, result? 18:10:27 CakeProphet: with dynamic typing it is still not clear who performs the dispatch 18:10:50 CakeProphet: the interpreter could tell the object "hey, you got this message '+', figure out what you can do with it" 18:10:55 AnMaster: haven't started, sorry, people keep talking. 18:11:02 lament, that sounds like objc 18:11:10 an object can pass it on to someone else 18:11:21 CakeProphet: or, it could look at the object and say "hmmm, this object doesn't look like it can add stuff, so i'll just die with an error" 18:11:22 oklopol, just ignore convos on irc and do it? 18:11:27 ;P 18:12:20 AnMaster: almost done 18:12:58 -!- Tritonio_ has joined. 18:13:07 * Sgeo[College] does the exercises on the professor's slides and goes back to chat 18:13:11 [(> [#vt "drwolH"] (: #)) (@ _ _)] 18:13:11 [(> (> "lo le") (: #)) _a @] 18:13:20 AnMaster: would become these two lists 18:13:39 also a few evaluations would take place, most of which make not much sense 18:14:05 eh 18:14:11 oklopol, but what would it output or whatever? 18:14:19 oh, right 18:14:23 i'll evaluate through 18:14:28 you just asked for the parse tree, iirc 18:14:28 oklopol, anyway there were two lines to eeach 18:14:30 each* 18:14:42 this is the... first one i think 18:14:46 oklopol, ah ok 18:14:47 right 18:15:19 [(> (> "lo le") (: #)) _a @] ==> [(> #t (: #)) _a @] ==> [#t #_a _@] 18:15:31 so second line would evaluate to #t #_a #@ 18:15:37 (not _@) 18:15:41 this is a list of atoms 18:15:55 if the first line has no side-effects, this will be the result as well 18:16:13 and it doesn't, unless you've given new semantics to the operations 18:16:50 umm wait, actually [#t $_a $@] 18:17:18 oklotalk currently has two kinds of atoms, the name atom policy is a bit obscure atm 18:18:01 *-name 18:18:48 oklopol, I see 18:18:59 oklopol, and what would the second program evaluate as? 18:19:07 lessee 18:19:39 oklopol, after what, what about mycology ;) 18:21:27 [#vtf 2] * 2 + "olleH" > (: #), _ ' (> 11) p (> (< a)), 0 q _ 18:21:28 (> (< "dlrow")) > (: #), _ ' (> (fb (+ 0))) p (@ _) 18:21:36 AnMaster: just two uninteresting lists again 18:21:39 but i can evaluate... 18:21:44 hmm... 18:21:58 i haven't actually chosen semantics for everything 18:22:05 I see 18:22:05 unary < for a string 18:22:13 wonder what that would do... 18:22:31 oklotalk generally tries to ensure every application, with primitives, means something 18:22:49 why? oklotalk generally doesn't answer that. 18:22:49 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)). 18:23:02 Turn the string into anumber, then do < on that number? 18:23:10 what's unary < for a number? 18:23:13 (< 5) 18:23:24 curry "<" with 5 as left parameter? 18:23:26 -!- Judofyr has joined. 18:23:47 oklopol, so what about a string zzzzzzzzzzzzzzzzzzzzzzzzzz just? 18:23:47 * Sgeo[College] was thinking it meant "subtract one" 18:23:47 that wouldn't be very oklotalky, because currying isn't really supported 18:23:52 But currying might be better 18:23:52 Although if nothing comes after it.. 18:23:53 AnMaster: a lowercase string is a function application 18:24:20 zzzz... would be parsed as (zzzzz... _), meaning "evaluate function zzzzz... with _ as param" 18:24:25 < string means subtract one from string 18:24:26 oklopol, lower case == a-z? what about åäö? 18:24:28 _ is what it is in perl 18:24:29 *perl 18:24:33 oklopol, and utf8 or not? 18:24:40 AnMaster: those would be operator characters 18:24:58 Sgeo[College]: subtract one might work 18:25:11 but (oper string) should generally return a string 18:25:25 oklopol, how long is a char in oklotalk? 18:25:28 8 bits? 18:25:30 string -> number will never happen automarically in oklotalk 18:25:34 *automatically 18:25:39 if yes, then åäö as I sent them would be several codes 18:25:43 because they are utf8 18:25:50 AnMaster: char is a number with #chr type-tagged 18:25:53 it's a bignum 18:25:56 :) 18:26:03 hm 18:26:11 oklopol, string -> number, subtract one, number ->string 18:26:12 there's just lists, atoms and bignums in oklotalk 18:26:15 oklopol, what would ascii \1 do? 18:26:17 or \4? 18:26:22 operator characters 18:26:27 meaning (< string) would return a string 18:26:29 apply function \1 to param 18:26:29 oklopol, and they do what? 18:26:40 well they will evaluate to the corresponding atom 18:26:44 $\1 18:26:44 sigh 18:26:59 oklopol, so what is a ¤? 18:27:09 Sgeo[College]: strings will never be automatically converted to numbers in that fashion 18:27:17 oklopol, up for this one? 18:27:18 except perhaps as like base 256 18:27:20 " raey eht ni nettirw saw elpmaxe sihT" >:#,_ "AMOR"4#@(MM+IIX\-\-+.)a,@ 18:27:26 oklopol, :) 18:27:30 AnMaster: what character is that? 18:27:39 oklopol, the last one is a string 18:27:46 two characters? 18:27:46 oklopol, the ¤ was a char 18:28:00 oklopol, ¤ is one char 18:28:00 ...... 18:28:03 get utf8 18:28:03 duh 18:28:06 :) 18:28:09 (mirc) 18:28:25 oklopol, it is the generic currency symbol 18:28:29 do it again 18:28:33 i may have utf on now 18:28:33 ¤ 18:28:37 darn :P 18:28:48 ¤ 18:28:50 oh 18:28:53 oklopol, an x with a o on, the o is filled so you don't see the x behind 18:29:00 i know what it is 18:29:04 but it won't show 18:29:04 just the bits sticking out 18:29:16 oklopol, ok, what does the program: " raey eht ni nettirw saw elpmaxe sihT" >:#,_ "AMOR"4#@(MM+IIX\-\-+.)a,@ 18:29:22 evaluate to in oklotalk 18:29:28 oklopol, and tried a real OS? 18:29:33 Linux, or *BSD 18:29:35 i'll parse it... 18:29:39 i've tried em 18:29:45 oklopol, err wait 18:29:48 mispaste 18:29:51 on no 18:29:53 it was correct 18:30:06 just line broken by irc client made me confused 18:31:05 " raey eht ni nettirw saw elpmaxe sihT" > (: #), _ "AMOR" 4 #@ (MM + IIX \ _ \ - + . _) a _, @ 18:31:10 an uninteresting list 18:31:20 " raey eht ni nettirw saw elpmaxe sihT" > (: #) <<< first element 18:31:22 let's evaluate 18:31:35 mhm 18:31:42 " raey eht ni nettirw saw elpmaxe sihT" > "" << tailed an atom -> converted to string, tailed string 18:31:47 "You ask this question after class" 18:31:50 this evaluates to true 18:31:52 or #t 18:31:54 Sgeo[College], ? 18:32:19 AnMaster: what my professor just told me after I asked something 18:32:25 Sgeo[College], what did you ask? 18:32:29 so #t, _ "AMOR" 4 #@ (MM + IIX \ _ \ - + . _) a _, @ _ <<< cannot be evaluated without knowing _ 18:32:29 oklopol, hm interesting 18:32:37 oklopol, and what does _ do? 18:32:42 it's what it is in perl 18:32:52 which, btw, is another re-invention 18:32:55 oklopol, I don't know perl 18:32:58 How does Access define the table on the left and the table on the right, because it's not based on what it looks like in the Query Design view 18:33:00 tell me what _ does 18:33:02 it's function params 18:33:14 oklopol, so it will give a syntax error then that program? 18:33:17 F = { _ * 8 }; f 7 ====> 56 18:33:30 AnMaster: syntax errors do not exist 18:33:38 oklopol, so what will the program do? 18:33:54 you can do errors, with continuations, but they will generally not be automatically created for you if you do something silly 18:34:02 AnMaster: depends on _ 18:34:10 oklopol, a simple one then, a bit of C code: k = p_key->p_key.x; k *= m; k ^= k >> 16; k *= m; h += k; h *= m; 18:34:16 from a hash function 18:34:17 because you are applying stuff to it that cannot be applied stuff to 18:34:21 so _ will be applied to it 18:34:31 oklotalk has a very weird set of rules for application.. 18:34:36 oklopol, assuming it was the whole program I pasted, what would happen? 18:34:40 haha :D 18:34:45 that might actually do something 18:34:50 wait 18:35:17 hmmm.... 18:36:05 wait, i have a girl stuck to me 18:36:10 okay, i'll continue 18:36:13 eh? 18:36:17 a child? 18:36:19 nm :D 18:36:24 no more like a woman 18:36:38 so esolangs are more interesting heh 18:36:49 k = p_key -> p_key; <<< actually i don't recall what i desided to do in this situation 18:37:15 could be (k = p_key) -> p_key, which matches _ into both k and p_key, and returns (p_key _) 18:37:18 asd'fkl 18:37:21 my cell phone... 18:37:22 wait 18:37:25 oklopol, you want something else? more C code? http://rafb.net/p/DRWbPE18.html would that do anything in oklotalk? 18:37:34 a simple crc function 18:39:03 okay got rid of that too 18:39:10 the phone call that is 18:39:14 let's think 18:39:21 i mean, that c example with p_key 18:39:31 well 18:39:33 sure 18:39:51 oklopol, want the whole function it came from? 18:40:09 http://rafb.net/p/DenLGQ36.html 18:40:17 k = (p_key -> p_key); was the other possibility, i'm fairly sure (p_key -> p_key) would be a lambda, because you cannot do -> in a normal expression 18:40:25 or... can you 8D 18:40:31 why not, why not... 18:40:35 what is ->? 18:40:41 -> pattern matches 18:40:42 on _ 18:40:50 well... 18:41:15 Bye all 18:41:25 I start to realize why you haven't coded an interpreter for it yet 18:41:27 Sgeo[College], cya 18:41:32 let alone a compiler 18:41:44 {[$Init N] -> Val = N; [$+ N] -> Val <- Val + N;} would be a simple number class with just incrementation implemented 18:41:56 oklopol, um is that what it does? 18:42:01 the line I mean 18:42:05 oh no 18:42:09 just en example of -> 18:42:19 an 18:42:20 ok 18:42:30 [$Init N] matches a list of that form 18:42:34 N can match anything 18:42:46 -!- Sgeo[College] has quit ("http://www.mibbit.com ajax IRC Client"). 18:43:02 hmm, perhaps i should try getting that to work 18:43:05 that number 18:43:07 class 18:43:09 "class" 18:43:29 i usually call oklotalk functions "things", they're a bit... weird 18:43:31 so what IS k = p_key->p_key.x; k *= m; k ^= k >> 16; k *= m; h += k; h *= m; 18:43:38 would be wrong to call them functions or objects of classes 18:43:45 hmm 18:43:58 i'll parse, as i think i've specified it 18:44:10 good idea 18:44:25 usually you don't do multiple high-level operators without explicit precedencing. 18:44:31 = and -> are high-level ones 18:44:40 well it is C really heh 18:45:04 yarr, just explaining why i'm not sure how that should be parsed 18:46:02 oklopol, you need to add a sandbox mode that doesn't allow file IO and such so ppl can test the interpreter on anything just to see what happens 18:46:03 ;P 18:46:15 :D 18:46:26 well, i don't have the parser yet... 18:46:26 while (p < p_end) 18:46:26 crc = (crc << 8) ^ crc32_table[(crc >> 24) ^ *(p++)]; 18:46:26 return ~crc; /* transmit complement, per CRC-32 spec */ 18:46:35 what about that one then? 18:46:45 the problem is, stuff like *= just doesn't mean anything, even though it's valid code 18:46:54 oklopol, so they are no-ops? 18:47:02 yes, unless you give them a meaning 18:47:10 the code above? 18:47:11 which can be done at runtime, and usually will be 18:47:14 it is from another hash 18:48:17 k = {p_key -> p_key . x _}; 18:48:19 k * = m _; 18:48:21 k ^ = k > > 16; 18:48:23 k * = m _; 18:48:25 h + = k _; 18:48:27 h * = m _; 18:48:28 this is almost parsed as it is in C 18:48:36 oklopol, ok 18:48:42 and what would it output or such? 18:48:45 well... would be, if you had >>, and X=-operators 18:49:06 well 18:49:13 k is set to that weird lambda 18:49:39 and then? 18:49:51 then, the k and * are set to whatever two things calling m with _ as param evaluates into 18:50:07 if just one thing is returned, the second line is a nop 18:50:10 oklopol, but if there is nothing called m? 18:50:14 if it is the whole program 18:51:01 well then it means $m, and calling $m with _ as param means calling _ with [#uo $m], or reversed call to _ with the atom m as param 18:51:06 whatever this does depends on _ 18:51:11 the parameter for the program 18:51:57 if _ is something like the empty list, $m is *forced* to evaluate with _ as argument 18:52:04 hm 18:52:11 oklopol, oh and then what about this then: size_t len = sizeof(fungeSpaceHashKey); return (fungeSpaceHashKey*)memcpy(newobj, oldobj, len); 18:52:17 an atom, when forced into a function, just returns itself. 18:52:33 in which case the line is a nop 18:52:39 because k * cannot be matched on $m 18:52:44 of course it makes no sense to use a temp variable in C but just to complicate it 18:53:05 i can parse, but this is the last one :D 18:53:13 heheh 18:55:20 size_t len = sizeof(fungeSpaceHashKey); return [fungeSpaceHashKey *] memcpy [newobj oldobj len]; 18:55:21 slightly more interesting. 18:55:21 wait a mo 18:55:21 i have to think 18:55:22 eh I said () not [] 18:55:22 but whatever 18:55:22 yes but it's already been paesed a bit 18:55:22 *parsed 18:55:22 they evaluated into lists of functions 18:55:22 because they were expressions containing functions only 18:55:22 oklopol, then what would actual [] evaluate to? like myarray[3] ? 18:55:25 [] -> [] 18:55:27 the empty list 18:55:34 it got a 3 in it 18:55:42 so [ ] is list? 18:55:43 well 18:55:44 myarray [3] means call myarray with [3] as argument 18:55:49 what's myarray, depends on that 18:55:58 [3] is a list with just 3 in i 18:55:59 t 18:56:09 oklopol, char * myarray; ;P 18:56:10 -!- olsner has joined. 18:56:20 -!- jix has quit (Nick collision from services.). 18:56:30 -!- jix has joined. 18:56:31 char * myarray is just a list of functions 18:56:34 yeah 18:56:35 it doesn't do anything 18:56:38 back to size_t len = sizeof(fungeSpaceHashKey); return [fungeSpaceHashKey *] memcpy [newobj oldobj len]; 18:56:53 okay 18:57:14 return *may* be what it is in x 18:57:15 C 18:57:23 x? 18:57:32 i'm just not sure if you can grab the continuation of the upper level like that 18:57:34 x -> C 18:57:34 there is no x or C in that line 18:57:35 i failed 18:57:48 there is no C either 18:57:54 C is a language 18:57:57 :) 18:58:20 okay, that line might evaluate to the list [fungeSpaceHashKey *] 18:58:39 but depends on return's capability to use the return continuation of whatever calls it 18:58:39 ah 18:58:54 I thought you meant variable C 18:58:57 or such 18:58:57 i've removed uplevel lambdas from oklotalk to simplify scoping a bit 18:59:01 so.... 18:59:09 uplevel, as in thin functions 18:59:15 something like what plof ha 18:59:16 has 18:59:18 or had 18:59:28 oklopol, so is oklotalk functional, object orientated or what? 18:59:31 not sure what plof3 does 18:59:39 dunno 18:59:40 wtf is plof? 18:59:47 plof is GregorR's language 18:59:52 I see 19:00:01 -!- CakeProphet has quit ("haaaaaaaaaa"). 19:00:34 oklopol, you know fuzz testing with random program code will be absolutely hilarious with your language 19:01:00 I use something like that for befunge 19:01:03 i guess oklotalk is multiparadignm 19:01:10 heh 19:01:15 cat /dev/urandom | tr -Cd -- '-[:lower:][:digit:]\n\\/ ;",.+*[]{}^<>@`_|?:%$#!'\'"${FPRINTINSTRS}" | tr -d 'mhlior' | head -n 100 >> fuzz.tmp 19:01:20 i think befunge is more interesting for that 19:01:22 oklopol, useful for crash stuff 19:01:37 catched a few bugs with it so far 19:01:51 ah, interp should never crash? 19:01:51 several valgrind errors and some SIGSEGV 19:01:54 and one SIGFPE 19:02:03 hehe, fun 19:02:21 oklopol, I aim for it to never crash except on something like perror("aiee! out of memory!"); abort(); 19:02:25 i'm not sure what exactly to do for the oklotalk charset, i''m already using a few characters over ascii. 19:02:28 *i'm 19:02:35 which isn't good, because i wasn't intending to 19:02:44 oklopol, and even with out of memory I do some ulimit testing to make sure it detects it 19:02:51 yeah 19:03:05 but well, on out of memory there isn't much I can do when stuff fails 19:03:13 ofc 19:03:32 i'll start tackling on the rational number class 19:03:36 oklopol, also I can't test file IO really with fuzz, I'm too lazy to set up a chroot 19:03:42 and I don't dare do it elsewhere 19:03:50 so it runs in sandbox mode 19:04:00 so even if a p creates a o it will just reflect 19:04:45 oklopol, of course this doesn't guarantee it is acting sensibly 19:04:49 or anything like that 19:05:19 indeed, but you can prolly look at it as it goes 19:05:30 i tend to be overcareful when writing test programs 19:05:30 well I can't parse 100 lines or random chars 19:05:37 for the fuzz testing 19:05:45 and yes I have done some unit testing 19:05:54 but well mycology handles most of the correctness bit 19:06:09 it does pass mycology 19:06:14 I make sure it does at each revision 19:06:28 rational -> 19:06:30 I don't commit if it doesn't pass mycology and valgrind 19:06:47 oklopol, ? 19:07:25 oklopol, oh and I gpg sign each revision of course, not that anyone would care 19:07:42 I use the bzr version control system 19:07:48 it supports signing revisions 19:08:27 from within function "MediaWikiBagOStuff::_doquery". MySQL returned error "1030: Got error 127 from storage engine (localhost)". 19:08:29 gah 19:08:33 I hate that bug 19:08:47 on esolang 19:14:54 AnMaster: rational numbers 19:14:59 gotta try making them 19:15:03 hm? 19:15:09 oklopol, in oklotalk? 19:15:11 yes 19:15:18 well you mean like 1/3? 19:15:25 to test its extendability in itself 19:15:29 or 1/10? 19:15:32 yes 19:15:35 that's a rational number 19:15:39 true 19:15:49 a pitty about pi heh 19:16:04 oklopol, why not do symbolic algebra? 19:16:05 ;D 19:16:20 well the actual types i was thinking for oklotalk were number and list 19:16:33 number being any number 19:16:41 oklopol, all you need to do is write a common lisp interpreter in oklotalk, then run maxima under that interpreter 19:16:43 :) 19:16:48 wuz maxima 19:17:01 oklotalk isn't really an algebra language 19:17:02 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)). 19:17:04 [I] sci-mathematics/maxima 19:17:05 Available versions: 5.13.0-r1 ~5.14.0 {X clisp cmucl emacs gcl latex linguas_es linguas_pt linguas_pt_BR nls sbcl tk unicode xemacs} 19:17:05 Installed versions: 5.13.0-r1(14.00.50 2008-03-27)(clisp emacs latex nls tk unicode -cmucl -gcl -linguas_es -linguas_pt -linguas_pt_BR -sbcl) 19:17:05 Homepage: http://maxima.sourceforge.net/ 19:17:05 Description: Free computer algebra environment based on Macsyma 19:17:28 oklopol, very useful thing 19:17:28 i have a lot of ideas for something with algebra 19:17:36 most likelt 19:17:38 -!- Judofyr has joined. 19:17:38 likely 19:17:40 it is coded in lisp 19:17:56 oklopol, see first paragraph on http://maxima.sourceforge.net/ 19:18:37 sounds like it knows its stuff 19:18:43 it is good yes 19:18:45 Maxima is to Mathematica what Octave is to Matlab. :p 19:19:00 fizzie, yeah, "a lot cheaper" 19:19:17 zuffancezdroty is to mathematica what gnazzlewimber is to matlab 19:19:24 oklopol, eh? 19:19:37 == i don't get the reference 19:19:45 Mathematica's student license isn't bad as far as absolute price is concerned, though. There are the... ethical objections to non-free software. 19:20:14 Well, Octave's a free Matlab "clone". It goes so far as to have a more-or-less-compatible-sometimes-maybe syntax in the programming language. 19:20:22 ah 19:21:16 that always makes me a sad panda 19:21:33 fizzie, well maxima does what I need 19:21:38 that is the main point for me 19:21:39 (taking a commercial product and making a free version of it) 19:21:45 oh and it can generate fortran code 19:22:28 yay (?) 19:22:48 Fortran has a certain charm. 19:23:47 lament, quite fast 19:24:38 "For calculations which use floating point and arrays heavily, Maxima offers the possibility of generating code in other programming languages (notably Fortran) which may execute it more efficiently." 19:24:41 from wikipedia page 19:28:41 "Fortran 2003 has extensible types, inheritance, polymorphic variables, and type-bound procedures" 19:28:44 heh 19:35:05 That sounds somehow wrong. 19:36:23 Have they done away with the line length limits and "these columns are reserved for line numbers" thing and stuff? 19:37:26 It all seems so... so tame. Wikipedia article tells me that in Fortran-90 and newer you can use stuff like <= instead of .LE. and all. 20:00:35 hahahaha 20:09:54 -!- oerjan has joined. 20:28:59 -!- oerjan has quit ("leaving"). 20:30:22 Apparently, if you pass both -O2 and -O0 to (mips) GCC, it produces f***ed-up code :P 20:31:15 I was wondering why it subtracted 8 from sp (the stack pointer) then proceeded to store into 20(sp) X-P 20:32:56 news news on the unusal html4 page of pikhq 20:33:02 it seems safari will handle it 20:33:04 Deewiant, ^ 20:33:10 O_O 20:33:15 I talked to someone who said it worked in safari 20:33:19 * GregorR wonders if Konq4 would. 20:33:34 GregorR, konq3 doesn't 20:36:40 I'd like to see somebody take the MIPS instruction set and reduce it to a minimal TC set without overloading. (i.e. no subtract-and-branch-if-) 20:36:52 -!- Tritonio_ has quit (Remote closed the connection). 20:38:41 Can't you just take SUB and, say, BLTZ to get the effect of having subtract-and-branch-if-negative. 20:39:23 SUB would be load, load, subtract, store at best (assuming you can't just treat memory as registers) 20:39:45 SUBLEQ is load, load, subtract, compare, store, branch 20:44:14 Is there a 'compare' mips instruction? I didn't think it had any flags, really. 20:44:47 set-if- sets one register to 1 if 20:45:20 But there's also branch-if-less-than, etc :P 20:45:20 Yes, but isn't that pretty useless if you have a branch-if-condition. 20:45:50 GCC uses it in some conditions, just depends on whether you still need that flag I guess *shrugs* 20:46:56 Sure it might be useful, but if you wanted a minimum set of instructions. (Haven't been doing MIPS since that one silly course about it.) 20:50:56 It doesn't look like the PC in MIPS is one of them general-purpose registers. A pity. 20:51:10 Yuh :( 20:56:47 -!- timotiis has joined. 21:14:43 -!- Tritonio_ has joined. 21:22:27 -!- ais523 has joined. 21:22:37 -!- ais523 has changed nick to ais523|busy. 21:23:30 -!- thutubot has joined. 21:27:13 I fixed JSMIPS 8-D 21:27:55 OK, what's my next target past Hello, world? 21:32:34 -!- RedDak has joined. 21:35:47 Hm, how about tackling this next failure :( 21:36:08 printf("Hello, world!\n"); // works 21:36:10 printf("Hello, %d!\n", 3); // does not 21:42:09 printf("Hello, %d!\n", 3); // jumps to address 0 (wtf) 21:49:40 -!- shinkuzin has joined. 21:50:00 GregorR: is there anything interesting at address 0? 22:11:51 -!- Iskr has quit ("Leaving"). 22:25:15 -!- shinkuzin has quit (Read error: 113 (No route to host)). 23:01:50 -!- RedDak has quit (Remote closed the connection). 23:03:58 ais523|busy: Only a segfault waiting to not be caught :P 23:06:18 -!- Tritonio_ has quit (Remote closed the connection). 23:08:41 GregorR: I take it you're just running executables, rather than trying to virtualise an entire OS? 23:21:56 Uh, running executables with no syscall infrastructure is somewhat pointless :P 23:22:13 I do in fact provide a syscall layer, and so an OS in a manner of speaking, but yeah, it's not an OS in the conventional sense. 23:22:58 it's a stripped-down OS specifically for the purpose of running single executables 23:23:07 Right :) 23:23:23 * ais523|busy remembers writing a minimal window manager that could only show one window at a time, and even then it had to be fullscreen 23:23:43 we didn't need any more than that for the project we were working on 23:24:22 http://www.codu.org/jsmips/ // yay, hello, world! 23:24:23 hmm... if you allow fork() and exec() as syscalls, you could almost make that into a real OS by starting with some version of init, and adding a filesystem 23:24:57 The problem is, fork() is extremely difficult, perhaps impossible, because JavaScript has no real support for threads ... 23:25:13 not exactly 23:25:31 setTimeout is something, but it never actually runs two things concurrently >_< 23:25:34 although I've achieved a similar effect to cooperative multithreading by serialising internal state and using setTimeout instructions 23:25:58 Actually, I'm doing nearly that just to make the MIPS emulator not stall out the browser and get killed. 23:26:05 So maybe I'm more on track than I realize :P 23:26:21 I tend to do that in lengthy JS programs just so I can see them run 23:26:39 although if it's an AJAX program, waiting for an XHR response serves a similar purpose 23:27:00 I suppose AJAX might be a way to go with the filesystem. 23:27:41 mutltithreading is really easy if you use CPS 23:27:55 you just alternate around a ring of continuations 23:28:07 however, that's not very good for JavaScript emulators of processors 23:28:38 (I just realised that the reason why multithreading is so easy to simulate in BackFlip is that the entire language is CPS more or less by definition) 23:28:52 (pity that it isn't TC, although there are several suggestions to solve that problem) 23:33:04 hmm... the main issue with BackFlip was that flow control constructs were easy, but everything else was either difficult or impossible 23:33:18 Heh, that's weird. 23:33:18 that and the FSMness and reversibility, neither of which make it easy to write a program 23:34:22 http://esolangs.org/wiki/BackFlip (I've added a typing shortcut for Esolang to my IRC client, and want to show it off) 23:38:46 anyway, if multithreading is too hard for you, you could still have an OS, you'd just end up with something like DOS 23:40:54 -!- jix has quit ("CommandQ"). 23:47:41 -!- timotiis has quit ("leaving"). 23:53:10 -!- Sgeo has joined. 23:55:17 -!- wildhalcyon has joined. 2008-04-04: 01:06:22 http://www.codu.org/jsmips/ // now with a non-working example! 01:08:48 +quit 01:08:49 -!- thutubot has quit ("ThutuBot quitting"). 01:08:50 -!- ais523|busy has quit ("(1) DO COME FROM ".2~.2"~#1 WHILE :1 <- "'?.1$.2'~'"':1/.1$.2'~#0"$#65535'"$"'"'&.1$.2'~'#0$#65535'"$#0'~#32767$#1""). 01:09:04 Alright 01:09:09 lovely mips 01:09:36 What is it supposed to do? 01:09:44 Print Hello, 3!\n 01:09:51 Instead, it just prints Hello, 3 01:09:56 And then dies a horrible death. 01:10:51 and what, exactly, is mips? 01:11:00 A processor [family] 01:11:17 Oh 01:11:42 Right, the one the bunny was named after 01:11:52 One that Gregor is implementing in Javascript for no good reason. 01:12:00 Well, its nice 01:12:02 For one GREAT reason: VIM IN MY BROWSER 01:12:18 Might I recommend MMIX instead? 01:12:34 I already tried MMIX - intolerably slow at 64 bits. 01:12:43 Fair 'nough. 01:12:50 x86? :p 01:13:00 Also, MMIX is practically CISC compared to MIPS. 01:13:34 vim in your browser eh? 01:13:43 You know, writing an OS is trivial if you don't run more than one program on it. :p 01:13:45 Vim is nice, I suppose. A browser variant could be.. helpful? 01:14:06 Really, all you need is the ability to load executables. ;p 01:14:08 OK, so right now I can BARELY do "Hello, world", but still, I'm on my way to vim :P 01:14:29 (and, arguably, drivers.) 01:14:30 osdev.org is a fun site about OS development 01:14:37 wildhalcyon: Well aware. 01:14:43 Drivers are the bane of my existance 01:14:44 Pretty sure everyone is :P 01:14:48 (my kernel courtesy of docs from osdev.org) 01:14:59 well, I wasn't aware until quite recently 01:15:22 and I've had a fantastic time with it. 01:15:32 I'm taking an OS class in a few months... 01:17:20 Whereas I, in a few months, am entering college. 01:17:31 congrats pikhq 01:17:47 I, in a few months, am entering grad school. 01:17:52 Bastard. 01:18:00 Of course, oerjan has all of us beat. 01:18:06 Mr. Ph.D. . . :p 01:18:12 lol 01:18:22 You mean DOCTOR Ph.D. 01:18:52 GregorR: I thought 'Mr. Foo, Ph.D.' as acceptable, as was 'Dr. Foo'? 01:19:05 Yeah, I'm just making a joke X-P 01:19:11 Mmkay. 01:19:22 When (if) I get my Ph.D, I'll change my nickname to DrGregor :P 01:19:30 LMAO 01:19:46 I suppose mine would have to become DrPikhq. 01:20:14 Of course, I could get a (non-accredited) Ph.D. tonight. 01:20:15 I'm gonna change mine to Bill 01:20:25 Hahah 01:20:30 Hey, if Gene Gray can declare himself a Doctor of Cubic, then so can I. 01:20:31 :p 01:20:34 I could get a non-accredited Ph.D - HEY, I just did! 01:20:51 ;) 01:21:08 Ah, but I have a doctorate in doctoral studies! 01:21:12 * GregorR scribbles "Ph.D. IN AWESOMEOSITISM" on a cocktail napkin and nails it to the wall. 01:21:24 Kickass. 01:21:31 Its "Awesomology" 01:21:38 any REAL student of awesomology knows that. 01:21:55 wildhalcyon: Yes, and it's the New Reformed Judaic Front. 01:21:56 :p 01:21:58 Awesomeology is to Awesomeositism as Astrology is to Astronomy 01:21:59 But awesomologists are also notorious spellers 01:22:08 burn 01:22:23 sorry then. How about we compromise on awesomonomy? 01:22:39 * GregorR scribbles "Ph.D. IN AWESOMONOMY" on a cocktail napkin and nails it to the wall. 01:22:57 * pikhq scribbles 'Ph.D. in 1337' on the wall 01:23:24 Or should I say, '|>|-|.|) 1|\| 1337'? 01:23:24 * GregorR scribbles "Ph.D. in 1337, granted 1337" on a cocktail napkin. 01:25:21 Goddamn lament is fucking right... >:( 01:25:31 I should just program in smalltalk 01:25:47 ouch! that really sucks! 01:26:00 Its just really frustrating 01:26:17 every time I come up with some freakin' language idea, it turns out its part of smalltalk. 01:26:17 oklopol claims to have invented smalltalk, too. 01:26:35 i think i'm the only person here who hasn't invented smalltalk. 01:26:44 well, except that one time... 01:27:00 lament, we're not concerned with drunken smalltalk inventing 01:27:32 That happens to everyone 01:27:43 seriously though, smalltalk is brilliant 01:27:48 yes 01:27:53 it really is 01:28:21 it has stability issues due to everything being so open 01:28:35 I've been working on creating a dynamic language, and they really got most of it incredibly right 01:28:39 which alan kay considers to be a plus ("nobody's a user, everybody's a programmer") 01:28:51 wildhalcyon: alan kay is a genius 01:28:56 i suggest you read stuff by him 01:29:17 I've been reading everything I can about the language. I'll try to look up some stuff by him 01:29:30 he's mostly interested in education 01:29:34 these days, at least 01:30:02 this is interesting: http://www.vpri.org/pdf/Pisa_RN_2007_007_a.pdf 01:30:11 I think there's areas where smalltalk could be improved (and I'm not talking about syntax now...) 01:30:35 lament: well, i still don't know much about smalltalk 01:30:42 so i *may* have invented it 01:31:57 actually, instead, http://www.vpri.org/pdf/human_condition.pdf 01:32:03 "on human condition" 01:37:49 he also said "Actually I made up the term "object-oriented", and I can tell you I did not have C++ in mind." 01:39:38 I saw that quote 01:39:41 and it made me like him 01:40:08 he must be quite disappointed 01:40:35 he and the team he was with developed OO, modern GUI, wysiwig word processor, laptop ~40 years ago 01:40:55 he expected the world to be in much better shape by this point 01:40:59 -!- boily has joined. 01:42:49 * lament needs to play with squeak more 01:44:03 * pikhq needs to code his kernel more 01:44:12 wildhalcyon needs to think more 01:44:38 That goes without saying. 01:45:13 was that intentional or do you not know the secret of /me? 01:45:34 I know the secret.. I just wasn't thinking 01:45:53 alan kay also said about smalltalk that it was only interesting in the 70s 01:46:02 why did he say that? 01:46:04 I see 01:47:02 wildhalcyon: he doesn't think it's good enough 01:47:09 hence the whole reinventing computing project 01:47:19 Well, its not good enough, but its still better than C++ 01:47:49 pretty much everything is better than C++ 01:47:55 why is that even a "but" 01:48:11 of course it's better than c++, but it's not good enough 01:48:22 sorry, had it backwards ;-) 01:49:08 Consider that C itself is better than C++ for most intents and purposes. 01:49:10 :p 01:49:29 (if you need objects, though, don't use C. . . GObject *will* give you nightmares.) 01:49:51 If I needed objects I'd just fake it with structs 01:50:33 why not just use... python or something 01:50:41 well, I'm saying if I was forced to use C 01:50:53 which has happened, recently 01:51:06 If I were forced to use C, I'd make whoever forced me into it regret it. 01:51:15 And use the asm keyword. 01:51:31 haha, nice 01:51:38 Exclusively. 01:52:19 int main(){volatile asm ("; program code here.");} 01:53:19 int main(){malbolge(...);} 01:53:44 pardon my C ignorance, but whate is the meaning of volatile? 01:53:47 s/whate/what/ 01:54:24 boily: In GNU C, it indicates that any optimisation surrounding that asm keyword is a Bad Idea(TM). 01:55:18 Common cases where it should be used include anything fiddling with the IDT, the GDT, the page table, the address size, etc. 01:55:38 (although anyone fiddling with those from C deserves to be shot. :p) 01:56:10 thanks! a very interesting keyword indeed. 01:56:34 Its used in multi-process environments too 01:56:50 (to prevent it from caching the result) 01:58:46 Sorry, I should explain that better. The keyword can be used to prevent caching of variables that might be accessed by multiple processes to ensure they always get the current, accurate content. 02:00:14 hence, they are volatile. am I correct? 02:01:42 exactly 02:11:29 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)). 02:12:01 -!- Judofyr has joined. 02:15:09 -!- boily has quit ("Schtroumpf!"). 02:20:40 * pikhq nods 02:32:44 right then 02:39:50 s/In GNU C/In C/ 02:40:11 It means it could change at ANY MOMENT ZOMG, so you can't cache it etc. 02:44:00 GregorR: Ah. 02:44:12 Fine. volatile, as it applies to the asm keyword. ;p 02:44:32 Oh, I assumed you meant volatile on a variable. 02:44:50 Right, volatile on asm is the same idea - either way, it prevents optimizations. 02:45:28 As I explained, and someone else explained in slightly more detail. 02:45:41 I again don't know why JSMIPS isn't working >_< 02:45:44 Stupid "Hello, 3" 02:45:46 it hates you 02:45:50 I have another interpretation that I thought of. . . 02:45:59 volatile = "You can't touch this". 02:45:59 :p 02:46:11 Uhhh, that's just plain incorrect. 02:46:15 I know. 02:46:18 const = "You can't touch this" :P 02:46:22 But that song's stuck in my head. 02:47:27 It depends on who "you" is in the context. For pikhq's version, "you" would be the optimizer 02:47:42 for gregorR's version, "you" is the programmer, or.. anyone else. 02:48:29 In my version (that is, volatile on variables), you CAN modify it - it's just saying that it could ALSO be modified by forces unknown. 02:48:34 for MC Hammer's version, "you" would be anyone attempting to touch whatever the hell he was talking about it. 02:48:55 you can't modify consts 03:05:28 Learning smalltalk has really taught me how much I don't know about the history of computer science 03:06:02 wildhalcyon: Which is what I was thinking. 03:06:29 BTW, I prefer thinking about how much I *do* know. 03:06:36 pikhq: That I didn't know anything about computer science? 03:06:37 And, meanwhile, I WANT A RELAY MACHINE!!! 03:06:43 Oh. That sucks. 03:07:03 wildhalcyon: My version of 'you can't touch this' is what you described. 03:08:23 See? Everyone's right 03:09:26 -!- Tritonio_ has joined. 03:09:49 'Cept for MC Hammer. 03:10:53 Yeah, those pants were wrong 03:30:11 -!- adu has joined. 03:45:18 alright, I'm out 03:45:33 -!- wildhalcyon has left (?). 04:08:44 -!- GregorR-L has joined. 04:09:00 4005fc: 27bdfa70 addiu sp,sp,-1424 04:09:00 ... 04:09:00 400628: afa50594 sw a1,1428(sp) 04:09:06 This cannot POSSIBLY be right. 04:10:35 Does anyone else agree here? 04:12:41 -!- Sgeo has quit (Read error: 104 (Connection reset by peer)). 04:14:29 experimental comics time! 04:14:30 http://www.nonlogic.org/dump/images/1207278828-walls.png 04:14:44 I'd really like to hear what people have to say about this idea. 04:15:48 -!- Sgeo has joined. 04:17:38 GregorR-L? 04:18:08 It's reserving 1424 bytes, then storing to 1428. 04:18:25 I understand MIPS assembly. I was asking for your opinion. 04:18:40 Oh, I hadn't read it, I'm on #mipslinux hoping for some help with that X-P 04:19:50 I'm confused. 04:20:00 it's kinda "arty" 04:20:08 hence "experimental comics time" 04:20:42 Unfortunately, I'm generally incapable of appreciating art >_> 04:20:50 http://193.33.156.5/Database/Filestore/allyouneedislove.jpg 04:26:44 I guess if I was going to define my "statement", the idea came to me from looking at a lot of pictures of graffiti. People carrying conversations and shouting out their proclamations to the world without saying a word, and for all the pain, hatred and suffering, there is still joy and optimisim. 04:27:38 "there is beauty here, if you know how to see it." 04:40:20 RodgerTheGreat: i like it 04:40:27 thanks, lament 04:40:47 what did you come away from it with? 04:40:49 also, cool photo :D 04:42:27 i can't say i come away from it with much... i just like it 04:42:39 (that's also true of all the great masterpieces, don't feel bad) 04:42:49 yeah, it's all good 04:43:00 your sig is weird 04:43:21 it's a stylized "JE" 04:44:42 ah 04:44:58 what did it look like to you? 04:45:52 either an i ching pattern, or a little like the chinese character for rain 04:45:59 but clearly something asian :) 04:46:04 haha- cool 04:46:23 can you link me to an image of the "rain" character? 04:46:49 http://z.about.com/d/chineseculture/1/0/v/Y/rain.gif 04:47:07 I like it 04:47:16 chinese characters in general are amazingly cool 04:48:15 of all the things for my signature to resemble... rain. fitting. 04:53:22 yes, very. Why? 04:56:42 I like rain. For so many people it seems to represent sadness, but I find joy in the rain. I want to live under the grey skies of my home state again. 04:58:08 i like rain, but i don't like grey skies. 05:01:39 學 05:02:06 that's a traditional chinese character meaning "education" 05:02:13 the bottom half is a child 05:02:27 the top half is stuff falling into the child's open head 05:02:29 sick 05:02:39 poetic 05:02:51 same thing :) 05:25:29 haha 05:25:31 -!- GreaseMonkey has joined. 05:25:37 hey, GreaseMonkey 05:25:46 'lo 05:52:22 l 05:57:13 good night everyone 05:57:23 -!- RodgerTheGreat has quit. 06:31:01 -!- Sgeo has quit ("Ex-Chat"). 06:31:05 -!- GregorR-L has quit ("Leaving"). 06:32:48 -!- atsampson has quit (Read error: 113 (No route to host)). 07:34:38 Well, I got a little bit farther with JSMIPS ... and now I'm having the malloc problem again (y'know, the problem I fixed) 07:35:46 ARGH - damn it. My "fix" to malloc, I've just realized, was actually a bug I inadvertently introduced while trying to fix something else. Now I've fixed that bug X_X 07:54:13 -!- Iskr has joined. 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:33:45 -!- atsampson has joined. 08:37:16 -!- ais523 has joined. 08:37:47 -!- thutubot has joined. 08:56:29 -!- adu has quit ("Bye"). 09:07:44 -!- atsampson has quit (Read error: 113 (No route to host)). 09:33:46 -!- atsampson has joined. 09:49:13 -!- GreaseMonkey has quit ("zzz"). 10:07:54 OMFG O_O 10:07:58 newlib was actually broken O_O 10:08:20 It was trying to mark bins as used or unused, but it expected 'unsigned long' to be 64 bits, so it could mark 64 bins. 10:08:36 unsigned long is 32-bits on ... uh, just about everything, including the default MIPS ABI. 10:08:49 So it was shifting off the edge >_< 10:16:12 http://www.codu.org/jsmips/ YAY 10:16:17 OK, next step ... fibonacci? 10:25:32 OK, can't print numbers greater than 9 X-D 10:31:53 ahahahah 10:32:07 GregorR: why not? 10:32:11 is it a problem in printf? 10:41:32 Haven't diagnosed it yet. 10:41:46 It's going into a perhaps-infinite loop in memchr 10:50:33 +quit 10:50:34 -!- thutubot has quit ("ThutuBot quitting"). 10:50:38 -!- ais523 has quit ("food, will be back later"). 11:11:12 -!- ais523 has joined. 11:11:16 -!- thutubot has joined. 11:21:32 -!- thutubot has quit (Read error: 104 (Connection reset by peer)). 11:24:08 -!- ais523 has quit (Read error: 104 (Connection reset by peer)). 11:42:36 Deewiant, I tried to build cfunge on windows using MSVC++ Express, it didn't hit a POSIX issue, it failed to find stdint.h and that is C99................... 11:43:31 AnMaster: VC doesn't support C99 11:43:56 AnMaster: and in any case, the windows C runtime library (MSVCRT) doesn't support C99 stuff so even using MinGW doesn't help 11:44:07 since your printfs won't work, for instance 11:44:39 although maybe, since you're using only the format strings defined in the std headers, they might work... dunno 11:44:48 (e.g. %I64d instead of the standard %lld) 11:45:02 assuming the MinGW headers are smart enough to define stuff the way the libraries are 11:47:42 Deewiant, so basically Windows doesn't do C99? 11:47:49 that bad, didn't expect it 11:48:12 -!- ais523 has joined. 11:48:41 -!- thutubot has joined. 11:49:01 Deewiant, I was planning to add #ifdef to allow non-posix, but if it can't even do C99... 11:49:43 Deewiant, I may get access to a solaris on ultrasparc system next week (or it may be freebsd on ultrasparc), plan to test it on it if I can 11:50:43 Deewiant, anyway know any non-gcc compiler that can actually do C99? 11:52:57 GCC doesn't do C99. It only does most of it. http://gcc.gnu.org/gcc-4.3/c99status.html 11:53:07 Granted, it's a lot more of C99 than MSVC. 11:53:17 yeah I know that 11:53:35 fizzie, and I don't use most of it, what I want to make sure is that I'm not using GCC extensions 11:53:43 I know I can compile on non-glibc 11:53:47 I tried on freebsd 11:53:51 but well that is still gcc 11:54:39 fizzie, anyway the code worked fine under gcc 3.x last I tried (about a week ago, may not work any longer) 11:54:45 3.4 I think I tried 11:55:17 I normally use 4.1.2, but it works on 4.2 too 11:56:30 If you're speaking of Windows compilation, lcc-win32 is free-for-non-commercial-use and claims to support "95 %" of c99 (according to it's author), but I wouldn't know any details about that. 11:56:54 lcc hm? 11:57:14 there is always mingw I guess 11:57:22 I don't think lcc-win32 has the posix combattability things mingw has, though. 11:57:28 hm true 11:57:55 -!- ais523 has quit (Read error: 104 (Connection reset by peer)). 11:58:01 I do use posix stuff but well I aim for #ifdefs where needed 11:58:09 There was a printf patch on the mingw mailing list which made it automagically convert %..ll to %..I64 on Windows, but I couldn't find out whether they actually applied it. 11:58:53 fizzie, I use use the defines from inttypes.h for that 12:01:11 Well, that would work. At least in my /usr/i586-mingw32msvc/include/inttypes.h it has the correct prefix. 12:01:27 -!- thutubot has quit (Read error: 104 (Connection reset by peer)). 12:38:32 -!- ais523 has joined. 12:39:32 -!- thutubot has joined. 12:39:45 -!- atsampson has quit (Read error: 104 (Connection reset by peer)). 12:44:28 -!- atsampson has joined. 12:54:28 AnMaster: the mingw headers do appear to be correct for MSVCRT, checked 12:54:46 and it appears fizzie already told you, too 13:04:08 -!- jix has joined. 13:12:53 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)). 13:13:06 -!- Judofyr has joined. 13:46:39 -!- Tritonio_ has quit (Remote closed the connection). 13:52:17 Deewiant, hm no mkdir/chdir/rmdir function!? 13:52:20 functions* 13:52:38 and strdup not in normal header? 13:52:59 mkdir is posix 13:53:14 and strdup? 13:53:16 and strdup is docced at http://msdn2.microsoft.com/en-us/library/ms235454(VS.80).aspx 13:53:24 according to google anyway 13:53:26 see what they say 13:54:37 guess too old mingw maybe 13:54:47 as I gave up on msvc 13:58:07 CMakeFiles/cfunge.dir/src/instructions/sysinfo.obj(.text+0x2fb):sysinfo.c: undefined reference to `environ' 13:58:09 lovely 13:59:00 environ doesn't exist 14:01:07 #ifdef __WIN32__ 14:01:07 / Fake it! 14:01:07 static const char * environ[] = { "SYSTEM=wincrap", "SUPPORTS=not environ at least, get a sane system" }; 14:01:07 #else 14:01:07 # ifndef _GNU_SOURCE 14:01:09 extern char **environ; 14:01:11 # endif 14:01:13 #endif 14:01:15 there we go 14:01:17 :) 14:02:01 AnMaster: that's crap >_< 14:02:12 Deewiant, not my fault the system isn't sane 14:02:19 but yes I said it, wincrap 14:02:34 AnMaster: "sanity" is relative 14:02:47 I don't think the existence of extern char**environ defines sanity ;-) 14:02:57 Deewiant, oh? 14:03:09 Deewiant, it is how it is supposed to be declared 14:03:35 and who decides what's "supposed to be" :-) 14:03:43 POSIX in this case 14:03:52 where argc is the argument count and argv is an array of character pointers to the arguments themselves. In addition, the following variable: 14:03:52 extern char **environ; 14:03:52 is initialized as a pointer to an array of character pointers to the environment strings. The argv and environ arrays are each terminated by a null 14:03:52 pointer. The null pointer terminating the argv array is not counted in argc. 14:04:10 AnMaster: Windows is older than POSIX :-) 14:04:18 Deewiant, unix is even older :) 14:04:19 so you could argue that POSIX is insane ;-) 14:04:23 and it did it that way too iirc 14:04:47 probably, that's what the POSIX standard is mostly based on 14:05:09 * ais523 had heard that Windows was an insane implementation of POSIX 14:05:16 AnMaster: so now you're calling amiga "insane", too? ;-) 14:05:31 it's possible to download things from Microsoft such that Windows is POSIX-compliant, apparently 14:05:45 yep 14:05:53 or take the simpler alternative and use cygwin 14:05:55 but the result is the POSIX equivalent of a DS9K; yes, technically it complies with the spec, but nobody else does things like that 14:06:40 (also: cpp plus echo form a conforming C89 implementation, and cat is a conforming DIS29500 implementation, because sometimes the bars for conformance are set really low) 14:07:18 BTW, the echo says 'This is a diagnostic message. Compilation successful' 14:07:43 or something along those lines 14:07:50 the diagnostic message is very important, though 14:10:16 hah 14:12:29 (effectively, the standard says that you can implement anything you like as an extension, but have to put up at least one diagnostic when you do this) 14:12:47 (and if the original program was standards-compliant, your diagnostic is just a compiler warning) 14:13:15 the hardest part of complying with C89 is handling #error, which has to cause compilation to fail, but cpp can do that for you 14:15:04 the OOXML compliance rules, however, seem to be there just so people can't complian to Microsoft that they don't comply with their own spec 14:15:11 s/complian/complain/ 14:22:31 -!- oklopol has quit (Read error: 110 (Connection timed out)). 14:44:15 static const char * environ[] = { "SYSTEM=wincrap", "SUPPORTS=not environ at least, get a sane system" }; 14:44:21 I find I need to write a line 14:44:23 int finite; 14:44:28 eh? 14:44:29 to get C++ programs to link under DJGPP 14:44:33 well yes I did do that 14:44:42 what? 14:44:44 a new line yes 14:44:49 there isn't a finite defined anywhere in any standard relevant to that AFAIK 14:44:53 static const char * environ[] = { 14:44:53 "SYSTEM=windows crap", 14:44:53 "SUPPORTS=not environ at least, get a sane system if you want this to work." 14:44:53 }; 14:44:55 but the link fails if I don't do that 14:44:56 was my final version 14:45:09 ais523, what is int finite? 14:45:19 it doesn't do anything obvious 14:45:25 where is it used? 14:45:30 I thing libstdcxx references it by mistake 14:45:47 it certainly shouldn't be referencing it deliberately because it's in my namespace 14:45:55 but if it's not there I get a link error 14:46:17 mhm 14:46:21 well whatever 14:46:30 ais523, I do not target dos 14:46:48 most people don't nowadays 14:46:59 ais523, and MSVC I gave up on, but it does compile and run, with many warnings, under win32 using mingw 14:47:00 but of course, if you write strictly conforming C89, you target /everything/ 14:47:10 I write C99 + POSIX 14:47:35 some of C99 is good 14:47:38 but it never really caught on 14:47:47 well, it is in future I hope 14:47:51 stdint.h :) 14:59:22 ais523: 14:59:24 "but I won't fix any bugs that can't be reproduced on a POSIX 14:59:24 system. Patches are welcome if they don't mess up source too much (anything 14:59:24 using win32 API counts as messing up)." 14:59:50 * ais523 wonders if any win32 functions happen to be the same as POSIX functions by chance 15:00:06 I doubt it, though, because POSIX functions are generally lowercase, and Win32 API functions are generally CamelCase 15:00:14 was just about to say that 15:01:06 Deewiant, how can you get environment variables on windows just using C99 and NOT using windows API 15:01:20 * AnMaster changes that to Win32/64 just in case 15:01:21 fork() : 0 parameters 15:01:27 CreateProcessEx() : 7 parameters 15:01:27 ais523, eh? 15:01:40 the Win32 API is really quite bloated 15:01:44 yes indeed 15:02:00 and they failed to get it right first time 15:02:05 so that is why there is the Ex one 15:02:07 heh 15:02:08 thus the Ex at the end of the name 15:02:33 though of course POSIX isn't perfect either, consider tmpfile/mkstemp and whatever 15:02:43 yes 15:02:56 tmpfile was in C89, though, so it's probably the best one to use from a portability perspective 15:03:07 there's nothing in its definition that suggests that it has to be insecure, either 15:03:14 oh yes tmpfile and tempfile 15:03:20 never got the difference between them 15:03:36 (I was actually shocked to find that tmpfiles were often created on disk, because creating them entirely in memory complies with the standard just fine) 15:03:52 ais523, thankfully I currently don't need any temp files 15:04:03 C-INTERCAL has been known to use quite a few 15:04:12 temp .c files to feed to gcc, mostly 15:04:28 well yes 15:04:34 but on DOS, it also needs to create a response file to tell gcc what its command line is, because there's a limit on command line length in DOS 15:04:34 that would be a valid case 15:04:45 ais523, um that short? 15:04:54 127 chars, I think 15:04:59 oh that is short 15:05:14 ais523, even on POSIX the command line may have a limit 15:05:21 -!- RedDak has joined. 15:05:22 yes, but I don't reach it 15:05:24 that is one reason for xargs 15:05:43 ais523, I remember reaching it in one project, so many different *.o all on one line 15:05:51 in the final link line 15:06:15 * ais523 runs ls -l `find .` in their home directory just to see if it will work 15:06:42 somehow I doubt it 15:06:48 but it's possible that bash can handle that sort of thing 15:07:03 GNU tend not to like hard-coded limits 15:07:04 ais523, and of course the build system deciding to use something like build/x86_64-unknown-linux-gnu/src/blah.o for each entry didn't help 15:07:25 ais523, hm I think in recent kernels the space for command line arguments is dynamic 15:07:43 2.6.20 or later or something like that 15:07:46 AnMaster: I once wrote an IOCCC entry which defined no variables 15:07:56 it used the argv space, which is editable, to do all its calculations 15:08:02 obfuscated C? 15:08:13 yes 15:08:18 ais523, oh interesting, you needed to cast a lot of things then I assume? 15:08:22 anyway link to that thing? 15:08:36 AnMaster: it's not publically online, but as it lost I may as well paste it 15:08:58 I remember seeing something like a very simple flight sim with the source in the shape of a plane 15:09:05 IOCCC winner iirc 15:10:07 * ais523 tries to find the file 15:10:12 it's on here somewhere, I think 15:10:40 hm 15:10:48 ais523, -Wall -Wextra ? ;) 15:11:04 failed really badly 15:11:14 because I bet you need to cast things a lot 15:11:18 ais523, failed how? 15:11:23 at -Wall 15:11:26 ah 15:11:29 because there were lots of statements with no effect 15:11:33 that I put there deliberately 15:11:36 ah I see 15:11:41 and yes, the operator precedences were meant to be confusing 15:11:53 * AnMaster waits for ais523 to pastebin it 15:12:02 * ais523 waits for ais523 to find it 15:13:42 http://pastebin.ca/971073 15:13:53 it should have a blank line at the start but pastebin.ca keeps removing it for some reason 15:14:11 gcc '-D_(a,b,_,d,e)=while(a(d(e(_?putchar(b):(c=getchar())<0?b:c))))' -Dunsigned= -funsigned-char -ansi -o ioccc5 -O2 ioccc5o1.c 15:14:12 heh 15:14:13 is the compile line 15:14:26 wow 15:14:40 argv isn't unsigned char** in theory 15:14:43 but it has to be in practice 15:14:47 so I write unsigned char** in the program 15:15:02 I think it is signed char? 15:15:06 and then use -Dunsigned= -funsigned-char to make the program strictly conforming when I've told the compiler not to mess it up 15:15:09 AnMaster: it's plain char 15:15:18 which is either signed or unsigned depending on the implementation 15:15:27 on gcc you can choose which it is with command line arguments 15:15:37 that's what the -funsigned-char is for 15:15:43 ok 15:15:47 what does the program do? 15:15:53 lots 15:16:00 I don't dare to run it 15:16:06 I can't review it to be safe 15:16:17 there are 10 programs hidden in there 15:16:32 brainfuck too it seems? 15:16:33 and don't worry, it doesn't make any library calls but putchar and getchar 15:16:43 AnMaster: yes, the program's legal BF 15:16:50 legal Perl too, if you hadn't guessed 15:17:11 I can't see putchar mentioned anywhere? 15:17:18 it's in the gcc command line 15:17:24 so as not to spoil the appearance of the program 15:17:25 ioccc5o1.c:25:10: warning: trigraph ??) ignored, use -trigraphs to enable 15:17:26 hm? 15:17:37 sorry, I forgot to specify -trigraph 15:17:44 it's needed for the code to work properly 15:17:56 oh wait, -ansi turns it on 15:18:23 ah -E helps a bit 15:18:30 (trigraphs are an obscure and rarely-used C89 feature, but this time I was using them to type chars like ] with a sequence of characters that was nop in Brainfuck) 15:18:35 shows the pre-processes code 15:18:37 still weird 15:18:49 at least it helps you figure out which of the underscores are macro calls 15:19:08 $ gcc '-D_(a,b,_,d,e)=while(a(d(e(_?putchar(b):(c=getchar())<0?b:c))))' -Dunsigned= -funsigned-char -trigraphs -O2 ioccc5o1.c 15:19:09 (I use _ for a lot, because it's the only identifier I could use in that program, pretty much) 15:19:11 $ ./ioccc5 15:19:11 Segmentation fault 15:19:16 is that supposed to happen? 15:19:17 AnMaster: that's expected 15:19:21 why? 15:19:28 because you didn't give it a command-line arg 15:19:36 and what command line to give? 15:19:47 try ./ioccc5 `cat ./ioccc5` 15:19:57 does nothing? 15:19:59 sorry, ./ioccc5 "`cat ./ioccc5`" 15:20:08 ýýýýýýýýýýýýJGGGGGGA>>>>>>]ZZZZZZNKKKKKK?<<<<< right? 15:20:16 hmm 15:20:31 same result with -m32 15:20:31 try ./ioccc5 "a[-],[.[-],]" 15:20:35 that should give it away 15:20:50 no output, it just stands there 15:20:52 doing nothing 15:20:54 type some input 15:21:13 ok looks like it runs befunge? 15:21:15 err 15:21:17 brainfuck 15:21:18 I meant 15:21:20 yes 15:21:30 tape length is half the length of the original program 15:21:36 and it discards the first character of input 15:21:50 here, let me paste the shell script I wrote to extract the other programs from there 15:21:52 still this does not explain why it should work on it's own binary? 15:21:58 ah, it doesn't 15:21:58 sure 15:22:01 it works on its own source 15:22:07 which is legal BF, after all 15:22:36 yes let me see the perl source 15:22:46 is that another brainfuck interpreter? 15:23:19 no 15:23:24 no two programs do the same 15:23:42 incidentally, if any program needs input, giving it its own source code is often a good place to start 15:23:48 and remember that the file actually starts with a newline 15:23:56 yep 15:24:00 perl does nothing 15:24:03 whatsoever 15:24:09 $ cat ./ioccc5o1.c | perl ./ioccc5o1.c 15:24:10 $ 15:24:12 http://pastebin.ca/971083 15:24:13 that's all 15:24:22 extracts all the programs hidden in the original 15:24:29 and you need to use perl -p 15:24:42 no clue what perl -p does 15:24:53 puts the entire program in an implicit while(<>) loop 15:25:01 to prevent me needing to write a literal while in the program 15:25:17 temp.sh: line 71: ioccc5: command not found 15:25:21 why do I get that a lot 15:25:25 Generating the tab-removal program... 15:25:25 temp.sh: line 71: ioccc5: command not found 15:25:27 AnMaster: oh, I had . in my path 15:25:33 I forgot other people normally don't 15:25:43 change ioccc5 to ./ioccc5 throughout and it'll work 15:27:29 any of those is a quine of the thing? 15:27:36 no, unfortunately 15:27:53 there are programs to do RLE compression and decompression of BF files 15:28:27 they don't quite roundtrip, though, because the compressor can't handle tabs in the input and the decompressor leaves stray tabs in the output 15:28:34 (both compressor and decompressor are written in BF) 15:28:36 bfunzip.b is the same as ioccc5o1.c 15:28:37 says diff 15:28:39 yes 15:28:47 different language, so different extension 15:28:50 it's created using cp 15:28:53 and that was cat iirc? 15:28:58 or? 15:29:01 not quite cat 15:29:04 it's an RLE decompressor 15:29:07 eh 15:29:18 using tab as a metacharacter to talk about repetition 15:29:27 I see 15:29:34 hmm... pastebin may have eaten the tabs in the input, I'll paste it in filebin too 15:29:57 http://filebin.ca/dvpqm/ioccc5o1.c 15:30:18 oh, BTW, about one quarter of that big square of BF-like code at the top is just junk 15:30:23 but the other 3/4 are meaningful 15:30:41 also, I like the way I hid the actual cat program 15:30:54 you get it by uuencoding the original source with the filename [[ 15:31:21 and interpreting the result as BF 15:31:24 oh 15:32:34 ais523, how come your code lost? 15:32:43 oh wait, not all the programs where C? maybe that? 15:32:47 I don't know either 15:33:03 they've released the names of last year's winning programs 15:33:11 but not the programs themselves 15:33:18 so I don't know what the winners were like yet 15:33:43 also, not all 10 programs are all that useful 15:33:53 some are just extracting other programs from the original source 15:34:24 newline.txt 15:34:27 what is that one for? 15:35:00 AnMaster: it's a file containing just one newline 15:35:06 but why? 15:35:12 it's catted onto the end of files to ensure that they end with a newline 15:35:18 because otherwise sed discards the last line 15:35:27 ah you could use echo >> file 15:35:36 I didn't know that at the time 15:35:51 note that I use rm 2>/dev/null rather than rm -f, for instance 15:35:51 or just 15:35:56 cat $1 newline.txt | sed -f ioccc5.sed > temp.sh 15:35:59 convert to 15:36:10 ( cat $1; echo; ) | sed -f ioccc5.sed > temp.sh 15:36:31 yes, there were many better ways 15:36:38 ais523, yeah why the "rm 2>/dev/null"? 15:36:41 but 1) I didn't know shellscript at the time 15:36:53 2) that system had tcsh as the default shell, so you couldn't expect me to learn 15:36:55 everyone must know of rm -f at least 15:37:01 AnMaster: I didn't 15:37:13 I grew up on DOS, and that was towards the start of my use of UNIX 15:37:13 ais523, how did you remove directories locally then? 15:37:17 ah 15:37:38 AnMaster: rmdir exists on UNIX with the same semantics as it has in DOS 15:37:52 mhm 15:37:54 so I removed them by deleting all entries in them and then using rmdir 15:38:04 -_- 15:38:10 crazy 15:38:26 I knew about rm, cp, ls, cd and that was about it 15:38:36 to put it in perspective, it was a while before I discovered pwd 15:38:47 what about man? 15:38:59 I knew about man 15:39:04 ah 15:39:07 but I needed to know what argument to give it 15:39:14 and I was unaware of man -k 15:39:17 well the command would be a nice one 15:39:25 ais523, ah? man man ;D 15:39:38 I started learning a lot faster once I thought of that 15:39:51 heheh 15:39:58 note, however that throughout all this, I /still/ preferred UNIX to Windows 15:40:07 I see 15:40:22 (I remember originally finding the web browser by typing in the names of web browsers I knew until one of them worked) 15:41:07 (which is why I found the ancient version of Netscape, and used it for a while, before I found the merely very old version of Mozilla) 15:41:21 (and of course, neither of them work particularly well on many modern websites that aren't well-designed) 15:41:41 heh 15:41:46 ais523, how long ago was this? 15:41:55 over a year 15:42:02 maybe about two years ago 15:42:18 actually, thinking about it, it must have been december 2006 15:42:21 that recently 15:42:29 but the system I was on was really old, and hadn't been updated in years 15:42:33 ais523, I was in that phase around red hat 5.0 15:42:37 and I didn't even know DOS 15:42:39 I came from Mac 15:42:49 put it this way, it was 2006 and yet the system was still running CDE 15:42:51 red hat 5.1 or 5.0 or such 15:43:01 ais523, what OS was it then? solaris? 15:43:04 yes 15:43:07 hah 15:43:20 but all UNIXes are similar until you get down into the very technical details 15:43:26 still SPARC is a quite CPU really 15:44:02 ais523, indeed they are thanks to posix 15:44:35 without posix cfunge would not run on say freebsd, needed just one change, because I checked a certain optional posix feature incorrectly 15:44:57 ie, #ifdef foo instead of #if defined(foo) && (foo != -1) 15:45:10 #if defined(_POSIX_ADVISORY_INFO) && (_POSIX_ADVISORY_INFO != -1) 15:45:16 *seems* to be the correct way to check 15:45:18 not 100% sure 15:45:28 ah, the ehird-annoying microoptimisations 15:45:38 ais523, indeed, freebsd doesn't implement it 15:45:41 when I resort to microoptimisations, I generally do them in assembly 15:45:49 AnMaster: you can't get envvars without the winapi 15:46:04 Deewiant, well then windows basically sucks 15:46:04 if the project is one where using assembly isn't practical, then microoptimisation is the wrong idea 15:46:22 AnMaster: well, extern char**environ is the part of the POSIX API, so it makes sense that windows has its own API :-P 15:46:35 ais523, well I did notice a difference, I tested on a 10 MB large file from /dev/urandom 15:46:40 it did load the file faster 15:46:49 slightly 15:46:51 AnMaster: you want GetEnvironmentStrings and FreeEnvironmentStrings 15:46:57 assuming you want, that is. 15:46:57 Deewiant, not really 15:46:58 oh, for a moment I thought you were going to say that the difference was that /dev/urandom was different between the two systems 15:47:32 Deewiant: oh no, you just reminded me that in the Windows API all the functions which allocate resources have their own corresponding deallocators 15:47:41 ais523, nah it was generated with dd if=/dev/urandom of=test count=10M 15:47:45 or something like that 15:47:46 whereas in POSIX, close(), fclose() and free() are enough for most things 15:48:06 in Windows, how you free a string depends on which function you got it from... 15:48:13 ais523, ouch that hurts 15:48:29 ais523, well add munmap to that list actually 15:48:40 OK 15:48:47 although that's more unlocking, then freeing 15:48:53 hm ok 15:48:57 haven't used mmap a lot 15:49:09 (in Windows, things like resource data have to be allocated then locked, then once you're done with them unlocked then freed) 15:49:21 ais523, was thinking of anonymous backed memory, then munmap may be more like freeing actually 15:49:22 ais523: well, I think that makes sense because then you don't have to change your code if the upstream changes 15:49:24 (and using resource data is much like mmapping a file) 15:49:42 btw, I think there is a zsh extension to provide mmaped IO in zsh scripts 15:49:42 Deewiant: the whole point of Windows is that the upstream never changes, ever 15:49:51 because people distribute things as binaries, not source 15:50:08 so if the upstream changed, maybe you wouldn't have to change your source, but the binaries would stop working 15:50:09 ais523: between kernels, stuff changes 15:50:19 ais523: 9x/me vs 2000/xp vs vista 15:50:24 and pre-9x 15:50:29 Deewiant: yes, but they leave the old libraries there anyway 15:50:32 of course, they require huge compatibility layers 15:50:35 but they're different 15:51:03 ais523: so if you use free instead of freeEnvStrings your program might not work on a later kernel regardless of the fact that there's a compat layer available 15:51:08 I thought they left the old libraries there for old applications to link against, and added new ones implementing most of the new functions for the new ones 15:51:22 since it might be that freeEnvStrings used to be only free, but now does something more complicated/different anyway 15:51:41 Deewiant: I can see the reasoning in some cases 15:51:47 and that is retarded 15:51:53 the API gives me the strong suspicious than all objects are refcounted, for instance 15:52:01 ais523, indeed 15:52:21 but when the refcounting relies on the honesty of the applications you link against, it's no wonder that Windows isn't very good at cleaning up after crashed applications 15:52:30 (or wasn't around 9x when I learnt this stuff) 15:52:40 well, 9x ran on top of DOS :-) 15:52:46 ais523, well nor is xp 15:52:49 I can see how that might make cleaning stuff up harder 15:53:06 unused directories or files that can't be removed because they are in use are quite common 15:53:10 or multiprocess handling in general 15:53:13 after an application crashed 15:53:15 Deewiant, ^ 15:53:19 AnMaster: eh? never come across that 15:53:26 Deewiant, happens a lot to me on xp 15:53:36 never even heard of that happening 15:53:45 read about it, very common 15:53:48 if the process is gone, its locks are gone 15:53:55 though think only Swedish ppl complained 15:53:56 hm 15:54:07 AnMaster: what I can understand is if only the 'task' is gone from the task manager, the process might still be running 15:54:09 maybe translations go into the core and break something 15:54:10 heh 15:54:12 but the task manager is crap 15:54:14 heh 15:54:20 Deewiant: I've known it to be impossible to remove a USB stick safely because I opened a program from it with a badly behaved program earlier 15:54:22 * AnMaster prefers gettext 15:54:24 -!- boily has joined. 15:54:38 ais523, yeah that too 15:54:43 ais523: I haven't used such peripherals much, so that might be 15:55:34 oh and then requiring reboots for a library update 15:55:36 that is just insane 15:55:48 I updated glibc in multi user mode with no issues 15:55:54 without reboot after 15:56:34 AnMaster: Windows requires reboots for more or less everything 15:56:39 ais523, exactly 15:56:49 aye, and that sucks 15:56:51 I think because it doesn't have the concept of temporarily stopping a daemon while you change it 15:56:56 and also because you can't remove open files 15:56:56 yep 15:57:01 ais523, yes and another thing 15:57:01 yep 15:57:41 on linux removing a *.so loaded into a program causes no issues, the kernel make sure to read any bits of the file into memory that weren't before 15:57:43 then removes the file 15:57:50 and allow you to replace it with a new one 15:58:14 also, Linux *.so files are not as pervasive as Windows .dll files 15:58:31 as in, glibc might be important, but at least it doesn't tie up your entire API/windowing system 15:58:33 pervasive? 15:59:03 ais523, yeah indeed, I can upgrade stuff just fine while running 15:59:07 the most important dlls such as user, GDI and system (which ironically have a .exe extension) are in use constantly 15:59:16 it is odd that Mac OS X seems to want reboots every now and then 15:59:18 whereas glibc is just required for C programs to run 15:59:24 after all it is based on *bsd 15:59:34 in theory you could use syscalls directly instead, which can't be done in Windows 15:59:46 ais523, static binaries yes 15:59:57 there are no Windows static binary 16:00:07 'static' basically just means 'uses only GDI, user and system' 16:00:13 I think that is used to install glibc, or in the case of portage all the libraries are already loaded into the binary before it copies 16:00:17 and it does it in one go 16:00:20 ais523: and the C runtime, usually 16:00:32 ais523, I meant as in gcc -static 16:00:38 in my experience that was statically linked when I did a static build 16:00:43 "not dynamically linked" 16:01:05 as in "not depending on ld.so to be able to load" 16:01:08 that's what's wrong with Windows: all user programs link against the operating system 16:01:22 ais523, well I wonder how the OS is compiled 16:01:23 that simple fact explains quite a lot 16:01:25 or device drivers 16:01:52 AnMaster: user-mode device drivers would link against the OS. I don't know how kernel-mode device drivers work in Windows, usually they just don't 16:02:09 don't what? 16:02:21 and user mode device drivers? 16:02:34 like fuse? file system in userspace? 16:02:37 AnMaster: don't work 16:02:45 ah 16:02:48 user mode device drivers aren't common on Windows 16:02:59 but on Linux, many printer drivers are user mode, for instance 16:03:14 meaning that you can run them without linking them to the kernel, all you need is to be root 16:03:24 ais523, well windows need some kernel mode device drivers, IDE controller, or keyboard for example 16:03:26 whereas for a kernel device driver you need modprobe or similar to run them 16:03:35 AnMaster: all OSs need kernel mode device drivers 16:03:43 exactly 16:03:50 however, they're apparently the main cause of BSODs on Windows 16:04:00 indeed on NT/XP at least 16:04:13 9x may actually BSOD from anything 16:04:38 (apart from Windows 3.1, where most BSODs were recoverable; my favourite one was the 'please swap disks' bluescreen you got when using A: and B: simultaneously on a single-floppy-drive machine, not harmful at all and in fact useful) 16:04:54 BSODs were recoverable in 3.1? 16:05:12 you had two choices 16:05:24 you could press [ESC], and it would ignore the error and attempt to continue 16:05:33 or? 16:05:37 that worked sometimes, and if it failed you could bring the BSOD back up with Ctrl-Alt-Del 16:05:45 or you could press [Enter], which killed the process 16:06:04 and the process-kill actually worked, although it didn't deallocate memory so you often had to reboot after that 16:06:21 lol 16:06:30 -!- boily has quit ("Schtroumpf!"). 16:06:49 Ctrl-Alt-Del gave you a /voluntary/ BSOD in those days, so you could kill processes even if they'd done nothing that seemed wrong to the OS 16:07:05 and the BSOD was a useful tool for correcting unruly computers 16:07:22 how would you select what process to kill? 16:07:26 AnMaster: it chose for you 16:07:32 it tried to guess the one you were using at the time 16:07:36 and if you meant some other? 16:07:42 then you were screwed 16:07:51 you would try to alt-tab to it first, I suppose 16:07:57 reminds me of pre-OSX macos 16:08:21 they also tried to guess, think it was Alt-Apple-Esc 16:08:22 I'm not saying that this is a good system, just am amused that it was more reliable and useful than 9x's 16:08:33 ais523, indeed 16:09:17 actually, thinking about it, it's about as useful as XP's is 16:09:51 (the issue with XP's is that you need to bring up Task Manager, which runs along with your other programs, rather than being a 'behind the scenes' sort of emergency mechanism that couldn't be disrupted by the rest of your system 16:09:53 ) 16:10:01 indeed 16:11:13 ais523, any progress on your mad plans for funge and intercal 16:11:31 AnMaster: no, I'm busy with other things in RL at the moment, try asking again next week 16:11:35 also I have been thinking about producing a trefunge version as well 16:11:38 in future 16:20:26 compile time option probably for speed 16:22:25 nah, you could make it a command-line option sacrificing hardly any speed, by using defines between the Befunge/Trefunge version, #including your code into itself (appropriately guarded), and writing an appropriately guarded wrapper main() 16:22:25 of course there is no test suite for trefunge so .... 16:22:37 of course, doing it like that would be insane 16:24:58 including your code into itself? O_o 16:25:58 Deewiant: that's one way to have most of it duplicated in the binary 16:26:07 of course, you need to guard it properly to avoid an infinite loop 16:26:37 I also used it once when writing my own archiving utility that output C files that output the original files stored in the archive 16:27:01 what rc/funge does is that it has an #ifdef every time it pops a vector, I think 16:27:02 so that I could write C files whose functionality could be changed merely by appending to them, in completely standard C89 C 16:29:40 wow: http://thedailywtf.com/Comments/The-Test-of-Truth.aspx#188082 16:30:01 that's the sort of solution I'd like to have thought of, but I've never had to solve that particular problem before 16:36:54 well I store vectors as structs 16:37:13 you could still do it by doing name-mangling in the preprocessor 16:37:26 so only funge space and anything meddling with z dimension would need changing 16:37:42 as a sort of compile-time low-tech C++ alternative that loses no speed 16:37:45 ais523, and that sounds silly 16:37:56 however, I do not recommend doing it this way given your coding style 16:38:52 anyway after cfunge is done what I want to do is write an interpreter for some simple imperative language that uses multi char instructions 16:39:01 may be a chance to learn flex and such 16:39:32 * ais523 tries hard not to mention INTERCAL 16:40:06 that's not a particularly easy example to start with, but you'll learn a lot of flex and bison writing code to handle it 16:40:10 I know I did 16:41:55 ais523, I was reading ick_loose.h 16:42:01 #define IE997 "997 ILLEGAL POSSESSION OF A CONTROLLED UNARY OPERATOR.\n\ 16:42:01 ON THE WAY TO %d\n" 16:42:04 hm 16:42:15 that one didn't have a descriptive comment 16:42:17 what is it for 16:42:35 use of a unary operator that doesn't exist in your current base 16:42:38 such as BUT in base 2 16:42:45 *blink* 16:42:51 (base 2: AND, OR, XOR) 16:42:59 (base 3: AND, OR, BUT, XOR, sharkfin) 16:43:07 what is BUT for? 16:43:14 oh and sharkfin?! 16:43:22 AnMaster: noncarrying addition 16:43:27 is sharkfin 16:43:31 BUT is a bit harder to explain 16:43:37 tell me 16:43:50 in base 2, a AND b returns 0 if either a or b is 0, and 1 otherwise 16:44:02 likewise, in base 2, a OR b returns 1 if either a or b is 1, and 0 otherwise 16:44:23 in base 3, a AND b returns 0 if either a or b is 0, otherwise 2 if either a or b is 2, otherwise 1 16:44:30 ON THE WAY TO %d == line number? 16:44:37 and a OR b returns 2 if either a or b is 2, otherwise 1 if eitehr a or b is 1, otherwise 0 16:44:55 ais523, yeah but where does BUT fit in into that? 16:44:56 BUT is the remaining case that returns 1 if either a or b is 1, otherwise 0 if either a or b is 0, otherwise 2 16:45:21 as for ON THE WAY TO %d, it returns a prediction made by compile-time static analysis about which line would be the next one executed 16:45:30 normally the line after the line the error is on, but not always 16:45:43 /* (AIS) That stupid idiom in syslib was used. */ 16:45:44 hm? 16:45:48 #define W128 "128 SYSLIB IS OPTIMIZED FOR OBFUSCATION\n\ 16:45:49 ON THE WAY TO %d\n" 16:46:00 sorry, it's one of the things that annoys me 16:46:03 sloppy INTERCAL coding 16:46:19 they use a complicated mingled sequence to right-shift a 32-bit number, where a simple select would do 16:46:24 um intercal is obfuscated? 16:46:35 AnMaster: it's often described as a self-obfuscating language 16:46:36 ais523, you realize this is intercal you are talking about? 16:46:47 AnMaster: yes, but I see no reason for inefficient coding 16:47:20 it's like the x == true ? (x == false ? false : true) : (x == false ? false : true) that was featured on thedailywtf.com today 16:47:28 I don't like terribly redundant code in any language 16:47:29 anyway why not change syslib? 16:47:33 to not use that thing 16:47:39 AnMaster: sacrilege! 16:47:42 eh? 16:47:52 actually, syslib could do with a spring-clean 16:48:13 so far it's been preserved as close to the original manual as it could be whilst working 16:48:15 well implementing parts of it in C maybe? as gcc __builtin__ kind of? 16:48:21 AnMaster: I've done that already 16:48:29 ick -eE yourprogram.i syslibc 16:48:36 it was the first expansion library I wrote 16:48:43 mhm 16:49:49 http://elliotthird.org/mirror/c-intercal/ick-0.28/pit/explib/syslibc.c 16:50:10 oh and numbers seem totally out of order? 16:50:12 that should give you a good idea about how the C <-> INTERCAL linkage works 16:50:25 AnMaster: the error numbers don't follow any pattern as far as I know 16:50:36 nor does the warnings 16:50:40 except that sometimes I've tried to keep related errors with related numbers, but that's only the errors I've added 16:51:06 (e.g. the warnings that warn about a certain runtime error have error numbers closely related to those of those errors) 16:54:21 ais523, idea: for input of ONE TWO and such 16:54:25 why not gettext 16:54:34 to allow say ETT TVÅ in Swedish 16:54:42 as it asks "what language" 16:54:47 AnMaster: it allows a lot of languages already 16:54:48 it make me think of that 16:54:53 ais523, oh? 16:54:55 they're just not ones that you're likely to have heard of 16:55:01 * ais523 finds the list 16:55:03 ais523, Klingon? 16:55:18 AnMaster: there were attempts to add Klingon but it ran into problems, so it isn't supported 16:55:23 hahah 16:55:51 C-INTERCAL from version 0.10 16:55:51 onwards accepts English, Sanskrit, Basque, Tagalog, Classical Nahuatl, 16:55:51 Georgian, and Kwakiutl; also Volapu"k from version 0.11 onwards, and 16:55:51 Latin from version 0.20 onwards. 16:56:01 (quote directly from info C-INTERCAL) 16:56:06 Sanskrit I know of 16:56:10 India iirc 16:56:22 Basque spain iirc? 16:56:38 J-INTERCAL supports Esperanto, and CLC-INTERCAL supports Scottish Gaelic, in addition to that list 16:56:42 Georgian, I guess is the country 16:56:59 Volapuk was all the rage before Esperanto came along 16:57:00 ais523, ok, what about the ones I didn't identify? 16:57:05 ah ok 16:57:17 you can find out about the others in Wikipedia 16:57:22 mhm 16:57:32 (in fact, many of the languages have a Wikipedia written in them nowadays) 16:57:39 hhe 16:57:40 heh* 16:58:13 actually, the grammar of the language itself also accepts Latin 16:58:16 ais523, what spelling of "go home Romans" would it accept? ;) 16:58:26 or was it "Romans go home"? 16:58:31 AnMaster: only one that looked like numbers in one of the languages above 16:58:36 ah right 16:58:37 :/ 16:58:44 you seen Life of Brian? 16:58:52 AnMaster: only bits of it 16:58:56 oh ok 16:59:08 what I said was a reference to a scene in it 16:59:35 #ifdef __GNUC__ 16:59:35 __attribute__ ((noreturn)) 16:59:35 #endif 16:59:37 why that? 16:59:49 I prefer this in a header 16:59:51 #ifndef __GNUC__ 16:59:51 # define __attribute__(x) /* NO-OP */ 16:59:51 #endif 16:59:52 AnMaster: to suppress warnings about falling off the end of a function without returning 17:00:07 means I don't have to repeat the __GNUC__ every time 17:00:13 but I only use it once 17:00:20 ais523, it does return that function? 17:00:23 (well, twice, the other time's in ick_ec.h though so it doesn't count) 17:00:28 ick_lose doesn't return 17:00:30 it calls exit() 17:00:51 and it is void 17:00:59 so can't see why it would give a warning from gcc? 17:01:01 FAC ADVENIRE DE (1666) 17:01:08 ais523, ? 17:01:11 oh 17:01:11 AnMaster: because its source is not available during compilation 17:01:29 eh 17:01:39 AnMaster: I compile each .c file separately 17:01:44 yes so do I 17:02:00 so without the __attribute__ gcc doesn't know that ick_lose never returns while compiling perpet.c, for instance 17:02:00 oh you mean prevent warning in some *other* function? 17:02:04 yes 17:02:07 right 17:02:26 ais523, tell me if astyle works on ick_loose.c 17:02:28 I think it would 17:02:59 ais523, also why "extern" for all functions in headers, that actually prevents some optimizing that gcc can do otherwise 17:03:27 AnMaster: because they are extern, it wouldn't work otherwise 17:03:33 and astyle does work on ick_lose.c 17:03:39 eh 17:03:51 ais523, well if you just link those C files together it will work 17:03:59 the functions are called in lots of different files; if they weren't they'd be marked as static 17:04:14 extern void ick_lwarn(char *m, int n, /*@null@*/ char *s); 17:04:15 or 17:04:16 so the file which doesn't define the function needs the function marked extern in the header 17:04:19 void ick_lwarn(char *m, int n, /*@null@*/ char *s); 17:04:25 makes no difference basically 17:04:35 ais523, even if it is a different file 17:04:39 I know 17:04:50 but the declarations were inside functions originally, where it did make a difference 17:04:51 variables need extern 17:05:03 ais523, yes and that is bad style of coding 17:05:05 when I came to the code it was full of things like this: 17:05:10 int i, j, getopt(); 17:05:18 *blink* 17:05:30 so in some sense it's saner now than when I first came across it 17:05:40 because I changed all of those to proper prototyped declarations eventually 17:05:42 well you won't need extern any more 17:06:01 what difference does it make, by the way? 17:06:13 I thought it was completely irrelevant in that context 17:06:36 ais523, not really, it prevents inlining inside the same source file as defines the function iirc 17:06:40 bbl food 17:13:47 #if ICK_HAVE_STDINT_H+1 == 2 17:13:53 ais523, care to explain the logic there? 17:14:06 AnMaster: I'm differentiating between null string and 1 17:14:08 +1 == 2 is false 17:14:11 1+1 == 2 is true 17:14:32 try #if defined(ICK_HAVE_STDINT_H) && (ICK_HAVE_STDINT_H == 1) ? 17:14:47 AnMaster: it is defined, just as the null string, to say that STDINT_H isn't available 17:15:38 I see.. 17:16:03 ais523, "" == 1 is still faalse 17:16:06 false* 17:16:12 It isn't defined as "" 17:16:12 AnMaster: it's not "", it's nothing at all 17:16:14 it's defined as 17:16:17 it's just blank 17:16:20 #define foo 17:16:21 hm 17:16:26 right 17:16:31 but is that equal to 1? 17:16:36 +1 == 1 17:16:41 so +1 != 2 17:16:44 it could also be -1 == -1 17:16:52 #define foo 17:16:56 #if foo == 1 17:16:59 and then the check would be foo-1 == 0 17:17:00 that would not be true would it? 17:17:07 nope 17:17:10 Deewiant: yes, but I tend to think in terms of unsigned arithmetic while programming INTERCAL 17:17:13 but foo+1==2 would be 17:17:23 AnMaster: #if == 1 is a syntax error, which is what your example would expand to 17:17:25 ais523: whatever makes sense, either is fine 17:17:45 Deewiant: I know, I was just analysing why I picked unary + rather than unary - for the test 17:17:59 ais523, wouldn't it be easier to just use #ifdef and only define it if it is available? 17:18:08 AnMaster: blame autoconf 17:18:19 I think autoconf does #undef for those? 17:18:25 yes, normally 17:18:37 normally? 17:18:40 you get those by #including "config.h" 17:18:53 yep 17:18:56 but in this case, the code is potentially in someone else's code, so it has to be name-mangled 17:19:03 so instead I pass the value in via -D on the command line 17:19:12 well you can tell autoconf to use something else than config.h 17:19:16 say ick_conf.h 17:19:19 or whatever you want 17:19:25 AnMaster: it's not config.h that's the problem, but the identifiers it #defines 17:19:34 hm ok 17:19:36 they don't start with ICK_ or ick_ and therefore could clash with user code 17:20:01 ais523, well ick_* could also clash, ick is not a registered trademark or anything ;) 17:20:06 but less likely yeah 17:20:13 AnMaster: I tell people not to use those indentifiers in the C-INTERCAL manual 17:20:15 AnMaster: no, but at least you can document that if you use ick_* it's your fault :-P 17:20:19 s/indentifiers/identifiers/ 17:20:23 Deewiant: I did 17:20:32 correct 17:20:32 ais523, anyway it is very likely cfunge got stuff that could clash, but I didn't intend it to be included anywhere 17:20:39 some use FUNGE_* but far from all 17:20:47 AnMaster: that's why I mangled at my end 17:20:53 mhm 17:21:13 that is one thing c++ got right, namespaces 17:21:17 it is a good idea 17:21:54 that, and the parts of the template system that don't cause bloat 17:22:08 in C you have to resort to tgmath macros to do that sort of thing 17:22:12 a proper module system would be nicer 17:22:15 ais523, also why are two of the error defines duplicated in ick_ec.h? 17:22:16 also, // comments, but they're in C99 17:22:28 AnMaster: because ick_ec.h is the only header included in foreign programs 17:22:38 tgmath? 17:22:44 so it has to do everything itself and avoid anything that might clash with the program it's included in 17:22:49 not sure gcc does it? 17:22:53 AnMaster: it's a C99 header, #include 17:23:04 ais523, yeah 17:23:32 ooh 4.1 got the header 17:23:58 ais523, btw did you know about pahole? 17:24:09 AnMaster: no 17:24:13 nice tool that analyzes debug info in binary and finds holes in structs 17:24:26 and shows (hopefully) what re-arranging would help make it smaller 17:24:57 AnMaster: so far I haven't had a need to micro-optimise C-INTERCAL 17:25:02 ais523, developed for linux kernel 17:25:03 http://rafb.net/p/l6jKMH41.html 17:25:14 AnMaster: pragma pack? 17:25:14 is the result for any structures with at least one hole in cfunge 17:25:21 Deewiant, performance issues with that 17:25:25 Deewiant: that causes misaligned accesses 17:25:30 Deewiant, and breaks on some arches 17:25:33 it doesn't do rearranging? 17:25:34 reordering elements is more efficient if you can get away with it 17:25:38 Deewiant: no 17:25:44 damn, it sucks :-P 17:25:52 or is there a good reason for that 17:26:06 there is 17:26:06 Deewiant: the C standard 17:26:13 which says what 17:26:17 ais523, anyway what makes it more complex for cfunge is that some stuff can be either 32-bit or 64-bit 17:26:19 also, imagine if two different compilers reordered in different ways 17:26:32 well pragma pack isn't standard anyway 17:26:34 or is it, nowadays? 17:26:40 Deewiant: it says that struct elements are in the same order in memory as they are in the program 17:26:45 and no, #pragma pack isn't standard 17:26:49 ais523, s_ImplementedFingerprintEntry is in fact optimal for 64-bit data types on 64-bit systems 17:26:52 or 32-bit on 32-bit 17:26:57 the standard pragmas all go #pragma STDC 17:27:05 but not 32-bit funge types on 64-bit 17:27:22 ais523: but since you need to use the same compiler anyway, it doesn't matter, or? 17:27:40 Deewiant: have you never linked together programs from different compilers before? 17:27:46 nope 17:27:49 it used to be very common back in the days of DOS 17:27:56 or if I have, I've used a converter tool in between 17:27:58 ais523, it still is on windows 17:28:00 and you effectively have to do it like that if the programs are written in different languages 17:28:01 kind of 17:28:03 implib -> dll to lib 17:28:09 coff2omf -> change object format 17:28:11 and then compile 17:28:18 * ais523 has also used implib 17:28:27 but it doesn't translate the dll into a lib 17:28:39 it just generates bindings for the dll that can be linked into a program 17:28:50 of course 17:28:57 /* This is ugly but unless gcc gets appropriate builtins we have to do 17:28:57 something like this. Don't ask how it works. */ 17:29:00 but it is a lib file :-) 17:29:07 (a comment from the version of tgmath.h on my system) 17:29:28 -!- boily has joined. 17:29:38 ais523: but, uh, if one compiler #pragma packs a struct then you can't reliably use the resulting object file with other compilers anyway 17:30:09 Deewiant: yes, that's a good reason to use pahole instead 17:30:41 but one purpose of pragma pack is to conform with a known byte pattern that another compiler has produced 17:30:41 so why can't #pragma pack do rearranging 17:31:05 e.g. you know that you need to access a struct consisting of a char followed by a misaligned int 17:31:07 assume we've told it to just "make this struct as small as possible" 17:31:11 so you write the appropriate struct 17:31:17 (e.g. %I64d instead of the standard %lld) 17:31:18 hm 17:31:20 a #pragma shrink would be more interesting 17:31:22 I was wondering about that 17:31:25 Deewiant, it seems wrong 17:31:29 I For decimal integer conversion (i, d, u) the output uses the locale's alternative output digits, if any. For example, since glibc 2.2.3 this will 17:31:30 give Arabic-Indic digits in the Persian (`fa_IR') locale. 17:31:33 from man page 17:31:44 64 is a Microsoft extension 17:31:45 says glibc specific though 17:31:48 AnMaster: "instead of the standard" 17:31:53 ah 17:31:54 AnMaster: meaning, %lld is the standard 17:31:55 right 17:31:57 yeah 17:32:21 -!- boily has quit (Client Quit). 17:32:30 I meant to say 64 is a microsoft extension, but my client ate the for some reason 17:32:55 hmm... it seems to eat it even in the middle of lines 17:32:55 your client is something weird on %I 17:32:57 Deewiant, anyway, consider cache size 17:33:05 you want the members in order of access too 17:33:16 say you use one almost all the time, but another member very seldom 17:33:16 ais523: I, at least, see an inverted-color I in place of %I for your messages 17:33:33 my client puts everything between the two symbols into italics 17:33:49 and thutubot sees it as a tab 17:33:53 AnMaster: you'd have to have the whole struct in cache anyway, you can't separate it 17:33:54 ais523, and that fails here 17:34:07 ais523: ah, I think irssi displays tabs as inverted-color I 17:34:09 Deewiant, oh? 17:34:14 Deewiant, you can load a part of it 17:34:18 AnMaster: I'm not doing it deliberately, juts wondering why my client's doing that 17:34:35 testing: %a%b%c%d%e%f%g%h%i%j%k %A%D%E%F%H%J%K 17:34:42 only I breaks 17:34:52 B, C, and G as well for me 17:34:57 ah, true 17:35:00 don't see them at all 17:35:03 testing: %a%b%c%d%e%f%g%h%i%j%k %A%D%E%F%H %J%K 17:35:07 is what I see here 17:35:14 yes, it's what ThutuBot sees too 17:35:14 -!- RedDak has quit (Read error: 104 (Connection reset by peer)). 17:35:15 ( ais523) testing: %a%b%c%d%e%f%g%h%i%j%k %A%D%E%F%HI%J%K 17:35:23 where I is inverted-colour 17:35:29 but I think that's an irssi setting of some kind 17:35:51 I was wondering if it was because Control-I = tab 17:35:52 ais523, anyway the 32-bit/64-bit mix does complicate things heh 17:35:57 ais523: probably. 17:36:45 Deewiant, I saw %H %J 17:36:50 as a space in between 17:37:13 %B%C and %G were simply missing 17:37:52 yes, I saw your message 17:38:08 well, for me the %J and %K were in bold italics, the %D, %E, and %F were in bold, and % followed by G had been replaced by a square 17:38:15 Deewiant, well since it was a copy paste I was afraid it would be like unicode 17:38:21 abcdef 17:38:22 some clients can't show unicode 17:38:24 but if you paste it 17:38:32 it looks like unicode to the sender again 17:38:47 hmm, and the % followed by C turns the rest of the line to black, from its default red-for-messages-I-sent 17:39:00 ais523, likely color code 17:39:03 but it is blocked here 17:39:05 +c mode 17:39:14 of course since irc doesn't echo 17:39:17 ah, that would explain a lot 17:39:18 the client can't know that 17:39:31 I thought +c kicked people who used colour, rather than just blocking it 17:39:45 but if it's that easy to type by mistake, I can see why it's implemented this way now 17:39:47 ais523, on some it strips, other it blocks 17:39:52 don't think it kicks anywhere 17:40:02 on freenode I think +c strips 17:40:10 what's the difference between strips and blocks here 17:40:12 on unreal and inspircd, +S strips, and +c just blocks 17:40:19 do you mean blocks as in the message doesn't get through? 17:40:20 ais523, no difference, there is none to block here 17:40:25 ais523, yep that is what I mean 17:40:38 as in "sorry you can't use colors when sending to this channel" 17:40:42 or something like that 17:41:03 ais523, somewhat like trying to talk when +m is set (+m is mode all non-"voice or above") 17:41:45 voice being +v, +o being op, some ircds got other levels, like "half op", "administrator" and "channel owner" 17:42:00 or an arbitrary subset of them heh 17:42:05 all seems to have +v and +o though 17:42:23 hmm, I tried to privmsg me, you and Deewiant the same thing that I sent to the channel to see what happened when the +c wasn't on 17:42:38 but freenode errored, saying I could only send to 1 recipient at a time 17:42:46 that's a violation of the standard, isn't it? 17:42:47 ais523, of course 17:42:52 3 recipients doesn't seem excessive anyway 17:43:02 ais523, um sending to several targets is an extension I think 17:43:09 not part of standard is it? 17:43:14 I thought it was in the original RFC 17:43:17 * ais523 searches 17:43:26 ais523, even if it is, no one would care 17:43:31 no one follow the standard 17:43:47 sure they do 17:43:52 they just limit it or extend it in some ways 17:44:17 see 17:44:19 "It is recommended that only Operators be allowed to kill other users with KILL message. In an ideal world not even operators would need to do this and it would be left to servers to deal with." 17:44:26 "recommended" eh 17:44:27 RFC 1459 says that it's possible to send to a comma-separated list of receivers 17:44:39 AnMaster: so? 17:44:50 Deewiant, irc used to allow any user to kill 17:44:55 AnMaster: and services should also be allowed to kill users 17:45:08 ais523, yes but any user was the original 17:45:09 that fits within the spirit of that restriction, though 17:45:14 AnMaster: yeah, because back then only smart people were on the internet 17:45:20 anyway services didn't exist back at RFC 1459 17:45:27 Deewiant, indeed 17:45:36 so killing a user was a technical means to prevent IRC collapsing, rather than a social means to get rid of someone? 17:45:44 (e.g. killing your own ghost?) 17:45:46 spamming and script kiddies and such was an unknown concept 17:45:47 ais523, anyway comma-separated list of receivers is easy to abuse for spamming 17:45:53 ais523: that's how I understand it 17:45:53 so I can see why freenode doesn't do ti 17:45:55 it* 17:46:02 AnMaster: yes, if you put multiple channels there, or hundreds of people 17:46:03 but 3? 17:46:11 [407] PRIVMSG Too many recipients. Only 1 processed 17:46:11 ais523: 3 is still 3 times more than 1 17:46:23 Deewiant, :) 17:46:25 Deewiant: sending a message to #esoteric is a whole lot more than 1 17:46:25 consider that you're limited in the number of lines you can send 17:46:37 ais523, ah but they could just part 17:46:44 ais523: okay, so I guess it could handle channels and users separately 17:47:15 but the thing is, if you can send, say, 3 lines per second 17:47:31 then wheras you could previously spam 3 dudes per second you could then spam 9, 12, or 15 dudes per second 17:47:35 or whatever 17:47:53 with minimal bandwidth use 17:47:54 Deewiant, of course you could add one to the counter for each recipients 17:48:06 heh 17:48:16 so since people rarely want to send stuff to multiple people, just limit it to 1 to minimize spamming possibilities 17:48:24 Deewiant, indeed 17:48:53 sauna now -> 17:49:14 I only wanted to send to many on an irc network I'm oper on, and there I wanted to send to *everyone*, therefore pperserv global 17:49:17 operserv* 17:51:48 /* More than one COME FROM references the same label. */ 17:51:48 #define IE555 "555 FLOW DIAGRAM IS EXCESSIVELY CONNECTED\n\ 17:51:48 ON THE WAY TO %d\n" 17:51:57 ais523, didn't you say that was for threading? 17:52:14 the error is for the absence of threading 17:52:18 ah 17:52:34 anyway I don't see anything in ick_ec.h for removing comefrom? 17:52:46 what do you mean by 'removing' here? 17:53:04 ais523, as in someone using p in fungespace to overwrite the come from marker 17:53:16 or overwrite it's arguments 17:53:23 ick_ec.h can't be used directly to interface with Befunge 17:53:30 it's designed to link to C 17:53:44 ah so you would make ick_ebef.h or such? 17:53:49 that's it 17:54:27 ICK_EC_FUNC_START(ick_my_custom_syslib) <-- I hate that way of doing a function 17:54:28 :/ 17:54:50 AnMaster: that's because it has to place a wrapper around your function 17:54:58 so it translates into some code with unbalanced braces 17:55:17 ais523, mhm? 17:55:34 ais523, now THAT could be a problem for astyle 17:55:35 I bet 17:55:48 when checking for COME FROMs, your function is called, but the code inside it doesn't execute 17:56:16 instead it just uses goto to jump from one ick_comefrom to the next, and eventually returns with information about whether any of the COME FROMs there were aiming at the line label, and if so which one 17:57:00 no goto in cfunge, the only one I got is in a function that I took from gnulib 17:57:09 maybe hash library got something too 17:57:22 what C *should* have is a break statement to break multiple levels 17:57:31 break 2; 17:57:32 that would remove the last remaining need for goto really 17:57:38 ais523, doesn't work in C iirc? 17:57:43 no, it doesn't 17:57:49 in bash it does 17:58:06 does it allow expressions in place of the constant 2? 17:58:15 in bash? probably 17:58:17 that would be the INTERCAL-style method of doing things 17:58:19 haven't tried 17:58:42 ais523, but for break I can't really see the need for that 17:58:48 but of course, bash is interpreted, making that sort of thing easy 17:59:03 AnMaster: in INTERCAL-72 that sort of thing is the only way to make a conditional branch 17:59:20 ais523, mhm mad 17:59:27 of course it is intercal 17:59:39 well, you have computed ABSTAIN and computed COME FROM too in modern C-INTERCAL 17:59:47 I find computed ABSTAIN to be the least insane method 17:59:56 what is abstain exactly? 18:00:22 tells a particular command not to be executed 18:00:25 also what is latin1.bin and idiotism.oil? 18:00:40 in fact what is oil? 18:00:42 latin1.bin is a binary file containing a description of the latin-1 character set, for use by convickt 18:00:44 in this case 18:00:49 idiotism.oil is a set of optimiser idioms 18:01:02 and OIL was a language I invented specifically to write them in (it stands for Optimiser Idiom Language) 18:01:13 there's a description of it in the C-INTERCAL docs 18:01:14 uhu 18:01:23 ais523, but why? 18:01:29 previously they were written in C, but that became unmaintainable 18:02:31 look at temp/idiotism.c (the compiled version of the OIL) and you'll see why; all the C looked like that originally 18:03:09 OIL was the best solution to managing the optimiser idioms that I could think of 18:03:17 how does gcc does it's optimizing? 18:03:44 ((_1 ^ #{1}2) << #{1}3)->((_1 << _3) ^ #{x2< with what is after it? 18:03:49 that's it 18:03:55 allowing some variables perhaps? 18:03:58 yes 18:04:05 #{1} means any constant 18:04:08 ah 18:04:21 and where is that in the output? 18:04:31 x2 fetches the value of #{1}2 18:04:40 ah 18:04:43 and is used in an expression used to calculate a constant that appears on the RHS 18:04:55 ais523, and what do you do if there is a literal such thing in the source? 18:05:01 there isn't 18:05:04 do you use \ to escape? 18:05:11 AnMaster: it's not textual substitution 18:05:15 it's matching parse trees 18:05:19 aha 18:05:22 so syntax errors aren't matched against, for instance 18:05:36 INTERCAL doesn't use parens for expression grouping, so that's a giveaway 18:05:59 well I don't really know intercal 18:06:37 ais523, anyone wrote an intercal interpreter in intercal yet? 18:06:54 the _1 above on the LHS matches any expression, and on the RHS inserts a copy of expression 1 18:06:56 AnMaster: no 18:07:04 INTERCAL's a hard language to write interps for anyway 18:07:36 there is a befunge93 interpreter in befunge93, almost exact except it reserves a few columns at the edge iirc 18:07:41 and it's still harder to compile, although still possible 18:07:56 AnMaster: presumably it just loads the input into fungespace and transfers control to it? 18:08:20 ais523, no it doesn't 18:08:41 ah, it uses fungespace to store the input but implements all the commands 18:08:48 it requires the files to be pre-combined because befunge93 doesn't have file io 18:09:01 and it does implement all the comands 18:09:04 commands* 18:09:10 ais523, I'll try to find url 18:09:28 Befunge-93 is easier to interpret than INTERCAL, although harder to compile 18:09:53 first befunge in unefunge 18:09:54 http://www.quote-egnufeb-quote-greaterthan-colon-hash-comma-underscore-at.info/befunge/unebef.php 18:10:03 then befunge in befunge: 18:10:05 http://www.quote-egnufeb-quote-greaterthan-colon-hash-comma-underscore-at.info/befunge/jbefbef.php 18:12:28 AnMaster: it still cheats slightly; operations which don't affect flow control are implemented by effectively evalling the instruction by copying it into the interpreter's space 18:12:44 ah haven't looked that closely 18:13:12 ais523, but well befunge93 interpreter in funge98 should probably be way easier 18:13:24 yes, it should 18:13:31 and you can stay well out of its program space 18:13:40 exactly 18:13:46 hmm... a befunge98 in trefunge98 would be interesting 18:13:49 not that I'm going to write it 18:13:57 you could hide from its program space there too 18:14:07 indeed 18:14:18 ais523, yet the befunge in unefunge is totally mad 18:16:45 ais523, this is a cool tool 18:16:45 http://www.frox25.no-ip.org/~mtve/code/eso/bef/bef_bef/befbef2.png 18:17:15 tracing program execution, I take it? 18:17:23 aye, but only -93 18:17:28 indeed 18:17:47 but if the source is available I may be able to do something based on it 18:17:59 it would really help when fuzz tests go wrong 18:18:48 AnMaster: implement your debugger API and then it should be fairly easy to write something which takes trace output + a source file and draws something like that 18:19:42 you could even write it in Funge, along the lines of that TURT quine 18:20:33 Deewiant, indeed but I'm still working on details 18:21:24 hmm... I wonder if anyone's ever written a quine like that in Logo? 18:25:51 Deewiant, indeed I won't touch http://www.frox25.no-ip.org/~mtve/code/eso/bef/bef_vis/ 18:25:53 it's perl 18:25:54 eww 18:26:39 doesn't look that bad to me 18:27:13 but if you know GD / any graphics lib you might be better off starting from scratch, yes 18:30:54 -!- RedDak has joined. 18:32:22 -!- Tritonio_ has joined. 18:35:09 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)). 18:35:41 -!- Judofyr has joined. 18:51:58 +quit 18:51:59 -!- thutubot has quit ("ThutuBot quitting"). 18:53:52 -!- thutubot has joined. 18:54:03 +ul (:aSS):aSS 18:54:24 aha, it obeys the IRC standard properly now, unlike the other bots in here that send messages 18:54:46 auto-generated messages are meant to be notices, so as to avoid infinite loops like the one I set up earlier 18:56:12 may as well check it in the other direction too 18:56:27 good, it didn't reply 18:56:38 -!- jix has quit (Nick collision from services.). 18:56:48 -!- jix has joined. 18:57:51 ais523, bad idea, for many clients that cause a beep 18:58:06 ais523, better make it send errors as /notice only 18:58:07 is this a case of things not obeying the standard again, then 18:58:20 I'll change it back to privmsg 18:58:25 clients bell on notices? O_ooo 18:58:32 Deewiant, seen it happen 18:58:33 but first I want to test this 18:58:44 ais523, oh and many ircds got a mode to block channel notices 18:58:56 +ul (:*:*:*:*:*:*:*:*)()~()~(((a(:^)*a(!!!!!!!!!^)~*^):^))~^a(((*)~a*^(((((1)S!^)((1)S!!^))~^)(!(((2)S!^)((2)S!!^))~^)(!!(((3)S!^)((3)S!!^))~^)(!!!(((4)S!^)((4)S!!^))~^)(!!!!(((5)S!^)((5)S!!^))~^)(!!!!!(((6)S!^)((6)S!!^))~^)(!!!!!!(((7)S!^)((7)S!!^))~^)(!!!!!!!(((8)S!^)((8)S!!^))~^)(!!!!!!!!(((9)S!^)((9)S!!^))~^)(!!!!!!!!!(((0)S!^)(()S!^))~^((a(:^)*a(!!!!!!!!!^)~*^):^)))~a(:^)*~^):^)~*^^^!^!^!^!^!^!!!!!!!!!!!!()~((0)S!)~^^ 18:59:06 wow, that was quick 18:59:11 +ul (:*:*:*:*:*:*:*:*:*)()~()~(((a(:^)*a(!!!!!!!!!^)~*^):^))~^a(((*)~a*^(((((1)S!^)((1)S!!^))~^)(!(((2)S!^)((2)S!!^))~^)(!!(((3)S!^)((3)S!!^))~^)(!!!(((4)S!^)((4)S!!^))~^)(!!!!(((5)S!^)((5)S!!^))~^)(!!!!!(((6)S!^)((6)S!!^))~^)(!!!!!!(((7)S!^)((7)S!!^))~^)(!!!!!!!(((8)S!^)((8)S!!^))~^)(!!!!!!!!(((9)S!^)((9)S!!^))~^)(!!!!!!!!!(((0)S!^)(()S!^))~^((a(:^)*a(!!!!!!!!!^)~*^):^)))~a(:^)*~^):^)~*^^^!^!^!^!^!^!!!!!!!!!!!!()~((0)S!)~^^ 18:59:19 hmm, what language is that? 18:59:21 slightly longer that time 18:59:25 olsner: Underloa 18:59:28 s/$/d/ 18:59:36 it's an itoa program 19:00:01 at the moment it does numbers up to 6 digits; it's trivial to make it handle bignums, but that makes it exponentially slower 19:00:28 +quit 19:00:29 -!- thutubot has quit ("ThutuBot quitting"). 19:00:58 -!- thutubot has joined. 19:01:00 +ul (:*:*:*:*:*:*:*:*:*:*)()~()~(((a(:^)*a(!!!!!!!!!^)~*^):^))~^a(((*)~a*^(((((1)S!^)((1)S!!^))~^)(!(((2)S!^)((2)S!!^))~^)(!!(((3)S!^)((3)S!!^))~^)(!!!(((4)S!^)((4)S!!^))~^)(!!!!(((5)S!^)((5)S!!^))~^)(!!!!!(((6)S!^)((6)S!!^))~^)(!!!!!!(((7)S!^)((7)S!!^))~^)(!!!!!!!(((8)S!^)((8)S!!^))~^)(!!!!!!!!(((9)S!^)((9)S!!^))~^)(!!!!!!!!!(((0)S!^)(()S!^))~^((a(:^)*a(!!!!!!!!!^)~*^):^)))~a(:^)*~^):^)~*^^^!^!^!^!^!^!!!!!!!!!!!!()~((0)S!)~^^ 19:01:19 1024 19:01:22 that got it thinking 19:01:33 underloa got a webpage? 19:01:40 http://esolangs.org/wiki/Underload 19:01:59 oh, *that's* what you meant with s/$/d/ 19:02:22 and BTW, Thutubot's written entirely in Thutu piped both ways to netcat, including its Underload interp 19:02:34 don't put invalid syntax in, though, because it makes it infinite-loop at the moment 19:03:12 and don't put infinite loops in, because they make it infinite-loop too 19:03:44 +ul (:*:*:*:*:*:*:*:*:*:*:*)()~()~(((a(:^)*a(!!!!!!!!!^)~*^):^))~^a(((*)~a*^(((((1)S!^)((1)S!!^))~^)(!(((2)S!^)((2)S!!^))~^)(!!(((3)S!^)((3)S!!^))~^)(!!!(((4)S!^)((4)S!!^))~^)(!!!!(((5)S!^)((5)S!!^))~^)(!!!!!(((6)S!^)((6)S!!^))~^)(!!!!!!(((7)S!^)((7)S!!^))~^)(!!!!!!!(((8)S!^)((8)S!!^))~^)(!!!!!!!!(((9)S!^)((9)S!!^))~^)(!!!!!!!!!(((0)S!^)(()S!^))~^((a(:^)*a(!!!!!!!!!^)~*^):^)))~a(:^)*~^):^)~*^^^!^!^!^!^!^!!!!!!!!!!!!()~((0)S!)~^^ 19:03:49 you mean you haven't solved the halting problem yet? that's trivial! 19:04:00 hm 19:04:06 ais523, what language is that exactly? 19:04:09 I haven't implemented any sort of cutoff for overlong programs, either 19:04:12 AnMaster: Underload 19:04:14 ah 19:04:26 (that is, overlong in time taken to run) 19:05:01 2048 19:05:08 hmm, isn't thutu basically sed but with differenet flow control? 19:05:21 olsner: that's one way to think of it 19:05:25 but they feel different to write in 19:06:02 Thutu doesn't have a hold space, for instance 19:06:07 but it's really important in sed 19:06:40 +ul (::*::**:**)()~()~(((a(:^)*a(!!!!!!!!!^)~*^):^))~^a(((*)~a*^(((((1)S!^)((1)S!!^))~^)(!(((2)S!^)((2)S!!^))~^)(!!(((3)S!^)((3)S!!^))~^)(!!!(((4)S!^)((4)S!!^))~^)(!!!!(((5)S!^)((5)S!!^))~^)(!!!!!(((6)S!^)((6)S!!^))~^)(!!!!!!(((7)S!^)((7)S!!^))~^)(!!!!!!!(((8)S!^)((8)S!!^))~^)(!!!!!!!!(((9)S!^)((9)S!!^))~^)(!!!!!!!!!(((0)S!^)(()S!^))~^((a(:^)*a(!!!!!!!!!^)~*^):^)))~a(:^)*~^):^)~*^^^!^!^!^!^!^!!!!!!!!!!!!()~((0)S!)~^^ 19:06:40 13 19:06:57 hmm, I guess string rewriting is just string rewriting after all 19:07:13 but it's nice to have regular expressions to do it with 19:08:50 +ul (()(*))(:^:S*a~^a~!~*:(/)S)::::::::::::************^ 19:08:51 */*/**/***/*****/********/*************/*********************/**********************************/*******************************************************/*****************************************************************************************/************************************************************************************************************************************************/****************************************************************** 19:10:36 +ul ((:*)(::**))(:^:()~()~(((a(:^)*a(!!!!!!!!!^)~*^):^))~^a(((*)~a*^(((((1)S!^)((1)S!!^))~^)(!(((2)S!^)((2)S!!^))~^)(!!(((3)S!^)((3)S!!^))~^)(!!!(((4)S!^)((4)S!!^))~^)(!!!!(((5)S!^)((5)S!!^))~^)(!!!!!(((6)S!^)((6)S!!^))~^)(!!!!!!(((7)S!^)((7)S!!^))~^)(!!!!!!!(((8)S!^)((8)S!!^))~^)(!!!!!!!!(((9)S!^)((9)S!!^))~^)(!!!!!!!!!(((0)S!^)(()S!^))~^((a(:^)*a(!!!!!!!!!^)~*^):^)))~a(:^)*~^):^)~*^^^!^!^!^!^!^!!!!!!!!!!!!()~((0)S!)~^^*a~^a~!~*:( )S) 19:10:52 +hello 19:10:52 Hello, ais523! 19:11:03 +ul ((:*)(::**))(:^:()~()~(((a(:^)*a(!!!!!!!!!^)~*^):^))~^a(((*)~a*^(((((1)S!^)((1)S!!^))~^)(!(((2)S!^)((2)S!!^))~^)(!!(((3)S!^)((3)S!!^))~^)(!!!(((4)S!^)((4)S!!^))~^)(!!!!(((5)S!^)((5)S!!^))~^)(!!!!!(((6)S!^)((6)S!!^))~^)(!!!!!!(((7)S!^)((7)S!!^))~^)(!!!!!!!(((8)S!^)((8)S!!^))~^)(!!!!!!!!(((9)S!^)((9)S!!^))~^)(!!!!!!!!!(((0)S!^)(()S!^))~^((a(:^)*a(!!!!!!!!!^)~*^):^)))~a(:^)*~^):^)~*^^^!^!^!^!^!^!!!!!!!!!!!!()~((0)S!)~^^*a~^a~!~*:( )S)::::::::********^ 19:11:43 -!- thutubot has quit (Remote closed the connection). 19:11:54 OK, I think I messed up somewhere 19:11:57 I have to go, anyway 19:12:02 -!- ais523 has quit ("(1) DO COME FROM ".2~.2"~#1 WHILE :1 <- "'?.1$.2'~'"':1/.1$.2'~#0"$#65535'"$"'"'&.1$.2'~'#0$#65535'"$#0'~#32767$#1""). 19:46:59 Deewiant, I'm working on a library for the debug protocol now 19:47:45 to make it simpler to write both clients and interpreters supporting it 19:47:48 C library of course 19:48:02 but no fancy calling conventions in it, just C99 19:55:49 -!- Sgeo has joined. 20:05:40 * SimonRC decides he likes MC Frontalot 20:05:53 Also, gratuitous mutation sucks. 20:06:04 well, I don't like it 20:06:29 So, you want to create a list that is a filtered version of another list. 20:07:54 Do you [a] allocate a new empty list, and add all applicable items from the old list or [b] allocate a new list with the same contents as the old one, grab its iterator, and use Iterator.remove() to remove all the stuff you don't like? 20:07:59 blither 20:08:39 * SimonRC decides that a license should be needed to use the iterator mutation functions 20:09:13 # you are likely to be beaten by a grue # 20:09:26 # If this fate seems particularly cruel, # 20:09:49 # Consider whose fault, it could be # 20:10:12 # Not a lamp or a match in your inv-ent-or-y # 20:13:57 waitamo... 20:14:10 -!- RodgerTheGreat has joined. 20:14:14 # Not a torch or a match in your in-ven-to-ry # 20:14:23 RodgerTheGreat: hi 20:14:24 howdy 20:14:40 RodgerTheGreat: waddya think of MC Frontalot? 20:14:45 SimonRC: you-are-like-ly-to-be-eaten-by-a-grue 20:14:58 s/eaten/ea-ten/ 20:15:03 nonono, that's not the rhythm 20:15:29 you/are-like-ly/to be/eaten-by-a-grue 20:15:56 I'm not familiar with too many of his songs, but what I've heard I liked 20:15:59 eyah, approx 20:16:06 *yeah 20:16:16 ok... 20:16:19 kinda a Jonathan Coulton vibe except more hip-hop 20:16:41 MC Frontalot, Lemon Demon, Tom Lehrer, and Weird Al. 20:16:44 need moar 20:17:12 also, need less songs about relationships 20:17:21 flight of the conchords 20:17:22 or rather, don't need more 20:17:29 see http://www.youtube.com/watch?v=WGoi1MSGu64 for instance 20:17:39 unless they ALSO include secret lairs on skullcrusher mountain 20:17:57 RodgerTheGreat: or S&M, or really bad pairing, or etc 20:18:22 because those things are funny and creative in many cases 20:18:30 yes 20:18:49 or the love of man and crayola 20:21:54 what is "MC Frontalot"? 20:24:07 http://frontalot.com/index.php/ 20:24:21 the populariser of nerdcore rap 20:36:04 nerdcore? 20:36:08 wtf is that? 20:41:34 -!- vixey has joined. 20:42:49 -!- vixey has set topic: http://bespin.org/~nef/logs/esoteric/ --> STRING p="STRING p=?;print(p[:9]+REPR 34+p+REPR 34+p[11:])";print(p[:9]+REPR 34+p+REPR 34+p[11:]). 20:43:05 I bring quines of ALGOL 20:43:27 68 20:43:54 hooray 20:44:25 I found an awesome book today at a book sale entitled "Programming Languages: Design and Implementation" from 1975. It's great. 20:44:39 it doesn't even *mention* C or C++ (for obvious reasons). 20:45:17 cool good find 20:45:28 I'm reading CTM it's totally great 20:45:29 the main "case study" chapters talk about FORTRAN, ALGOL 60, COBOL, SNOBOL, PL/I, APL and LISP 1.5 20:45:34 :o 20:45:39 definitely worth $.25 20:45:42 ahh, SNOBOL 20:45:43 I'm going to check for this at the library 20:45:52 one fo the great forgotten languagers 20:45:56 SNOBOL is this slick text processer? 20:45:58 language 20:45:59 it's by "Terrence W Pratt" 20:46:24 if I recall correctly. It's SNOBOL4, specificially. 20:46:35 * SimonRC wonders how history would have been different had K&R met Charlse Moore 20:46:45 I didn't know much about it aside from the name, but I intend to find out 20:47:04 Well, for a start the unix kernel would have likely been written in Forth... 20:47:24 SNOBOL was high-level, ISTR, with sirst-class string 20:47:25 s 20:49:00 of course, it came before structured programming won... 20:49:54 If FORTH had become the defacto standard for systems programming, everything would be awesome 20:50:01 indeed 20:50:11 well, some tings would have been better 20:50:33 others would be worse? 20:50:36 well, it would've decreased the chance of C++ taking hold, so that would definitely be better 20:50:44 we'd have FORTH++ instead 20:50:44 RodgerTheGreat, true 20:50:51 but C itself is good 20:50:52 OTOH, the forth we would be using would be huge and warty 20:51:04 it would be the Forth equivalent of C's C++ 20:51:10 Deewiant: yes 20:51:35 I'm not sure you can really *make* FORTH that huge and warty. It's so clean, ugly parts slide off, like (in theory) LISP. 20:51:48 hahaha 20:51:53 RodgerTheGreat, what about elisp? 20:51:55 :) 20:51:56 give mr. stroustrup two hours alone with any language and I'm sure he can ;-) 20:52:05 ansi forth is big(ish) 20:52:21 AnMaster: thus, "In theory" 20:52:26 RodgerTheGreat, hah 20:52:45 Deewiant: I think Stroustrup is the human incarnation of the "Ugly Stick" as far as languages are concerned. 20:52:47 RodgerTheGreat: *cough* COMMON LISP *cough* 20:52:58 o_O 20:53:05 I use Scheme when I feel lambda-ey 20:53:11 how can you say that Simon.. 20:53:21 lovely R5S5 20:53:41 well, Common LISP is rather bigger than Scheme 20:53:47 (even if it's missing some critically useful features like a random number generator and a system timer...) 20:54:01 r5rs isa nice core specification 20:54:12 it doesn't need a random number generator, that's a part of the standard library 20:54:12 and it has wonderful shit like symbol nil = variable nil = empty list = false 20:54:17 RodgerTheGreat, well, that's extreme, befunge got both 20:54:19 unfortunately scheme does not HAVE a standard library :( 20:54:50 lament: and therein lies the problem. 20:55:00 but MzScheme fixes that nicely 20:55:31 I am currently working on some Java that is in desperate need of light-order functions, or macros, or preferrably both 20:55:36 *higher-order 20:56:32 Java does not have a preprocessor, so you're slightly S.O.L. there. Is there a possibility that this could be fixed with some of the obscure features Java *does* have like gotos and anonymous classes? 20:56:45 I don't think so 20:56:50 dang 20:57:04 or at least, not clearly 20:57:12 RodgerTheGreat: but everybody hates mzscheme 20:57:14 So, on mildly related terms, I'm teaching a class this afternoon about Applet programming 20:57:19 and anonymous classes are not obscure in this code 20:57:28 RodgerTheGreat: teaching? 20:57:29 lament: I don't hate it yet, but we'll see how that develops 20:57:37 SimonRC: yeah, like a workshop 20:57:40 ok 20:58:10 but the things that Java has that are theoretically equivalent to other languages' cool stuff are too heavy-weight 20:58:21 oh gods, another thing 20:58:30 hm. That really does depend. 20:58:44 btw you can do really neat stuff in java 20:58:54 there are a lot of things that Java does that may seem heavyweight and are actually optimized out at runtime 20:59:01 you don't need macros 20:59:02 * RodgerTheGreat high-fives vixey 20:59:04 no, heavywieght for the programmer 20:59:16 a bit of reflection goes a long way ;P 20:59:34 <3 optimistic JIT compilation 20:59:44 dynamic dispatch can only be done on the "first argument" to a method, *and* all methods must be declared in the class of their "first argument" <-- killer combo 21:00:26 which means you can't add new methods that are only applicable to some modules 21:00:50 SimonRC: did you know that in Java6 you can compile and load source files on the fly? 21:01:05 fun 21:01:24 yeah, it's pretty psychotic when you really think about it but damned if it isn't nifty 21:01:49 (e.g. you want to stick graphics methods on things for when you draw them, and parsing methods for when you parse them, and generation methods for when you generate things on them, and so on, and before you know it every class is a huge pile fo semi-related shit. 21:02:15 or you get alarming collections of private static methods with lots of instanceofs 21:02:22 that sounds like it could be solved with container classes? 21:02:28 and perhaps an interface 21:02:49 ah, but these objects are in a big tree 21:03:08 and every time you get any children out of anything you would have to put them in containers 21:03:13 hmm 21:03:28 make, for example a ParseBox class that is passed a Box via the constructor. Depending on how you do things, you could make ParseBox implement, say, BoxAdapter 21:03:45 we already have 3 parallel trees 21:03:47 RodgerTheGreat: Did you know that in $YOUR_FAVORITE_DYNAMIC_LANGUAGE you can compile and load source files on the fly? 21:03:49 then all your method-extender container classes implement that single interface 21:03:59 hmm 21:04:26 GregorR: Did you know that $YOUR_FAVORITE_DYNAMIC_LANGUAGE probably doesn't JIT as fast as HotSpot can? 21:04:59 $MY_FAVORITE_DYNAMIC_LANGUAGE doesn't have a JIT as-is :P 21:06:25 -!- Tritonio_ has quit (Remote closed the connection). 21:07:48 (I has kitty) 21:07:54 huh? 21:08:13 I HAVE A PUSSY ... IN MY LAP 21:09:30 damnit, now I miss my cats 21:09:53 http://arcanux.org/lambdacats/io-monad.jpg 21:10:21 haha 21:10:51 * vixey feels like the kant haskell today cat :( 21:11:42 I feel like drawing something. Requests/ideas anyone? 21:11:55 PUSSY 21:12:04 (Your choice of interpretation of that word) 21:12:14 RodgerTheGreat: me (as you imagine me) 21:12:21 Hahahah 21:12:21 in fact, us, (as you imagine us) 21:12:27 English, right? 21:12:31 yes 21:12:43 So, bad teeth clenching a pipe and a top hat? 21:12:50 lol 21:12:50 *snork* 21:13:14 SimonRC: this is from the last time someone suggested I do that: http://www.nonlogic.org/dump/images/1203125875-tetsuoooo.png 21:13:46 ok 21:14:25 not good 21:14:42 this is why I like source images 21:14:59 there is a small chance I might find you one... 21:15:25 "oh, cool, that's one person who isn't a formless ball or brain in a jar" 21:15:36 eh? 21:15:44 Hey, I'm not a formless ball! 21:15:48 I'm a very formfull ball! 21:15:52 I'm ball-formed! 21:16:06 Gregor, for example, appears to be human because he has extensive photographic evidence of himself wearing amazing hats 21:16:26 Either that, or he has a really good model for POV-ray. 21:16:46 alternately, people can *describe* themselves and I will render my minds-eye version of that, but they tend to be inaccurate 21:16:48 oh, BTW, these are not source images: COBOL Bill: http://img.thedailywtf.com/images/mfd/mfd1_0800200c9a66.png My old SEng lecturer: http://www.cs.loyola.edu/~kbg/kbgsmiling.JPG 21:17:02 surely not a co-incidence? 21:17:10 haha 21:18:14 (COBOL Bill is off of Mandatory Fun Day, to worst (and only) webcomic ever to be part of TDWTF.) 21:18:17 http://rodger.nonlogic.org/comics/Comic016.png 21:18:24 I think I'm going to make that "people from the internet" picture my avatar. 21:18:34 GregorR: haha- awesome 21:18:58 hehe 21:19:02 I heard that my sister set this as her desktop: http://www.nonlogic.org/dump/images/1202607439-DrumsCantMakeAMinorsRetards.png 21:20:44 heh 21:21:06 and this image is currently winning the Nonlogic Dump War: http://www.nonlogic.org/dump/images/1203194372-saur.png 21:21:55 so, any other suggestions? 21:22:50 * SimonRC suddenly finds an old pic he did 21:23:12 -!- timotiis has joined. 21:23:27 -!- oklopol has joined. 21:25:56 Well, please excuse my poor artistic skill... 21:27:22 and a warning in view of what happened last thime I shew it to people... 21:27:29 I never bash anyone's drawing skills 21:27:44 note that *no* genetalia/reproductive organs/whatever are involved in this pic. http://users.durge.org/~sc/Kigdatsi/pics/invite-only/Kig_20070922.png 21:28:02 the wings really do get in the way or drawing them 21:28:28 *of 21:29:12 oh yes, I think I remember the discussion this spawned last time 21:29:19 ok 21:29:24 nice dragons 21:29:46 vixey: dragon-shaped, but technically not dragons 21:29:52 vixey: do you draw at all? 21:30:07 yeah sometimes, not like I used to though 21:30:23 ooh, can we see some of your stuff? 21:30:25 what are they, if not dragons? 21:30:32 Kigdatsi 21:30:41 don't bother with Google 21:30:45 I don't have anything online 21:30:52 :< 21:31:08 if I draw anything good in the future ill upload :p 21:31:20 I have a great image host if you ever need one: http://www.nonlogic.org/dump/ 21:31:49 well, the usual way to get good any drawing (well anything) is lots of enthusiasm which causes lots of practice 21:32:12 definitely 21:32:37 also, make it *difficult* practice 21:32:51 many times getting a new tool gives me inspiration, too. I spent at least 5 hours a day for week after I got my tablet doodling on my computer 21:33:04 if you only do stuff you are confident in, then you end up re-doing the same thing 50 times 21:33:22 like this guy (not me): http://ebondragonart.com/dragon_art_gallery.html 21:33:42 ("how about a new angle, like, *not* from the side?") 21:33:52 * SimonRC is in a ranty mood 21:34:35 that's one of the reasons I really like doing comics- lots of opportunities to try out new ideas compositionally 21:37:04 hmm 21:37:15 Suppose dogs (or similar) did visual arts 21:37:30 how would they show who was who? 21:37:56 because they recognise more by smell and less by appearance than humans do 21:38:49 maybe some system of symbols near each subject's arse that sybolically represent their smell 21:39:25 I'd imagine a smell-oriented artist would use substances with different smell properties rather than pigments, and I bet composition would work quite a bit differently because rather than shapes in space you're concerned with the mixing of smell carriers in the air 21:39:53 alas, there are far more components to smell than to color, especially to a dog 21:40:01 so composing would be hard 21:40:42 well, are you suggesting that oil paintings capture anywhere near as many properties of light and color as our eyes are capable of experiencing? Art is representational 21:40:54 hmm 21:41:24 I mean, look at my cartoons- they look almost *nothing* like actual people you interact with in real life, but you still recognize them as people 21:41:31 oil paintings have a much easier job: colour only has a few components 21:41:36 RodgerTheGreat: yes 21:42:05 I wonder if that same would work for smell 21:42:13 ysee... 21:42:33 vision is like a map from R^2 to R^3 21:42:44 other way around no? 21:42:47 smell is rather like a member of R^9999 21:42:51 vixey: no 21:42:58 for each position there is a color 21:43:00 roughly 21:43:36 the pixels in our eyes are arranged in an array with directions in it 21:43:38 SimonRC: you're tremendously oversimplifying vision, seriously. 21:43:49 I am approximating 21:44:21 smell sensors aren't arranged in any particular order 21:44:30 you can't have a "line" in the nose 21:44:35 eeh 21:44:46 "pixels" sounds like a bad term 21:44:49 indeed 21:45:10 I am talking about the problem of vision more than the solution that we have 21:45:11 "pixels" in our eyes are not arranged in a uniform pattern. Cone response to color is not restricted to their main target color, and different cone types are not overlaid, they're staggered randomly 21:45:22 yes, yes, yes, yes 21:45:29 -!- oerjan has joined. 21:45:49 some people even have four types of cones, rather than 3 (mostly women, I think, because it's a dual-X trait) 21:45:55 yes also 21:46:03 I was considering all of those 21:46:35 every degree of complexity you can ascribe to smell can also be ascribed to color, so saying "Smell is more complex and Color is easy" is a tremendously ignorant assertion. 21:46:47 * oerjan prefers 3 ice cream scoops rather than 3 cones 21:46:53 RodgerTheGreat: hmm 21:47:08 I'd posit that the main reason you come to this conclusion is because you're more familiar with technology for reproducing visual imagery 21:47:17 hmm 21:49:18 anyway, bbl- gotta get some food 21:50:04 well, smell would be simpler if we only had a few dimensions of it... 21:50:12 * SimonRC thinks of ideas... 21:50:25 like taste... 21:50:38 oerjan: tongue taste, at least 21:51:33 the problem of detecting the spectra of light coming in from various angles is a regular one 21:52:04 whereas the collection of airborne molecules is just a big semi-irregular collection 21:52:41 if I give you all directions, you can sort them roughly as to how close they are to a given direction 21:53:21 if I give you (in description) all pure frequencies of light, you can sort them in an obvious order 21:53:48 if I give you (by description) all small scented molecules, you can classify them in 10001 ways 21:54:21 OTOH 21:54:48 If a few scents are considered much more important than others, you can concentraste on those for representationality 21:54:55 *concentrate 21:56:52 -!- pikhq_ has joined. 21:59:36 SUPER DANCE EXPLOSION TIME 22:00:07 did you know... 22:00:39 in C#, booleans can be other values than true or false, but there is no easy way to write that in C#? 22:01:06 because boolean is an 8-bit type, but C# on has the literals true (1) and false (0) 22:01:16 That's true in plenty of languages. 22:01:46 but for C#, other .net languages might produce other values for a byte 22:02:16 so you can acquire a boolean that is represented as a byte containing two, but you can't actually produce it, in C# 22:02:32 um, I think 22:02:37 I might be BSing here 22:02:49 char a = 2; 22:02:56 bool b = *(cast(bool*) &a); 22:02:57 GregorR: that is not a boolean 22:03:05 You are not patient :P 22:03:06 oh, waitamo... 22:03:22 does that actually work? 22:03:26 or is it restricted 22:03:27 In D? Sure. 22:03:36 I don't speak C# :P 22:03:55 My point was that that's not even remotely rare. 22:04:11 GregorR: you can't do bool b = 2 then? 22:04:34 Idonno, you might be able to, but it would probably implicitly cast to 'true' if you did, and so b would actually be 00000001 22:04:41 ew 22:04:52 ok, so I hadn't heard of that 22:04:59 ? 22:05:46 I didn't know D did that 22:06:00 I don't know if D does that (bool b = 2), it may just be a type error :P 22:08:09 I have returned 22:08:13 lies 22:08:36 no lies, only heresy 22:09:11 ooh 22:09:23 it seems that .NET booleans are 32-bit actually 22:09:51 wtf 22:10:07 although that may be related to how their VM is designed 22:10:21 in arguments, at least 22:10:46 but there may be a protocol for compressing multiple bool arguments together 22:11:07 am I allowed to say this is really, really stupid, or would that make me a fascist that doesn't appreciate "art"? http://dvice.com/archives/2008/03/cup_pc_concept.php 22:11:11 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)). 22:11:21 -!- Judofyr has joined. 22:12:13 -!- pikhq has quit (Read error: 110 (Connection timed out)). 22:12:19 "holographic projector"? 22:12:33 we can't do free-standing holograms yet 22:16:34 -!- jix has quit ("This computer has gone to sleep"). 22:18:16 like I said, it's a really, really stupid idea 22:18:27 "impractical" doesn't do it justice 22:18:40 waitamo... 22:18:51 how does one type on it? 22:18:55 or surf the web 22:19:01 -!- pikhq_ has quit (Read error: 104 (Connection reset by peer)). 22:19:01 or, well, anything 22:19:14 "free of the burden of user interfaces", that's how. 22:19:22 which means jack 22:19:31 bbl 22:21:54 -!- pikhq has joined. 22:22:20 so yesterday i got really stoned and had an epiphany 22:22:32 that will hopefully make me a much better mandolin player 22:22:32 stoned on what? 22:22:37 pot 22:22:38 erm... 22:22:40 ok 22:23:19 well there were some kids smoking outside my house 22:23:29 part of the epiphany is that mandolin is a really kick-ass instrument for playing melody (its fretboard maps particularly well to the underlying structure of western tonality) 22:23:29 so I played whitehouse really loud at them and they all left ^-^ 22:23:53 they couldn't handle it 22:28:48 hmm 22:28:57 also it's depressing how crappy guitars are, in comparison 22:29:19 in terms of it being harder to see where the right notes are 22:35:02 -!- jix has joined. 22:35:09 yo 22:35:38 lol 22:35:44 -!- jix has quit (Client Quit). 22:36:31 otoh, that cup would be the perfect thing to dring Google Gulp from: http://www.google.com/googlegulp/ 22:39:56 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)). 22:40:34 -!- Judofyr has joined. 22:40:45 -!- jix has joined. 22:43:32 what is that thing in the topic? 22:43:57 a quine i guess 22:44:07 ALGOL 22:44:08 well yes 22:44:11 vixey: ah, ok 22:52:17 -!- RedDak has quit (Remote closed the connection). 22:56:51 -!- jix has quit ("This computer has gone to sleep"). 23:10:54 -!- oerjan has quit ("Good night"). 23:25:47 RodgerTheGreat: Actually, do you mind if I put that (people from the Internet) on a T-shirt? 23:25:48 * SimonRC goes 23:33:43 It's later, show up already :P 23:35:43 -!- oklofok has joined. 23:36:32 -!- oklopol has quit (Read error: 104 (Connection reset by peer)). 23:56:17 lament: what 23:56:19 ... 23:56:30 lament: what's mandolin's errr 23:57:12 okay i can't find a word for this, i'll just google :-) 23:58:27 cgcg is better than eadgbe? 23:58:34 i will have to disagree on that one 23:59:22 frets work as they do in a guitar, i'm sure 23:59:28 it's just how you tune the strings that matters 2008-04-05: 00:04:56 i always disliked guitar's b and e, the fact you can play a few chords easier isn't really worth losing the simple structure of 4ths 00:05:05 same with piano 00:05:37 it would be such a nice instrument if you could put a black key between e&f and b&c 00:05:43 * oklofok hates 00:06:33 s/could/just 00:12:02 ... 00:12:32 If you put a black key between E&F, it would be (logarithmically) half the difference between any other two notes, that would be nonsense. 00:14:37 GregorR: naturally all intervals should be chromatic steps 00:14:42 whatever they're called 00:15:04 So, you're just saying that you don't like that the Piano is "tuned" to a C scale by default. 00:15:08 i mean, physically between e and f, not logically 00:15:12 yes 00:15:18 Got it, OK, that makes more sense :P 00:15:26 heh :D 00:15:51 well given my explanation about guitar you might have caught what i was going for... or not, i'm not that good at explaining. 00:16:21 I wasn't actually following the conversation, just caught that bit :P 00:16:28 I'm just waiting for RodgerTheGreat to reappear :P 00:17:05 it's not a conversation, it's a monologue! 00:20:23 oklofok: mandolins are tuned in fifths, GDAE, same as violins 00:20:47 the article said they sometimes do, indeed 00:20:54 it's the standard tuning 00:20:55 i assumed that's a rarer tuning 00:20:59 no, it's standard 00:21:04 but okay, that is better than guitar's 00:21:09 it's better than everything 00:21:13 for analogy with piano 00:21:16 imagine playing in the key of c 00:21:28 and now, imagine playing in the key of c no matter what key you're actually playing in :) 00:21:37 there's only one scale to remember 00:21:42 Imagine playing in the key of C... 00:21:46 duh 00:21:49 Then putting down your C trumpet and picking up a Bb trumpet ... 00:21:50 (well, not really. but more or less) 00:21:53 And playing in the key of Bb! 00:21:58 :P 00:22:08 lament: that is true of guitar too 00:22:25 on guitar, there's a whole bunch of scales to remember thanks mostly to that third between G and B 00:22:42 so there's at least 5 pretty different major scales 00:22:42 depends on the amount of frets 00:23:05 but true, pure 4ths or pure 5ths is better 00:23:39 5ths is a little better because you don't need to shift the position as often 00:23:48 because the majority of notes fall under your fingers anyway 00:24:09 -!- Tritonio_ has joined. 00:24:20 on guitar, more notes are outside the position 00:24:33 and you have to shift or stretch to get them 00:26:02 dunno 00:26:28 5ths also reflect the structure of the scales themselves better 00:26:39 but i'd need to draw a picture to show that clearly 00:26:45 hmm 00:27:28 02302302 for guitar minor 00:27:28 on guitar, some of your fingers are wasted at any moment because they fall on frets which are out of the scale 00:27:38 02350135 for 5ths 00:28:13 adding another octave makes both crasg. 00:28:15 *crash 00:28:20 eg, you're playing minor, starting with the first finger, you play the first three notes 00:28:33 you use up first finger, third finger, fourth finger 00:28:42 and your second finger is wasted, you're unlikely to play that semitone 00:28:54 but on the mandolin, each finger corresponds to a note 00:28:58 not to a fret 00:29:13 (each finger corresponds to more or less two frets, and independently shifts between them) 00:29:24 true, true 00:29:27 so you play the first three notes with the first three fingers 00:29:40 yes, yes, i understand english, man :-) 00:30:42 the effect is somewhat like on the piano, where you don't waste your fingers either 00:30:54 i wont 00:30:56 * 00:30:56 if you're playing in C major, the fingers fall on the white keys, one finger per note 00:30:58 --- 00:30:58 won 00:31:03 okay, i can't type. 00:31:09 i won't disagree on that 00:31:10 anyway. 00:31:13 was what i tried to say 00:31:30 the thing about structure is better explained with a picture 00:31:36 that i'm too lazy / too at work to draw at the moment 00:32:25 i'm always interested to hear, so if you feel like drawing it later, do show 00:35:16 there's a particularly pretty correspondence with the cycle of fifths 00:35:24 and in particular, the cycle of modes 00:36:13 here's how it works 00:36:20 each scale is 2 tetrachords 00:36:34 tetrachord? 00:36:38 four notes in a row 00:36:46 ah 00:36:58 the cycle of modes goes lydian-ionian-mixolydian-dorian-etc 00:36:59 well scales are 7 notes 00:37:11 suppose we're in the key of c 00:37:22 lydian? 00:37:24 and ionian (major) mode 00:37:25 ionian? 00:37:29 mixolydian? 00:37:33 oh, okay, nevermind. 00:37:44 you can just tell me the numbes 00:37:46 *numbers 00:37:49 http://en.wikipedia.org/wiki/Musical_mode 00:38:09 i'll read after a while 00:39:44 better yet, http://en.wikipedia.org/wiki/Properties_of_musical_modes 00:39:56 that's something you should know regardless of the instrument you're playing 00:41:02 -!- timotiis has quit (Remote closed the connection). 00:41:07 dunno 00:41:15 well i didn't read the second one yet 00:42:35 it's fairly basic music theory stuff 00:42:43 non-esoteric 00:44:33 well i know it 00:45:10 i mean, i know the keys of the piano, and memorizing a few names isn't really all that useful imo 00:46:09 of course interesting to memorize what scales are using in different music styles 00:46:21 but it all seems a bit... informal 00:46:34 eh? it's very formal 00:47:46 well i'm not going to argue you, it's just i feel the current formalization of music isn't really all that optimal 00:47:53 well 00:47:55 that may be 00:47:56 but i may be wrong, i've never really studied it. 00:47:59 but modes are a very useful concept 00:48:04 well sure 00:48:09 they actually do describe stuff well 00:48:59 so modes are names for the scales on piano, without black keys? 00:49:05 i mean, in short, is that it? 00:49:07 yes 00:49:16 okay, good 00:49:28 i guess it would be appropriate to learn the names 00:49:32 yes 00:49:41 i'll do that now 00:49:43 the most common modes are ionian (also known as major) 00:49:51 aeolian (also known as natural minor) 00:50:07 and mixolydian (major with the flattened seventh; the "dominant" scale) 00:51:12 dominant scale? 00:51:15 what's the name for 00:51:35 If you play it, it will seep into your soul and slowly start to dominate it. 00:51:47 :o 00:51:55 Eventually, you will no longer be oklofok, you will only be the mixolydian scale. 00:52:06 cool 00:52:07 oklofok: if you're in C major, and play G7 00:52:09 i'll go play it 00:52:18 that G7 is a dominant chord 00:52:23 did it 00:52:31 how long till i turn into it? 00:52:44 oh 00:52:46 i see 00:53:00 it's a mixolydian chord 00:53:43 as you see this isn't esoteric - 7 chords are used all the time in practically all styles of music 00:54:32 "lament: the cycle of modes goes lydian-ionian-mixolydian-dorian-etc" <<< can you explain this? 00:55:13 i do pretty chromatic stuff myself 00:55:19 sure 00:55:27 that's just the cycle of fifths 00:55:37 hmmhmm 00:56:05 ...i really need a picture at this point. 00:56:11 cycle of fifths... can you try to be more unambiguous, i'm not feeling all that bright today 00:56:14 hehe :D 00:56:27 gonna draw it? 00:56:32 do you know what the cycle of fifths is? 00:56:45 no. 00:57:02 explained in the article? 00:57:18 isn't 00:59:18 okay, forget about the modes. 00:59:43 cycle of fifths is the key concept of western harmony. 00:59:49 http://en.wikipedia.org/wiki/Cycle_of_fifths 00:59:57 you absolutely need to know that. 00:59:58 -!- Slereah has joined. 01:00:31 Hello, world! 01:01:11 lament: oh that 01:01:11 i know that 01:01:39 the vicious circle 01:02:01 it was funny when they tried to teach us intervals and scales with that thing :D 01:02:23 so much work for something so simple 01:02:27 anyway, what about that 01:02:35 oh, right, i'll reread what you said 01:03:30 it seems you were only starting to explain something 01:06:15 oklofok: yes 01:06:50 do continue, i'll scream if i don't know a term. 01:07:18 so 01:07:38 a scale is made up of two tetrachords 01:07:53 for example, c-major: CDEF GABC 01:08:05 where the latter ends in the base note? 01:08:05 yeah 01:08:26 on the mandolin, if you start the scale on the first finger 01:08:45 each tetrachord fits on a string 01:08:57 and the second tetrachord starts on the first finger again 01:09:00 on a new string 01:09:04 well, sure 01:09:07 okay 01:09:10 now this second tetrachord 01:09:20 i think i see where this is going 01:09:21 is actually the first tetrachord of mixolydian mode: GABC DEFG 01:09:25 do go on 01:09:47 wait a sec 01:09:49 so 01:09:53 0245 01:09:57 0245 01:10:03 yes 01:10:08 0235 01:10:08 024 01:10:12 let's see 01:10:16 should this correspond to the cycle of fifths? 01:10:19 it does 01:10:26 because the strings are tuned a fifth apart 01:10:33 hmm 01:10:37 sure 01:10:39 i guess that's kinda neat 01:11:20 i never gave much thought to the western way to classify music 01:11:24 always used my own notations 01:11:29 now, let's see how it actually looks 01:11:40 let's 01:11:58 0245 == O O OO (on a string that goes from left to right) 01:12:01 makes sense? 01:12:13 makes me go duh, yes 01:12:16 normally you draw strings vertically but that's hard on irc 01:12:18 okay 01:12:33 so the first one, 0245 0245, and then 0235 etc 01:12:39 O O OO 01:12:41 O O OO 01:12:43 O OO O 01:12:54 yeah 01:12:56 and then you just continue the pattern 01:12:57 O OO O 01:13:01 OO O O 01:13:02 OO O O 01:13:07 see the pattern? 01:13:14 yes 01:13:16 neat 01:13:18 each two adjacent strings are the same 01:13:19 very neat 01:13:21 do minor 01:13:36 it would cycle after that, right? 01:13:41 that's the neat part, i already did minor :) 01:13:47 oh 01:13:48 right 01:13:54 it's the fourth of those lines 01:13:56 and the fifth 01:14:11 hmm 01:14:13 sorry, the fifth and the sixth 01:14:21 sorry, i can't count! 01:14:24 ...? 01:14:27 :D 01:14:27 the fourth and the fifth :) 01:14:31 O OO O 01:14:34 OO O O 01:14:36 yeah 01:14:44 so the overall pattern is 01:14:49 the first and the fourth fingers don't move 01:15:03 and in the middle there's this "ladder" that moves from the top to the bottom 01:15:27 . . |. 01:15:29 . . |. 01:15:37 . .| . 01:15:39 err 01:15:43 well yeah 01:15:48 better like this: 01:15:50 . . || 01:15:52 . . || 01:15:53 . || . 01:15:56 . || . 01:15:58 || . . 01:16:00 || . . 01:16:28 hmm 01:16:39 doesn't it go . . || three times after that 01:16:44 and then cycles from . || . 01:16:45 no 01:16:55 after that, the ladder "falls through the floor" 01:17:00 || . . 01:17:02 hehe 01:17:03 || . . 01:17:08 | . . . 01:17:13 oh 01:17:16 | . || 01:17:18 | . || 01:17:27 i don't get these last two 01:17:27 we have shifted one fret down 01:17:36 err 01:17:38 oh 01:17:41 the last two are supposed to be . . || 01:17:46 the position repeats 01:18:04 the ladder is back at the top 01:18:38 so the cycle is seven patterns long 01:18:41 errr 01:18:43 seven strings 01:18:43 patterns 01:18:44 yeah 01:18:48 yeah 01:18:53 and it's simple enough to vizualize 01:19:09 (you only need to vizualize the 4-string portion that actually fits on the instrument) 01:20:02 and for all modes, the cycle is the same (since all modes are generated from the same scale, just starting on different keys) 01:20:19 sure 01:21:23 you do realize an ideal model of strings 4ths apart will have as simple a pattern for the scales? 01:21:53 it's just played a bit differently. 01:21:59 wel 01:21:59 well 01:22:14 part of the prettiness and symmetry here is that the scale is split into two mostly symmetrical parts 01:22:18 look at the major again: 01:22:19 O O OO 01:22:21 O O OO 01:22:24 the two halves are identical! 01:22:37 you can't have that when you split it into 4ths 01:22:57 o o o 01:22:59 o o o 01:23:01 o o 01:23:05 on guitar 01:23:17 you can't split 7 in half 01:23:22 it's prime 01:23:40 you can split a subset of superset of it 01:23:44 in your case 7+1 01:23:50 in guitar's case 7+2 01:24:10 i don't think you'll get this symmetry with a 7+2 split 01:24:23 i mean, the symmetry around a 5th is not just a coincidence 01:24:31 the notes a fifth apart actually have similar "color" 01:24:45 1st and 5th are "the base" 01:24:48 o o o 01:24:48 o o o 01:24:50 oo 01:24:52 actually 01:24:54 sorry 01:25:12 3rd and 7th are "color", they define the character of a chord if we're playing a chord 01:25:16 the major scale has a lot of interesting properties, yes 01:25:19 maybe "character" rather than "color" 01:26:05 also 01:26:06 o o o 01:26:12 is a pain to play on the guitar :) 01:26:25 :D 01:26:27 well 01:26:28 guitar is not really meant for that 01:26:32 i have 25 frets 01:26:40 depends where you play 01:26:41 normally it's one finger per fret 01:26:44 and if it's acoustic or not 01:26:44 well, sure 01:26:54 i mean 01:27:02 if it's not acoustic, it depends on where you play :D 01:27:14 but yeah, it is hell. 01:27:43 i also have dropped a tuning, which adds a bit more hell 01:27:53 because you have two points of asymmetry 01:27:57 well not asymmetry 01:28:04 but... illogicality 01:28:06 dunno 01:28:13 yeah 01:28:24 how does drop A work? 01:28:33 aeadf#b 01:28:38 I know that some people who play primarily melody and not chords tune in all fourths 01:28:48 oh... ouch :) 01:28:58 dropped is for playing power chords easily. 01:29:09 right 01:29:14 looks cool or something 01:29:24 the annoying thing on guitar is that for chords, you want a specialized tuning 01:29:25 dunno, i've never really been into the popular part of band stuff 01:29:29 but for melody, you want a regular tuning 01:29:39 so you get a weird hybrid 01:29:40 yep 01:29:57 mandolin players resolve it by mostly sticking to the melody 01:30:15 (and in the styles where they mostly play chords, often retune) 01:30:33 well i only do power chords, so i could easily do with pure 4ths 01:30:55 but i only play in a band, and i'm the only mathematician there :P 01:31:29 pure 5ths work for power chords unless you want the octave there, too 01:31:46 for power chords you want 5-4-5-4-5-4 :) 01:31:59 but that's just silly 01:32:03 (maybe not) 01:32:05 44444 is actually nicer 01:32:31 because 0|2|2 is as easy to play as 0|0|0 01:32:31 hmm 01:32:31 you prolly don't get my notation 01:32:33 like 01:32:52 fret in lowest string|...|fret in highest string 01:32:56 relative fret 01:33:11 i understand 01:33:11 0|0|0 is with 5-4-5-4-5-4-5... tuning 01:33:22 but people use drop d often 01:33:24 yarrr i guess you understand english too 01:33:30 exactly because they think 0|0|0 is easier than 0|2|2 01:33:31 yeah 01:33:59 ...clearly it's easier, although clearly one should be able to play both :) 01:34:17 0|2|2 seems natural to me 01:34:25 but it's really the cornerstone of the kind of music i play 01:34:37 so... i may just be used to it 01:34:49 2|2|0 seems a lot harder to me 01:34:52 and 5-4-5-4-5-4 needs that 01:35:54 have you actually tried all 4ths? 01:36:03 no, never 01:36:05 it kinda seems like it has potential 01:36:12 yes 01:36:18 but i have invested too much time learning chords for the standard tuning 01:36:29 you do guitar? 01:36:36 (so might as well just switch to a whole different instrument for playing melody...) 01:36:39 yes 01:37:07 but i want to switch to mandolin and similarly tuned stuff 01:37:21 i would love cello 01:37:26 if that's the name 01:37:40 it's great but not having frets muddles things a bit 01:38:07 i'm planning to make my other guitar fretless 01:38:17 might be intesting 01:38:21 *interesting 01:38:52 nile does this in metal, although you probably don't appreciate that kind of stuff 01:39:10 i haven't heard it 01:39:21 fretless is fun but you pretty much say goodbye to chords 01:39:38 fairly hardcore stuff, i'm fairly sure you couldn't listen to it enough to hear any melody in it 01:39:54 eh, i like metal 01:39:59 you do? 01:40:03 umm 01:40:13 well, we may have a different view on what's metal 01:40:13 i don't listen to it, but i like it 01:40:39 i mean more like grindcore 01:40:55 -!- pikhq has quit (Read error: 110 (Connection timed out)). 01:41:55 search nile on youtube 01:41:58 if you have the time 01:42:36 they do interesting stuff with the fretless guitar in a few songs 01:42:51 unfortunately i can't name these songs, for one, the names are to long to remember anyway 01:42:59 *too 01:43:08 i don't really listen to music much 01:44:16 not *that* interesting, of course, metal is usually fairly limited, although probably one of the least limited genres 01:44:52 limitations are interesting too :) 01:45:01 true. 01:45:42 but i'd say more in the historician sense 01:45:51 to see what limits have developed naturally 01:45:55 etc 01:46:01 well, dunno 01:46:05 i guess in every sense. 01:46:52 but most popular music, and a lot of classical music, is so limited i find it hard to get interested at all 01:47:23 and jazz etc often gets so weird i cannot find much overall structure 01:47:59 although you might argue i'm just dumb, it is clear that music usually takes a big jump in weirdness between non-modern and modern 01:48:08 well 01:48:14 modern is really a bad classification 01:48:28 i have next to no vocabulary when it comes to music. 01:50:15 i need to sleep for a while, thanks for the mode lesson 01:50:17 cya 01:50:18 -> 02:02:01 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)). 02:02:16 -!- Judofyr has joined. 02:10:10 -!- GreaseMonkey has joined. 02:10:23 -!- Iskr has quit ("Leaving"). 02:39:41 * olsner helps himself to some chips (aka crisps) in anticipation of cessation of intoxication 02:41:49 -!- Tritonio_ has quit (Remote closed the connection). 03:09:08 what's up, folks? 03:16:27 I'm back baby. 03:17:04 howdy again, Slereah 03:17:34 this is really unsettling: http://www.motionportrait.com/about/ 03:19:10 and the cartoon ones look evil. http://www.motionportrait.com/about/demo_others_05.html 03:19:37 I do not understand this page. 03:20:17 it's some type of software that can animate still images and make them look around, breathe, and smile in what generally comes out as a really creepy way 03:20:55 Oh. 03:24:44 clearly you are stunned and left with nothing to say 03:26:44 I have my share of stunning right now. 03:26:52 As I am reading this : 03:26:53 http://www.misterkitty.org/extras/stupidcovers/stupidcomics102.html 03:27:07 Chuck Norris. Ninjas. Objectivist propaganda. 03:28:08 -!- adu has joined. 03:31:06 http://www.misterkitty.org/extras/stupidcovers/chuck7.jpg <- this is great 03:31:29 apparently that one ninja's asshole can talk 03:31:59 http://www.misterkitty.org/extras/stupidcovers/chuck8.jpg <- and this is probably my favorite panel 03:33:10 Chuck Norris' best ally is misinformation. 03:33:24 apparently 03:33:27 RodgerTheGreat: Ping! 03:33:37 This one is also pretty fucked up : http://www.misterkitty.org/extras/stupidcovers/stupidcomics115.html 03:33:42 RodgerTheGreat: Can I put that on a T-shirt? 03:33:44 what the hell kind of ninjas use guns as weapons and believe internet memes? 03:33:59 GregorR: put what on a T-shirt? 03:34:17 RodgerTheGreat : They don't use guns. 03:34:20 RodgerTheGreat: People from the Internet 03:34:21 They just carry them. 03:34:28 RodgerTheGreat: I want that on a T-shirt. 03:34:32 When the fight breaks out, they just leap on him. 03:34:54 Except that one ninja who fires. 03:34:56 GregorR: did you plan on selling it to people, or just for personal use? 03:35:18 Well, I was going to use CafePress to produce it, but just wanted one for me :P 03:35:51 if you're just making one for yourself, go for it. If you sell them to other people, I'd like a cut. Either way, I'm flattered. :) 03:36:09 Well, even if I did have CafePress sell it, I wouldn't make any profit :P 03:36:26 (I always put the price 1 cent over the base price, just so it doesn't end in .99) 03:38:45 sounds cool to me 03:39:11 I want a photo of you wearing it when it arrives. 03:39:20 OK X-D 03:40:43 What name shall I use to give you attribution in the "product" description? 03:42:28 RodgerTheGreat, or just "Rodger" is fine 03:45:08 http://www.cafepress.com/bizarregeek.250445859 03:45:42 hahah- that's awesome 03:46:20 the eyes look kinda odd, but I suppose it just adds to the effect 03:47:30 I've learned from experience that you don't use fine details on CafePress T-shirts - the result fades into the abyss very quickly - so I had to GIMP-warp some of the lines a bit, which, yeah, weirded the eyes, but I don't think it hurts particularly :P 03:48:39 The teeth, too, but *eh* 03:49:19 -!- GregorR-L has joined. 03:49:58 personally, I might've gone with black-on-white 03:58:22 so, there's a local art show with a submission deadline tomorrow at 5pm. What do you folks think I should make to enter, and what medium should I use? (pen and ink or digital are the main two runners) 04:01:55 GregorR-L? 04:03:18 I might try reworking this a bit and doing a nice big one or two page comic: http://rodger.nonlogic.org/files/SYSTEM%20DOWN.txt 04:04:31 I'm not sure how well the wordplay would translate, though 04:13:27 -!- GregorR-L has quit (Read error: 110 (Connection timed out)). 04:14:32 -!- sebbu has quit (brown.freenode.net irc.freenode.net). 04:14:32 -!- fizzie has quit (brown.freenode.net irc.freenode.net). 04:14:33 -!- tejeez has quit (brown.freenode.net irc.freenode.net). 04:14:33 -!- Deewiant has quit (brown.freenode.net irc.freenode.net). 04:14:35 -!- oklofok has quit (brown.freenode.net irc.freenode.net). 04:14:35 -!- RodgerTheGreat has quit (brown.freenode.net irc.freenode.net). 04:14:36 -!- lament has quit (brown.freenode.net irc.freenode.net). 04:14:39 -!- fizzie has joined. 04:15:52 -!- adu has quit (Remote closed the connection). 04:23:52 -!- lament has joined. 04:23:52 -!- RodgerTheGreat has joined. 04:23:52 -!- oklofok has joined. 04:23:52 -!- tejeez has joined. 04:23:52 -!- Deewiant has joined. 04:23:52 -!- sebbu has joined. 04:42:49 -!- adu has joined. 04:48:57 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)). 04:49:15 -!- Judofyr has joined. 04:51:25 -!- GregorR-L has joined. 04:51:31 * GregorR-L reappears. 04:51:33 I ordered the T-shirt. 04:51:37 In beautiful white-on-black :P 04:53:48 sweet 04:54:08 so do you have any commentary on the art project idea? 04:56:44 Apparently not, since I'm not sure to what you refer :P 05:00:57 [10:57pm] RodgerTheGreat: 05:00:57 so, there's a local art show with a submission deadline tomorrow at 5pm. What do you folks think I should make to enter, and what medium should I use? (pen and ink or digital are the main two runners) 05:00:57 [11:01pm] RodgerTheGreat: 05:00:58 GregorR-L? 05:00:58 [11:02pm] RodgerTheGreat: 05:00:59 I might try reworking this a bit and doing a nice big one or two page comic: http://rodger.nonlogic.org/files/SYSTEM%20DOWN.txt 05:01:02 [11:04pm] RodgerTheGreat: 05:01:04 I'm not sure how well the wordplay would translate, though 05:02:13 Seems like a bit much text to try to media-convert, perhaps lossy with translation. 05:06:56 maybe I'll submit one of my old paintings, "Hunter of Spatulas" http://www.nonlogic.org/dump/images/1207368367-spatch.jpg 05:07:34 That's extremely surreal. 05:07:39 :D 05:10:28 this was my favorite painting: http://www.nonlogic.org/dump/images/1207368583-anything.jpg 05:10:52 OK, that's just plain awesome 05:11:04 -!- pikhq has joined. 05:11:06 thanks, man. :) 05:12:20 Particularly since it really just raises questions about the context, and provides little to no answers. 05:12:42 pikhq: http://www.cafepress.com/bizarregeek.250445859 // get the newest thing to hit the intarwebs! :P 05:13:27 GregorR-L: the full title is "Anything (we can fix)" 05:13:43 Aha 05:13:54 * pikhq returneth from a date 05:14:00 *bow chicka bow wow* 05:15:11 XD 05:15:35 GregorR-L: do you think they'd let me enter a revised version of "walls"? (http://www.nonlogic.org/dump/images/1207278828-walls.png) 05:15:56 Uhhhh, no idea? :P 05:16:20 it would be really stupid without profanity 05:16:54 I guess I should've expected that, though, Gregor. :p 05:24:10 Hm. 05:24:18 Should I blindly put this /topic in a .c file and see what happens? 05:24:34 Ohwait, not C :P 05:24:48 It looks to me like a more insane language. . . 05:24:54 Like, say, PHP or Perl. 05:25:01 It's obviously a bracket language, though. 05:25:15 I lurve bracketlangs 8-O 05:25:15 From the look of things, it's a quine. 05:25:49 But in what language? 05:25:50 Sure, but it could be a quine with the added advantage of reformatting your hard disk :P 05:25:56 LMAO 05:26:05 vixey: You set it; care to explain? 05:26:21 ALGOL 05:28:01 *Ah*. 05:28:15 GregorR-L: Yeah, it's a bracketlang. Bit older than C, though. 05:28:20 ;) 05:28:24 HAHAHA 05:28:40 Now THAT'S an esolang. 05:28:45 *Holy crap*. 05:28:56 ? 05:29:07 Backus Naur Form was invented *to describe ALGOL's syntax*. 05:29:23 Ohyeah, I actually knew that once :P 05:30:24 Hmm. Not actually bracketed. Might as well be, though. 05:33:52 -!- GregorR-L has quit ("Leaving"). 05:40:19 -!- vixey has quit ("Leaving"). 05:45:15 this is my reimagining of "walls" 05:46:09 http://www.nonlogic.org/dump/images/1207370672-wall.jpg 05:51:15 thoughts? 05:57:30 -!- sebbu2 has joined. 06:03:31 -!- sebbu has quit (Read error: 60 (Operation timed out)). 06:58:38 -!- GreaseMonkey has quit ("bai bai"). 07:00:03 good night everyone 07:00:12 -!- RodgerTheGreat has quit. 07:30:34 -!- Sgeo has quit (Read error: 104 (Connection reset by peer)). 07:33:56 Am I the only person who goes "I'd like an egg salad sandwich", and then grills some onions? 07:53:45 -!- adu has quit. 07:57:10 -!- adu has joined. 07:57:43 -!- adu has quit (Remote closed the connection). 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 09:36:30 -!- Iskr has joined. 09:44:18 -!- ais523 has joined. 09:45:36 -!- thutubot has joined. 11:01:42 -!- Judofyr_ has joined. 11:01:42 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)). 11:25:17 -!- Judofyr_ has quit. 11:25:21 -!- Xorothal has joined. 12:30:39 what language is the topic in? 12:31:30 ...and why does the link to the logs in the topic appear to be a mirror? 13:18:27 -!- ais523 has quit ("(1) DO COME FROM ".2~.2"~#1 WHILE :1 <- "'?.1$.2'~'"':1/.1$.2'~#0"$#65535'"$"'"'&.1$.2'~'#0$#65535'"$#0'~#32767$#1""). 13:18:29 -!- thutubot has quit (Remote closed the connection). 13:31:31 -!- Iskr has quit (brown.freenode.net irc.freenode.net). 13:31:31 -!- lament has quit (brown.freenode.net irc.freenode.net). 13:31:32 -!- oklofok has quit (brown.freenode.net irc.freenode.net). 13:31:33 -!- tejeez has quit (brown.freenode.net irc.freenode.net). 13:31:33 -!- Deewiant has quit (brown.freenode.net irc.freenode.net). 13:31:33 -!- sebbu2 has quit (brown.freenode.net irc.freenode.net). 13:32:11 -!- Iskr has joined. 13:32:11 -!- sebbu2 has joined. 13:32:11 -!- lament has joined. 13:32:11 -!- oklofok has joined. 13:32:11 -!- tejeez has joined. 13:32:11 -!- Deewiant has joined. 13:42:11 -!- lament has quit (brown.freenode.net irc.freenode.net). 13:42:13 -!- oklofok has quit (brown.freenode.net irc.freenode.net). 13:42:13 -!- Iskr has quit (brown.freenode.net irc.freenode.net). 13:42:13 -!- tejeez has quit (brown.freenode.net irc.freenode.net). 13:42:13 -!- Deewiant has quit (brown.freenode.net irc.freenode.net). 13:42:13 -!- sebbu2 has quit (brown.freenode.net irc.freenode.net). 13:42:57 -!- Iskr has joined. 13:42:57 -!- sebbu2 has joined. 13:42:57 -!- lament has joined. 13:42:57 -!- oklofok has joined. 13:42:57 -!- tejeez has joined. 13:42:57 -!- Deewiant has joined. 13:49:49 -!- Xorothal has quit ("Ex-Chat"). 13:53:15 -!- lament has quit (brown.freenode.net irc.freenode.net). 13:53:17 -!- oklofok has quit (brown.freenode.net irc.freenode.net). 13:53:17 -!- Iskr has quit (brown.freenode.net irc.freenode.net). 13:53:18 -!- tejeez has quit (brown.freenode.net irc.freenode.net). 13:53:18 -!- Deewiant has quit (brown.freenode.net irc.freenode.net). 13:53:18 -!- sebbu2 has quit (brown.freenode.net irc.freenode.net). 13:53:50 -!- Iskr has joined. 13:53:50 -!- sebbu2 has joined. 13:53:50 -!- lament has joined. 13:53:50 -!- oklofok has joined. 13:53:50 -!- tejeez has joined. 13:53:50 -!- Deewiant has joined. 13:57:23 -!- lament has quit (brown.freenode.net irc.freenode.net). 13:57:24 -!- oklofok has quit (brown.freenode.net irc.freenode.net). 13:57:24 -!- Iskr has quit (brown.freenode.net irc.freenode.net). 13:57:25 -!- tejeez has quit (brown.freenode.net irc.freenode.net). 13:57:25 -!- Deewiant has quit (brown.freenode.net irc.freenode.net). 13:57:25 -!- sebbu2 has quit (brown.freenode.net irc.freenode.net). 13:58:04 -!- Iskr has joined. 13:58:04 -!- sebbu2 has joined. 13:58:04 -!- lament has joined. 13:58:04 -!- oklofok has joined. 13:58:04 -!- tejeez has joined. 13:58:04 -!- Deewiant has joined. 13:58:18 -!- lament has quit (brown.freenode.net irc.freenode.net). 13:58:20 -!- oklofok has quit (brown.freenode.net irc.freenode.net). 13:58:20 -!- Iskr has quit (brown.freenode.net irc.freenode.net). 13:59:45 -!- Iskr has joined. 13:59:45 -!- oklofok has joined. 13:59:45 -!- lament has joined. 14:01:45 -!- lament has quit (brown.freenode.net irc.freenode.net). 14:01:45 -!- oklofok has quit (brown.freenode.net irc.freenode.net). 14:01:45 -!- Iskr has quit (brown.freenode.net irc.freenode.net). 14:01:46 -!- tejeez has quit (brown.freenode.net irc.freenode.net). 14:01:46 -!- Deewiant has quit (brown.freenode.net irc.freenode.net). 14:01:46 -!- sebbu2 has quit (brown.freenode.net irc.freenode.net). 14:03:44 -!- lament has joined. 14:03:44 -!- oklofok has joined. 14:03:44 -!- Iskr has joined. 14:03:44 -!- sebbu2 has joined. 14:03:44 -!- tejeez has joined. 14:03:44 -!- Deewiant has joined. 14:06:13 -!- oklofok has quit (brown.freenode.net irc.freenode.net). 14:06:13 -!- lament has quit (brown.freenode.net irc.freenode.net). 14:06:14 -!- Iskr has quit (brown.freenode.net irc.freenode.net). 14:06:15 -!- tejeez has quit (brown.freenode.net irc.freenode.net). 14:06:15 -!- Deewiant has quit (brown.freenode.net irc.freenode.net). 14:06:15 -!- sebbu2 has quit (brown.freenode.net irc.freenode.net). 14:06:33 -!- lament has joined. 14:06:33 -!- oklofok has joined. 14:06:33 -!- Iskr has joined. 14:06:33 -!- sebbu2 has joined. 14:06:33 -!- tejeez has joined. 14:06:33 -!- Deewiant has joined. 14:13:43 -!- thutubot has joined. 14:25:40 -!- jix has joined. 14:33:47 -!- Judofyr has joined. 14:39:03 GregorR: were the onions part of the salad? 14:39:05 -!- Slereah has quit (Read error: 110 (Connection timed out)). 14:50:07 what is the language in the topic? 14:50:18 oklofok, ^ 14:51:10 AnMaster: i did not set it 14:51:19 oklofok, ah so no idea what it is? 14:52:31 hmm, looks like a quine 14:52:32 REPR and STRING should give it away... but no 14:52:35 i don't 14:52:44 well yeah, i do know how it works 14:52:47 just not the language 14:57:50 eh 14:58:43 * vixey has changed the topic to: http://bespin.org/~nef/logs/esoteric/ --> STRING p="STRING p=?;print(p[:9]+REPR 34+p+REPR 34+p[11:])";print(p[:9]+REPR 34+p+REPR 34+p[11:]) 14:58:44 I bring quines of ALGOL 14:58:44 68 14:58:44 aha 15:01:16 ah 15:01:34 well i don't know algol. 15:05:28 nor do I 15:11:35 oh, I see how that works now... REPR = character from integer and string[a:b] for substring extraction 15:11:55 quite nice for such an old language 15:14:47 yeah 15:18:23 -!- ais523 has joined. 15:18:34 ah, and you're using UPPER stropping 15:18:51 I thought you had to write a pragma using POINT stropping first before you were allowed to do that? 15:19:38 stropping? 15:20:16 olsner: ALGOL-68 had separate keyword and identifier spaces 15:20:16 you were allowed to call a variable if, if you liked, even though it was a keyword 15:20:16 and also variable names could contain spaces 15:20:32 in a book, keywords were printed in bold and variable names in italic 15:20:38 but you couldn't do that in a real program 15:20:50 so stropping was the way you distinguished between keywords and variables 15:21:04 hmm, so basically everything uppercase is looked up in the keyword namespace? 15:21:13 depending on the "stropping" setting? 15:21:30 POINT stroppping means that you write a dot before each keyword: i.e. .string p = ".string p=? and so on 15:21:50 UPPER stropping means you write keywords in uppercase and variables in lowercase (I think that's what's used in the topic) 15:22:13 and RES stropping meant that if anything was the same as a reserved word, then it was a reserved word, unless you preceded it by an underscore to mark it as being a variable 15:22:49 so in other words, the quine up there should either have extra .s added, or start .pr UPPER .pr, because POINT stropping is what's used by default unless you changed it with a pragma 15:23:54 (some implementations allowed other sorts of stropping; apparently there was one where you underlined keywords using the underscore and backspace characters) 15:24:08 apparently some algol implementations had UPPER stropping as default 15:24:26 that's what the topic would imply 15:25:03 hmm... actually, ISTR an implementation could use any form of stropping, but had to recognise POINT stropping no matter what form of stropping was being used 15:25:21 so the .pr UPPER .p is just needed to make the program portable, but it would still work on some implementations anyway 15:25:54 * ais523 worries that they know all this about a language which is almost twice as old as they are 15:26:21 well not knowing algol is a sin 15:26:57 I think a friend used some algol implementation with the "underline-with-backspaces-and-_" thing. 15:27:39 -!- tola_ has joined. 15:27:51 overtyping characters is just so poorly supported on modern systems, unfortunately 15:28:29 nowadays, I reckon that Algol should support HTML stropping, so it's actually possible to do the bold-and-italic thing 15:28:29 nowadays, I reckon that Algol should support HTML stropping, so it's actually possible to do the bold-and-italic thing 15:42:46 well not knowing algol is a sin 15:42:58 I know some things about Algol, but am apparently bad at recognising it 15:48:09 -!- oklofok has quit (Read error: 110 (Connection timed out)). 15:51:04 -!- RodgerTheGreat has joined. 15:51:55 howdy everyone 15:53:48 hello RodgerTheGreat 15:54:01 hi thutubot 15:54:52 !ul (I may as well say hi too)S 15:54:54 -!- EgoBot has quit (Read error: 104 (Connection reset by peer)). 15:55:04 -!- EgoBot has joined. 15:55:16 it isn't meant to do that 15:55:59 and of course I sent the first hello by bouncing it off thutubot 15:56:44 yeah, I figured it was probably a puppet 15:57:23 +ul (like this)S 15:57:23 like this 15:57:28 but in a /msg 16:00:45 "How many Surrealists does it take to change a lightbulb?" 16:01:30 RodgerTheGreat: don't know 16:01:32 "Two - One to paint the giraffe and the other to fill the bathtub with brightly coloured machine tools" 16:01:52 * ais523 wonders how many esolangers it would take to change a lightbulb 16:02:26 an unbounded number, but on the plus side the process of changing the bulb would be TC 16:03:41 in #irp: Would someone here please change a lightbulb? 16:03:49 now we can find out, hopefully 16:05:13 haha 16:05:34 do it at least twice- we have no idea if it's deterministic 16:05:42 * ais523 suspects that on the basis of the lack of response, the answer is greater than 6 16:05:58 which lends credence to my idea 16:06:12 or it just takes more than a few seconds to execute 16:07:56 ais523: I have the best knock knock joke ever- say "knock knock" 16:08:23 knock knock 16:08:28 who's there? 16:11:23 -!- Sgeo has joined. 16:12:45 hey, Sgeo 16:12:53 Hi RTG 16:13:11 oh, I got a reply in #irp 16:13:20 * Sgeo then greets someone named "rwg" in another channel.. 16:13:20 aw, sweet- now I'm a Radio-Thermal Generator! 16:13:24 it was 'Done' 16:13:38 followed by a comment 'No observable effects for you, though' 16:13:38 ais523: wow 16:13:55 so the answer is apparently '1, but it takes a while and you can't prove it' 16:13:58 What was the command? 16:14:03 we've got some pretty good interpreters. I told you it would take some time 16:14:10 Would someone here please change a lightbulb? 16:16:43 I think this might be worth inclusion on the IRP wiki entry 16:17:13 I'll put it there, the original conversation's in my logs 16:17:49 this one cracks me up every single time: 16:17:52 Please, write the 99 bottles lyrics 16:17:52 go to hell 16:18:53 I'd also argue that IRP is turing complete by nature of the fact that interpreters are not limited to their own mental faculties. 16:19:11 they are limited by the amount of storage in the universe 16:19:29 they can refer to the internet, other humans, or any number of handwritten notes, etc, even making use of any TC language the interpreter knows 16:19:43 by proxy, I think it's fair to then say that IRP is TC 16:44:58 RodgerTheGreat: but it can't even do 99bob! 16:45:36 I'd argue it can if you phrase it right. "Would somebody please find a 99bob program, run it, and paste the output to me?" 16:48:19 RodgerTheGreat: would you say that a shell with no flow control but with a batch file mechanism is TC? 16:48:25 because it can run external programs? 16:48:55 sure, if it has access to TC programming languages or some other means of producing new programs 16:49:38 I mean, the argument for is that while the shell *itself* is not TC, it's part of a system that *is* TC 16:53:56 -!- oklopol has joined. 16:54:12 hi, oklopol 16:54:18 hi 16:57:28 Wow, I didn't know there could be such objectionable science fundamentalism: http://www.youtube.com/watch?v=Gzdv2dsPPKw 16:58:48 OTOH, Science won in the 18th century, when lightning conuctors became standard for church rooves 16:58:52 :-P 17:03:05 the "powers of ten" part is perfect for the music 17:03:23 odd 17:03:40 But PoT was done with squares, not circles, surely? 17:04:32 SimonRC: yes 17:04:59 -!- wildhalcyon has joined. 17:05:10 Unless RodgerTheGreat meant it was like PoT, rather than being an extract from PoT 17:05:30 that's what I meant 17:05:51 ah, ok 17:06:26 wildhalcyon: what is a halycon, anyway? 17:06:52 a type of asphyxiating gas, I think 17:07:54 it means peace, or its a type of bird (a kingfisher to be precise) 17:07:58 Wikipedia doesn't have an article about it 17:08:38 ais523: then do some research and rectify the problem? 17:08:44 but it's used in articles, usually as an adjective 17:08:52 even a small stub is an extremely useful addition 17:09:32 -!- Judofyr has quit. 17:09:34 ah, I'd misspelt it 17:09:42 the word is halcyon, but I'd misspelt it as halycon 17:10:08 http://en.wikipedia.org/wiki/Halcyon 17:10:10 yeah 17:10:30 google is pretty much the most powerful spell-checker ever constructed 17:11:19 nah, it can't spell INTERCAL 17:11:54 RodgerTheGreat: heh 17:11:54 "did you mean inteal" 17:11:56 *interval 17:12:39 as with any tool, it performs poorly if you don't know how to use it 17:13:29 ah, I was confusing Halcyon and Halon 17:13:56 SimonRC: iodine is a liquid 17:14:20 yeah, it displaces oxygen really well, which kills fires, but unfortunately most animals like oxygen as well 17:15:15 * ais523 just realised that they mixed Halon and Halogen 17:18:03 heh 17:18:15 fires don't run so fast 17:18:26 i once mixed halon and halogen, god what an explosion 17:19:34 heh 17:19:54 (i have no idea what halon is, but it sounds dangerous.) 17:20:14 a fire-suppressing gas 17:20:26 oklopol: chemically speaking it's like a CFC, but is allowed to use bromine too 17:20:33 so CFCs are a subset of halons 17:21:01 this also means that they're more or less completely safe to humans and other objects, but catalyse the destruction of the ozone layer 17:21:03 cfc's are the things destroying like the ozone layer and making a greenhouse out of our planet KILLING EVERYONE, like, or something? 17:21:22 * oklopol knows his stuff 17:21:37 oh 17:21:39 you said that 17:21:50 if something is said while i'm typing, i often ignore it 17:22:00 oklopol: CFCs are almost the perfect inert gas for many purposes, except for the destroying-the-ozone-layer problem. That's why they caught on in the first place, before the ozone layer problem was discovered 17:22:15 oklopol: I don't ignore it, but I often don't read it until after I've finished typing 17:22:26 and even when I do I often finish typing and press enter anyway, even if it's redundant 17:22:46 i do that too, usually, but it's my main reason to fail to get a message 17:23:26 well, in the past one could bame netlag 17:23:43 SimonRC: you still can when using telnet 17:23:44 yes, but then one realized baming isn't the solution 17:23:59 when someone pings you you can edit the timestamps to change the apparent delay 17:24:05 (as well as the time you spend typing the ping reply) 17:25:26 -!- sebbu2 has changed nick to sebbu. 17:34:06 -!- Tritonio_ has joined. 17:41:37 * Sgeo remembers seeing some server room at Hofstra (I was there at summer camp), and they had those things that suppress fires with gas 17:41:43 -!- Slereah has joined. 17:41:46 17:41:47 Hi Slereah 17:42:01 Sgeo: they also have them on the Channel Tunnel 17:42:17 they have airlocks between all the carriages so they can put out a fire while the train is still moving and people are still aboard 17:42:37 fHi. 17:55:43 -!- oklopol has quit (Read error: 113 (No route to host)). 18:18:38 -!- Judofyr has joined. 18:43:47 hmm... do the one-char quines in PHP and m4 count as cheat quines? 18:44:59 What are they? 18:45:16 any char that has no meaning in the language 18:45:21 because it's just echoed 18:45:29 e.g. _ is a quine in both languages 18:45:50 It does seem a little cheaty. 18:47:02 here's a nice cheatquine in Perl, by the way: 18:47:06 #!/bin/cat 18:53:35 sweet! My copy of GEB came! 18:53:48 GEB? 18:54:19 "Gödel, Escher, Bach: and Eternal Golden Braid" 18:54:32 Oh. 18:54:44 RodgerTheGreat: it's a great book 18:54:45 It never really inspired me to buy it. 18:54:54 Is it good? 18:55:13 the dialogues there, as well as making points, are effectively the esoteric version of poetry/playwriting/prosewriting/whatever 18:55:19 ais523: that's linux genrally, not perl, surely? 18:55:24 they all have strange constraints to make them work like music 18:55:35 and maybe other unixes 18:55:37 SimonRC: yes, it works in POSIX 18:55:51 but also, when Perl sees a #! line mentioning another application, it execs as that application instead 18:55:59 ok 18:56:00 whereas the shells don't 18:56:16 they only pay attention to #! if you run a program without specifying which application to use 18:56:25 so #!/bin/cat is a cat quine, but not a sh quine, for instance 18:56:32 -!- jix has quit (Nick collision from services.). 18:56:32 but everything's a cat quine 18:56:44 -!- jix has joined. 19:01:08 -!- AnMaster has quit ("ERC Version 5.2 (IRC client for Emacs)"). 19:09:32 -!- AnMaster has joined. 19:11:33 AnMaster: now you have to write an IRC client for vi 19:11:48 ais523, there is one already 19:11:54 cool 19:11:54 and I don't want to use vi 19:11:55 ever 19:12:05 and no I didn't code ERC 19:12:11 I know you didn't 19:12:13 there are several irc clients for emacs 19:12:16 but I noticed your quit message 19:12:23 ais523, also: 19:12:24 $ vi 19:12:24 bash: vi: command not found 19:12:33 ais523, there is an irc client in pure zsh too 19:12:38 wow, you must really hate vi 19:12:47 ais523, I can't stand vi indeed 19:12:50 ed is WAY better 19:13:04 I'm an Emacs user normally when it comes to programmer's editing, but have been known to use vi on systems that aren't powerful enough to run Emacs 19:13:10 and whatever ehird thinks, they do exist 19:13:18 (I'm very bad at vi, though) 19:13:28 hm 19:13:32 ais523, yeah so am I 19:13:43 like end up in wrong mode *all the time* 19:13:50 I prefer ed or nano 19:13:54 yes even ed 19:14:11 or if ed isn't there, I would do sed 19:14:13 I really would 19:14:31 under NO conditions will I use vi 19:14:34 or vim 19:14:42 You people are strange. 19:14:49 eh? 19:14:53 I wouldn't touch Emacs evar if I had Vim somewhere. 19:15:09 AnMaster: I've used sed before on a situation where I was stuck at a command prompt, Emacs wasn't installed, I didn't know how to use vi and I'd forgotten the existence of nano 19:15:20 s/on/in/ 19:17:36 I tried to use ed once 19:17:42 I was a bit traumatised 19:18:26 SimonRC, yeah a bit indeed 19:18:31 fully traumatised == vi 19:18:34 or maybe teco 19:18:39 nah, vi is quite good 19:18:41 yeah teco and vi are both bad 19:18:54 it is like nethack really 19:19:09 TECO is great, but from the point of view of an esolang rather than an editor 19:19:36 remember that when it was invented, computers only ran in batch mode, and you needed a TC lang to specify where on the tape to correct or edit 19:20:00 also, using all the characters in a character set, including the control characters, is a great idea 19:20:27 (Emacs doesn't attach a meaning to some key combinations; for instance, M-x M-butterfly doesn't work yet) 19:20:27 What *are* the advantage of vi-derivatives over emacs-derivatives? 19:20:47 SimonRC: the advantage of Emacs is that it knows everything about the formats you use, the environment you're in, etc. 19:20:52 the advantage of vi is that it doesn't need to 19:21:20 I like vi. It's annoying sometimes, but it gets the job done. 19:21:22 modern vims are turning into emacs 19:21:41 they are getting TC macro languages, arrow-key editing, etc 19:22:48 hey, Emacs is reluctant about arrow-key editing too 19:23:08 yes, it works nowadays, but reading the manual gives you the impression that the original author wouldn't have liked it 19:23:26 after all, you never know when you'll end up on a terminal with no arrow keys... 19:23:37 heh 19:24:16 TODO: travel back in time and standardise the 101-key keyboard in the 1960s, before the ASCII control chars are decided 19:24:48 also, Stallman really didn't like backspace = delete-char-backwards 19:24:57 because backspace = ctrl-h and ctrl-h = help 19:25:04 Remove the "pause" and "scroll lock" key, too 19:25:15 Slereah: um, no, not pause 19:25:22 so it was set up so that delete = delete-char-backwards and ctrl-d = delete-char 19:25:22 pause = sysreq 19:25:28 What is it used for! 19:25:31 SimonRC: not on this keyboard 19:25:37 and Pause is actually really useful under DOS 19:25:37 but BS = 127, surely? 19:25:42 SimonRC: no, that's delete 19:25:45 BS = 8 19:25:53 h,, 19:25:55 hmm 19:25:58 -!- atsampso1 has joined. 19:26:24 ok, the setup I usually encounter is BS = 127, help = 8, and del = some funny control code 19:26:24 Slereah: SysRq was originally designed while multitasking operating systems were being planned 19:26:30 ais523: yup 19:26:55 because it was foreseen that people would need a new key to task-switch 19:26:56 under linux, alt-sysrq is an "unblockable" signal to the kernel 19:27:02 But is it still in use for anything? 19:27:06 yes 19:27:09 as it happened, people ended up using things like alt-tab instead 19:27:27 so nowadays most OSs ignore it, and on Linux it sends a signal to the kernel that bypasses the application layer altogether 19:27:42 alt-sysrq, alt-R, ctrl-alt-f1 is a way to get to the terminal if X breaks 19:27:43 except on Ubuntu, apparently, which ignores the Alt-SysRq combinations I know 19:28:00 SimonRC: oh, you have to let go of SysRq first 19:28:02 s/$/?/ 19:28:06 alt-sysrq, alt-r puts the kb back into "cooked" mode 19:28:15 I always tried to hold down SysRq while pressing the R 19:28:24 ais523: heh 19:28:45 oh, and Alt-Sysrq-Alt followed by REISUB is a safe way to soft reboot under Linux 19:28:52 ais523: did you read on TDWTF about the guy who tried to hold down all the letters in CTRL-ALT-DEL at once to type it? 19:28:57 SimonRC: yes 19:29:37 the REISUB trick puts the keyboard into raw mode, then terms and then kills all processes, syncs the disks, unmounts or mounts RO every disk, and reboots 19:29:52 so you don't lose data or end up with an unstable filesystem 19:30:34 or, alt-H will get you a help message on a terminal 19:30:43 Alt-SysRq Alt-H? 19:30:54 yes 19:31:27 doesn't work on this Ubuntu system, Ctrl-Alt-F1 Alt-SysRq Alt-H just types the letter h 19:31:46 oh 19:31:49 that's annoying, SysRq codes are really useful 19:32:10 there is probably something under /proc to turn them on 19:32:18 or failing that, apply google 19:32:35 Magic sysrq key is a kernel configuration flag. 19:32:46 I wouldn't be very surprised if some distributions turned it off. 19:34:29 Although there is also a sysctl, available via /proc/sys/kernel/sysrq, to toggle whether it's enabled. 19:35:06 fizzie: I found the sysctl, set it to 1, and still it didn't work 19:37:06 -!- atsampson has quit (Read error: 110 (Connection timed out)). 19:38:58 OK, I figured it, SysRq is Fn-PrtSc on a laptop 19:39:08 and has to be held down in Ubuntu for SysRq stuff to work 19:39:21 but that implies holding down Fn too, and Fn-H is not H 19:43:49 what? 19:44:05 no, you let go of everyting before typing alt-h 19:44:09 well here you do 19:46:13 page 1 of my graphic adaptation of "System Down" 19:46:13 http://www.nonlogic.org/dump/images/1207421117-down1.jpg 19:46:43 SimonRC: according to Google you have to hold it down on Ubuntu 19:52:09 got it 19:52:19 you have to let go of SysRq but not of Alt 19:54:26 so it's +Alt +Fn +SysRq -SysRq -Fn +H -H -Alt to do an Alt-SysRq-H on a laptop 20:04:29 -!- tola__ has joined. 20:06:20 http://ipv6.google.com/ <-- cool didn't know about that 20:06:25 it got a jumping logo too 20:09:41 AnMaster: I can resolve the AAAA record but the wireless router I'm connected to doesn't support IPv6 20:10:01 well maybe you can access logo anyway 20:10:13 http://ipv6.google.com/intl/en_ALL/images/logo.gif 20:10:18 hm not right 20:10:33 http://ipv6.google.com/images/ipv6_logo.gif 20:10:37 ah that works better 20:10:44 ais523, try accessing same with www.google 20:10:46 it works 20:14:07 ais523: ok 20:15:26 RodgerTheGreat: cool 20:15:30 where is the original? 20:16:09 or the source, or whatever 20:21:23 -!- tola_ has quit (Read error: 110 (Connection timed out)). 20:28:54 http://rodger.nonlogic.org/files/SYSTEM%20DOWN.txt 20:29:40 * SimonRC laughs at Garfield Minus Garfield (again) 20:30:40 -!- tola__ has quit. 20:32:05 * SimonRC laughs at SYSTEM DOWN too 20:34:13 -!- ehird has joined. 20:34:20 -!- ehird_ has joined. 20:37:27 http://www.nonlogic.org/dump/images/1207424203-down2.jpg <- and the second page 20:43:19 -!- tola_ has joined. 20:43:51 ais523: I am PMing you 20:44:30 ICEBreaker is quite cool 20:44:39 you dnot need the screen though 20:44:50 for the higher difficulty levels 20:45:09 tola_: not receiving it over here for some reason, I'll send you a PM to see if that gets through 20:46:08 ais523: received both 20:46:17 -!- oklopol has joined. 20:56:48 ais523: ello 20:58:41 hi ehird_ 20:58:50 you're in here twice at the moment 20:59:46 +ul (hello from me, too)S 20:59:47 hello from me, too 21:00:36 +ul (does it respond to instructions from everyone)S 21:00:37 does it respond to instructions from everyone 21:01:31 +help 21:01:35 who is thutubot 21:01:39 a local egobot? 21:01:45 ehird_: my bot 21:01:48 ahh 21:01:52 it's written in Thutu, piped both ways to netcat 21:02:00 at the moment it only supports +ul, +hello and +quit 21:02:04 my bot -- Endeavour -- would be in here if I didn't stop messing around 21:02:09 with technology to make it 21:02:10 and responding to pings, of course 21:02:20 right now the plan is a Haskell framework which strongly-types stuff 21:02:26 and types for commands so they are composable 21:02:38 Haskell type system sandboxing, too? 21:03:47 If I did +quit, would it quit? 21:03:52 yes 21:03:59 Sgeo: it would make toast 21:04:00 and then I'd possibly get annoyed, and maybe restart it again 21:04:10 ais523: maybe. but it would have a haskell 'eval' 21:04:27 I keep sketching out a basic example -- a Karma plugin 21:04:27 watch out for unsafePerformIO 21:04:34 @karma FOO, @karma+ FOO, @karma- FOO 21:04:42 ais523: I will use the mechanism of lambdabot: only evaluate pure code 21:04:47 & don't import stuff like that 21:05:07 ehird_: I was thinking of making thutubot issue corrections when people did s/a/b/ 21:05:24 also, I made it respond with NOTICE before to comply with the IRC spec, but AnMaster told me not to 21:05:54 AnMaster, telling you to disobey the spec? 21:05:58 ais523, it should do NOTICE on errors but not much else IMO 21:05:59 Consistent guy 21:06:12 ehird, that is how most bots do on irc, and it works better normally 21:06:20 current practise 21:06:24 AnMaster: but you told me off when I got EgoBot and thutubot in an iterating loop 21:06:26 because the irc RFCs are a joke 21:06:29 the whole NOTICE thing was meant to avoid that 21:06:40 bot loops are great 21:06:47 ais523, hm 21:07:02 EgoBot/blahbot got into one of them once 21:07:04 ais523, make it an option for the end user 21:07:05 I think ais523 sired the program 21:07:12 AnMaster: How pointless 21:07:13 :D 21:07:19 ehird, why? 21:07:33 +quit 21:07:34 -!- thutubot has quit ("ThutuBot quitting"). 21:08:23 I hate routing tables 21:09:55 -!- thutubot has joined. 21:10:08 +ul (test)S 21:10:09 test 21:10:14 ++ul (:aSS):aSS 21:10:21 AnMaster: is that what you meant? 21:10:30 hm? 21:10:39 making it an end-user option whether to privmsg or notice 21:10:43 ah 21:10:46 yes in config file 21:10:49 is what I meant 21:10:51 but that's not the end-user 21:10:55 the people in the channel are the end-users 21:11:05 ais523, ok I meant owner option 21:11:18 well, I'd set it to NOTICE, and then you'd tell me off again 21:11:30 the code needs a rewrite anyway 21:11:53 ais523, hm problem is a lot of ircds have mode to block channel notices 21:12:07 well, you just don't put a bot into those channels 21:12:21 and NOTICE is just a way to send messages without getting autoreplies 21:12:33 oh, and ehird_: I once got three bots in a loop 21:12:34 Step 2: Get someone with some sanity on the project. 21:12:38 Ian Hixie is sane 21:12:40 EgoBot and bsmnt_bot were two of them 21:12:44 but I can't remember the third 21:12:46 which is amazing considering he works with browsers 21:12:54 ais523: blahbot, probably. 21:12:56 That was mine 21:13:38 ehird, I'm not sane? 21:14:21 -!- oklopol has quit (No route to host). 21:16:18 Sgeo: Sometimes, people quote logs nd reply to them 21:16:40 However, as for the matter of your sanity, I suggest you look at what this channel is about and make a decision based on that 21:16:53 lol 21:17:53 ehird_: my sanity levels had dropped so low during my project last month that I actually went to #esoteric as a method of restoring some sanity, and it worked 21:18:16 I also find writing INTERCAL compilers theraputic, for some reason 21:22:11 SUPER 21:22:13 DANCE 21:22:14 EXPLOSION 21:22:15 TIME 21:22:50 * Slereah explodes 21:23:03 You didn't even dance D-8 21:23:39 SimonRC: that's the idea behind the sounds 21:23:57 I actually do better just closing my eyes and visualizing the keyboard as I listen 21:25:17 um, how many conversations are going on in here at once now? 21:25:25 ais523: fifty-four 21:25:30 and a half 21:25:34 Mine wasn't a conversation, but I can start one if you'd like. 21:26:07 ehird_ may be right, we have to count all the conversations which were abandoned several months ago but will be picked up several months from now 21:26:08 ais523: http://hpaste.org/6847 initial draft of what Endeavour code should look like 21:26:15 don't like the *cmd stuff, it seems like fluff 21:26:15 "SimonRC: you dnot need the screen though" 21:26:38 hmm, wait 21:26:41 that isn't quite right just yet 21:27:07 @karma+ ais523 21:27:10 @karma+ ais523 21:27:11 @karma+ ais523 21:27:20 see, this is an easily gamable bot 21:27:27 ais523: lambdabot has that too 21:27:38 but nobody cares, it doesn't matter 21:27:38 lambdabot does karma? 21:27:43 yes 21:27:47 @karma,@karma+,@karma- 21:27:53 actually, I've seen its !help, and I'm not surprised 21:28:00 [21:27] You can't change your own karma, silly. 21:28:03 that's the one protection 21:28:03 but if you /nick 21:28:04 and try 21:28:06 it works 21:28:12 lambdabot does everything apart from interpret esolangs, AFAICT 21:28:18 it does unlambda 21:28:22 & used to do brainfuck 21:28:25 but it was buggy 21:28:54 ais523: http://hpaste.org/6850 21:28:59 it accoubnts for the plugindata stuff now 21:29:03 i'm going to annotate with some types 21:29:38 hmm 21:29:51 'karmaPlugin :: Plugin' --> 'karmaPlugin :: Plugin Karmas' 21:29:52 small fix 21:30:32 hmm no 21:30:39 karmaPlugin :: Plugin Karmas (Map String Integer) 21:30:53 * ais523 has a really devious idea 21:30:58 ++quit 21:30:59 -!- thutubot has quit ("ThutuBot quitting"). 21:32:32 SimonRC: have you taken a crack at The Abyss yet? 21:33:19 also known as "Rodger's Demon" 21:33:55 ais523: http://hpaste.org/6851 fully updated Endeavour example, with type info 21:40:23 -!- thutubot has joined. 21:40:36 +haskell [1..5] 21:40:53 whoops 21:40:56 +quit 21:40:57 -!- thutubot has quit (Client Quit). 21:41:29 ais523: Haha 21:41:39 ais523: I have GOT to see that 21:41:43 ehird_: you've guessed how I'm doing it yet? 21:42:02 this is pretty much the perfect song to listen to while reading the first chapter of GEB 21:42:11 * RodgerTheGreat is listening to Music Is Math by Boards of Canada from Geogaddi 21:42:11 ais523: Nope.. But I would like to see 21:42:15 -!- thutubot has joined. 21:42:22 RodgerTheGreat: Apart from Bach. 21:42:24 +haskell [1..5] 21:42:25 +haskell [1..5] 21:42:29 well, naturally 21:42:34 +haskell putStrLn "dum de de dum dum" 21:42:40 ais523: A constant nop? 21:42:42 IO won't work 21:42:47 and no, it should work eventually 21:42:50 but I'm still ironing out the bugs 21:42:51 Hmm 21:42:56 (and it's a cheat, by the way) 21:42:59 ais523: A suggestion.. 21:43:04 ais523: If you want to seriously make it evaluate haskell 21:43:09 make +haskell call out to a haskell program 21:43:10 Because 21:43:15 the hs-plugs package 21:43:19 has the thing that lambdabot uses 21:43:33 you basically copy the script over, tweak as needed, and write a short Haskell generator 21:43:51 ais523: anyway, it still isn't working l( 21:43:52 *:p 21:44:04 +quit 21:44:05 -!- thutubot has quit (Client Quit). 21:44:15 Thutu can't call out to the shell 21:44:21 and as I said, it's written in pure Thutu 21:45:59 ais523: But you are already wrapping using netcat. 21:46:09 You can write a shellscript to multiplex to itself and netcat 21:46:26 Thutu can't use PSOX? 21:46:56 Sgeo: maybe 21:47:00 but that would be another wrapper 21:47:07 and I'm not sure how well it handles \0 21:48:54 Sgeo: You have an answer for everything.. 21:49:03 and the function generating it is (const "PSOX") 21:49:07 This is not a haiku. 21:49:16 ehird_: anyway, I was trying to get it to relay +haskell queries to lambdabot and copy back the answer 21:49:25 it was relaying them fine, but lambdabot was ignoring it 21:49:41 ais523: did you do 21:49:45 which is strange, because it doesn't ignore me with exactly the same PRIVMSG 21:49:48 /msg lambdabot > foo 21:49:53 /msg lambdabot @run foo -- this also works 21:49:56 well 21:50:00 ehird_: it's a bot, so I didn't use /msh 21:50:01 PRIVMSG lambdabot :@run CODE 21:50:03 ehird_, I'm not saying PSOX is the answer for "How do I go up 340 trillion trillion trillion meters in Havok4" 21:50:04 s/h/g 21:50:08 s/$/\// 21:50:11 but I was using @run 21:50:35 ais523: did you remember the colon 21:50:40 yes 21:50:41 it's a beaaotch with irc 21:50:57 PRIMVSG lambdabot :@run [1..5] 21:50:58 RodgerTheGreat: where is "The Abyss"? 21:51:06 the same command works for me on /quote 21:51:22 um, wait, I meant PRIVMSG 21:51:29 but I got it without the typo originally 21:52:33 SimonRC: It's the thing with basil and gulesfish 21:53:18 ehird_: I tried that 21:54:00 The basil puzzle had an effect on me like something out of a Lovecraft novel, so I thought it best not to keep trying 21:54:33 Cthulhuplant wants cheezburgr 21:55:55 SimonRC: there's a link to the trailhead on my Code page 21:56:43 "trailhead"? 21:57:32 oh, like a linked-list head 21:57:34 it's kinda like a journey 21:57:38 indeed 22:01:01 but, for the reason given above, I am avoiding it 22:01:38 experience with many puzzles, text adventures, detective novels, etc shows that me and such puzzles really do not mix well 22:03:40 ah, a shame 22:03:46 pikhq had a lot of fun 22:05:46 SimonRC: zork! 22:06:21 I bet he did 22:06:36 I didn't get very far without you helping me 22:06:45 * ais523 is making an esolang-based text adventure 22:06:51 kewl 22:06:57 as in, it's written in C but all the puzzles are based on esolangs 22:07:03 I haven't got very far, though 22:07:10 there are puzzles based on INTERCAL, BF and Smetana 22:07:14 ais523: be sure to take a look at the emacs text adventure "dunnet" for inspiration 22:07:29 and there's an obvious location for a HOMESPRING-based puzzle, but I haven't figured out the details 22:09:49 ais523: my puzzles involve some esolangs 22:10:04 in fact the next level I'm planning makes devious use of several 22:11:37 RodgerTheGreat: tell me the answer to basil and i'll get on it 22:11:38 i could do it 22:11:41 i'm just not interested 22:11:44 in most of mine, you're the IP 22:12:13 and you have free will to move both backwards and forwards, sideways as well if it's a 2D lang or I've 2D-ised it for puzzle purposes 22:12:29 but things like GOTO or COME FROM affect you like they would affect the IP normally 22:22:09 cool 22:24:06 mrph 22:24:12 * ehird_ thinks of what language to implement befunge98 in 22:24:27 oh, and ais523, I do logread 22:24:28 ;) 22:25:26 * ais523 remembers dropping that message into the logs so you would see it, but can't remember what the message was about any more 22:25:42 wow, /me can lead to really strange sentence constructions sometimes 22:28:44 * GregorR says "You should put all your messages in /me says" 22:29:01 * GregorR says, "That's what all the cool kids do." 22:29:02 * ehird_ > Test 22:29:09 * ehird_ > Yippee 22:29:38 * GregorR is better than you. 22:29:42 * GregorR is better than you in every way. 22:29:46 * SimonRC doubts this 22:29:57 * GregorR makes you feel like a sniveling little baby. 22:30:28 * ais523 * hey, my name is in Usenet bold now! 22:30:51 * ais523 * that's better than unmatched XML tags any time, right? 22:30:55 TO KILL GREGORR, TURN TO PAGE 81. TO SAVE THE PUPPY'S LIFE, TURN TO PAGE 132. 22:32:08 * ehird_ <- haskell 22:32:27 IM IN UR MONAD, ORDERING UR OPERATIONS 22:32:51 i'm in ur gonad, makin ur babies 22:32:58 D-8 22:36:26 ehird_: what's that <- for? 22:36:39 it's the assignment operator in INTERCAL, but somehow I don't think that's what you had in mind 22:37:37 ais523: haskell do-notation 22:38:34 ah, do haskell, temporarily lambda ehird to the result? 22:40:00 indeed, such a binding cannot be done as the last line of a do-block 22:46:58 actually, <- does rather similar things in INTERCAL and Haskell 22:47:02 that should be worrying 22:54:40 ais523: 'do ehird_ <- haskell; ...' --> haskell >>= (\ehird_ -> ...) 22:54:52 ehird_: I know 22:55:23 but getting it techically correct is a little hard without mentioning monads, which is what I was trying to do above 23:00:13 ah, Tkhlpzyv feels much better after that reboot 23:00:42 d-notation binding is slightly like CPS 23:01:48 tkhlpzyv? 23:02:09 my laptop 23:02:18 oh, ok 23:03:03 ooh, firefuckedup has offered to restore the previous session 23:03:31 since this involves creating severeal hundered tabs at once, I now have "Flight of the Valkeries" stuck in my head 23:03:51 da DA dada DAA DAA 23:04:00 DAA daDA DAA DAA 23:04:01 fireuckedp 23:04:02 DAA daDA DAA DAA 23:04:06 DAA daDA DAA DAA 23:04:09 etc 23:04:13 => # 23:04:21 * (fireuckedp 'firefox) 23:04:23 => T 23:06:49 f{ire,{u{cked,p}} 23:06:51 :-P 23:12:55 hmm, who is the 'amb' expert here again? 23:14:34 ah, marshmallows 23:14:35 but not here 23:30:31 ehird_: it's basically just C with MAYBE and GO BACK 23:31:13 ais523: ? 23:31:15 yes 23:48:22 -!- ais523 has quit ("(1) DO COME FROM ".2~.2"~#1 WHILE :1 <- "'?.1$.2'~'"':1/.1$.2'~#0"$#65535'"$"'"'&.1$.2'~'#0$#65535'"$#0'~#32767$#1""). 2008-04-06: 00:05:37 -!- atsampso1 has changed nick to atsampson. 00:12:38 -!- Judofyr has quit. 00:24:31 -!- Tritonio_ has quit (Remote closed the connection). 00:44:34 -!- Tritonio_ has joined. 00:48:37 -!- jix has quit ("This computer has gone to sleep"). 00:53:35 -!- carl has joined. 01:08:38 -!- tola_ has quit. 01:13:19 -!- tola_ has joined. 01:22:45 -!- carl has quit (Read error: 110 (Connection timed out)). 01:32:14 -!- tola_ has quit. 02:10:04 -!- ehird_ has quit ("This computer has gone to sleep"). 02:10:04 -!- ehird has quit. 02:44:05 -!- Overand_ has joined. 02:45:17 -!- Overand has quit (Read error: 104 (Connection reset by peer)). 02:45:24 -!- Overand_ has changed nick to Overand. 03:14:57 -!- adu has joined. 03:19:17 -!- GreaseMonkey has joined. 03:29:15 -!- adu has left (?). 04:30:45 bed-time 04:49:08 * pikhq is curious: how many people here went to their high school prom? 04:52:28 i didn't. 04:53:00 * pikhq is going to his senior prom. w00ts. 04:53:15 (and went to his junior prom) 05:06:03 LOOOOSER 05:06:16 GregorR: No, a loser goes to prom without a date. 05:06:29 I had a date the first time, and I have a girlfriend now. 05:18:32 I'm back 05:27:22 I went to my senior prom. I was glad I went at least once, I guess. 05:36:16 Congrats: you're ahead of the average computer geek. 05:37:54 * pikhq notes that this year, prom ought to be cheaper, by merit of *owning* a tux. . . 05:38:52 I went with a friend, but I did have a date (and she was pretty cute, too.) 05:40:56 overall, I'd say it was a fun experience, but not really my style. I'm not big on parties. 05:54:52 * Sgeo went to his high school prom 05:55:00 Without a date :( 05:55:40 I did ask a girl if she would go to the prom with me. She said something about how she wasn't sure if she was going :( 05:55:45 She did end up going though 05:56:38 ouch, yeah that's something like what happened with the first girl I asked. 05:56:52 but, nothing ventured, nothing gained 05:57:16 I kept wondering if I should keep waiting for her to get back to me 06:06:01 The girl I asked this year was apparently almost ready to ask *me*. XD 06:50:11 -!- Sgeo has quit ("Ex-Chat"). 06:56:27 welcome to #esoteric-i-had-more-sex-in-high-school-than-you! 06:57:25 lament: Some people don't have a "alright, I'll date, wait a bit fuck, break up, repeat" attitude with relationships. 06:58:08 pikhq: some people commit suicide due to unrequited love 06:58:18 I, however, agree with lament in the sense that this is bordering on becoming a pissing contest. As they say on somethingawful, "MY GIRLFRIEND" 06:58:57 RodgerTheGreat: It had been done with for almost an hour when he brought it back up. :p 06:59:04 if you have a happy relationship, good for you. Not everyone needs to hear about it. 06:59:16 pikhq: That's what she said. 06:59:27 GregorR: Grrr. 06:59:31 * GregorR takes a bow. 06:59:42 Now you just reminded me of my Japanese teacher saying that in Japanese. 07:00:05 Needless to say, nobody was expecting it. 07:00:51 RodgerTheGreat: BTW, it's not so much a pissing contest as it is a dick-measuring contest. :p 07:01:27 an inability to interpret straightforward metaphor and common figures of speech is not a virtue 07:02:03 pikhq: that's what she said. 07:02:12 lament: ... in bed. 07:02:29 Anyways, this has now degenerated into a series of cliches. 07:02:31 ... in the type system 07:02:38 Hmm. 07:02:46 A type system based on common cliches? 07:03:44 cliches are memetic macros, serving to obviate active thought. 07:03:48 discuss. 07:04:01 Kanojou ha sou itta. 07:04:06 (that's what she said.) 07:04:41 palpable irony 07:04:42 RodgerTheGreat: TAKE OFF EVERY ZIG. MOVE ZIG. 07:04:43 Anyways, yes, that much is obvious. 07:04:59 PLEASE TAKE OFF EVERY ZIG ... IN BED 07:05:08 In fact, arguably, it is exactly the same in purpose, if not in form, as extensive psuedointellectualism. 07:05:22 (as most commonly seen in Basketweaving Monthly. ;p) 07:05:45 what's interesting, though, is what seems to be an inherent tendency toward cliched behavior and thought patterns 07:06:19 if this is the case, what drives the impetus for novel behavior, and what can we draw from this as a whole? 07:06:20 It's almost a herd mentality. 07:06:59 pikhq: I would argue that it *is* a herd mentality. Humans are significantly more instinctual creatures than we like to think. 07:07:24 The impetus for novel behavior is, surely, a moderately rare, and therefore not terribly succesful, evolutionary strategy. 07:07:47 Sure, we see the rare genius: eccentric and brilliant. 07:07:52 How many of them breed? 07:08:26 (answer: not as many as those who follow the herding instincts of most of homo) 07:08:43 Is meme-forging a trait that exists in all humans, and if so does this tendency come in many weights? Is there a genetic predisposition, a shared neurological background? 07:08:56 geniuses aren't a race, though. Genius is not genetic. 07:09:00 Or perhaps it's culturally based? 07:09:04 so it doesn't matter if they breed or not 07:09:05 lament: It could be a rare genetic mutation. 07:09:16 their children are normal. 07:09:31 Or it could be a damned rare application of persperation. 07:09:45 Is it even important that these individuals reproduce? Perhaps the ideas they generate, memetic children so to speak, represent as great a degree of success as biological reproduction? 07:09:46 I don't think "genius" is well-defined enough that it can be associated with any particular genetic factor, upbringing, etc, etc. 07:10:01 Which would indicate that the lack of novel behavior is more of a cultural detail. 07:10:12 "exceptionally talented people" is a pretty well-defined group 07:10:24 A tendency that requires a specific environment to blossom? 07:10:35 RodgerTheGreat: Perhaps. 07:10:37 you tend to notice when somebody's exceptionally talented (so they become world-class at some endeavour) 07:14:31 well, good night everyone 07:14:45 -!- RodgerTheGreat has quit. 07:51:49 -!- oklopol has joined. 07:54:26 http://pastebin.com/m5c392293 <<< rational class with just multiplication implemented in oklotalk-- 07:54:46 where oklotalk-- is the name for oklotalk with this retarded syntax 07:55:20 if anyone is at all interested, i would, naturally, love to explain 07:56:04 multiplies 4/9 by 3/2 and simplifies to 2/3 07:57:01 i'm surprised i'm actually capable of keeping on a project for over a day when i have a deadline 07:57:14 but i do like the results 07:57:19 now kebab -> 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:59:16 -!- oklopol has quit (Read error: 113 (No route to host)). 09:02:53 -!- oklopol has joined. 10:02:20 http://www.vjn.fi/pb/p441122612.txt pretty much complete 10:02:39 although i'm sure gcd fails on negatives, since i don't even know what it should return :P 10:02:48 to make the numbers work that is 10:03:16 perhaps there is a simple way, haven't given any thought to it, because this is just a small example of making new types in oklotalk 10:04:03 why is everyone so quiet now that THERE IS SOMETHING INTERESTING GOING ON FOR ONCE! :D 10:04:15 i know, i know, no one cares 10:04:24 i should eat something 10:04:31 the fucking kebab place was closed :< 10:13:02 Maybe you should then use a normal kebab place instead of a... uh, procreation-oriented one. 10:14:31 BUG ... SO ... STUPID ... 10:14:36 CAN'T ... BREATHE ... 10:14:44 well fucking kebab was really en euphemism for hot gay love. 10:15:07 Let's say you have a byte, arranged something like this: aaaaabbb, and you wanted to get just the 'a' part, multiplied by 4. 10:15:18 -!- ais523 has joined. 10:15:20 yarr 10:15:28 so you fibble a few rotations 10:15:34 If you're an idiot, like Gregor is, you would simply shift it right by 1, leaving some random-arsed part of the 'b' part still in tact BECAUSE YOU'D BE A DUMBFUCK 10:15:37 or do an andance 10:15:44 :D 10:15:53 haha lol, let's all point at GregorR and laugh 10:15:55 So, uh, JSMIPS works much better now >_> 10:16:13 * oklopol would never make such a dumb mistake 10:16:19 And it is beyond shocking how much actually worked with that bug in place. 10:16:35 btw. spent 3 hours yesterday just to do a add->try_add fix. 10:16:46 i mean, changed the variable add to try_add. 10:17:03 In what? 10:17:07 my oklotalk interp 10:17:10 Ah 10:17:17 And couldn't quite find every last instance? :P 10:17:22 these adds copy around function namespaces 10:17:28 (Shouldn't smart compilers be able to tell you these things?!) 10:17:58 and in almost every case, add works, but in some corner cases, it overwrites some variables with old ones, when you create an inner function in another function 10:17:58 -!- GreaseMonkey has quit ("nighty"). 10:18:17 i kinda assumed after sk worked, scoping worked... but noooo 10:18:36 sk doesn't really test dynamic scoping though, i had separate tests for it 10:18:52 oklotalk has both <3 10:19:26 hehe, pressed on another channel's name by accident, for a second i though saying that got me kicked :P 10:19:41 "both? GET THE FUCK OUTTA HERE, SICKO" 10:19:48 but i guess it's not that weird 10:20:00 uhhh i need to pee, god i'm talkative today 10:20:01 -> 10:33:27 -!- oklopol has quit (Read error: 104 (Connection reset by peer)). 10:35:19 -!- oklopol has joined. 10:36:57 -!- oklofok has joined. 10:40:36 GregorR: what was the bug? 10:51:22 ais523: he told already 10:51:33 -!- Judofyr has joined. 10:51:42 oklofok: I only caught the second half of the explanation 10:51:56 GregorR: Let's say you have a byte, arranged something like this: aaaaabbb, and you wanted to get just the 'a' part, multiplied by 4. 10:52:03 sorry, i didn't see you join 10:52:10 this is what you missed 10:55:35 -!- oklopol has quit (Read error: 110 (Connection timed out)). 12:06:01 '.1$#248'~'#0$#252' 12:06:15 (translation of that operation into INTERCAL, hopefully correct) 12:22:56 -!- oklopol has joined. 12:23:24 -!- oklofok has quit (Read error: 113 (No route to host)). 12:55:29 -!- ais523 has quit (Read error: 110 (Connection timed out)). 13:19:39 -!- ais523 has joined. 14:19:33 -!- Iskr_ has joined. 14:20:54 -!- Iskr has quit (Nick collision from services.). 14:21:02 -!- Iskr_ has changed nick to Iskr. 14:38:54 -!- Tritonio_ has quit (Remote closed the connection). 15:13:14 -!- vixey` has joined. 15:25:08 GregorR: 'Nice'. 16:10:16 -!- ehird_ has joined. 16:39:14 doot to doot 16:39:57 hmmmmmmmmmmmm Hi ehird 16:42:36 welcome to #esoteric-i-had-more-sex-in-high-school-than-you! 16:42:53 you can't join 16:42:54 :( 16:45:09 pfft i had more than lament 16:46:35 was this during study time? 16:47:25 study time? 16:47:58 -!- RodgerTheGreat has joined. 16:51:24 -!- vixey` has quit ("Leaving"). 16:51:58 -!- vixey has joined. 17:25:46 ais523: I had an idea for an operator like and/or 17:25:48 'but' 17:25:59 ehird_: there's a BUT in TriINTERCAL 17:26:13 search the logs for its definition (I discussed it recently), or look at the C-INTERCAL manual 17:26:23 ais523: i'm talking about a logical operator though 17:26:24 (it exists in CLC-INTERCAL too, but its docs say 'see the C-INTERCAL manual') 17:26:26 i guess: 17:26:27 ehird_: it is 17:26:32 TRUE but TRUE = FALSE 17:26:33 it can be used like AND or OR 17:26:38 FALSE but TRUE = TRUE 17:26:41 TRUE but FALSE = FALSE 17:26:44 but it works on ternary logic levels 17:26:45 FALSE but FALSE = FALSE 17:26:56 ehird_: you've just defined not-reverse-implies 17:27:10 ais523: well, that's too wordy. I call it 'but' 17:27:15 ehird_: how is that not xor? 17:27:25 RodgerTheGreat: TRUE xor FALSE = TRUE 17:27:26 er, wait 17:27:28 TRUE but FALSE = FALSE 17:27:32 yeah, I missed one 17:27:37 hmm 17:27:41 SHOULD 'true but false' be false? 17:27:45 it seems so 17:28:03 ehird_: just use the INTERCAL definition 17:28:11 ais523: naww, i want a binary definition 17:28:25 ehird_: stop being so attached to binary! 17:28:36 ternary is the NUMBER SYSTEM of the FUTURE 17:28:41 bah 17:28:46 i want 17:28:48 'if not x but y' 17:28:52 to do the intuitive 17:29:34 *Main> not test `but` test1 17:29:34 False 17:29:35 darn 17:30:31 but :: Bool -> Bool -> Bool 17:30:31 True `but` True = True 17:30:31 True `but` False = False 17:30:31 False `but` True = False 17:30:31 False `but` False = False 17:30:49 and 17:30:50 ehird_: `but` is just `and` in the not a but b situation 17:30:59 yes, that is true 17:31:00 i guess 17:31:01 :( 17:31:06 there's no new operators under the sun 17:31:16 sure there ae 17:31:16 just ones that don't have common names 17:31:17 are 17:31:20 ehird_: crz was pretty weird 17:31:29 (the only logical operation available in Malbolge) 17:31:34 there's 32 of them 17:31:38 there are exactly 16 binary logical operators 17:31:40 anyway, the problem with but is it's not purely a logical operator, it has expectancy integrated 17:31:51 and expectancy doesn't occur in programming languages 17:32:06 vixey: 2^4 17:32:39 RodgerTheGreat: 2^4 == 6 in C 17:33:00 that's because in C, a carat has nothing to do with powering 17:33:16 RodgerTheGreat: i'm sure ais523 didn't know that :D 17:33:27 xor is, conveniently, binary addition without carries 17:33:36 no, xor is subtract-without-borrow 17:33:41 add-without-carry is sharkfin 17:33:46 it's just that they happen to be the same in base 2 17:33:50 ... 17:33:54 :O 17:34:04 ooh, wait a second.. 17:34:23 oklopol: what was your 'natural language OR' again? 17:34:25 NMOR or something 17:34:37 what 17:34:37 it was 'exclusive maybe or' or something lik ethat 17:34:48 oklopol: you said it a while back 17:34:48 i'm not sure what you are referring to 17:34:54 I conclude that C's ^ is actually sharkfin, because it uses the same character as INTERCAL's sharkfin 17:35:02 but C only works in binary, so it's hard to tell 17:35:03 hmm 17:35:05 did i now 17:35:10 I guess that makes as much sense as anything 17:35:10 you said that natural language's "OR" was not the OR in programming languages 17:35:12 which is obvious 17:35:17 you said it was NMOR, or something like that 17:35:25 which was "Exclusive maybe or", or something like that 17:35:55 i don't know what you mean, sorry :D 17:36:18 what's "a while back"? 17:36:26 like 17:36:28 a few months 17:36:54 i was thinking i'd implement a natural language or in oklotalk, though, for instance (4 or 7) + 2 == 6 ==> true 17:37:17 this needs to be done in a dirty fashion, though, because oklotalk is a dirty language. 17:37:28 meaning it doesn't work 100% 17:38:00 once i do state lists, this should be possible, but that's not for this implementatino 17:38:04 implementation 17:38:06 oklopol: oh that's easy 17:38:09 that's like amb 17:38:18 ehird_: show it to me in a language 17:38:27 x = amb(4,7); if (x+2 == 6) { print("yay"); } else { amb(); } 17:38:35 'yay' will be printed 17:38:38 the definition of or 17:38:53 oklopol: well, its isomorphic to 'amb' 17:38:53 http://www.randomhacks.net/articles/2005/10/11/amb-operator 17:38:55 DO .1 <- #4 MAYBE DON'T .1 <- #7 DO .2 <- #2 DO (1000) NEXT DO ABSTAIN '.3~.3'~#1 FROM (1) (1) DO GO BACK DO GO AHEAD 17:38:57 there is an implementation 17:38:58 its ruby 17:39:00 but its very clear 17:39:02 see, it's possible in INTERCAL too 17:39:11 oklopol: it uses callcc, though, so make sure you understand that ;) 17:39:17 ais523: is that using the continuation lib? 17:39:22 ehird_: no 17:39:27 it's using MAYBE/GO BACK/GO AHEAD 17:39:32 Backtracking INTERCAL 17:39:35 oklopol: but yeah, http://www.randomhacks.net/articles/2005/10/11/amb-operator. it includes a simple explanation of it and a simple implementation 17:39:40 ehird_: i know all this, naturally, that doesn't necessarily make implementing or trivial 17:39:48 oklopol: you know amb? 17:39:48 well 17:39:52 you can implement or kind of well 17:39:55 if you can overload == 17:39:57 and + 17:40:05 just make the + etc provide a temp object 17:40:06 well that doesn't sound too convenient 17:40:08 then == to morph itself correctly 17:40:09 using amb 17:40:13 oklopol: but really, look at amb 17:40:18 eh 17:40:22 the amb part is trivial 17:40:40 the problem is about generic operator type checking, at least in oklotalk 17:41:08 amb((char*)x, (int*)y)+1 17:41:16 but anyway, i still don't know what you mean by NMOR 17:41:20 ais523: I made amb in C once 17:41:26 ehird_: bet it couldn't handle that 17:41:27 ehird_: why should i look at amb, it's a fairly simple operator 17:41:27 It used a continuation lib using stack smashing 17:41:32 *function 17:41:32 and a macro TRY(x) 17:41:36 TRY(x) is like return x; 17:41:38 but you can backtrack to it 17:41:48 FAIL; backtracks to the latest TRY(x) and resumes from there 17:42:02 ais523: it could handle mostly anything 17:42:04 it was something like this 17:42:11 oh 17:42:14 the C implementation was quite interesting, i gotta admit 17:42:14 -!- Judofyr has quit. 17:42:14 ais523: but you needed to specify the argc 17:42:22 since c cannot do varargs without knowing that 17:42:30 (amb x y z) 17:42:31 ehird_: you still can't change the type of the return value 17:42:40 ais523: well, no :) 17:42:42 which is needed for that expression to work 17:43:15 typedef int amb_t; amb_t amb(size_t argc, ...) {va_list ap; amb_t x; va_start(ap, argc); while (argc--) {x = va_arg(ap, amb_t); TRY(x);} FAIL;} 17:43:34 the end FAIL will mean that we exhausted the args, but maybe things can get better if some other thing changes 17:43:41 mostly it'll just terminate the program since there's no previous backtracks 17:43:46 anyway, here's an amb usage example in c 17:44:08 ehird_: that's really bad C, because you didn't use va_end 17:44:10 Scheme is a better place to describe AMB :/ 17:44:23 int x = amb(3, 1, 2, 3); int y = amb(3, 4, 5, 6); if (x*y == 8) {printf("%i %i\n", x, y);} else {amb(0);} 17:44:29 ais523: just add it before the FAIL 17:44:30 vixey: that's the charm, of course 17:44:30 not hard 17:44:31 :) 17:44:36 ais523: i just typed that out now, anyway 17:44:49 vixey: But you need two callcc's in Scheme to do it 17:44:52 It's a little ugly 17:44:53 ehird_: no it is hard, because you don't call va_end before TRY returns 17:44:59 lol 17:45:02 wtf 17:45:09 ais523: but that's alright, because we have to return there 17:45:12 ais523: think about it like a coroutine 17:45:14 you -are- mad ehird 17:45:17 it is still running, just blocked 17:45:18 ehird_: you have to call va_end before you return 17:45:21 or the stack may be wrong 17:45:23 ais523: TRY() is not return 17:45:29 ais523: TRY() ACTS like return 17:45:32 ehird_: but it can act like return 17:45:34 it in fact does some stack magic 17:45:39 ais523: it is implemented totally differently 17:45:43 http://rosettacode.org/wiki/Amb 17:45:43 and if you return while the stack is wrong, you /will/ end up jumping to a random location 17:46:06 vixey: I talked to marshmallows when he made that page. 17:46:09 however, va_end is a NOP in most C implementations, which is why you never noticed 17:46:17 ais523: Sigh... http://homepage.mac.com/sigfpe/Computing/continuations.html 17:46:23 Read the implementation (it's old-style C though) 17:46:33 vixey: That AMB is horrific, and he agreed. 17:46:40 ehird_: then you can get away with it, because you're using varargs not stdarg 17:46:47 ais523: No 17:46:55 the C is only old-style in that it casts malloc 17:46:57 and some other stuff 17:47:55 ehird_: that definition of TRY may fail if va_end hasn't been called 17:48:06 ais523: did you look at the actual code that it calls? 17:48:13 ehird_: yes 17:48:14 yes 17:48:15 yes 17:48:22 ok 17:48:23 ok 17:48:23 ok 17:48:24 :) 17:48:24 fine 17:48:26 i agree then 17:48:26 :p 17:48:30 but anyway 17:48:33 Haskell's amb is really nice 17:48:35 it's [] in the list monad ;) 17:48:39 well 17:48:39 it's id 17:48:44 foo <- [1,2,3] 17:48:45 saving the context does not alter the stack, so va_end is still necessary! 17:48:48 and [] 17:49:04 and what's more, the list it generates is the bag-of 17:49:08 to get just one, you use 'head' 17:49:15 so 'head' is the list monad's run :) 17:49:22 wonder if i can manage amb without continuations in oklotalk... 17:49:25 ais523: and here's the [] monad's >>= 17:49:33 xs >>= f = concatMap f xs 17:49:36 return x = [x] 17:49:40 (>>=) = flip concatMap -- !! 17:49:43 yep 17:49:52 return = (:[]) 17:49:56 it's a really elegant way to use amb 17:50:02 upside down robot ninja ! 17:50:08 vixey: Pointless Haskell considered harmful in most cases. 17:50:17 upside down robot ninja > "harmful" 17:50:24 amb in prolog is nice 17:50:26 (from the wiki:) 17:50:26 amb(E, [E|_]). 17:50:26 amb(E, [_|ES]) :- amb(E, ES). 17:50:33 amb = member in Prolog yeah 17:50:36 but then prolog implementations practically have 'amb' built in 17:50:37 ehird_: every single operation in Prolog is amb, more or less 17:50:41 ais523: exactly 17:50:57 nah 17:51:00 I disagree 17:52:14 bah 17:52:16 well, apart from cut, which is really anti-Prolog 17:52:26 cut is very Prolog 17:52:28 :P 17:52:35 when doing a Prolog interp in Prolog, you have to use weird things like nonlocal cuts 17:52:56 vixey: yes, it's a useful part of the language, but it goes horribly against the theoretical foundations it's built on 17:53:45 ehird_: amb in Cyclexa: ('abc')^ is amb('a', 'b', 'c') 17:54:00 Prolog's one of those cases where the theory is more interesting than the application. 17:54:19 did you just math is interesting?! 17:54:36 just say * 17:54:52 cut == !? 17:54:55 I definitely agree 17:54:57 oklopol: yes 17:55:00 !/0 is cut 17:55:05 Huh? 17:55:30 * vixey pets EgoBot 17:55:43 * oklopol spoons EgoBot 17:56:33 implementing Prolog with cut using streams is very natural 17:57:02 It's hard to do it with explicit choice point stack though :[ 17:57:30 vixey: why is that? 17:57:39 Backtracking INTERCAL uses at least one choice point stack 17:57:46 more if you have multiple threads 17:58:03 and stack elements are refcounted so they can belong to more than one thread, allowing you to backtrack past a fork 17:58:25 (= w { 17:58:27 (-> (@ n [$any [1 2 3]]) n) 17:58:29 (-> (@ n 0) 4)}) 17:58:31 (+ (w 2) (w 0)) 17:58:33 ==> 6 17:58:33 -!- wildhalcyon has quit (Read error: 104 (Connection reset by peer)). 17:58:39 oklotalk does have something of an amb, for pattern matching 17:58:42 just because I don't know what , does 17:58:48 in terms of choice points 17:58:56 well, not amb 17:58:58 vixey: it's a NOP 17:59:07 a, b means run a, then run b 17:59:08 but i mean... whazzitcalled that declarativeness 17:59:14 if a backtracks then b is never run 17:59:30 if b backtracks then it can backtrack into a, because it was run earlier 17:59:31 say you have, 17:59:47 ( member(X,[a,b,c]) , member(Y,[x,y,z]) ) 18:00:08 then member sets X=a and sets two choicepoints 18:00:18 then the other member sets Y=x and sets two more choicepoints 18:00:21 I don't see the problem 18:00:25 if you solve the LHS then the RHS, backtrack, RHS, backtrack, RHS, backtrack 18:00:34 next you should redo member(X,[a,b,c]) 18:00:52 but once you do, how do you know to solve member(Y,[x,y,z]) next? 18:00:59 -!- wildhalcyon has joined. 18:01:01 it was popped off the stack 18:01:08 vixey: that's correct 18:01:25 you put it back on the stack starting from the start, because the next thing that runs after member(X... is member(Y... 18:01:30 because it follows it after the comma 18:01:50 so the choice point stack also holds the entire rest of the program? 18:01:50 imagine (member(X, http://en.wikipedia.org/wiki/Special:Search?go=Go&search=a,b,c],[d,e,f],[g,h,i), member(Y,X)) 18:01:56 haha 18:01:59 -!- oerjan has joined. 18:02:09 vixey: well, reconstruct what I said 18:02:15 the choicepoint stack holds continuations 18:02:32 which do hold the entire rest of the program conceptually, but that can normally be optimised 18:02:46 oh right 18:03:20 * vixey tries to write this out in code 18:03:26 e.g. in INTERCAL you can deduce the rest of the program from the IP and the NEXT stack 18:10:06 ais523: and the variables? 18:10:20 SimonRC: they're stored in the continuation too 18:10:28 but don't apply to deducing what the rest of the program is 18:10:28 ok 18:10:59 what about conditional jumps? 18:11:12 unless I misconstrue your meaning 18:14:37 SimonRC: the route through the rest of the program varies, of course, but all the information needed to be able to work out the place in the program where execution would have proceeded, and should proceed after a choicepoint returns, is available in the IP and NEXT stack 18:15:01 ah, ok 18:15:04 that makes sense 18:45:51 -!- jix has joined. 18:51:54 -!- ais523 has quit ("(1) DO COME FROM ".2~.2"~#1 WHILE :1 <- "'?.1$.2'~'"':1/.1$.2'~#0"$#65535'"$"'"'&.1$.2'~'#0$#65535'"$#0'~#32767$#1""). 18:56:41 -!- jix has quit (Nick collision from services.). 18:56:53 -!- jix has joined. 19:19:39 -!- Judofyr has joined. 19:35:05 -!- Sgeo has joined. 19:50:37 -!- oerjan has quit ("leaving"). 20:21:42 -!- AnMaster has quit (No route to host). 20:46:45 So what's going on? 20:49:53 five things 20:51:47 yes? 20:56:31 -!- ehird_ has changed nick to cboat. 20:56:39 -!- cboat has changed nick to ehird. 21:00:11 -!- oerjan has joined. 21:01:18 wildhalcyon: well, I think that TechDawg's "Discarded" is art. 21:01:20 Some disagree 21:01:30 -!- tola_ has joined. 21:01:45 wildhalcyon: BTW, http://www.youtube.com/watch?v=cW44BpXpjYw 21:01:54 line rider is lovely 21:03:15 in fact, several of TD's things are art 21:03:45 http://www.youtube.com/watch?v=rn8ULJGboOE&feature=related is hilarious 21:04:05 "hillarious"? 21:04:19 great, certainly, but n ot"hillarious" 21:06:41 -!- Tritonio_ has joined. 21:07:03 I do enjoy linerider 21:08:00 Its a great form of art, too. I agree SimonRC 21:08:38 -!- Quendus has quit ("Reconnecting"). 21:08:49 -!- Quendus has joined. 21:09:18 but the smb 1-1 level ehird posted was better 21:10:09 SimonRC: I found it funny 21:11:06 odd 21:11:12 but not that odd 21:15:48 This stuff is giving me a headache 21:15:58 hm? 21:16:27 I've been reading about "pure" object-oriented programming 21:16:35 ok 21:16:56 what is that? 21:17:00 A lot of academic papers and things 21:17:06 my favorite text on object orientation is AMOP 21:17:13 do you have a link? 21:17:25 Art of the Metaobject Protocol 21:18:31 I think that might have been one of the ones I read yesterday, I'll have to double-check 21:18:58 * SimonRC drags out his usual text on what OO is: http://www.paulgraham.com/reesoo.html 21:19:07 SimonRC: you just quoted paul graham 21:19:42 It list 9 things that make up OO, and points out that no-one agrees which are the essence of OO 21:19:46 ehird: yes, and? 21:19:46 loool 21:20:03 paul graham is a blabbering moron with nothing worthwhile to say who is wrong about just about everything he talks about 21:20:04 actually, that is Jonathan Rees, not PG 21:20:14 i wish i could be less harsh, but experience gives me no choice 21:20:23 is he really that bad? 21:20:34 SimonRC: IMO, yes. 21:20:39 A Plan for Spam wasn't all that bad, though. 21:20:40 I guess I'm glad I don't know who Paul Graham is 21:20:50 http://www.dreamsongs.com/ObjectsHaveFailedNarrative.html 21:21:12 wildhalcyon: I disagree. He is a good person to read if you disagree with him. 21:21:15 maybe 21:21:16 wildhalcyon: He wrote a couple very bad books about Lisp and some very seductive essays 21:21:29 wildhalcyon: He also wrote Roots of Lisp which -is- very good and worth reading though 21:21:44 vixey: "seductive"? 21:21:47 Well, I've read up on lisp a bit. 21:22:01 SimonRC, haven't you heard about the XXX-oriented paradigm? 21:22:04 on lisp is rubbish 21:22:12 you should burn it or delete 21:22:29 wildhalcyon: "XXX-oriented"? 21:22:33 aiming for high penetration, i assume 21:22:42 *groan* 21:23:14 that was pretty bad 21:23:25 Thank you, thank you. 21:23:40 SimonRC - there was an esolang proposed once in which operations were sex acts 21:23:42 -!- ais523 has joined. 21:23:52 You know how folks are in this channel 21:24:09 ooh, didn't encounter that one 21:25:14 :D 21:25:32 god it's fun debuggin' with vista 21:26:00 whole computer crashes for 10 minutes when it infloops 21:26:01 it is? 21:26:05 are you a masochist? 21:26:37 well si don't like waiting. 21:26:40 *i 21:26:45 so no, it's not actually that fun 21:27:57 huh, an app can crash Vista? 21:27:59 how? 21:28:54 Existance? 21:29:10 App says, "I exist, therefore I can crash Vista" 21:29:21 SimonRC: I saw a 'review of Windows XP' that was a disguised version of a Vista review 21:29:38 it was talking about how downgrading to XP added pre-emptive multithreading to your computer 21:29:52 Sum ergo Vistam, er... 21:31:08 SimonRC: dunno, but both my J interp and python interp do that quite often 21:31:19 gaaah 21:31:25 it should not be possible damnit 21:31:49 ais523: someone pasted it here 21:31:49 ?!? 21:31:54 I want J interpreters! 21:31:57 SimonRC: indeed it shouldn't 21:32:04 lots of people seem to have written ones and not released them 21:32:07 j602 21:32:14 ... 21:32:18 you wrote that? 21:32:22 oh no. 21:32:36 oh I see 21:32:36 i'm new to J. 21:32:47 when you said "my J interp" you meant the one I'm using :P 21:32:48 sorry.... 21:32:58 well, it doesn't seem too hard, J isn't all that extendable 21:33:00 hm frago perhaps 21:33:14 vixey: i realized one might think i meant i'd coded them 21:33:36 but didn't fix 21:33:44 cuz i'm evil 21:34:19 Sum, ergo Vistam frangere possum 21:35:16 i still have no idea what the use of boxing is in J 21:35:26 perhaps one of you explain that 21:35:58 changes the way things compose and operate 21:36:26 also they are useful as tuples 21:36:27 s/downgrading/upgrading/ 21:37:35 ais523: i recall pasting that 21:37:48 oerjan: I wasn't online at the time 21:38:04 so it's just a happy coincidence 21:38:23 i vaguely recalled it was oerjan 21:38:34 but thought oerjan isn't really the pasting type 21:38:42 no you didn't! I do the vague recalling here! 21:38:47 :-----------) 21:39:34 before you know it, i'm also talking haskell gibberish and making pun out of nowhere. 21:39:38 *puns 21:40:42 as long as you don't vaguely recall talking gibberish about haskell puns 21:41:57 i don't seem to 21:42:08 or... perhaps i do 21:42:13 my memory is a bit vague here. 21:42:28 GAAH 21:42:41 -!- ais523 has set topic: http://bespin.org/~nef/logs/esoteric/ --> .pr POINT .pr STRING p=".pr POINT .pr STRING p=?;print(p[:22]+REPR 34+p+REPR 34+p[24:])";print(p[:22]+REPR 34+p+REPR 34+p[24:]). 21:42:58 -!- ais523 has set topic: http://bespin.org/~nef/logs/esoteric/ --> .pr UPPER .pr STRING p=".pr UPPER .pr STRING p=?;print(p[:22]+REPR 34+p+REPR 34+p[24:])";print(p[:22]+REPR 34+p+REPR 34+p[24:]). 21:43:46 ?_? 21:43:59 oerjan: I'm making the topic portalbe 21:44:03 s/albe/able/ 21:44:17 Of course, it requires your interp to be case-sensitive 21:44:44 hahahahaha 21:44:45 WOW 21:45:20 sorry, I accidentally wrote the wrong stropping style first time 21:45:23 is this still ALGOL? 21:45:27 oerjan: yes 21:45:43 * SimonRC wonders in what ways PG's thing on bosses is BS. 21:46:26 "Lots more people could start startups if they wanted to. In fact, our business model depends on it. If the pool of founders was limited to a few rare geniuses, Y Combinator wouldn't work." <-- Proof by business model requirements. 21:46:30 :-) 21:48:21 hmm... how many languages actually have extendable pattern matching? 21:48:28 i don't seem to recall any 21:48:40 haskell? 21:48:53 oklopol: Perl clames to be able to, but that's done by putting a preprocessor on regexen 21:49:15 i didn't even know perl had pattern matching 21:49:19 then again, i don't really know it 21:49:19 can you define extendable pattern matching? 21:49:26 oklotalk has it 21:49:29 .... 21:49:40 my rational numbers can be pattern matched on (/ d n) 21:49:42 I still don't have an oklotalk interpreter and user manuel 21:49:43 :P 21:49:46 :D 21:49:56 and I am waiting 21:49:59 i should have oklotalk-- by wednesday 21:50:05 cool 21:50:09 well 21:50:25 should be --oklotalk-- or something, because it's both a subset *and* a different syntax. 21:50:30 but at least it's something... 21:50:36 haskell has had discussions on adding generalized "views" but they haven't made it into ghc at least 21:50:53 this must be my first project in years where i've actually been on one project for over 2 days 21:51:00 s/discussions/research papers/, i think actually 21:51:04 i've heard about view, ya 21:51:15 well I can easily do this in a Lisp or Prolog but I think you mean something more general 21:51:26 for me, adding extendable pattern matching was a 15 minute scribble, but i guess you can think about it for years too :P 21:51:34 whatever suits the language designers 21:51:49 you still haven't defined it :/ 21:51:52 (okay, oklotalk does it fairly dirty) 21:51:56 defined? 21:51:57 so I'm just guessing I know what you mean 21:52:00 oh 21:52:10 i can show my rational number class again 21:52:21 and explain where you can see extended pattern matching 21:52:55 http://www.vjn.fi/pb/p441122612.txt 21:53:11 <-- addition with another rat --> 21:53:11 (-> [$+ (/ dd dn)] 21:53:11 (= g (gcd dn n)) 21:53:11 (rat (+ (* d (/ dn g)) (* dd (/ n g))) (/ (* dn n) g))) 21:53:33 addition, we match on the pattern [$+ (/ dd dn)], so addition by something that can be split by / into dd and dn 21:53:46 a rational number can be split this way, defined in the same class... 21:53:53 <-- pattern match on division --> 21:53:53 (-> [pb $/] [d n]) 21:53:54 here 21:54:11 })}) <-- I like this language already --> 21:54:14 pb means pattern match both, there are a few match tag kinda things like this 21:54:32 vixey: this is not actually the real syntax, although i'm beginning to like it as much as the original :P 21:54:44 this is much prettier. 21:54:51 but... not very concise 21:55:21 i guess i could make a hybrid of the old and the new 21:55:27 revolutionize everything 21:55:35 does sound like something i would do 21:56:02 I was thinking about making a new language 21:56:09 it's kind of rubbish though 21:56:14 it seemed good earlier :/ 21:56:33 actually, i'll change the whole tag system now, so stuff will prolly stop working for 6 hours now. 21:56:37 I made a prototype anyway and it really needs lazyness 21:56:38 *- other now 21:56:46 (which I have no idea how to implement) 21:56:48 vixey: SHOW IT 21:57:01 lazyness is fairly simple 21:57:09 you simply don't evaluate stuff until you have to 21:57:26 instead of evaluating the ast, you just pass it one 21:57:27 *on 21:57:52 not that i've ever done anything with lazyness, perhaps i should 21:57:56 layztalk 21:57:59 *lazytalk 21:58:19 http://www.codu.org/jsmips/test.html // can anybody say JSMIPS FIBONACCI? 21:58:22 That's right! 21:58:37 And JEBUS it's slow X-D 21:59:05 did you write that manually? 21:59:17 or was it that compileration you did some months ago 21:59:21 http://rafb.net/p/8dTURb60.txt 21:59:22 http://www.codu.org/jsmips/test.c 21:59:31 yarr 21:59:32 it was 22:00:06 Not sure what you mean by "that compileration you did some months ago" :P 22:00:43 length([])=0. 22:00:43 length([_|xs])=1+length(xs). %% not sure about this (how could this generate lists of a given length?) 22:00:50 vixey: what do you mean? 22:00:51 yes it can I tested it 22:00:57 you would be able to go 22:01:03 3=length(x) 22:01:08 thought so 22:01:09 and it would result in () 22:01:14 aha 22:01:15 why? 22:01:18 but also binding x to [g1,g2,g3] 22:01:26 shouldn't it result in each and every list of length 3? 22:01:32 yes g for gensym 22:01:38 they are new variables 22:01:47 okay 22:01:49 what's the prob 22:01:57 well you can't write permutation([x|xs])=insert(x,permutation(xs)). 22:02:03 GregorR: indeed, i don't always speak human. 22:02:17 you can't? 22:02:18 you have to write permutation(insert(x,xs))=[x|permutation(xs))]. 22:02:26 which is much less natural, and that's because of strictness 22:02:53 (I tested both in my interp, the one I -wanted- to write loops but the other works) 22:03:17 -!- Sgeo_ has joined. 22:03:22 what's wrong with the first one? 22:03:39 it doesn't terminate 22:03:53 well should it? 22:03:53 -!- Sgeo has quit (Read error: 104 (Connection reset by peer)). 22:04:00 I would rather it did :P 22:04:24 the plan is that lazyness finds an evaluation order that terminates if one exists 22:04:37 so it would be very nice to have that property in a logic lang 22:04:41 sure 22:04:45 I don't know if it would translate across though 22:06:41 hehe, that rational number example is fun to run, 4000 lines of output 22:07:41 -!- Sgeo_ has quit (Read error: 104 (Connection reset by peer)). 22:07:48 -!- Sgeo has joined. 22:07:56 ehird did you see it? 22:09:29 GregorR: wait, MIPS under Javascript 22:09:39 Yup 22:10:43 nice 22:10:51 is MIPS a simple architecture? 22:12:33 Extremely. 22:12:38 MIPS I has about 60 operations. 22:12:55 nicer than x86 22:13:13 you probably already told me, but how do you do the compilation? 22:13:18 "rep strtostr" and all that 22:13:29 oklopol: with a normale compiler I think 22:13:40 then he has a translating program 22:13:53 oklopol: GCC 22:14:10 http://www.codu.org/jsmips/patches/ 22:14:12 Target mips-jsmips 22:14:37 And make sure you use CFLAGS="-g -O0" when compiling newlib ... something in the -O2 version borks :( 22:16:01 GregorR: slow? hardly 22:16:15 runs in about 4 seconds in total over here 22:16:20 it freezes a tiny bit at the start 22:16:24 then runs without lag 22:16:28 The freeze at the start is loading the ELF. 22:16:33 yeah 22:16:36 but 22:16:36 fast 22:16:39 The 4 seconds is much slower than a real MIPS X-P 22:16:55 GregorR: If I write a c program will you test it on jsmips? 22:16:56 :D 22:17:01 I want to try ridiculous things 22:17:03 Like mucking with memory 22:17:20 Mucking with memory is perhaps the /least/ ridiculous thing you could try. 22:17:26 ehird: use that C continuation program 22:17:29 ais523: OH YES 22:17:34 ais523: I will do that! 22:17:45 It'll just require a little modding 22:17:46 Make your own cross-compiler and try it yourself :P 22:17:48 amb on MIPS? lol 22:17:53 GregorR: I'll have a crazy program for you, stat :D 22:18:10 can the thing to set/longjmp? 22:18:14 ais523: oh gods not the one that memcopys functions about is it? 22:18:24 SimonRC: memcpy's the stack actually 22:18:26 SimonRC: not functions, just the call stack 22:18:27 -!- Iskr has quit ("Leaving"). 22:18:43 vixey: I haven't tested it, but it's in the standard library - in the grand scheme of things it's not that complicated, so it ought to work. 22:18:46 once you've done that, try a multithreaded C-INTERCAL program 22:18:52 GregorR: This will be fun 22:18:57 or one that uses the external calls system 22:19:10 cool 22:19:21 If I published a binary cross compiler for x86, would you people compile your own stuff? :P 22:19:29 * oklopol starts tackling quicksort in oklotalk 22:19:52 * ais523 has qemu-mips over here 22:19:58 GregorR: For OS X? Sure. 22:19:59 ais523: GIVE ME THE ROM 22:20:00 but presumably that isn't identical to JS-mips 22:20:02 ais523: DO IT 22:20:04 ais523: I NEED THE ROM 22:20:05 :P 22:20:24 GregorR: you mean from the qemu sourcecode? 22:20:35 I thought qemu-mips needed an external ROM? 22:20:46 GregorR: no idea, I've never tried to run it 22:20:52 X-P 22:20:58 I did - wanted Windows NT 3 on MIPS. 22:21:05 But alas, no ROM, no fun. 22:21:47 almost done evil.c :D 22:24:20 GregorR: seems that qemu-system-mips can only run Linux on a simulated Malta board 22:24:30 s/x/x,/ 22:27:02 GregorR: Almost done with the prog 22:28:19 GregorR: okay 22:28:59 GregorR: http://rafb.net/p/tpuvWN89.html 22:29:03 compile with 'gcc foo.c -o foo' 22:29:06 * ais523 has the evil idea of implementing Brainfuck using a single one-byte auto variable to hold all stack elements and using stack-smashing 22:29:07 i.e. nothing special 22:29:15 GregorR: the expected output is at the end 22:29:26 if you put it on your site, i want to seeee it :D 22:29:39 ais523: take a look at my link: it implements a generator using the continuations 22:30:08 ehird: yes, I looked at it before you said that 22:30:10 TRY() is yield, and generator() ... FAIL is an implicit loop through the items 22:30:38 are "generators" not just streams? 22:30:48 vixey: yes 22:30:49 it's python terminology right? 22:30:54 no 22:31:06 never heard it outside of there 22:31:09 Generators first appeared in CLU (1975)[1] and are now available in Python[2], C#, and JavaScript[3]. (In CLU and C#, generators are called iterators.) Generators are also a prominent feature in the string manipulation language Icon. 22:31:15 but the most common usage is in python yes 22:32:36 incidentally, MAYBE COME FROM is a trivial way to do a generator in INTERCAL 22:32:46 lol 22:32:50 what does MAYBE COME FROM do? 22:33:03 COMEs FROM a line, but after backtracking don't come from that line 22:33:20 o_____O 22:33:36 so exactly like the TRY in ehird's program, except in the calling not the called function 22:33:38 do people write real programs with INTERCAL? 22:33:45 vixey: INTERCAL is an esolang.. 22:33:47 depends on what you mean by 'real program' 22:33:55 like webservers .. and stuf.. 22:34:04 there's an INTERCAL CGI script running somewhere 22:34:12 vixey: INTERCAL is an esolang.. 22:34:18 This is #esoteric. 22:34:22 and a CLC-INTERCAL version of a highly simplified wget 22:34:25 why does that change anything ehird? 22:34:26 You know. Like Brainfuck 22:34:36 vixey: Would you ask if people made webservers with brainfuck? 22:34:53 ehird: do people make webservers with brainfuck? 22:35:27 ais523: :) 22:35:33 PLEASE DO ASK 22:35:47 PLEASE CREATE (1450) ASK 22:36:01 PLEASE NEXT FROM [22:35] 22:36:05 PLEASE CREATE (1650) ASK 22:36:11 DO RESUME #1 22:36:16 haha 22:36:30 sorry I realised that the CREATE statement had to come /before/ ehird's message 22:36:31 -!- AnMaster has joined. 22:37:19 what you mean the compiler doesn't look for future CREATE commands? i sense a feature missing ;) 22:37:44 oerjan: I thought of doing it like that, and decided the case where it didn't was more interesting 22:38:00 after all, there are a range of ways to work around the problem in your own software 22:38:18 and once I implement computed CREATE, it'll be possible to do things like DO CREATE .1 ABC DO ABC as a computed NEXT 22:38:36 you'd lose all that if CREATE happened at compile-time 22:39:08 oh i didn't mean for it _always_ to happen at compile-time. perish the thought! 22:39:54 ehird did you see my lang though :( 22:39:58 so what's you're plan? 22:40:05 allow some commands to work retroactively? 22:40:14 DO CREATE (1850) ASK RETROACTIVELY #50 22:40:19 i have a plan? 22:40:34 oerjan: I didn't realise you did, but I assumed you had something or other in mind 22:41:05 (RETROACTIVELY would be basically impossible to implement in INTERCAL by the way; I think it might be able to solve the halting problem with the semantics I have in mind and therefore be truly impossible) 22:42:08 nothing wrong with that 22:42:40 heh 22:42:45 you could have it try to solve the halting problem and crash if it's too hard 22:42:46 oklopol: but I can't implement any theoretically impossible commands in C-INTERCAL 22:43:00 vixey: that would be INTERCAL's style, I agree 22:43:09 but it would still be basically impossible in a compiled language 22:43:12 you can implement the non impossible parts of them 22:43:15 and make rest crash 22:43:22 every language has programs that cannot run through 22:43:22 maybe I'll suggest it to CLC-INTERCAL's maintainer 22:43:39 oklopol not true :P 22:43:44 every tc language 22:45:47 oklopol: even oerjan's crazy HQ9+ extension? 22:46:08 :D 22:46:13 it's not entirely clear whether that was TC, because any given program designed to be TC only had a 1 in 256 chance of working 22:46:17 and errored the rest of the time 22:46:28 like the random-bug in INTERCAL, but much worse 22:46:37 the language now specifies how to make it tc? 22:46:51 oklopol: it had an X command 22:47:00 specified as "Makes the language Turing-complete". 22:47:04 but the perl extension was just one wait to do it 22:47:08 right? 22:47:24 meaning you could do it so that it's always tc 22:47:24 right 22:47:35 i consider the extension a parametrizable language 22:47:45 because it's clear the language's semantics aren't complete as such 22:48:09 it's just a framework for another language to fill (be tc given X) 22:48:14 dunno 22:48:15 I was going to suggest a language whose semantics were expandable at runtime, but CLC-INTERAL already does that (and C-INTERCAL to a much lesser extent) 22:48:21 qsort might work soon 22:48:22 exciting 22:57:54 http://elliotthird.org/mirror/c-intercal/ick-0.28/pit/sort.i <--- see if you can figure out how the flow control in this works, it took me ages to write 23:23:15 * Sgeo sees what looks like a mistake in http://qntm.org/?frontier 23:23:20 "We appear to have gravity in here because the screw drive in the ship skeleton is accelerating upwards and pulling the ship up with it at nine point eight one metres per second per second." 23:23:25 But they should be at a point above Jupiter where they feel equivelent gravity.. or am I missing something here 23:23:29 does escape velocity being the same not mean that the gravity they feel is the same? 23:24:56 well i haven't read the article but they might be falling freely towards jupiter, rotating it or something 23:25:08 in which case no gravity is perceived 23:25:25 (not an article, it's fiction) 23:25:27 but fuck, another problem with scoping :D 23:25:38 it's a piece of text, so i call it an article 23:27:25 They started out in the basement, and jumped to equivelent gravitational potential energy somewhere above Jupiter, conserving momentum 23:39:35 -!- oerjan has quit ("Good night"). 23:49:06 escape velocity is proportional of the root of the intergral of gravitational potential out to infinity 23:49:25 um, gravitational *field* 23:49:46 there is no formula that directly relates escape velocity and gravitational field 23:51:14 and, as oklopol pointed out, they might not be at a constant height 23:51:24 and up might not be directly away from Jupiter 23:51:25 etc 23:52:21 if you really wanted to nitpick, you could point out that they are ignoring special relativity too 23:52:56 -!- oklopol has quit (Read error: 104 (Connection reset by peer)). 23:53:46 -!- oklopol has joined. 2008-04-07: 00:00:41 zzzzzzzzzzzzz 00:07:25 omg, there's a problem with the actual semantics, not the program 00:07:58 the problem is that i want objects to store state, but this effectively prevents recursion in certain cases 00:08:59 because i would have to start having my functions copy themselves as they evaluate, if they see they aren't unique in the program, and they start changing the namespace 00:09:07 actually, what's the problem, that's like 5 lines of code 00:09:17 can't you just have closures? 00:09:29 which close a mutable env 00:10:03 umm 00:10:17 a function is basically just that 00:10:24 -!- jix has quit ("CommandQ"). 00:10:25 except it also holds some code 00:10:36 (= test {(-> $get n) (-> n [])}) (test 5) (get test) <<< this should return 5, because test stores its state 00:10:53 with my current implementation, this meant a function that recursively calls itself actually *calls itself* 00:11:28 the other simple way is to store no state 00:11:43 in which case this example doesn't work, but recursion works easily 00:11:56 *means 00:12:36 so basically, the semantics require the runtime environment to detect recursion and copy namespaces. 00:12:44 i think 00:12:56 at least that's the simplest way i can think of to implement it 00:13:06 and it is simple, so there is really no prob 00:17:56 -!- AnMaster has quit (Connection timed out). 00:18:20 Oh, shoot, forgot to put bin2arr.c in the jsmips dir 8-O 00:18:40 -!- AnMaster has joined. 00:26:49 ehird: Massive failure :P 00:27:52 okay, dirtiest solution ever, but it works 00:28:12 an object checks if it on the call stack when it's evaluated, and it copies its namespace if it is 00:28:13 :-) 00:28:30 GregorR: Wanna see! 00:28:32 Linky! 00:28:34 quicksort works yay 00:30:27 http://www.vjn.fi/pb/p643464352.txt 00:30:44 that is especially ugly without infix 00:32:37 If I had to classify this code on a scale of 1 to WTF, I'd give it WTF 00:35:10 :-) 00:35:16 i think it's fairly clear 00:35:30 Oh, I see the issue. 00:35:30 what's wtf about it? 00:35:43 This won't work with MIPS -O0, because it loads the 'c' variable off the stack every time it uses it. 00:35:48 oh 00:35:55 "this code" 00:35:56 So it gets overwritten and then loads some garbage variable off the stack :P 00:36:10 read "that code" and assumed you meant mine 00:37:32 I said "this code" X-P 00:37:37 You should mark c as a register. 00:37:53 Or rather, mark all of those as registers :P 00:38:38 -!- seabot has joined. 00:39:00 Hmm 00:39:05 Bringing seabot in here wasn't the best idea 00:39:07 It uses ! as a prefix.. 00:39:10 Ergo: 00:39:11 !help 00:39:11 wtf is help? 00:39:13 err 00:39:14 help ps kill i eof flush show ls bf_txtgen usertrig daemon undaemon 00:39:16 That's not meant to happen 00:39:16 1l 2l adjust axo bch bf{8,[16],32,64} funge93 fyb fybs glass glypho kipple lambda lazyk linguine malbolge pbrain qbf rail rhotor sadol sceql trigger udage01 unlambda whirl 00:39:17 :D 00:39:29 -!- seabot has quit (Remote closed the connection). 00:39:33 WTF /is/ help? 00:39:35 -!- seabot has joined. 00:39:36 !help 00:39:36 cdecl: cdecl 00:39:36 help: help 00:39:36 karma: karma- karma karma+ 00:39:38 meta: load reload unload 00:39:38 help ps kill i eof flush show ls bf_txtgen usertrig daemon undaemon 00:39:40 1l 2l adjust axo bch bf{8,[16],32,64} funge93 fyb fybs glass glypho kipple lambda lazyk linguine malbolge pbrain qbf rail rhotor sadol sceql trigger udage01 unlambda whirl 00:39:57 !reload help 00:39:57 Reloaded the help plugin. 00:39:58 !help 00:39:58 cdecl: cdecl 00:39:58 help: help 00:39:58 karma: karma karma+ karma- 00:39:58 meta: load reload unload 00:39:59 I don't know whether MIPS is frozen, or writing over the stack is extremely slow for this emulator :P 00:40:00 help ps kill i eof flush show ls bf_txtgen usertrig daemon undaemon 00:40:02 1l 2l adjust axo bch bf{8,[16],32,64} funge93 fyb fybs glass glypho kipple lambda lazyk linguine malbolge pbrain qbf rail rhotor sadol sceql trigger udage01 unlambda whirl 00:40:07 Hmm. 00:40:09 !karma- EgoBot 00:40:09 EgoBot's karma lowered to -1. 00:40:12 :) 00:40:12 Huh? 00:40:33 Oh fuck you, seabot. 00:41:01 heh 00:41:02 :D 00:41:09 -!- calamari has joined. 00:41:19 !cdecl int EgoBot 00:41:19 declare EgoBot as int 00:41:21 seabot's karma lowered to -∞. Yeah. That's right, bitch. 00:41:22 Huh? 00:41:24 !cdecl lame EgoBot 00:41:25 syntax error 00:41:26 aww 00:41:27 :) 00:41:28 Huh? 00:41:34 hi 00:41:37 hey 00:41:38 Hi calamari :P 00:42:26 -!- seabot has quit (Remote closed the connection). 00:42:31 -!- seabot has joined. 00:42:32 seabot will use @ for a prefix now 00:42:33 @help 00:42:34 cdecl: cdecl 00:42:34 help: help 00:42:34 karma: karma karma+ karma- 00:42:34 meta: load reload unload 00:42:59 GregorR: Will you like it if I make it use egobfi for interpreting brainfuck? ;) 00:43:21 Only if it also interprets: 00:43:22 !help 00:43:26 help ps kill i eof flush show ls bf_txtgen usertrig daemon undaemon 00:43:28 1l 2l adjust axo bch bf{8,[16],32,64} funge93 fyb fybs glass glypho kipple lambda lazyk linguine malbolge pbrain qbf rail rhotor sadol sceql trigger udage01 unlambda whirl 00:43:37 GregorR: It's not just an esolang bolt. :-) 00:43:40 bot 00:43:45 Ah :P 00:44:23 'sea'bot shows its origins: a bot for ##free-c 00:44:25 which is about C 00:44:26 :p 00:44:29 (which is arguably an esolang) 00:44:36 !linguine 00:44:40 Error: Program must have at least one command 00:44:57 why does freenode need another C channel? 00:46:12 is it a sign of senility when you can't remember how to program in an esolang you wrote yourself? 00:46:27 vixey: there's only one: ##C 00:46:30 and ##C has PoppaVic 00:47:08 !linguine 1[0=72,0$,0+29,0$,0+7,0$,0$,0+3,0$,1=32,1$,0-24,0$,0+24,0$,0+3,0$,0-6,0$,0-8,0$,1+1,1$,1-23,1$]0 00:47:12 Hello World! 00:48:18 Gregor: what if a program is more than one line? 00:48:34 calamari: isn't whitespace ignord in linguine? 00:49:03 ehird: no 00:49:48 !linguine 1[]1 00:49:54 Error [line 1]: missing or invalid command 00:50:00 calamari: not if you're Ben Olmstead 00:50:09 !linguine 1[0=0]1 00:50:26 !ps 00:50:30 1 calamari: linguine 00:50:32 2 calamari: ps 00:50:43 !slow bots for $100 00:50:46 Huh? 00:52:01 !linguine 1[0=0]2\n2[0=0]0 00:52:06 Error [line 1]: bad jump line number `2\n2[0=0]0' 00:52:25 calamari: Upload it, specify a url 00:52:36 http://rafb.net/paste/ put it here, choose 'raw' 00:52:40 then !linguine THATURL 00:52:50 iirc, my esobot could handle multiple line input :) 00:53:03 !linguine http://rafb.net/p/2vhKkd81.txt 00:53:05 !ps 00:53:08 1 calamari: linguine 00:53:10 2 ehird: linguine 00:53:12 !kill 1 00:53:12 3 ehird: ps 00:53:13 seeeee 00:53:14 :) 00:53:14 Process 1 killed. 00:53:15 !kill 2 00:53:19 !kill 1 00:53:20 No such process! 00:53:22 Process 1 killed. 00:53:32 -!- oklopol has quit (Read error: 113 (No route to host)). 00:53:59 GregorR: Want a url for the thingy! 00:54:38 NO CAN GIVE, NOT WANT UPLOAD 00:54:42 !linguine http://rafb.net/p/o4spP929.txt 00:54:44 I'll email you the test.html if you want. 00:55:01 GregorR: Blargh :( 00:55:03 Come on :p 00:55:54 blah 00:56:14 !linguine http://rafb.net/p/EYRZBj28.txt 00:56:16 99 bottles of beer on the wall, 00:56:37 -!- oklopol has joined. 00:56:37 -!- oklopol has quit (Remote closed the connection). 00:56:54 -!- oklopol has joined. 00:57:44 !ps 00:57:48 1 calamari: linguine 00:57:50 2 calamari: ps 00:58:46 interesting to be receiving output from an unlisted process :) 00:58:59 http://www.codu.org/jsmips/Nonworking%20Continuations.html 00:59:10 ehird: Enjoy watching the spinner spin. 01:00:25 cool, test.html crashed my firefox 01:01:21 Works fine in mine. 01:01:38 Firefox is in fact my test platform. 01:02:05 -!- ais523 has quit ("(1) DO COME FROM ".2~.2"~#1 WHILE :1 <- "'?.1$.2'~'"':1/.1$.2'~#0"$#65535'"$"'"'&.1$.2'~'#0$#65535'"$#0'~#32767$#1""). 01:02:37 yeah.. not sure why but ff crashes randomly for me.. tried it again and it was fine 01:03:04 I wonder if it has anything to do with running in 32-bit mode on the 64-bit kernel 01:03:18 3.14159265358979323846264338327950288419716939937510582097494459230781640628620899862803482534211706798214808651328230664709384460955058223172535940812848111745028410270193852110555964462294895493038196442881097566593344612847564823378678316527120190914564856692346034 01:03:27 Wow 01:04:23 took about 9 minutes for that 01:06:17 Yeah, but I was also running JSMIPS X-P 01:06:25 you ported gcc, binutils, and newlib for your lang? 01:06:33 calamari: no 01:06:36 its not his instruction set 01:06:41 he is just implementing it in JS 01:06:46 and gcc already compiles to it 01:06:50 Because MIPS rulz. 01:07:16 ahh bummer.. was hoping someone understood gcc backends 01:07:46 oklopol: you will be interested in this! 01:07:55 oklopol: I wrote a python function that takes a python 1 liner and expands it 01:07:59 usable for e.g. bots 01:08:03 it uses one syntax extension 01:08:10 after a block thing like 'if foo:' 01:08:13 if it sees { 01:08:19 that means 'newline and increase indentation' 01:08:22 yarrrr 01:08:23 calamari: I once spent all of ten minutes trying to port GCC to MISC, then went "NOPE" and quit. 01:08:25 if it sees the matching }, that means 'drop identation' 01:08:26 so 01:08:41 if foo: { if bar: { print "hi" } else: { print "bye" } } else: { print "wtf"; 2+2 } 01:08:43 GregorR: yeah GCC is a pita 01:08:51 but it is clever, so it doesn't break dict syntax or strings 01:08:54 ehird: why the :'s 01:09:02 oklopol: because {} can be dictionary syntax 01:09:03 ":" always means indentation 01:09:07 right. 01:09:11 ah 01:09:11 well 01:09:13 if foo: ... } 01:09:14 looks ugly 01:09:15 :D 01:09:20 a bit 01:09:21 + its easier to parse this way 01:09:26 yep 01:13:00 World's most obscure insult: "I'm sure you've read the manual page on checking filesystems." 01:13:06 hahah 01:13:14 oklopol: i'll show you the function 01:13:18 oklopol: but it's REALLY REALLY UGLY 01:13:19 :D 01:13:23 do 01:13:29 oklopol: http://rafb.net/p/GoqPxY60.txt 01:13:40 wow that's long 01:13:46 my oklotalk-- parser is shorter :-) 01:13:51 usage: 01:13:54 make_1liner(string) 01:14:03 python-oneliner-thingy in, python code out 01:14:42 oh, iterative solution 01:14:51 GregorR: not sure what the simplest target is that gcc supports, but one possibility is taking the asm output and compiling that for the desired lang 01:15:11 calamari: Probably MIPS I, and yeah, MIPS->MISC wouldn't actually be too tough. 01:15:14 oklopol: can't do it via regexps 01:15:17 oklopol: its really the only way 01:15:31 i meant iterative versus recursive 01:16:16 GregorR: in any case I know it's not x86 :) 01:17:37 oklopol: ah 01:17:44 recursive would just be manual iterative in this case 01:18:26 what? 01:18:50 oklopol: I mean, i'd just end up emulating the stuff I have in my iterative version 01:18:56 i.e. manually transforming it into recursive form 01:19:01 that is, it has no natural recursive form 01:19:05 apart from translating the iterative form 01:19:12 8| 01:19:17 a-ha.. 01:19:19 lessee 01:19:39 oklopol: hmm 01:19:40 in my bot 01:19:47 should declarations persist across @pythons? 01:19:48 like 01:19:50 @python a = 2 01:19:51 @python a 01:19:51 wtf is python? 01:19:55 gives you 2 01:19:55 yeah 01:20:06 oklopol: should it persist across bot runs? :D 01:20:17 in my opinion yes, because it's nice and floody to be able to use a bot as a repl 01:20:21 shhure: D 01:20:33 oklopol: should the bindings be per-user or for everyone? 01:20:37 hmm 01:20:54 you could do something fun like have _XXX be for personal use 01:20:56 except 01:21:02 you'd need to parse the code 01:21:03 heh 01:21:12 _something_here that was 01:21:25 oklopol: 'my' (from perl) 01:21:27 my x = 2 01:21:28 ;D 01:21:41 you can get: 01:21:43 my_x = 2 01:21:44 though 01:21:56 oklopol: oh, i know! 01:22:02 hmm, actually shouldn't be hard to do storing based on name 01:22:04 user-specific, but you can access others bindings 01:22:10 how? 01:22:14 calamari.x 01:22:19 Sgeo.psox_variable 01:22:19 something like that 01:22:24 haha 01:22:25 probably more like: 01:22:27 Wha? 01:22:41 bindings.Sgeo.psox_variable 01:22:45 wait, I'll hijack _ for that 01:22:48 Sgeo: oklopol: /.*/ -> you don't get it -> don't need to 01:22:48 _.Sgeo.psox_variable 01:23:07 oklopol: so you can doo: 01:23:13 doo doo 01:23:14 weird_func = _.oklopol.weird_func 01:23:32 mmyappy. 01:23:36 We're having a public Python bot and we can store variables there under our name? 01:23:37 looks okay 01:23:48 Sgeo: something like that, except not yet. 01:23:48 Sgeo: seabot will execute python, yeah 01:24:20 "Frontends vary internally, having to produce trees that can be handled by the backend. The parsers are hand-coded recursive descent parsers." 01:25:10 funny that they don 01:25:13 't use bison 01:25:36 oklopol: instead of _, users 01:25:40 users.oklopol.weird_func 01:31:16 -!- seabot has quit (Remote closed the connection). 01:31:33 -!- seabot has joined. 01:31:37 @python 2 01:31:37 UnpickleableError: Cannot pickle objects 01:31:40 Darnit. 01:33:07 @reload python 01:33:07 Reloaded the python plugin. 01:33:10 @python 2 01:33:10 2 01:33:12 @python 2+2 01:33:12 4 01:33:14 @python print 'hi' 01:33:14 SyntaxError: invalid syntax (, line 1) 01:33:29 @reload python 01:33:29 AttributeError: 'dict' object has no attribute 'close' 01:33:30 @python print 'hi' 01:33:30 SyntaxError: invalid syntax (, line 1) 01:33:32 @reload python 01:33:33 AttributeError: 'dict' object has no attribute 'close' 01:33:40 @reload python 01:33:40 AttributeError: 'dict' object has no attribute 'close' 01:33:44 -!- seabot has quit (Remote closed the connection). 01:33:50 -!- seabot has joined. 01:33:52 @python print 'hi' 01:33:52 SyntaxError: invalid syntax (, line 1) 01:34:35 @python print 'hi' 01:34:35 SyntaxError: invalid syntax (, line 1) 01:34:37 Weird.. 01:34:45 @reload python 01:34:45 Reloaded the python plugin. 01:34:46 @python print 'hi' 01:34:46 SyntaxError: invalid syntax (, line 1) 01:34:57 @reload python 01:34:58 Reloaded the python plugin. 01:34:58 @python print 'hi' 01:34:58 SyntaxError: invalid syntax (, line 1) 01:35:31 @reload python 01:35:31 Reloaded the python plugin. 01:35:32 @python print 'hi' 01:35:32 SyntaxError: EOL while scanning single-quoted string (, line 1) 01:35:48 @reload python 01:35:49 Reloaded the python plugin. 01:35:49 @python print 'hi' 01:35:50 NameError: global name 'special' is not defined 01:35:58 @python sucks 01:35:58 NameError: global name 'special' is not defined 01:36:01 @reload python 01:36:02 Reloaded the python plugin. 01:36:03 >O< 01:36:07 vixey: justify that 01:36:09 @python 'hi' 01:36:13 @python print 'hi' 01:36:13 AttributeError: 'MagicGlobals' object has no attribute '_print_' 01:36:16 ehird: forced indentation of code 01:36:32 vixey: sooo.. give me a use case for not indenting code 01:36:39 during editing 01:36:51 your editor must be horrible 01:37:15 I've used lots of editors ... 01:37:55 @reload python 01:37:55 Reloaded the python plugin. 01:37:56 @python 'hi' 01:38:07 hm 01:38:08 @python 2 01:38:08 2 01:38:10 Very odd 01:38:19 @reload python 01:38:19 Reloaded the python plugin. 01:38:20 @python 2 01:38:20 2 01:38:23 @python 'a' 01:38:46 @python {} 01:38:46 {} 01:38:51 @python if 1: { 2 } 01:38:51 2 01:38:55 @python if 1: { 2 } else: { 3 } 01:38:55 SyntaxError: invalid syntax (, line 3) 01:38:59 hm, oh 01:39:58 @reload python 01:39:58 Reloaded the python plugin. 01:40:00 @python if 1: { 2 } else: { 3 } 01:40:00 AttributeError: 'NoneType' object has no attribute 'start' 01:40:39 @reload python 01:40:39 Reloaded the python plugin. 01:40:40 @python if 1: { 2 } else: { 3 } 01:40:40 2 01:40:47 @python if 1: { print 'hello world'; 2+2 } else: { 3 } 01:40:47 AttributeError: 'MagicGlobals' object has no attribute '_print_' 01:41:21 -!- vixey has quit ("Leaving"). 01:42:10 @reload python 01:42:10 SyntaxError: invalid syntax (python.py, line 82) 01:42:43 @reload python 01:42:43 Reloaded the python plugin. 01:42:45 @python if 1: { print 'hello world'; 2+2 } else: { 3 } 01:42:45 AttributeError: 'cStringIO.StringO' object has no attribute 'strip' 01:44:15 @reload python 01:44:15 Reloaded the python plugin. 01:44:16 @python if 1: { print 'hello world'; 2+2 } else: { 3 } 01:44:16 AttributeError: 'cStringIO.StringO' object has no attribute 'strip' 01:44:29 @reload python 01:44:29 Reloaded the python plugin. 01:44:30 @python if 1: { print 'hello world'; 2+2 } else: { 3 } 01:44:30 hello world 01:44:36 @python 2+2 01:44:39 @python 2+2 01:44:42 ah. 01:46:08 @reload python 01:46:09 Reloaded the python plugin. 01:46:09 @python 2+2 01:46:10 4 01:46:16 @python if 1: { print 'hello world'; 2+2 } else: { 3 } 01:46:16 hello world 01:46:20 @python if 0: { print 'hello world'; 2+2 } else: { 3 } 01:46:20 3 01:47:49 -!- seabot has quit (Remote closed the connection). 01:47:55 -!- seabot has joined. 01:47:58 @python if 0: { print 'hello world'; 2+2 } else: { 3 } 01:47:58 -!- seabot has quit (Remote closed the connection). 01:48:11 oklopol: it's almost working :D 01:48:12 -!- seabot has joined. 01:48:18 @python if 0: { print 'hello world'; 2+2 } else: { 3 } 01:48:18 3 01:48:22 @python if 1: { print 'hello world'; 2+2 } else: { 3 } 01:48:22 hello world 01:48:23 4 01:48:25 oh yeah! 01:48:29 @python print 'a'*500 01:48:34 hm 01:48:36 @python 'a'*500 01:48:42 a' 01:48:47 -!- seabot has quit (Remote closed the connection). 01:48:53 -!- seabot has joined. 01:48:54 @python 'a'*500 01:48:54 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 01:48:56 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 01:49:00 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 01:49:02 haha whut 01:49:02 :/ 01:49:04 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 01:49:08 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 01:49:10 a' 01:50:53 -!- seabot has quit (Remote closed the connection). 01:50:59 -!- seabot has joined. 01:51:02 @python 'a'*500 01:51:02 -!- seabot has quit (Remote closed the connection). 01:51:23 -!- seabot has joined. 01:51:24 @python 'a'*500 01:51:25 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 01:51:55 @python 'a'*500+'h!' 01:51:55 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 01:52:00 -!- seabot has quit (Remote closed the connection). 01:52:03 @python 'a'*500+"h!" 01:52:07 -!- seabot has joined. 01:52:09 Slereah: sorry, its debug time 01:52:09 :D 01:52:10 v 01:52:10 @python 'a'*500 01:52:11 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 01:52:16 Damn you robot! 01:52:30 -!- seabot has quit (Remote closed the connection). 01:52:35 -!- seabot has joined. 01:52:37 @python 'a'*500 01:52:37 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 01:53:16 -!- seabot has quit (Remote closed the connection). 01:53:22 -!- seabot has joined. 01:53:26 GregorR: How many characters will egobot write on one line? 01:53:27 @python 'a'*500 01:53:28 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 01:53:39 -!- seabot has quit (Remote closed the connection). 01:53:52 -!- seabot has joined. 01:53:55 @python 'a'*500 01:53:55 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 01:53:55 aaaaaaaa' 01:54:20 @python sys 01:54:21 NameError: name 'sys' is not defined 01:54:22 @python import sys 01:54:35 @python help(sys) 01:54:36 NameError: name 'sys' is not defined 01:54:40 .. 01:54:42 Sgeo: It's per user. 01:54:45 python import sys 01:54:47 @python help(sys) 01:54:48 Help on built-in module sys: 01:54:48 NAME 01:54:48 sys 01:54:48 FILE 01:54:48 (built-in) 01:54:48 -!- seabot has quit (Excess Flood). 01:54:52 need to add a delay 01:54:52 :D 01:55:06 -!- seabot has joined. 01:55:09 Can users share data? 01:55:20 Sgeo: Soon you can do: 'users.ehird.sys' 01:55:24 @python import sys; while True: { print 'ping'; sys.sleep(3) } 01:55:24 SyntaxError: invalid syntax (, line 1) 01:55:28 hmmm whut 01:55:41 @reload python 01:55:42 Reloaded the python plugin. 01:55:43 @python import sys; while True: { print 'ping'; sys.sleep(3) } 01:55:43 SyntaxError: invalid syntax (, line 1) 01:55:44 {} are legal in Python? 01:55:45 ahh 01:55:46 i seeeee 01:55:51 Sgeo: No, but I preprocess the code 01:55:54 I don't think they .. oh 01:56:03 It's a special syntax so that you can fit anything on one line. 01:56:08 cool 01:56:18 Although I don't think the #python people would like that 01:56:27 Sgeo: #python people are asses 01:56:36 and I'd like to see their suggestion for getting python code on one line 01:56:37 it's the only way 01:56:40 @reload python 01:56:40 Reloaded the python plugin. 01:56:43 @python import sys; while True: { print 'ping'; sys.sleep(3) } 01:56:43 IndentationError: unexpected indent (line 2) 01:56:55 @reload python 01:56:56 Reloaded the python plugin. 01:56:56 @python import sys; while True: { print 'ping'; sys.sleep(3) } 01:56:57 IndentationError: unexpected indent (line 2) 01:57:07 Oh, hmm. 01:57:07 Odd. 01:57:23 @reload python 01:57:23 Reloaded the python plugin. 01:57:24 @python import sys; while True: { print 'ping'; sys.sleep(3) } 01:57:25 AttributeError: 'MagicGlobals' object has no attribute '_getattr_' 01:57:29 Yay 01:57:47 @reload python 01:57:47 Reloaded the python plugin. 01:57:48 @python import sys; while True: { print 'ping'; sys.sleep(3) } 01:57:48 TypeError: 'NoneType' object is not callable 01:57:54 ehird, what if one user wants to keep data from other users? 01:58:06 looks like I've been missing out on fun 01:58:08 Sgeo: why the fsck are they using a public bot to evaluate python 01:58:11 @reload python 01:58:11 Reloaded the python plugin. 01:58:12 @python import sys; while True: { print 'ping'; sys.sleep(3) } 01:58:13 TypeError: 'NoneType' object is not callable 01:58:54 -!- calamari has quit ("Leaving"). 01:59:13 @python test = False; while(not Test): {print 'Hi'; test = True} 01:59:13 NameError: name 'Test' is not defined 01:59:18 @python test = False; while(not test): {print 'Hi'; test = True} 01:59:19 Hi 01:59:36 So it's something to do with calling a function in sys 01:59:44 Sgeo: I know what the problem is. 02:00:06 @reload python 02:00:06 Reloaded the python plugin. 02:00:09 @python import sys; while True: { print 'ping'; sys.sleep(3) } 02:00:09 AttributeError: 'module' object has no attribute 'sleep' 02:00:16 Oh, duh 02:00:25 @python import time; while True: { print 'ping'; time.sleep(3) } 02:00:34 Ayup, just as I thought 02:00:45 ..what's the problem now? 02:01:05 Alright, I gotta go. I'll be back tomorrow night, and hopefully say some more. 02:01:07 G'night! 02:01:13 bye wildhalcyon 02:01:35 -!- wildhalcyon has left (?). 02:01:38 @help 02:01:41 Ayup 02:02:05 hm? 02:02:06 @help 02:02:39 -!- seabot has quit (Remote closed the connection). 02:02:44 Sgeo: It isn't multi-threaded yet 02:02:50 -!- seabot has joined. 02:03:16 @python import time; while True: { print 'ping'; time.sleep(3) } 02:03:16 AttributeError: 'str' object has no attribute 'sender' 02:03:28 @reload python 02:03:29 Reloaded the python plugin. 02:03:32 @python import time; while True: { print 'ping'; time.sleep(3) } 02:03:33 ping 02:03:36 ping 02:03:38 woot 02:03:39 ping 02:03:41 -!- seabot has quit (Remote closed the connection). 02:03:47 -!- seabot has joined. 02:03:55 @python import sys; sys.exit(1) 02:03:56 -!- seabot has quit (Remote closed the connection). 02:03:57 Sgeo: I THINK everything should work, all I have to do now is make it secure 02:03:57 .. 02:04:00 indeed 02:04:03 And DON'T DO THAT 02:04:09 Do you realise how annoying that is? 02:04:10 -!- seabot has joined. 02:04:14 sorry 02:04:16 :p 02:04:20 How is it going to be secured? 02:04:25 Sgeo: RestrictedPython 02:04:29 http://pypi.python.org/pypi/RestrictedPython 02:04:42 It gives you a function that you can use instead of compile() 02:04:53 and then you just provide some hooks into the environment you eval it in (the globals) 02:04:58 and those get called on things like e.g. importing 02:05:05 @python users 02:05:05 {'ehird': } 02:05:10 @python users.ehird 02:05:10 AttributeError: 'dict' object has no attribute 'ehird' 02:05:14 oh, of course 02:05:37 @reload python 02:05:38 Reloaded the python plugin. 02:05:39 @python 2 02:05:40 TypeError: can't pickle function objects 02:05:44 Darn 02:06:13 http://www.vjn.fi/pb/p234644461.txt <<< rational number class and quicksort on it 02:06:43 test\ratqs.ot ==> [[rat 0 5] [rat 1 3] [rat 34 82] [rat 2 4] [rat 3 5] [rat 5 6] [rat 61 48] [rat 8 3] [rat 93 23] [rat 8 1]] 02:06:49 >>> [0.0/5,1/3.0,34.0/82,2/4.0,3.0/5,5/6.0,61.0/48,8/3.0,93.0/23,8/1.0] 02:06:49 [0.0, 0.33333333333333331, 0.41463414634146339, 0.5, 0.59999999999999998, 0.83333333333333337, 1.2708333333333333, 2.6666666666666665, 4.0434782608695654, 8.0] 02:06:54 seems it succeeds 02:07:06 @reload python 02:07:06 Reloaded the python plugin. 02:07:12 @python users 02:07:12 SafetyError: Nuh-uh! 02:07:13 oklopol, what language? 02:07:15 hum 02:07:17 fun, i've never done a language with extendable types before 02:07:21 Sgeo: oklotalk-- 02:07:25 @python import sys; sys.exit 02:07:26 SafetyError: Nuh-uh! 02:07:32 Huh what 02:07:35 Ohy 02:07:38 Of course 02:07:50 @python sys.version 02:07:50 SafetyError: Nuh-uh! 02:07:56 Sgeo: Yes yes yes 02:07:56 shut up 02:07:57 :) 02:08:18 ehird: once you're done, do realize you are supposed to be the one vaguely interested. 02:08:46 oklopol: Yes 02:08:48 I am going to look 02:08:54 yarrrr, no hurry 02:09:16 i think i'm going to take a break now, the current subset seems to work quite nicely 02:09:19 @reload python 02:09:19 Reloaded the python plugin. 02:09:20 @python 2 02:09:21 2 02:09:22 @python users 02:09:22 02:09:38 @reload python 02:09:39 Reloaded the python plugin. 02:09:40 @python users 02:09:40 SafetyError: Nuh-uh! 02:09:43 huh whut 02:09:46 or i could just keep on working 02:09:49 dunno 02:09:53 oic 02:10:05 @python user.Sgeo 02:10:06 NameError: name 'user' is not defined 02:10:08 @python users.Sgeo 02:10:09 SafetyError: Nuh-uh! 02:10:12 .. 02:10:31 Sgeo: Please shut up when I just found a bug and am trying to fixi t 02:10:32 :) 02:11:12 @python "I WANNA TRY TOO" 02:11:18 @python print "I WANNA TRY TOO" 02:11:18 I WANNA TRY TOO 02:11:29 @python for i in range(1000): {print "I WANNA TRY TOO"} 02:11:30 NameError: name '_getiter_' is not defined 02:11:33 :-< 02:12:04 yes yes yes 02:12:06 gimme a second 02:12:06 ;) 02:12:07 ehird, how are you planning on preventing floods like that? 02:12:36 Sgeo: Making output go sloooow. 02:12:37 And a @kill 02:12:39 @reload python 02:12:40 Reloaded the python plugin. 02:12:43 @python "HI" 02:12:47 Hmm, thanks oklopol 02:12:49 You found a bug 02:13:02 @python users 02:13:02 {} 02:13:07 And 'nother 02:13:08 @python str("Hi") 02:13:08 'Hi' 02:13:24 @reload python 02:13:25 Reloaded the python plugin. 02:13:28 Sgeo: Totally bizzare 02:13:31 @python 'hi' 02:13:31 @python "Hi" 02:13:34 .. 02:13:35 Weird. 02:13:38 @python users 02:13:39 {} 02:13:40 @python str("Hi") 02:13:40 'Hi' 02:13:48 @python 2 02:13:48 2 02:13:51 @reload python 02:13:52 Reloaded the python plugin. 02:13:54 @python users 02:13:54 {'ehird': } 02:13:54 @python "Hi" 02:13:57 @python users 02:13:57 {'ehird': , 'Sgeo': } 02:14:22 @python dir(users.Sgeo) 02:14:22 AttributeError: 'dict' object has no attribute 'Sgeo' 02:14:34 @python dir(users['Sgeo']) 02:14:34 NameError: global name 'getitem' is not defined 02:14:35 @reload python 02:14:35 Reloaded the python plugin. 02:14:36 @python users 02:14:37 {'ehird': } 02:14:43 @python 02:14:46 @reload python 02:14:46 Reloaded the python plugin. 02:14:47 @python users 02:14:47 {'ehird': } 02:14:47 @python users 02:14:48 {'ehird': , 'Sgeo': } 02:14:49 @python users.ehird 02:14:49 AttributeError: 'dict' object has no attribute 'ehird' 02:14:56 @python type(users) 02:14:57 02:15:02 oshi- 02:15:03 @python users['ehird'] 02:15:03 NameError: global name 'getitem' is not defined 02:15:17 @reload python 02:15:17 Reloaded the python plugin. 02:15:21 if it's a dict, it should be like user['ehird'] not users.ehird 02:15:25 02:15:30 @python users 02:15:30 BRING 02:15:30 {'Sgeo': } 02:15:33 Sgeo: what do you think 'oshi-' means 02:16:29 @reload python 02:16:29 Reloaded the python plugin. 02:16:30 @reload python 02:16:30 Reloaded the python plugin. 02:16:32 @python users 02:16:33 NameError: global name 'getitem' is not defined 02:16:41 oh 02:16:41 ofc 02:17:17 @reload python 02:17:17 Reloaded the python plugin. 02:17:19 @python users 02:17:19 {'ehird': } 02:17:22 @python users.ehird 02:17:23 AttributeError: 'dict' object has no attribute 'ehird' 02:17:35 @python users.__class__ 02:17:35 SyntaxError: Line 1: "__class__" is an invalid attribute name because it starts with "_". 02:17:41 ... 02:17:47 Stupid RestrictedPython 02:18:36 @reload python 02:18:36 Reloaded the python plugin. 02:18:38 @python users 02:18:38 {'Sgeo': } 02:18:38 @python users 02:18:39 {'ehird': , 'Sgeo': } 02:18:46 @python users['Sgeo'] 02:18:46 02:18:54 @python test = 5 02:18:59 @reload python 02:18:59 Reloaded the python plugin. 02:19:01 @python users['Sgeo']['test'] 02:19:01 KeyError: 'test' 02:19:03 @python users 02:19:03 {'ehird': , 'Sgeo': } 02:19:03 gah 02:19:05 @python users.Sgeo 02:19:05 AttributeError: 'dict' object has no attribute 'Sgeo' 02:19:08 fdfkgdfg 02:19:11 Sgeo: just stop for a sec, k 02:19:48 * Sgeo wonders if he could help code somehow 02:19:58 @reload python 02:19:58 Reloaded the python plugin. 02:20:00 @python users.Sgeo 02:20:00 RuntimeError: maximum recursion depth exceeded 02:20:05 @python users 02:20:05 {'ehird': } 02:20:17 @reload python 02:20:17 Why was it recusing if I wasn't in there? 02:20:17 Reloaded the python plugin. 02:20:19 @python users 02:20:19 {'ehird': } 02:20:21 @python users.ehird 02:20:21 NameError: global name 'name' is not defined 02:20:27 ehird: what do you do for protection? 02:20:28 @reload python 02:20:28 Reloaded the python plugin. 02:20:29 @python users.ehird 02:20:30 02:20:51 oklopol: I just ditched RestrictedPython. Now I'll protect it via __builtins__, modified globals, and __import__ 02:20:58 @python users.ehird.users 02:20:59 {'ehird': } 02:21:01 @python users.ehird.users.ehird.users 02:21:02 AttributeError: 'dict' object has no attribute 'ehird' 02:21:04 hee 02:21:06 oh wait 02:21:06 oshi 02:21:09 sounds possible 02:21:35 @reload python 02:21:36 Reloaded the python plugin. 02:21:37 @python users.ehird.users.ehird.users 02:21:37 AttributeError: 'MagicGlobals' object has no attribute 'users' 02:21:40 @python users 02:21:40 {'ehird': } 02:21:51 Sgeo: this IS abusable -- you can modify the users dict how you please 02:21:52 but it's __d 02:21:58 so you have to do all this: 02:21:58 @python users['Sgeo'] 02:21:58 02:22:17 __d? 02:22:18 @python users.ehird._MagicGlobals__data 02:22:18 {} 02:22:33 @python users 02:22:33 {'ehird': , 'Sgeo': } 02:22:36 Well, whatever. 02:23:06 @python def fact(n): { if n == 0: { return 1 } else: { return n * fact(n-1) } } 02:23:07 @python type(users['Sgeo']) 02:23:07 02:23:16 @python fact 02:23:16 02:23:19 @python fact(2) 02:23:19 NameError: global name 'fact' is not defined 02:23:22 WTF 02:23:24 @python fact 02:23:24 02:23:28 .. 02:23:32 @python x = fact; x(2) 02:23:34 @python users['ehird']['fact'] 02:23:34 02:23:37 @python users['ehird']['fact'](5) 02:23:37 NameError: global name 'fact' is not defined 02:23:41 oh 02:23:42 of course 02:23:52 its erroring on the recursive fact 02:23:56 @python users['ehird'] 02:23:57 02:24:01 @python dir(users['ehird']) 02:24:01 ['_MagicGlobals__blab', '_MagicGlobals__data', '_MagicGlobals__users', '__builtins__', '__class__', '__delattr__', '__dict__', '__doc__', '__getattribute__', '__getitem__', '__hash__', '__import__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setitem__', '__str__', '__weakref__', 'special', 'stdout'] 02:24:13 @python users['ehird']['fact'] 02:24:13 02:24:15 @python dir(users['ehird']['fact']) 02:24:16 ['__call__', '__class__', '__delattr__', '__dict__', '__doc__', '__get__', '__getattribute__', '__hash__', '__init__', '__module__', '__name__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__str__', 'func_closure', 'func_code', 'func_defaults', 'func_dict', 'func_doc', 'func_globals', 'func_name'] 02:24:21 @python users['ehird']['fact'].func_dict 02:24:21 {} 02:24:25 bah 02:24:27 i dunno why this is happening 02:24:30 func_dict? 02:24:31 @python users['ehird']['fact'].func_globals 02:24:32 -!- seabot has quit (Excess Flood). 02:24:44 -!- seabot has joined. 02:24:59 @python def id(x): { return x } 02:25:04 @python id(2) 02:25:04 2 02:25:10 @python def void(): { return void } 02:25:12 @python void() 02:25:13 NameError: global name 'void' is not defined 02:25:15 @python void 02:25:16 02:25:18 Sgeo: you see? 02:25:33 @python print repr(void.func_globals)[:20] 02:25:33 {'__builtins__': {'I 02:25:34 yes, but what's func_dict supposed to be? 02:25:35 @python print repr(void.func_globals)[:100] 02:25:36 {'__builtins__': {'IndexError': , 'all': , 'hel 02:25:43 @python print repr(void.func_globals)[100:200] 02:25:43 p': Type help() for interactive help, or help(object) for help about object., 'vars': @python print repr(void.func_globals)[200:300] 02:25:46 tion vars>, 'SyntaxError': , 'unicode': , 'UnicodeDec 02:26:08 everything that the function sees as global, I guess? 02:26:27 @python def void: {return void} 02:26:28 SyntaxError: invalid syntax (, line 1) 02:26:34 @python def void(): {return void} 02:26:46 @python void.func_globals['void'] = void 02:26:51 python void() 02:26:53 @python void() 02:26:54 02:26:56 :D 02:26:59 hah 02:27:03 ugly workaround though 02:27:35 @python users.Sgeo.void 02:27:35 AttributeError: 'MagicGlobals' object has no attribute 'void' 02:27:47 @python users.Sgeo['void'] 02:27:47 02:27:56 @reload python 02:27:56 Reloaded the python plugin. 02:27:57 @python users.Sgeo.void 02:27:57 KeyError: 'Sgeo' 02:28:02 heh 02:28:03 I keep wiping yours 02:28:09 @python users.ehird 02:28:09 02:28:21 -!- Sgeo has changed nick to `Sgeo. 02:28:27 <`Sgeo> @python print "Hi" 02:28:28 Hi 02:28:32 @python users 02:28:32 {'ehird': , '`Sgeo': } 02:28:35 @python users['`Sgeo'] 02:28:35 02:28:51 <`Sgeo> @python getattr(users, "`Sgeo") 02:28:52 02:28:59 -!- `Sgeo has changed nick to Sgeo. 02:30:11 oklopol: Feed in your cellular automata thing 02:30:14 :D 02:30:16 you wrote a function to do it 02:30:19 well i don't have it anywhere 02:30:20 -!- lifthrasiir has quit (Read error: 110 (Connection timed out)). 02:30:23 but now, it can be multiple statements and everything 02:30:27 cool 02:30:28 so it'll be a lot more convenient 02:30:38 i can rewrite one, or you can search it for me 02:30:42 @python import sys; sys.exit 02:30:46 oklopol: rewrite it to use the cool stuff 02:30:46 :D 02:30:48 but i don't *have* it 02:30:51 :D 02:30:52 @python import sys; sys 02:30:57 .. 02:30:58 Sgeo: yes yes it's buggy 02:30:58 hmm 02:31:04 oklopol: here's the general rule: 02:31:07 @python str("hi, I'm alive") 02:31:07 "hi, I'm alive" 02:31:18 foo: { bar } is foo:, with 'bar' as the indented block 02:31:23 what automaton do you want 02:31:24 foo; bar is foo, a newline, and bar 02:31:28 i know the rules! 02:31:31 but of course the newline is bumped up to the right indent 02:31:32 and ok 02:31:39 oklopol: how about that famous rule one 02:31:40 thing 02:31:40 :P 02:31:47 also i'm gonna write it in real python first, because i'm scared i might fail :< 02:31:56 rule one 02:31:57 hmm 02:32:22 what's rule one? 02:32:39 no 02:32:40 not rule 1 02:32:43 rule one is trivial 02:32:45 the turing complete one 02:32:48 oh 02:32:49 110 02:32:54 no 02:32:55 a lower number 02:33:06 what are we talking about? 02:33:14 110 + a few identical ones 02:33:20 for instance the reverse 02:33:25 and two others, iirc 02:33:41 anyway, it's 110 alright 02:33:43 i'll do 02:33:43 now 02:33:49 ok 02:33:50 :) 02:34:40 oh, right 02:34:49 110 grows in the wrong direction, i'll reverse it 02:35:20 so it's... 116 02:36:30 oklopol: http://codespeak.net/pypy/dist/pypy/doc/sandbox.html 02:36:31 I might use that 02:36:35 because pypy is cool 02:36:35 :D 02:38:56 interacting through stdio? Why does that sound familiar.., 02:39:20 Sgeo: Huh? 02:39:46 "instead, whenever it would like to perform such an operation, it marshals the operation name and the arguments to its stdout and it waits for the marshalled result on its stdin." 02:40:14 Sgeo: oh. that's nothing like psox 02:40:21 * Sgeo was being silly 02:40:28 okay i'm implementing a bit verbosely 02:40:36 but i guess that's okay 02:44:54 oklopol: can't wait 02:44:55 :D 02:46:33 hmph, should be ready already 02:46:34 almost 02:48:56 so okay 02:48:59 it's 02:49:02 1 02:49:09 it's 02:49:09 5 02:49:10 asd someone show me some of it 02:49:17 oklopol: ??? 02:49:19 wanna see if it's right 02:49:25 huh? 02:49:26 i don't wanna! :D 02:49:29 110 02:49:31 what are you talkng about 02:49:56 http://en.wikipedia.org/wiki/Rule_110_cellular_automaton 02:50:02 oklopol: try doing the 2,3 machine 02:50:03 :p 02:50:31 * Sgeo actually helps someone with a regex question in #python .. 02:50:43 -!- tola_ has quit. 02:50:46 ais523: you have a wikipedia article! 02:50:55 http://en.wikipedia.org/wiki/Alex_Smith_%28The_Simplest_Universal_Computer_Proof_contest_winner%29 02:53:03 oklopol: but anyhoo 02:53:04 Rule 110 02:53:05 show it! 02:53:10 just define it 02:53:11 like 02:53:17 @python def rule110(foo): { ... } 02:53:35 what are these rules? 02:53:41 Sgeo: cellular automata 02:53:45 Rule 110 is turing complete 02:53:55 GLAH it should work noq 02:53:56 now 02:54:15 i'm not really in a very fast coding mood right now 02:54:26 but... fuck if this takes over half an huor 02:54:28 hour 02:54:39 oklopol: it should work? try it :D 02:59:31 try it 02:59:35 i need to go soon :( 02:59:40 okay 02:59:41 done 02:59:46 ok 02:59:48 try it in @python 02:59:48 now to convert... 03:01:10 pasiodjf 03:01:16 ; splits or terminates 03:01:52 @python def next_row(p,rule=110,spl=(0,-1)): {rule=to_bits(rule);ret=[];z=[0,0]+p+[0,0];for i in xrange(1,len(z)-1):{ret.append(next(z[i-1:i+2],rule))};if spl[1]==0:{return ret[spl[0]:]};return ret[spl[0]:spl[1]] 03:02:03 you missed a } 03:02:03 this is the function to get the next row 03:02:08 oh 03:02:10 ah 03:02:29 @python def next_row(p,rule=110,spl=(0,-1)):{rule=to_bits(rule);ret=[];z=[0,0]+p+[0,0];for i in xrange(1,len(z)-1):{ret.append(next(z[i-1:i+2],rule))};if spl[1]==0:{return ret[spl[0]:]};return ret[spl[0]:spl[1]]} 03:02:33 but 03:02:36 i need a few others 03:02:50 ok 03:02:51 hurry 03:02:54 i don't have much time :p 03:03:04 argh 03:03:42 @python def next(l,r):{r=reverse(r);for i in xrange(len(r)): {if r[i]==True and l==to_bits(i,3): {return True }};return False} 03:04:52 @python def to_bits(n,l=8):{ret=[];while n:{ret.append(n%2);n/=2};return reverse(ret+[0]*(l-len(ret)))} 03:04:59 oklopol: your original was a one-liner 03:05:00 :p 03:05:08 and this could easily be made one 03:05:20 i just made it a bit more generic, for the fuck of it 03:05:21 @python row=[True] 03:05:30 @python row=next_row(row) 03:05:32 @python row 03:05:32 [True] 03:05:35 :D 03:05:39 whhhell 03:05:52 @python next_row(row) 03:05:52 NameError: global name 'to_bits' is not defined 03:05:56 oh. 03:05:57 joy 03:06:02 the broken global bindings 03:06:06 do you want me to onelinerize it? 03:06:38 how long will that taeke 03:06:45 not that long 03:06:49 4 minutes..? 03:06:49 how long 03:06:51 ah 03:06:51 ok then 03:06:52 maybe 03:07:54 done 03:07:59 now to your format 03:08:28 oklopol: i hope its just one function 03:08:30 otherwise itll break 03:08:39 i used inner functions 03:08:48 that okay? 03:08:52 yes 03:10:04 oklopol: ... 03:11:05 @python def next_row(p,rule=110,spl=(0,-1)):{def next(l,r):{r=reverse(r);for i in xrange(len(r)):{if r[i]==True and l==to_bits(i,3):{return True}};return False};def to_bits(n,l=8):{ret=[];while n:{ret.append(n%2);n/=2};return reverse(ret+[0]*(l-len(ret)))};rule=to_bits(rule);ret=[];z=[0,0]+p+[0,0];for i in xrange(1,len(z)-1):{ret.append(next(z[i-1:i+2],rule)) };if spl[1]==0:{return ret[spl[0]:]};return ret[spl[0]:spl[1]]} 03:11:13 hmph 03:11:16 didn't fit? :D 03:11:19 oklopol: is that it? 03:11:20 it ended at 03:11:22 spl[1]]} 03:11:28 if that's right, quick test it 03:11:28 yep 03:11:30 should be 03:11:30 i have about 60 seconds 03:11:41 @python next_row([True]) 03:11:47 :D 03:11:52 @python print next_row([True]) 03:11:52 NameError: name 'next_row' is not defined 03:11:55 :P 03:11:56 okay 03:11:59 sec 03:11:59 @python print users.oklopol.next_row([True]) 03:11:59 NameError: global name 'reverse' is not defined 03:12:04 adsölfkioarsgkj 03:12:05 FUCK 03:12:29 @python def next_row(p,rule=110,spl=(0,-1)):{def next(l,r):{r=reversed(r);for i in xrange(len(r)):{if r[i]==True and l==to_bits(i,3):{return True}};return False};def to_bits(n,l=8):{ret=[];while n:{ret.append(n%2);n/=2};return reversed(ret+[0]*(l-len(ret)))};rule=to_bits(rule);ret=[];z=[0,0]+p+[0,0];for i in xrange(1,len(z)-1):{ret.append(next(z[i-1:i+2],rule)) };if spl[1]==0:{return ret[spl[0]:]};return ret[spl[0]:spl[1]]} 03:12:34 @python print next_row([True]) 03:12:34 TypeError: argument to reversed() must be a sequence 03:12:38 What 03:12:42 PL 03:12:43 OK 03:12:44 gtg 03:12:48 wait wait 03:12:51 oklopol: feel free to try and fix it in pure python 03:12:53 ill run it tomorrow 03:12:53 Bye 03:12:56 hehe 03:12:59 -!- seabot has quit (Remote closed the connection). 03:12:59 darn, so close 03:13:06 -!- ehird has quit ("This computer has gone to sleep"). 03:13:10 it does already work in pure python. 03:13:12 oh 03:13:13 bye 03:33:52 -!- vixey has joined. 03:42:13 hi vixey 03:42:36 hello 03:42:51 no rest for the wicked 03:43:22 -!- oklofok has joined. 03:47:44 howdy 04:03:01 -!- oklopol has quit (Read error: 113 (No route to host)). 04:08:10 -!- AnMaster has quit (brown.freenode.net irc.freenode.net). 04:08:10 -!- Sgeo has quit (brown.freenode.net irc.freenode.net). 04:08:10 -!- Quendus has quit (brown.freenode.net irc.freenode.net). 04:08:11 -!- GregorR has quit (brown.freenode.net irc.freenode.net). 04:11:45 -!- Parma-Quendion has joined. 04:11:45 -!- AnMaster has joined. 04:11:45 -!- Sgeo has joined. 04:11:45 -!- Quendus has joined. 04:11:45 -!- GregorR has joined. 04:12:04 -!- Quendus has quit (Connection reset by peer). 04:18:51 -!- oklofok has quit (No route to host). 04:45:01 -!- Sgeo has quit (Read error: 104 (Connection reset by peer)). 04:46:41 -!- Sgeo has joined. 04:50:39 so, what are people up to this evening? 04:50:48 Being quite happy. 04:51:01 that's a very expansive response 04:51:04 (Due to drugs) 04:51:09 ah 04:51:37 -!- Sgeo_ has joined. 04:52:34 I'm grading quizzes and chipping away at my respect for humanity 04:52:50 1) 1 + 1 = [ ] 04:52:51 3 04:53:50 I wouldn't be surprised at an answer like that, with this class 04:54:03 I've had people routinely misspell their own names, so all bets are off 04:54:09 WOW 04:54:49 it's a melange of painful ignorance and hilarity 04:55:37 Can you give us an example? 04:55:59 -!- Sgeo__ has joined. 04:56:00 s/us/Gregor/ :P 04:56:15 Sgeo{_{_,},}: Stop growing underscores :p 04:56:23 lol GregorR 04:56:35 The same page at popsci keeps causing me to freeze 04:56:36 hm, well, I haven't run across any real doozeys yet in this batch, but there's been some pure gold in the past 04:57:10 One guy wrote his first name and no last name on a paper, in a CLASS OF 93 STUDENTS. 5 people had that first name. 04:57:32 wouldn't have made a difference though, because he got a zero on the assignment, too 04:57:40 Noyce. 04:57:41 nearly a third of the class is retaking it 04:57:56 Why does http://www.popsci.com/scitech/article/2008-02/anonymity-experiment keep causing my computer to freeze? 04:57:59 Firefox 2.0.0.12 04:58:06 Flash9 04:58:13 Ubuntu 7.04 04:58:46 we have a lot of quizzes that are just "write your name on a sheet of paper" and people still fuck it up, misspelling their names, writing illegibly (think first-grader with a crayon illegibly) and turning in the quiz... without their name on it. 04:59:35 So, uh, what sort of class is that? 04:59:50 "Object Oriented Design" 05:00:10 Jebus. People somehow manage to get /to/ that class while still being dumbf***s? 05:00:29 it's a painfully easy class- when I took it I got over 100% overall. This is why I can mock their failures. 05:01:08 it's basically the first thing you take after passing basic "intro to Java" style stuff. Most of it isn't even CODING, it's just learning how to properly spec and design OO projects 05:02:22 The writing skills really bring me to tears. I cannot BELIEVE people can get into college without being able to write a coherent sentence that doesn't look like it was scrawled by someone with cerebral palsy. 05:02:46 There's a whole class of people who get into CS but are too effing stupid to ever get it. I call them "gamers", although it's actually a bigger set. Anyway, usually they've all been weeded out by the time you get to any real courses, so this surprises me a bit. 05:03:13 OOD *IS* the class that weeds these people out, as far as I can tell. 05:03:32 * Sgeo__ is in a database class. 05:03:33 Aaaaaaaaaaaaaah. 05:03:47 Sgeo: are you an IT major or what? 05:03:57 No major, I'm non-matric 05:04:23 My college offers "Computer Information Systems", they shut down CS 05:04:35 D:> 05:04:40 good fucking lord 05:04:44 that's horrible 05:04:46 I'm going to Purdue next year 8-D 05:05:56 I have a friend from the UK who's taking Software Engineering because his university doesn't recognize CS as a field (what the christ), and he told me they're dropping their Data Structures course next year. 05:07:08 -!- Sgeo has quit (Read error: 110 (Connection timed out)). 05:09:04 Maybe I should go to a different college? 05:09:17 I'd highly recommend it 05:09:19 I know I wouldn't go to a college that didn't offer a Major in CS. 05:09:36 -!- Sgeo_ has quit (Read error: 110 (Connection timed out)). 05:09:37 I can say that MTU, at least, has a CS department that doesn't seem to be spiraling into the shitter 05:09:55 I mean, every university hsa the right to offer or not offer whatever they feel like, but you also have the right to go too a university that DOES offer what you need. 05:09:57 I mean, CIS does have a programming branch or whatever it's called 05:10:40 I'd say if you aren't going to a university that doesn't offer the major you're interested in, you're wasting your money. 05:10:54 Hm 05:10:59 Let me try to reduce the negatives there: 05:11:00 RodgerTheGreat, s/aren't/are/? 05:11:13 argh 05:11:14 If you ARE going to a university that DOES offer the major you're interested in, you're wasting your money. 05:11:27 yes, I inserted a superfluous negative there 05:11:48 This is what happens when I get distracted in mid-thought 05:11:51 GregorR, I don't think those are equivelent 05:12:04 * Sgeo__ isn't sure though 05:12:10 Oh wait, you're right. 05:24:28 is it bad that I tend to instantly form a negative opinion of someone who writes their name with a roman numeral/ number after it, such as "John Smith III" or "Ted Borglan the second"? 05:26:49 it just strikes me as tremendously narcissistic. 05:43:51 "III" isn't, "the second" or "II" is (IMHO) 05:44:12 "The second" is the same as "Junior", so that's just pretentious. 05:44:53 But "The third"/"III" is not replaceable, and just part of the persons name. It's part of their full name, so that's how they write it. 05:45:01 I fail to understand why pretentiousness doesn't carry past a single generation 05:45:47 well, honestly writing a middle name in most non-legal or administrative cases is rather pretentious as well, so I'd argue that applies to "III" 05:46:19 Do you find somebody who writes Bob Forpthop Jr. pretentious? (Assuming of course that their father's name is Bob Forpthop) 05:47:42 I'm not sure. 05:47:55 possibly. 05:48:34 Heh - it seems to me like writing III after is no different (Jr. Jr. is just stupid), so the opinion should be the same if nothing else :P 05:49:36 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)). 05:50:00 how about parents showing some creativity naming their children, avoiding the problem altogether? 05:50:12 Heh 05:50:15 -!- Judofyr has joined. 05:50:17 If you want to keep a "family name", alternate generations or something 05:50:40 If I have a son, I'm naming him Jesus Muhammed God, just to offend everyone. 05:50:46 nice 05:51:42 *Jesus Muhammed Yawhe 05:51:52 No, just YHWH 05:51:55 Jesus Muhammed Buddah Xenu Yahweh 05:52:05 HE WILL UNITE THE WORLD 05:52:25 I'd probably be inclined to name a child something out of fashion but interesting, like Otto or Orville 05:52:30 -!- calamari has joined. 05:52:39 For some reason the names coming to mind at the moment start with "O" 05:52:45 hey, calamari 05:53:11 hi RodgerTheGreat 05:53:18 There's a family name in my family that hasn't been used for, oh, ten generations or so. 05:53:19 Name him empty string 05:53:20 Dodofur. 05:53:38 If I have a son that I hate, I'll name him Dodofur. 05:54:08 How do you know that you hate him at birth? 05:54:21 Idonno, I guess that's the trick. 05:54:37 if it pisses on you moments after birth, it could be a sign 05:54:39 However, I hate children, so it's pretty much "he exists" :P 05:55:07 Then don't have children. 05:55:14 Wasn't planning on it :P 05:55:27 I tend to be very polarized about children. Some are polite and interesting and I like them, while others are evil little bastards 05:55:37 Get a vasectomy D: 05:57:40 Um. 05:59:43 freeze some sperm ahead of time incase you change your mind. Best of both worlds! 06:00:39 No need. 06:00:47 Just adopt the kid at 7 year. 06:00:53 That way, less crying and shitting. 06:00:59 But then my genes won't promulgate :P 06:01:30 Of course, statistics tells us that your genes are extremely unlikely to promulgate beyond ten or so generations - and if they do, everyone in the nation will have them. 06:02:13 Plus, who cares. 06:02:24 When I'm dead, it won't matter! 06:02:38 * Sgeo__ thinks his genes should be spread 06:02:42 Facts indicate that you don't actually survive through your biological childrens. 06:02:56 I spread my genes everyday. 06:03:10 Of course, they mostly end up in the trash can 06:03:24 I meant, if more people had my genes, the world would be a better place, in my not so humble opinion 06:03:34 I'd posit that being a good parent and raising your child is significantly more beneficial than spreading your genes 06:03:43 fucking is easy, parenting is hard 06:03:54 we need less of the former and more of the latter 06:04:12 or at least birth control for the former 06:04:13 Hahahaha, another T-shirt worthy phrase from RodgerTheGreat X-D 06:04:19 GregorR: :D 06:04:27 What if you fuck your child? 06:04:32 unless you were making fun of me in which case :( 06:04:34 Then you're Australian. 06:04:43 GregorR: read that article too, eh? 06:04:46 Zing! 06:04:58 Yup :P 06:06:15 -!- lifthrasiir has joined. 06:08:43 GregorR: I don't think I should draw a picture to go with that quote, though 06:08:49 Hahaha 06:09:30 although I'm now imagining a portal-style schematic diagram with "DO" and "DO NOT" panels 06:10:24 DO NOT PUT THE BABY IN THE LOVELESS PARENT/CHILD RELATIONSHIP 06:10:44 That could use a bit more refinement :P 06:11:16 be my guest 06:12:16 LOVE YOUR CHILD LIKE YOU LOVE YOUR PENIS 06:12:24 Of course, it could be misinterpreted. 06:12:41 Hahahahaha 06:12:52 "vigorously, near your computer" 06:13:13 DO NOT PUT THE BABY IN THE MAN-PENIS RELATIONSHIP. 06:13:21 sound advice 06:13:59 Hmm. 06:14:22 DO NOT PUT THE BABY IN THE ABORTION CLINIC. 06:14:43 "IT IS MUCH TOO LATE YOU NOW REQUIRE A WOODCHIPPER AND/OR LARGE DOG" 06:15:06 * pikhq wonders what a large dog going through a woodchipper sounds like 06:15:21 Well, you could just sort of leave some pills lying around. 06:15:34 pikhq: if you're an unwanted baby, victory 06:15:41 Are we discussing methods of infanticide? 06:15:42 and if you accidentaly drop him on the floor, we understand. 06:15:47 We're not judging you. 06:15:51 haha 06:16:36 I wonder how many toddler's death are somehow premeditated. 06:16:58 It's not like it's hard to make them kill themselves! 06:17:06 GregorR: We're just discussing DO NOT PUT THE BABY. 06:17:13 Which lends itself to infanticide easily. 06:17:29 But it's "do NOT put the baby in the wood chipper"! :P 06:17:59 DO NOT PUT THE BABY-> Brainstorm for bad baby locations->Infanticide 06:18:02 LMAO 06:18:13 DO NOT PUT THE BABY IN THE T4 GAS CHAMBER. 06:18:15 But well, some people just can't do thing simply. 06:18:21 Putting the baby in the freezer 06:18:39 What's the deal with that? 06:19:00 "DO NOT PUT THE BABY IN THE MANDELBROT SET... SOMEWHERE." and just have a black-and-white image of the mandelbrot set. 06:19:02 Do you want to be reminded of your infanticide everytime you get some TV dinner? 06:19:27 "woah, jesus I need to clean this damn thing" 06:19:33 Hahah 06:20:11 I can do much better than that. 06:20:19 Hmm. 06:20:33 If anybody wants to make new DNPTBs, feel free :P 06:20:52 Lessee here. . . I have devices that emit toxic gases, I have access to 120V AC, I have devices that irradiate items. . . 06:21:09 I have devices that rotate items at fairly high speeds. . . 06:21:18 Infanticide: because everything's a weapon. 06:21:50 Why do you need such high tech gizmos? 06:21:53 Two words : 06:21:56 Plastic bag 06:22:00 GregorR: make a new DNPTB T-shirt with pikhq's phrase 06:22:05 DO IT 06:22:08 :D 06:22:25 Slereah: One word: knife. 06:22:28 Slereah: gladware, baby-size 06:22:32 I don't want to make T-shirts that could potentially be taken to be a statement on abortion. 06:22:37 pikhq: one word: rock. 06:22:41 A knife would be too suspiscious 06:22:51 RodgerTheGreat: One word: drop. 06:22:57 If you have knives lying around, it's a little suspiscious. 06:23:06 Plastic bag is okay though 06:23:13 pikhq: half of the time that just makes them retarded 06:23:17 Slereah: So, *every kitchen* is suspicious? 06:23:28 RodgerTheGreat: I have yet to specify a height. 06:23:30 Well, if the knives are lying on the floor! 06:23:31 retarded babies get old real fast, I'd imagine 06:23:36 I was thinking 'Empire state building'. 06:23:58 Most people store their knives in drawers, or at least on high tables 06:24:01 hm. well, in that case the weapon is really the building, no? 06:24:09 No, the weapon is gravity. 06:24:24 Slereah: Fine, fine. 06:24:41 Hmm. Rat poison? 06:24:52 (that's cruel. Even for someone talking about infanticide) 06:24:57 Slereah: I store my knives in a colorful baby-height pile of children's toys and stuffed animals 06:24:59 Only if you have rats! 06:25:17 DO NOT PUT THE BABY IN ROOM 101 06:25:52 DO NOT PUT THE BABY IN THE DISTOPIA. 06:25:57 s/DIS/DYS/ 06:26:29 funetic spelings r fun 06:26:42 DO NOT PUT THE BABY ON 4CHAN 06:26:46 "grate" might've been more amusing there 06:27:31 this is a really nifty painting: http://img.waffleimages.com/d89ca2727870ca4377777eab22885e7c611992dd/daim2.jpg 06:42:29 Bye all 06:42:51 -!- Sgeo__ has quit (Remote closed the connection). 07:04:18 -!- GreaseMonkey has joined. 07:15:04 'night all 07:15:17 -!- RodgerTheGreat has quit. 07:45:51 -!- jix has joined. 07:48:40 RISCy men do it with their ARMs. 07:55:10 harr harr 07:57:37 -!- Judofyr has quit. 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:12:01 -!- calamari has quit ("Leaving"). 08:41:39 -!- lifthrasiir has quit (Read error: 110 (Connection timed out)). 08:46:07 -!- Iskr has joined. 09:55:50 -!- olsner has quit (Read error: 110 (Connection timed out)). 10:10:43 -!- GreaseMonkey has quit ("Read error: 110 (Connection chickened out)"). 10:24:07 -!- jix has quit ("This computer has gone to sleep"). 12:09:45 -!- ais523 has joined. 13:03:58 -!- timotiis has joined. 13:37:08 -!- Corun has joined. 13:54:12 -!- ais523 has quit ("(1) DO COME FROM ".2~.2"~#1 WHILE :1 <- "'?.1$.2'~'"':1/.1$.2'~#0"$#65535'"$"'"'&.1$.2'~'#0$#65535'"$#0'~#32767$#1""). 14:19:58 -!- sebbu2 has joined. 14:25:22 -!- Judofyr has joined. 14:29:11 -!- sebbu has quit (Read error: 113 (No route to host)). 14:29:11 -!- sebbu2 has changed nick to sebbu. 14:42:43 -!- ehird has joined. 14:43:02 * SimonRC ponders... 14:43:25 xkcd should do a comic entitled "My Hobby: breaking the fourth wall" 14:43:41 the character would be breaking the fourth wall in the wrong way of course 14:44:13 e.g. thinking it is a movie, or a book, or maybe just "talking to the camera" in the wrong direction. 14:59:38 -!- jix has joined. 15:08:48 Hello, wold. 15:09:09 e ruytrryt uighilfghnm,.bvcn,bmnvcnm,./mnbvm,.mnbvcncxzcvzccvjkhjj'l;kjhjlhfgjffdsghjhgdsfghjkdfxghjfdsghjkoopiuytyuuyt 15:09:13 Sorry, that was me cleaning my keyboard. 15:10:53 SimonRC : No, he should not. 15:18:45 ehird: http://www.bash.org/?52 15:21:47 :) 15:24:44 I regularly destroy my todo.txt when cleaning my keyboard 15:25:03 It turns from 'Do blah blah blah blah blah blah' into 'Do blah blah blah b lsdf$af)_a0-#9080ewe 15:25:04 qwe 15:25:04 3 15:25:05 ' 15:25:34 I notice that you dind't clean the qwa keys above 15:26:01 -!- seabot has joined. 15:26:07 I did, I just didn't press down on them hard 15:26:24 This keyboard isn't a gradual push 15:26:34 it's either not pressed, or totally pressed 15:26:42 why can't you clean it into a text editor or something, rather than irc? 15:27:18 SimonRC: because i can't be bothered to think about stuff like that when it only takes a few seconds :-) 15:28:01 -!- seabot has quit (Remote closed the connection). 15:28:07 -!- seabot has joined. 15:28:29 bah 15:28:30 -!- seabot has quit (Remote closed the connection). 15:28:36 -!- ehird has changed nick to seabot. 15:28:41 -!- seabot has changed nick to ehird. 15:28:56 -!- seabot has joined. 15:28:56 -!- seabot has quit (Remote closed the connection). 15:29:08 -!- seabot has joined. 15:29:10 Finally. 15:30:49 -!- seabot has quit (Excess Flood). 15:30:58 Well I figured out how to abuse it 15:30:58 :P 15:36:45 I didn't see it say a word 15:43:57 privmsg 16:21:01 -!- Tritonio_ has quit ("Bye..."). 16:37:12 -!- sekhmet has joined. 16:39:10 -!- pikhq has quit (Read error: 110 (Connection timed out)). 16:39:12 -!- pikhq_ has joined. 16:40:46 no oklopol :( 16:40:51 I was going to tell him something! 16:40:52 Humph 16:40:53 :P 16:43:23 -!- pikhq_ has quit (Read error: 104 (Connection reset by peer)). 16:44:10 -!- pikhq has joined. 17:14:09 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)). 17:14:45 -!- Judofyr has joined. 17:26:12 -!- oklopol has joined. 17:28:42 oklopol: you are heeere 17:28:53 well i just woke up 17:28:57 I thought I had implemented continuations in Python but it turns out I didn't :( 17:29:18 i basically went to sleep when you left, and woke up now 17:29:36 anyway, i did make a parser from python to your format and finished the program first 17:29:38 ehird: doesn't stackles Python already have continuations? 17:29:44 *stackless 17:29:58 SimonRC: And PyPy has a real sandbox. 17:30:16 Also, Rubinius is better designed than the current RubyVM. 17:30:20 All of these mean nothing. 17:30:24 what's freenode's maximum line length? 17:30:25 SimonRC: Anyway, Stackless removed continuations. 17:30:28 oklopol: not sure 17:30:49 you see, i actually wrote the automaton to especially test your multiple line input 17:30:57 thought you had that 17:31:43 oklopol: ? 17:31:53 talking about the 110 17:32:13 you see, unlike you, i haven't had a day between this moment and our conversation 17:32:21 ah 17:32:22 :D 17:32:32 it's coding 110 -> sleep -> back to irc to talk about it 17:32:33 oklopol: I am redesigning Seabot 17:32:42 but 17:32:44 i'll put it up 17:32:48 so feel free to play 17:33:01 i guess i could remake the prog to be a bit shorter 17:33:03 or a lot shorter 17:33:05 hmm 17:33:18 wasn't my other version in ruby? 17:33:24 or not 17:33:28 both 17:33:28 dunno 17:33:29 ruby and non-ruby 17:33:39 -!- seabot has joined. 17:35:08 oklopol: there ya go 17:35:15 lessee 17:35:19 -!- RodgerTheGreat has joined. 17:39:00 oklopol: #python be hatin' on me for my braces 17:40:28 hehe 17:40:30 prolly 17:40:55 http://www.vjn.fi/pb/p611563426.txt 17:41:18 efmtfy(python_koed) 17:41:38 uhhh whut 17:41:43 sorry, koed has become my official way to type that because it's so nice to write 17:41:46 oh 17:41:47 i seeee 17:42:15 -!- Sgeo has joined. 17:42:39 coool it works 17:42:47 it does? 17:42:48 fun 17:42:49 ehird, wha? 17:42:55 i didn't really test it :D 17:43:00 went to sleep 17:43:04 / coma 17:43:04 ehird, what works? 17:43:15 http://www.vjn.fi/pb/p611563426.txt 17:43:43 just ehird's python braces format thing parser the other way around 17:43:48 what a great explanation 17:43:55 "if x:{True}else:{while Foo:{print 'hi';2}}" 17:43:58 that's what it gave me 17:44:09 was that right? 17:44:11 yep 17:44:15 well, good 17:44:25 now I am going to rewrite the parser, and write deparser that's more stable 17:44:29 and call it 'bracism' :D 17:44:33 that was trivial to parse of course, it's the other way that requires anything 17:44:49 not that it requires *anything* still 17:45:17 hmm.... i went to sleep because no shops were open... and now they're soon closed again 17:45:37 why must others want to live when the sun is up :< 17:45:54 and why doesn't python have anything 17:46:23 no easy way to iterate in slices of three 17:48:25 oklopol: you keep runnign into pythons limitations 17:48:30 you should make Soup 17:48:31 Super Python 17:48:38 hehe 17:48:42 well i made oklotalk ;) 17:48:47 which is like Python, but has continuations and slicer thingies and okokokoko 17:48:51 although it's even more retarded currently, of course 17:48:52 and oklotalk isn't like python :p 17:49:14 well indeed, it's quite different 17:49:31 i mean, the program flow is different, it's similarly dynamic though. 17:49:58 python has quite little computational stuff built-in 17:50:02 oklopol: BUT YOU SHOULD MAKE SOUPPP 17:50:04 well... so does almost every language 17:50:10 Continuations should be implemented in Soup itself 17:50:19 and Soup just provides a first-class callstack 17:50:21 :D 17:50:21 which isn't nice for us who have a fear of importing modules. 17:50:26 hehe 17:50:26 And you can make MULTIPLE CALLSTACKS 17:50:34 CallStack.current() 17:50:35 BUT 17:50:36 well python has a viewable callstack 17:50:36 CallStack() 17:50:40 and then on a CallStack() 17:50:42 you can do 17:50:44 .switch() 17:50:50 so you can make your own magical callstack then switch to it! 17:50:53 sounds awesome 17:50:59 oklopol: but this would allow pushing and popping and slicing and assigning to elements 17:51:10 you could even make exceptions implemented in Soup 17:51:13 well it would be a list 17:51:28 just make a .throw() method that unwinds the CallStack.current 17:52:00 a global stack where you can push and pop return continuations with try and... leaving try's scope 17:52:02 oklopol: don't make it a list, because 1. it should be a linked list. why? because then continuations are free (no copying) 2. you need special things like .switch() 3. it shouldn't contain anything other than CallStackFrames 17:52:03 or soemthing 17:52:33 a list, in soup, is a conceptual list, you don't need to know what it is 17:52:49 oklopol: but CallStack has special methods that are not what lists have 17:52:55 well sure 17:52:58 & treating it as a list would be useless 17:53:02 oklopol: the better way 17:53:04 it's duck typing 17:53:06 is to have an interface-thingy 17:53:09 of Sequence 17:53:09 it can just have methods added 17:53:14 and make an Array which is a Sequence 17:53:20 and LinkedList which is too 17:53:28 and then CallStack which is a Sequence but not an Array or LinkedList 17:53:38 and you don't need to make Sequence concrete 17:53:51 well sequence is that i meant by list here 17:53:51 sequence is just having e.g. __index__(thing) 17:53:57 you see what i mean? 17:54:01 yes, i meant at 17:54:03 that 17:54:03 so CallStack shouldn't be a list 17:54:05 it shoudl just be indexable 17:54:08 which is obvious 17:54:12 you don't need to point THAT out 17:54:46 oklopol: anyway, Soup should have MAGIC MODULES 17:54:49 which e.g. change the syntax 17:54:49 so 17:54:51 'import braces' 17:54:54 will give you my syntax 17:54:55 :D 17:55:04 you gotta admit, SOUP IS AWESOME 17:55:05 yeah 17:55:10 now I want it too!! 17:55:13 :-) 17:55:13 let's implement it :q 17:55:21 import p 17:55:23 ... 17:55:25 import soup 17:55:30 import sexpee 17:55:39 (def hello () (print "hi")) 17:55:42 hello() + 3 17:55:45 MIXING SYNTAX 17:55:45 :D 17:55:59 oklopol: Soup should be implemented in Python, amirite 17:56:30 hoh, that sounds like fun 17:56:42 oklopol: yesss 17:57:00 oklopol: soup will require a lot of draft planning though 17:57:06 there will need to be a soup.Parser class 17:57:10 of which the default is just one :p 17:57:45 though YAGNI (You Aren't Gonna Need It) and Do The Simplest Thing That Could Possibly Work dictates that we should delay that feature until later 17:58:27 oklopol: :D 17:59:03 oklopol: name something else cool that python has and soup doesn't 18:00:45 oklopol: or don't 18:01:26 oklopol: don't say i need to okloping you! 18:02:06 @python def do(n):{r=[1];def f(r):return "".join([i and "1" or "0" for i in r]);def next(l):return {"111":0,"110":1,"101":1,"100":0,"011":1,"010":1,"001":1,"000":0}[f(l)];for i in xrange(n):{print f(r);r=[0,0]+r+[0];n=[];for i in xrange(1,len(r)-1):;n.append(next(r[i-1:i+2]));r=n}};do(10) 18:02:16 hmph 18:02:20 @python do(10) 18:02:20 NameError: name 'do' is not defined 18:02:21 oh 18:02:22 what 18:02:24 darn 18:02:25 @python useres.oklopol.do(10) 18:02:25 NameError: name 'useres' is not defined 18:02:27 @python users.oklopol.do(10) 18:02:28 KeyError: 'do' 18:02:28 wait 18:02:35 @python users 18:02:35 {'ehird': , 'oklopol': } 18:02:37 @python users.oklopol 18:02:37 18:02:39 hmm 18:02:40 @python users.oklopol['do'] 18:02:40 KeyError: 'do' 18:02:41 wtf 18:02:43 no it should work... 18:02:45 or hmm... 18:02:47 wait a sec 18:02:50 oklopol: seabot's python stuff is just borked 18:03:01 oklopol: oh, that's something else Soup should have! a Sandbox built in 18:03:11 oklopol: so that something like seabot can just be done by subclassing Sandbox 18:03:14 @python def do(n):{r=[1];def f(r):{return "".join([i and "1" or "0" for i in r])}def next(l):{return {"111":0,"110":1,"101":1,"100":0,"011":1,"010":1,"001":1,"000":0}[f(l)]}for i in xrange(n):{print f(r);r=[0,0]+r+[0];n=[];for i in xrange(1,len(r)-1):;n.append(next(r[i-1:i+2]));r=n}};do(10) 18:03:14 SyntaxError: invalid syntax (, line 11) 18:03:15 and specifying what you want to allow 18:03:17 yes? :D 18:03:31 sure 18:03:46 but hmm... 18:03:55 for i in xrange(1,len(r)-1):;n.append(next(r[i-1:i+2])) 18:03:57 your ; is the borkage 18:04:12 oh 18:04:25 ih 18:04:26 oaihgs 18:04:30 oklopol: now what about SOUP :D 18:04:32 tabs don't work. 18:04:38 that isn't python 18:04:41 it use brances 18:04:45 braces* 18:04:48 AnMaster: i added that so it can be used on one line 18:04:52 heh 18:04:56 @python def do(n):{r=[1];def f(r):{return "".join([i and "1" or "0" for i in r])}def next(l):{return {"111":0,"110":1,"101":1,"100":0,"011":1,"010":1,"001":1,"000":0}[f(l)]}for i in xrange(n):{print f(r);r=[0,0]+r+[0];n=[];for i in xrange(1,len(r)-1):;n.append(next(r[i-1:i+2]));r=n}};do(10) 18:04:56 SyntaxError: invalid syntax (, line 11) 18:05:00 :< 18:05:01 @python def do(n):{r=[1];def f(r):{return "".join([i and "1" or "0" for i in r])}def next(l):{return {"111":0,"110":1,"101":1,"100":0,"011":1,"010":1,"001":1,"000":0}[f(l)]}for i in xrange(n):{print f(r);r=[0,0]+r+[0];n=[];for i in xrange(1,len(r)-1):n.append(next(r[i-1:i+2]));r=n}};do(10) 18:05:01 hey 18:05:02 SyntaxError: invalid syntax (, line 15) 18:05:05 it didn't copy 18:05:06 fuck 18:05:34 @python def do(n):{r=[1];def f(r):{return "".join([i and "1" or "0" for i in r])}def next(l):{return {"111":0,"110":1,"101":1,"100":0,"011":1,"010":1,"001":1,"000":0}[f(l)]}for i in xrange(n):{print f(r);r=[0,0]+r+[0];n=[];for i in xrange(1,len(r)-1):{n.append(next(r[i-1:i+2]))}r=n}};do(10) 18:05:34 SyntaxError: invalid syntax (, line 16) 18:05:36 :D 18:05:40 aha 18:06:07 hm 18:06:11 16 is do(10) 18:06:22 @python def do(n):{r=[1];def f(r):{return "".join([i and "1" or "0" for i in r])}def next(l):{return {"111":0,"110":1,"101":1,"100":0,"011":1,"010":1,"001":1,"000":0}[f(l)]}for i in xrange(n):{print f(r);r=[0,0]+r+[0];n=[];for i in xrange(1,len(r)-1):{n.append(next(r[i-1:i+2]))}r=n}} 18:06:25 @python do(10) 18:06:25 1 18:06:26 11 18:06:26 111 18:06:26 1101 18:06:26 11111 18:06:26 110001 18:06:28 1110011 18:06:30 11010111 18:06:32 111111101 18:06:32 ah 18:06:33 tah-dah 18:06:34 1100000111 18:06:40 @python def do(n):{r=[1];def f(r):{return "".join([i and "1" or "0" for i in r])};def next(l):{return {"111":0,"110":1,"101":1,"100":0,"011":1,"010":1,"001":1,"000":0}[f(l)]};for i in xrange(n):{print f(r);r=[0,0]+r+[0];n=[];for i in xrange(1,len(r)-1):{n.append(next(r[i-1:i+2]))};r=n}};do(10) 18:06:41 SyntaxError: invalid syntax (, line 19) 18:06:44 no 18:06:46 the ;do(10) 18:06:48 messes it up 18:06:48 somehow 18:06:50 oh of course 18:06:52 of course! 18:06:53 oh. 18:06:55 compile 'single' 18:06:58 only supports ONE statement/expr 18:07:00 @python 10 PRINT "HELLO WORLD" 20 GOTO 10 18:07:00 SyntaxError: invalid syntax (, line 1) 18:07:08 oh. 18:07:12 @python while True: { print "HELLO WORLD" } 18:07:13 HELLO WORLD 18:07:13 HELLO WORLD 18:07:13 HELLO WORLD 18:07:13 HELLO WORLD 18:07:13 HELLO WORLD 18:07:13 -!- seabot has quit (Excess Flood). 18:07:17 lol 18:07:22 -!- seabot has joined. 18:07:29 you need rate limiting 18:07:44 well, in that case it wasn't exactly my fault, so i guess i can be at peace 18:08:00 I mean the bot need it 18:08:04 @python def PRINT(x): { print x } 18:08:31 @python class GOTOC: { def __getattr__(self, name): { globals()[name]() } } 18:08:36 @python GOTO = GOTOC() 18:08:39 @python GOTO 18:08:39 KeyError: '__repr__' 18:08:42 ouhc 18:08:45 @python def l0(): { PRINT("HELLO WORLD"); GOTO.l0 } 18:08:52 @python l0() 18:08:52 NameError: global name 'PRINT' is not defined 18:08:53 that makes my eyes hirt 18:08:55 hurt* 18:08:55 awwww 18:08:56 almost 18:08:56 :D 18:09:10 @python l0.__dict__['PRINT'] = PRINT 18:09:17 @python l0.func_globals['PRINT'] = PRINT 18:09:21 @python l0.func_globals['GOTO'] = GOTO 18:09:24 @python GOTO.l0 18:09:24 KeyError: 'l0' 18:09:27 whut 18:09:28 :( 18:09:30 @python globals() 18:09:30 {'__builtins__': {'IndexError': , 'all': , 'help': Type help() for interactive help, or help(object) for help about object., 'vars': , 'SyntaxError': , 'unicode': , 'UnicodeDecodeError': , 'isinstance': , 'copyright': Copyright (c) 2001-2006 Python Software Foundation 18:09:30 All Rights Reserved. 18:09:30 Copyright (c) 2000 BeOpen.com. 18:09:30 All Rights Reserved. 18:09:30 -!- seabot has quit (Excess Flood). 18:09:33 oh shi 18:09:34 :( 18:09:36 oh well 18:09:37 :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD 18:09:37 it was a nice idea 18:09:48 ehird, you still need rate limiting 18:09:52 AnMaster: i don't care. 18:09:56 on the send to irc 18:09:56 seabot is going to be rewritten 18:09:58 oklopol: IN SOUP RIGHT? 18:09:59 hm 18:10:09 what is SOUP? 18:10:13 Soup, actually 18:10:16 it means Super Python 18:10:24 one with braces? 18:10:31 it is the thing that OKLOPOL AND I ARE THINKING OF AWESOME FEATURES FOR 18:10:34 ISN'T THAT RIGHT OKLOPOL 18:10:47 SURE 18:11:25 now, about features... we both agree it should be *awesome*, right? 18:11:29 yes 18:11:40 okay, we should write this down. 18:12:00 i need to go buy me some onion rings, and make my fire alarm go FRIIIIIIIIIII 18:12:42 oklopol: yeah, i'll open a text file 18:12:43 but first.. 18:12:53 http://rafb.net/p/j7c2ZA16.html 18:15:12 lol 18:15:15 and one that doesn't overflow the stack: 18:15:16 http://rafb.net/p/XLdxub19.html 18:17:24 omg soup will rock 18:17:24 :D 18:17:46 actions in my python 18:17:52 first class actions 18:17:58 what has the world come to 18:18:05 did you see my last one? 18:18:08 it was a mini-interpreter 18:18:08 :D 18:18:09 i did 18:18:27 hehe yeah 18:18:35 oklopol: anyway I had another Soup idea 18:18:40 it should have pluggable GCs 18:18:45 you can subclass GC 18:18:49 then do something like 18:19:05 System.use_gc(MySubClass) 18:19:11 and it'll use that for all gcs 18:19:11 or 18:19:12 just 18:19:15 MySubClass.collect() 18:19:17 to use it once 18:19:41 oklopol: awesome? :D 18:19:53 yep 18:20:04 everything needs to be changeable at runtime 18:20:07 oklopol: no 18:20:09 that's oklotalk 18:20:13 :-) 18:20:14 hmm 18:20:17 Soup is just Python, but TOTALLY SUPER 18:20:24 should we have a special import, that does stuff only once 18:20:29 i mean, import can be executed anywhere 18:20:34 but if it changes syntax... 18:20:50 or changes gc, also a small ellipsis htere 18:20:52 *there 18:20:57 oklopol: well, 'import' won't be as clever as Python's 18:20:59 basically 18:21:02 hmm 18:21:06 basically, 18:21:07 yarr 18:21:13 no syntax will change the syntax of 'import' 18:21:22 so, at the start of interpreting, all the imports are scanned 18:21:28 and then the syntax is decided on that 18:21:35 yep yep 18:21:37 or... just make all imports appear at the beginning of the file 18:21:40 thats' simpler 18:21:43 and i've never used one elsewhere 18:21:43 yeah, better 18:21:52 but 18:22:01 probably it will just do it as a normal statement 18:22:08 i have, occasionally, when writing stuff in a cli where you cannot go back a line :-) 18:22:08 just the 'defined behaviour' is that 18:22:19 but that's a bit different 18:22:25 "oh, right, i need math" 18:22:53 well it could just not do anything if it tries something that doesn't work at runtime 18:23:07 oklopol: well, i think we should defer the custom syntax thing to later 18:23:15 otherwise our heads will hurt 18:23:15 perhaps, perhaps 18:23:16 :) 18:23:27 SHOP ME GO NOW REALLY GO GO -> 18:23:34 aww 18:23:37 be back :p 18:35:42 SUCCESS! 18:35:56 i need channel-specific caps lock 18:36:21 :D 18:37:41 i'm gonna berakfast now 18:37:46 *breakfast 18:38:00 after that, prolly oklotalk time.... :| 18:38:14 d'aww 18:38:15 what about 18:38:15 SOUP 18:38:16 so many features, so little time 18:38:22 you could like 18:38:25 start prototyping oklotalk 18:38:26 in SOUP 18:38:28 ! :D 18:38:31 Huh? 18:38:32 see? 18:38:33 what a great idea 18:38:34 :D 18:38:37 well oklotalk needs to work by wednesday 18:38:45 ok but you can do soup too :p 18:39:16 "so i created this language, and then another language, implemented the first one in python and the second in the first one" 18:39:54 sounds like something you din 2 days 18:39:57 *do inm 18:39:58 *in 18:40:05 oklopol: YOU CAN MULTITHREAD 18:40:05 :D 18:40:42 shuuuuure 18:40:42 :D 18:41:33 oklopol: but Soup is too awesome not to SOUPIFY 18:42:29 whhhhell 18:42:35 perhaps after thursdays 18:42:57 oklopol: bah :P 18:43:07 I'll just prod you questions about it, and thou shalt have no choice! mwahaha 18:43:23 :< 18:43:27 my only weakness 18:43:39 yes! 18:43:44 oklopol: your other weakness - pastebins 18:43:51 if i pastebin some code and describe it and ask somethinig 18:43:55 YOU SHALL HAVE NO CHOICE 18:43:55 mwahaha 18:44:00 :<< 18:44:02 -!- vixey has left (?). 18:55:04 -!- Corun has quit ("This computer has gone to sleep"). 18:56:59 -!- jix has quit (Nick collision from services.). 18:57:09 -!- jix has joined. 19:51:30 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)). 19:52:02 -!- Judofyr has joined. 19:55:02 -!- olsner has joined. 20:00:33 -!- oerjan has joined. 20:03:06 -!- Corun has joined. 20:09:43 * oerjan looks at some of the latest xkcd's and concludes that Munroe is probably now only doing stick figures out of tradition... 20:09:59 oerjan: well, no 20:10:06 if they weren't stick figures, it would lose the xkcd feel 20:10:16 well that's what i mean by tradition 20:10:31 well, i was kinda saying that it wasn't the 'ohh, its just how we've always done it' 20:10:36 more that it's an integral part of xkcd 20:12:18 * oerjan looks at some of the _first_ xkcd's and concludes it has always been that way, really 20:15:13 -!- Iskr has quit ("Leaving"). 20:15:45 the earliest ones had some non-stick-figures 20:16:25 i mean that he was always able to do better 20:16:57 SimonRC: link 20:17:28 in a mo... 20:20:06 there, not a stick figure: http://xkcd.com/1/ 20:20:54 hoh, it seems i've read all xkcd 20:21:01 when, wonders i 20:21:37 a long time ago in a ... wait, wrong webcomic 20:22:22 Oh, I forgot to check xkcd today 20:22:24 and freefall 20:22:44 http://xkcd.com/7/ http://xkcd.com/11/ http://xkcd.com/22/ http://xkcd.com/23/ http://xkcd.com/31/ That probably most of them 20:23:16 http://xkcd.com/26/ is the first really geeky one, I think... 20:23:55 oh, wait, that's BS 20:25:05 10 is the first one with geek culture 20:26:38 I discovered that one can see the latest Dr Who on the web: http://www.bbc.co.uk/doctorwho/s4/videos/ 20:26:41 legally too 20:27:06 heh the pi one is fun 20:27:17 but mathematically silly 20:27:55 aaaand the first joke to get a life of its own: http://xkcd.com/37/ 20:28:20 Incidentally, the first "My hobby", I think 20:28:20 well indeed, should be like in hex 20:28:28 and leet 20:28:32 speak 20:48:26 -!- sebbu has quit (No route to host). 21:03:36 -!- sebbu has joined. 21:11:53 -!- wildhalcyon has joined. 21:11:59 high 21:13:05 low 21:18:59 brow 21:19:05 beat 21:19:30 off 21:19:36 side 21:19:40 winder 21:19:54 Come on, no phrases start with "winder" :P 21:20:35 farms 21:20:40 * oerjan googled 21:22:05 hah 21:22:20 High low brow beat off 'side winder farms. 21:22:43 So... a low-brow person, on drugs, stimulated themself beside a wind farm 21:23:18 that's remarkable especially as i never expected it to be a sentence 21:24:13 -!- sekhmet_ has joined. 21:24:48 # Enemy lasagna / Robust below wax / Semiautomatic aqua / Accompany slacks / ... # 21:25:48 if you say so 21:25:55 http://video.google.com/videoplay?docid=7084489538066105747 21:25:58 -!- sekhmet has quit (Nick collision from services.). 21:26:02 -!- sekhmet_ has changed nick to sekhmet. 21:26:12 one of his odder ones 21:26:24 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)). 21:26:54 -!- Judofyr has joined. 21:26:57 # Word Disassociation # 21:26:57 # Word Disassociation # 21:26:59 # Word Disassociation # 21:27:27 SimonRC: You may stop flooding now 21:27:27 ;) 21:28:39 it is intersting to see which ones are pronounced differently in America 21:29:00 e.g. "Advertisement" 21:36:18 Ad-ver-TIES-ment :P 21:39:55 I was going to organise my ad-VER-tisments by colour-co-ordinating them. 21:40:39 i pronounce it as ADVERTISEMENTS, the press is on the entire word 21:40:46 *ADVERTISEMENT 21:41:08 OK, but is it -ize-ment or -izment? 21:41:32 it's so loud you can't tell. 21:41:47 So it's really just FG(UDS)GHF(ESW HF(SHF(*E&WYR(_A&F(AAAAAAAAAAAAAHG 21:41:53 quite. 21:54:40 -!- sekhmet has quit (Remote closed the connection). 21:54:44 -!- sekhmet has joined. 22:18:59 -!- jix has quit ("CommandQ"). 22:43:30 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)). 22:43:49 -!- Judofyr has joined. 22:53:56 a 22:54:32 http://www.youtube.com/watch?v=6cAs1YBELmA 22:54:36 hmm, geeky 22:54:44 waitamo... 22:55:06 do American houses really have the flag hanging on the wall indoors? 22:55:25 some 22:55:35 weird 22:55:36 depends on how patriotic/neurotic/insane the owner is 22:56:37 its not a huge deal 22:57:03 This guy is so blatently pre-uni 22:57:11 yeah 22:57:28 in his lyrics rather than just in appearance 23:06:53 hmm 23:07:07 a language where all variables are mutable, but cells, would be interesting 23:07:29 x -> 5; y -> x+2; // here y is 7 23:07:38 x -> y; // here y is ... 23:08:31 also, dictionaries are functions 23:08:34 and scopes are dictionaries 23:08:49 CurrentScope[#x] -> 5; is x -> 5; 23:10:00 war is peace! freedom is slavery! 23:10:25 oerjan: and scopes are functions 23:12:10 the problem is that "x = y" sets the two variables to be the same cell, whereas "x = y + 0" sets x to be a new cell which contains that value that y happened to have at that time. 23:12:43 also, wasn't there an esolang where every program gradually made every number integer to every other integer? 23:12:53 SimonRC: and that is wrong 23:13:01 x = y + 0 means that the value of 'x' is the value of 'y', plus 0 23:13:10 'here y is ...' meant 'here y loops forever' 23:13:23 ah, ok 23:13:35 (random note on the scope-function-dictionary thing: you could extend that by using {...} as dictionary syntax) 23:13:36 so 23:13:46 {X -> 2; Y -> 3} is like: 23:13:54 Foo[#X] -> 2; Foo[#Y] -> 3 23:13:54 -!- olsner has quit ("Leaving"). 23:13:58 except with Foo anonymous 23:14:00 :) 23:14:27 SimonRC: Forte 23:15:34 incidentally, here's BCT 23:15:34 BCT[{0,...},{_,....}] -> ....; 23:15:34 BCT[{1,X,...},{1,....}] -> {1,....,X}; 23:15:34 BCT[{1,X,...},{_,....}] -> ....; 23:15:50 (decided that if {} could be dictionaries it could damn well be lists too) 23:16:03 the ellipsis semantics are a bit vague though 23:17:09 you can replace the dots with underscores to make it ignored variable elements, too 23:17:09 -!- Corun has quit ("This computer has gone to sleep"). 23:17:10 Head[{X,___}] -> X; 23:17:10 Tail[{_,XS}] -> XS; 23:18:29 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)). 23:19:04 -!- Judofyr has joined. 23:19:47 http://esolangs.org/wiki/User:Tom_Duff 23:19:49 wow! 23:19:59 ChrisCunningham, Tom Duff... esolangs is famous :) 23:23:49 chris cunningham? 23:23:59 oerjan: inventor of the wiki 23:24:11 you know -- http://c2.com/cgi/wiki, the first wiki 23:24:14 circa 1995 23:24:28 oh that was the first? 23:24:54 * oerjan got up a director or something on google 23:25:12 chris cunningham is also a director who makes videos for people like Aphex Twin 23:25:18 but is not the same as the wiki one :) 23:25:35 err wait 23:25:37 crap 23:25:39 I meant Ward Cunningham 23:25:41 of course 23:25:41 :) 23:25:44 aha 23:25:52 Biota inventor 23:25:57 & wiki guy 23:26:09 Hmm 23:26:16 I swore I saw Ward CUnningham on the wiki as a user 23:26:35 Oh well then 23:26:37 Just Tom Duff. 23:26:39 Still pretty cool 23:26:47 AAAAAAAAAAAAAAAAAAAAAAAAAAAAA 23:26:55 lament: BBBBBBBBBBBBBBBBBBBBBBBBBB 23:27:01 looking at the tom duff page led me to http://esolangs.org/wiki/Image:Explor.gif 23:27:01 nah just a page 23:27:17 lament: that's great 23:27:18 my eyes hurt 23:27:32 god that's painful to look at 23:27:38 lament: squint your eyes when looking at it 23:27:42 your head will move to the left 23:27:43 automatically 23:27:50 wheeee 23:33:01 ehird: mine doesn't 23:33:08 mine does 23:33:09 :( 23:33:13 but my screen is very good 23:33:14 :P 23:35:38 * SimonRC praises Sun for the system of transistion from raw to parameterised types. 23:36:06 generics? 23:36:09 * SimonRC larts Sun for not having parameterised types in the first bloody place. 23:36:18 SimonRC: Generics are crap. 23:36:21 :) 23:36:26 better than nothing 23:36:35 they're definately not parameterised types 23:36:59 why are you using java 23:37:26 ehird: it is a type, it has parameters 23:37:38 lament: because the code is already written in it 23:37:39 lament: java can be used to write good code 23:37:48 you just have to be good at packing characters to avoid hideous verbosity 23:37:51 and avoid IDEs 23:38:02 lament: but as a language it isn't nice at all i agree 23:38:18 I'd have thought that me talking about adding parameters to types would be a give-away that old Java code was involved. 23:38:23 why would you avoid IDEs? 23:38:29 yes 23:38:39 lament: Java IDEs generate huge monstrosities of code. 23:38:55 how else am I going to maintain 120,000 lines of code containing repetitions that the language can't capture 23:39:16 well, define macros for it. but the way IDEs handle it is crap 23:39:28 c'mon, to break package cycles recently, I have to automatically extract about 40 interfaces 23:39:39 they encourage verbose, high-calorie 'empty-code' by making it easy 23:39:39 ehird: um, Java ... macros 23:39:44 ehird: yup 23:39:44 SimonRC: in your editor. 23:40:20 so I shouldn't use the IDE because it makes it easy to generate lots of code... 23:40:23 ehird: sorry? IDEs don't have to generate any code 23:40:30 ehird: why would an ide generate code? 23:40:31 ... but I should define editor macros to generate lots of code 23:40:37 SimonRC: when you can get the same effect for less code 23:40:56 i use an IDE (VS) all the time at work and it doesn't generate any code for me 23:41:06 anyway, I was mostly joking 23:41:15 our code is too big 23:41:48 there are several dimensions of functionality that we will probably never need again 23:41:51 -!- oerjan has quit ("Good night"). 23:41:53 but which add indirection 23:41:54 Java is evil 23:42:12 * lament loves IDE 23:42:28 anything which makes programming easier is good. 23:42:32 wildhalcyon: better than C++ 23:42:38 in this case at least 23:42:53 SimonRC: that's like saying, the spanish inquisition is better than the nazis. 23:43:03 SimonRC: I respectfully disagree. 23:43:18 wildhalcyon: ok, what advantage does C++ have? 23:43:42 It offers a more terse syntax than Java 23:43:48 wildhalcyon: Java is a below-mediocre language. Not an 'evil' one. 23:44:27 Java is what happens when take early-90s C++ and drag it half-way to Lisp 23:45:00 Here's the deal. Java and C++ are the two worst non-esolang languages I can think of. We're quibbling over the bottom of the heap. 23:45:07 stuff like GC, more type safety, exceptions with actual stack traces, etc 23:45:14 wildhalcyon: no, really 23:45:23 early Pascal sucks far more 23:45:41 operations couldn't be generic in array length 23:46:22 I've been reading too much smalltalk propaganda and have become disallusioned with type safety. GC is a nice java feature though. 23:46:36 wildhalcyon: Ruby is scads worse than Java could possibly be construed as being 23:46:46 RodgerTheGreat: ????????????????????????????? 23:47:10 wildhalcyon: in this case, by "type safety", I meant strong typing 23:47:13 Ruby is a festering boil of a language, seriously 23:47:46 oh yes, and Java has a guarantee that you fellow programmers will neither use pointers nor force their use upon you 23:48:07 RodgerTheGreat: explain 23:48:19 SimonRC, I interpreted "type safety" to mean static typing. 23:48:24 ok 23:48:31 well... 23:48:32 it's kinda silly to say java has no pointers when it has null pointer exceptions :) 23:48:57 a mere terminological difference 23:49:04 Ruby is a mishmash of disparate syntax styles. It is painful to look at, and the structure of the language is inconsistent. 23:49:09 static typing really helped when we were doing a recent major refactoring... 23:49:24 ... it found a whole class of bugs 23:49:27 RodgerTheGreat: but damn it lets you write code fast 23:50:01 there were about 100 instances of that bug, and unit tests took a few minutes to run each time, and caught one instance of it each time 23:50:29 SimonRC, what language was this in? 23:50:33 Java 23:50:38 Java has pointers, it just disallows most math on them and auto-dereferences them. You can think of it as always passing primitives by value and objects by reference, which, 95% (if not more) is what you actually want. 23:50:49 static types not only appear in the code right before your eyes, but Eclipse will give you a red squiggly line if you screw up 23:51:03 I see it as having nearly all the advantages of pointers without the hideous problems that haunt C++ programs 23:51:09 *can haunt 23:51:09 RodgerTheGreat: yes 23:51:12 SimonRC: IDEs are wonderful, yeah 23:51:28 but any compiler would have picked them up too 23:52:11 Slereah: link to that self-containing set pic? 23:52:11 * lament wants sane IDE support for haskell 23:52:11 I personally don't like IDEs because I find them extremely distracting and unhelpful, but their usefulness in the workplace is arguable. They're a *horrible* way to introduce someone to a language, though. 23:52:44 In an educational environment, (mainly introductory classes) IDEs should. not. be. used. 23:52:48 i'm not sure what's distracting about IDEs 23:52:53 Tab-completion rots your brain 23:53:02 RodgerTheGreat: Depends on the IDE 23:53:04 when I think "IDE" I generally think of Eclipse or similar 23:53:08 RodgerTheGreat: do you use tab-completion on IRC? 23:53:59 that doesn't have anything to do with coding. I'm not trying to learn the "#Esoteric API" 23:54:08 SimonRC, how did your IDE catch the type errors if Java implements static typing? 23:54:13 RodgerTheGreat: well, do you? 23:54:24 yes, and I stand by my statement that it rots your brain 23:54:29 wildhalcyon: um, by looking at the static types 23:54:35 There's tab completion on IRC? 23:54:35 RodgerTheGreat: does tab-completion on IRC rot your brain? 23:54:51 wildhalcyon: type R and press Tab. 23:54:53 SimonRC, how was it an error? 23:55:06 lament... BRILLIANT! 23:55:16 wildhalcyon: but beware - it will rot your brain. 23:55:17 Slereah: ping 23:55:21 wildhalcyon: I was putting one kind of thing in a list and taking another out 23:55:25 wildhalcyon: Hello! You must be new here. 23:55:26 lament, my brain has already been rotted 23:55:27 Welcome to IRC! 23:55:42 Please leave your brain at the door. 23:55:44 ehird, I don't use IRC much. Pretty much for #esoteric 23:55:58 when I upgraded from old-style lists (dynamic element type) to new-style lists (static element type) all those problems became obvious 23:56:00 -!- timotiis has quit ("leaving"). 23:57:57 We split one major concept in the program in two basically by chasing type errors 23:59:03 SimonRC, I'm still not convinced that static typing fixed your bug. I'll give it to you though. 2008-04-08: 00:00:01 it really depends on the situation I suppose 00:00:24 Maybe one can think of types like a suit of armour 00:01:25 many dynamic langs are a light armour: they don't protect you that much, but they don't restrict your movements 00:01:52 Depends on the language. As long as the language keeps you from doing something you shouldn't be doing with that type, then you're fine. 00:02:15 Java and friends are like those medieval suits of armour: very protective but bloody difficult to move in 00:03:27 and some languages are like powered armour... you don't know how anyone can even stand up in it, until you realise it's powered, and enables you to throw cars around and stuff 00:03:32 ... theoretically. 00:03:54 but it is still too much to wear when scouting about 00:04:08 I suppose so, yes. 00:04:16 anyway 00:04:23 enought with the bad analogies 00:05:01 Any good esolangs lately? 00:05:05 no 00:05:24 there is to some degree a trade-off between how soon the language stops you doing something and how much you must tell the compiler 00:05:48 ah, I realised... 00:06:45 Although I would not like to maintain this 120kloc program were it written in (e.g.) Python, were it written in (e.g.) Python it wouldn't be 120kloc long 00:07:40 Those sorts of trade offs are important to realize 00:26:53 SimonRC: that's the basic idea 01:04:10 -!- GregorR-L_ has joined. 01:14:23 1:14am is time to stop work and go home 01:17:07 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)). 01:17:42 -!- Judofyr has joined. 01:32:07 -!- ehird has quit ("This computer has gone to sleep"). 01:32:26 -!- GregorR-L_ has quit (Read error: 110 (Connection timed out)). 02:46:41 -!- adu has joined. 02:50:27 -!- wildhalcyon has left (?). 03:44:51 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)). 03:45:23 -!- Judofyr has joined. 03:55:13 -!- adu has left (?). 05:07:08 -!- Judofyr has quit (Remote closed the connection). 05:08:00 -!- Judofyr has joined. 05:10:07 -!- Sgeo has quit (Remote closed the connection). 06:43:28 -!- olsner has joined. 07:52:22 -!- GreaseMonkey has joined. 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:10:55 -!- Iskr has joined. 08:18:29 -!- olsner has quit ("Leaving"). 08:35:14 -!- GregorR-L has joined. 08:37:00 OK, I'm trying to make a mini instruction set that: 1) is (Turing) complete within the bounds of bounded storage, 2) requires no self-modifying code, 3) doesn't have any ridiculously over-purposed operations. 08:37:24 Each instruction is one byte, and it does only 8-bit math, although it can load/store 16-bit addresses. 08:37:28 http://www.pastebin.ca/976538 08:37:32 It has 14 instructions. 08:37:42 Seems like a bit much :( 08:39:31 $1, $1, $2 and $r 08:39:37 $0 08:39:38 Erm 08:39:39 Heh 08:39:46 Yeah, that should clearly be $0, $1, $2 and $r :P 08:39:52 MY WORK HERE IS DONE 08:39:54 -> 08:40:01 <- 08:40:06 It also occurs to me that there's no reason for 'sub' not to take registers. 08:40:06 or not 08:40:37 i'm feeling a bit overall-confused, been implementing oklotalk a bit too much 08:40:57 it's fairly retarded still :< 08:41:37 http://www.pastebin.ca/976544 // w/ fixes 08:41:55 Overall-confused = not sure how to wear overalls. 08:42:07 exactly 08:42:21 thought that might be a bad way to say it, but glad you got it 08:42:43 0000aaxx load $a load into register a from address in $0$1 what does $0$1 mean 08:42:46 just too hard 08:43:19 hmm, *perhaps* it has to do with the registers $0 and $1. 08:43:21 Hm, I meant for $0$1 to be a 16-bit address, with register $0 being the high bits and $1 being the low bits. 08:43:37 yarrrr 08:43:51 why xx? 08:44:02 ignored? 08:45:21 Yeah, I'm explaining that now (in the pseudo-spec) 08:45:53 Heh, I was just thinking about whether MiniISA was little- or big-endian. Forgot that it's only 8-bit X-P 08:46:29 i would've suggested middle-endian 08:46:34 http://www.pastebin.ca/976548 08:47:39 now be sure to put easter eggs for certain choices of _'s 08:47:50 Heh :P 09:02:18 [obvious] $2 should be the stack pointer. 09:02:56 i'd hate to see rear-endian. 09:11:47 -!- GregorR-L has quit ("Leaving"). 09:15:46 -!- lifthrasiir has joined. 09:41:21 -!- Corun has joined. 10:29:11 -!- GreaseMonkey has quit ("Read error: 110 (Connection chickened out)"). 11:32:41 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)). 11:32:49 -!- Judofyr has joined. 12:59:17 -!- Corun has quit ("This computer has gone to sleep"). 13:07:09 -!- Sgeo has joined. 14:18:44 -!- jix has joined. 14:27:47 -!- Sgeo has quit (Remote closed the connection). 15:01:44 -!- oklopol has quit (Read error: 113 (No route to host)). 15:11:23 -!- Corun has joined. 15:23:01 -!- Corun has quit ("This computer has gone to sleep"). 15:29:23 -!- Corun has joined. 15:42:11 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)). 15:42:29 -!- bsmntbombdood has quit (Read error: 110 (Connection timed out)). 15:42:48 -!- Judofyr has joined. 15:43:16 -!- bsmntbombdood has joined. 15:48:11 -!- RedDak has joined. 16:04:18 -!- Corun has quit ("This computer has gone to sleep"). 16:13:43 -!- RedDak has quit (Remote closed the connection). 16:13:54 -!- ehird has joined. 16:14:20 qwerty-5 = identity 17:11:10 -!- Tritonio_ has joined. 17:45:46 tom duff facts 17:45:47 ------- 17:45:56 Tom Duff can unroll a loop WITH HIS MIND. 17:50:39 Who is this Tom Duck? 17:51:31 of Duck's Device fame 17:51:46 Duck's Device 17:51:46 XD 17:51:55 Slereah: can i have a link to your self-containing set picture? 17:51:59 i want to put it on elliotthird.org 17:55:06 Slereah: plz? :( 17:57:04 http://membres.lycos.fr/bewulf/Divers2/Set.jpg 17:57:23 yaey 17:57:24 :D 17:57:43 permission to use it on elliotthird.org? 17:58:04 Well, I'll have to ask Jack Thomas Chick for the use of his sandwich chef famous picture. 17:58:11 bah 17:58:12 :) 17:58:13 But I personally give you my permission. 17:58:31 http://elliotthird.org/ looks pretty now! 17:58:34 thank you :D 17:58:48 i'll credit you in the comments 17:58:48 heh 17:59:15 http://images.encyclopediadramatica.com/images/8/89/Sandwich-orig.png 17:59:19 yeah 17:59:19 Ah that Chick. 17:59:29 He just knows how to convert us heathens. 18:00:38 The very name of his website seeks to attrack them! 18:04:43 http://membres.lycos.fr/bewulf/Russell/noyoucanthaveaneuralnetwork.jpg 18:06:54 GregorR: That instruction set would be rather slow: branch prediction is too tough for it 18:07:03 I also have a pix of a topless Alan Turing with a topless Snow White. 18:07:36 ah, the apple 18:07:53 Indeed. 18:08:00 ALAN TURING PR0N 18:08:02 I mean what 18:08:06 I used that picture on a thread of a /34/ board 18:08:13 Asking for 34 on Alan Turing. 18:08:17 where (dare I ask)? 18:08:18 so far, no results. 18:08:23 Slereah: hah 18:08:25 ok 18:08:36 http://rule35.paheal.net/rule35/res/2.html#2 18:08:44 SimonRC: well hey, there's only about 5 million *chans 18:08:47 shouldn't take too long to find ;) 18:08:57 In the post 792 18:09:05 You'd be surprised! 18:09:15 Cmd-F 18:09:15 http://rule35.paheal.net/rule35/src/12071557881.jpg 18:09:21 that was not hard 18:09:30 but i must go bleach my brain now 18:09:31 byeby 18:09:31 ehird : That's the pix I posted 18:09:31 e 18:09:44 yes 18:10:25 I even got the "obscura-GET" files, and could find no Turing in it D: 18:10:49 And it's like a few gigabytes hueg. 18:11:40 you know what sucks 18:11:41 Why am I discussing this. 18:11:44 I forgot. 18:11:50 lament: snow white when near alan turing? 18:11:52 when you're at work and want to play music and you can't cause you're at work 18:11:55 OH SNAP 18:12:03 Ah yes, ehird going through my files :D 18:12:04 wait that's turing? nice 18:12:32 hehehe: http://youtube.com/watch?v=Z0Pd19bt1NI 18:12:33 ehird : Turing was more of a Prince Charming kind of guy. 18:12:43 Slereah: or the gay kind of guy 18:13:05 -!- ineiros has joined. 18:13:41 -!- calamari has joined. 18:13:41 Yes. 18:13:48 He desired head from Prince Charming. 18:14:28 oic. irc sucks at linear conversations 18:15:33 http://membres.lycos.fr/bewulf/Russell/Weil.jpg 18:15:34 heh. 18:16:16 they look nothing alike. One is wearing glasses and the other isn't. 18:16:40 I dunno. I got the impression when I saw Weil for the first time. 18:18:14 http://membres.lycos.fr/bewulf/Russell/Ada2.jpg <- I have this above my bed. 18:18:23 And I also don't know how to take photos. 18:18:43 you have a weird ceiling 18:19:02 it lukes lake a worl 18:19:14 Well, it's more of a wall than a ceiling. 18:19:37 um, yeah 18:19:47 why did I think 'twere a ceiling? 18:19:53 But it is placed in a lesser gravitational potential than my bed. 18:20:01 Because I said "above my bed", maybe. 18:20:12 ok 18:20:17 ... 18:20:24 I wonder if there's /34/ of Lovelace. 18:20:31 Probably 18:20:34 After all, she is the hottest nerd in history. 18:20:40 dunno 18:20:59 I think Samantha Carter beats her for a start 18:21:24 but is OTOH fictional 18:22:34 She looked less pretty a few years later : http://www-history.mcs.st-andrews.ac.uk/BigPictures/Lovelace_3.jpeg 18:22:39 Cancer does that to you. 18:24:18 Why do I have a pdf in Nepalese? 18:25:39 Random idea: There should be a *chan with a board with one rule: You may only post screenshots of that board 18:25:50 After a while the recursion would just hurt your eyes. 18:26:23 infinitecat is better. 18:28:13 Plus, unless you allow infinite definition, it will just be the same at one point. 18:28:41 Slereah: Well, no, since it'll start out empty (0) 18:28:48 and then every post will add one level of recursion 18:29:07 Very soon it will reach the point where the base recursion level is less than one pixel, thus being basically equivalent to infinite recursion as far as bitmaps are concerned 18:29:37 Hell, even at one pixel, can you still call that a screenshot? 18:29:45 Or even 10x10! 18:29:47 but the page will render differently in differnt browsers 18:30:02 That's not a whole lot of difference. 18:30:08 so you will get to see several differn titlebars, fonts, etc 18:30:09 The concept can't go on for very long! 18:30:28 It's more thread material than board. 18:30:34 maybe they should broaden the idea of "screenshot"? 18:31:05 no, that's not what i'm saying 18:31:07 i am saying, Slereah 18:31:15 that the last point of recursion in an image 18:31:18 bah 18:31:21 hard to explain 18:31:28 its an obvious idea but you need to see it to work 18:32:44 Create that board on Elliotthemagicdragon.com 18:33:18 heh 18:33:42 a friend owns http://cillit-bang.org.uk/ 18:33:50 i've been considering putting silly stuff like that on there for a while 18:33:54 (see also: http://cillit-bang.org.uk/esure, http://cillit-bang.org.uk/rr) 18:35:18 Is it to kill epileptics? 18:35:43 Slereah: No, it's just silly. 18:35:45 :D 18:35:51 that seems to be rather ytmndy.... 18:35:54 the /rr has to be the funniest 18:35:56 SimonRC: yeah, quite 18:36:25 why not just "cillit-bang.ytmnd.com"? 18:37:49 Because if he spends money registering the domain, it's money that won't go to the poor! 18:38:21 SimonRC: or- why? 18:42:09 faxathisia: you are reddit-famous.. well, reddit-comment famous 18:42:10 http://reddit.com/r/programming/info/6ezur/comments/c03nscd 18:45:22 Can you sign my breast fax? 18:48:38 heh 18:48:53 hmm, it seems that Emacs/SLIME does not support you when editing FORMAT strings 18:48:59 it just treats them as plain strings 18:49:00 that sucks 18:49:15 i need parentheses matching, syntax highlighting, and information at the bottom of FORMAT strings, they're so cryptic :p 18:50:16 Project of the now : do some pseudocode-Lazy Bird translator 18:56:48 -!- jix has quit (Nick collision from services.). 18:56:58 -!- jix has joined. 19:09:27 -!- ehird_ has joined. 19:12:13 whoa 19:12:14 who is that 19:12:23 ehird_: who are you?! 19:12:47 eh 19:13:12 ehird: well, it is on your machine, whoever it is 19:13:16 yeah 19:13:20 hmm, crap, i don't own ehird_ 19:13:39 find the offending process and kill it? 19:13:44 SimonRC: none on my machine 19:13:46 must be on the other one 19:17:56 is lament an op here? 19:18:09 if so, could you kick ehird_? it'll just be using up bandwidth otherwise 19:19:21 but how do i know which one of you is the real you? 19:19:35 i am talking 19:19:42 and we both have the same ip 19:19:46 well, maybe that's because you tied the real ehird up. 19:19:46 ergo, that one is a ghost 19:19:55 oh just kick it :p 19:20:11 ehird: you should register your alternate nicks 19:20:16 so you can ghost them if necessary 19:20:20 bit late for that 19:21:57 lament: it's disortienting seeing ehird and ehird_ next to each other! :p 19:22:20 i agree. It's extremely discomforting. 19:22:27 haha 19:22:55 (almost like staring at http://esolangs.org/wiki/Image:Explor.gif ) 19:23:53 i could pingflood that ehird_ i guess 19:24:07 aha 19:24:09 it is a ghost 19:24:37 It's an evil twin. 19:24:45 The _ is actually a goatee. 19:25:18 -!- oerjan has joined. 19:25:35 ehird: routing the pings through microsoft :) 19:25:52 hah 19:29:41 -!- ehird_ has quit (Read error: 113 (No route to host)). 19:38:18 -!- olsner has joined. 19:49:02 -!- Iskr has quit ("Leaving"). 20:31:40 -!- olsner has quit (Read error: 110 (Connection timed out)). 20:31:42 -!- olsner_ has joined. 20:35:43 -!- Slereah has quit. 20:36:49 -!- Nobody-3C6149 has joined. 20:38:07 How to do a loop within a loop in SKI, such that the inner loop will actually end for another iteration of the outer loop? 20:38:11 -!- Nobody-3C6149 has changed nick to Slereah. 20:38:37 For just one loop, I just use the unlambda's v to stop it, but beyond that, I'm not too sure of how to go. 20:38:55 use continuations? 20:39:02 oh wait that's not ski 20:39:06 Lazy Bird no has it3 20:39:47 well you use recursion to do loops of all kinds really 20:40:34 Is it possible to do them all with just one recursion? 20:41:05 i don't quite understand why you don't just write the inner loop by itself? 20:41:51 then use the resulting function inside the outer loop 20:41:53 Well, the problem is the output. 20:42:46 well it should take a parameter of course 20:42:55 even if just a dummy 20:43:06 Since recursion will basically fo f(x) f(f(x)) f(f(f(x))) ..., I don't know how to stop it so that the outside loop can handle the result. 20:43:33 with a conditional 20:43:49 But how to stop a recursion without v 20:43:50 ? 20:44:13 It might stop changing, but not being evaluated in the ways that I know of. 20:44:27 -!- Sgeo[College] has joined. 20:44:48 * SimonRC goes away from here 20:45:07 Hi all 20:45:12 Hello sir. 20:45:32 So, did you do sum book lurnin Sgeo[College]? 20:47:08 argh 20:47:11 http://mibbit.com/pb/BqKoed 20:47:33 -!- oerjan has quit ("Brain locked up"). 20:48:08 "What this feature does, is look for any image URLs in the chat. (jpg/jpeg/png/gif). When it finds one, it generates a nice little thumbnail and puts it in the chat, makes it clickable to the original." 20:48:17 Oh, that's nice and work-safe 20:49:30 irl quine! 20:49:31 http://hardware.slashdot.org/article.pl?sid=08/04/07/210205 20:51:06 Heh. 20:51:16 What if it CONVERTS THE WHOLE EARTH TO PRINTERS? 20:56:24 Sgeo[College]: because EVERYONE uses irc channels that have nsfw links in 20:56:29 totally 20:57:06 All irc channels have nsfw links in them, ehird. 20:57:25 It just requires one member of the upstanding GNAA :o 20:58:08 like this? http://www.nsfwlinks.com/ 21:00:21 You call that NSFW? 21:01:07 http://images.encyclopediadramatica.com/images/thumb/8/8d/Gruesome_small.gif/170px-Gruesome_small.gif 21:02:51 * Sgeo[College] disabled the thumbnails 21:11:46 -!- Sgeo[College] has quit ("http://www.mibbit.com ajax IRC Client"). 21:29:28 is CSS turing complete? 21:30:16 can you simulate a box of apples and a piece of string with CSS? 21:32:53 hm never tried 21:34:21 AnMaster: of course it isn't 21:34:28 you can't loop, include, anything 21:34:30 it is just 21:34:33 selector { key: prop; ... } 21:34:40 hm 21:34:42 well. 21:34:45 maybe with @import 21:34:53 but i imagine if you @import itself it'll just infiniloop 21:35:09 or most likely be ignored 21:35:35 CSS? 21:50:02 Slereah: thing that dun make webpaeg pretti 22:15:10 I IS SEEIN 22:44:49 -!- olsner_ has quit ("Leaving"). 23:01:58 -!- Tritonio_ has quit (Read error: 104 (Connection reset by peer)). 23:05:30 -!- Corun has joined. 23:06:15 wowzers 23:06:20 this format will be hard to parse 23:06:35 i hate humanized syntaxes 23:06:35 :D 23:08:25 Dehumanize it. 23:08:28 Put it in a camp. 23:08:32 And genocide it. 2008-04-09: 00:06:05 -!- Corun has quit (Connection timed out). 00:16:45 -!- jix has quit ("CommandQ"). 00:45:50 wow 00:46:00 i reinvent monadic parser combinators on a regular basis 00:51:08 and get kicked out of #python 00:51:10 :P 01:06:25 -!- Sgeo has joined. 01:13:06 -!- Tritonio_ has joined. 01:14:21 -!- ehird has quit ("This computer has gone to sleep"). 05:27:24 I've been reading up on porting gcc.. amazingly complicated.. almost esoteric you might say 05:27:54 Well, yeah. What do you think the RTL is besides an esolang? :p 05:30:26 do you know RTL? 05:30:48 Nope. 05:31:01 I've seen some examples stepped through, and Jebus. 05:31:23 I've been looking in vain for something as simple as a list of the instructions gcc expects me to implement.. seems like a reasonable request.. but it seems to bne nonexistent 06:06:27 -!- adu has joined. 06:24:31 -!- adu has left (?). 06:48:26 -!- Tritonio__ has joined. 06:50:41 -!- Tritonio_ has quit (Read error: 110 (Connection timed out)). 07:25:29 -!- olsner has joined. 07:30:56 -!- Sgeo has quit (Remote closed the connection). 07:42:47 -!- calamari has quit ("Leaving"). 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:19:06 -!- Iskr has joined. 08:36:32 hah 09:18:53 -!- GreaseMonkey has joined. 09:21:27 -!- Corun has joined. 09:23:29 -!- cmeme has quit (Read error: 104 (Connection reset by peer)). 09:27:19 -!- cmeme has joined. 09:48:02 -!- immibis has joined. 10:02:27 -!- immibis has quit ("Hi Im a qit msg virus. Pls rplce ur old qit msg wit tis 1 & hlp me tk ovr th wrld of IRC. and dlte ur files. and email ths to). 10:05:27 -!- Corun has quit ("This computer has gone to sleep"). 10:06:05 -!- Corun has joined. 10:39:03 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)). 10:40:11 -!- Judofyr has joined. 10:42:53 -!- GreaseMonkey has quit ("gnight"). 10:59:30 Deewiant, to tell the truth your O in CPLI looks completely messed up 11:03:34 ah now I see how it works 11:14:22 what's so messed up about it, looks pretty straightforward to me :-P 11:14:26 Deewiant, FYI this crashes CCBI with SIGFPE: "ILPC"4(nD@ 11:15:15 it'd crash RC/Funge-98 too, so I guess that's fair? 11:15:17 :-P 11:15:26 Deewiant, it won't crash last version of cfunge 11:15:45 last revision that is, last release lacks the fingerprint in question 11:18:27 I guess I should do a sweep of the fingerprints and make all division instructions push zero on division by zero 11:51:28 Deewiant, not for floating point iirc 11:51:42 they would push NaN or similar 11:51:58 of course not 11:52:03 they'd push infinity or NaN 11:52:23 there is nothing for complex floating point is there? 11:52:28 no fingerprint I mean 11:52:38 nope 11:52:55 because complex integer is quite easy to do by hand in funge 11:53:02 compared to complex floating point 11:53:31 apart from the sqrt operation 11:53:34 well yes 11:53:42 but FIXP provides that iirc 11:54:17 yep 11:54:33 I may make such a fingerprint later, hmm.... 11:54:56 would same layout as FPDP be sane? 11:54:58 but once you have floating point, making complex floating point is easy too? 11:55:10 hm yeah it probably is 11:55:23 except for some stuff 11:55:32 possibly 11:55:51 it's the same as CPLI, just using floating point instead? 11:56:10 with the bonus that the FP*P provide sqrt 11:56:35 well, would need some more, I don't know English word, but CPLI is missing any way to represent it as "polär form" 11:57:10 as in re^(iv) 11:57:29 well sure, translations between polar and cartesian form 11:57:47 but they'd be pretty easy too 11:57:55 since FP*P provide trigonometric functions 11:58:44 and I would hate trying to write de Moivres formula (is that the English name for it?) in funge 11:59:44 why would you want to? its only relevance is in making exponentiation in polar form easier, you can do that in the math easily 11:59:53 hm 11:59:57 true 12:12:33 -!- Corun has quit ("This computer has gone to sleep"). 12:17:29 Deewiant, what about cosh? 12:19:20 (exp(x) + exp(-x)) / 2 12:19:51 ok, was just looking at man complex.h for anything that would be hard to do 12:19:58 :-P 12:20:07 double complex cproj(double complex); 12:20:11 * AnMaster wonders what that is 12:20:22 cproj, cprojf, cprojl - project into Riemann Sphere 12:20:24 huh? 12:21:09 Deewiant, any clue what that is and/or what it is good for 12:22:09 "These functions shall compute a projection of z onto the Riemann sphere: z projects to z, except that all complex infinities (even those with one infinite part and one NaN part) project to positive infinity on the real axis." 12:22:33 yeah and that I basically don't understand 12:22:38 ie, went over my head 12:22:56 it's identity unless you have a complex infinity, which becomes +infinity 12:23:09 ah 12:23:12 right then I get it 12:23:27 -!- ihope has joined. 12:34:59 Deewiant, what is the IP.DORMANT mode thing? 12:35:30 ? 12:35:46 what exactly does it do 12:35:46 sounds like TRDS or that other one (IIPC?) 12:35:49 IIPC 12:35:50 where is it? 12:36:01 IIPC, line 34 12:36:15 I'm wondering what exactly dormant means here 12:36:17 you can see it all in the main function 12:36:24 or in the spec :-P 12:36:35 D ( -- ) Go Dormant until stack is manipulated by another ip 12:36:36 heah 12:36:37 yeah* 12:36:45 still doesn't say what dormant means 12:37:22 Deewiant, what main function?+ 12:37:26 s/+// 12:37:30 the main function 12:37:38 int main(char[][] args) and all that 12:37:39 :-P 12:37:43 and what file is it in? 12:37:54 ccbi.d, where else 12:38:00 mhm ok 12:38:09 no, it's in fingerprints/cats_eye/null_.d ;-P 12:38:26 and isn't that clear? i.e. IP is dormant until its stack is manipulated 12:38:46 dormant == delta set to 0? 12:39:20 Deewiant, also, what is case State.UNCHANGING: break; for 12:39:34 is it so that if ip doesn't move the instruction it is on isn't executed? 12:39:34 that wouldn't work as it would keep running the D over and over? 12:39:39 although I guess that wouldn't matter 12:39:50 AnMaster: state.unchanging means that the state isn't changing 12:39:51 :-P 12:40:05 state in this case means position? 12:40:19 no, it means the state 12:40:22 whatever there is 12:40:26 something for TRDS 12:40:27 one for @ 12:40:28 aha 12:40:30 one for q IIRC 12:40:53 no need for state without TRDS I guess 12:41:13 Deewiant, is the ip mode an enum or something, I can't find where you declare possible modes 12:41:55 in ip.d probably 12:42:03 * AnMaster looks again 12:42:09 grep State... 12:42:26 err mode 12:42:30 not state 12:42:40 ah, mode 12:42:48 that's in ip.d 12:43:06 the fact that they're accessed by IP.modename is a giveaway... 12:43:34 cell[128] mapping = void; // for IMAP 12:43:38 is that really right? 12:43:51 what would be wrong? 12:43:57 can IMAP only map for cell values in the first 128? 12:44:16 can't you may say 220 to be same as k 12:44:26 that's the way RC/Funge-98 implements it 12:44:35 that doesn't mean it is correct 12:44:48 that's the reference implementation 12:44:50 it's his spec 12:45:01 we can only assume that the reference implementation is valid 12:45:05 well I looked at the actual specs... 12:45:12 which means that anything beyond 127 is undefined 12:45:15 Deewiant, you assumed that TRDS one was wrong 12:45:23 some comment says that iirc 12:45:36 where the spec says something, the spec is right 12:45:44 where the spec doesn't, the implementation is right 12:45:48 hm 12:46:09 and if the spec contradicts the funge-98 spec then it's all crap, like FING :-P 12:46:20 FNGR not FING iirc 12:46:25 whatever 12:47:09 and well "3DSP" whatever it is, defines C as the Cross porduct 12:47:13 in his specs 12:47:17 porduct? 12:47:21 poorduct? 12:47:25 ;P 12:47:55 oh I see you don't implement 3DSP 12:50:06 Deewiant, ? 12:50:58 nah 12:51:30 how comes? 12:52:01 can't remember 12:56:06 tc x, y; 12:56:06 static assert (is(typeof(x) == typeof(y))); 12:56:08 hum 12:56:13 Deewiant, why whould they differ? 12:57:02 if I ever change it, who knows 13:02:43 Deewiant, yes... but x and y would still be same right? 13:03:04 unless I do int x; short y; 13:03:45 mhm 13:03:59 * AnMaster still thinks that would be insane and very hard mistake to do 13:04:12 sure, but I'm not going to go removing it now that I've written it :-P 13:04:24 I admit I probably wouldn't write it now, if I had to rewrite that 13:04:26 true, just wondering why you wrote it 13:04:31 beats me 13:04:51 TURT looks quite complex hm 13:06:00 in HRTI, is the ctor thing executed when HRTI is first loaded? 13:06:04 or when program starts? 13:06:11 when loaded 13:06:14 ah ok 13:06:46 that's what all fingerprintCon/Destructors do - constructor called when loaded, destructor when unloaded 13:13:19 so it is called *every* time that HRTI is loaded? 13:13:30 ah right you check for that 13:13:32 if (resolution == TimeSpan.zero) { 13:15:37 Deewiant, this is confusing: auto timeMark = Time.min; 13:15:42 what type is it really 13:15:56 a timestamp? 13:16:11 of what kind then 13:16:14 I don't know 13:16:17 it's up to the library 13:16:21 mhm 13:16:46 it's changed at least twice in the time that CCBI has existed and I'm not sure what it is nowadays ;-) 13:16:49 probably Time 13:16:59 which is nowadays, IIRC, a long 13:18:09 hm your timer got an issue, it does not handle something changing system time I think 13:18:17 say ntp or similar 13:18:48 it uses UTC time, no? 13:19:08 well yes, but that isn't what I meant 13:19:22 I meant, what if the clock is slightly wrong and is then synced 13:19:31 by ntp or similiar software 13:19:33 can't be helped 13:19:36 how could that be handled? 13:19:38 hmmmm 13:19:52 exactly ;-) 13:19:52 oh and I'm not sure it handles leap seconds btw 13:20:01 Deewiant, there *may* be ways 13:20:09 not portable though I think 13:20:13 sigh 13:20:15 how would leap seconds be problematic 13:20:28 the time span should be the same 13:20:37 hm it would? 13:20:47 why not? 13:21:06 whether it's 23:59:60 or 00:00:00 one second after 23:59:59, it's still one second after 23:59:59 13:21:21 I thought the clock in computers simply changed jumped backwards, instead of actually hitting the :60 13:21:32 then it's the computer's fault :-P 13:21:41 but I'm not sure 13:21:53 Deewiant, anyway mycology fails at leap seconds I suspect? 13:22:00 how? 13:22:07 it got a case to print it out? 13:22:14 it just prints out what it gets 13:22:17 as it couldn't handle the hours 13:22:24 * AnMaster points to bug he found 13:22:29 that was a bug 13:22:34 overlapping code 13:22:35 or something 13:22:37 ah 13:23:05 but yeh, if you tell it that it's 100:666:42 in the year 1234 now then that's what it'll print 13:23:27 or if it doesn't, it's a bug 13:23:52 there should be a fingerprint to print the stardate ;) 13:25:50 Deewiant, what happens to the timer mark across split? 13:26:03 the standard doesn't say 13:27:00 split? 13:27:09 t, you mean? 13:27:13 yeah 13:27:39 in CCBI fingerprints aren't kept across t so it doesn't matter? 13:28:01 hm but the mark is kept across fingerprint unloading for HRTI it seems 13:28:35 I'd say you should never expect stuff to keep working between loading/unloading 13:28:49 well REFC probably should... 13:28:56 I don't think you should 13:29:00 hm 13:29:08 in fact, clearing that at unload might be a good idea 13:29:17 indeed 13:29:36 although hmm 13:29:41 I won't clear it though but I will not copy across t 13:29:52 I have some handling in MODE for leaving modes on after unloading 13:29:54 (I do copy loaded fingerprints) 13:32:53 do resolution = Clock.now() - time; 13:32:53 while (resolution == TimeSpan.zero); 13:32:59 how does that work 13:33:11 ie, I don't get how it can work 13:33:47 why not 13:34:04 err? 13:34:10 what don't you get? 13:34:48 hm does D do some magic to make TimeSpan.zero compare equal to a small number as well as 0? 13:34:58 no? 13:35:14 huh then 13:35:24 what's wrong? 13:35:34 why the loop then.? 13:35:49 because we want nonzero? 13:35:58 hmmm 13:36:09 Deewiant, what result does that give for you? 13:36:18 varies run by run 13:36:26 average? 13:36:29 can't remember 13:36:32 check the myco results table 13:37:36 -!- ihope has quit ("ChatZilla 0.9.81 [Firefox 2.0.0.13/2008031114]"). 13:38:12 Deewiant, it isn't test in the main mycology? 13:38:34 it's in the HRTI test of course? 13:38:41 ah found it 13:38:45 grep ++ 13:39:08 Deewiant, it says "UNDEF: G gives clock granularity as 2 microseconds" every time here 13:39:23 great 13:39:30 hm now it said 1 once 13:40:13 Deewiant, "UNDEF: G gives clock granularity as 31250 microseconds" from your table heh 13:40:22 what kind of system was that 13:40:22 yep 13:40:27 my windows system 13:40:36 hm is it better on linux for you 13:40:40 haven't tried 13:41:04 Deewiant, would be nice to know, also if your linux system got HPET or not 13:41:21 because if it doesn't and it get worse result I would guess HPET causes the high resolution here :) 13:41:32 I would guess that too 13:41:36 I'll try it later today 13:41:40 thanks 13:47:07 oneSecond = TimeSpan.seconds(1).ticks, 13:47:08 oneMicro = TimeSpan.micros (1).ticks; 13:47:21 Deewiant, I don't get logic? 13:48:21 oh right you don't know what units timespan is 13:48:34 I could hard code it as gettimeofday says it clearly 13:49:43 Deewiant, why just micro seconds, it seems it is possible to get nano seconds on linux at least :) 13:49:58 because the HRTI spec says microseconds 13:50:06 yeah it is a pitty 13:52:37 CLOCK_MONOTONIC 13:52:38 Clock that cannot be set and represents monotonic time since some unspecified starting point. 13:52:48 Deewiant, for clock_gettime, that provides nano seconds 13:52:58 means it solve the time changed issue 13:53:00 school computer (Linux 2.6.20-16) gives HRTI granularity as 1 13:53:47 ok 13:53:51 nice :) 13:54:03 Deewiant, not that the result of S is that deterministic heh 13:55:29 hm this seems nice, some fallback system at runtime needed though 13:58:30 actually I don't need that 13:58:45 gettimeofday does micro seconds 13:58:55 Deewiant, does the school computer have HPET? 13:59:13 grep hpet /proc/timer_list 13:59:13 I have no way of knowing? 13:59:14 iirc 13:59:26 no such thing as /proc/timer_list 13:59:32 kernel version? 13:59:38 said above 13:59:43 ah 13:59:44 right 13:59:47 * AnMaster runs .24 13:59:57 anything else /proc/timer* 13:59:57 ? 14:00:09 nope, did /proc/tim and nothing 14:00:16 ok 14:00:42 dmesg | grep -i hpet 14:00:55 nothing 14:01:01 ah no hpet then 14:01:09 guess it is just linux being so much better ;) 14:01:11 here's something though 14:01:12 [ 48.914457] Real Time Clock Driver v1.12ac 14:01:19 [ 48.956310] Time: tsc clocksource has been installed. 14:01:27 isn't that something special? 14:01:32 tsc is time stamp counter iirc 14:01:39 something related to the cpu 14:01:49 ah, I guess it's just the ordinary TSC then 14:01:54 quite high resolution but not fixed speed if dynamic cpu speed varies 14:01:55 iirc 14:02:06 $ dmesg | grep -i "clocksource has been installed" 14:02:07 Time: tsc clocksource has been installed. 14:02:07 Time: hpet clocksource has been installed. 14:02:13 aye. 14:03:22 anyway linux normally runs the time source at quite high frequency compared to windows, simply because windows wants backward compatlity 14:03:46 actually windows may run it at high freq but hide this to user space if they don't use some special interface to check 14:03:47 I think 14:03:48 perfectly possible 14:04:03 I'm looking through MSDN for any 'high-freq' function 14:04:28 Deewiant, heh, Performance counter or something like that sound familiar 14:04:56 also beware of using the cpu speed itself as a clock source, which is possible 14:05:08 think of speedstep and such 14:05:18 I know I know 14:05:23 TSC isn't viable on multicore either 14:05:28 indeed 14:06:22 dmesg says: Clocksource tsc unstable (delta = -124059314 ns) 14:06:31 very possible 14:06:33 something similar for me 14:06:42 and all my dmesg's are offset by 17 seconds or something 14:06:48 Marking TSC unstable due to cpufreq changes 14:06:49 Clocksource tsc unstable (delta = -106250033 ns) 14:06:50 here 14:07:43 the linux kernel does check if the timer is sane during bootup iirc 14:08:00 -!- Corun has joined. 14:09:08 I guess queryperformancecounter would be the way to go if I wanted to do that 14:09:47 yeah, as usual the windows API is messy 14:10:10 tango.time.Clock uses GetSystemTimeAsFileTime on windows 14:10:15 and gettimeofday on posix 14:10:37 windows lacks gettimeofday? 14:11:16 #define __SLONGWORD_TYPE long int 14:11:17 typedef __SUSECONDS_T_TYPE __suseconds_t; 14:11:24 of course it does 14:11:24 those two lines in different headers 14:11:25 it's posix 14:11:30 it's in sys/time.h right? 14:11:44 it is 14:11:57 with good accuracy you can say that any posix C header which is in a subdirectory doesn't exist on windows ;-) 14:12:10 eh? 14:12:17 ah I see 14:12:18 i.e. stdio.h exists but not sys/io.h, for instance 14:12:55 however it must have gettimeofday as that addon crap 14:13:12 oh sure, it's probably in there 14:13:13 or in cygwin 14:13:26 yep 14:13:30 cygwin would have it 14:23:42 hm this fingerprint generation script is getting quite advanced 14:23:46 http://rafb.net/p/XCA7fB82.html 14:23:47 :) 14:24:15 :-P 14:24:34 still need to manually rename the functions but I plan to maybe make it read some spec file instead in the future 14:34:22 -!- vixey has joined. 14:40:39 Deewiant, micro == 1/100000 right? 14:40:42 or am I wrong 14:40:48 howdy, folks 14:40:49 one zero more 14:40:56 a milion hm 14:41:12 hi 14:49:41 -!- Corun has quit ("This computer has gone to sleep"). 14:55:28 -!- jix has joined. 14:57:31 http://www.engr.uconn.edu/~dqg/papers/myth.pdf 14:58:29 Deewiant, if I store the micro seconds as 32-bit, the highest difference I can represent with signed integers is around 35 minutes 14:58:45 AnMaster: so don't store them as 32-bit. 14:58:49 as signed 64-bit I think something like 292 * 1000 years 14:59:08 I believe Tango does nanoseconds in signed 64-bit. 14:59:10 Deewiant, well the cell space in funge space is just 32-bit depending on compile time options 14:59:25 T 'Timer' pushes the number of microseconds elapsed since the last time an IP with this ID marked the timer. If there is no previous mark, acts like r. 14:59:42 that one will with 32-bit cells be quite limited 14:59:46 ah, right. you can still store them as higher precision though. 15:00:01 indeed I will store it as whatever I can represent it as 15:00:08 in funge-space that is 15:04:02 vixey: so, the idea of the paper is that because turing machines cannot receive input or model concurrent applications, they cannot model everything a computer does? I'm not certain I agree with that 15:04:43 RodgerTheGreat: http://reddit.com/r/programming/info/6et4f/comments/c03nbfi 15:05:16 for one thing, you can simulate threads without using threads. Further, I'm not sure what difference there is, computationally, between "batch mode" applications that begin with all their input and interactive applications 15:06:36 one is example is that you can't write a server that handles multiple connections in a purely declarative language, you need observable nondeterminisim to do it 15:06:44 hm 15:08:22 I guess that's the main point I could agree with- real computers can gain entropy from their environment (net lag, etc), while a TM is strictly deterministic 15:09:48 UNDEF: T after M pushed 46 and a second T, after ff*kyn, pushed 234 15:09:50 Deewiant, hmm? 15:10:09 what is that supposed to test? 15:10:31 that T works 15:11:22 UNDEF: S pushed 647201 15:11:22 hm 15:11:38 ccbi seems to output a result with one more digit 15:11:44 and this isn't even optimized build 15:12:18 S? 15:12:29 or T? 15:12:36 if S, and you're right, that's a bug 15:12:49 if T, all I can say is that we've established that cfunge is faster 15:12:52 UNDEF: S pushed 2943 15:12:53 :) 15:12:57 with optimized build 15:13:03 oh wait 15:13:06 Deewiant, hm 15:13:14 S doesn't matter 15:13:17 right 15:13:28 -!- ehird has joined. 15:13:33 UNDEF: T after M pushed 7 and a second T, after ff*kyn, pushed 66 for optimized build of cfunge 15:13:42 UNDEF: T after M pushed 33 and a second T, after ff*kyn, pushed 100666 15:13:45 from ccbi 15:13:50 Deewiant, that seems extreme 15:13:56 -!- Corun has joined. 15:14:04 how? 15:14:13 such a HUGE difference 15:14:31 95725 is the best of ccbi so far 15:14:40 shrug 15:15:24 Deewiant, even at -O0 -ggdb3 on cfunge I get less than 300 from T 15:17:15 Deewiant, oh btw I'm unable to get optimized cfunge to report anything except "UNDEF: G gives clock granularity as 1 microseconds" 15:17:26 debug build sometimes gives 2 microseconds 15:17:56 getSysInfo is 305 asm instructions here, with 25 'call's 15:18:11 that is ccbi one? 15:18:12 it helps that DMD doesn't inline functions containing loops :-P 15:18:18 yep 15:18:20 and on windows 15:18:21 containing loops!? 15:18:23 errr 15:18:28 that makes no sense 15:18:33 recursive sure it can't inline 15:18:42 I didn't say it can't 15:18:44 I said it doesn't :-P 15:18:46 but ones containing loops should be perfectly possible to inline 15:18:53 of course they are 15:18:55 it just doesn' 15:18:56 t 15:18:56 why is it? 15:19:01 I don't know 15:19:46 which also means that all foreaches are actually function calls 15:19:58 (on each iteration) 15:20:43 so foreach_reverse (farg; fungeArgs) pushStringz(farg); is two function calls on each iteration :-) 15:21:52 AnMaster: how many cells does the stack have after ff*ky? 15:21:57 324424 here :-P 15:22:18 hm will check shortly 15:24:18 here's an interesting idea- there are many glove-type devices that can measure the position of a user's hands (mainly for VR applications) - how hard would it be to wear one and learn sign language as a means of text input? How fast do you imagine someone could get? 15:24:57 (most sign language "words" require both hands or complex movements, so you'd be largely limited to the alphabet) 15:27:13 $2 = {size = 316992, top = 316978, entries = 0x2ba8fb318010} 15:27:14 Deewiant, ^ 15:27:28 entries? 15:27:34 entries is a pointer 15:27:37 ah 15:27:40 to the actual array of items 15:27:45 top is what you want to look at 15:27:57 size will be the max size it reached 15:28:05 hmm, odd size 15:28:09 how do you grow your stack? 15:28:20 Deewiant, in chunks of 16 or 32 or such iirc 15:28:27 #define ALLOCCHUNKSIZE 32 15:28:29 yeah 32 15:28:33 right 15:29:27 Deewiant, so considering differing environment variables and such it seems like the size is reasonable 15:29:44 yep 15:30:20 however the 66 I got using -S, because didn't want all the temp files around 15:30:37 so that means it would only push a subset of the env variables too 15:30:47 without -S I get this time: 3937 15:31:07 (and my build dir gets spammed with files like mycotmp0.tmp) 15:31:20 don't run in your build dir :-) 15:31:27 Deewiant, hah 15:31:40 I certainly don't 15:31:51 a lot easier 15:32:06 what's so hard about "../cfunge"? :-P 15:32:11 (for instance) 15:32:21 Deewiant, oh and with -S it checks what env variables are ok using a perfect hash ;) 15:32:33 src/instructions/sysinfo-misc/safe_env.gperf 15:32:40 eh? 15:32:50 -S is the sandbox mode 15:33:05 it also only show a whitelist of env variable 15:33:21 so what's 'white' 15:33:22 Deewiant, because there may be env variables for stuff like ssh agent or such 15:33:41 Deewiant, http://rafb.net/p/5lxkRT79.html 15:34:25 are you sure those apply to non-Linux as well? :-P 15:34:36 "I can do that too! I’m an expert at wasting my day, after all" 15:34:37 I checked on freebsd, linux and openbsd 15:35:47 Deewiant, didn't have any other system to check on, and on windows it just pushes some place holder variables telling users to get a real OS ;P 15:38:04 vixey: lol 15:39:00 Deewiant, however this shows that pushing 0gnirts is slow 15:39:39 possibly I should optimize that code 15:39:41 eh? it's no slower than pushing anything else 15:39:51 meh >_< 15:39:57 cfunge: /home/arvid/src/cfunge/trunk/src/fingerprints/HRTI/HRTI.c:58: FingerHRTImark: Assertion `ip->fingerHRTItimestamp != ((void *)0)' failed. 15:39:57 Itools/fuzz-test.sh: line 112: 13597 Aborted ( ./cfunge -S fuzz.tmp ) 15:39:58 hm 15:40:01 * AnMaster looks 15:40:58 -!- Corun has quit ("This computer has gone to sleep"). 15:41:25 oh threading 15:48:55 -!- oklopol has joined. 15:51:47 eh? it's no slower than pushing anything else 15:51:52 well you could speed it up 15:52:31 AnMaster: he could but i don't think he cares much about how fast ccbi is 15:52:45 no I mean in theory 15:52:52 * vixey anticipates 15:52:54 not you as in a specific person 15:53:38 vixey, huh? 15:54:02 I want oklotalk :p 15:54:11 ah 15:58:05 oklotalk is cool, yes 15:58:05 :D 15:58:11 and, oklopol, it must be ready TODAY 15:58:18 HA HA HA 15:58:34 can i bask in closures and run-time malleability plz 15:58:56 oklotalk-- had to be ready *tomorrow*, i failed to count the days right 15:59:06 but, deadline was moved to 25. :) 15:59:09 :( 15:59:12 anyway, the cli is somewhat ready 15:59:25 oklopol: you gave me an oklotalk beta once 15:59:26 i can give you an exe for it :-----------) 15:59:27 where is it 15:59:29 i lost the link 15:59:33 you can /msg it 15:59:36 (different machine y'see) 15:59:39 ehird: that was very beta 15:59:59 didn't have a parser 16:00:08 oklopol: yeah, c'mon 16:00:08 and scoping didn't work 16:00:10 i wanna play with it 16:00:23 sincey ou're obviously not gonna give me the code to the current version :D 16:00:29 :P 16:01:03 the problem is it doesn't really do anything, because i'm too lazy to add actual functionality 16:01:25 it's somewhat extendable as it is though, so i guess you could add stuff in itself 16:01:43 oklopol: well i can't use an .exe 16:01:48 being a maccie 16:01:59 i could give you compiled files for the new one. 16:02:19 probably easier to read than my code, even 16:02:21 :-) 16:03:07 -!- shinkuzin has joined. 16:04:03 oklopol: but .pyc is no fun 16:04:10 i want to hack on it! :p 16:04:12 why not? 16:04:17 heh 16:04:21 i am not fluent in python bytecode 16:04:22 unfortunately 16:04:23 (yet) 16:05:05 oklopol, oklotalk got a deadline? 16:05:41 AnMaster: tomorrow 16:05:44 AnMaster: it's for some school thingy 16:05:51 I see.. 16:05:54 this is, of course, GREAT for #esoteric 16:05:54 what is the program in the topic btw? 16:05:57 because we get to play with oklotalk 16:06:00 AnMaster: ALGOL 60 quine 16:06:03 iirc. 16:06:05 hm 16:06:09 looks different to me? 16:06:17 than it was a few days ago 16:06:22 hey Ifound something neat 16:06:26 a bit of code 16:06:32 not algol please 16:06:33 what if i put the interp up on a bot? 16:06:48 oklopol, why not release the source? 16:06:51 transitive_closure(Goal,I,O) :- ( call(Goal,I,M) -> transitive_closure(Goal,M,O) ; I=O ). 16:06:52 eval --> transitive_closure(beta_reduce). 16:06:55 AnMaster: not yet at least 16:07:01 hm ok 16:07:07 oklopol, well you could use a bot I guess 16:07:10 it's not something i like to do 16:07:17 but perhaps, perhaps 16:07:19 what? open source rocks! 16:07:30 beta_reduce(lambda(X,B) $ X,B). beta_reduce(A $ B, Ae $ B) :- beta_reduce(A, Ae). beta_reduce(lambda(X,B), lambda(X,Be)) :- beta_reduce(B,Be). 16:07:39 lambda calculus interpreter in Prolog :P 16:07:44 in like 5 lines 16:08:02 (yes I know it's zero in lisp but Prolog didn't even know what lambda is before) 16:08:24 AnMaster: closed source rocks too 16:08:29 esp. for something like oklotalk 16:08:35 ehird, err why? 16:09:00 is that not totally cool? :[ 16:09:02 oklopol, if you give me a binary for x86_64 Linux I could try it, or 32-bit freebsd 16:09:02 AnMaster: because! :D 16:09:05 vixey: yeah very cool 16:09:12 vixey: and lisp isn't based on lambda calc, sorry. 16:09:14 vixey, no idea, I didn't understand it 16:09:20 it is strict, has 0-adic functions, and N>1-adic functions 16:09:25 and mountains of other things 16:09:29 like: not everything is a function 16:09:30 no ehird 16:09:33 ((((lambda (a) (lambda (b) (lambda (c) ((a b) c)))) (lambda (x) (lambda (y) x))) 'apple) 'banana) 16:09:46 takes zero lines of code to write an interpreter for that 16:09:48 Haskell is closer, but it cannot represent everything in the LC properly 16:09:57 vixey: yes, but that's not LC. it's strict 16:10:03 vixey: lambda calculus is *lazily evaluated* 16:10:22 λf·(λx·f (x x)) (λx·f (x x)) 16:10:26 that always diverges in lisp 16:10:29 because it requires lazy evaluation 16:10:32 lambda calculus isn't a programming language 16:10:33 because it recurses infinitely 16:10:41 vixey: um, LC is lazily evaluated 16:10:47 vixey, I think it is turing complete 16:10:52 AnMaster: yes, it is 16:10:56 but it is LAZILY EVALUATED 16:11:05 TC is irrelevant to whether or not somehting is a programming language 16:11:10 /sigh 16:11:28 vixey: Lisp, even the restricted set you use there, IS NOT the lambda calculus because its semantics differ: It is strictly evaluated. 16:11:30 it's not lazy though ehird, there's no evaluation order specified 16:11:35 vixey: Non-strict is. 16:11:37 ehird, also how did you type the upside down y? 16:11:40 what key combo 16:11:42 lol 16:11:44 lol 16:12:03 λf·(λx·f (x x)) (λx·f (x x)) This always diverges in e.g. Lisp. But it doesn't always in the lambda calculus 16:12:16 it doesn't diverge in lambda calculus 16:12:20 If you disagree, and state that a system where the Y combinator always diverges is in fact lambda calculus, you are just clueless 16:12:30 AnMaster: that's the greek lambda.. 16:12:45 ehird, and that is AltGr + what? 16:12:46 or ? 16:12:54 AnMaster: depends on your OS. 16:12:56 go look it up. 16:12:58 Linux 16:13:02 go look it up. 16:13:03 vixey: ehird's point is you cannot me LC in lisp in 0 lines, because it will have different semantics on some stuff 16:13:04 i use OS X 16:13:05 hm 16:13:10 I'm not clueless, you're treating lambda calculus as if it's a programming language with defined evaluation rules 16:13:15 oklopol: thank you 16:13:16 which is comeplete nonsense 16:13:17 vixey: it is defined 16:13:24 http://en.wikipedia.org/wiki/Lambda_calculus 16:13:27 please read the evaluation rules there 16:13:50 but since you are not only clueless about the lambda calculus' semantics, but also stubborn to changing them, there is no point debating 16:14:10 you're being pretty silly ehird 16:14:30 vixey: evaluating lambda calculus strictly would be like saying 5+5 isn't 10, because 5+5=6+4=7+3=8+2=9+1=10+0=11(+-1) and then continuing forever 16:14:35 I never even said that lisp is based on lambda calculus (which it, and ALGOL are) but you seem to have imagined I did 16:14:43 not debating this, vixey, you know nothing about LC :) 16:14:52 not interested 16:14:54 I know more than you about it.. 16:14:57 haha 16:15:05 anyhoo, oklopol ... let's talk oklotalk! 16:15:11 :P 16:15:25 vixey: but you said you can do LC in lisp in 0 lines 16:15:27 I have no idea why you are being so rude to me about this and calling me clueless though 16:15:48 and you technically can't, if lisp is defined to fail in some cases 16:15:48 -!- ehird has left (?). 16:15:51 -!- ehird has joined. 16:15:53 whoopsie 16:16:22 oklopol: don't waste your keystrokes :) 16:16:32 i have explained perfectly clearly 16:16:39 he's just re-asserting his opinion 16:16:51 which is not an opinion but an incorrect fact 16:16:52 anyway 16:16:55 back to less repetitive things 16:17:23 -!- atsampso1 has joined. 16:17:37 ehird: i guess, i'll put the bot up now. 16:17:41 well fuck hanging around here if people are just going to call me clueless 16:17:46 oklopol: awwww, but but but :) 16:17:47 -!- vixey has left (?). 16:17:49 :P 16:17:50 oh, bye vixie 16:17:51 *vixey 16:17:54 nice knowing you 16:17:55 i wasn't calling him clueless 16:17:55 yes 16:17:57 bot! 16:18:07 oklopol: if he wants to leave over that, let him 16:18:11 i guess 16:18:53 mwahaha ":: " prefix :PPPPPP 16:19:22 why do i make my prefixes have the space 16:19:26 i don'get it 16:19:27 oklopol: i have a better prefix 16:19:27 *don 16:19:30 't 16:19:30 \ 16:19:32 \2+2 16:19:34 no, wit 16:19:37 K uses two spaces 16:19:39 make your prefix two spaces 16:19:41 2+2 16:19:56 /whois me and think again 16:20:07 what do you mean 16:20:08 eh? 16:20:13 :: 2 16:20:15 nope 16:20:16 i have no idea how to disable *REMOVING SPACES OFF THE BEGINNING OF A MESSAGE* 16:20:23 oh 16:20:24 automatically. 16:20:25 um 16:20:27 not hard, i guess 16:20:28 try 16:20:31 from incoming and outgoing messages 16:20:31 '/ a' 16:20:35 oklopol, my client doesn't remove them 16:20:35 maybe 16:20:39 oklopol: actually 16:20:39 like this 16:20:39 wait 16:20:40 AnMaster: what client? 16:20:42 say something with two spaces 16:20:44 i bet it appears fine 16:20:48 just doesn't show 16:20:49 on your end 16:20:53 f 16:20:57 oklopol, I know irssi, xchat and erc keep spaces 16:20:57 worked? 16:21:01 oklopol: nope 16:21:04 ok, try xchat 16:21:05 heh 16:21:07 or.. irssi 16:21:08 or something 16:21:11 but two spaces is such a good prefix 16:21:12 ehird, erc 16:21:13 to pass up 16:21:19 AnMaster: oklopol doesn't know any emacs. 16:21:19 well no sensible client would remove them 16:21:23 f f 16:21:23 he doesn't have any reason to, afaik 16:21:24 ah ok true 16:21:28 also midspaces are filtered 16:21:30 oklopol: so try another client! :D 16:21:35 two spaces is an awesssommme prefix 16:21:39 but this is so nice otherwise... 16:21:39 oklopol, well stop using that client then 16:21:59 oklopol: just use one temporarily 16:22:17 oklopol, and why mirc :( 16:22:23 really, there are no worse client 16:22:34 is* 16:22:44 AnMaster: you are interrogating oklopol for using an irc client 16:22:45 just sayin' 16:23:08 mirc is very nice in general. 16:23:19 -!- atsampson has quit (Read error: 110 (Connection timed out)). 16:23:19 in my experience, *it's one of the better ones* 16:23:20 oklopol: can't you use another for like 2 minutes 16:23:25 :D 16:23:26 but yeah, mirc is a good client 16:23:35 oklopol: don't you love the idea of two spaces as a prefix 16:23:37 i mean seriously 16:23:38 it's hilarious 16:23:48 one space is better though 16:23:49 i do, but i want it to work on this, there has to be a way... 16:23:51 less typing! 16:23:53 it's the oklotalk way 16:24:08 it's not really the oklotalk-- way though. 16:24:16 oklotalk-- even has SYNTAX ERRORS :O 16:24:25 wait 16:24:29 i thought you were making oklotalk 16:24:33 just oklotalk--?! :( 16:24:39 currently. 16:24:44 different parsing. 16:24:57 that's the main difference 16:25:19 also lacks a lot of fun stuff, like continuations and... well stuff i can't really explain unless you know the language 16:25:32 ah 16:25:33 well 16:25:35 just use :: then 16:25:37 i just wanna try it 16:25:38 :D 16:25:41 hehe 16:25:47 okay, i'll put it up 16:26:00 should store state and everything, automatically 16:26:05 cool 16:27:42 oklopol: you're slow 16:27:43 ;) 16:27:53 indeed 16:28:14 took me time to find the bot code i usually use for new bots. 16:28:30 also, once again i've forgotten the privmsg syntax xD 16:28:31 cooool 16:28:32 [16:28] no, you're being a fucking idiot and I'm going to address this. You've confused evaluating an expressing and finding the normal form when it exists and are decided that I'm confused when it's your misake 16:28:41 i think calling people a fucking idiot over /msg is against freenode's terms 16:28:43 i'ma go ask! 16:28:46 hehe 16:28:54 aha, he is in #AutisticParadise 16:28:58 poor guy :D 16:28:59 oh well 16:29:02 still gonna report him! 16:29:06 'cause i'm an ass, you see 16:29:44 poor vixey. 16:29:47 yeah 16:29:48 poor vixey 16:29:55 harrassed the wrong guy 16:30:09 totally 16:32:56 -!- otobot has joined. 16:32:56 -!- otobot has quit (Remote closed the connection). 16:32:59 :D 16:33:03 wtf 16:33:05 brillant 16:34:11 -!- vixey has joined. 16:34:22 oh amusing 16:34:25 rehi 16:34:27 -!- otobot has joined. 16:34:29 :: 2+3 16:34:30 -!- otobot has quit (Remote closed the connection). 16:34:30 hi 16:34:33 ... :D 16:34:34 haha, i broke otobot :D 16:34:48 ehird: think lisp in syntax. 16:34:59 but i'll fix crashing now 16:35:03 oklopol: think 'don't make it break on invalid code' :p 16:35:05 very simple fix 16:35:06 just do: 16:35:10 yeah, yeah 16:35:14 try: oko(code); except e: print >>irc, 'LULZ',e 16:35:16 just saying in case you didn't know 16:35:17 or something 16:35:30 i'm doing raw sockets, naturally ;) 16:35:35 haha, yeah 16:35:35 :D 16:36:36 come onnnn :P 16:36:48 sssry, irc has so much going on 16:36:50 -!- otobot has joined. 16:36:54 :: ööö 16:36:54 :: (+ 2 3) 16:36:54 : (+ 4 5) 16:36:58 : ööö 16:36:58 : (+ 2 3) 16:37:01 darn 16:37:02 lulz 16:37:03 does nothing does it? 16:37:05 did you forget to print out 16:37:05 the result 16:37:06 :D 16:37:07 whhell, dind't crash. 16:37:10 i don't think so 16:37:13 hmm 16:37:15 oklopol: suggestion 16:37:19 make it echo everything form the irc sever 16:37:21 : (+ 1 1) 16:37:23 if it says like 'no message to send' 16:37:25 if len(line)>=4 and line[3]==":::": 16:37:27 try: 16:37:27 it means you effed up stuff 16:37:29 koed=" ".join(line[4:]) 16:37:31 uhhh 16:37:31 result=runner.run(koed) 16:37:32 oklopol: line[3] 16:37:33 result=result.split("\n")[0] 16:37:34 you mean 16:37:35 s.send("PRIVMSG "+line[2]+" :"+result[:200]+"\r\n") 16:37:36 line[:3] 16:37:37 except Exception, e: 16:37:39 s.send("PRIVMSG "+line[2]+" :An error: "+str(e)) 16:37:39 you fix. 16:37:42 oklopol: stoppit 16:37:43 i said 16:37:44 line[3] 16:37:44 i dno't 16:37:44 -> 16:37:45 line[:3] 16:37:48 no 16:37:52 -!- Corun has joined. 16:37:53 line[3]==":::": 16:37:55 [3] is always of length 1 16:37:58 line has everything split by " " 16:38:04 ok 16:38:06 ::: test 16:38:07 so it's 16:38:07 oklopol: it goes like this 16:38:09 :: test 16:38:12 :host PRIVMSG channel :foo 16:38:18 ok 16:38:20 so that's right 16:38:23 well 16:38:26 so line[3]==":::" should correct... hmm 16:38:27 you forgot 16:38:27 \r\n 16:38:29 on the exception case 16:38:32 and besides 16:38:33 print out line 16:38:34 hmm, indeed. 16:38:37 and print out everything from the irc server 16:38:40 just to help 16:38:53 oklopol, print out data to and from server on your terminal 16:38:56 it will help indeed 16:38:56 oh, right, i already do :D 16:39:34 -!- otobot has quit (Read error: 104 (Connection reset by peer)). 16:39:44 we should see errors now. 16:39:49 -!- otobot has joined. 16:39:50 :: (+ 3 4) 16:39:50 ::(- 5 3) 16:39:50 An error: Int instance has no attribute 'split' 16:39:54 :D 16:39:56 durrr 16:39:58 you need to repr() it 16:39:58 -!- otobot has quit (Read error: 104 (Connection reset by peer)). 16:40:00 or .pretty() 16:40:01 or whatever 16:40:03 and 16:40:07 LET ME DO THE EXAMPLE :P 16:40:22 hehe 16:40:27 -!- otobot has joined. 16:40:28 :: (- 5 3) 16:40:28 2 16:40:31 :D 16:40:32 cool 16:40:33 :: foo 16:40:34 foo 16:40:36 :: foo+3 16:40:36 foo+3 16:40:36 it actually worked 16:40:39 :: (+ foo 3) 16:40:39 + 16:40:40 (+ foo 3) 16:40:42 haha what 16:40:45 hehe 16:40:45 why is that + 16:40:48 :: (/ 1 0) 16:40:48 :) 16:40:49 An error: integer division or modulo by zero 16:40:53 hard to explain. 16:40:55 :: (error "DIE DIE DIE") 16:40:55 An error: invalid literal for int() with base 10: 'DIE DIE DIE' 16:40:58 but i can if you want 16:40:59 :: (error 134) 16:40:59 134 16:41:07 what 16:41:09 :: "DIE DIE DIE" 16:41:10 DIE DIE DIE 16:41:17 :: (+ (+ (+ 0 1) 1) 1) 16:41:17 3 16:41:18 :: (+ "DIE DIE DIE" "oklotalk") 16:41:18 An error: invalid literal for int() with base 10: 'oklotalk' 16:41:21 haha 16:41:22 :D 16:41:23 BROKEN 16:41:23 ah 16:41:25 :: (error 1) 16:41:25 1 16:41:27 :: dir 16:41:27 dir 16:41:29 oh, right 16:41:30 :: (dir *) 16:41:31 dir 16:41:33 oklopol: make a func list :( 16:41:38 :: 'a 16:41:38 'a 16:41:42 hehe, i guess i should 16:41:43 :: (set x 2) 16:41:43 set 16:41:46 :: (= x 2) 16:41:46 2 16:41:49 :: x 16:41:49 2 16:41:51 succses 16:41:54 :: = 16:41:55 = 16:41:56 hmm 16:42:01 oklopol: evaluating a function should show its source 16:42:16 = isn't a function 16:42:18 it's an atom 16:42:24 evaluates to itself :-) 16:42:25 well, it works in function position 16:42:27 so there 16:42:28 oh 16:42:30 oklopol: lisp-2? 16:42:34 :: (= = 2) 16:42:34 2 16:42:36 :: = 16:42:36 2 16:42:39 :: (= y 2) 16:42:40 2 16:42:41 :: y 16:42:42 2 16:42:43 i see 16:42:49 so functions are looked up differently from variables 16:42:51 two namespaces 16:42:56 (= ...) just happens to be spacial 16:42:59 *special 16:43:07 as is (-> ... ...) 16:43:09 but that's all. 16:43:19 okay 16:43:21 :: (-> x x) 16:43:22 [] 16:43:24 (-> ptrn ... ... ...) 16:43:25 :: (-> x x) 2 16:43:25 [] 16:43:28 matches _ on ptrn 16:43:31 :: (-> X X) 2 16:43:31 [] 16:43:32 (= _ 6) 16:43:35 try now 16:43:35 BROKENZ 16:43:39 :: (-> X X) 2 16:43:40 [] 16:43:44 err 16:43:44 :: (-> _ _) 2 16:43:45 [] 16:43:48 BORKENTALK 16:43:49 (-> x x) 16:43:54 :: (-> x x) 16:43:54 [] 16:43:58 hmmm 16:44:03 :: (= id (-> x x)) 16:44:04 [x] 16:44:08 (= _ 4) 16:44:08 huh 16:44:09 :: (-> x x) 16:44:10 [] 16:44:10 wtf 16:44:12 ... 16:44:16 :: [x] 3 16:44:16 :: (= _ 4) 16:44:16 3 16:44:16 :: (id 2) 16:44:16 An error: 'list' object has no attribute 'clbl' 16:44:17 4 16:44:18 :: (-> x x) 16:44:18 4 16:44:20 ID 2 => 3 16:44:21 ehird: see 16:44:22 LOL LOL LOL 16:44:26 :: (id 2) 16:44:27 An error: 'list' object has no attribute 'clbl' 16:44:30 hahahahahahahhhhh 16:44:31 :: ööööööööööööö 16:44:31 :: (-> x (-> y x)) 16:44:31 ööööööööööööö 16:44:31 4 16:44:34 oklopol: what IS this 16:44:35 hm 16:44:36 ehird: (-> ... ...) isn't a function. 16:44:38 :: (length 2) 16:44:38 2 16:44:41 :: (length "abc") 16:44:42 An error: invalid literal for int() with base 10: 'abc' 16:44:45 XDXDXD 16:44:45 :: (+ 2 2) 16:44:46 4 16:44:48 what CAN it do, oklopol 16:44:53 show me quicksort 16:44:55 :: (-> x (-> y y)) 16:44:56 4 16:45:00 well i have the rational number quicksort 16:45:01 ... 16:45:02 i can show it again 16:45:07 shur 16:45:10 vixey: that makes no sense 16:45:17 that's why it's not "working" 16:45:36 :: (% 5 4) 16:45:36 1 16:45:40 :: (% 5 0) 16:45:40 what's -> ? I thuoght it was lambda 16:45:40 An error: integer division or modulo by zero 16:45:43 ah 16:45:45 http://www.vjn.fi/pb/p535315136.txt 16:45:48 :: (% 5 -34) 16:45:49 An error: Atm instance has no attribute 'call' 16:45:53 eh? 16:46:02 omg oklopol :D 16:46:03 :: (% 5 (- 0 34)) 16:46:04 -29 16:46:04 http://www.vjn.fi/pb/p612313333.txt <<< not sure these actually work, but that's all that should. 16:46:08 > {(-> x x)} 2 16:46:09 :: {(-> x x)} 2 16:46:09 2 16:46:12 WHOOOO 16:46:22 static and dynamic scoping, hf 16:46:32 :: {(-> x {(-> y x)})} 2 3 16:46:33 3 16:46:36 oklopol, how do you do sqrt on it? 16:46:39 :: (= qs { (-> [] []) (-> (: h t) (+ (qs (\ {(< _ h)} t)) (+ [h] (qs (\ {(>= _ h)} t)))))}) 16:46:39 <<<27796784>>> 16:46:39 :/ 16:46:40 vixey: lambda is {} 16:46:42 wow 16:46:43 somewhat. 16:46:44 what is <<<>>> 16:46:44 why did that give 3? 16:46:48 :: qs 16:46:49 <<<27796784>>> 16:46:53 :: qs [1 2] 16:46:54 [1 2] 16:46:55 :: qs [2 1] 16:46:56 [2 1] 16:47:00 :O 16:47:01 oh 16:47:01 :: (qs [2 1]) 16:47:01 [1 2] 16:47:04 yeah 16:47:05 totally rad 16:47:12 rad? 16:47:16 ya 16:47:20 oklopol, how do you do sqrt? 16:47:20 wuzzat 16:47:24 :: ({(-> x {(-> y x)})} 2 3) 16:47:24 <<<27843320>>> 16:47:26 AnMaster: i haven't doneit 16:47:28 done it 16:47:31 ah 16:47:31 oklopol: is oklotalk lazy 16:47:37 ehird: no. 16:47:42 well 16:47:43 :: (({(-> x {(-> y x)})} 2) 3) 16:47:43 2 16:47:44 :: (= gcd {(-> [a 0] a) (-> [a b] (' b (% a b)))}) 16:47:45 <<<27796064>>> 16:47:49 eh 16:47:57 what is the <<< >>>? 16:47:58 :: (= 1 2) 16:47:58 An error: 1 cannot be set. 16:48:02 AnMaster: function id 16:48:04 oklotalk is, it differentiates between stuff with side-effects and stuff without it 16:48:07 but oklotalk-- isn't. 16:48:08 ah 16:48:17 :: (gcd [5 4]) 16:48:17 1 16:48:17 :: (= c0 {(-> f {(-> x x)})}) 16:48:18 <<<27854728>>> 16:48:23 :: (gcd [237 23]) 16:48:23 1 16:48:25 err 16:48:30 :: (gcd [8 4]) 16:48:30 4 16:48:32 ah 16:48:33 :) 16:48:47 :: (= cs {(-> n {(-> f {(-> x (f ((n f) x)))})})}) 16:48:48 <<<27817424>>> 16:48:51 :: (cs c0) 16:48:52 <<<27755544>>> 16:48:53 :: (({(-> xxx {(-> y xxx)})} 2) 3) 16:48:54 2 16:48:54 ehird: please don't hit me, BUT IT DOESN'T HAVE TAIL RECURSION 16:49:12 hmm 16:49:16 fromchurch n = n (1+) 0 16:49:17 right? 16:49:29 :: (= cons {(-> car {(-> cdr {(-> f ((f car) cdr)))})})}) 16:49:29 An error: Unmatching parens @ row 1. 16:49:35 :: (= c2n {(-> n ((n {(-> x (+ 1 x))}) 0))}) 16:49:35 <<<27882920>>> 16:49:36 hmm 16:49:40 :: (c2n (cs c0)) 16:49:40 1 16:49:45 woot 16:49:47 church numerals 16:49:49 :: (= cons {(-> car {(-> cdr {(-> f ((f car) cdr))})})}) 16:49:49 <<<27900144>>> 16:49:55 am i a qualified oklotalker now, oklopol? 16:49:58 :O 16:50:00 i picked up the language soooooo fast 16:50:05 :: (c2n (cs (cs c0))) 16:50:05 2 16:50:12 i am so cool 16:50:13 am i not 16:50:19 ehird: well it's the perfect language, so i can't blame you ;;) 16:50:30 oklopol: with some synatx yeh 16:50:37 anyway, i guess i have to understand your example 16:50:38 wait 16:50:42 oh 16:50:42 gonna edit the code in emacs now, simpler 16:50:42 right 16:51:40 Deewiant, there? 16:51:42 :: (= car {(-> cons (cons {(-> car {(-> cdr car)})}))}) 16:51:42 <<<27853488>>> 16:51:51 :: (car ((cons 1) 2)) 16:51:51 1 16:51:52 Deewiant, does ccbi handle iterating over @ in a sane way? 16:52:06 hehe 16:52:07 :: (= car {(-> cons (cons {(-> car {(-> cdr cdr)})}))}) 16:52:08 <<<27783416>>> 16:52:12 Deewiant, and wtf should it do, would it just kill ip, or would it kill n ips? 16:52:15 :: (= cdr {(-> cons (cons {(-> car {(-> cdr cdr)})}))}) 16:52:16 <<<27808952>>> 16:52:17 :: (= car {(-> cons (cons {(-> car {(-> cdr car)})}))}) 16:52:18 <<<27754784>>> 16:52:21 i made currying in actual oklotalk once, i think 16:52:22 :: (= plus {(-> m {(-> n {(-> f {(-> x ((m f) ((n f) x)))})})})}) 16:52:22 <<<27830592>>> 16:52:32 :: (c2n (plus (cs c0) (cs c0)) 16:52:32 An error: Unmatching parens @ row 1. 16:52:33 :: (c2n (plus (cs c0) (cs c0))) 16:52:34 <<<27884680>>> 16:52:37 ... 16:52:40 also pretty easy in python 16:52:41 goddamn 16:52:42 hmm 16:52:44 :((( 16:52:49 AnMaster: in CCBI it'd only kill the current IP 16:53:01 Deewiant, well atm mine cause a valgrind error 16:53:02 heh 16:53:11 AnMaster: IIRC @ is one of those 'special optimizations' ;-P 16:53:13 ehird: did you fail? 16:53:13 in k 16:53:17 dfdfdffs 16:53:20 oklopol: yes 16:53:22 that should be 2 16:53:24 that c2n i did 16:53:32 :: (= plus {(-> m {(-> n {(-> f {(-> x ((m f) ((n f) x)))})})})}) 16:53:32 <<<27863880>>> 16:53:33 plus is wrong 16:53:35 Deewiant, well I just want to make it sane in this case, avoid valgrind error that is 16:53:40 yeah 16:53:43 oklopol: plus is my translation of: 16:53:43 plus ≡ λm.λn.λf.λx. m f (n f x) 16:54:34 :: (= inf {(-> x (x x))}) 16:54:35 <<<27795824>>> 16:54:35 :: (car (cdr (cdr ((cons 1) ((cons 2) ((cons 3) 0))) ))) 16:54:36 3 16:54:36 :: (inf inf) 16:54:37 An error: maximum recursion depth exceeded in cmp 16:54:41 aw sheesh 16:54:44 you use PYTHON'S STACK 16:54:47 that is TOTALLY lame 16:54:50 :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD 16:54:51 yes. 16:54:56 that's why i don't have tail recursion 16:55:09 :: [] 16:55:10 [] 16:55:10 :: [{}] 16:55:11 [<<<35741088>>>] 16:55:13 i used my own stack first, but... you know, i'm lazy 16:55:13 :: {} 2 16:55:14 2 16:55:17 huh whut 16:55:19 :: ({} 2) 16:55:19 f 16:55:22 uhh 16:55:22 'f' 16:55:24 riiiiiight 16:55:26 false 16:55:30 oh 16:55:32 automatically returned if nothing applies 16:55:34 oklopol: take a hint from lisp 16:55:37 make false the empty list 16:55:41 and call it nil 16:55:43 so nil = {} 16:55:46 and {} is printed as nil 16:55:47 :: ({(-> [a b] 4)} 6) 16:55:47 f 16:55:53 then 'true' is just the symbol 't' 16:56:01 which by virtue of oklotalk is already self-evaluating 16:56:03 :: (and 2 4) 16:56:03 mmm yes :D 16:56:04 f 16:56:09 :: (& 2 4) 16:56:10 True 16:56:13 what :D 16:56:13 doodoodododododoooo eeeet 16:56:18 sorry, that's a bit wrong. 16:56:21 how is it different frorm lisp? 16:56:23 oklopol: doooo eeeeeeeet 16:56:28 vixey: thats just the syntax 16:56:33 oklopol: Show vixey the real oklotalk quicksort 16:56:41 srsly :D 16:56:41 :: (- + -) 16:56:41 - 16:56:46 oklotalk doesn't really have anything to do with lisps 16:56:48 :: (- - -) 16:56:49 - 16:56:52 :: (+ - -) 16:56:53 + 16:56:53 oklopol: plzzor show him 16:56:54 hm? 16:56:55 i want to see it too 16:57:08 oklopol, that makes no sense whatsoever 16:57:25 AnMaster: his error handling is 'hard to explain' 16:57:29 AnMaster: indeed, you wrote weird code. 16:57:31 AnMaster: it returns the function name. 16:57:34 thanks for pointing that out 16:57:39 oklopol: but show us the oklosort!! 16:57:47 oklopol, ok... so why did that happen? 16:58:10 quicksort... that quicksort would be {->;h:t->{h>}\t+[t]+$ {h<=}\t} 16:58:11 i think 16:58:14 oklopol: no 16:58:17 i mean the real quicksort 16:58:18 of oklotalk 16:58:22 unless you changed it to look like that 16:58:24 because THAT SUCKS 16:58:26 i preferred the old syntax 16:58:28 :D 16:58:29 with loads of symbols 16:58:34 it hasn't really changed. 16:58:34 oklopol: don't tell me you changed it 16:58:37 i'll kill you, in your sleep 16:58:43 i want to see the REAL one that i remember 16:58:43 it's just, you can do it in like 1000 ways 16:58:45 it was awesome 16:58:50 show me the reaeaaaal one 16:58:52 that you showed before 16:58:52 :D 16:59:02 what one... you can paste it, i can tell you if it works... 16:59:09 oklopol: i dun wanna dig up logs 16:59:11 but it had things like 16:59:14 {}%()£$)_D>+>AS} 16:59:15 or something 16:59:17 :D 16:59:18 it was something like that 16:59:20 really symboly 16:59:21 wtf xD 16:59:21 and cool 16:59:26 awww just show me 16:59:27 § ? 16:59:36 that used to be the atom character 16:59:43 now it's $ 16:59:48 oklopol: no 16:59:53 seriously, just the oklotalk quicksort 16:59:54 also \ -> / in that one 16:59:55 that you used to show people 17:00:01 i always rewrite it. 17:00:06 i will try and find it 17:00:07 sry 17:01:06 AnMaster: atoms cannot be called, (+ - -) forces + to be called with [$- $-], but as atoms cannot be called, it just returns itself 17:01:18 oklopol: it didn't have {} as the first-last chars 17:01:19 i think 17:01:22 while it should return $f, indeed, doesn't really matter. 17:01:26 :: (+ wtf err?) 17:01:26 + 17:01:30 hm 17:01:30 ehird: that was cise, perhaps? 17:01:39 oklopol: no 17:01:39 cise has quicksort in like 8 characters 17:01:40 it wasn't 17:01:42 this was ages ago 17:01:44 like 2007 17:01:44 oklopol, how do you do a string? 17:01:55 :: "lol" 17:01:55 lol 17:01:57 cons up church numerals of course 17:01:58 and what about puts/printf or similar? 17:01:59 oklopol, ? 17:02:01 :p 17:02:03 :: (outn "lol") 17:02:03 lol 17:02:06 prints in my terminal. 17:02:10 :: (+ "what" "not really") 17:02:10 An error: invalid literal for int() with base 10: 'not really' 17:02:13 hehe 17:02:16 i should have that 17:02:16 nice error 17:02:16 wait 17:02:28 :: (+ (outn "what") "not really") 17:02:28 An error: invalid literal for int() with base 10: 'not really' 17:02:36 :: (+ (outn "what") (outn "not really")) 17:02:36 An error: invalid literal for int() with base 10: 'not really' 17:02:39 hm 17:03:06 hmm 17:03:10 i should make reload 17:03:45 oklopol: cooooooooooool, i have an a^nb^n problem 17:03:47 in my markup system! 17:03:49 -!- otobot has quit (Read error: 104 (Connection reset by peer)). 17:03:49 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)). 17:03:56 it matches *a*, ***a***, and ****a**** as bold 17:03:56 ehird: what? 17:03:58 but not **a* 17:03:59 :D 17:04:01 -!- otobot has joined. 17:04:06 oklopol, you forgot PING PONG? 17:04:09 :: (+ "asd" "fase") 17:04:09 asdfase 17:04:10 so i can't use regexps 17:04:15 AnMaster: no 17:04:16 AnMaster: freenode has no ping timeouts 17:04:19 i fixxored the bot a bit 17:04:24 ehird, they do TCP timeouts indeed 17:04:27 :: (+ (outn "what") (outn "not really")) 17:04:27 whatnot really 17:04:41 :: (- "foo" "oo") 17:04:41 f 17:04:43 :D 17:04:45 :O 17:04:46 :: (- "foof" "oo") 17:04:46 f 17:04:51 no that makes no sense 17:04:51 that's coincidence 17:04:52 AnMaster: that's not up to them 17:04:52 heh 17:04:54 that's just tcp timing out 17:04:59 :: (- "goof" "oo") 17:04:59 f 17:05:01 ah 17:05:06 -!- Judofyr has joined. 17:05:07 AnMaster: f = false 17:05:08 :: (- "good" "oo") 17:05:08 f 17:05:11 ah ok 17:05:13 right 17:05:23 oklopol, otherwise that would be cool 17:05:29 :: (- 0 3) 17:05:30 -3 17:05:38 i can add whatevery you want, or you can add yourself, by making (= str {...}) 17:05:41 *whatever 17:05:42 how comes - can evaluate to false? 17:05:49 err 17:05:53 AnMaster: when the pattern match fails 17:05:54 - is the atom $- 17:05:58 :: $a 17:05:59 a 17:05:59 IT DOESN'T DO ANYTHING, EVER 17:06:00 :: $$a 17:06:01 $a 17:06:02 ok 17:06:03 :: $$$$$a 17:06:03 $$$$a 17:06:06 $ is like quote 17:06:06 :D 17:06:12 :: $ 17:06:14 ehird: not really :D 17:06:16 :: $$ 17:06:21 oklopol: did it just print out an empty atom 17:06:22 XD 17:06:23 :: 17:06:28 dunno :D 17:06:32 :: (% "foo" -1) 17:06:33 :: help 17:06:35 hm? 17:06:36 I WANNA COMMAND LIST 17:06:39 did it crash 17:06:40 haha 17:06:41 we broke it 17:06:43 :: (+ 4 5) 17:06:45 i think my $ broke it 17:06:46 it still wants input 17:06:47 perhaps 17:06:49 to complete the symbol 17:06:53 but can't get any 17:06:58 haha 17:06:59 haha 17:07:05 -!- otobot has quit (Read error: 104 (Connection reset by peer)). 17:07:09 wait a sex 17:07:14 a sex? 17:07:15 yes plz 17:07:17 a sex? 17:07:21 xD 17:07:23 is this otobot sex 17:07:26 parser infloops xDD 17:07:26 because that sounds painful 17:07:29 :DDDDDDDDDDDDDDDDD 17:07:33 * oklopol is lolling 17:07:53 turing complete parser 17:07:53 OMG 17:07:59 oklopol: make a language with a turing complete parser 17:08:20 eh 17:08:28 ehird, what exactly does that mean 17:08:49 AnMaster: depending on the input text the parser can perform arbitary computations 17:08:59 so, you could write a program which runs a brainfuck program *entirely by its syntax* 17:09:00 ehird, tried the C preprocessor? 17:09:02 again, 17:09:07 cpp is not TC 17:09:09 how is this differetn from lisp? 17:09:09 and that's not what i mean 17:09:12 ehird, hm true 17:09:17 i mean like the actual parsing 17:09:18 while(1) { cpp } is turing complete 17:09:19 it is 99-bottles of bear complete 17:09:19 is turing complete 17:09:24 bear 17:09:25 XD 17:09:30 beer* 17:09:34 -!- otobot has joined. 17:09:35 I always mix them up 17:09:40 :: $$ 17:09:41 $ 17:09:46 :: $$$ 17:09:46 $$ 17:09:46 ehird: oklotalk actually has state lists, which are basically made for parsing 17:09:54 :: (% "foo" -1) 17:09:54 f 17:09:55 oklopol: can i have a list of commands 17:10:04 :: (+ 32.41 -1) 17:10:04 An error: Application consists of 2 or 3 expressions. 17:10:08 :: (+ 32.41 1) 17:10:08 An error: Application consists of 2 or 3 expressions. 17:10:10 ehird: i already gave 17:10:14 oklopol: where 17:10:15 http://www.vjn.fi/pb/p612313333.txt 17:10:18 oklopol, how do you do floating points? 17:10:27 AnMaster: don't exist? 17:10:32 ok 17:10:32 i mean 17:10:34 they don't 17:10:36 oklopol, no sqrt yet? 17:10:37 :: (\ {} [1 2 3]) 17:10:37 [] 17:10:38 you have my rational numbers. 17:10:41 :: . 17:10:42 . 17:10:48 oklopol: variadic? 17:10:51 can i do variadiiiic 17:10:56 oklopol, rational numbers hm? 17:11:14 oklopol, so how do you do 1/3 to it? 17:11:16 vixey: how is oklotalk-- different from lisp? 17:11:16 :: (= . {(-> a b {(-> c (a (b c)))})}) 17:11:17 <<<27780600>>> 17:11:19 wtf :D 17:11:27 = not 17:11:30 :: (not 1) 17:11:31 1 17:11:32 :: (not f) 17:11:33 not 17:11:34 lisp isn't even one of the contributors to it 17:11:42 i didn't know lisp when i made most of it 17:11:48 :: (= not {(-> f t) (-> _ f)}) 17:11:49 <<<27793048>>> 17:11:54 :: (not f) 17:11:54 t 17:11:55 :: (not t) 17:11:55 t 17:11:58 WTF 17:12:02 hmm 17:12:03 hehe 17:12:05 :: (not $t) 17:12:05 t 17:12:07 perhaps i should add not :D 17:12:11 borkering 17:12:12 wait 17:12:22 :: (! 1) 17:12:23 1 17:12:23 ehird: no 17:12:25 :: (! +) 17:12:25 ! 17:12:29 Huh? 17:12:29 it calls $t with $not as arg 17:12:32 thanks for making no sense 17:12:32 returning $not 17:12:34 i think. 17:12:38 oklopol: hahahahahahahahahahahaha whut 17:12:50 :: (. and or) 17:12:51 <<<27804096>>> 17:12:59 second arg is called if first is an atom. 17:13:01 :: (. outn outn) 17:13:02 <<<27793328>>> 17:13:07 :: ((. outn outn) "hi") 17:13:07 An error: invalid literal for int() with base 10: 'hi' 17:13:11 fgh 17:13:13 in oklotalk--, it's actually that simple, i think 17:13:14 hmm 17:13:15 :: (= hi "hi") 17:13:16 hi 17:13:19 :: ((. outn outn) hi) 17:13:20 An error: invalid literal for int() with base 10: 'hi' 17:13:23 dfg';dfg'df'glg'f;dl'd;fl';fgdl;'d 17:13:27 wtf :P 17:13:28 :: (= onon (. outn outn)) 17:13:29 <<<27819424>>> 17:13:31 :: (onon hi) 17:13:31 An error: invalid literal for int() with base 10: 'hi' 17:13:39 i love my life 17:13:43 i haven't really done anything with strings 17:13:48 but... 17:13:48 hmm 17:13:51 oklopol: string = list of int 17:13:52 :D 17:13:57 :: (sqrt 3 4) 17:13:58 should be, but isn't. 17:13:58 f 17:14:19 oklopol, is it turing complete? 17:14:24 AnMaster: yes 17:14:24 the problem is, it's not something i can just whip out my ass to fix it 17:14:28 AnMaster: trivial to make ski 17:14:28 AnMaster: it has closures 17:14:33 AnMaster: ergo it is TC 17:14:34 hm ok 17:14:34 well 17:14:36 pretty much 17:14:39 AnMaster: you can do the lambda calculus in it 17:14:44 yeah 17:14:48 \x.E -> {(-> x E)} 17:14:53 xy -> (x y) 17:14:54 but now to tackle those strings... 17:14:55 ehird, no I can't, because I don't know bambda 17:14:55 tada, LC 17:14:57 :P 17:15:00 :: (. "a " "s") 17:15:01 <<<27842680>>> 17:15:01 AnMaster: you suck 17:15:07 heheh 17:15:13 you don't really want O(n) append on strings 17:15:13 lambda* 17:15:24 vixey: what? 17:15:36 lists don't have O(1) append 17:15:42 oklopol, what does the (. ) thing do 17:15:44 the . that is 17:15:44 you can make O(1) lists 17:15:48 oklopol: make O(1) lists! 17:15:50 just store the pointer to the end 17:15:55 :D 17:16:02 python does that for me, duh 17:16:06 bah 17:16:08 :P 17:16:42 ehird: i promise i'll start working on a c version or something 17:16:50 dunno what language, but some other than python 17:16:52 or... 17:17:08 i could just do what everyone keeps telling me and start making the compiler in itself 17:17:15 oklopol, can you write an oklotalk interpreter in oklotalk? 17:17:21 AnMaster: right on the mark! 17:17:23 two seconds 17:17:23 hm 17:17:24 congrats 17:17:26 well, actually you *can't* 17:17:27 sounds too hard 17:17:32 ehird, eh? 17:17:39 strings cannot be splitted in any way. 17:17:44 but that's trivial to add ofc 17:17:45 and 17:17:47 ehird, wtf do you mean? 17:17:55 i should really just do string -> [int] as ehird said 17:17:59 ehird, ? 17:18:06 AnMaster: that we said the same thing 17:18:10 ah 17:18:18 oklopol, can you write an oklotalk interpreter in oklotalk? i could just do what everyone keeps telling me and start making the compiler in itself 17:18:24 ehird needs an interpreter 17:18:24 one second difference here 17:18:30 ah 17:18:49 7 second difference here 17:18:58 I guess I lagged, or ehird wouldn't have acted like that 17:19:12 i am a pure function in ST 17:19:15 i have state packets. 17:19:30 ehird :: String -> StateT WTFs ST Nonsense 17:19:46 ehird "HELLO" => "GO DIE IN A FIRE" 17:19:52 ehird "rocks" => "AAAAAAAAAAAAA" 17:20:01 ehird "" => string of infinite length 17:20:06 what language is that? 17:20:08 ehird (string of infinite length) => string of -1 length 17:20:15 vixey: well, haskell, but the => is meaning 'evaluates to' 17:20:21 the previous was just my types 17:20:22 :D 17:20:40 what's the difference from = and =>? 17:20:46 that was examples 17:20:48 not a definition 17:20:53 ehird "ehird" => ??? 17:20:54 ah ok 17:21:03 ("ehird" "ehird") 17:21:08 :: ("ehird" "ehird") 17:21:09 f 17:21:11 hah 17:21:13 :: (. "ehird" "ehird") 17:21:14 <<<27841920>>> 17:21:19 wtf :P 17:21:19 AnMaster: ehird "ehird" => "stop being a goddamn smart ass trying to make me specify this function earlier I HATE YOU AND ALL YOUR GODDAMN FAMILY which is made of meat" 17:21:31 :: (:;: "ehird" "ehird") 17:21:32 f 17:21:38 :: (= ehird (outn "ehird!")) 17:21:38 ehird! 17:21:43 :: (ehird) 17:21:43 An error: Application consists of 2 or 3 expressions. 17:21:44 why does . have a different behavior :O 17:21:45 err 17:21:49 oklopol, ?? 17:21:53 PARSE ERROR :OOOOO 17:22:02 the world of oklotalk cries 17:22:13 [17:21] An error: Application consists of 2 or 3 expressions. 17:22:16 only one :( 17:22:17 arg 17:22:18 AnMaster: that's an invalid application 17:22:20 *only one arg 17:22:27 no wait 17:22:29 hmm? 17:22:31 only 1 or 2 args 17:22:38 [17:21] An error: Application consists of 2 or 3 expressions. 17:22:38 well 17:22:41 oklopol, so how do you define a function now again 17:22:48 "2-3 expressions" is better 17:22:51 AnMaster: {...pattern...} 17:22:56 AnMaster: pattern is (-> PATTERN EXPR) 17:22:59 {(-> x x)} 17:23:01 is identity 17:23:08 {(-> [a b] a) (-> foo bar)} 17:23:09 :: (= ehird {(outn "ehird!")}) 17:23:09 <<<27828632>>> 17:23:11 ehird: it is not (function arg arg ...) 17:23:11 maps [a b] to a 17:23:13 and foo to bar 17:23:13 XD 17:23:14 : (ehird) 17:23:16 :: (ehird) 17:23:16 An error: Application consists of 2 or 3 expressions. 17:23:18 err 17:23:19 AnMaster: uh... PATTERN 17:23:20 it is (expression expression{1,2}) 17:23:23 hm 17:23:25 AnMaster: pattern is (-> PATTERN EXPR) 17:23:30 hm.... 17:23:35 :: (= ehird {(-> x (outn "ehird!"))}) 17:23:35 <<<27818864>>> 17:23:38 :: (ehird f) 17:23:38 ehird! 17:23:40 aha! 17:23:41 -> takes any number of expressions 17:23:49 :: (ehird)) 17:23:49 An error: Unmatching parens @ row 1. 17:23:51 :: (ehird) 17:23:51 An error: Application consists of 2 or 3 expressions. 17:23:53 so... 17:24:10 do I get this right? it does not accept functions taking no arguments 17:24:14 ie, procedures? 17:24:24 {(-> ...)} makes sense 17:24:26 AnMaster: more like, it's not like thet 17:24:32 AnMaster: procs can only take 1 argument that you define yourself 17:24:33 but what is {..} and (-> ...) alone? 17:24:34 *that 17:24:36 but + etc can take 2 17:24:39 because they'er magic 17:24:42 this is a very early prototype ofc 17:24:45 vixey: nonsense 17:24:45 oklopol, how do you refer to an argument in the function body? 17:24:45 AnMaster: what should (proc) do? 17:24:47 vixey: :) 17:24:56 AnMaster: name it 17:24:57 so why not just write 17:24:57 oklopol, something like: :: (= hi {(-> x (outn "Hi $1!"))}) 17:24:58 THERE ARE NO FUNCTIONS, THERE ARE THINGS. 17:24:59 {(-> x x)} 17:25:03 {-> ...} 17:25:06 think function where appropriate 17:25:10 think object where approriate. 17:25:11 vixey: its pattern matching 17:25:13 it's not lisp. 17:25:17 vixey: you can have multiple patterns 17:25:30 can you make new types? 17:25:31 oklopol, something like: :: (= hi {(-> x (outn (+ "Hi " (+ x "!")))}) 17:25:34 maybe? 17:25:37 vixey: i have the rational type 17:25:38 kinda. 17:25:40 vixey: yes, just make them into functions 17:25:43 it's made functionally thuogh 17:25:45 *though 17:25:49 ;; (= hi {(-> x (outn (+ "Hi " (+ x "!")))}) 17:25:51 vixey: see rational class: http://www.vjn.fi/pb/p612313333.txt 17:25:51 :: (= hi {(-> x (outn (+ "Hi " (+ x "!")))}) 17:25:52 An error: Unmatching parens @ row 1. 17:25:53 err wrait 17:25:53 you can make it mutable though, why not 17:25:54 err 17:26:02 http://www.vjn.fi/pb/p535315136.txt 17:26:03 :: (= hi {(-> x (outn (+ "Hi " (+ x "!"))))}) 17:26:03 <<<27767632>>> 17:26:06 AnMaster: http://www.vjn.fi/pb/p535315136.txt (= rat starts there 17:26:07 err 17:26:09 vixey 17:26:10 :: (hi "test") 17:26:10 Hi test! 17:26:13 yay! 17:26:15 it worked!! 17:26:18 heh 17:26:24 :: <-- comment --> 17:26:24 f 17:26:28 :: 17:26:28 -!- otobot has quit (Remote closed the connection). 17:26:29 :: (+ <-- comment --> 2) 17:26:30 xD 17:26:32 :( 17:26:34 okay, whit 17:26:35 *shit 17:26:51 ahh cool 17:27:05 -!- otobot has joined. 17:27:10 :: (+ <-- comment --> 2) 17:27:10 2 17:27:11 oklopol, is + varadic? 17:27:13 looool 17:27:15 :: (= hello {(-> x (outn (+ "Hello " x "!"))))}) 17:27:16 :: (+ 1 2 3) 17:27:16 An error: Unmatching parens @ row 1. 17:27:16 An error: Application consists of 2 or 3 expressions. 17:27:18 AnMaster: no 17:27:19 :: (= hello {(-> x (outn (+ "Hello " x "!")))}) 17:27:19 :) 17:27:19 An error: Application consists of 2 or 3 expressions. 17:27:23 sigh 17:27:29 :: (= hi {(-> x (outn (+ "Hello, " (+ x "!"))))}) 17:27:29 <<<25658472>>> 17:27:30 AnMaster: I'M ONLY GOING TO TELL THIS ONCE MORE, + ISN'T A FUNCTION 17:27:31 IT'S AN ATOM 17:27:32 :: (+ <-- comment --> 2) <-- so a comment actually evaluates to a value? --> 17:27:33 2 17:27:35 IT DOESN'T DO ANYTHING 17:27:38 :: (hi "world") 17:27:38 Hello, world! 17:27:40 :: (+ <-- comment --> 1 1) 17:27:40 2 17:27:42 hmm 17:27:43 weird 17:27:44 oklopol, ok whatever 17:27:45 :: (+ 2) 17:27:45 2 17:27:46 ATOMS, BY DEFINITION, ARE THE ONE THING THAT *CANNOT* BE CALLED 17:27:47 aha 17:27:47 :D 17:28:00 oklopol, ok right 17:28:12 oklopol, yet my example above worked, didn't it? 17:28:16 the evaluation goes like this in an application 17:28:24 hmm 17:28:29 AnMaster: what exactly? 17:28:35 :: (= hi {(-> x (outn (+ "Hello, " (+ x "!"))))}) 17:28:35 (= hello {(-> x (outn (+ "Hello " x "!"))))}) ? 17:28:37 :: (hi "world") 17:28:37 Hello, world! 17:28:38 no it didn't 17:28:48 looks to me like it did? 17:28:59 it did produce what I intended it to 17:29:03 whmm 17:29:10 :: (= hello {(-> x (outn (+ "Hello " x "!"))))}) 17:29:10 An error: Unmatching parens @ row 1. 17:29:17 :: (= hi {(-> x (outn (+ "Hello, " (+ x "!"))))}) 17:29:17 <<<25698552>>> 17:29:20 :: (hi "world") 17:29:20 Hello, world! 17:29:23 aha 17:29:25 oh 17:29:25 i know why!! 17:29:27 you defined 'hi' before 17:29:28 (+ ) 17:29:32 oh wait 17:29:33 duh 17:29:34 of course 17:29:34 right 17:29:35 okay 17:29:37 what? 17:29:40 AnMaster: of course it worked 17:29:41 :: (= hi {(-> x (outn (+ "Hello, " (+ x "!"))))}) 17:29:41 <<<25708064>>> 17:29:43 what's not working about that 17:29:48 :: (+ 1 2 3) 17:29:49 An error: Application consists of 2 or 3 expressions. 17:29:49 ehird, indeed 17:29:57 just it seems oklopol said it didn't work 17:30:01 AnMaster: i assumed you were doing something like a varadic + 17:30:08 no it didn't 17:30:25 oklopol, well varadic stuff would help IMO 17:30:33 well 17:30:37 defined semantics, please 17:30:40 (+ 1 2 3) 17:30:43 what should that do 17:30:46 oklopol: is 1+2+3 17:30:53 ah, well 17:30:59 -!- shinkuzin has quit (No route to host). 17:31:04 but the point is 17:31:07 oklotalk will be infix 17:31:09 as you see, this is just alternative syntax over infix & prefix 17:31:12 when it loses its -- 17:31:15 that's why only 2 or 3 17:31:17 so it would make no sense 17:31:17 expressions 17:31:22 yeah 17:31:24 it's APL-style 17:31:27 ya 17:31:29 APL only has unary and binary functions too 17:31:34 and it was used a lot :) 17:31:47 :: (+ [1 2 3] [4 5 6]) 17:31:48 and it's still *awesome* 17:31:48 [1 2 3 4 5 6] 17:31:55 oklopol: uhh, make it an arary language plz 17:31:56 :( 17:32:01 arary? 17:32:06 that should be [5 7 9] 17:32:09 that's how apl, k, etc do it 17:32:13 array languages r0x 17:32:14 :D 17:32:15 hmm 17:32:21 (∼R∈R∘.×R)/R←1↓⍳R 17:32:27 that's a prime number finder 17:32:33 concise because of the array stuffs 17:32:53 oklopol: this sorts according to word length, and works with any N-dimensions of array: 17:32:54 X[⍋X+.≠' ';] 17:33:00 well as you see, it's just what i decide lists to do on +... but as lists are things of their own, they should really have semantics for "+" on their level 17:33:06 which would be concatenation level. 17:33:10 oklopol: noo, in array languages 17:33:13 its not up to the function 17:33:18 ehird, that used non ascii 17:33:22 (op [1 2 3] [4 5 6]) is: 17:33:27 [(op 1 4) ...] 17:33:27 etc 17:33:28 you want to try /dev/urandom next? 17:33:30 that's language-level 17:33:36 AnMaster: uhm, apl uses non-ascii 17:33:37 ehird: god no 17:33:38 it predates ascii 17:33:40 :< 17:33:45 oklopol: that's why they're so short 17:33:45 :D 17:33:54 oklotalk wins apl in many cases. 17:34:32 also, at some point it became about being nice to add types and extend syntax... so it's more like semi-short, and nice to use 17:34:39 (nice to use for me) 17:34:43 (:D) 17:34:44 oklopol: aha, that's what i wanted originally 17:34:51 you agree! mwahaha 17:34:54 omg! 17:35:00 :: 17:35:03 :: :: 17:35:03 :: 17:35:08 :: \ 17:35:08 ftr 17:35:11 eh? 17:35:15 filter. 17:35:22 oklopol, huh? 17:35:30 :: (\ {(< _ 2)} [1 2 3]) 17:35:30 it filtered my line? 17:35:31 [1] 17:35:35 :: \ 0 1 17:35:36 1 17:35:38 :: \ 0 1 3 17:35:38 3 17:35:42 :: \ 0 1 3 5 6 17:35:42 6 17:35:44 AnMaster: forgot parens 17:35:45 that just evaluates the symbols. 17:35:47 ah 17:35:52 :: \\ 17:35:52 \\ 17:36:03 :: (\ 4 2) 17:36:03 An error: 'int' object is not iterable 17:36:13 :: (\ [4 5] [2]) 17:36:14 [] 17:36:19 :: (\ [4 2 5] [2]) 17:36:19 [] 17:36:22 eh 17:36:23 whut :) 17:36:25 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)). 17:36:27 you got to tell me how that works 17:36:31 hehe 17:36:32 well 17:36:34 because I can't figure it out 17:36:35 (\ func list) 17:36:46 lists can be used as a function though... 17:37:01 -!- Judofyr has joined. 17:37:09 :: (\ [2 3 5]) 17:37:10 An error: 'int' object is not iterable 17:37:15 um? 17:37:35 :: (\ [2 3 5] [5 6]) 17:37:35 [] 17:37:42 * AnMaster gives up 17:37:50 hmm 17:37:52 [] isn't a list 17:37:54 -.. 17:37:55 function 17:38:02 give it a function as second arg 17:38:10 oklopol, what is a list then 17:38:15 [...] 17:38:18 [] isn't a function 17:38:19 i meant 17:38:21 ah 17:38:33 ehird, anyway you could do that array stuff in other languages, operator overloading in C++ could do it 17:38:38 oklopol: i am going to make a python lisp now, where EVERYTHING is first-class 17:38:48 AnMaster: its about the paradigm. you could do stack-based programming in c++ too 17:38:52 so arrayobject + otherarrayobject caused them to be added the way you want 17:39:08 oklopol: the parser, the callstack 17:39:09 everything 17:39:16 :: reload 17:39:16 reload 17:39:18 hm 17:39:26 oklopol: good idea or not :D 17:39:29 :: (= d 5) 17:39:29 5 17:39:30 :: d 17:39:31 5 17:39:32 :: reload 17:39:33 reload 17:39:34 :: d 17:39:35 d 17:39:38 ehird: very 17:39:43 :: (= = x {(outn(1))} 17:39:43 An error: Unmatching parens @ row 1. 17:39:44 hmmmm let's see now... 17:39:47 :: (= = x {(outn(1))}) 17:39:48 An error: Unmatching parens @ row 1. 17:39:54 oklopol: here's another example: 17:40:04 first class macros 17:40:10 :: (= = x {( (outn(x)) )}) 17:40:10 An error: Unmatching parens @ row 1. 17:40:11 err 17:40:18 are they unmatched? 17:40:21 :: (map [1 2 3 4 5] [[$! 2] [$! 1] [$! 0]]) 17:40:21 An error: Lst instance has no attribute '__len__' 17:40:24 :< 17:40:24 oklopol, I can't see them being that 17:40:32 AnMaster: nothing works atm 17:40:34 wait a sex 17:40:46 errrrr 17:40:51 actually 17:40:52 x != c 17:41:02 oklopol: if ==> # 17:41:05 and you can do 17:41:08 no wait 17:41:09 that would be 17:41:10 AnMaster: well you have too many args for == 17:41:12 *= 17:41:16 oklopol, hm ok 17:41:17 # 17:41:19 and you could do 17:41:20 (field 17:41:20 it's the wrong error, but an error still 17:41:22 er 17:41:24 (field 'args if) 17:41:27 and get (c t e) 17:41:34 :: (= = {(-> (outn(x)) )}) 17:41:34 An error: Unmatching parens @ row 1. 17:41:40 no I don't 17:41:40 hmm 17:41:43 well... 17:41:50 they *are* matched 17:41:53 :: (= + {(-> (outn(x)) )}) 17:41:54 An error: Unmatching parens @ row 1. 17:41:55 :: (= = {(-> (outn x) )}) 17:41:56 <<<25760392>>> 17:42:00 :: (= a {(-> (outn(x)) )}) 17:42:01 An error: Unmatching parens @ row 1. 17:42:05 AnMaster: why have (x) around the arg 17:42:05 :: (= 5) 17:42:06 An error: Assignment consists of 2 args. 17:42:07 that makes no sense 17:42:25 ehird, hm right 17:42:26 ehird: perhaps to evaluate it? :D 17:42:41 oklopol, yeah could be 17:42:45 :: (= a {(-> (outn (x)) )}) 17:42:46 An error: Application consists of 2 or 3 expressions. 17:42:48 anyway 17:42:52 you don't do it like that 17:42:54 :: (= a {(-> (outn (x x)) )}) 17:42:54 <<<25761432>>> 17:42:55 :D 17:42:57 yarr 17:43:01 haha 17:43:03 :: (a a) 17:43:03 An error: Lst instance has no attribute '__len__' 17:43:06 ? 17:43:09 btw. siisii would crash it and such... 17:43:10 hm 17:43:10 :: (a 1 2) 17:43:11 An error: Lst instance has no attribute '__len__' 17:43:12 AnMaster: you missed the arg name 17:43:17 :: (= a {(-> x (outn (x x)) )}) 17:43:18 <<<25701112>>> 17:43:18 ah right 17:43:19 :: (a a) 17:43:20 An error: maximum recursion depth exceeded 17:43:24 hehe 17:43:27 python's stack has a limit 17:43:27 :P 17:43:29 :: (= = {(-> (outn (x x)) )}) 17:43:30 <<<35563400>>> 17:43:32 :: (= = {(-> x (outn (x x)) )}) 17:43:33 <<<35556728>>> 17:43:38 :: (x a) 17:43:39 An error: maximum recursion depth exceeded 17:43:43 :: (= a) 17:43:43 An error: Assignment consists of 2 args. 17:43:45 hm 17:43:45 AnMaster: = is special cased 17:43:48 aww 17:43:52 :( 17:43:59 AnMaster: otherwise the var name would be evaluated 17:44:07 :: <-- non closed comment 17:44:07 f 17:44:10 aww 17:44:11 ehird: btw. look at the comparisons in the rational example 17:44:16 fun? :D 17:44:17 oklopol: why 17:44:20 well 17:44:26 hmm, wait.. 17:44:26 just the code, i kinda like it 17:44:27 :: (<-- non closed comment 17:44:27 An error: Empty application. 17:44:28 oh cool 17:44:29 yes 17:44:29 awesome 17:44:33 (-> [(@ o [$any [$> $< $>= $<=]]) (/ dn dd)] 17:44:33 (o (* n dd) (* dn d))) 17:44:35 you get it? 17:44:36 that's nice 17:44:39 well 17:44:40 :: @ 17:44:41 @ 17:44:43 should be (any ...) 17:44:47 :: (@ @) 17:44:47 @ 17:44:50 special functions should be as applications 17:44:53 in pattern matching 17:45:08 but... didn't change it yet, not that it's that hard, but i have to change all my test progs 17:45:09 :: (¶ 1) 17:45:09 An error: Atm instance has no attribute '__len__' 17:45:13 hmm :D 17:45:18 aaaaaaaaaaaaah 17:45:18 oklopol, what exactly does that error mean 17:45:30 well the error is in my implementation 17:45:34 it shouldn't be there 17:45:42 but i fixed it, in my head, like a second ago 17:45:43 so wait 17:45:48 :: (+ ½ 1) 17:45:48 + 17:45:55 lol 17:45:56 oklopol, THAT SHOULD WORK! ½ is rational 17:46:01 1/2 == rational :P 17:46:02 haha 17:46:41 :D 17:47:18 :: reload 17:47:19 reload 17:47:29 oklopol, what does reload do? 17:47:33 retry something that said __len__ doesn't work 17:47:41 oklopol: name my crazy pythonlispfirstclassawesome 17:47:41 :: (¶ 1) 17:47:43 1 17:47:57 ehird, plisp? 17:47:59 ehird: well you could steal the name soup? 17:48:00 plip? 17:48:06 i hear the soup people haven't really gotten much done 17:48:10 oklopol: haha 17:48:12 BUT THEY WILL 17:48:13 SOON 17:48:17 :: (+ ½ 1) 17:48:18 + 17:48:21 sigh 17:48:39 right, you're one of those "THE SOUP WILL RISE AGAIN" cooks... well i myself am not that optimistic. 17:48:39 what more can you make first class than procedures and continuations? 17:48:39 oklopol, would be cool if that actually worked 17:48:39 vixey: function source code 17:48:39 would make it way more esoteric 17:48:40 :D 17:48:40 vixey: internal interpreter source 17:48:44 vixey: the parser 17:48:46 etc 17:48:49 oklopol: XD 17:48:53 oklopol, it's the unicode symbol for 1/2... 17:48:53 :D 17:48:54 cool 17:49:08 first-class parser is in a lot of lisps 17:49:09 but MEH 17:49:14 the idea is 17:49:18 :: (+ TWO ONE) 17:49:19 + 17:49:19 if the interpreter uses the data structure 17:49:22 you can get at it 17:49:27 oh intercal syntax didn't work 17:49:27 oh ,first class scopes of course 17:49:28 :/ 17:50:10 ehird, what about first class class? 17:50:11 i should make scopeless functions, then you could do stuff like /= 17:50:12 * AnMaster runs 17:50:16 AnMaster: haha 17:50:16 that maps = 17:50:19 first class first classity 17:50:25 (set! first-classity #f) 17:50:29 why not first class first? 17:50:31 ehird, first class ticket 17:50:32 :D 17:50:33 ;; This operation disabled because first classity is disabled 17:50:44 impossible to turn off because turning it off makes turning it off impossible 17:50:45 :D 17:51:17 ehird, XD 17:52:32 What kind of tickets do functional programmers prefer when traveling by aircraft? Answer: first class tickets. 17:52:34 * AnMaster runs 17:52:35 soup objects will be called pans 17:52:45 ehird, what is soup? 17:52:49 AnMaster: my first class lisp 17:53:01 ehird, you said the name was in use? 17:53:11 it is 17:53:16 but by me and oklopol 17:53:18 :) 17:53:19 :D 17:53:21 a 17:53:22 uhh 17:53:22 ah* 17:53:26 AND A CRACK DEVELOPMENT TEAM 17:53:27 OF COURSE 17:53:28 <_< 17:53:28 hmmmmm 17:53:36 or a development team on crack 17:53:40 craq 17:53:41 oklopol: Soup lisp will have first-class GCs 17:53:41 :D 17:53:53 -!- Sgeo has joined. 17:53:54 perhaps i should make oklotalk also evaluate stuff given urls... that's like a few lines 17:53:54 also, call/cc will be trivial 17:54:16 ehird: perhaps you just make it as a syntax extension to the original soup 17:54:18 oklopol, oooh nice, then I know how to disable it 17:54:23 oklopol: but then i have to make soup 17:54:35 AnMaster: wut? :D 17:54:56 oklopol, tell it to evaluate a 100 MB download or so 17:55:28 oklopol: cooks are interpreters, pans objects. Pan(cook) --> 'this pan belongs to cook' OR cook.pan() --> 'cook, give me a pan belonging to you' 17:55:30 which is nicer 17:55:34 AnMaster: it'll time out 17:56:04 AnMaster: go for it! 17:56:11 oklopol: BUT WHICH 17:56:13 :: http://adelie.polymtl.ca/releases/x86/2007.0/livecd/livecd-i686-installer-2007.0.iso 17:56:13 http://adelie.polymtl.ca/releases/x86/2007.0/livecd/livecd-i686-installer-2007.0.iso 17:56:16 aww 17:56:19 oklopol, :/ 17:56:25 ehird: well lol? :D 17:56:27 AnMaster: he didn't implement it yet 17:56:31 oh 17:56:33 oklopol: WHICH 17:56:39 otherwise evaluating a huge ISO 17:56:47 would rock 17:56:52 ehird: both? 17:56:54 hmm 17:57:42 oklopol: haha 17:57:45 ehird: i'm not sure what you mean, but latter 17:57:45 i guess 17:57:48 but which should i use 17:57:54 :: (* 2 4) 17:57:54 2 17:57:54 cook.pan() would just call Pan(cook) 17:57:57 :: (* "foo" 4) 17:57:57 An error: invalid literal for int() with base 10: 'foo' 17:58:03 Strings can be concatenated ('+') and multiplied by an integer ('*'). 17:58:04 eh? 17:58:10 :: (* 4 "foo") 17:58:10 4 17:58:11 what 17:58:15 :: (* "foo" 4) 17:58:15 An error: invalid literal for int() with base 10: 'foo' 17:58:17 wtf :D 17:58:19 oklopol, one of the links you posted 17:58:20 :: (* [a b c] 4) 17:58:21 [a b c] 17:58:22 http://www.vjn.fi/pb/p612313333.txt 17:58:22 eh 17:58:24 it should replicate it 17:58:27 foofoofoofoo 17:58:28 :: (+ 4 5) 17:58:29 4 17:58:30 oh 17:58:33 everything broke 17:58:35 wait a sex 17:58:37 oklopol: what should i call the id of pans 17:58:38 object id 17:58:45 ehird, pancake? 17:58:51 haha 17:58:52 okay 17:58:55 self.pancake :D 17:59:04 aww maybe too confusing 17:59:12 class Pan(object): 17:59:12 def __init__(self, cook): 17:59:12 self.pancake = cook.next_id() 17:59:22 god 17:59:25 that is confusing 17:59:29 AnMaster: totally 17:59:30 but hilarious 17:59:34 maybe i should call it cook.flip 17:59:42 :: reload 17:59:43 reload 17:59:45 ::(+ 4 5) 17:59:47 :: (+ 4 5) 17:59:48 9 17:59:50 I also have Pan.throw, which copies an object to the context of another interpreter 17:59:55 :: (* "foo" 4) 17:59:55 foofoofoofoo 17:59:59 :: (* 4 "foo") 18:00:00 An error: invalid literal for int() with base 10: 'foo' 18:00:16 COCKFLIP 18:00:22 oklopol, I thought order shouldn't matter? 18:00:24 :: (* "sd" 4) 18:00:24 sdsdsdsd 18:00:31 when adding of multiplying 18:00:32 why would you think that? 18:00:43 * is not multiplication 18:00:44 oklopol: remember, it's not ASSOCIATIVE 18:00:46 because 4+5 == 5+4 18:00:47 i lectured you about + before 18:00:49 ;) 18:00:56 ofc its bullshit 18:00:56 oklopol, hm 18:00:57 but still 18:01:00 nitpicking is fun 18:01:01 :: (* 5 4) 18:01:02 20 18:01:09 oklopol, looks like multiplication? 18:01:15 that sends the object 5 the list [$* 4] 18:01:21 5 can do what it wants with it 18:01:27 yeargh 18:01:39 AnMaster: yeargh, but that's how addition etc on rationals works 18:01:42 you can redefine all this in oklotalk, but not yet. 18:01:44 oklopol, and + then 18:01:52 :: (+ 5 4) 18:01:52 9 18:01:56 what exactly does that do? 18:02:05 same thing 18:02:11 hm 18:02:13 5 ! [$+ 4] 18:02:18 in real oklotalk 18:02:20 mhm 18:02:42 except it's sent as #lo... but you'd have to know oklotalk :P 18:02:46 well 18:02:47 anyway 18:02:50 5 is sent the list 18:02:54 with the operator and the arg 18:03:09 if it knows what to do, it does it 18:03:10 ok, what about negative numbers 18:03:14 otherwise just returns $f 18:03:16 do you do (- 0 1) ro get -1? 18:03:20 or is there any simpler way 18:03:23 the interp supports them internally 18:03:27 but not yet syntactically 18:03:33 oh 18:03:40 because (- 0 1) would be almost befunge 18:03:43 i could add that... it's just the syntax is retarded anyway. 18:03:49 01- to get -1 in befunge 18:03:50 bah 18:03:52 soup lisp is too hard 18:03:52 :D 18:03:54 :D) 18:03:56 oklopol: paste your old python lisp 18:04:03 oh what now? 18:04:15 that sch thing of ololobot 18:04:17 's? 18:04:21 oklopol: think so 18:04:30 hmmhmm, did it have static scoping? 18:04:38 or was it that it *didn't* 18:04:50 i remember it was definitely either. 18:04:50 :: (+ (- 2 4i) 3) 18:04:50 An error: Application consists of 2 or 3 expressions. 18:04:52 hm 18:04:55 hmm 18:05:01 4 and i are separated as tokens 18:05:02 :: (+ (- 2 4) 3) 18:05:02 1 18:05:03 i think. 18:05:14 oklopol, ah, so how do you do complex numbers? 18:05:22 well, you first make a class for them 18:05:44 if you want to do it, that would be awesome. 18:05:45 i mean 18:05:46 oh right 18:05:48 in oklotalk-- ofc 18:06:04 oklopol: i wannnnaaaaaaiiit 18:06:05 you need a libstdoklo 18:06:06 :D 18:06:08 because then i could say "EVEN OTHERS LOVE IT GOD IT''S AWESOME" 18:06:11 and put ololobot up here 18:06:12 :D 18:06:13 *it's 18:06:20 ehird: i don't have it, actually :\ 18:06:21 -!- Corun has quit ("This computer has gone to sleep"). 18:06:27 not here 18:06:32 oklopol: its on the pastebin 18:06:39 the scheme? :O 18:06:44 ya 18:06:50 AnMaster: no, the prefix for libs should be oko. and oklopol's stdlib would be 'oko', because it's like 'oklopol' but shorter 18:06:50 so 18:06:52 okoko 18:06:56 well, the pastebin has a shitload of stuff... 18:06:58 for balance: 18:06:59 okokoko 18:07:05 in fact 18:07:07 add another oko 18:07:09 for each version 18:07:10 :D 18:07:12 so revision 64 is 18:07:18 okokokokokokokokokokokokoko... 18:07:29 oklopol: grep 'class MEM' 18:07:32 no wait 18:07:33 'class O:' 18:07:37 or 'class O(object)' 18:07:43 hmm... 18:07:58 you know, befunge seems *sane* compared with this 18:07:59 oklopol: cause i know it had one of those in 18:08:02 just do something like 18:08:05 i can prolly connect on putty and do it 18:08:06 grep 'class O:' * 18:08:08 yeah 18:08:09 i guess 18:08:19 AnMaster: compared with oklotalk? 18:08:23 oklopol, indeed 18:08:25 well 18:08:32 and compared with ehird 18:08:35 i've used it for like a few hours 18:08:47 making the rational class took 10 minutes 18:08:50 mh 18:08:52 and it worked right away 18:08:52 hm* 18:09:02 do the same in a few minutes in befunge, and i'll believe you 18:09:02 oklopol, yeah making a standard library in befunge is harder 18:09:21 oklopol: what is ittt :D 18:09:26 ittt? 18:09:31 i'll connect now 18:09:38 oklopol, well object orientated befunge.... maybe 18:10:04 using a global offset table for the function pointers and for the vtable and so on 18:10:08 * AnMaster grins madly 18:10:22 well, the rational class was as easy to make in oklotalk as it would've been in, say, python. 18:10:25 for me at least 18:10:27 i just wrote it 18:10:37 oklopol, well I don't really like python 18:10:43 it's not *that* bad a language 18:10:50 well, python was my example of where it would be trivial 18:10:53 my non-esoteric languages of choice are C and Bash 18:10:54 oklopol: linkokokoko 18:10:59 it's naturally easier in oklotalk than say X 18:11:00 *C 18:11:10 ehird: dl'ing putty.. 18:11:15 haha 18:11:28 connect to where? 18:12:00 AnMaster: vjn.fi presumably 18:12:57 shit. 18:13:04 this is not the real account 18:13:05 i mean 18:13:10 the account with shell access 18:14:14 i asked the guy who knows anything about it, perhaps get an answer soon 18:14:47 ehird: want to try making complex numbers, btw? 18:15:25 oklopol: it's just a tuple of numbers that are operated on together right? 18:15:30 yes 18:15:36 you barely need to define anything 18:15:38 kinda like rat, but different operations 18:15:45 ok i'll try 18:15:49 cool 18:15:56 i'll make the interpreting urls thing 18:16:14 {(-> [n d] { 18:16:18 d = operation? 18:17:57 funny video http://video.google.com/videoplay?docid=-7990603720514207956 18:18:39 vixey: oleg is cooool 18:18:39 :D 18:19:01 hmm 18:19:02 http://okmij.org/ftp/ is full of gems 18:19:19 ehird: it is simply a list of all arguments given 18:19:21 so 18:19:33 (+ your_obj arg) == [$+ arg] 18:19:42 and (your_obj arg arg) == [arg arg] 18:19:51 oklopol: okay. <-- pattern match on division --> 18:19:51 (-> [pb $/] [n d]) 18:19:51 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)). 18:19:54 what is pb, and what does that do 18:20:00 :D 18:20:02 unary would be (+ you_obj) == $+ as the message 18:20:12 and (your_obj arg) == arg as message 18:20:14 okay 18:20:25 [$pb ...] pattern matches on the ... 18:20:28 -!- Judofyr has joined. 18:20:32 it should return a list with two elements 18:20:36 splitting the object in half 18:20:41 what is pb 18:20:43 is it magic 18:20:44 like : for lists 18:20:48 huh 18:20:50 whut 18:20:50 :| 18:20:51 pb == pmatch both 18:20:55 don't get it 18:20:56 :| 18:20:59 well 18:21:15 (-> (/ n d) n) 18:21:24 this would extract the nominator of a rational 18:21:27 errr 18:21:29 nominator 18:21:32 i mean 18:21:32 oh i see 18:21:34 ... 18:21:39 oklopol: so that defines a custom pattern match 18:21:42 yes 18:21:54 (-> [pb CAR-OF-PATTERN-MATCH] ...) 18:22:01 yeah 18:22:02 but i don't get how [n d] fits into it 18:22:02 :| 18:22:08 well 18:22:17 it returns the list with the object split in two logical halves 18:22:23 a list would return [head, tail] 18:22:27 oklopol: okay 18:22:27 for [pb :] 18:22:37 so, i should match on 'j' i guess 18:22:38 or... 18:22:40 maybe just 'cpx' 18:22:42 (that's my class name) 18:22:46 perhaps 18:22:47 (-> [pb $cpx] [r i]) 18:22:57 yarr something like that 18:23:00 or you can define a setter 18:23:06 err 18:23:07 getter 18:23:26 (-> $getreal r) (-> $getimag i) 18:23:28 if you wanna 18:23:36 it's just nice to be able to do this at pattern matching 18:24:22 the pattern matching can only be extended with binary splits and unary... drops or something 18:24:46 but it should have stuff like (>> stack 3) that would match the 3rd element of the stack 18:24:55 oklopol: heh this is trivial... 18:24:58 everything is of the form: 18:25:01 it oughtta be 18:25:12 (-> [$OP (cpx rr ii)] (cpx (OP r rr) (OP i ii))) 18:25:56 oklopol, for complex numbers you do need square root 18:26:13 to get absolute value 18:26:22 comparisons aren't even that hard 18:26:27 since i don't have to define them 18:26:30 how convenient :D 18:26:32 well 18:26:32 == 18:26:39 AnMaster: gaussian integers 18:26:48 hmm wait 18:27:13 ehird: multiplication doesn't work like that 18:27:16 abs(a+bi) == sqrt(a^2 + b^2); 18:27:18 oklopol, ^ 18:27:23 AnMaster: duh 18:27:32 oklopol: oops, yeah 18:27:39 sorry, mind is fuzzed right now 18:27:42 hehe 18:27:46 and crap, i need to define more stuff 18:27:49 for adding to non-complex 18:27:50 oklopol, how would you do that in oklotalk? 18:27:52 bah, i give up :D 18:27:56 :< 18:28:00 ehird: well 18:28:07 hmm 18:28:10 :: (cpl 5) 18:28:11 5 18:28:12 :) 18:28:15 darn 18:28:22 ofc doesn't work that easily 18:28:23 hmmhmm 18:28:43 and you cannot match on type, atm. 18:29:05 Will anyone but myself care when PSOX 1.0b1 is released? 18:29:08 Sgeo: Nope 18:29:18 oklopol: i'm gonna make a concatenative language in python 18:29:21 since we're already done lisps to death 18:29:23 Sgeo, well I won't use it no 18:29:26 now, in tradition, you must copy me 18:29:27 :D 18:29:39 AnMaster, why not? 18:29:41 ehird: can you make it so it only works for the complex range? 18:29:44 oklopol: no 18:29:47 darn 18:29:48 Sgeo, what would it offer me? 18:29:56 Sgeo, as a befunge programmer 18:30:03 oklopol: you should call yours okompose 18:30:08 AnMaster: nothing 18:30:12 exactly 18:30:12 okompose? :D 18:30:15 AnMaster: befunge can already do what psox provides 18:30:19 and psox is hell to use in anything but BF 18:30:19 yep 18:30:27 oklopol: yeah, since concatenation is composition :D 18:30:36 ehird, just need to code SOCK fingerprint I think 18:30:45 ehird, because of NUL bytes etc.?, or other reasons? 18:30:55 Sgeo: you never considered non-BFs, thats why 18:30:57 befunge + psox = no problem 18:31:06 well... 18:31:11 actually, nulls 18:31:26 that's like the worst character to choose for frequent use 18:31:27 :P 18:31:42 oklopol, indeed I hate NULL byte 18:31:55 I hate how it is used in strings in C 18:31:58 * Sgeo has a really idiotic solution, and is asking for input on less idiotic solutions 18:32:00 ie to terminate them 18:32:17 Sgeo, well tell me what it would offer me as a befunge programmer 18:32:18 Sgeo: but nobody really cares about psox any more, so not many people will suggest 18:33:00 the problem with doing complex numbers is you cannot lift integers to that range... you'd need to extend syntax 18:33:09 that would be the oklotalk way to do it 18:33:24 my next language should be able to understand integers are a subset of cpx 18:33:28 oklopol, indeed you basically need vectors, because that is what they (mostly) are 18:33:32 oklopol: i can pattern match on non compelx too 18:33:37 apart from the sqrt(-1) == i quirk 18:33:39 AnMaster: i don't see what your point is 18:33:46 you need two numbers 18:33:47 not one 18:33:53 yes 18:33:55 but the point is 18:33:57 i don't see it 18:34:11 ehird: what? 18:34:16 yeah 18:34:20 oklopol, also you should be able to use rational numbers in the place of the integers when making complex numbers 18:34:23 that will do stuff like cpx + int 18:34:24 :) 18:34:30 cpx + rat 18:34:31 :D 18:34:35 hehe 18:34:41 a complex rat? 18:34:48 well, ideally, rat would just lift into a complex number 18:34:54 and should work automatically. 18:34:59 oklopol, idea: call the garbage collector the "cat" 18:34:59 :D 18:35:12 but rat will need to know about complexes. 18:35:25 oklopol, not first class? 18:35:36 can't it just know about numbers in general? 18:35:37 this isn't really a problem of oklotalk's, much more general prob 18:35:40 while also being a number 18:35:46 oklopol, you could use an interface 18:36:01 rat implements interface "number" 18:36:04 or something like that 18:36:08 if complex numbers are created, you can have rational complexes automatically. 18:36:13 the problem is then ranges mix. 18:36:16 *when 18:36:41 If PSOX is not going to be appreciated, I need to find another major programming project to do 18:36:42 oklopol, cpx takes two things implementing the interface number. cpx itself implements the fingerprint number 18:36:45 that could work 18:36:47 oklopol, :D 18:37:08 what's the use of implementing the interface? 18:37:18 oklotalk is duck-typed 18:37:25 oklopol, because then you can stick *any* number into the cpx 18:37:31 duck-typed? 18:37:34 well, in fact, oklotalk doesn't even have that 18:38:06 it is assumed everything can handle everything, though somethings things are asked whether they actually *want* to have certain args 18:38:13 AnMaster: giyf 18:38:22 eh? 18:38:32 AnMaster: you can do that in oklotalk, just put in the *any number* 18:38:37 actually you could get some issues from that, like making a complex of two complex 18:38:43 the problem is int + cpx will call int's +-operation 18:38:50 i mean, conceptually 18:39:01 and that makes no sense, because ints don't know what cpx's are 18:39:08 oklopol: this is an old OO problem 18:39:09 I got no clue what (1+3i)+(0-4i)i 18:39:10 would do 18:39:15 the fact cxp "is a number" doesn't make any difference 18:39:18 ehird: i know 18:39:19 oklopol: the 'x+y' when x doesn't know what ys are 18:39:21 oklopol: the solution 18:39:23 well mathimatically I can solve it 18:39:24 oklopol: is generic methods 18:39:50 ehird: okay. 18:39:50 now what does that mean 18:39:50 oklopol: basically, in 'x.y(z)' you dispatch on the magic first param - self, here x 18:39:50 ehird, \o/ 18:39:50 oklopol: with generic methods you dispatch on THEM ALL 18:39:50 and methods are no longer tied to classes 18:39:50 so you define e.g. 18:39:57 (+ (int a) (cpx b)) 18:40:00 instead of 18:40:03 int.+(other) 18:40:10 that solves the problem 18:40:13 well, you can do that, ofc 18:40:19 and also removes the arbitary 'dispatch only on first magic param thing' 18:40:26 oklopol: yeah but the point is: you drop message sending 18:40:27 not in oklotalk--, but it's a trivial change to the structure 18:40:30 no messages are sent 18:40:35 ever 18:40:37 no i don't 18:40:45 you don't understand what i' saying 18:40:47 message sending works great for this exact thing 18:41:06 i don't? 18:41:09 okay 18:41:12 message sending sucks for this 18:41:18 because you get the 'x+y' x doesnt know what y is 18:41:22 with generic methods, that's never a problem 18:41:25 because 'x' doesn't know anything 18:41:30 because methods are not 'inside' the object 18:41:51 so + just knows about all, that's no problem for message-passing 18:41:56 oklotalk already does this. 18:42:16 and for most cases, objects getting the messages is simply prettier 18:42:25 which is why many people like OO 18:43:12 you can just add functionality to + easily, once i add a certain feature oklotalk-- lacks 18:43:21 (the other one, apart from syntax, that made me change the name) 18:45:11 python solves this by having __ropr__'s 18:46:03 it's conceptually a fairly good solution for this exact case, because the other object is "cleverer" than the other 18:46:13 Deewiant, there? 18:46:24 so the cleverer one will be called automatically 18:46:27 well 18:46:35 not good, but *a somewhat working* 18:46:51 Deewiant, I found a think with complex numbers that is hard to do with FPDP and similar: given a real negative value, take the square root of it 18:47:05 anyway, it is true that for numbers, having message-passing complicates things a bit 18:47:10 i'm not gonna argue that 18:47:38 i'm just saying oklotalk is especially designed to make message-passing support having behavior outside the objects themselves. 18:47:49 in case you can parse that sentence 18:47:55 AnMaster: of course you need to use complex numbers - i.e. use pairs of doubles for everything. 18:48:36 anyway, ehird: it doesn't make the code less complicated to have + dispatch on its arguments 18:48:37 does it? 18:48:44 after that it's easy, sqrt(-x) where x > 0 = imaginary sqrt(x). 18:49:00 usually you'll just end up doing a type conversion, which the objects could just have done themselves 18:49:49 i'm gonna go now, if someone does something in oklotalk, let me know, would look awesome in my report if i got something :-) 18:49:54 not that anyone will, prolly 18:49:55 cya 18:49:56 -> 18:50:02 sqrt(-x) = sqrt(-1)*sqrt(x) 18:50:13 less horribly confusing way to put it :P 18:50:52 doesn't always apply. 18:50:56 Deewiant, so how would you write a befunge program that solves: 2x^2 + 4x + 1 = 0 18:50:58 XD 18:51:00 only for reals. 18:51:03 yes it does 18:51:08 AnMaster: I wouldn't. :-P 18:51:11 Deewiant, hahah 18:51:25 omg oklopol went 18:51:26 vixey: try x == sqrt(-1). 18:51:30 noo i was just saying to say something 18:51:39 i didn't go anywhere... 18:51:42 that's not a counter example 18:51:44 good 18:51:45 :D 18:51:46 don't you know me at all... 18:51:47 or a simpler example. 18:51:49 x == -1. 18:51:51 you can prove this from the difinition of sqrt 18:51:54 that's not a counter example 18:52:02 why nto? 18:52:05 s/nto/not/ 18:52:19 because sqrt(-1)*sqrt(-1) = -1 18:52:34 and? 18:52:44 you asked 18:52:47 sqrt(-(-1)) == sqrt(1) == 1. 18:52:54 sqrt(-1) * sqrt(-1) == -1. 18:52:57 -1 != 1. 18:52:58 QED. 18:53:37 ehird: i'm trying to leave though, so say if you're gonna 18:54:07 oklopol: i am 18:54:08 just a sec 18:54:15 oklopol: I tried writing python in okostyle for my interp :P 18:54:25 wuzzat? 18:54:31 oklopol: your weird style 18:54:31 heh 18:54:34 :D 18:54:38 i have a style? :D 18:54:40 vixey: enough of a counter example? 18:54:43 Dewiant: what number times itself is 9? 18:54:52 oklopol: yeah 18:54:54 *that's not a counter example* 18:54:55 short names, not much whitespace 18:54:56 :D 18:54:56 3 or -3 18:54:58 hmm 18:54:58 please try to listen to me 18:54:59 right 18:55:00 try 18:55:02 true 18:55:03 right 18:55:21 okay, now i'll really go! -> 18:55:23 vixey: you said, sqrt(-x) = sqrt(-1) * sqrt(x). I'm trying to say, this only applies if x > 0. 18:55:30 two values 18:55:32 or (>= 0) 18:55:38 Deewiant, indeed 18:55:42 oh ok 18:55:44 oklopol: aww 18:55:48 oklopol: but i was just about to put it in here 18:55:50 you take sqrt as only the positive value 18:55:55 er 18:55:58 that /is/ how sqrt is defined 18:56:07 I define sqrt(x) = x^1/2 18:56:20 fine 18:56:28 but that denotes the principal square root 18:56:36 which is to say, the positive one. 18:56:41 oklopol: btw 18:56:43 oklopol: useful: 18:57:01 -!- jix has quit (Nick collision from services.). 18:57:03 oklopol: def _(x): return lambda o: getattr(o,x)() 18:57:06 there are n, nth roots of unity as there are some constant 18:57:11 -!- jix has joined. 19:05:13 oklopol: hello 19:05:58 ehird: i'm insulted by the fact you assume i'm still here! you think i have no self-control?!?!? 19:06:39 oklopol: of course not, you haven't seen my concatenative language yet 19:06:42 the parser is cooooool 19:06:45 it's recursive 19:06:56 also 19:06:57 the eval function 19:06:58 only 18 lines 19:07:37 and it was based on rewriting 19:07:38 but that was only 19:07:41 so i'm making it stakkk 19:09:07 ok 19:09:08 now its 14 lines 19:12:37 oklopol, where is the bot? 19:13:08 oklopol: i have a weird bug 19:13:09 halp me fix 19:13:58 oklopol: plzz 19:14:12 http://www.vjn.fi/pb/p461542621.txt the bug is in pa near the botto 19:14:13 m 19:14:16 AnMaster: what bot 19:14:27 what bug 19:14:33 oklopol, oklobot 19:14:41 with the oklotalk interpreter 19:14:46 that's otobot 19:14:50 aha 19:14:51 oklobot is very different 19:14:54 there is it 19:14:56 it is* 19:14:56 it's my c++ bot 19:15:02 otobot: where are you? 19:15:08 shows why tab completion didn't show it 19:15:12 i guess he's gone 19:15:15 didn't answer anything 19:15:17 anyway 19:15:22 ehird: that's the parseror? 19:15:29 s,i... i is current place, like? 19:15:39 or whut 19:15:39 oklopol: yeah that[s the parser 19:15:45 and 19:15:47 i is nesting depth 19:15:49 where's the but 19:15:49 wait 19:15:51 oh 19:15:56 return pa(s,i+1)+pa(s,i) 19:15:57 change to 19:15:59 return [pa(s,i+1)]+pa(s,i) 19:16:00 that doesn't fix it 19:16:05 but 19:16:06 it's what i meant 19:16:08 what's the error? 19:16:11 (lists are quotations) 19:16:13 i'm not gonna run it! 19:16:13 oklopol: unmatched ] 19:16:16 when parsing 19:16:18 oh 19:16:21 and 19:16:23 prints that? 19:16:23 no wait 19:16:24 unmatched [ 19:16:25 or what 19:16:27 err wait 19:16:28 hmmm 19:16:29 ok 19:16:30 i'll explain 19:16:33 or parse error in your code? 19:16:34 oklopol: see the return []? 19:16:39 oklopol: if you 'print s' before that 19:16:40 s = [] 19:16:42 sure 19:16:45 but after pa(s,i+1) thing 19:16:48 where we get returned to 19:16:50 s=[']'] 19:16:52 and that makes no sense 19:16:56 since they share the list 19:17:20 you're getting a bit technical, are you assuming i've read the code? :) 19:17:23 hmm 19:17:25 yes 19:17:30 i can read pa 19:17:32 now 19:17:38 what's s= 19:17:38 ? 19:17:42 the thing to parse? 19:17:46 yes as a list 19:17:51 aha 19:17:51 >>> p('[]') 19:17:52 ['[', ']'] 0 19:17:52 [']'] 1 19:17:52 [] 0 19:17:52 [[]] 19:17:54 >>> p('[a]') 19:17:56 ['[', 'a', ']'] 0 19:17:58 ['a', ']'] 1 19:18:00 [']'] 1 19:18:02 [']'] 0 19:18:06 see how weird that is 19:18:08 it works on the empty quotation. 19:18:11 after the second example since it sees ] with i=0 it says unmatched ] 19:18:12 but WHY 19:18:17 what should it do... 19:18:18 the ] gets removed 19:18:21 before we return [] 19:18:23 oklopol: plz read the code 19:18:35 if it's buggy, then i'm not sure i'll get it 19:18:37 well 19:18:40 i can try 19:19:11 errr 19:19:24 so basically the recursion doesn't gulp a ] it should be gulping? 19:19:31 no 19:19:32 well 19:19:32 yes 19:19:35 but it works for [] 19:19:37 just not [a] 19:19:38 or similar 19:19:40 which is weiiird 19:20:36 asd 19:20:49 aha wait.. 19:20:52 i have no idea what anything should return. 19:20:56 i don't know what you're parsing 19:21:40 oh 19:21:41 OF COURSE 19:21:42 duhhh 19:22:30 oklopol: fixed it 19:22:30 so yay 19:22:35 cool 19:26:46 oklopol: woot, almost ready 19:31:30 oklopol: it's almost working flllaaawwwlessly 19:34:21 oklopol: i've even got a REPL with history and tab completion 19:34:21 heh 19:34:36 oklopol: oh do you have a link to the framework you use for proglang bots, too lazy to write my own atm 19:38:47 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)). 19:38:48 ehird, what are you doing? 19:38:48 -!- Judofyr_ has joined. 19:39:37 AnMaster: coding a simple concatenative lang 19:41:10 -!- Slereah has quit. 19:41:20 mhm 19:42:05 oklopol: no? :D 19:42:16 -!- oklopol has quit (Read error: 104 (Connection reset by peer)). 19:42:37 -!- oklopol has joined. 19:42:42 oklopol: :( 19:42:44 ehird, try again now? 19:42:48 yeah 19:42:52 [19:34] oklopol: oh do you have a link to the framework you use for proglang bots, too lazy to write my own atm 19:44:39 ehird: it's just an ugly while-loop thingie. 19:45:13 oklopol: wannit :D 19:45:20 so you can see my awesomest bottt 19:45:55 www.okay 19:45:56 wait 19:46:24 http://www.vjn.fi/s/sadf.py <<< verrrry ugly 19:49:22 lambda? python got that? 19:49:25 :/ 19:50:05 sure 19:50:37 didn't know about join back then 19:52:53 -!- otobot has quit (Read error: 110 (Connection timed out)). 19:53:05 -!- oklopol has quit (Read error: 104 (Connection reset by peer)). 19:53:08 -!- oklofok has joined. 19:54:56 oklofok: print pp(e(p(x)))[1:-1] 19:54:58 my code rox 19:54:59 :D 19:56:35 rox? in which way? 19:57:56 -!- CCB has joined. 19:57:56 -!- CCB has quit (Remote closed the connection). 19:58:02 concatbot nick is taken 19:58:02 :( 19:58:04 ooh i know 19:58:42 -!- concat has joined. 19:58:44 wtfff 19:58:47 sux at nams 19:58:49 -!- concat has quit (Remote closed the connection). 19:59:21 hmm 19:59:51 -!- concatbot has joined. 19:59:51 oklofok: okay 19:59:54 # 2 2 + 19:59:57 :(( 20:00:16 -!- vixey has quit ("Leaving"). 20:00:17 -!- concatbot has quit (Remote closed the connection). 20:00:23 -!- concatbot has joined. 20:00:25 # 2 2 + 20:00:45 -!- concatbot has quit (Remote closed the connection). 20:00:51 -!- concatbot has joined. 20:00:52 # 2 2 + 20:01:12 -!- concatbot has quit (Remote closed the connection). 20:01:18 -!- concatbot has joined. 20:01:19 -!- concatbot has quit (Remote closed the connection). 20:01:54 -!- concatbot has joined. 20:01:55 # 2 2 + 20:02:14 -!- concatbot has quit (Remote closed the connection). 20:02:20 -!- concatbot has joined. 20:02:47 -!- Judofyr_ has quit (Read error: 104 (Connection reset by peer)). 20:02:52 oklofok: hmm 20:02:54 yours splits on space 20:02:57 and ignores : 20:03:27 -!- concatbot has quit (Remote closed the connection). 20:03:29 well, it makes no sense, if that's what you're saying 20:03:33 -!- concatbot has joined. 20:03:34 # 2 20:03:36 hmph 20:03:37 that is true, yes. 20:03:45 -!- concatbot has quit (Remote closed the connection). 20:03:51 -!- concatbot has joined. 20:03:52 # 2 20:04:08 the splitting of the line isn't mine, i've taken the base of that from somewhere on the net, and just added some stuff so it works as is 20:04:14 -!- concatbot has quit (Remote closed the connection). 20:04:19 -!- concatbot has joined. 20:04:20 # 2 20:04:36 -!- concatbot has quit (Remote closed the connection). 20:04:48 -!- concatbot has joined. 20:04:49 # 2 20:04:51 urgh 20:04:56 -!- concatbot has quit (Remote closed the connection). 20:05:00 -!- concatbot has joined. 20:05:00 # 2 20:05:03 rugdflgjdfdfg 20:05:25 -!- concatbot has quit (Remote closed the connection). 20:05:30 -!- concatbot has joined. 20:05:30 # 2 20:05:38 -!- concatbot has quit (Remote closed the connection). 20:05:40 jaoisj ljddlfkg 20:05:42 -!- concatbot has joined. 20:05:44 # 2 20:05:58 -!- concatbot has quit (Remote closed the connection). 20:06:09 -!- concatbot has joined. 20:06:10 # 2 20:06:10 -!- concatbot has quit (Remote closed the connection). 20:06:12 well 20:06:15 that's a start 20:07:06 -!- concatbot has joined. 20:07:12 # 2 20:07:14 oh woooot 20:07:16 oklofok: looky 20:07:22 well... cool? 20:07:23 :D 20:07:24 # 2 20:07:26 # + 20:07:29 ... 20:07:30 XD 20:07:33 haha 20:07:41 i maed last minute changes 20:07:43 so that's why concatbot 20:08:04 # reload 20:08:09 # 2 2 20:08:12 ... 20:08:14 Much lulz. 20:08:45 # reload 20:08:46 # 2 2 + 20:08:50 oh woot 20:08:55 -!- concatbot has quit (Remote closed the connection). 20:08:57 ok 20:08:59 removed debug output 20:09:01 -!- concatbot has joined. 20:09:07 oklofok: time to concatenate! 20:09:13 # "hello" "world" + 20:09:17 i broke my own rule :D 20:09:26 :) 20:10:49 # reload 20:10:51 # 1 0 / 20:10:51 -!- concatbot has quit (Remote closed the connection). 20:10:54 Lulz! 20:11:07 -!- concatbot has joined. 20:11:08 # 1 0 / 20:11:16 oklofok: funny - + is composition 20:11:20 # [1 2] [3 4] + 20:11:24 # [1 2] [3 4] + i 20:11:31 # pop pop pop pop pop 20:11:50 -!- concatbot has quit (Remote closed the connection). 20:11:55 -!- concatbot has joined. 20:12:00 # reload 20:12:02 # 1 0 / 20:12:05 heee 20:12:08 # reload 20:12:10 # 1 0 / 20:12:19 oklofok: oh, and watch this 20:12:23 # "2+2" py 20:12:27 wait. 20:12:29 that should work. 20:12:54 # reload 20:12:54 [unexpected log event :(] 20:13:00 lulz! 20:13:03 -!- concatbot has quit (Remote closed the connection). 20:13:09 -!- concatbot has joined. 20:13:10 # "2+2" py 20:13:17 # drop "lambda x: x" py 20:13:21 # pop "lambda x: x" py 20:13:44 # 2 "(lambda x: pop()(x))(pop())" py 20:13:48 oklofok: cool, or not 20:14:10 cool, shure 20:15:33 # reload 20:15:40 # [add1 1 +] define 20:15:40 -!- concatbot has quit (Remote closed the connection). 20:15:44 Hahah 20:15:57 -!- concatbot has joined. 20:15:59 Wait, what happened to that Pythonbot? 20:16:03 # [add1 1 +] define 20:16:07 # 1 add1 20:16:07 -!- concatbot has quit (Remote closed the connection). 20:16:15 Totally hilarious. 20:17:03 -!- concatbot has joined. 20:17:04 # [add1 1 +] define 1 add1 20:17:11 # [] define 20:17:16 # [[1 2] a] define 20:17:23 oklofok: shall i make it its own channel? 20:17:47 omg i need to leave! 20:17:50 but shuuure? 20:17:52 invite me 20:17:53 -> 20:17:57 aww 20:18:09 -!- concatbot has quit (Remote closed the connection). 20:18:14 ok 20:18:15 -!- concatbot has joined. 20:18:16 it'll be in #ccb 20:18:18 as well as here 20:18:23 so all interested parties, join there :P 20:18:35 -!- concatbot has quit (Remote closed the connection). 20:18:41 -!- concatbot has joined. 20:18:51 -!- concatbot has quit (Remote closed the connection). 20:19:13 -!- concatbot has joined. 20:19:14 nobody? :P 20:19:27 -!- concatbot has quit (Remote closed the connection). 20:19:33 -!- concatbot has joined. 20:19:42 -!- concatbot has quit (Remote closed the connection). 20:20:01 -!- concatbot has joined. 20:28:17 -!- Judofyr has joined. 20:32:54 # [] i 20:43:35 -!- oerjan has joined. 20:57:22 oerjan: do you like concatenative languages 20:57:42 well a bit 21:00:40 -!- p3k has joined. 21:01:17 Deewiant, now I know what is hard to do with FPDP, print 3.5+4.1i or such, the output instruction of FPDP will add a space after the number 21:01:26 :P 21:01:34 oerjan: there's one in here riiiiight now 21:01:40 # 2 3 + 21:05:43 -!- concatbot has quit (Remote closed the connection). 21:05:47 oops 21:10:54 -!- UnrelatedToQaz has joined. 21:10:58 hiya all 21:11:37 I have a question about seeds 21:12:03 most random number generators I see have seeds to do with the date/time 21:12:17 and I was wondering if there were any that used other things 21:12:25 like the current CPU usage 21:12:32 (that looks fairly random) 21:14:33 there is linux's /dev/[u]random, which is based on collecting "random" noise from parts of the memory, i think 21:16:51 /dev/random is the "best" way on a Linux system, yeah (urandom will fall back to a pseudorandom generator if there's not enough entropy) 21:17:56 UnrelatedToQaz: http://www.google.com/search?hl=en&q=linux%20entropy%20random&btnG=Google+Search 21:18:18 Should find plenty of information on entropy gathering there, can probably get non-Linux-specific advice as well 21:18:53 thanks all 21:20:11 I guess that means banging your head on the keyboard can be useful sometimes 21:28:31 -!- dede has joined. 21:31:13 -!- dede has quit (Client Quit). 21:48:16 -!- Iskr has quit ("Leaving"). 21:57:22 -!- calamari has joined. 22:00:35 -!- UnrelatedToQaz_ has joined. 22:00:40 -!- UnrelatedToQaz_ has quit (Client Quit). 22:05:19 I feel like drawing something. Any ideas/requests? 22:06:19 http://rage.kuonet.org/~anmaster/tmp/specs.pdf 22:06:26 anyone want to implement that? 22:06:27 :D 22:07:18 RodgerTheGreat: dragons. with light sabres. in a ufo. 22:07:33 sorry, I'm not feeling it 22:07:50 (slightly calvin & hobbes inspired :) 22:08:20 it doesn't really catch my imagination 22:08:34 AnMaster: I might if I didn't get a 404 22:08:41 RodgerTheGreat, hm, 22:08:49 RodgerTheGreat, I just uploaded a new version 22:08:54 fixed a typo 22:08:57 maybe that caused it 22:09:02 RodgerTheGreat, could you please try again 22:09:03 * oerjan was reprimanted for being silly by his 5 or so year old cousin when _i_ drew a dinosaur in a ufo 22:09:14 RodgerTheGreat, the link works for me 22:09:28 but I know there are some routing issues, so some may not be able to reach the data center 22:09:48 I *could* publish it using gopher on my local system if anyone wants that 22:09:52 (mind you she _is_ the serious type) 22:09:53 yeah, no luck here 22:09:53 no httpd here though 22:10:19 RodgerTheGreat, 404 really? 22:10:26 you mean "time out" or similar? 22:10:32 I don't have a gopher client, and I imagine copying and pasting from telnet would be dreadfully inconvenient 22:10:42 hmmm 22:10:46 AnMaster: I don't get a connection at all. I suppose time out might be more appropriate 22:10:52 RodgerTheGreat, ok basically it is the specs for a befunge program 22:11:06 rather complicated to write in befunge 22:11:18 because Deewiant said "I wouldn't" when I asked how he would do it in befunge 22:11:19 :D 22:11:40 hm. It *might* be beyond my level of expertise- I'm no befunge expert 22:12:06 basically finding all possible, real and complex, values for x in: ax^2+bx+c=0 22:12:12 where user can enter, a, b and c 22:12:32 floating point by the FPDP fingerprint should be used 22:13:12 RodgerTheGreat, sigh I wrote it up very nicely in LaTeX, hm maybe if I can upload it somewhere else 22:13:18 RodgerTheGreat, you got firefox? 22:13:23 firefox can do gopher 22:13:37 x = (-b +/- sqr(b^2 - 4*a*c)) / 2*a ? 22:13:44 I use safari 22:13:50 ouch 22:14:01 I like safari. :< 22:14:19 $$[x=-\frac{\sqrt{{b}^{2}-4\,a\,c}+b}{2\,a},x=\frac{\sqrt{{b}^{2}-4\,a\,c}-b}{2\,a}]$$ 22:14:28 as (La)TeX 22:14:38 would be the two possible answers 22:14:45 yeah 22:14:59 I love how maxima can generate TeX output 22:15:00 :D 22:15:43 I'm not sure what's especially difficult about that unless befunge doesn't naturally support floating point numbers (which I wouldn't really expect in an esolang anyway...) 22:15:58 RodgerTheGreat, there is a fingerprint for it (FPDP) 22:16:33 -!- p3k has quit. 22:16:41 however I did this mostly because of Deewiant, so how would you write a befunge program that solves: 2x^2 + 4x + 1 = 0 AnMaster: I wouldn't. :-P 22:16:44 http://en.wikipedia.org/wiki/Special:Search?search=FPDP&go=Go 22:16:48 what 22:16:55 RodgerTheGreat, huh? 22:17:00 fingerprint as for befunge 22:17:08 a loadable module in befunge 22:17:08 I have no idea what you mean by that 22:17:11 provided by the interpreter 22:17:20 like a standard library kind of 22:17:24 Funge98 specific 22:17:24 ok 22:17:40 RodgerTheGreat, CCBI supports it and so does cfunge 22:17:44 -!- UnrelatedToQaz has quit (Read error: 110 (Connection timed out)). 22:17:50 two conforming befunge interpreters 22:17:59 RodgerTheGreat, well for cfunge, only development version got it yet 22:18:26 I'll make a new snapshot in a hour or so 22:21:36 -!- calamari has quit (Read error: 110 (Connection timed out)). 22:26:07 RodgerTheGreat, http://omploader.org/vZnl2 22:27:14 very nice writeup 22:27:23 thanks 22:28:06 RodgerTheGreat, for the great layout thank LyX, a WYSIWYM (What You See Is What You Meant) GUI editor for LaTeX 22:28:12 i like safari too 22:28:18 its more standards compliant than firefox 22:28:21 and the rendering is better 22:28:24 indeed 22:28:29 ehird, well I use konqueror 22:28:32 or lynx 22:28:33 :) 22:29:17 AnMaster: caught ya! Safari is based on KHTML, Konqueror's rendering engine 22:29:19 also 22:29:24 it is not a memory hog 22:29:26 ehird, I know..ö. 22:29:27 And the KDE people are merging back in Apple's changes into KHTML 22:29:29 ...* 22:29:35 so don't be insulting the safari! 22:29:39 I haven't 22:30:06 but I would want gopher support in it 22:30:48 ehird, some stuff I still miss from firefox, some of the extensions for example 22:30:57 adblock is the main one 22:32:30 AnMaster: how apple will see the gopher issue: 22:32:35 1. next to nobody uses gopher anymore 22:32:46 2. does not have an i in it 22:32:50 2. those that do probably use a CLI interface since gopher has little to offer graphically anyway 22:32:59 3. no it really doesndoes not have an i in it 22:33:02 3. ergo, supporting gopher in safari is pointless 22:33:03 doesn't have* 22:33:16 AnMaster: HA HA FUNNY JOEK! apple sux0r coz dey have WUN BUTAN 22:33:20 no right klik!!! ahahaha 22:33:31 ehird, they do have right click nowdays 22:33:36 but they didn't for ages 22:33:51 AnMaster: Suprise! You could PLUG IN another MOUSE 22:33:56 I know, it's really goddamn mind-blowing. 22:33:59 Obviously, Apple suck. 22:34:20 Apple hasn't sold a single button mouse in years 22:34:31 they even got the right click menus YEARS before their own mice had more than one button 22:34:41 Mac OS 9 had right click 22:34:48 Mac OS 8 may have had, not sure 22:34:58 more importantly, think about what you're saying when you criticize a single button "Haha dumbass! My computer has a WAY more complicated interface that yours- it MUST be better!" 22:35:18 *than yours 22:35:18 RodgerTheGreat, um? way more efficient 22:35:27 I mostly work with keyboard anyway 22:35:57 RodgerTheGreat, and I didn't say it was bad 22:36:00 it was ehird that did 22:36:08 I just agreed with him 22:36:18 and ehird was being ironic, anyway- I wasn't implying this was a flamewar 22:36:21 apple sells a whole bunch of single button mice. They come with every computer. 22:36:42 lament, indeed the laptops still have a single button for example 22:36:44 Also, all laptops have a single-button trackpad 22:36:48 right 22:36:56 lament: the mighty mouse is what comes standard with macs, and it has 4 buttons 22:37:04 RodgerTheGreat: oh? 22:37:08 yes 22:37:10 -!- wildhalcyon has joined. 22:37:18 RodgerTheGreat, that doesn't address the laptop issue still 22:37:27 the mouse that roared? 22:37:31 i didn't know it was standard now 22:37:34 oerjan, hehehe 22:37:37 must be a very new thing 22:37:37 AnMaster: every mac laptop in YEARS recognizes multitouch 22:37:45 tap with two fingers == right click 22:37:54 RodgerTheGreat, hm but one button below the pad 22:38:10 and I hate using the tap interface 22:38:13 on laptops 22:38:19 the only thing that button's even really for is dragging things 22:38:22 I just mess up with it 22:38:44 so I either use a button or I use an external mouse 22:38:55 even though my laptop got the multitouch stuff 22:38:57 then it's more a matter of "I don't like how that functionality works" than "macs don't have this feature" 22:39:01 (a PC thank goodness) 22:39:17 (as in x86_64 NOT made by apple) 22:39:36 RodgerTheGreat, I used it, and it works horribly for me 22:39:46 I prefer a split button below the touchpad 22:39:53 WAY easier to work with 22:39:55 for me 22:40:15 RodgerTheGreat, so what was your point? locking out some customers? 22:40:21 I'm not sure I got the point really 22:42:22 RodgerTheGreat, well? 22:42:50 lament: mighty mouse = 2005 22:44:53 ehird, so what do you think of the laptop problem they got? 22:45:13 seems like you fanboys are ignoring when I point out the flaw :P 22:50:52 ehird: yes, but it coming standard must be new 22:51:09 (unless i'm on crack. which is possible) 22:51:35 -!- calamari has joined. 22:53:22 equalUpToTransposition a b = (a ==) `any` shiftedVersions b where shiftedVersions b = [Set.map (transpose n) b | n <- [0..11]] 22:53:48 <3 haskell 22:54:28 even though the part after 'where' is kind of ugly 22:57:10 (a ==) `any` == a `elem` 22:57:38 also, that cannot be the usual transpose from Data.List... 22:57:51 no, good point 22:58:17 and good point about `elem`, i'm an idiot 22:58:55 equalUpToTransposition a b = a `elem` [Set.map (transpose n) b | n <- [0..11]] 22:59:27 transpose is transposition of chords 23:00:26 err, of pitches 23:01:29 [22:50] ehird: yes, but it coming standard must be new 23:01:30 nope 23:01:40 night 23:01:45 AnMaster: the gesture you can use on the laptop is fine 23:01:50 see: RodgerTheGreat 23:01:55 ehird, no, it didn't work 23:01:55 [22:37] AnMaster: every mac laptop in YEARS recognizes multitouch 23:01:55 [22:37] tap with two fingers == right click 23:01:58 see what I said above 23:02:02 RodgerTheGreat, I used it, and it works horribly for me 23:02:07 ehird, your point? 23:02:13 I even used it on a actual mac 23:02:13 [22:37] RodgerTheGreat, hm but one button below the pad 23:02:13 [22:38] and I hate using the tap interface 23:02:13 [22:38] on laptops 23:02:18 it is horrible 23:02:21 AnMaster: your point is 'i don't like how macs do it' 23:02:28 ehird, I can't use it 23:02:29 not 'mac laptops sux coz they got 1 butan' 23:02:30 is my point 23:02:34 good for you 23:02:43 ehird, it is not accessible 23:02:59 that is MY point 23:03:11 that they lock out potential customers 23:03:12 night 23:03:39 AnMaster: no 23:03:43 AnMaster: they lock out YOU 23:03:45 everyone else is fine with it 23:03:51 not really 23:03:57 I got some friends who agree with me 23:04:49 other than that I would love apple hardware (I would not run OS X on it of course 23:05:12 'of course' 23:05:13 why of course 23:05:19 apple's hardware isn't all that special, anyway 23:05:27 OS X is that part that's worth the money 23:05:36 ehird, because linux works well on it 23:05:44 and no way I will run os x 23:05:53 I don't want a GUI most of the time 23:05:59 mostly I work in text only 23:06:05 atm for example. X isn't running 23:06:53 what's not accessible to AnMaster? tapping on two fingers at once? 23:06:59 you got just one finger? 23:07:01 oklofok, tapping 23:07:07 on the touch pad 23:07:09 at all 23:07:13 :| 23:07:21 you retarded? ;P 23:07:22 I just end up tapping when I try to just move the pointer and so on 23:07:27 AnMaster: you don't have to run quartz 23:07:41 a good solution is fullscreening a terminal app, though 23:07:42 you can do that. 23:07:49 but still 23:07:49 [23:05] and no way I will run os x 23:07:49 i used to do everything except right-clicking on the pad 23:07:53 hmm 23:07:54 you don't provide any justification 23:07:58 actually, i did that too on it 23:08:00 ehird, I did 23:08:10 AnMaster: only one. and i rebutted it 23:08:15 but i haven't set up the new mouse for stuff like dragging 23:08:15 ehird, I can't stand the OS in question, GUI and just eye candy 23:08:34 ehird, I want ion or ratpoison as window manager on my system 23:08:39 I use that on my current laptop 23:08:49 hehe, eye candy 23:08:58 your words are well picked: like those of someone who has only used OS X in passing 23:09:03 -!- jix has quit ("CommandQ"). 23:09:05 ehird, or rather eye poison 23:09:11 not eye candy really 23:09:20 i repeat my previous statement 23:09:26 ehird, I have used it quite a bit 23:09:41 I wish I wouldn't have had to 23:09:49 ehird, the system was 10.4 Tiger 23:09:49 oses are all the same 23:09:55 * oerjan turned off everything tapping except plain left button selection on his pad. or something like that. 23:10:15 AnMaster: i repeat my previous statement 23:10:16 oerjan, indeed, that would fail totally on a mac laptop 23:10:17 oklofok: hey you're BACK!!!! 23:10:19 :p 23:10:20 :O 23:10:22 :DDDDDDDDDDDDD 23:10:22 because, you couldn't right click 23:10:31 oklofok: NOW #ESOTERIC IS NO LONGER BORIIGIIGIGIGNNGNNGG 23:10:31 ehird, what one? 23:10:38 this one: [23:09] your words are well picked: like those of someone who has only used OS X in passing 23:10:41 i had right-click when clicking the right upper corner 23:10:46 ehird, I have used OS X quite a bit 23:10:49 ehird, I loath it 23:10:57 ehird, just GUI crap 23:10:58 you could easily have like 10 buttons that way 23:11:05 i don't quite remember what i did but it solved my problem of clicking on links when i didn't mean to 23:11:15 unless we're not talking about pads, we should be talking about them 23:11:33 AnMaster: and i repeat it once again 23:11:40 (i did read the logs, but i can easily read a whole conversation without actually understanding the topic) 23:12:08 ehird, what? insisting that I haven't used OS X? 23:12:15 ehird, or what one did you repeat? 23:12:39 you are unable to accept differences in taste, and more important, so is Apple 23:13:05 ehird: you are showing too much enthusiasm. please lower your spirit or you will be banned. 23:13:19 ehird, you are just restating your incorrect statement 23:13:24 or opinion 23:13:29 this sounds VERY familiar 23:13:45 limifaar 23:13:51 that's a cool word 23:13:55 right, fellas? 23:14:09 i don't think that is even finnish 23:14:14 ehird, basically it seems you are unable to accept non-mainstream (read: non-ehird, is what you think) opinions 23:14:31 oklofok, it is not Swedish at least 23:14:43 oerjan: we don't have many non-borrowed ones with r ending 23:14:45 nor English? 23:14:54 that's what i thought 23:15:03 it's not swedish or english either, no 23:15:07 and it's not german 23:15:10 and not french 23:15:12 maybe dutch? 23:15:14 what language? 23:15:16 i'm fairly sure it's not anything 23:15:20 dutch... perhaps 23:15:20 night 23:15:38 why should everything have a meaning 23:15:58 it's in the Armagan language 23:16:07 is that so? 23:16:13 what's it mean then? 23:16:21 almost certainly 23:16:29 that's the meaning? 23:16:52 it means well-known, or closely related 23:17:14 ;) 23:17:26 [23:13] ehird: you are showing too much enthusiasm. please lower your spirit or you will be banned. 23:17:30 funniest thing of the day :D 23:17:56 we aim to please. 23:17:59 [23:14] ehird, basically it seems you are unable to accept non-mainstream (read: non-ehird, is what you think) opinions <-- this is completely ad hominem, just for the record 23:18:01 you aim too, please. 23:18:12 oerjan: isn't that the gnilshe language? 23:18:20 oerjan: i retract my previous statement. FUNNIEST THING OF THE DAY :D 23:18:44 oklofok: well it's sometimes called that as well. 23:19:38 kickban ehird now. 23:20:11 mi' ont entful ni nel-higs, hoguth 23:20:20 argh 23:20:59 oerjan: :D 23:21:27 mi' sa entful sa lli' erve eb, ldi' nkith 23:22:17 li'd? 23:22:31 hwut 23:22:59 lli' entfrelquy nkith ni nelhigs 23:24:15 pulirgsynsir derlaabe, wtb 23:24:26 DDDDDDDDDDDDDDDDDddDDDDDDDDD:DDDDDDDDDddd 23:25:39 * oerjan is having problems with that first word. sti' ont tequi derlaabe. 23:25:50 -!- otobot has joined. 23:26:16 ont purgsinsir. 23:28:34 dendei ont. 23:33:07 -!- oerjan has quit ("Ogdo ngith"). 23:52:07 -!- olsner has quit ("Leaving"). 2008-04-10: 00:04:02 :: 2 00:04:02 2 00:04:04 :: / 00:04:04 / 00:04:07 :: (= / +) 00:04:07 + 00:04:10 :: (/ 5 5) 00:04:10 10 00:04:15 hah 00:04:23 D: 00:04:24 wtf 00:04:43 oh 00:04:44 :d 00:09:19 let's fix that 00:09:24 :: (= / $/) 00:09:25 / 00:09:30 :: (/ 5 5) 00:09:31 1 00:10:20 oklofok: no built-in-function type? XD 00:10:31 hmm? 00:10:51 oklofok: specialcasing atoms, thingy 00:10:58 oklofok: shouldn't / be a built-in function? 00:11:00 that sends the atom off 00:11:03 no, it's an atom 00:11:14 errt 00:11:26 the dispatch is just plain oklotalk logic 00:11:39 as i said, it's not (func arg arg) 00:11:42 it's (expr expr expr) 00:11:52 the expressions are asked to perform the operation, one by one 00:12:00 the one who wants to, does it 00:12:12 and if no one wants to do it, the first one is asked to 00:12:31 and yes, "wanting" is the official term 00:19:19 oklofok: haha 00:19:49 :: ($/ $/ $/) 00:19:49 / 00:20:02 oklofok: so, it asks $/ to $/ with $/ 00:20:05 then asks $/ to $/ with $/ 00:20:07 yeah! 00:20:08 since neither wants to do it 00:20:12 it asks $/ to $/ with $/ 00:20:18 and it says 'oh fuck it' and returns itself 00:20:34 yep, it should actually try all three, but i disabled that for this version, because currently only atoms don't want to evaluate 00:20:39 usually, that's just what you want 00:21:00 but the feature is useless atm 00:21:20 it won't be once i add... well, querying what wants to evaluate 00:21:24 which is trivial really 00:21:34 but has to be done in order to get done, anyway 00:21:50 oklofok: so {} is just a ' 00:21:56 doer' 00:22:09 {} is a doer, yeah 00:22:10 and doers can want to do some things (isomorphic to function calls) 00:22:17 and not do others (unique to oklotalk) 00:22:18 yeah. 00:22:25 well 00:22:29 and that's why you can use {} as a function 00:22:34 things don't want to do everything 00:22:41 oklofok: 00:22:43 i mean, 1 doesn't want to add a complex to itself 00:22:44 'and not do others' 00:22:54 which is why something like __radd__ can be made 00:22:56 hmm 00:23:08 actually i'm not sure i understood 00:23:58 oklofok: {...} creates a 'thing' 00:24:02 things have a few properties: 00:24:24 - they can 'do' some things, based on whether they match one of several patterns given (pattern matching is definable and thus TC) 00:24:38 - everything that they don't explicitly want to do, they don't, and cascade 00:24:46 yep. 00:24:52 the 'actions' inside 00:24:53 are closures 00:25:02 so {(-> [a b] {...})} 00:25:09 the inner 'thing' can access the stuff given 00:25:14 and the outer 'thing' acts like a function 00:25:41 something like that 00:25:46 well 00:26:03 it's really about whether a thing will evaluate any expression given a certain argument 00:26:27 so if a function starts with an action, it will want all args 00:29:32 like {outn "an function was entered"; ptrn -> smth} will always want 00:29:35 everything 00:30:10 Somehow, it amuses me greatly that my math teacher from last year has offered me a ride to the Shadowmoor prerelease. 00:30:24 what's that 00:30:36 Shadowmoor is the next Magic: The Gathering set. 00:30:40 oklofok: oh you can do that?! 00:30:49 ehird: what? 00:30:59 :: (= myId {outn "boo"; (-> x x)}) 00:31:01 <<<20586168>>> 00:31:01 And a prerelease is a tournament where you're given a bunch of cards from the upcoming set to build a deck with. 00:31:04 :: (myId 2) 00:31:06 2 00:31:08 hmm 00:31:10 :| 00:31:10 almost. 00:31:25 1. no output in oklotalk--, it goes in my terminal 00:31:38 2. no ; in oklotalk--, just space to separate expressions 00:31:46 3. () for application 00:32:01 {outn "boo"; (-> x x)} works 00:32:03 ... 00:32:09 {(outn "boo") (-> x x)} works 00:32:18 but you can't show it, because no side-effects are visible 00:32:36 well... 00:33:22 :: (= x {(-> n {(-> [$set n] n) (-> $get n)})}) 00:33:23 <<<20547584>>> 00:33:32 :: (= test (x 4)) 00:33:34 <<<20643512>>> 00:33:36 :: (get test) 00:33:38 4 00:33:42 oklofok: hah 00:33:44 :: (set test 7) 00:33:47 7 00:33:48 i'm going to make a linked list 00:33:50 :: (get test) 00:33:52 7 00:34:01 so, we have a pointer here 00:34:03 now... 00:34:06 side-effects 00:34:27 oklofok: is just (-> [$pb] ...) ok? 00:34:30 :: ({(set test 8) (-> n (* n 3))} 5) 00:34:32 15 00:34:36 test 00:34:40 :: test 00:34:42 <<<20643512>>> 00:34:49 :| 00:34:52 oh 00:34:56 :: (get test) 00:34:58 8 00:35:10 so, yes, you can do it 00:35:33 ehird: no it's not 00:35:36 i mean 00:35:40 it will not match 00:35:45 you wanna get like tail? 00:35:51 $pu as pattern 00:35:54 pattern-match unary 00:37:29 oklofok: ok, define $pb message to me exactly 00:37:34 what is sent [$pb ???] 00:37:36 :: (= ptr {(-> n {(-> [$set n] n) (-> $get n)})}) 00:37:37 and what should i return 00:37:39 <<<20667808>>> 00:37:43 well 00:37:52 ok wait 00:37:55 in your ptr thing 00:38:00 when something is pattern matched on an application of the form (x y z) 00:38:03 does the 'n' override the upper scopes 'n'? 00:38:07 actually 00:38:10 just continue answering 00:38:16 the message [$pb x] is sent to the object. 00:38:28 and if it returns a list with 2 elems, those are put into y and z 00:38:33 hmm 00:38:41 hmm 00:38:55 ehird: what do you mean? 00:39:01 :: (= n 1) 00:39:03 1 00:39:11 :: (= ptest (ptr 8)) 00:39:13 <<<20660096>>> 00:39:17 :: (get ptest) 00:39:19 8 00:39:25 :: (set ptest 10) 00:39:27 10 00:39:32 :: (get ptest) 00:39:34 10 00:39:36 :: n 00:39:39 1 00:39:47 does that answer you? 00:40:24 i'm fairly sure i've done all scoping *well*, at least it usually seems to work whatever i do 00:40:32 :: (= cons {(-> [h t] {(-> [$pb cons] [h t]) (-> $car h) (-> $cdr t) (-> [$setcar h] h) (-> [$setcdr t] t)})}) 00:40:34 <<<20680136>>> 00:40:40 :: (= test (cons 1 2)) 00:40:43 <<<20689544>>> 00:40:46 :: (car test) 00:40:47 1 00:40:49 :: (cdr test) 00:40:51 2 00:40:55 :: (setcar test 3) 00:40:57 3 00:40:58 :: (car test) 00:41:00 3 00:41:04 :d 00:41:07 :D 00:41:09 i am awesome 00:41:09 :D 00:41:19 do $pb : 00:41:22 oklofok: oklotalk is cool. could use some nicer syntax though, yeah ;) 00:41:27 because that's the standard 00:41:29 then do indexing 00:41:32 oklofok: okay 00:41:34 i won't do indexing 00:41:36 it's just a cons cell 00:41:37 not a list 00:41:38 and we'll try quicksort :D 00:41:43 you can treat it like a list though 00:41:44 but i want to see ! 00:41:45 oh alright 00:41:46 what is indexing 00:41:51 hmm 00:41:55 [$! i] 00:42:05 oklofok: can you define setters? 00:42:08 (= FOO BAR) 00:42:08 in lisp 00:42:11 you can override FOO 00:42:13 based on its car 00:42:13 like 00:42:15 not yet. 00:42:15 (= (car x) y) 00:42:20 hmm 00:42:21 you can define a setter for (car x) 00:42:26 ah 00:42:30 presumably, it would be like $pb 00:42:33 it would send off 00:42:36 that isn't done yet, = only does vars 00:42:37 [$= car] 00:42:42 but that's just because i'm lazy 00:42:46 it will do that, yeah 00:42:48 but i dunno what would be returned 00:42:50 :| 00:42:52 ah wait 00:42:55 [$= car val] 00:42:56 of course 00:43:12 (= (X Y) Z) -> (X [$= Y Z]) 00:43:30 hmm... 00:43:39 oklofok: what is the syntax I use for indexing? 00:43:41 well 00:43:41 like not defining 00:43:42 but using 00:43:53 (! list idx) 00:44:01 :: (! [1 2 3] 0) 00:44:03 actually... 00:44:04 1 00:44:21 it might be that the quicksort doesn't work if the list isn't primitive... 00:44:27 depends on how i've done filter... 00:44:34 oklofok: you can implement filter in oklotalk 00:44:39 sure 00:44:44 and would be much cooler too 00:44:47 actually... 00:44:47 :: (= cons {(-> [h t] {(-> [$pb :] [h t]) (-> $car h) (-> $cdr t) (-> [$setcar h] h) (-> [$setcdr t] t) (-> [$! 0] h) (-> [$! n] (! t (- n 1)))})}) 00:44:50 <<<20634360>>> 00:44:52 trivial 00:44:54 oklofok: ok, try quicksort 00:45:03 well 00:45:08 need to do filter first. 00:45:57 hmph 00:45:59 actually 00:46:06 oklofok: just try it 00:46:10 oh wait 00:46:11 i need a nil 00:46:13 that's not hard 00:46:19 oklofok: how do i trigger an error? 00:46:31 ...error? 00:46:33 wuzzat 00:46:35 return $f 00:46:35 oklofok: like this: 00:46:37 :: [ 00:46:39 [] 00:46:41 err 00:46:42 :: ( 00:46:46 :D 00:46:46 An error: Empty application. 00:46:48 see 00:46:51 oklofok: 'An error:' 00:46:59 you can't. 00:47:02 sry 00:47:04 you should add that, sometime 00:47:16 well, i could, in oklotalk-- 00:47:49 but it's not very oklotalky, unless you've stored the continuation for the return somewhere 00:47:54 well... 00:48:02 oklofok: it should be oklotalky 00:48:03 otherwise 00:48:04 you get errors 00:48:06 i guess you can just implement that without explicit continuations 00:48:06 propogating 00:48:08 since nothing ever fails 00:48:11 so it's really hard to debug 00:48:13 also, code doesn't get shorter 00:48:19 since you have to manually check for errors 00:48:27 and yeah, you can just do it with exceptions 00:48:35 which are a special, downwards-only, one-shot form of continuations 00:48:51 well i could do that just with a simple *python exception*, in like a few lines 00:49:02 :: (= nil {(-> [$pb :] $f) (-> $car $f) (-> $cdr $f) (-> [$setcar h] $f) (-> [$setcdr t] $f) (-> [$! n] $f)}) 00:49:05 <<<20666208>>> 00:49:16 but perhaps later, right now i need to add a thing to get filter to work 00:49:19 because.. 00:49:38 :: (= nil {(-> [$pb :] $f) (-> $car $f) (-> $cdr $f) (-> [$setcar h] $f) (-> [$setcdr t] $f) (-> [$! n] $f) (-> $length 0)}) 00:49:43 <<<20716400>>> 00:49:50 you can't dispatch on anything except what the object matches on 00:50:03 :: (= cons {(-> [h t] {(-> [$pb :] [h t]) (-> $car h) (-> $cdr t) (-> [$setcar h] h) (-> [$setcdr t] t) (-> [$! 0] h) (-> [$! n] (! t (- n 1))) (-> $length (+ 1 (length t)))})}) 00:50:05 <<<20716360>>> 00:50:11 i'll add the tst function 00:50:13 :: (length (cons 1 (cons 2 nil))) 00:50:15 2 00:50:26 ...length? 00:50:27 oklofok: i think i might be the best oklotalk coder next to you 00:50:28 ;) 00:50:31 oh 00:50:31 and yeah, length 00:50:33 hehe :D 00:50:35 prolly. 00:50:39 :: (2 + 2) 00:50:41 4 00:50:44 hahahahah 00:50:45 :D 00:50:46 :D 00:50:47 xD 00:50:49 oklotalk is FLEXIBLE 00:50:54 unintentionally 00:50:54 :: (2 2 +) 00:50:58 f 00:51:00 awwww 00:51:02 THAT SUCKS 00:51:06 well 00:51:10 oklofok: make it try ALL PERMUTATIONS 00:51:11 :DDD 00:51:12 it will work in actual oklotalk :D 00:51:17 that's an implementation defect. 00:51:19 haha 00:51:21 3 4 + 00:51:23 will try 00:51:24 3 4 + 00:51:26 3 + 4 00:51:29 4 3 + 00:51:31 4 + 3 00:51:33 + 3 4 00:51:34 + 4 3 00:51:34 etc 00:51:36 until one works 00:51:38 :DDDDDD 00:52:05 about permutations... pattern matching will actually, when excountering an application as a pattern, first ask the function that is used for splitting if it's some special thing 00:52:20 you can do for instance (* n) for matching any number of n's in a list 00:52:26 with an uplevel match 00:52:28 now 00:52:34 oklofok: still 00:52:36 try all permutations 00:52:37 it's ROBUST 00:52:38 :DDD 00:52:44 you can have patterns in a certain kind of list 00:52:46 heh 00:52:48 why not :P 00:52:52 it's just there's only 6 00:53:01 well... why not, why not xD 00:53:05 but, my point is 00:53:17 you know when you have lots of types 00:53:32 if you have a program with type checks and such 00:53:48 so you could basically have the program just guess what arg is what based on types 00:54:05 oklofok: however, i still think you need a propogating error message mechanism 00:54:06 i mean 00:54:08 (prm [(int x) (str y) (lst z)]) 00:54:09 oklotalk's crazy ideas are fun 00:54:10 :D 00:54:13 but if you are actually gonna write something 00:54:16 :p 00:54:18 that will match them in any order 00:54:26 c has tons of fun because it does not have exceptions 00:54:31 there's a global variable errno 00:54:35 and everything sets it if it dies 00:54:38 propogating error messages? 00:54:40 so you have to check errno after most calls 00:54:42 totally hilarious 00:54:45 uhh, yeah, that's ugly. 00:54:48 well 00:54:49 oklofok: if you don't handle them, they bubble up the call stack 00:54:53 python's do those 00:55:12 oklotalk should just allow you to step out of the evaluation, without actually even using continuations or anything 00:55:20 i mean 00:55:34 you can just move in the parse tree up to a try or something 00:55:41 i've written some fun thingies with this 00:56:01 heh, oklotalk has so much shit... 00:56:13 ehird: well yeah, exceptions 00:56:17 i know the concept 00:57:00 that "stepping a level up" can be used for something like define-syntax 00:57:32 hmm 00:57:34 what was i gonna do.. 00:59:20 -!- ehird has quit ("This computer has gone to sleep"). 01:00:11 :: reload 01:00:14 -!- otobot has quit (Remote closed the connection). 01:00:20 :| 01:01:45 -!- otobot has joined. 01:03:44 " Usage: NOTICE , sends a notice. Notices are a type of message that should be auto reacted to" isn't that exactly wrong? 01:05:03 :: (= flr {(-> [f []] []) (-> [f (: (@ h (tst {(f h)})) t) (+ [h] (' f t))]) (-> [f (: h t)] (+ [h] (' f t)))}) 01:05:05 <<<19347336>>> 01:05:18 :: (flr {(< _ 3)} [1 2 3 4 5]) 01:05:20 [1 2 3 4 5] 01:05:25 darn 01:05:39 ({(< _ 3)} 7) 01:05:46 :: ({(< _ 3)} 7) 01:05:48 f 01:06:40 :: (= flr {(-> [f []] []) (-> [f (: (@ h (tst f)) t) (+ [h] (' f t))]) (-> [f (: h t)] (+ [h] (' f t)))}) 01:06:42 01:06:43 :: (flr {(< _ 3)} [1 2 3 4 5]) 01:06:46 [1 2 3 4 5] 01:07:58 :: ({(> _ 3)} 7) 01:08:04 t 01:08:20 oh 01:08:46 :: (= flr {(-> [f []] []) (-> [f (: (@ h (tst f)) t)] (+ [h] (' f t))) (-> [f (: h t)] (+ [h] (' f t)))}) 01:08:51 :: (flr {(< _ 3)} [1 2 3 4 5]) 01:08:58 01:09:00 An error: Var instance has no attribute 'call' 01:09:09 :) 01:09:35 ah 01:09:52 :: reload 01:09:54 reload 01:09:59 :: (= flr {(-> [f []] []) (-> [f (: (@ h (tst f)) t)] (+ [h] (' f t))) (-> [f (: h t)] (+ [h] (' f t)))}) 01:10:01 <<<19507280>>> 01:10:05 :: (flr {(< _ 3)} [1 2 3 4 5]) 01:10:07 An error: Var instance has no attribute 'call' 01:10:13 wtf. 01:11:20 :: (= flr {(-> [f []] []) (-> [f (: (@ h (tst f)) t)] (+ [h] (' f t))) (-> [f (: h t)] (+ [h] (' f t)))}) 01:11:21 <<<19543384>>> 01:11:59 -!- otobot has quit (Read error: 104 (Connection reset by peer)). 01:12:20 -!- otobot has joined. 01:12:23 :: reload 01:12:23 ... 01:12:23 a bit slow 01:12:28 reload 01:12:39 :D 01:12:41 okay 01:12:46 seems it's actually lag. 01:12:58 :: (= flr {(-> [f []] []) (-> [f (: (@ h (tst f)) t)] (+ [h] (' f t))) (-> [f (: h t)] (+ [h] (' f t)))}) 01:13:00 <<<20103296>>> 01:13:06 :: (flr {(< _ 3)} [1 2 3 4 5]) 01:13:09 An error: Atm instance has no attribute 'call' 01:13:15 ... 01:14:21 :: ({(-> (tst {(> 3 _)}) 0)} 5) 01:14:23 f 01:14:32 :: ({(-> (tst {(< 3 _)}) 0)} 5) 01:14:35 0 01:15:59 :: ({(-> [n n] 0)} [1 1]) 01:16:01 0 01:16:08 :: ({(-> [n n] 0)} [1 2]) 01:16:10 0 01:16:18 :: ({(-> [n n] n)} [1 2]) 01:16:20 2 01:16:44 hoh, that's actually a pretty bad flaw. 01:18:13 :: reload 01:18:15 reload 01:18:19 :: ({(-> [n n] n)} [1 2]) 01:18:22 f 01:18:27 :: ({(-> [n n] 0)} [1 2]) 01:18:29 f 01:18:29 :: ({(-> [n n] 0)} [1 1]) 01:18:32 f 01:18:38 :< 01:18:50 okay, command line debug 01:18:50 -> 01:20:35 -!- wildhalcyon has quit ("ChatZilla 0.9.81 [Firefox 2.0.0.13/2008031114]"). 01:24:16 :: reload 01:24:19 reload 01:24:22 :: ({(-> [n n] 0)} [1 1]) 01:24:24 0 01:24:30 :: ({(-> [n n] 0)} [1 2]) 01:24:36 f 01:24:41 thank you 01:24:51 so *now* filter..? 01:24:55 :: (= flr {(-> [f []] []) (-> [f (: (@ h (tst f)) t)] (+ [h] (' f t))) (-> [f (: h t)] (+ [h] (' f t)))}) 01:24:57 <<<20218184>>> 01:25:02 :: (flr {(< _ 3)} [1 2 3 4 5]) 01:25:07 An error: Atm instance has no attribute 'call' 01:25:12 :D 01:30:27 :: reload 01:30:29 reload 01:30:35 :: (= flr {(-> [f []] []) (-> [f (: (@ h (tst f)) t)] (+ [h] (' f t))) (-> [f (: h t)] (+ [h] (' f t)))}) 01:30:37 <<<20151032>>> 01:30:43 :: (flr {(< _ 3)} [1 2 3 4 5]) 01:30:45 An error: global name 'self' is not defined 01:30:50 :P 01:31:01 :: reload 01:31:03 reload 01:31:06 :: (= flr {(-> [f []] []) (-> [f (: (@ h (tst f)) t)] (+ [h] (' f t))) (-> [f (: h t)] (+ [h] (' f t)))}) 01:31:08 <<<20220464>>> 01:31:14 :: (flr {(< _ 3)} [1 2 3 4 5]) 01:31:16 An error: global name 'self' is not defined 01:31:22 hmm? 01:31:48 :: reload 01:31:50 reload 01:31:57 :: (= flr {(-> [f []] []) (-> [f (: (@ h (tst f)) t)] (+ [h] (' f t))) (-> [f (: h t)] (+ [h] (' f t)))})(flr {(< _ 3)} [1 2 3 4 5]) 01:31:59 An error: Atm instance has no attribute 'call' 01:32:05 :D 01:32:08 okay lol. 01:32:43 last attempt, i promise 01:32:48 :: reload 01:32:51 reload 01:32:53 :: (= flr {(-> [f []] []) (-> [f (: (@ h (tst f)) t)] (+ [h] (' f t))) (-> [f (: h t)] (+ [h] (' f t)))})(flr {(< _ 3)} [1 2 3 4 5]) 01:32:55 [1 2 3 4 5] 01:33:01 :D 01:33:06 well at least no errors 01:33:08 sigh. 01:34:46 _oto_bot? 01:35:04 I'd understand "oklobot" but otobot? 01:35:25 oklotalk-bot 01:35:31 i'll rename it to oktabot 01:36:01 oh 01:36:03 lol 01:36:10 :: (= flr {(-> [f []] []) (-> [f (: (@ h (tst f)) t)] (+ [h] (' f t))) (-> [f (: h t)] (' f t))})(flr {(< _ 3)} [1 2 3 4 5]) 01:36:12 [1 2] 01:36:19 :: (= flr {(-> [f []] []) (-> [f (: (@ h (tst f)) t)] (+ [h] (' f t))) (-> [f (: h t)] (' f t))})(flr {(< _ 3)} [1 2 3 4 5 0]) 01:36:21 [1 2 0] 01:36:25 nice 01:36:32 so... let's do quicksort 01:37:32 :: (= qs {(-> [] []) (-> (: h t) (+ (qs (\ {(< _ h)} t)) (+ [h] (qs (\ {(>= _ h)} t)))))}) 01:37:34 <<<19906312>>> 01:37:40 :: (qs [4 5 1 1 2 4 6]) 01:37:42 [1 1 2 4 5 4 6] 01:37:48 * Sgeo watches all this go way way way over his head 01:37:53 what 01:37:53 :D 01:37:56 :: (qs [4 5 1 2 3 6]) 01:37:58 [1 2 3 4 5 6] 01:38:08 doesn't work with duplicates? 8| 01:38:33 :: (= qs {(-> [] []) (-> (: h t) (+ (qs (ftr {(< _ h)} t)) (+ [h] (qs (ftr {(>= _ h)} t)))))}) 01:38:37 :: (qs [4 5 1 2 3 6]) 01:38:37 <<<20328240>>> 01:38:40 An error: Atm instance has no attribute 'call' 01:38:41 * Sgeo doesn't know either QuickSort or Oklotalk 01:38:45 xD 01:39:12 * Sgeo also needs a Python project to work on 01:39:21 Sgeo: oklotalk is a language of mine 01:39:29 and it is heresy not to know quicksort 01:39:29 oklofok, I knew that 01:39:42 (I meant, that oklotalk's yours) 01:40:04 What's wrong with not knowing quicksort? 01:40:22 that i've known it so long i can't accept others not knowing it, mostly 01:41:05 it's like you would think someone is an idiot for not being able to solve 5x2 + 5x - 6 = 0, it's not something you often need, just known it forever, hard to understand some might not 01:41:44 (except that is actually taught to everyone, unlike quicksort) 01:42:39 i don't get it... 01:43:41 Sgeo: i do think you should learn the most popular algos if you want to be taken seriously at a programming channel 01:44:37 -!- adu has joined. 01:48:17 back 01:48:40 hi adu 01:49:01 oklofok, meh, I guess 01:49:45 Although do I really need to know e.g. quicksort in order to be able to program? I mean, it's already implemented by someone else. 01:50:30 he did say you should do it in order "to be taken seriously", not to be able to program 01:51:11 brbafk 01:51:35 wtf filter *just worked*, how come it's broken now :D 01:52:49 okay, it works now... let's try ehird's list 01:57:29 back 01:57:36 ehird's list? 01:59:42 well ehird's cons cell 01:59:53 know what that is? 01:59:58 no 02:00:30 a cons cell is a 2-tuple, whose first element is called car, and second cdr 02:00:42 and you usually use these functions to retrieve them 02:00:49 I meant, what's ehird's cell? 02:01:07 (= cons {(-> [h t] {(-> [$pb :] [h t]) (-> $car h) (-> $cdr t) (-> [$setcar h] h) (-> [$setcdr t] t) (-> [$! 0] h) (-> [$! n] (! t (- n 1))) (-> $length (+ 1 (length t)))})}) 02:01:07 this? 02:01:11 this. 02:01:27 Oh, ehird implemented a list in oklotalk? 02:01:56 yeah 02:02:06 cool 02:02:08 although it doesn't fully work 02:02:12 oh 02:02:15 actually 02:02:17 it does 02:02:17 heh 02:02:23 GregorR: you around? 02:02:56 oklotalk owns ass, i gotta say, when you look at how setcar and setcdr are done :D 02:03:26 -!- adu has quit (Remote closed the connection). 02:03:43 -!- adu has joined. 02:04:18 hi Sgeo 02:04:20 how are you 02:04:46 ok. Looking at PSOX again, although no one else seems interested 02:04:47 you? 02:05:37 whats PSOX? 02:05:44 i'm doing taxes 02:05:48 :P 02:06:05 http://esolangs.org/wiki/PSOX 02:06:31 It's a layer that goes between stdio and esolang interpreters for esolangs that can only do stdio 02:06:49 anyone remember the url to Gregor's website? 02:06:59 hmm 02:07:01 codu.org 02:07:04 thanks 02:07:20 -!- oklofok has changed nick to oklopol. 02:12:38 I've been thinking about something like that 02:13:37 like you know, most languages go on the top (compiled to lower language) or on the bottom (virtual machine, assembly, etc) 02:13:47 I wonder how many languages take the middle approach 02:17:27 :: reload 02:17:29 reload 02:17:46 adu: what's the middle 02:18:07 anyway, damn ehird for going to sleep 02:18:07 i'll show the rest of you 02:18:08 :: something 02:18:12 something 02:18:12 :: (= flr {(-> [f (: (@ h (tst f)) t)] (+ [h] (' f t))) (-> [f (: h t)] (' f t)) []}) 02:18:15 <<<19870304>>> 02:18:34 the filter function, takes a func and a list, filters elements the func returns false for 02:18:46 :: (= nil {(-> [$pb :] $f) (-> $car $f) (-> $cdr $f) (-> [$setcar h] $f) (-> [$setcdr t] $f) (-> [$! n] $f) (-> $length 0)}) 02:18:49 <<<19893304>>> 02:18:54 ehird's nil class 02:19:04 :: (= cons {(-> [h t] {(-> [$pb :] [h t]) (-> $car h) (-> $cdr t) (-> [$setcar h] h) (-> [$setcdr t] t) (-> [$! 0] h) (-> [$! n] (! t (- n 1))) (-> $length (+ 1 (length t)))})}) 02:19:06 <<<19883352>>> 02:19:12 :: (string-ref "Hello" 1) 02:19:14 f 02:19:19 ehird's cons cell class 02:19:25 :: (= list (cons 6 (cons 1 (cons 9 (cons 2 (cons 4 (cons 0 nil))))))) 02:19:27 <<<19861176>>> 02:19:35 list made by consing shit 02:19:40 adu: string-ref? 02:19:46 this isn't lisp 02:19:53 what is it? 02:19:59 :: (= qs {(-> (: h t) (+ (qs (flr {(< _ h)} t)) (+ [h] (qs (flr {(>= _ h)} t))))) []}) 02:20:01 <<<19931984>>> 02:20:03 here, generic quicksort 02:20:09 and now the cool part 02:20:21 (qs list) 02:20:23 :: (qs list) 02:20:25 [1 2 4 0 6 9] 02:20:33 thats not sorted 02:20:33 I remember that Gregor had some scans of pages he wrote out while designing c2bf.. I wonder if they are still online someplace 02:20:33 ... 02:20:35 wtf :D 02:20:38 it like just worked. 02:20:57 lofl :< 02:21:03 i swear it worked a minute ago in my cli 02:21:54 hmm... 02:21:59 reload might not work properly. 02:21:59 maybe it thinks "0" is "5" for some reason 02:22:13 :: reload 02:22:15 reload 02:23:19 :: (= flr {(-> [f (: (@ h (tst f)) t)] (+ [h] (' f t))) (-> [f (: h t)] (' f t)) []})(= nil {(-> [$pb :] $f) (-> $car $f) (-> $cdr $f) (-> [$setcar h] $f) (-> [$setcdr t] $f) (-> [$! n] $f) (-> $length 0)})(= cons {(-> [h t] {(-> [$pb :] [h t]) (-> $car h) (-> $cdr t) (-> [$setcar h] h) (-> [$setcdr t] t) (-> [$! 0] h) (-> [$! n] (! t (- n 1))) (-> $length (+ 1 (length t)))})})(= list (cons 6 (cons 1 (cons 9 (cons 2 (cons 4 (cons 02:23:24 An error: Application consists of 2 or 3 expressions. 02:23:28 :D 02:23:29 :: (= quicksort done) 02:23:35 :: (quicksort) 02:23:39 done 02:23:41 :) 02:23:44 An error: Application consists of 2 or 3 expressions. 02:23:48 mine is so much better 02:23:58 okay, let's see what happens if i reload the whole bot 02:24:02 adu: yes, but your call is wrong 02:24:08 (quicksort) doesn't make sense 02:24:17 -!- otobot has quit (Read error: 104 (Connection reset by peer)). 02:24:37 -!- oktabot has joined. 02:25:41 :: (= flr {(-> [f (: (@ h (tst f)) t)] (+ [h] (' f t))) (-> [f (: h t)] (' f t)) []}) (= nil {(-> [$pb :] $f) (-> $car $f) (-> $cdr $f) (-> [$setcar h] $f) (-> [$setcdr t] $f) (-> [$! n] $f) (-> $length 0)}) (= cons {(-> [h t] {(-> [$pb :] [h t]) (-> $car h) (-> $cdr t) (-> [$setcar h] h) (-> [$setcdr t] t) (-> [$! 0] h) (-> [$! n] (! t (- n 1))) (-> $length (+ 1 (length t)))})}) (= list (cons 6 (cons 1 (cons 9 (cons 2 (cons 4 (co 02:25:43 does that come through? should end in (qs list) 02:25:43 An error: Application consists of 2 or 3 expressions. 02:25:56 prolly doesn't 02:26:15 :: (qs [1,2,3]) 02:26:16 :: (= flr {(-> [f (: (@ h (tst f)) t)] (+ [h] (' f t))) (-> [f (: h t)] (' f t)) []}) (= nil {(-> [$pb :] $f) (-> $car $f) (-> $cdr $f) (-> [$setcar h] $f) (-> [$setcdr t] $f) (-> [$! n] $f) (-> $length 0)}) (= cons {(-> [h t] {(-> [$pb :] [h t]) (-> $car h) (-> $cdr t) (-> [$setcar h] h) (-> [$setcdr t] t) (-> [$! 0] h) (-> [$! n] (! t (- n 1))) (-> $length (+ 1 (length t)))})}) 02:26:17 [1 ,2,3] 02:26:19 <<<19975264>>> 02:26:32 :: (qs [5,4,3,2,1]) 02:26:34 [5 ,4,3,2,1] 02:26:35 :: (= list (cons 6 (cons 1 (cons 9 (cons 2 (cons 4 (cons 0 nil))))))) (= qs {(-> (: h t) (+ (qs (flr {(< _ h)} t)) (+ [h] (qs (flr {(>= _ h)} t))))) []}) (qs list) 02:26:37 [0 1 2 4 6 9] 02:26:46 yay 02:26:46 works now 02:27:01 wow 02:27:14 i'll make a list of rational numbers and sort it :D 02:27:20 :: (qs (cons 5 (cons 4 (cons 3 (cons 2 (cons 1 nil)))))) 02:27:22 [4 3 2 1 5] 02:27:27 no it doesn't 02:27:32 the gist being that the list type and the rational number class are both mde in oklotalk 02:27:35 :| 02:27:42 wtf. 02:28:00 hmph, i'll start fixing again then 02:28:21 are you sure you're implementing it properly? 02:28:30 :: (qs (cons 4 (cons 3 (cons 2 (cons 1 nil))))) 02:28:32 [3 2 1 4] 02:28:39 adu: i've tested it a lot 02:28:39 actually 02:28:54 :: (= qs {(-> (: h t) (+ (qs (flr {(< _ h)} t)) (+ [h] (qs (flr {(>= _ h)} t))))) []}) 02:28:56 <<<20152768>>> 02:29:03 :: (qs [4 3 2 1]) 02:29:05 [2 1 3 4] 02:29:12 seriously 02:29:15 fuck. 02:29:21 :: (qs [3 2 1]) 02:29:23 [1 2 3] 02:29:43 :: (= qs {(-> (: h t) (+ (qs (\ {(< _ h)} t)) (+ [h] (qs (\ {(>= _ h)} t))))) []}) 02:29:45 <<<20033584>>> 02:29:52 :: (qs [4 3 2 1]) 02:29:55 :: (qs (cons 5 (cons 4 (cons 3 (cons 2 (cons 1 nil)))))) 02:29:57 [1 2 3 4] 02:29:59 [(-> cdr t) (-> [setcar h] h) (-> [setcdr t] t) (-> [! 0] h) (-> [! n] (! t (- n 1))) (-> length (+ 1 (length t))) (-> car h) (-> cdr t) (-> [setcar h] h) (-> [setcdr t] t) (-> [! 0] h) (-> [! n] (! t 02:30:08 hmm okay....... 02:30:20 err 02:30:23 wtf xD 02:30:26 :: (cons 5 (cons 4 (cons 3 (cons 2 (cons 1 nil))))) 02:30:27 oh, right. 02:30:30 <<<20022016>>> 02:30:44 :: [1 2 3 4 5] 02:30:46 [1 2 3 4 5] 02:30:53 :: [1, 2, 3, 4, 5] 02:30:55 [1 , 2 , 3 , 4 , 5] 02:31:06 :: (1 2 3 4 5) 02:31:07 adu: i changed the implementation, doesn't work for other than primitive lists now. 02:31:09 An error: Application consists of 2 or 3 expressions. 02:31:16 it seems the problem is my filter function 02:31:25 and application takes 2 or 3 expressions 02:31:27 not 5 02:31:36 ok 02:31:46 :: (2 + 4) 02:31:47 I don't know anything about your lang 02:31:48 :: (+ 2 4) 02:31:48 6 02:31:52 6 02:32:15 whats the diff between [1 2 3] and [1, 2, 3] ? 02:32:25 well do like ehird and just start coding in it... :D 02:32:31 lol 02:32:43 god i hate that dood sometimes 02:32:44 I have 3 languages like that 02:32:51 (read: "envy") 02:32:52 who is ehird? 02:33:00 adu: , is an atom 02:33:07 ehird is a guy who lives here 02:33:23 oklopol: so what does (,) do? 02:33:41 (,)? that's not a proper application 02:33:46 , is an atom 02:33:48 :: , 02:33:53 ok so what does it do? 02:33:54 , 02:34:02 that 02:34:04 it's an atom 02:34:08 it doesn't do anything 02:34:11 ok, so what is an atom? 02:34:22 like a symbol? 02:34:26 a retarded string, somewhat 02:34:29 yes, symbol. 02:34:33 ah ok 02:34:37 other name for it 02:34:38 I like symbols 02:34:42 *another 02:34:47 me too 02:34:55 can I help with your language? 02:35:14 well you can help me by telling what didn't work, i forgot. 02:35:18 help in what sense? :D 02:35:23 I know hundreds of programming languages 02:35:34 :: (= flr {(-> [f (: (@ h (tst f)) t)] (+ [h] (' f t))) (-> [f (: h t)] (' f t)) []}) 02:35:39 you do? awesome :D 02:35:45 <<<20326240>>> 02:36:00 in that case i should be able to explain this to you in an instant 02:36:12 :: (+ 4 5) 02:36:14 9 02:36:21 I can guess that -> is lambda 02:36:28 nope 02:36:33 it's pattern matching 02:36:36 oh 02:36:36 {} is a lambda 02:36:43 ok 02:36:45 (-> ptrn expr expr expr...) 02:37:03 so I'm guessing [] is empty list 02:37:06 it kinda checks the pattern, and if it matches, it continues the evaluating to the expr's 02:37:11 yeah 02:37:15 [elem elem elem ...] 02:37:19 so what is ' 02:37:26 recursion 02:37:49 what is : 02:37:54 cons? 02:37:58 well 02:37:59 it's in a pattern there 02:38:03 yeah 02:38:05 basically 02:38:12 what is @? 02:38:25 (@ a b) matches on both a and b 02:38:33 the object that is matched 02:38:43 (first on b, then on a, actually) 02:39:07 :: (flr {(> _ 3)} [1 2 32 454 5]) 02:39:09 [32 454 5] 02:39:29 :: (flr {(> _ 3)} (cons 1 (cons 4 nil))) 02:39:31 [4] 02:39:47 :: (flr {(> _ 3)} (cons 4 (cons 1 (cons 4 nil)))) 02:39:50 [4 4] 02:40:04 :: (flr {(<= _ 3)} (cons 4 (cons 1 (cons 4 nil)))) 02:40:07 [1] 02:40:19 wtf. there needs to be something wrong with it 02:40:48 :: (= fac {(-> 0 1) (-> n (* n (' fac (- n 1)))) []}) 02:40:51 <<<20380808>>> 02:40:52 err 02:40:55 :: (fac 2) 02:40:58 An error: maximum recursion depth exceeded 02:40:58 okay, my cli runs it... 02:41:04 :: relad 02:41:06 relad 02:41:15 errr 02:41:20 :: reload 02:41:22 reload 02:41:23 adu: you have an error 02:41:29 not my fault there 02:41:35 :: (= fac {(-> [f 0] 1) (-> [f n] (* n (' f (- n 1)))) []}) 02:41:37 <<<27395616>>> 02:41:39 :: (fac 2) 02:41:41 [] 02:41:46 :) 02:41:48 almost 02:41:59 what's f? 02:42:06 I have no idea 02:42:19 the first one was correct, apart from a small... defect 02:42:33 also the [] isn't needed 02:42:33 whats that? 02:42:42 oh ok, but you had it in yours 02:42:45 it's would be returned if neither pattern matched 02:42:57 whats the defect? 02:43:00 yes, that's for returning [] for the standard case 02:43:05 i mean 02:43:07 well 02:43:15 recursion 02:43:45 you can just recurse by (fac ...) 02:43:45 ' is a shorthand 02:43:46 :: (= fac {(-> 0 1) (-> n (* n (' f (- n 1))))}) 02:43:47 + making it easier for lambdas to recurse 02:43:48 :: (fac 0) 02:43:49 <<<27815888>>> 02:43:51 1 02:43:57 :: (fac 2) 02:43:59 An error: maximum recursion depth exceeded 02:44:05 wut 02:44:11 ah 02:44:20 getting closer 02:44:27 should "f" be "fac"? 02:44:27 just do what you did, again, and it should work 02:44:37 nope. 02:44:43 :: (= fac {(-> 0 1) (-> n (* n (' f (- n 1))))}) 02:44:45 <<<20154248>>> 02:44:45 :: (fac 2) 02:44:47 you are making the call (fac f (- n 1)) there 02:44:48 An error: maximum recursion depth exceeded 02:44:55 why exactly? 02:44:55 :D 02:45:07 (fac ..) or (' ...) for recursion 02:45:09 i dunno, cuz you did it like that 02:45:11 not both 02:45:15 ooooooooooo 02:45:15 ok 02:45:22 f was the function to filter with, man :) 02:45:24 :: (= fac {(-> 0 1) (-> n (* n (' (- n 1))))}) 02:45:26 <<<28207504>>> 02:45:27 :: (fac 2) 02:45:28 2 02:45:30 YEY 02:45:35 hehe 02:45:41 I made a program in oklkang 02:45:52 oklotalk 02:45:59 oklotalk 02:46:01 right 02:46:04 sorry 02:46:06 yarr 02:46:22 :: reload 02:46:28 reload 02:46:35 :: (= flr {(-> [f (: (@ h (tst f)) t)] (+ [h] (' f t))) (-> [f (: h t)] (' f t)) []}) 02:46:37 <<<28325208>>> 02:46:41 :: (= nil {(-> [$pb :] $f) (-> $car $f) (-> $cdr $f) (-> [$setcar h] $f) (-> [$setcdr t] $f) (-> [$! n] $f) (-> $length 0)}) 02:46:43 <<<28364472>>> 02:46:49 :: (= cons {(-> [h t] {(-> [$pb :] [h t]) (-> $car h) (-> $cdr t) (-> [$setcar h] h) (-> [$setcdr t] t) (-> [$! 0] h) (-> [$! n] (! t (- n 1))) (-> $length (+ 1 (length t)))})}) 02:46:51 <<<28801064>>> 02:47:00 :: (= list (cons 5 (cons 4 (cons 3 (cons 2 (cons 1 (cons 0 nil))))))) 02:47:02 <<<27836824>>> 02:47:10 :: (= qs {(-> (: h t) (+ (qs (flr {(< _ h)} t)) (+ [h] (qs (flr {(>= _ h)} t))))) []}) 02:47:12 <<<28207344>>> 02:47:18 :: (qs list) 02:47:20 [4 3 2 1 0 5] 02:47:24 ... 02:47:27 wtf is going on 02:47:33 i'll reboot the bot again.. 02:47:39 -!- oktabot has quit (Read error: 104 (Connection reset by peer)). 02:48:02 -!- oktabot has joined. 02:48:07 :: (= flr {(-> [f (: (@ h (tst f)) t)] (+ [h] (' f t))) (-> [f (: h t)] (' f t)) []}) 02:48:09 <<<19345080>>> 02:48:11 :: (= nil {(-> [$pb :] $f) (-> $car $f) (-> $cdr $f) (-> [$setcar h] $f) (-> [$setcdr t] $f) (-> [$! n] $f) (-> $length 0)}) 02:48:13 <<<19394512>>> 02:48:17 :: (= cons {(-> [h t] {(-> [$pb :] [h t]) (-> $car h) (-> $cdr t) (-> [$setcar h] h) (-> [$setcdr t] t) (-> [$! 0] h) (-> [$! n] (! t (- n 1))) (-> $length (+ 1 (length t)))})}) 02:48:19 <<<19419384>>> 02:48:26 :: (= list (cons 5 (cons 4 (cons 3 (cons 2 (cons 1 (cons 0 nil))))))) 02:48:28 <<<19445520>>> 02:48:31 :: (= qs {(-> (: h t) (+ (qs (flr {(< _ h)} t)) (+ [h] (qs (flr {(>= _ h)} t))))) []}) 02:48:33 <<<19410656>>> 02:48:37 :: (= talk {(-> ["hi" x] "Why hello!") (-> ["bye" x] "Good bye!") []}) 02:48:37 :: (qs list) 02:48:39 <<<19446680>>> 02:48:41 [4 3 2 1 0 5] 02:48:45 :: (talk ["hi" "Mr. roboto"]) 02:48:47 xD 02:48:47 Why hello! 02:48:52 :: (talk ["hi" "Mr. roboto"]) 02:48:54 Why hello! 02:48:59 :: (talk ["bye" "Mr. roboto"]) 02:49:02 Good bye! 02:49:08 :) 02:49:10 :D 02:49:42 but hey 02:49:48 ya? 02:49:51 how come that only works on my comp :D 02:49:55 i mean 02:49:55 that quicksort 02:50:01 i don't know 02:50:03 i just copypaste the code :D 02:51:19 :: flr 02:51:48 what does flr do? 02:52:00 filter 02:52:11 :: (flr {(< _ 3)} [1 2 3 4 5]) 02:52:39 -!- oktabot has quit (Read error: 104 (Connection reset by peer)). 02:52:52 something is very wrong... 02:53:17 -!- oktabot has joined. 02:53:28 :: (= flr {(-> [f (: (@ h (tst f)) t)] (+ [h] (' f t))) (-> [f (: h t)] (' f t)) []}) 02:53:30 02:53:40 ... 02:53:43 :: (= flr {(-> [f (: (@ h (tst f)) t)] (+ [h] (' f t))) (-> [f (: h t)] (' f t)) []}) 02:53:46 <<<19476032>>> 02:54:09 :: (flr {(< _ 3)} [1 2 3 4 5]) 02:54:11 [1 2] 02:54:21 :: (= cons {(-> [h t] {(-> [$pb :] [h t]) (-> $car h) (-> $cdr t) (-> [$setcar h] h) (-> [$setcdr t] t) (-> [$! 0] h) (-> [$! n] (! t (- n 1))) (-> $length (+ 1 (length t)))})}) 02:54:24 02:54:26 :: (= cons {(-> [h t] {(-> [$pb :] [h t]) (-> $car h) (-> $cdr t) (-> [$setcar h] h) (-> [$setcdr t] t) (-> [$! 0] h) (-> [$! n] (! t (- n 1))) (-> $length (+ 1 (length t)))})}) 02:54:28 <<<19588240>>> 02:54:35 :: (= nil {(-> [$pb :] $f) (-> $car $f) (-> $cdr $f) (-> [$setcar h] $f) (-> [$setcdr t] $f) (-> [$! n] $f) (-> $length 0)}) 02:54:37 <<<19603008>>> 02:54:53 what does + do? 02:55:05 :: (= list (cons 5 (cons 4 (cons 3 (cons 2 (cons 1 (cons 0 nil))))))) 02:55:12 <<<19671160>>> 02:55:14 + is an atom 02:55:25 it doesn't have functionality 02:55:25 but 02:55:27 (+ 1 2) sends the object 1 the message [$+ 2] 02:55:33 as does (1 + 2) 02:55:41 because 1 *can* be called 02:55:41 ok 02:56:03 :: (flr {(<= 3 _)} list) 02:56:06 An error: Atm instance has no attribute 'call' 02:56:10 :D 02:56:15 okay, this is a bit spooky 02:59:12 :: (-> 1 2) 02:59:18 f 02:59:37 ya thats spooky 02:59:47 where did the f come from? 03:00:26 :: ({(-> 1 2) 0} 1) 03:00:28 2 03:00:35 :: ({(-> 1 2) 0} 2) 03:00:37 0 03:01:36 what does "tst" do? 03:03:29 :: (= filter {(-> [f (: (@ h (tst f)) t)] (: h (filter f t))) (-> [f (: h t)] (filter f t)) []}) 03:03:31 <<<19575112>>> 03:04:14 :: (= qsort {(-> (: h t) (+ (qsort (filter {(< _ h)} t)) (+ [h] (qsort p(filter {(>= _ h)} t))))) []}) 03:04:16 An error: Unmatching parens @ row 1. 03:04:33 (= qsort {(-> (: h t) (+ (qsort (filter {(< _ h)} t)) (+ [h] (qsort (filter {(>= _ h)} t))))) []}) 03:04:38 :: (= qsort {(-> (: h t) (+ (qsort (filter {(< _ h)} t)) (+ [h] (qsort (filter {(>= _ h)} t))))) []}) 03:04:40 <<<19728784>>> 03:04:48 :: (qsort [1 2 3 4]) 03:04:51 + 03:04:58 lol 03:08:58 umm... it seems nothing works now. 03:09:09 which is kinda weird, because i haven't really changed anything. 03:09:19 adu: f is false. 03:09:49 adu: it should test whatever is matched with given function, and fail if it returns $f 03:10:16 but... nothing works now, so wtf. 03:12:19 ah. 03:12:25 i think i see what's going on... 03:12:46 i'll fix it by removing a feature no one knows even exists. 03:13:27 okay 03:13:33 let's try once more... 03:13:59 :: (= flr {(-> [p (: (@ h (tst p)) t)] (outn "a") (+ [h] (' p t))) (-> [p (: h t)] (outn "b") (' p t)) (outn "c") []})(flr {(< 3 _)} [1 2 3 4 5 ])(= nil {(-> [$pb :] $f) (-> $car $f) (-> $cdr $f) (-> [$setcar h] $f) (-> [$setcdr t] $f) (-> [$! n] $f) (-> $length 0)}) 03:14:08 An error: Atm instance has no attribute 'call' 03:14:14 err... 03:14:17 asd. 03:14:51 :: reload 03:14:51 ? 03:14:53 reload 03:15:14 :: (= flr {(-> [p (: (@ h (tst p)) t)] (outn "a") (+ [h] (' p t))) (-> [p (: h t)] (outn "b") (' p t)) (outn "c") []})(flr {(< 3 _)} [1 2 3 4 5 ])(= nil {(-> [$pb :] $f) (-> $car $f) (-> $cdr $f) (-> [$setcar h] $f) (-> [$setcdr t] $f) (-> [$! n] $f) (-> $length 0)}) 03:15:17 <<<19943992>>> 03:15:27 :: (= cons {(-> [h t] {(-> [$pb :] [h t]) (-> $car h) (-> $cdr t) (-> [$setcar h] h) (-> [$setcdr t] t) (-> [$! 0] h) (-> [$! n] (! t (- n 1))) (-> $length (+ 1 (length t)))})})(= list (cons 5 (cons 4 (cons 3 (cons 2 (cons 1 (cons 0 nil)))))))(= qs {(-> (: h t) (+ (qs (flr {(< _ h)} t)) (+ [h] (qs (flr {(>= _ h)} t))))) []})(qs list) 03:15:30 [0 1 2 3 4 5] 03:15:37 finally 03:16:12 :: (= cons {(-> [h t] {(-> [$pb :] [h t]) (-> $car h) (-> $cdr t) (-> [$setcar h] h) (-> [$setcdr t] t) (-> [$! 0] h) (-> [$! n] (! t (- n 1))) (-> $length (+ 1 (length t)))})})(= list [6 5 4 3 2 1 0])(= qs {(-> (: h t) (+ (qs (flr {(< _ h)} t)) (+ [h] (qs (flr {(>= _ h)} t))))) []})(qs list) 03:16:16 [0 1 2 3 4 5 6] 03:16:25 same thing, but primitive list 03:16:58 interface-based stuff is quite impressive when your own language supports it <3 03:17:31 okay, i can finally leave 03:17:33 :D 03:17:52 i'll leave the bot on, so if you wanna play, do so 03:21:09 adu: if you wanna read a larger example, http://www.vjn.fi/pb/p551616525.txt 03:21:14 the rational number class 03:21:20 anyway 03:21:20 sleep -> 03:31:21 I guess I can't learn oklotalk now 03:31:33 what is \ 03:56:51 -!- adu has quit ("Bye"). 05:03:03 -!- captluo has joined. 05:03:06 Brainfuck! 05:10:11 -!- Sgeo has quit (Remote closed the connection). 05:11:05 -!- oktabot has quit (Read error: 104 (Connection reset by peer)). 05:11:20 -!- oklopol has quit (Read error: 104 (Connection reset by peer)). 05:42:11 -!- Visitor-3CB98 has joined. 05:46:51 -!- oklopol has joined. 05:50:51 -!- GreaseMonkey has joined. 06:27:39 -!- RodgerTheGreat has quit. 06:55:14 -!- oklopol has quit (Connection timed out). 07:19:06 -!- calamari has quit ("Leaving"). 07:35:09 -!- oklopol has joined. 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:36:44 -!- iebnn has joined. 08:36:48 -!- captluo has quit (Read error: 104 (Connection reset by peer)). 08:48:26 -!- Iskr has joined. 09:40:05 -!- oklofok has joined. 09:44:24 -!- oklopol has quit (Read error: 113 (No route to host)). 09:52:34 -!- GreaseMonkey has quit ("zzzzz"). 10:16:19 -!- ehird has joined. 10:45:41 soooooo 11:55:23 Like, dude. 11:55:28 -!- Visitor-3CB98 has changed nick to Slereah. 12:10:04 -!- Corun has joined. 12:31:40 OMG 12:31:42 stupidfilter alpha is out 12:43:40 -!- Corun has quit ("This computer has gone to sleep"). 13:42:49 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)). 13:43:07 -!- Judofyr has joined. 13:59:45 -!- Sgeo has joined. 13:59:47 -!- jix has joined. 14:07:05 I think I found a way to resolve my inner-recursion woes. 14:08:22 I will use the awesome U~ combinator, that I just made up. 14:08:33 It is called "Seor Turingos Combinator" 14:10:07 Of the form ^x^y [A function of y that converts to i that performs possible outputs] ((([Some conditional, function of y](xx))i)[Some function of y]) 14:16:56 -!- Sgeo has quit ("Ex-Chat"). 14:26:18 \ 14:26:19 \ 14:28:54 Of the form ^x^y [A function of y that converts to i that performs possible outputs] ((([Some conditional, function of y](xx))i)[Some function of y]) 14:28:59 Damn 14:29:15 / 14:29:18 Thar 14:51:28 -!- timotiis has joined. 15:25:32 -!- timotiis has quit (Read error: 110 (Connection timed out)). 15:30:52 -!- timotiis has joined. 15:49:30 hmm 15:49:39 would building an Analytical Engine practical? 15:49:43 ^be 16:06:19 -!- timotiis has quit (Read error: 110 (Connection timed out)). 16:06:47 -!- UnrelatedToQaz has joined. 16:09:39 hello all 16:15:05 hi 16:20:56 do you like jonathan coulton? 16:33:07 -!- UnrelatedToQaz has quit ("ChatZilla 0.9.81 [Firefox 3.0b5/2008032620]"). 16:41:18 -!- RodgerTheGreat has joined. 16:51:26 -!- jix has quit ("CommandQ"). 16:51:53 -!- jix has joined. 17:13:31 -!- timotiis has joined. 17:24:52 -!- Sgeo[College] has joined. 17:25:34 oklofok: hello 17:25:50 Hi all 17:38:58 hello 17:44:21 -!- olsner has joined. 17:45:48 -!- timotiis has quit (Read error: 110 (Connection timed out)). 18:05:10 EVERYONE IS DEAAAD 18:08:22 ehird: no, it is you who is dead 18:11:27 olsner: no 18:18:34 Brainfuck 18:19:53 * Sgeo[College] is not dead 18:20:02 My brain is fucked 18:20:15 -!- timotiis has joined. 18:21:38 iebnn: hello, are you new here? 18:21:49 don't recognize your nick 18:22:40 Be back soonish 18:22:53 yes, im new 18:22:54 why? 18:23:18 iebnn: welcome! 18:23:23 now, escape while you can 18:24:07 -!- Sgeo[College] has quit ("http://www.mibbit.com ajax IRC Client"). 18:26:58 -!- Sgeo[College] has joined. 18:27:19 Back 18:28:47 -!- sekhmet has quit ("it's a reboot!1!"). 18:30:24 Bye all 18:32:08 -!- Sgeo[College] has quit ("http://www.mibbit.com ajax IRC Client"). 18:44:21 -!- captluo has joined. 18:45:13 -!- iebnn has quit (Read error: 104 (Connection reset by peer)). 18:46:52 -!- timotiis has quit (Read error: 110 (Connection timed out)). 18:49:23 -!- sekhmet has joined. 18:50:12 -!- timotiis has joined. 18:51:39 -!- jix has quit (Nick collision from services.). 18:51:49 -!- jix has joined. 18:52:43 oklofok: A 19:03:45 -!- captluo has quit. 20:31:22 -!- Iskr has quit ("Leaving"). 20:37:32 -!- ais523 has joined. 20:38:16 hello, ais523 20:38:26 hi ehird 20:41:25 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)). 20:41:56 -!- Judofyr has joined. 20:55:25 -!- Tritonio__ has quit (Remote closed the connection). 20:59:12 * ais523 is trying to write an IRC client in INTERCAL 20:59:20 but I think there's a bug in CLC-INTERCAL's network connection code 20:59:38 ais523: ouch :) 20:59:42 oklofok: okoping 20:59:47 I can send information to the IRC server, but I can't get any information back 21:00:08 neither on freenode, or the local not-externally-accessible IRC server I use for testing 21:00:16 s/or/nor/ 21:01:02 -!- Tritonio_ has joined. 21:01:43 the strange thing is that the same code can get information back fine from an HTTP server 21:02:16 ais523: IRC's special chars, maybe? 21:02:19 Beats me. 21:02:31 actually, it may be a problem with my code 21:03:03 I just aimed the HTTP GET code at irc.freenode.net:6667, and got typical error messages back 21:04:08 incidentally, how's this for a filename: ickirc-c.rstclci.in 21:07:42 ais523: rstclci ... what is THAT 21:08:01 ehird: CLC-INTERCAL source with syscall, INTERNET, and threads extensions enabled 21:08:23 (n.b. INTERNET != Internet; it's the name for CLC-INTERCAL's INTERCAL NETworking extension) 21:09:04 Speaking of IRC, I am currently writing a semantic IRC framework. 21:09:21 Which basically boils down to it understanding the semantics of the protocol innately, instead of dumbly parsing & deparsing text. 21:09:33 e.g. 'join' messages can have callbacks, because it tracks queues of requests 21:10:07 ah, because most of the numerics are responses to something or other? 21:10:14 ais523: Yes 21:10:20 and likewise ERROR is a response to QUIT as well as being a standalone message 21:10:26 Exactly 21:10:41 Also, each type of message has its own class 21:10:47 PRIVMSG, PING, etc. 21:11:07 And a PRIVMSG #esoteric :foo has 'channel' and 'text' attributes, instead of relying on dumb indexing 21:11:13 Indeed it will even do WHOISes 21:11:18 and give you a simple object back 21:11:23 whereas the actual whois output is obscene 21:12:09 Also, instead of 'bot = server connection' 21:12:18 or even 'bot = one channel' like some things assume 21:12:23 it knows that a bot is spread across multiple networks 21:12:27 and a network has servers 21:13:04 the design of IRC is quite clever. Normally, you don't need to know that a network has servers unless you're a severl operator 21:13:14 because all the messages handle them more or less transparently 21:13:21 ais523: I mean load-balanced servers 21:13:25 like kubirck.freenode.net etc 21:13:29 ehird: so did I 21:13:35 ais523: All IRC clients have a concept of 'Networks' if you look in them 21:13:41 'cause they're a useful concept :-) 21:13:46 ehird: yes, definitely 21:13:52 knowing that a network has servers is less important 21:14:08 the main difference it makes to the end-user is whether you get an idle-time notification in a WHOIS 21:14:54 ais523: $CLIENT will also have servers in networks if you look closely 21:15:07 incidentally, ais523_ is still online, despite not responding to pings 21:15:25 it goes into an infinite loop rather than reading back from the IRC server 21:15:42 but if I give it an alphanumeric buffer that's too small, it errors, so /something/ strange is going on 21:17:25 -!- olsner has quit ("Leaving"). 21:17:31 i have always disliked the look of /italics/ 21:17:41 and i never use underlines, so i use _italics_ 21:17:44 /random, i know 21:18:29 in a man page, the .I directive writes an underline 21:18:49 and so presumably in nroff too, when formatting for display on a terminal 21:19:02 ais523: underlines are totally useless though 21:19:12 italics & bold cover everything i need to express 21:19:17 ehird: what about links? 21:19:35 ais523: i don't manually underline links 21:19:42 the reason that underlines fell out of favour was that nowadays people have become used to recognising them to indicate links 21:19:44 in my actual text, i have no need for underlines 21:19:52 even if links didn't exist 21:21:18 I was always taught to use them to indicate the final outcome of a mathematical problem or other such lengthy situations 21:21:31 e.g. if an exam question asked me what 2 + 2 was, I was supposed to answer _4_ 21:22:52 not sure of the merits of the idea except to save time for examiners, though 21:23:10 but I suppose underlines have deteriorated since the days of ALGOL 68 and typewriters 21:23:23 -!- RedDak has joined. 21:26:01 I prefer '4, F*CK YEAH' 21:26:07 Or some other notable exclamation 21:26:40 don't blame me if you get strange comments in your exam feedback, then 21:26:45 -!- RedDak has quit (Client Quit). 21:27:06 -!- RedDak has joined. 21:30:19 oklofok: ping 21:30:23 ais523: :D 21:30:34 '2 + 2 = THE ONE THE ONLY 4' 21:30:43 '2+ 2 = EFF OH YOU ARE' 21:30:49 '2+ 2 = FOOOOOURRRRRRRRRR' 21:32:08 2 + 2 = 1 + 3 = 0 + 4 = -1 + 5 = -2 + 6 = ... = -inf + inf = undefined 21:32:35 lament: but NaN = 4 in this case 21:32:56 the only reason that computers say that NaN is not equal to everything is that they can't be expected to figure out what value it actually has in that case 21:33:37 ais523: NaN != NaN in a lot of languages 21:33:42 because there are multiple NaNs 21:33:46 and NaN always creates a new one 21:33:50 JavaScript behaves like this 21:33:55 ehird: NaN != NaN in C even if it's the same NaN 21:34:06 and there are multiple NaNs, but they compare not equal even if they have the same payload 21:34:14 ais523: C has NaN? 21:34:14 Wow. 21:34:38 ehird: you need C99 to be able to express it portably, though, and even then it's optional, I think 21:34:48 but the rules for it are defined if it does exist 21:38:42 0./0. is not guaranteed to be NaN, for instance; it might be a SIGFPE instead (or presumably another implementation-defined signal) 21:47:33 ais523: I am tempted to implement your s/// correction thing 21:47:36 ais523: for IRC 21:47:42 ais523: also star-correction 21:47:48 uses leventhsethisen distance or whatever 21:47:51 to determine which to change 21:47:57 *Levenstein 21:48:03 levenshtein actually 21:48:04 ha 21:48:40 ehird: I doubt it could handle that, two lines up and in someone else's comment, it would need to know the context of the conversation to even think of looking there 21:48:47 and looking there as a matter of course would be stupid 21:49:36 ais523: no, it would just scan the N latest messages 21:49:38 and choose the one most likely 21:49:46 even other people's? 21:50:01 I've been known to correct my own most recent message after tens of minutes, with lots of intervening comments 21:50:19 but it's pretty silly, not to mention a security risk, to correct other people's 21:53:02 -!- RedDak has quit (Read error: 110 (Connection timed out)). 21:53:15 -!- Dagide has joined. 21:53:29 ais523: only correct as in 'repeat' 21:53:40 I know 21:53:50 so that avoids the security risk, at least 21:54:00 you could have a bot doing that sort of correction, I suppose 21:54:12 what about the times when I typo one of my own corrections and correct that? 21:54:27 I often do s/a/b followed by s/$/\// when I realised I missed off the final slash by mistake 21:55:17 ais523: it'd retry any stuff it corrects for correction 21:55:19 if you see what i mean 21:55:26 yes 21:55:33 ais523: incidentally, do you know about #xkcd-signals' ROBOT9000? 21:55:41 the solution is not too hard to see, I was just making sure you knew the problem 21:55:43 ehird: no 21:55:59 ais523: Basically, if you say something that has already been said before -- ever -- it mutes you. 21:56:07 The mutes get progressively greater the more you do it but gradually decrease. 21:56:22 So, memes get killed off extremely quickly and only original thought is left. 21:56:26 It's an interesting idea. 21:56:33 what do you mean by a mute, here? it devoices you, and it's a moderated channel? 21:56:51 ais523: I think the main implementation +b's you and then -b's you after the timeout 21:57:03 But, same thing in this case 21:57:25 ais523: Full scoop: http://blag.xkcd.com/2008/01/14/robot9000-and-xkcd-signal-attacking-noise-in-chat/ 21:57:25 But 21:57:26 http://media.peeron.com/tmp/ROBOT9000.html 21:57:26 it would be more interesting to see it done with voicing 21:57:28 there's the source 21:57:30 in Perl 21:57:35 so you should have no problem figuring it out 21:57:47 so that the little V signs, or whatever the client uses, turn on and off as people accidentally repeat 21:57:58 but you'd have to be really careful not to say things like 'yes' or 'no' 21:58:09 ais523: Well, the idea is that you justify more than 'yes' or 'no' 21:58:14 You go 'Yes, the system is configured so that blah.' 21:58:25 or maybe just get your client to a ppend a sequence number to the end of everything you said [1] 21:58:27 Not perfect for all cases surely. But interesting 21:58:35 ais523: as for that idea, 21:58:39 it'll just get you banned 21:58:49 Just like all bad faith is dealt with in IRC channels 21:59:00 hmm... maybe you could do it with whitespace so people didn't notice 21:59:18 but it's probably not fair to try to work around that sort of restriction 21:59:25 ais523: They would notice when you say the same thing twice 21:59:34 depends on what that thing was 21:59:35 But anyway 21:59:40 My idea 21:59:47 is a blend of Utu (you may have heard of it) and that 22:00:08 If enough people 'hate' you (that's an actual command), it mutes you 22:00:10 wow, that code you linked doesn't look like Perl at all, someone's tried to write it like C 22:00:11 That's the *basic* idea 22:00:18 it's uncomfortable seeing Perl that readable 22:00:19 http://savingtheinternetwithhate.com/design.html 22:00:25 But basically, doing the above but with an irc bot. 22:00:39 ais523: Network::IRC and all that are object-oriented, clean, callback-based frameworks. 22:00:41 Unsuprising 22:01:18 Most 'modern' perl looks like that 22:01:21 in my experience 22:02:05 that isn't modern perl 22:02:16 they call procedures using the & sigil, and that's been deprecated for ages 22:02:36 so whoever wrote that is used to old-fashioned Perl 22:07:29 wow, robot9000 rules 22:07:48 very clever 22:08:11 ah, they thought of the trailing-whitespace thing 22:08:30 lament: put it in #esoteric! as an experiment? ;) 22:08:36 xkcd fed two years of logs into it 22:08:43 but the logs we have take back to 2004 22:08:44 they also remove punctuation and all repeated characters 22:08:48 that's gotta be interesting, no? 22:08:55 they should probably do Porter stemming as well, just for the fun of it 22:08:57 or i can do it if allowed ;) 22:08:58 we don't have any such issues, though 22:09:04 lament: yes, but it would be interesting 22:09:15 it might be interesting to set up a bot to report when a user would be banned, rather than actually doing it 22:09:26 so we could see what the false-positive rate would be like 22:09:27 that just leads to more noise though 22:09:30 but yeah 22:09:34 lament: this is just as a temp experiment 22:09:36 but yeah, i'll get on it 22:09:36 heh 22:09:41 ehird: can you just run it on the logs to see which lines would it match? 22:09:43 ais523: seen StupidFilter? 22:09:48 lament: no, it works there-and-then 22:09:51 http://stupidfilter.org 22:09:53 maybe report in a second channel, so that people didn't have to look at it if they didn't want to 22:09:56 they released an alpha recently 22:09:59 but its very slooooww 22:10:00 ehird: I hadn't seen it 22:10:06 ehird: i'm sure it's easy to hack to work in batch mode 22:10:35 and if all it does is line matching after trimming whitespace, you don't need the bot 22:10:48 just write a program to check that 22:10:56 lament: you don't even need to write a program 22:11:03 some combination of sort and uniq would work 22:11:07 right 22:11:11 but it also filters out nicks, smilies, punctuation, etc 22:11:22 so 22:11:34 throw out everything except alphabetic chars 22:11:40 also case and control characters 22:11:43 throw out spaces even 22:11:50 they can't contribute to false positives much 22:11:51 lament: no, do Porter stemming first 22:12:00 oh, right 22:12:07 so that you can't just add -ing on the end of a word to create a different line 22:12:14 -!- ehird has changed nick to ROBOT9000. 22:12:17 -!- ROBOT9000 has changed nick to ROBOT9001. 22:12:17 Robot9000 doesn't do that, by the way 22:12:39 anyway, it seems in half an hour you could get some good estimates 22:12:50 -!- ROBOT9001 has changed nick to ehird. 22:13:05 # if the channel is quiet for too long (longer than fortune_time, in seconds), 22:13:05 # print the output of the fortune_command. Remove to disable this feature. 22:13:07 that's brilliant 22:13:20 aha 22:13:22 ais523: it IS based on voice 22:13:32 so that unfortunately means it needs ops 22:13:33 what a shame 22:13:35 wait 22:13:36 it would for +b 22:13:53 it's based on both voice and ban as far as I can tell 22:14:08 at least, the code is capable of doing both of those 22:14:41 anyway, I was going to suggest running it as a simulation rather than actually banning 22:15:01 ais523: yeah, i will 22:15:03 just setting it up first 22:15:04 my $dbh = DBI->connect( "DBI:mysql:database=$config->{db_name}", 22:15:04 $config->{db_user}, $config->{db_pass} ) 22:15:08 what should that be for sqlite? 22:15:17 i think simulating it on the logs would be more informative 22:15:23 (by finding matching lines in the logs) 22:15:42 you'd find out everything the bot would have done in the past ~3 years 22:16:11 oh, it also bans and devoices people who change nick too often 22:16:17 and blocks newly-arriving users for a minute 22:19:55 hmm 22:19:58 it comes with nothing to import logs 22:19:59 damnit. 22:20:57 ehird: just run through each line calling the callback for someone saying something 22:21:40 ais523: Non-trivial. Network::IRC isn't simple. 22:21:52 & the logs are not in raw format 22:22:29 ehird: just call irc_on_public 22:22:34 rather than messing with Network::IRC at all 22:22:49 ais523: 22:22:49 my ( $self, $event ) = @_; 22:22:49 my ( $nick, $userhost ) = ( $event->nick, $event->userhost ); 22:22:49 my ($msg) = ( $event->args ); 22:22:58 from irc_on_public 22:23:04 that's not too complicated a call to manage 22:23:09 it would look something like this: 22:23:15 ais523: Add that to parsing the logs... 22:23:24 However, I will download all the logs and munge them together 22:23:31 Oh wait! 22:23:42 ais523: Your idea sucks. It will retroactively punish 22:23:50 So, e.g., most people in here will have mute times off the csale 22:23:51 oh wait 22:23:54 i can fix that myself 22:23:54 heh 22:23:55 :D 22:23:56 okay 22:24:00 time to brush up on my wget-fu 22:24:14 irc_on_public($self,(nick => "somenick", userhost => "somefakeuserhost", args => $msg)) 22:24:43 yeah, and where to get the self from? 22:25:03 ais523: Also, it interacts with irc: it will try to voice & kick etc 22:25:06 causing havock 22:25:07 ehird: it only cares about it when kicking 22:25:07 *havok 22:25:21 so just comment all the lines that use it and pass in undef or something 22:25:33 that'll do for filling the database, then you can comment them back in again 22:25:46 or if you're feeling clever, make it skip all those lines if $self is undef 22:26:17 okay then 22:26:30 i'll make it beep when it was going to kick someone 22:26:34 interactive lightshow :D 22:27:11 actually, my semantic irc framework would rock for this 22:27:14 just give it a dummy irc server 22:27:16 filled with the logs 22:27:19 and let it go 22:27:49 I have to go, now, anyway. Bye! 22:27:51 -!- ais523 has quit ("(1) DO COME FROM ".2~.2"~#1 WHILE :1 <- "'?.1$.2'~'"':1/.1$.2'~#0"$#65535'"$"'"'&.1$.2'~'#0$#65535'"$#0'~#32767$#1""). 22:28:23 -!- Dagide has quit (Remote closed the connection). 22:29:21 lament: bespin.org is FEELING MY PAIN 22:29:29 KILL KILL KILL, YOUR SERVER MUST DIE 22:31:05 It's on to 2006 already. 22:31:06 Wheee... 22:35:08 Deewiant, there? 22:35:52 Deewiant, the HRTI test of mycology adds a total of over 0.030 seconds 22:36:14 Deewiant, so far that is the single slowest fingerprint to test 22:39:13 okay 22:39:15 all logs downloaded 22:39:29 515687 lines 22:43:25 -!- jix has quit ("CommandQ"). 22:43:33 hm 22:43:43 lament: I have 426682 lines of logs processed ready 22:44:33 o wait 22:44:34 if (@ARGV) { # we're only loading an existing log file, not actually running 22:44:34 print "Loading log files...\n"; 22:44:34 &load_log; 22:44:34 } 22:44:37 it already can do it 22:44:37 lulz 22:49:39 lament: So since ROBOT9000 already supports loading logfiles, I could just quickly load it up now and then put it in here as a quick experiment. 22:49:40 Thoughts? 22:52:50 it would take us weeks to reach any interesting conclusions; we don't talk much 22:53:16 so simulating its actions in the logs is far more informative 22:53:23 but feel free 22:53:45 as long as it doesn't actually hurt anybody :) 22:54:06 lament: well, that's the problem -- it won't run without ops 22:54:06 :/ 22:54:15 (you just said wheeee, okay, hm and lulz in the past 15 minutes - you would be very muted now) 22:54:21 and yes 22:54:22 i very would 22:54:23 then fix it 22:54:27 not just any kind of muted, but VERY muted 22:54:30 it's open source 22:54:35 lament: i don't think i can fix it, the whole architechture is based on it 22:55:17 why don't you just search for duplicates in the log files? :) 22:55:41 i bet most of the duplicates are short things like "okay" 22:55:42 lament: because that's nothing like what robot9000 does 22:56:00 can't you just steal its text-processing algorithm 22:56:08 presumably it's a separate procedure 22:56:11 you don't need the rest of the bot 22:56:28 lament: no, its not a seperate procedure 22:56:31 hmm 22:56:36 i'm going to load the logs into it 22:56:38 and see what happens 22:56:42 wow, this bot sounds more and more like a perl program :) 22:56:49 lament: well, it is perl 22:56:49 :) 22:58:46 lament: wow 22:58:46 zsh: bus error perl ROBOT9000.pl ROBOT9000.yml logs/combined.txt 23:00:32 and you want that thing to ban people? :) 23:01:11 lament: hehe, well it is processing them now 23:01:14 what could possibly go wrong! 23:01:22 :D 23:01:22 wow 23:01:27 this is a lot of stuff 23:01:27 :P 23:01:47 I'll just let it do its thing.. 23:03:05 lament: it keeps recording empty lines. heh! 23:03:15 Still, if xkcd are using it, it must work pretty well 23:06:31 lament: Sheesh, people talk about a lot of crap in #esoteric. 23:06:42 I agree 23:06:56 it's pretty good now compared to what it used to be at one point 23:07:22 the value is an anti-alias factor setting it to 1 disables the anti-aliasing feature this makes the output look bad but setting it too high makes the trace take a lot more time to complete 23:07:25 that just scrolled past 23:07:28 (we actually talk about programming stuff once in a while as opposed to just talking about manga and social incompetence) 23:07:32 (Incidentally, I would have just been muted, ironically) 23:12:06 lament: sheehs, this is such a waste of cpu time 23:12:07 :D 23:22:28 -!- oerjan has joined. 23:22:36 lament: Sti-i-i-hillll going 23:25:19 -!- oerjan has quit (Client Quit). 23:27:22 -!- oerjan has joined. 23:42:01 lament: still going 23:49:40 i wait with bated breath 23:51:36 * oerjan is surprised to learn that "bated" is the correct spelling 23:55:40 process 3 killed 23:55:40 time for new and improved garbage 23:55:40 oh and that is the previous newline 23:55:40 heh 23:55:42 latest lines 2008-04-11: 00:17:26 lament: stillllll going 00:49:36 -!- timotiis has quit (Read error: 110 (Connection timed out)). 00:53:09 lament: Guess what's still going? 01:01:31 -!- wildhalcyon has joined. 01:01:55 lament: WELL, these logs have a lot to do with esoteric things 01:01:59 but not really programming languages 01:02:00 gregorr-w cleans his scottish claymore 01:02:00 feesh cleans his teeth 01:02:00 gregorr-w cleans his novelty-size 14-inch ribbed black dildo 01:02:00 waiit 01:02:00 gimme my dildo back bitch 01:02:02 gregorr-w hides it somewhere and runs off awkwardly 01:02:04 how am i meant to clean my teeth now 01:03:05 mornin', or evenin', or whatever portion of the timecube it currently is wherever you are. 01:05:09 wildhalcyon: quater-past ninety 01:06:17 cool. Its about 5pi/3 here. 01:06:38 I've decided to express all times in radians from now on. 01:07:06 Engineers and mathematicians will understand what I'm saying. As for anyone else... screw 'em. 01:07:36 -!- Sgeo has joined. 01:08:17 Sgeo: When did you first come in here? 01:08:36 ehird, I don't remember 01:08:41 Sgeo: Year? 01:08:47 * Sgeo doesn't remember 01:10:43 Century? 01:16:36 * oerjan wonders why google only catches the occasional page in the tunes.org logs 01:20:12 "You know how in YouTube, when you click pages and the comments for that page load without having to go to a new web page? That's Web 2.0" ~me, earlier today 01:20:12 :( 01:20:21 (paraphrased) 01:24:10 Sgeo: cluelessness 2.0 01:24:31 ehird, sometime after that (and after he left :( ), I looked up Web 2.0 01:24:36 oerjan: it doesn't consider 'empty' directories with no links particularly worthy 01:24:44 Sgeo: web 2.0 is a vacant buzzword with no reason 01:24:52 Sgeo: you are describing 'Ajax' which is another buzzword 01:25:08 but amounts to a way to create an http request and add callbacks to it via javascript 01:25:12 then processing the result 01:25:15 ehird, I know what I described, I just thought at the time that Web 2.0 is AJAX 01:25:25 no 01:25:29 that would make the term even stupider 01:25:30 :D 01:28:25 ehird: Havin' fun reading the logs? X-P 01:28:45 GregorR: No, feeding them into ROBOT9000. 01:28:57 All four years of them. 01:32:20 has this channel really been around 4 years? 01:33:48 wildhalcyon: longer 01:33:50 2003, I think 01:33:53 but logs started in 2004 01:33:55 wow 01:34:12 you can find the announcement message in the esolang mailing list 01:34:14 [01:34] -ChanServ- Registered: 5 years 14 weeks 6 days (23h 3m 36s) ago 01:34:23 [01:34] -ChanServ- Contact: andreou 01:34:24 [01:34] -ChanServ- Alternate: lament << ONLINE >> 01:34:31 I think andreou last came in 2003. 01:34:32 :p 01:34:42 from my reeee-search 01:35:01 wished I'd gotten involved more sooner, I guess 01:35:24 I joined here sometime in 2007. 01:35:38 esolang was a nice list 01:35:47 lament: Is it still alive? 01:35:55 I joined around 2006, but I never really did much. I'm still not terribly active. 01:36:16 ehird: i think so, there just haven't been any messages in years 01:36:20 so... not really 01:37:46 lament: we should try and get comp.lang.esoteric 01:37:47 :D 01:38:48 I guess on Tuesday I'll tell him I was mistaken in my description of Web 2.0.. 01:38:57 so it was 2002 01:39:07 http://esoteric.sange.fi/archive/2002-q4 01:39:13 * Sgeo still feels guilty about it 01:39:27 back then, freenode was already irc.freenode.net, but was still called OPN 01:40:25 * Sgeo goes on an ant murdering spree 01:40:26 lament: that's EFNet 01:40:29 look at the announcement 01:40:35 ergo, a different #esoteric 01:40:39 maybe there's people there... still talking 01:40:42 if you actually read the messages... 01:40:42 and we don't know of them 01:40:57 ehird, no, not now. 01:41:12 Sgeo: did you just check? :P 01:41:16 uhh 01:41:17 Maybe sometimes some people are there, but none right now. 01:41:19 ehird, yes. 01:41:27 Sgeo: hey you have ants too? 01:41:37 ehird: do actually read the messages 01:41:45 lament: following the guy's sig links i find http://psychanodia.blogspot.com/ 01:41:51 or is this something game-related... 01:42:11 oerjan, real ants :( 01:42:18 They're all over my desk! 01:42:19 Sgeo: you sick person :P 01:42:52 * oerjan uses a drinking glass and a piece of paper to catch them 01:43:23 my ants help me code 01:43:25 they are very proficient 01:43:43 but what they love most is playing Zork 01:43:51 'you are in a maze of twisty passages, all alike' reminds them of home 01:44:10 * oerjan tries not to let them near the computer 01:44:14 I hated that game 01:45:13 * Sgeo should get a tissue box and a garbage, to kill and dispose of ants 01:45:14 wildhalcyon: How *DARE* you. 01:45:19 wildhalcyon: Go XYZZY your PLUGH 01:46:08 Sorry, it just wasn't my brand of humor. 01:46:30 xyzzy and plugh wasn't really zork. 01:46:49 lament: I know that. 01:46:55 Even so, they are words related to the game. 01:48:16 so's "the". 01:48:41 not to mention rye. 01:48:44 * wildhalcyon shudders 01:49:09 evil despicable grain species? 01:49:32 perhaps, but I think it was a type of alcohol 01:49:33 There should be a TC esolang with no syntax somehow. 01:49:35 I don't know how. 01:49:57 define syntax, and it shall be done. 01:51:01 The Taxes of Syn 01:51:29 lament: everything involving the world 'an' 01:51:31 A token followed by one or more additional tokens. 01:52:42 that's not much of a definition. 01:53:30 I know, its brutal. 01:53:40 well the order of tokens is syntax. so for a language to be totally syntax-free, sorting the characters of a program should not change its meaning >:) 01:54:21 which basically leaves you with 256 unary encoded values... 01:54:26 Not necessarily. 01:54:31 Tokens may be larger than a single character 01:54:40 for instance, you could use integers 01:54:42 oerjan: how about: sorting the tokens 01:54:48 where tokens are, oh, i don't know 01:54:53 ok maybe 01:54:53 let's say many non-whitespace 01:54:57 seperated by whitespace 01:55:26 what about morphology then? you could imagine a polysynthetic PL where every program was a single word 01:56:28 oerjan: no 01:56:48 now there certainly are already PLs where whitespace is insignificant everywhere. brainfuck for one 01:57:09 oerjan: actually i can't imagine such a PL 01:57:34 i don't think that makes any sense at all 01:57:46 depends how you defined "word" 01:58:12 certainly, but i mean if BF isn't it, then nothing is 01:58:25 and it seems silly to say that BF programs are "single words" 01:59:16 I would argue that they're not. 01:59:18 we seem to be splitting hairs 01:59:19 :) 01:59:33 Even glypho has word-like elements. 01:59:51 well, actually, i suppose wierd is single-word 01:59:53 :) 02:00:01 single-symbol, even 02:19:37 a 02:20:48 ugh, my new language design is coming along REALLLLLLLY slowly 02:21:53 wildhalcyon: eat it 02:21:54 with a spoon 02:21:56 and a fork 02:21:57 and a spork 02:22:01 then it will co-operate 02:22:05 while being digested 02:22:26 I do need the language-design equivalent of prune juice 02:26:34 I'm just confuzzled I suppose 02:30:00 -!- ehird has quit ("This computer has gone to sleep"). 02:32:03 -!- oerjan has quit ("Good night"). 02:49:34 -!- calamari has joined. 02:49:41 hi 02:50:56 GregorR: you here? 02:51:06 Yuh 02:51:09 cool 02:51:14 >_> 02:51:23 I have a c2bf question for you 02:51:28 Heh, OK 02:51:31 you still have those page scans ? 02:51:37 Sure, somewhere, just a sec. 02:51:39 from when yopu were designing it 02:51:55 http://www.codu.org/c2bf.pdf 02:52:01 been researching GCC 02:52:17 thanks 02:53:34 hi calamari :-) 02:53:53 GregorR: does C expect an infinite stack? 02:54:09 No, of course not. 02:54:15 hi wildhalcyon 02:54:45 That being said, it has no provisions for running out of stack space. When that happens your program usually dies a painful death :P 02:55:00 ahh ok 02:55:13 stack overflow.. not a good thing 03:07:00 -!- wildhalcyon has left (?). 04:08:19 GregorR: this brings up an interesting idea- is there any minimum stack depth required by, say, the ANSI C spec? 04:53:05 The ISO spec, insofar as I'm aware, does not even mandate a stack. :p 04:53:44 (how else to implement functions is beyond me, though. (assuming real hardware. Mr. "Lambda Calculus" can just assume that functions work. :p)) 05:00:32 -!- GreaseMonkey has joined. 05:41:33 Yyyyup. 06:10:01 -!- olsner has joined. 06:13:57 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)). 06:14:39 -!- Judofyr has joined. 06:23:07 -!- calamari has quit ("Leaving"). 06:50:01 -!- Sgeo has quit (Read error: 104 (Connection reset by peer)). 07:14:52 AnMaster: yes, because of the ff*kyn especially made for fast interpreters on computers with low-granularity timers, so that T would give useful info. ;-) 07:16:33 -!- Judofyr has quit. 07:33:58 -!- Iskr has joined. 07:51:56 Deewiant, hah 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:22:25 -!- GreaseMonkey has left (?). 08:23:50 -!- GreaseMonkey has joined. 08:53:26 -!- oerjan has joined. 08:54:59 -!- olsner has quit ("Leaving"). 09:11:26 -!- oerjan has quit ("leaving"). 10:33:02 -!- GreaseMonkey has quit ("I hope your attitude's as positive as these test results!"). 10:54:00 http://esolangs.org/w/images/b/b8/Lazy_Bird.png <- it is still thar D: 10:55:57 Dot dot dot. 10:58:13 -!- lament has quit (brown.freenode.net irc.freenode.net). 10:58:13 -!- tejeez has quit (brown.freenode.net irc.freenode.net). 10:58:15 -!- Deewiant has quit (brown.freenode.net irc.freenode.net). 10:58:15 -!- fizzie has quit (brown.freenode.net irc.freenode.net). 10:58:15 -!- Slereah has quit (brown.freenode.net irc.freenode.net). 10:58:15 -!- sebbu has quit (brown.freenode.net irc.freenode.net). 10:58:15 -!- EgoBot has quit (brown.freenode.net irc.freenode.net). 10:58:17 -!- oklofok has quit (brown.freenode.net irc.freenode.net). 10:58:17 -!- cmeme has quit (brown.freenode.net irc.freenode.net). 10:58:17 -!- lifthrasiir has quit (brown.freenode.net irc.freenode.net). 10:58:17 -!- cherez has quit (brown.freenode.net irc.freenode.net). 10:59:16 -!- oklofok has joined. 10:59:16 -!- Slereah has joined. 10:59:16 -!- cmeme has joined. 10:59:16 -!- lifthrasiir has joined. 10:59:16 -!- sebbu has joined. 10:59:16 -!- EgoBot has joined. 10:59:16 -!- cherez has joined. 10:59:16 -!- fizzie has joined. 10:59:16 -!- lament has joined. 10:59:16 -!- tejeez has joined. 10:59:16 -!- Deewiant has joined. 11:47:12 Does this seems okay as an Ackerman function? A = ^xy.(((iszero(car y))(xx)i)(((iszero car y) (succ cdr y)) (((iszero cdr y) (x ((cons pred car y) i)) (x ((cons pred car y) (x ((cons car y) pred cdr y)))) 11:47:28 And the function itself would be ``AA 11:47:42 (Parenthesis might be unmatched) 12:05:19 http://pll.cpsc.ucalgary.ca/charity1/www/wofm/wofm2.html 12:05:20 wot 12:05:46 We're so west coast. 12:21:26 -!- jix has joined. 12:24:14 ehird: pong, like. 12:35:12 -!- Tritonio_ has quit (Remote closed the connection). 12:56:18 hmm, c by itself was proven non-tc, but is there a set of combinators that is tc when c is added, but not otherwise, i wonder 13:42:32 -!- oklofok has quit (Read error: 113 (No route to host)). 13:46:26 -!- timotiis has joined. 14:47:25 -!- Judofyr has joined. 16:00:15 -!- ais523 has joined. 16:11:20 -!- ais523 has quit (Read error: 104 (Connection reset by peer)). 16:26:38 -!- olsner has joined. 16:38:02 -!- olsner has quit ("Leaving"). 16:43:31 -!- ais523 has joined. 17:25:39 UNDEF: 1k # does nothing at k or jumps at k and doesn't move past # 17:25:48 Deewiant, but you never test which of those it is? 17:26:00 AnMaster: how could I test it? 17:26:09 Deewiant, because I'm wondering if I'm really doing the right thing at concurrent execution in regards to that 17:26:20 there's no way of telling the difference 17:26:46 how many ticks does: 2k a 17:26:47 take then? 17:26:55 k always takes one tick 17:26:58 no matter what 17:27:13 so that takes 3, no matter what. 17:27:18 hm then why does standard say that k does not execute space 17:27:19 ever 17:27:23 assuming that k behaviour, that is. 17:27:24 that must mean zero ticks? 17:27:32 no it mustn't 17:27:47 I recall pasting that long e-mail of mine and the developer of befunge98 about this stuff :-) 17:27:47 then how does 2kz differ from 2k 17:27:56 depends on how you implement 2k 17:28:09 2kz at least can be guaranteed to be equivalent to zz :-P 17:28:22 (one z for the 2, one for the k) 17:28:57 whereas 2k t may spawn one or two threads depending on implementation, for instance 17:29:05 because the specs are wonderfully confusing on this bit. 17:29:58 hm 17:30:45 well. it says k should not execute space, so what should it execute instead 17:30:57 hm 17:31:23 exactly. 17:31:26 does that mean: 17:31:29 a) reflect 17:31:37 b) reach past the marker and execute next instruction 17:31:41 c) do nothing 17:31:50 possibly other options, that's just off the top of my head. :-P 17:32:00 * ais523 interprets it as meaning that you ignore all spaces and take the next instruction 17:32:18 Deewiant, what does CCBI do there? 17:32:27 my sense of the Funge-98 spec is that the space character literally doesn't exist (except inside strings, where separate space characters don't exist) 17:32:28 do nothing 17:32:30 hm 17:32:49 the intention seems to be that 1k # should be equivalent to 1k# 17:32:49 ais523: yes, that's a perfectly valid interpretation. 17:32:54 but I can't be sure. 17:33:19 Deewiant, tried contacting Chris Pressey? 17:34:19 no 17:34:33 I'm not /that/ interested ;-) 17:34:34 * AnMaster realize his Funge-108 draft made that aspect of k even more confusing than before. heh 17:34:44 I think what FBBI does is it reaches past the space 17:34:50 but then it doesn't skip over the instruction after executing it 17:35:03 and then there is the question of ; too 17:35:07 yep 17:35:19 if 1k # executes # at k, then 1k;;# should as well 17:35:47 hm, it says it does not execute ; 17:35:54 and stuff like 1k;;# is a nice obfuscation :-P 17:36:01 so it can't go into "search for next ; mode" 17:36:24 ; isn't an instruction 17:36:30 so 1k;ab;# would execute a? 17:36:34 Deewiant, indeed it's a marker 17:36:37 no, it'd execute # 17:36:40 and jump in to execute a 17:36:43 followed by b. 17:36:44 etc. 17:36:55 AnMaster: call it Funge-:8 17:36:58 "Then it finds the next instruction in Funge-space in the path of the IP (note that this cannot be a marker such as space or ;)" 17:37:08 AnMaster: exactly, it's a marker, not an instruction, so you don't need to execute it to do what it marks 17:37:11 just like space. 17:37:16 assuming you interpret k that way. 17:37:16 Windows 3.1's file manager, when 2000 came, used to date files as being in the year 19:0 17:37:19 ais523, the name was the request of Chris Pressey 17:37:29 AnMaster: OK 17:37:32 Deewiant, gah 17:37:39 Deewiant, what do ccbi do on ;? 17:37:43 k; I mean 17:37:54 like k , nothing, I think. 17:38:00 it just skips over it. 17:38:16 so k;a;b;c executes a and c but not b? 17:38:25 would that mean k;+ was equivalent to k+ if there were no other semicolons on that Lahey line? 17:38:29 yes, that seems about right 17:38:41 ais523, um nfc 17:38:51 and if no semicolons are ever generated on any Lahey lines intersecting with that semicolon. ;-) 17:38:56 Deewiant, well cfunge instead reflects on k; 17:38:58 etc. etc. 17:39:14 AnMaster: whatever. like said, the spec is woefully unclear. 17:39:21 okay, it's not executed, but what's done instead?! 17:39:27 AnMaster: assume I'd said "at the time" at the end of my question, I normally assume that in statements about Befunge unless I specifically state otherwise 17:39:29 well I need to email Pressey and ask what he meant 17:39:39 the spec cares too much about what should not happen and doesn't specify what should happen at all. :-P 17:39:48 ais523, well it took a bit to think about 17:40:18 Deewiant, yep so in the 108 draft I adapted the MUST/MUST NOT/SHOULD/SHOULD NOT/MAY thing from RFCs 17:40:31 that SHOULD or at least MAY help a bit ;) 17:40:34 whatever works 17:40:40 are you going to leave any behaviour undefined? 17:40:57 Deewiant, I'll try to avoid it 17:41:12 UB tends to be a useful thing to have in specs in the case where it's clear that an interp couldn't do anything sensible 17:41:24 Deewiant, anyway one thing I'm thinking about is the fingerprint/handprint system, it really is too likely with collisions 17:41:29 the Underlambda spec I'm working on allows UB in some places because to mandate specific behaviour would make the language uncomputable 17:41:38 Deewiant, some uri based system would be better 17:41:39 AnMaster: yep, needs an overhaul of some kind. 17:42:13 either java style: tc.catseye.HRTI 17:42:27 or more like the way xml does it 17:42:30 (the interp has to determine which Church numeral a particular function corresponds to; this is easy if it's known that the function is a Church numeral, but I allow UB in the case where it isn't because in general it's an uncomputable problem to determine whether two functions are equivalent) 17:42:39 17:42:42 sauna -> 17:42:44 so http://catseye.tc/projects/funge98/library/HRTI.html 17:43:07 Deewiant, hm, are Finnish ppl sauna-fanatics or something? ;P 17:43:36 you may need to be careful with XML-style 17:43:36 If it is not a Church numeral, what does it do? 17:43:41 Slereah: UB 17:43:49 because there's no way in general to tell if it's a Church numeral or not 17:43:49 ais523, hm? 17:43:55 Keep checking 4eva, or gives up after some time 17:43:57 I know. 17:44:04 But it can give up on checking. 17:44:05 ais523, why careful with them? 17:44:13 That's what I used with THE JUGGERNAUT. 17:44:15 Bitch. 17:44:43 AnMaster: because much of the w3c's bandwidth is used up by messed-up XML parsing libraries that request the DTD from their servers on every single parse they do 17:45:04 ais523, well the file would not be machine readable 17:45:11 if they cached common DTDs like the one for HTML, they wouldn't have to use as much bandwidth 17:45:16 just a page describing in a way that is readable by humans 17:46:24 OK 17:47:30 ais523, though I actually thought about some automated system to generate skeletons. currently I got a crude shell script for it 17:47:41 but that would be more or less cfunge specific 17:48:49 it would contain something like: first name fingerprint name, second line "safe for sandbox" 1 or 0, third line short desc of fingerprint, 4th line, url for docs, the rest something like: 17:48:55 A add 17:49:02 B substract 17:49:17 and then it generates function names and fingerprint loading function 17:49:37 currently you have to change function name manually and fill in the names in the loading routine 17:50:23 ais523, see what I mean? 17:50:31 more or less 17:50:53 see tools/gen_fingerprint.sh for the current one 17:51:35 another use of this would be to autogenerate the list in manager.c 17:51:58 probably autogenerate a file with just the array and then include that file 17:53:10 Deewiant, btw when I run cfunge under valgrind the slow HRTI test takes about 20 times as long when concurrency support is *disabled* 17:53:18 I just don't get what is going on there 17:53:29 it shouldn't be affected by concurrency at all 17:53:44 and why slower when it is disabled 17:53:50 without valgrind: about same speed 17:54:02 and that. makes no sense. to me 17:56:46 ais523, you got any idea about it? 17:56:56 no, I'm confused too 17:57:27 BTW, I can't get hold of the cfunge source, because the version of bzr in the Ubunutu 7.10 repositories is only 0.90, and I don't want to mess with newer repositories at the moment 18:02:10 -!- Sgeo has joined. 18:05:21 -!- RedDak has joined. 18:05:48 ais523, ouch 18:06:06 ais523, out that they use a so outdated one 18:06:15 considering they are the main developers of bzr 18:06:22 yes, I noticed that too 18:06:50 I haven't really had very good experiences with Ubuntu bug reports 18:06:51 IMO bzr is one of the few good things that has come out of Ubuntu 18:06:53 * AnMaster runs 18:07:05 so nowadays I just report directly to Debian, who normally answer within 24 hours 18:07:21 normally to say that I screwed up the patch I sent them again... 18:07:35 hah 18:07:40 for some reason, every patch I've sent to Debian has been missing, or misformatted, or had the wrong sort of newlines, or something like that 18:07:45 and it's been my fault every time 18:07:59 ais523, maybe try applying it before you send it 18:08:01 ie, test it 18:08:11 AnMaster: the ironic thing is that it worked for me 18:08:18 how comes it did? 18:08:23 because I had corrected the newlines in the file I was patching against and forgotten about it 18:08:27 ais523, maybe try on a copy of the clean debian sources? 18:08:32 to see that it really works 18:08:40 AnMaster: I may have to do that in future 18:09:15 ais523, oh and line ending == LF for cfunge 18:09:29 line ending ought to == 10 for C-INTERCAL too 18:09:34 except for a few DOS-specific files 18:09:36 well try dos2unix 18:09:43 I have a newline-fixing script that does that 18:09:45 a command line tool 18:09:45 or 18:09:51 but forgot to include the file in question in the script 18:10:04 I got a script that cleans up newlines, and trailing whitespaces 18:10:06 (because it has to put the right sort of newlines on the right files) 18:10:14 it also make sure the file just end in a *single* newline 18:10:25 I get Emacs to higlight trailing whitespace for me, because occasionally it's relevant 18:10:30 or at least should but I noted that is kind of not working since I upgraded ed 18:10:36 it is a bash script that calls ed 18:10:50 why not use sed, which was designed for that purpose? 18:11:02 as in, being an ed-like language that can operate on streams 18:11:13 ais523, because sed -i is non-standard 18:11:17 and operate without manual intervention 18:11:21 it's a gnu extension 18:11:33 ais523, and ed can operate without manual intervention 18:11:46 perl -i is standard, and sed can be compiled trivially into Perl 18:11:55 in fact, the compiler distributes with Perl 18:12:15 eh? what compiler? 18:12:22 s2p 18:12:33 well perl is not standard 18:12:41 a default freebsd install doesn't have perl 18:12:46 it does however have ed 18:13:07 my DJGPP installation has Perl but not ed 18:16:25 ais523, also making sed match on newlines is a PITA 18:16:33 AnMaster: agreed 18:16:36 as in across lines 18:31:18 bbl food 18:35:10 -!- Tritonio_ has joined. 18:43:54 Hi all 18:43:58 hi Tritonio_ 18:44:13 hi Sgeo 18:44:58 have to go, sorry 18:45:00 -!- ais523 has quit ("(1) DO COME FROM ".2~.2"~#1 WHILE :1 <- "'?.1$.2'~'"':1/.1$.2'~#0"$#65535'"$"'"'&.1$.2'~'#0$#65535'"$#0'~#32767$#1""). 18:47:29 -!- ehird has joined. 18:52:59 hihird 18:54:24 brb 18:57:15 -!- jix has quit (Nick collision from services.). 18:57:25 -!- jix has joined. 19:02:28 Deewiant, I sent a mail to Chris now, http://rafb.net/p/JSiiZd29.html if you want to see it 19:02:38 -!- RedDak has quit (Remote closed the connection). 19:02:43 have to go, sorry 19:02:43 * ais523 has quit ("(1) DO COME FROM ".2~.2"~#1 WHILE :1 <- "'?.1$.2'~'"':1/.1$.2'~#0"$#65535'"$"'"'&.1$.2'~'#0$#65535'"$#0'~#32767$#1"") 19:02:43 * ehird (n=ehird@91.105.104.73) has joined #esoteric 19:02:57 heh 19:03:12 -!- RedDak has joined. 19:03:23 ehird, you missied him with two minutes and 29 seconds 19:03:49 missed* 19:11:57 hee 19:11:58 *ChordParser> parse parseChord "" "Am7" 19:11:59 Right (RootedChord A (fromList [0,4,7,9])) 19:11:59 *ChordParser> parse parseChord "" "C6" 19:12:00 Right (RootedChord C (fromList [0,4,7,9])) 19:12:13 \o/ 19:12:40 hm? 19:13:15 parsing chords! 19:13:18 Deewiant, What would k do in fingerprint instructions that do a "jump right away", like those from SUBR 19:13:33 lament, yeah but I can't parse the result 19:13:40 AnMaster: "jump right away"? 19:14:02 AnMaster: the root notes are A and C and the pitches are exactly the same (as it happens) 19:14:06 Deewiant, well say SUBR's "return from subroutine", what would happen if k iterates over it 19:14:18 Deewiant, or what if k iterates on go to subroutine 19:14:25 just what you'd expect 19:14:30 Deewiant, in the latter case it could make sense to execute it once 19:14:32 i.e. it pops k times instead of once 19:14:33 or whatever 19:14:40 hm true 19:24:15 I am backkkk 19:24:42 AnMaster: data Either a b = Left a | Right b 19:24:50 common idiom: 'Left error', 'Right result' 19:24:53 as in right, correct 19:29:01 ehird, hm? 19:29:31 lament, well I can play it on the piano but I can't parse your output :P 19:30:02 also I don't know if the chords have differen't names in English 19:31:03 lament, could it parse say C/F 19:31:25 or F#7 19:36:03 not yet C/F but i'm working on it 19:36:57 and other alterations (eg "C7-9#11/Bb") 19:42:33 -!- timotiis_ has joined. 19:56:01 -!- timotiis has quit (Read error: 110 (Connection timed out)). 19:59:27 lament: so you like haskell again ;) 20:16:21 -!- Corun has joined. 20:35:00 -!- oerjan has joined. 20:45:24 -!- oklopol has joined. 21:12:32 oklopol: oko 21:13:44 -!- kwertii has joined. 21:13:53 okyol. 21:14:44 oerly? 21:15:44 -!- Corun has quit ("This computer has gone to sleep"). 21:16:52 ehird: i always like haskell! 21:16:55 ehird: i just think it sucks. 21:17:44 oklopol: okoko. oko, okoko. oko! 21:18:07 okokokokokokoko 21:18:08 okokokokokoko 21:18:09 okokokokoko 21:18:10 okokokoko 21:18:11 okokoko 21:18:12 okoko 21:18:12 oko 21:18:12 o 21:18:16 excuse me 21:18:17 oklopol: okokokokokoko 21:18:18 kokoko 21:18:33 ehird: okoko. 21:18:49 OKO?!?!?! okoko. 21:19:21 ok... 21:19:29 ehird: did robot9000 ever finish? 21:20:14 lament: I killed it because I had to go. 21:20:19 It was 3am. 21:25:00 -!- Corun has joined. 21:25:00 ``````````````okokokokokokoko converts to ``o`ko :o 21:26:18 whuz o? 21:27:06 okokokokokokokoko 21:27:32 o is `si 21:29:36 well, you know, so is your mother 21:37:48 oklopol: OKO 21:40:47 -!- RedDak has quit (Remote closed the connection). 21:41:46 * oerjan finds oko utterances surprisingly short for having such low entropy per character :D 21:42:43 oerjan: okokoko 21:43:30 * oerjan regrettably isn't fluent 21:43:48 oerjan: OKOKO?! oko... okoko okokoko. okoko! 21:48:23 okokokokokokokokokokokokokokokoko... 21:48:57 oklopol: oko 21:57:00 damn, chords are hard to parse 21:58:53 -!- Corun has quit ("Leaving"). 22:01:15 lament: what exactly are ya parsing? 22:08:03 chords 22:09:21 -!- timotiis_ has quit (Read error: 110 (Connection timed out)). 22:11:21 i'm assuming from a .wav 22:11:35 oklopol: string 22:19:20 oklopol: no, things like C7-9#11/Bb 22:19:36 (i'm not sure if that example is even correct) 22:19:46 more like C7b9#11/Bb 22:22:38 oh so chord names 22:22:39 right 22:22:54 forgot there actually was a standard representation 22:22:55 silly me 22:23:22 (needless to say i don't like it, i guess) 22:23:54 although, i just dislike it a little, it isn't entirely rotten 22:27:17 it's pretty good 22:27:52 it's not entirely general 22:28:14 (classical doesn't use it since it's not specific enough about inversions) 22:28:26 but no music-related notation is entirely general 22:30:01 Except for PCM :P 22:30:37 PCM does not notate music 22:30:45 it notates sound :) 22:31:36 That's like saying "the alphabet doesn't notate words, it notates sounds" 22:33:49 * pikhq knows of another general music-related notation. 22:33:51 FLAC. 22:34:01 If you want to be even more insane, Base-64 FLAC. 22:34:25 * pikhq would like to shake the hand of anyone who can read that 22:35:50 pikhq: :D 22:35:59 GregorR: the alphabet does notate words. But it does not notate novels. 22:44:16 By the same notion, music notation notates notes, but not music. 22:46:12 good point! 22:46:38 the alphabet notates words, which notate novels. 22:46:52 music notation notates notes, which notate music 22:47:19 NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE 22:47:22 note that you don't need the alphabet to notate novels - for example, you can read a novel aloud 22:47:37 in which case the novel is still notated by words, but now the words are notated by sounds 22:47:38 lament: So, a novel is notated in words. 22:47:43 that's what i said. 22:47:46 And there are multiple notations *for* words. 22:47:50 that's what i said. 22:47:52 Yes, but I was typing it before you hit enter. 22:47:54 :p 22:48:09 And PCM notates sounds which notate music BIACH 22:48:25 sounds don't notate music 22:48:29 It can. 22:48:48 well, okay. 22:48:58 In the same way that words can notate novels, or hamster power amalgamation introspective for. 22:49:00 -!- jix has quit ("CommandQ"). 22:49:01 i'd rather say music notates sounds :) 22:49:11 Actually, sounds can notate notes which can notate music. ;) 22:49:30 pikhq: not really, sounds don't notate notes 22:49:45 Tell that to someone with perfect pitch. 22:49:46 given a sound, it takes human intelligence to extract "notes" from it, and even then not precisely 22:49:50 that's hardly "notation" 22:50:11 Given a sound, it takes human intelligence to extract 'words' from it, and even then not precisely. 22:50:16 That's hardly "notation". 22:50:17 ;) 22:51:01 at least most people who speak the language are capable of hearing all the words 22:51:09 try hearing all the notes in a symphony 22:51:17 i can't do it, and you probably can't either 22:51:40 computers can sort of do speech recognition 22:51:50 Not fair. 22:51:50 we shall have to clone Mozart for that 22:51:52 but they're far from being able to write down music 22:52:03 A symphony is like having several dozen people talking at the same time. 22:52:07 pikhq: sure 22:52:08 so? 22:52:13 Computers can't do speech recognition in that environment, either. 22:52:24 if you notate the same music on a page, it's very simple 22:53:08 Given a piece of music with just a melody, and no harmony, it's much easier to write the notes. Notes have well-defined pitches. ;) 22:53:31 notes don't have well-defined pitches - consider bends, slides, vibrato 22:53:43 very easy to notate on paper, very hard to get back the note from the sound 22:54:01 The note itself has well-defined pitches. Those are more than just notes being notated there. ;) 22:54:03 strong vibrato on violin can span more than a semitone 22:54:12 is that one note, or several notes? 22:54:26 That's a matter of notation. 22:54:38 Take an arbitrary word. What are the phonemes in there? 22:54:40 ;) 22:54:51 it's exactly a matter of notation 22:54:56 we use notes to notate it 22:55:07 sound is what we're notating, ultimately 22:55:11 music is notation for sound 22:55:16 -!- timotiis has joined. 22:55:20 Then it's imperfect notation. 22:55:22 (and not the other way around) 22:56:09 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)). 22:56:09 How would one write down, say, me being *exactly* 1 Hz off from a note when singing? (not that I can do that (intentionally) :p) 22:56:38 pikhq: you use appropriate notation 22:56:45 -!- Judofyr has joined. 22:56:54 in common practice period music, you being 1 hz off is not important or interesting 22:56:59 so it doesn't have ways to notate that 22:57:45 I suppose one could also argue that *the alphabet* is a notation for sounds. 22:58:09 (an obviously imperfect one; most human writing systems don't include pitches in the written language) 22:58:36 whether the alphabet is or isn't a notation for sounds depends on the language 22:58:52 in any case, it's a notation for _phonemes_ 22:58:54 I assume a spoken language. 22:59:00 which are a notation for sound 22:59:13 Not all human writing systems are a notation for phonemes. 22:59:38 But, anyways, that's not the point. 22:59:52 And I'm not sure what the point *is*. 23:00:12 which human writing systems are not a notation for phonemes? 23:00:37 Chinese, Japanese kanji. . . 23:01:15 each chinese character notates one phoneme 23:01:32 *morph*eme 23:01:32 sorry, one syllable, several phonemes 23:01:46 Japanese kanji have multiple readings. 23:01:54 (maybe not even that) 23:02:09 doo pe dooooo 23:02:15 even english has homonyms 23:02:16 pikhq: sure, but that's not really a problem - english "wind" has several readings too 23:02:32 oerjan: they were considered inferior to heteronyms a while back though 23:03:02 Japanese kanji are used for meaning, not reading (usually). 23:03:42 pikhq: that's true of english words as well. 23:04:37 * pikhq hands lament his Japanese homework 23:04:52 -!- oklopol has quit (Read error: 110 (Connection timed out)). 23:05:09 Tell me that that list of 5 *completely* different readings imply that each character notates one syllable. 23:06:03 (a hint: unless you're dealing with man'yougana, they don't.) 23:08:23 (of course, Japanese deals in mora, not syllables, anyways) 23:14:48 'And with that, the channel died.' 23:15:28 * pikhq nods 23:28:00 all irc channels should have a bot which pipes fortune(1) to the channel if it dies for too long 23:28:00 :D 23:29:53 actually, `fortune -a` 23:30:11 err, -o 23:35:11 GregorR: Patch to Egobot? 23:36:16 RodgerTheGreat: Thinkgeek f***'d up the T-shirt! 23:36:23 Erm 23:36:27 s/Thinkgeek/Cafepress/ >_O 23:36:29 D:> 23:36:39 say it ain't so, gregor! 23:36:43 pikhq: I could do that if GregorR would put it up <.< 23:37:08 Dood, EgoBot is F/OSS. 23:37:23 I know. 23:37:30 But I don't want to run an EgoBot clone. 23:37:33 Since the ! would clash. 23:37:35 GregorR: so, *how* is the shirt fucked up? 23:37:40 And having it duplicate everything is pointless. 23:37:48 So I'd only patch it if GregorR would put it up. 23:37:52 RodgerTheGreat: A bit tough to explain, I'll send you a photo once I send it to CafePress. 23:38:07 ok 23:38:43 actually, if EgoBot is ever rewritten 23:38:45 it should be called 23:38:48 EGOR 23:38:58 EgoBot Generation O Replacement 23:39:02 -!- timotiis has quit (Read error: 110 (Connection timed out)). 23:40:24 Just write the patch and hand it to Gregor. 23:40:32 And I like that name. 23:42:34 Oh alright, I will. 23:42:41 It's in the file archives, right? 23:46:16 Right. 23:46:43 -!- oerjan has quit ("Good night"). 23:47:48 Hmm. 23:48:01 It occurs to me that I don't know the C function to get the current unix timestamp. 23:48:27 -!- Parma-Quendion has changed nick to Quendus. 23:48:42 Oh, wait. 23:48:46 time_t is a numeric 23:49:00 RodgerTheGreat: Email addy (to send the picture to)? 23:52:24 Typically a signed int. 23:52:29 (IIRC) 23:52:45 pikhq: Mm. And unfortunately, I am going to have to use pthreads to do this in a sane way. 23:52:57 And one global. But the code should stay clean. 23:53:36 I don't THINK C++ has threads in its stdlib. 23:57:15 Hmm. 23:57:21 This will count privmsg's to the bot as messages. 23:57:27 But I don't think that'll really be a problem. 23:57:58 -!- Zappy has joined. 23:58:20 -!- Zappy has left (?). 23:59:18 Hmm. 23:59:23 GregorR: EgoBot question.. 23:59:33 I can use its daemon mechanism to spawn a long-running program, right? 23:59:41 And its stdout will be piped to the channel 2008-04-12: 00:00:35 GregorR: RodgerTheGreat@gmail.com - it's on my website, too 00:00:55 Only the first line, the rest will be piped into the user. 00:02:26 What the *fuck*? 00:02:42 Oh yes, that thing. 00:02:46 Vista's driver model involves *doing AES-128 on the video layer*. 00:02:56 GregorR: I can use Procs directly, though, can't I 00:03:17 ehird: Shore *shrugs* 00:04:00 * pikhq wonders if they use PGP on all output from the sound drivers, too. :p 00:06:15 -!- kwertii has quit ("bye"). 00:06:19 GregorR: Hmm. If I have a Proc object, what can I *do* with it? Specifically, I want to slurp all output. 00:06:26 I guess I'll just write my own starter. It doesnt' need to be in ps 00:12:07 -!- kwertii has joined. 00:15:07 Okay. Coded the thread. Now to figure out pthreads. 00:19:08 phew 00:19:10 i think that should work 00:19:19 -!- timotiis has joined. 00:20:11 *Parser> parse parseChord "" "C7b9#11" 00:20:12 Right (RootedChord C (fromList [0,1,4,6,7,10])) 00:20:14 <3 00:20:19 GregorR: What's more, it's a compiler option! 00:20:22 lament: Yaey. 00:20:25 err. 00:20:28 Compile-time option. 00:20:32 -DWITH_FORTUNE to enable 00:20:44 i love how if it compiles, it works 00:20:56 (i'm not sure why it compiles though) 00:22:27 lament: yes 00:22:46 lament: there's even libraries for HTML generation that make invalid HTML a type-error 00:23:00 lament: I've always wanted to make one for XML where you can just write some instances corresponding to the schema 00:23:11 * pikhq loves a lot of the HTML renderers out there. . . 00:23:27 And how *trivial* it is to make valid, well-formed HTML that they can't render. 00:23:32 (or even parse) 00:24:00 GregorR: I can't compile EgoBot on this machine because it is linux-specific. D: 00:24:04 GregorR: Can you try my changes? 00:24:09 pikhq: WebKit! WebKit! 00:24:14 (It's open source, so you can't complain.) 00:24:24 KHTML doesn't parse it. 00:24:42 I have yet to find a browser that parses this: http://pikhq.nonlogic.org/test.html 00:24:45 It validates, though. 00:24:57 KHTML is NOT WebKit. 00:25:10 I know. I'm not feeling like installing WebKit yet. 00:25:19 Lemme wait unto KDE 4.1. 00:25:25 until, even. 00:25:27 pikhq: And suprise, it doesn't work. Guess why? *Nobody* uses short closing tags. 00:25:37 But it's valid and well-formed. 00:25:37 And -- shock -- rendering engines are designed to be practical. 00:25:53 If they were a platonic, standards-supporting ideal they wouldn't render invalid pages. 00:26:11 Some claim to attempt to be that ideal. 00:26:23 While they can't parse test.html, they fail epically. 00:26:31 epicly, even. 00:26:56 None claim to be that ideal. 00:27:06 No sane one, anyway. 00:27:15 The standards suck, anyway. 00:28:06 GregorR: No? :( 00:33:02 GregorR: Well, I have a patch if you want it 00:33:08 Well, yeah. That SGML part is a real bitch. ;) 00:33:27 ehird: Remind me tomorrow. 00:35:29 GregorR: Aww. I can't even test it locally, y'see. 00:35:38 LOSAH 00:47:58 -!- kwertii has quit ("bye"). 00:48:12 -!- kwertii has joined. 00:51:20 GregorR: I use a non-Linux system. So yeah. 00:51:51 What do you run? 00:52:25 If it's Windows, install Cygwin. If it's OS X, install the development environment from your install discs. 00:53:36 (insofar as I'm aware, Egobot runs on most POSIX targets) 01:00:17 pikhq: It does not. cpkt. 01:00:30 Relies on linux headers, elf, all that stuff. 01:00:48 GregorR: How dare you? 01:01:09 pikhq: He didn't write cpkt. 01:01:09 Do you do the ELF loading yourself or some such? 01:01:12 Oh. 01:01:16 He just uses it to trace the syscalls or.. something. 01:01:23 It seems to serialize some state or.. actually I don't know what it does. 01:01:24 * pikhq kicks *cpkt* devs instead. :p 01:01:37 Err, pikhq, I don't think it could be portable. 01:01:48 It does pretty deep magic to lodge in to the process. 01:01:53 Oh. 01:01:59 *Why*? 01:02:07 Surely there's a good reason. 01:02:08 pikhq: Because it's the only way to do... whatever it does. 01:02:22 pikhq: aha 01:02:22 ckpt - process checkpoint library 01:02:22 www.cs.wisc.edu/~zandy/ckpt 01:02:22 Copyright (c) 2002-2005 Victor C. Zandy zandy@cs.wisc.edu 01:02:25 process checkpointing. 01:02:30 totally non-portable in every shape or form 01:02:41 pikhq: Basically, it can freeze a running process to disk. 01:02:44 Then thaw it out again. 01:03:03 GregorR: aw, man- that's terrible! 01:03:14 how the fuck do they mess it up that badly? 01:03:49 -!- boily has joined. 01:04:57 Jebus. 01:05:08 I can understand why they have to do such deep magic. . . 01:05:16 But why must *Gregor* use it? 01:05:28 pikhq: I think to remember all the definitions made in the esolangs. 01:05:30 Between runs. 01:05:40 Since they are in a variety of languages 01:05:45 Also, I wonder: can User Mode Linux run on OS X? 01:05:50 I don't think s 01:05:51 o 01:05:53 I remember some guy getting it to work on Cygwin. . . 01:05:55 But I have Parallels and QEMU. 01:06:03 So it isn't hard to get Linux up. 01:06:10 and pikhq: how the FUCK is that supposed to be valid HTML? 01:06:18 RodgerTheGreat: it is valid html 01:06:20 RodgerTheGreat: Read up on SGML. 01:06:22 the feature is inherited from SGML 01:06:25 I call total bullshit 01:06:28 And run it through the W3C validator. 01:06:36 RodgerTheGreat: 'i have never heard of this obscure feature' != 'total bullshit' 01:06:49 unfortunately a lot of people have that preconception. 01:06:53 It gives 4 or 5 warnings, saying basically "This is valid, but nobody *supports* it." 01:06:58 -!- olsner has joined. 01:07:06 And then hands me a "Valid HTML4" button. 01:07:08 -!- Iskr has quit ("Leaving"). 01:07:43 even if it *is* a part of the standard, it's ridiculous. It's unreadable and breaks all the preexisting conventions of the format 01:07:57 No it doesn't. 01:08:05 The preexisting conventions of the format *are* SGML. 01:08:08 RodgerTheGreat: You are incredibly idealistic if you think that HTML has conventions. 01:08:11 Much less reasonable ones. 01:08:15 Here's a hint: that SGML feature predates HTML. 01:08:19 HTML is *unbearably* bad. 01:09:22 pikhq: then it's cruft and should be deprecated 01:09:40 RodgerTheGreat: most of HTML is cruft 01:09:42 In fact, I'd interpret the fact that it's unsupported on sane browsers as deprecation 01:09:58 there is no such thing as a sane browser. they must be insane to read most of the html out there. 01:10:14 It's explicitly deprecated in HTML 4.01. But, most of HTML 4.01 *is*. 01:11:40 -!- timotiis has quit (Read error: 110 (Connection timed out)). 01:11:59 if it's explicitly deprecated, it isn't valid HTML, ergo my original argument stands. 01:12:34 anything that was deprecated and still works is a bonus feature, rather than something you can reasonably test for compliance. Your methodology and argument is flawed. 01:12:53 [01:12] if it's explicitly deprecated, it isn't valid HTML, ergo my original argument stands. 01:12:54 wrong 01:13:01 deprecated != invalid 01:13:17 By the same notion, K&R function declarations are invalid C. 01:13:30 (in fact, they're deprecated but *required* by the ISO C spec) 01:13:30 and for many practical purposes, they are 01:13:43 -!- boily has quit ("Schtroumpf!"). 01:13:44 RodgerTheGreat: wow 01:13:46 what a load of crap 01:13:55 'invalid' is so far apart from 'practical purposes' 01:14:39 BTW, HTML 4.01 itself is considered deprecated. ;) 01:16:08 pikhq: Unfortunately. XHTML is far worse. 01:16:35 True.' 01:16:42 It has some things that are nicer. . . 01:16:47 And an assload of things that are worse. 01:17:04 1. Take horrible markup format rooted in history, arcane things and ad-hoc design. 2. Take *generic* markup format that misused in 90% of cases. 3. Stick them together 01:17:16 And before you say 'XHTML 2', *please* don't. That thing is god-awful 01:17:28 NOW, there is slightly good news 01:17:31 XML *itself* is SGML-based. 01:17:33 ;) 01:17:41 HTML 5 *will be better* than HTML 4.01 01:17:48 It won't be perfect because it's mostly backwards compatible. 01:17:53 But it *is* relatively sane. 01:17:59 Especially the nice, short doctype: 01:18:05 Sure, that's invalid SGML. Who cares? 01:18:20 Basically, they're dropping the SGML base? Whee. 01:18:50 http://www.roesler-ac.de/wolfram/hello.htm#Intercal <- this does not seem correct 01:18:57 pikhq: Yeah. 01:19:17 Slereah: it's correct in a perverse way 01:19:26 Slereah: errors in programs are printed out by the intercal compiler 01:19:30 Slereah: at runtime 01:19:38 :O 01:19:40 and 'NOT' makes a statement not executed unless explicitly enabled 01:19:44 Of course, that is a total cheat. 01:19:56 Yes, but an awesome cheat 01:19:59 pikhq: What I think is the minimal HTML 5 document:

Hello, world!

01:20:21 Hmm. Sane. 01:20:23 pikhq: The reason why it is quite decent is twofold: 01:20:28 Requiring container tags? Glee! 01:20:43 1. The W3C didn't get their paws on it until it was almost done 01:20:46 * pikhq shudders at the

tag 01:20:51 2. The WHATWG did it before that. The WHATWG are clever. 01:20:52 Well, in traditional HTML. 01:21:05 3. Ian Hixie did lots of work on it because he is in the WHATWG. Ian Hixie is *very* clever, and sane. 01:21:11 So threefold! 01:21:17 pikhq: You might be able to drop the

s. 01:21:33 But

isn't too bad. 01:21:39 Semantically it makes sense. 01:21:49 And having some text in the root and others in elements is a bad weird. 01:21:50 But meh. 01:22:41 My problem with

is how it acts in HTML 4.01 and below, actually. 01:22:48 Specifically, it doesn't need to be closed. 01:22:52 http://www.roesler-ac.de/wolfram/hello.htm#Pocket-Calculator 01:22:57 pikhq: Ah, yes. That thing. 01:23:03 I'm not sure if that's still in HTML 5. 01:23:04 With this technique, you cal also write "HELLO BOOB" 01:23:17 HTML 5 is certainly lenient. 01:23:28 So it retains a lot of HTML's quirks. 01:23:35 But on the *overall*, it's sane. 01:53:40 -!- ehird has quit ("This computer has gone to sleep"). 04:01:01 -!- Judofyr_ has joined. 04:01:01 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)). 04:04:01 -!- Deformative has quit (Remote closed the connection). 04:05:01 -!- Deformative has joined. 04:05:37 -!- Deformative has quit (Remote closed the connection). 04:06:16 -!- Deformative has joined. 05:11:04 -!- RodgerTheGreat has quit. 05:11:11 -!- RodgerTheGreat has joined. 05:11:25 -!- RodgerTheGreat has quit (Client Quit). 05:53:35 -!- cmeme has quit ("Client terminated by server"). 05:53:46 -!- cmeme has joined. 05:57:37 -!- sebbu2 has joined. 06:15:05 -!- sebbu has quit (Read error: 110 (Connection timed out)). 06:40:14 -!- Sgeo has quit ("Ex-Chat"). 07:35:33 -!- oklopol has joined. 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:03:47 -!- adu has joined. 08:33:03 -!- kwertii_ has joined. 08:38:41 -!- kwertii_ has quit ("bye"). 08:49:05 -!- kwertii has quit (Read error: 113 (No route to host)). 09:08:18 -!- oklopol has quit (Read error: 113 (No route to host)). 09:14:21 -!- oerjan has joined. 09:17:39 -!- Iskr has joined. 09:36:24 -!- oklopol has joined. 09:36:30 -!- oklopol has quit (Remote closed the connection). 09:36:42 -!- oklopol has joined. 10:08:12 -!- adu has quit ("Bye"). 10:15:53 -!- oerjan has quit ("leaving"). 11:11:50 -!- oklofok has joined. 11:12:43 -!- oklopol has quit (Read error: 113 (No route to host)). 11:21:58 -!- Slereah has quit (Read error: 110 (Connection timed out)). 11:23:43 -!- Slereah has joined. 11:33:08 -!- oklofok has quit (Read error: 104 (Connection reset by peer)). 11:33:24 -!- oklopol has joined. 11:42:43 -!- timotiis has joined. 13:21:07 -!- pikhq has quit (Remote closed the connection). 13:21:22 -!- pikhq has joined. 13:48:21 -!- Judofyr has joined. 13:48:21 -!- Judofyr_ has quit (Read error: 104 (Connection reset by peer)). 14:07:00 -!- oklopol has quit (Read error: 113 (No route to host)). 15:01:01 -!- oklopol has joined. 15:12:10 -!- ehird has joined. 15:38:04 logo FAIL: http://www.harveyshopfitters.co.uk/images/menu_01.gif 15:40:15 ehird: that cons cell you created, can i include that with your nick/name in my oklotalk report? would be cool to have something like "user experiences" :D 15:40:57 more impressive if *others* can do something with it than if i can. 15:42:08 oklopol: brb, with you in a sec 15:42:09 and yes 15:42:13 i wanna code some more though too 15:42:14 :D 15:42:26 but for the record, if you didn't know, my name is elliott hird 15:42:32 and please don't get the wrong number of ls and ts 15:42:34 :D 15:42:41 hey, i've always known it. 15:43:25 would be awesome if you did something, i'm trying to get people to write me an stdlib :) 15:43:32 not many are that interested to :O 15:43:59 it's not that i'm too lazy to do it, just that it's a bit useless if i do it 15:44:38 because of course i can do it trivially... well, you too, but i'm also trying to get normal people to write something with it. 15:44:53 normal coders that is 15:44:54 SimonRC, hm? 15:45:11 SimonRC, yes I read it has "shoplifter" first time 15:45:15 naturally i consider #eso guys a few grades up :D 15:45:34 AnMaster: that's not the point, although i did too 15:45:55 what's the point then? 15:46:03 :| 15:46:28 logo 15:46:35 see people in it. 15:46:38 it's a boring logo yes, but boring logos with symbols meaning nothing is rather common 15:47:10 err what? 15:47:26 yeah could be a person using some kind of tool 15:47:30 it's doggie style, receiver laying down 15:47:36 *lying 15:47:36 ... 15:47:37 err 15:47:42 english is too hard 15:47:44 oklopol, you know this qualifies as "inkblot".... 15:47:51 no it doesn't 15:48:14 pervertness then? 15:48:21 or at least dirty minded 15:49:24 well, you know, i'm male 15:50:41 so am I, and? 15:50:59 and I don't think about such things all the time 15:51:40 -!- timotiis has quit (Read error: 110 (Connection timed out)). 15:53:08 well i do admit i'm a sick pervert, but i'm 100% sure that logo can only be conceived as a sex act 15:54:12 oklopol, to me it looks like a person using a "slipmaskin" don't know English word for it 15:54:40 oklopol: looks like front-to-front to me 15:55:07 a handheld device that you put a paper (that got sand glued to it) on. then you use the device to make wood smooth 15:55:11 what's the English word? 15:55:12 ironing board or smth? 15:55:20 no 15:55:23 sander?> 15:55:33 ironing board or smth? <-- that would be making clothes flat 15:55:45 yarr... 15:55:51 if you confuse them your clothes would looks very bad 15:55:54 i didn't know what slip was 15:55:59 very important to not confuse them 15:56:08 oklopol, well slip in Swedish can be other stuff too 15:56:13 SimonRC, possibly 15:56:31 oklopol, something to do with boats I think the other meaning is 15:56:38 (I'm no boat expert) 15:57:23 SimonRC, anyway google images to the rescue: http://www.fynda.se/bilder/londa_slipmaskin_ld1211.jpg 15:57:52 anyway, SimonRC: well, the hands seem to be on the receiver, so i would've said doggie 15:57:59 but stick figures, so go figure 15:58:50 i'm pretty sure sander was right 15:58:55 hmm 15:59:02 or is that like a hone or smth 15:59:02 why not mail the company and ask which one it is 15:59:07 I'm sure they would *love* it 15:59:10 * AnMaster runs 15:59:12 i don't really know this stuff even in finnish 16:00:42 oklopol, well slipmaskin can be for other materials than wood, for example metal 16:00:54 but it seems that "sander" is correct 16:01:19 that is definately a sexual act. 16:01:19 :p 16:01:26 anyhoo 16:01:39 definitely 16:01:41 oklopol: soo i'll write some more okocode if you put otobot in here, or give me an oklotalk interpreter 16:01:45 hehe 16:01:53 i'll put it up :-) 16:01:56 also, if you give me an oklotalk interpreter, i'll even write a special testimonial 16:02:10 to put in the Report on the Algorithmic Programming Language Oklotalk 16:02:15 haha 16:02:22 i can give you the compiled version. 16:02:41 oklopol: i'm on a mac 16:02:45 so that would be thoroughly unhelpful 16:03:16 compiled into pyc, man 16:03:48 meh 16:03:50 endianness 16:03:52 or something 16:03:54 :P 16:04:07 oklopol: i'll add an awesome REPL 16:04:09 and send you a patch 16:04:09 :D 16:04:13 oh 16:04:16 and a debugger 16:04:25 and maybe add continuations 16:04:33 oklopol, I want to see it too so I can see how it works 16:04:38 then I may help writing some code 16:04:57 AnMaster: oklopol's python code uses 1-2 letter variables names and has no comments 16:04:58 and little whitespace 16:05:03 it is only for the hardened obfuscated python editor 16:05:09 there is an awesome repl already 16:05:17 well not awesome, but somewhat working 16:05:18 "hardened obfuscated python editor"? 16:05:38 AnMaster: you need to be really good at editing dense, obfuscated python 16:05:51 well count me out then 16:05:51 oklopol: i will add history that is stored across sesssions, completion, brace matching.. 16:05:57 :D 16:06:00 AnMaster: (hardened ((obfuscated python) editor)) for the parse tree 16:06:06 and the debugger and continuation stuff, of course 16:06:11 oklopol, I suggest you make your code more readable if what ehird said is true 16:06:29 AnMaster: he likes it that way 16:06:30 i do too 16:06:43 oklopol, try something like literate programming, just for a change 16:06:53 it's hard to read code with comments imo :) 16:06:54 eww 16:06:56 literate programming 16:06:57 (though IMO that is going too far in the other direction) 16:07:06 and the shorter the easier to read :) 16:07:06 but maybe they will cancel out? 16:07:08 oklopol: yeah, comments are mostly useless. 16:07:10 but.. 16:07:12 a few of them is alright 16:07:18 and you will end up with something usable 16:07:24 like, instead of # loop through all elements in the array and xor them into the checksum, resulting in a floob 16:07:25 do 16:07:25 well, good comments that just specify stuff like interfaces, can be very nice 16:07:31 comments above the function 16:07:31 so you can just take a quick glance 16:07:34 about what it does 16:07:36 not how 16:07:37 like 16:07:44 # provides a checksum used as a floob 16:07:53 but most of the time good code is self-explanatory 16:07:57 comments can be misleading 16:08:06 good variable names too 16:08:08 they make it easier for someone who doesn't *really* understand the source code to try and edit it 16:08:11 often messing up things subtly 16:08:16 well i have a few comments, but they are mostly useful for myself :P 16:08:22 also, comments are very hard to keep up to date 16:08:35 indeed. 16:08:36 ehird, I agree you shouldn't overdo comments 16:09:01 but you could use good variable and function names 16:09:09 ehird: i might let you play with my implementation once i've submitted it 16:09:12 AnMaster: there's a problem with all that: writing oko-python is fun 16:09:26 ehird, ie, single char ones like i and j should be used for looping nothing else 16:09:30 fuck readability and maintainability, it's fun 16:09:35 dense code helps you get more on the screen 16:09:40 well x and y are ok if you are doing co-ordinates 16:09:55 SimonRC, agreed, but good variable names is still important 16:09:59 very important 16:10:08 AnMaster: you like to stare at code like a work of art 16:10:12 there is a definite maintainability drop as code goes beyond one screenful 16:10:15 i like to have fun when writing it 16:10:21 SimonRC++ 16:10:26 SimonRC, yes that is why you split functions 16:10:31 oklopol: well, ok, give me the pyc 16:10:32 and mark them as "inline" 16:10:36 no 16:10:46 AnMaster: that is not the point 16:10:48 making the code modular is good 16:10:57 I meant there is a definite mainatainability drop as the length of the program goes over one screenful 16:11:05 exactly 16:11:11 ehird, still how much do you save writing "int a" instead of "int sum" 16:11:12 instead of making the current code easy to understand 16:11:19 think of a shorter, more self-describing way to express it 16:11:22 a far better use of time 16:11:28 macros, lots of macros 16:11:31 ehird, as a variable name 16:11:36 AnMaster: well, you use a language that doesn't require stupidly verbose type declarations 16:11:39 so that becomes '' 16:11:41 and you just use a. 16:11:47 AnMaster: however, in the case of C 16:11:52 AnMaster: please read K&R 16:12:00 ehird, even then calling the variable sum is better 16:12:02 their style is *exemplary* C 16:12:08 one- and two- letter variable names help you get most functions on to 1 or 2 lines 16:12:10 and is very short, concise, uses mostly 1-char variable names, 16:12:12 SimonRC, macors do have their place yes, but again it is easy to overdo it 16:12:17 and tries to keep things about one screenful 16:12:21 AnMaster: and how can you argue with K&R? 16:12:25 this is just imo, but usually, if a variable can have a very simple name without being misleading, you are doing a conceptually trivial thing much too verbosely... but i'm prolly wrong, no need to tell me that. 16:12:34 oklopol: yes! 16:12:37 you're right 16:12:38 ehird, because it is not available as a free pdf 16:12:39 you agree? 16:12:42 afaik 16:12:42 niec. 16:12:55 AnMaster: HAHAHAHAHA 16:13:00 that is the funniest thing i've heard all day 16:13:07 ehird, so I haven't read it 16:13:09 also, document the datastructures, not the functions 16:13:15 SimonRC, yes very true 16:13:17 the former is rather more helpful 16:13:29 I bet AnMaster would complain about K&Rs style if he read it. 16:13:37 'how can they make their code so OBFUSCATED' 16:13:42 'these people's C is horrible' 16:13:45 SimonRC, however something like a one line comment above the prototype in the header file is useful 16:13:55 for example, that prototype J interpreter is easy to read once you know what the datastructures are 16:13:57 SimonRC, and if a library for others to use: much more 16:14:02 on the public funtions 16:14:08 AnMaster: yes, and probably yes 16:14:13 SimonRC: yes, that prototype J interpreter is actually quite simple when you read it 16:14:39 the immediate shock reaction is very telling of the bad assumptions programmers make 16:14:51 SimonRC, would you like the man page for fopen to say: "opens a file, read source to see what the parameters are for and what the valid values for the mode parameter is" 16:14:53 if you understand some code immediately because it has tons of comments and all that 16:14:56 you probably understand it wrong 16:14:59 that question is to ehird too 16:14:59 and editing it is dangerous 16:15:04 with a more concise style, you learn the code 16:15:10 and then you learn it PROPERLY, and editing is easier 16:15:28 AnMaster: that is a totally irrelevant question 16:15:37 ehird, oh? it is code documentation 16:15:41 in a way 16:15:53 AnMaster: totally stupid attempt to clutch at straws 16:15:55 :| 16:16:04 ehird, how do you mean? 16:16:09 hmm 16:16:13 AnMaster: run this for me 16:16:15 'man fopen|wc -l' 16:16:35 124 on freebsd 16:16:46 ditto here. do you know how long the gnu version is? 16:16:53 it's god-awful 16:16:57 ehird, yes, 130 lines 16:17:03 so 6 more 16:17:04 AnMaster: that must be an old version 16:17:05 I checked 16:17:12 but anyway, the gnu version *tells you less* 16:17:15 the bsd writing style is better 16:17:21 more concise, and more information packed 16:17:28 ehird, I agree freebsd got better man pages 16:17:29 124 is a bit excessive, it's got bigger over the years 16:17:30 BUT! 16:17:33 if you read the manpage 16:17:41 a LOT of it is stuff to do with standards compliance 16:17:45 and historical stuff 16:17:50 when writing a new app, normally that doesn't apply 16:17:53 ehird, yes I fully agree about comments 16:18:08 SO, if fopen was new and written today 16:18:12 ehird, if you look in cfunge source you won't find a lot of comments, mostly something like "this function does foo" 16:18:14 or such 16:18:15 a good manpage would be much shorter 16:18:22 + the gpl header in each file 16:18:24 that is about all 16:18:31 AnMaster: license headers in each file is so horrid 16:18:32 i hate it 16:18:34 so redundant 16:18:37 but 16:18:41 'this function does foo' 16:18:42 i suggest 16:18:42 'foo' 16:18:44 instead of 16:18:52 'This function calculates the checksum of s' 16:18:53 try 16:18:56 'Calculate the checksum of s' 16:19:06 ehird, you said a lot in fopen man page was about standard 16:19:07 wrong 16:19:21 4 lines are 16:19:21 AnMaster: looks like it to me 16:19:24 oklopol: .pyc plz? 16:19:29 you can dcc it 16:19:33 oh righ. 16:19:34 t 16:19:35 ehird, however man fopen is about three functions 16:19:42 FOPEN(3) FreeBSD Library Functions Manual FOPEN(3) 16:19:42 NAME 16:19:42 fopen, fdopen, freopen -- stream open functions 16:19:44 they share man page 16:19:52 AnMaster: yes, I don't like man(1) anyway 16:19:54 you also get the spec wannabe, so comments on that too 16:20:00 ehird, want info *runs* 16:20:01 for documenting functions i prefer tools that extract stuff out of the source 16:20:05 basically 16:20:11 documentation should be as close as possible to the thing it documents 16:20:14 ehird, well gnu info is worse 16:20:14 yup 16:20:17 otherwise it has a far higher chance of being irrelevant 16:20:18 or out of date 16:20:23 ehird: yup * 2 16:20:34 ehird, well you could use something like doxygen then 16:20:36 SimonRC: :) 16:20:41 AnMaster: doxygen's a bad exampl 16:20:41 e 16:20:42 but if you use that, I just say eww 16:20:43 Sun got that mostly right, with JavaDoc 16:20:46 it's TOO verbose 16:20:50 yes, doxygen sucks 16:20:56 ehird: cli is the repl 16:20:58 good idea, bad implementation 16:21:01 but the idea is alright 16:21:02 it seems it's not coming 16:21:06 exactly 16:21:07 oklopol: ? 16:21:13 okay 16:21:13 hmm 16:21:15 upload it somewhere 16:21:19 perhaps i'm not identified 16:21:19 and send the url to me 16:21:21 ah 16:21:23 i'm not 16:21:26 now i am 16:21:35 ehird, auto generated man pages then? 16:21:47 ehird, there is a gnu tool that can auto generate a man page from --help output 16:21:52 help2man I think the name is 16:22:07 Forth traditionally has one "screen" of pure comments for each "screen" of code. 16:22:15 you need to give it some options to make sure it doesn't add the "see info page for more" crap 16:22:22 but it isn't too bad with the right options 16:22:35 oklopol: trying to figure out how to accept that 16:22:36 :--) 16:22:43 in text files, just have half of the line for comment and half for code I suppose 16:22:45 heh 16:23:04 SimonRC, nah, too much comments, usually I need way less 16:23:05 I really need to get a place to put my thoughts on code 16:23:16 then i can point them to it 16:23:20 instead of wording it badly on irc 16:23:31 however: the more obfuscated the code, the more comments needed 16:23:38 so it is better to give usable variable names 16:23:50 ehird: cli.pyc is a repl, and if you want to do something with context, oklotalk.pyc has a Runner class, which can .run() code, and stores context... and oklotalk.run() runs code 16:24:06 oklopol, what is a "repl"? 16:24:11 AnMaster: read/eval/print/loop 16:24:12 read-eval-print-loop 16:24:14 ah 16:24:16 right 16:24:20 damn ehird and his divine typing skills 16:24:27 in concatenative languages you can express it almost exactly like that 16:24:37 DEFINE loop = read eval print loop. 16:24:45 mhm 16:24:54 (loop (print (eval (read)))), is, of course, ridiculous 16:24:55 :-) 16:25:12 eh? 16:25:26 isn't that the same in "lispy" syntax? 16:25:55 yes 16:25:55 sexps 16:26:00 its totally backwards 16:26:02 :) 16:26:41 in concisative languages, you can write it as readevalprintloop 16:26:51 cise does this easily 16:26:57 it owns so bad 16:27:01 i gotta get on it soon 16:27:08 hmm 16:27:08 oklopol: or rather - 'in ambigious languages' 16:27:09 oh, right 16:27:14 the send failed 16:27:14 specifically, parsing cise is turing complete 16:27:21 hehehe 16:27:22 you need to know the definitions to parse it properly 16:27:23 lol 16:27:25 -!- jix has joined. 16:27:29 ehird: no 16:27:31 oklopol: yes 16:27:35 no. 16:27:40 'readevalprintloop' could be 're adev alpri ntlo op' 16:27:58 the magic is that you need to have those defined already. 16:28:20 yes, oklopol 16:28:23 you need to have explicit tokenization somewhere in file 16:28:24 so it is decided at runtime 16:28:26 oh 16:28:28 i see 16:28:32 so if i use stuff from a library 16:28:34 i have to specify which ones 16:28:37 so it can parse it right 16:28:40 won't that be verbose? 16:29:10 specify which ones? 16:29:18 oklopol: imagine this 16:29:25 'import foolib; readevalprintloop' 16:29:31 foolib could have 're', 'adev' etc 16:29:36 you would have to scan foolib, i guses 16:29:37 *guess 16:30:04 well yes, but i do not have all parsing rules done yet. 16:30:19 all i know is i'll choose something that makes sense 16:30:42 cise isn't at all ready yet 16:30:55 hmm 16:30:59 i'll up the interp btw 16:36:06 ehird: ping 16:36:09 ehird: pingu 16:41:14 back 16:41:24 downloading 16:41:32 okies 16:41:54 oklopol: i guess now i'll decompile it 16:41:54 :D 16:41:59 :D 16:42:12 that wouldn't be very fair, now would it 16:42:19 it wouldn't be readable for one thing 16:42:35 python bytecode would be fun to learn 16:42:42 The only other documented tester of Oklotalk-- is Elliott hird, who implemented a synthetic lisp style cons cell in pure Oklotalk. This was done based on solely the rational number example, implying the language can be picked up in an instance given a basic knowledge of the concepts involved. 16:42:43 :D 16:42:47 it's very high-level, i'm prettu sure you could 16:42:54 :D 16:43:02 well didn't you pretty much do that? 16:43:15 or did i explain much :D 16:43:26 yes 16:43:27 i did 16:43:27 :p 16:43:30 yarr 16:43:39 Hird 16:43:44 i *did* fail your name 16:43:48 haha 16:43:51 credit me as 'ehird' 16:43:57 it's 1337++ 16:44:08 To be exact, also integers, strings and lists are things, but "thing" refers to user-created things (the "{...}" ones) in this document. Atoms aren't, in Oklotalk--, due to their special call behavior. 16:44:22 things are things except when they're not 16:44:23 that's true for this version 16:44:24 and you can have things 16:44:27 which are not like the other things 16:44:29 :D 16:44:57 i put alot of thought into finding a good name for 'em :-) 16:45:05 oklopol: how about 'responder' 16:45:09 :D 16:45:12 haha :d 16:45:13 :D 16:45:16 for Oklotalk, of course. 16:45:20 oklotalk-- is set in stone too much :P 16:45:36 oklopol: oh and i came up with a little 'syntaxful' oklotalk-- variation 16:45:42 do tell 16:45:42 gonna rewrite my cons cell with it 16:46:07 oklopol: hey, i just noticed something 16:46:11 oklotalk doesn't need comments 16:46:13 just use 16:46:13 "strings" 16:47:36 oklopol: http://pb.vjn.fi/p641631565.txt 16:47:37 yes. 16:47:42 i have many more ideas for the syntax 16:47:49 but that's just adding one or two niceties 16:47:51 i like it 16:48:02 well, the thing is, "comments" are in fact just another kind of string. 16:48:11 oklopol: well yeah 16:48:14 but anyhoo 16:48:16 my example 16:48:16 :D 16:48:19 this is actual oklotalk ofc 16:48:39 yarr i thought of that too, acttually 16:48:41 actually 16:48:55 might be nice 16:49:12 oklopol: yeah 16:49:14 basically 16:49:20 it's just adding infix stuff 16:49:21 but 16:49:25 the thing that makes it special is my indentation style 16:49:32 try and read this 16:49:32 (= cons {(-> [h t] {(-> [$pb :] [h t]) (-> $car h) (-> $cdr t) (-> [$setcar h] h) (-> [$setcdr t] t) (-> [$! 0] h) (-> [$! n] (! t (- n 1))) (-> $length (+ 1 (length t)))})}) 16:49:35 even if you add newlines 16:49:36 well i meant the indentation actually. 16:49:37 it's still hard to read 16:49:44 but my style combined with the indentaiton 16:49:50 makes it nice and trivial 16:49:58 well i read it quite easily, but indeed, some might not 16:50:12 yarr, i meant i thought of *the indentation style* 16:50:17 yeah 16:50:17 :) 16:50:29 i assumed infix was just automatic because... well, it usually is 16:50:33 i mean 16:50:37 for single statements 16:50:50 i'm also pondering whether i should add precedence to oklotalk, still 16:51:54 oklopol: you should only add precedence when you write programs 16:51:58 and see where parens crop up 16:52:00 parens are evil 16:52:06 oklopol: actually 16:52:11 i've always wanted to do a language where 16:52:13 2*3 + 4 16:52:14 and 16:52:17 2 * 3+4 16:52:19 graphica! 16:52:20 parse like you would expect 16:52:23 :D 16:52:26 i've come up with that too :) 16:52:38 yes 16:52:38 sexps 16:52:38 its totally backwards 16:52:43 oklopol: but what about multiple spaces 16:52:44 well xml is worse 16:52:50 2 * 3+4 / 2 * 3+4 16:52:52 ehird: well, graphica isn't exactly that 16:52:56 totally epical 16:52:57 S-Expressions > xml 16:52:59 yes, epical 16:53:02 is't sexps + infix if no spaces 16:53:09 AnMaster: no the repl is backawrds 16:53:11 but, same basic idea 16:53:14 *backwards 16:53:15 *it's 16:53:24 ehird, I prefer RPN too 16:53:28 ;P 16:53:36 AnMaster: i just like concatenative languages 16:53:36 ...rpn? :O 16:53:39 not just for the RPN 16:53:42 oklopol: okorpn 16:54:02 befunge is more or less RPN 16:54:02 {$f [$pb :] ->; ...} = cons 16:54:02 heh 16:54:08 AnMaster: but not concatenative 16:54:20 how do you push 20 on the stack? a2* would work in funge98 16:54:37 AnMaster: do you know concatenativity? 16:55:11 oklopol, I know the word and I know forth is such a language 16:55:15 concatenativity is RPN jesus 16:55:18 but not the details indeed 16:55:19 the idea is that if you're point-free (meaning no variables -> no scope), you can just combine functions by combining their sources 16:55:20 AnMaster: forth isn't concatenative 16:55:22 really 16:55:23 hm 16:55:26 but here is the definition 16:55:33 i mean 16:55:34 in applicative languages, the invisible space operator is application 16:55:35 foo bar 16:55:36 is foo(bar) 16:55:38 concatenating their sources 16:55:44 in concatenative languages, the invisible space operator is composition 16:55:45 ehird, yes right 16:55:45 foo bar 16:55:46 is foo . bar 16:55:48 well 16:55:52 pretty much 16:55:52 means bash is a applicative language 16:55:55 err 16:55:58 no it isn't 16:56:01 oh 16:56:01 yes 16:56:02 kind of 16:56:07 myfunction argument 16:56:07 a weird kind of applicative languages 16:56:08 :-) 16:56:09 but 16:56:14 the cool thing about concatenative languages 16:56:18 is that because space = composition 16:56:26 putting two valid programs together is their composition 16:56:28 so what is foo . bar 16:56:28 then 16:56:34 in C syntax 16:56:37 AnMaster: foo . bar is \x -> bar (foo x) 16:56:40 you can't express it in c 16:56:42 it doesn't have closurse 16:56:51 ehird, well then you can't express it so I get it :P 16:56:52 well, actually that's bar . foo 16:56:58 but concatenative languages use it like that 16:57:02 AnMaster: basically 16:57:07 in 'foo . bar' 16:57:10 is a function: 16:57:13 hm 16:57:16 (x) { return foo(bar(x));} 16:57:24 ok 16:57:24 in concatenative languages, 'foo bar' is 'bar . foo' 16:57:29 and 16:57:30 '2' 16:57:33 is a function pushing 2 16:57:40 then you have [...] to make functions 16:57:40 so 16:57:43 2 3 + 16:57:44 is 16:57:51 (x) { return +(3(2(x))); } 16:57:57 and the initial x passed to the program 16:57:58 is the empty stack 16:58:01 and what does that evalute to? 16:58:02 so that program pushes 2 16:58:06 wel 16:58:08 2(x) 16:58:12 is x+[2] 16:58:17 assuming 2 is a function 16:58:22 so, that makes a stack like x but with 2 added to it 16:58:25 then passes that to 3 16:58:28 then passes that to + 16:58:31 ok. 16:58:33 which adds the top two avlues together 16:58:34 now 16:58:36 when you call a function 16:58:38 it gets the current stack 16:58:41 i.e. 'x' gets it 16:58:42 but 16:58:44 at the start of the program 16:58:47 an empty stack is passed 16:58:54 ok 16:58:57 [...] is an anonymous function 16:59:02 so all it does is stack operations? 16:59:03 '[...] i' is '...' 16:59:10 AnMaster: kind of, but stack is an implementation detail 16:59:39 can't see the point of it though really 17:00:11 AnMaster: what's the point of anything really 17:00:16 it's a paradigm 17:00:19 a very interesting one 17:00:22 ok 17:00:28 why is it useful 17:00:40 why is it better than say functional programming 17:00:41 AnMaster: the same way any paradigm is useful over any other 17:01:01 ehird, like? 17:01:35 ehird, and what existing languages are concatenative 17:01:45 and is any of them non-esoteric? 17:01:52 AnMaster: most of them are non-esoteric 17:01:54 well 17:01:58 like? 17:02:07 Joy was created to research the implications 17:02:12 Factor, however, is the prime example 17:02:16 Slava Pestov is its head 17:02:19 author of jEdit 17:02:31 it has a web server, is used to develop apps, has a small but strong community, etc 17:02:36 it has a channel here, #concatenative 17:02:43 factorcode.com 17:04:13 wikipedia call Joy "functional" 17:04:18 hm 17:05:41 yes, functional but concatenative 17:05:43 AnMaster: oh and Cat 17:05:46 Cat is like Joy, but strongly typedf 17:05:56 not man cat? 17:06:01 AnMaster: no 17:06:02 catlanguage.com 17:06:11 cat is certainly "concatenative" though XD 17:06:18 but not turing complete 17:06:48 ehird, not related to lolcode? ;P 17:06:54 no 17:07:02 predates it 17:07:17 er wait 17:07:18 dead link 17:07:44 http://cat-language.com/ 17:08:37 that one is functional too? 17:08:56 yes 17:09:01 are *all* concatenative languages functional? 17:09:05 AnMaster: most are 17:09:07 but 17:09:10 most of them have side-effects 17:09:13 so functional but not purely 17:09:26 but all of them have [...] and use combinators for 'if' and all that stuff 17:09:30 but in e.g. factor 17:09:31 well most functional languages allow side effects, even haskell does it in special contexts iirc 17:09:33 side effects are trivial 17:09:41 and haskell doesn't, it just lets you emulate it 17:09:51 ehird, it lets you do file IO 17:10:07 or how the heck did they write darcs in haskell? 17:10:10 i'm fairly sure a concatenative language has to be functional 17:10:53 because you can't use something like goto for program flow, you have to have a way to nest code... this essentially lets you have functions 17:10:54 AnMaster: it's hard to explain 17:11:00 AnMaster: haskell can be used for very real, IO-doing apps 17:11:05 AnMaster: but it is done in a purely functional way 17:11:14 i'll word-drop... Monads 17:11:14 hmm, i'm assuming a stack here, perhaps a wider consideration of concatenativity might let you be imperative. 17:11:24 AnMaster: basically, the only non-functional part is the small runtime written in c 17:11:25 ehird, yes I heard that word 17:11:29 which is 100% detached from the haskell code 17:11:29 hm 17:11:36 its hard to explain, most newbies misunderstand it 17:11:38 was just about to ask what it meant 17:11:41 but just believe me when i say -- 17:11:48 haskell is 100% purely functional 17:12:01 ehird, file IO is a side effect, right? 17:12:19 AnMaster: yes but the haskell doesn't do it 17:12:25 i told you, it's hard to explain 17:12:27 AnMaster: it doesn't have side-effects, it just has a construct for ordering evaluating, in which case you can have the program receive a conceptual list of inputs that will ever be given, and read from that 17:12:33 this list can only be read sequentially 17:12:36 oklopol: eeeeh, no 17:12:37 and is the IO monad 17:12:39 right, so everyone using darcs just imagined they commited a file 17:12:39 no that's wrong 17:12:40 :) 17:12:42 it really didn't do it? 17:12:42 ehird: no? 17:12:48 AnMaster: ... what an IDIOTIC comment 17:12:57 ehird, yes I'm aware of that 17:13:00 but you make no sense 17:13:00 its not the Haskell that does the IO. 17:13:14 AnMaster: most people have a lot of trouble with monads. i'm not going to explain it over irc. 17:13:17 just trust me. i'm right. 17:13:23 ehird: what's wrong about my explanation? 17:14:14 oklopol: hm 17:14:15 not srue 17:14:32 i'm not saying it's exactly that, but it somewhat corresponds to that :) 17:15:06 you can think of actions that effect the IO monad as taking stuff from the list 17:15:15 and at recursion, passing the tail 17:15:20 because you've used the head 17:16:14 well, you can also do stuff like output, and tell the IO monad how to read, but you can find a similar analogy for that too 17:16:32 how 17:16:33 i mean 17:16:34 what 17:17:28 ehird: did you try the interp? 17:17:31 does it work at all? 17:19:23 oklopol: going to 17:19:46 :: " 17:19:46 } 17:20:10 it seems this is an idle day for me, so i'll be here waiting, i guess! :D 17:20:42 ehird: i haven't tried anything that shouldn't work btw, so don't be surprised if it's trivial to crash 17:20:44 oklopol: well, it works 17:20:45 :P 17:20:55 not much to see really 17:21:02 well, you can't crash it that easily ofc 17:21:10 because it just excepts 17:22:01 anyway, if you find bugs, i may remention you in the report!! 17:22:12 oklopol: there's lots of bugs 17:22:14 just not on valid code 17:22:14 :-) 17:22:19 hehe 17:22:21 oklopol: i find the scoping odd though 17:22:23 here's an example 17:22:24 prolly, prolly 17:22:42 (= ptr {(-> o {(-> $get o) (-> [$set o] o)})}) 17:22:47 you see the o 17:22:48 bound in 17:22:49 [$set o] 17:22:59 i would expect that to be local to that pattern match, and just return the o 17:22:59 and then 17:23:01 on a future get 17:23:04 the get would refer to the objects o 17:23:05 but instead 17:23:10 it somehow 'overrides' the thing's o 17:23:15 is that intentional? 17:23:17 yes. 17:23:20 if so, how is it done consistently? 17:23:30 it's only a problem at recursion 17:23:52 mutable objects and functions at the same time don't really mix 17:23:56 but i wasn't afraid ofc 17:24:06 recursion will remake the scope 17:24:11 nothing else 17:24:54 you see, usually you will not use a *field* in a pattern, you will use new varnames... using field names in a pattern will have the side-effect of changing the field. 17:26:12 if you find problems with it, do tell me. sofar, it seems to have been a good idea 17:27:09 well, apart from the fact it may make it easy to make mistakes; this of course i don't care about at all, oklotalk is supposed to be fun and easy to code, if you *know what you're doing, and are perfect* 17:29:56 oklopol, the bot is offline :( 17:30:01 hmm 17:30:08 otobot I mean 17:30:12 or whatever it's name was 17:31:26 wtdf 17:31:28 wtf 17:31:34 invalid username i=-1 :D 17:31:45 err yes I agree it is invalid 17:31:47 see irc standard 17:32:03 = is not valid in nicks iirc 17:32:06 brb phone 17:32:07 i don't use it 17:34:48 -!- oktabot has joined. 17:35:05 a-ha, cannot have ident and realname be the same as nick, it seems :O 17:35:17 :: (= ptr {(-> o {(-> $get o) (-> [$set o] o)})}) 17:35:17 <<<25877720>>> 17:35:29 :: (= x (ptr 7)) 17:35:29 <<<25884032>>> 17:35:33 :: (= y x) 17:35:34 <<<25884032>>> 17:35:38 :: (set x 5) 17:35:39 5 17:35:42 :: (get x) 17:35:42 5 17:35:43 :: (get y) 17:35:44 5 17:35:51 :: (= x (ptr 8)) 17:35:51 <<<25883472>>> 17:35:56 :: (get y) 17:35:57 5 17:36:01 :: (set y 7) 17:36:02 7 17:36:04 :: (get x) 17:36:05 8 17:36:17 i have no idea why i'm doing this 17:36:29 i'm so goddamn paranoid stuff just stops working out of nowhere :D 17:37:42 [17:35] a-ha, cannot have ident and realname be the same as nick, it seems :O 17:37:44 you can 17:37:45 :< 17:38:11 :: x 17:38:11 <<<25883472>>> 17:38:13 :: (+ x y) 17:38:14 f 17:38:23 :: º·Ë„‰‚·„°)(ÔË°*(Ë—‚Ë_SAO—±ÅÍÚ((((ÆÒ–ºÈËU0(WA*$()£$ 17:38:23 An error: Unmatching parens @ row 1. 17:42:08 ehird: well, i couldn't connect 17:42:09 hmm 17:42:15 i cannot see those chars 17:42:55 oklopol: they're jewnicode 17:43:43 ah eunuchcode 17:46:50 ehird: well i just do whatever happens to happen if unicode is used. it's supposed to be used with ascii atm 17:46:57 :: 9ii09i 17:46:58 ii09i 17:48:07 :: ømgø∂∑†ƒ 17:48:08 ømgø∂∑†ƒ 17:48:11 :: "ømgø∂∑†ƒ") 17:48:12 An error: Unmatching parens @ row 1. 17:48:12 :: "ømgø∂∑†ƒ" 17:48:13 ømgø∂∑†ƒ 17:48:16 :: (length "ømgø∂∑†ƒ") 17:48:16 An error: invalid literal for int() with base 10: '\xc3\xb8mg\xc3\xb8\xe2\x88\x82\xe2\x88\x91\xe2\x80\xa0\xc6\x92' 17:48:17 heh 17:48:19 :| 17:48:25 oklopol: open stdin in unicode mode 17:48:26 same with files 17:48:31 and replace '' with u'' 17:48:35 then it'll be jewnicode 17:48:46 is taht so? 17:49:01 alternatively, you could put the jewnicode into auschwitz 17:49:12 but then you'd be an nascii 17:49:22 :: (length "seher") 17:49:22 An error: invalid literal for int() with base 10: 'seher' 17:49:36 perhaps i should fix that :D 17:49:49 you see 17:49:56 :: (lolimagination "14354") 17:49:58 14354 17:50:13 lmao 17:50:36 long story short, strings can only be int()'d atm 17:51:01 so i saved a few chars ;) 17:52:17 at some point i though i might make oklotalk only do base 16 numbers 17:53:55 they're much more natural 17:54:49 oklopol: hmm, all my esoideas from earlier today have just gone 17:54:57 have gone? 17:55:49 yes 17:55:56 liek how 17:55:59 forgotten? 17:57:49 yes 17:58:42 do you know a set of combinators that are tc given call/cc, but not without? 17:59:06 i'm pretty sure that cannot exist, but... 17:59:18 oklopol: no, i don't think there is any 17:59:18 well 17:59:22 you can implement loops with call/cc. 17:59:28 yeah, somewhat 17:59:31 so maybe 17:59:38 oklopol: like, make a functional equiv. of brainfuck 17:59:39 without loops 17:59:41 then add call/cc 17:59:42 and maybe. 18:19:26 -!- Sgeo has joined. 18:33:20 pikhq, still care about PSOX? 18:33:32 Barely. 18:33:42 If anyone still cares about PSOX, I'm thinking of adding an ASCII mode 18:33:53 pikhq, why only barely? 18:39:01 Because I've got an assload of other stuff to do. 18:40:15 -!- oklofok has joined. 18:46:23 hehehe 18:46:39 Elsenet, some people are playing with a bot called nicknick 18:46:52 it steals nicks whenever anyone changes nick 18:47:02 Sgeo, you didn't answer me yesterday (or was it two days ago?): what use would PSOX be to me as a befunge programmer 18:47:05 to get back, you have to o two more steps 18:47:16 thus resulting in 6 lines of nick changes overall 18:47:23 AnMaster, none I guess 18:47:26 head-spinning stuff 18:47:36 ok thank you 18:47:57 I mean, assuming befunge can access the network and files and stuff 18:48:42 SimonRC: heh 18:48:57 * AnMaster wonders idly about a program that can solve the halting problem for *itself* 18:49:05 actually, a good irc server would make all this nicky stuff automatic 18:49:08 did that make any sense at all? 18:49:13 AnMaster: same as regular halting problem 18:49:14 like 18:49:21 if a nick is online for more than N time 18:49:26 it gets registered 18:49:31 and then... somehow you can claim it 18:49:32 i don't know 18:49:50 ehird, well you need to work somewhat on the details 18:49:52 really irc is far too klunky 18:49:57 but 18:50:01 you could do channel registration easily 18:50:11 to get back, you have to o two more steps 18:50:11 if you go in to an unused channel it's registered to you 18:50:14 well /ns ghost 18:50:15 :D 18:50:22 funny to kill a bot that wya 18:50:23 way* 18:50:32 if the channel dies, then it is dropped 18:50:36 AnMaster: lots of places have no /ns 18:50:48 ehird, right /msg nickserv/userserv/whatever 18:50:49 I guess what IRC needs is a well thought out replacement 18:50:53 if they got services 18:51:03 AnMaster: not all have those 18:51:13 the only bit networks without services these days are efnet and ircnet 18:51:17 big* 18:51:34 ehird, sure some got account based system 18:51:37 or similar 18:52:12 AnMaster: some have none 18:52:32 yes ircnet and efnet these days 18:52:41 as I said all other large network do use services nowdays 18:53:14 does anyone else think irc sucks? ;) 18:54:42 ehird, support Haver! lol 18:54:49 oklopol: oklohi 18:54:55 Sgeo: haver kinda punts on the hard stuff 18:55:17 howso? 18:56:19 it doesn't really do anything new 18:57:28 -!- jix has quit (Nick collision from services.). 18:57:29 -!- oklopol has quit (Read error: 110 (Connection timed out)). 18:57:38 -!- jix has joined. 18:59:14 -!- oktabot has quit (Read error: 110 (Connection timed out)). 18:59:36 -!- oklofok has quit (Success). 18:59:50 NOOOOOOOOOOO 18:59:52 NO MORE OKLOTALK 19:07:05 -!- timotiis has joined. 19:22:34 -!- Judofyr_ has joined. 19:22:34 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)). 19:23:17 -!- Judofyr_ has changed nick to Judofyr. 20:07:03 d 20:07:10 GregorR: so about that egobot patch.. 20:13:53 GregorR: :D 20:20:18 * SimonRC PONDERS 20:20:28 SILC has an interating alternative to nicks 20:20:51 everyone has cryptographic identites, and nikcs are merely decorative 20:21:24 Programs that solve the halting problem for themselves are easy. 20:21:55 obviously, it will always halt, because a halting-problem-solver must 20:22:02 therefore it is just "true" 20:31:44 Can INTERCAL do string processing" 20:31:45 ? 20:36:47 Sgeo: yes 20:36:54 Sgeo: it is turing complete 20:36:58 there is an intercal cgi script 20:37:02 Can it do it well? 20:37:15 Sgeo: you can't do anything 'well' in intercal 20:37:18 every operation is tedious and verbose 20:37:20 but you can do it 20:37:23 it's pretty standard 20:37:45 Sgeo: http://www.muppetlabs.com/~breadbox/intercal/ins/insstart.html 20:37:47 intercal cgi script 20:37:53 Because I'm planning a PSOX-ASCII, which will return argumnts like: 12345,hi,0 20:38:04 I want to know how Intercal would handle stuff like that 20:39:55 Sgeo: Uh, you can do binary in intercal too. 20:40:07 But if you want true INTERCAL support, you have to do input and output in roman numerals. 20:40:11 Since that's all that's standard. 20:40:17 wait, no 20:40:19 input in text numerals 20:40:21 output in roman numerals 20:40:24 input like: 20:40:25 ..PSOX_ASCII is not about to support that 20:40:29 'ONE ZERO NINE FIVE ZERO' 20:40:31 output like 20:40:33 'MXVIIVIVI' 20:40:38 sometimes with bars or underscores 20:40:45 *PSOX-ASCII 20:40:53 Sgeo: Well duh, I could have guessed that. You don't like actually designing things that work.. 20:41:11 character io extensions exist 20:41:13 * Sgeo doesn't want something centered on any language 20:41:15 but they are not standard 20:41:27 Sgeo: PSOX is centered around brainfuck. Stating anything to the contrary is just a lie 20:41:43 ehird, that's why I'm working on PSOX-ASCII 20:42:15 Sgeo: Which will be centered around something else. Yay! 20:42:30 Although I wonder if I should just break it off PSOX entirely to make it much more flexible.. 20:43:05 or just give up psox 20:44:07 ehird, the current spec/codebase, or the idea entirely? 20:46:25 Sgeo: both 21:48:59 -!- timotiis_ has joined. 21:49:47 -!- oerjan has joined. 21:55:58 -!- Judofyr_ has joined. 21:55:58 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)). 22:02:03 -!- timotiis has quit (Read error: 110 (Connection timed out)). 22:07:33 -!- Judofyr_ has changed nick to Judofyr. 22:33:59 -!- Judofyr_ has joined. 22:33:59 -!- Judofyr has quit (Connection reset by peer). 22:51:37 -!- jix has quit ("CommandQ"). 23:32:13 -!- oerjan has quit ("leaving"). 23:32:20 dead day today 23:38:58 -!- pikhq has quit ("REbooting for new kernel"). 2008-04-13: 00:01:50 -!- pikhq has joined. 00:12:01 pikhqhello 00:14:30 ehird: merely a glitch in the net 00:15:31 SimonRC, do you care about PSOX? If anyone cares about PSOX, I'm considering a PSOX-ASCII for languages that don't do NULs well, and are somewhat decent at handling text 00:16:12 not much 00:16:39 heh, the same response always 01:00:42 -!- timotiis_ has quit (Read error: 110 (Connection timed out)). 01:11:44 * SimonRC goes. 01:50:56 -!- Iskr has quit ("Leaving"). 02:08:06 -!- ehird has quit ("This computer has gone to sleep"). 02:08:40 -!- ehird has joined. 02:10:29 rehird 02:25:12 -!- ehird has quit (Read error: 113 (No route to host)). 02:28:59 -!- calamari has joined. 02:35:05 -!- RodgerTheGreat has joined. 02:40:04 Hi calamari and RodgerTheGreat 02:40:13 either of you still interested in PSOX? 02:40:17 hi sgeo 02:40:47 I think it's an interesting concept, but to be perfectly honest I don't see myself using it anytime soon- I have a lot of other projects on hand 02:41:36 I'm not working on it if there's no interest 02:41:44 But I guess that counts as interest 02:42:02 sorry I can only offer moral support, man 02:42:18 That's all I need really. Thanks 02:42:44 My advice would be to create some kind of really neat proof-of-concept depending on it- if you made a befunge webserver or something people would be all over it 02:44:07 RodgerTheGreat: good idea 02:44:28 Sgeo: There's a difference between being interested and having the time to do anything with it. 02:44:38 I care about PSOX. I just don't have the time to do anything about it. 02:45:09 not only would it be a cool and convincing way to make people want to make it a standard and play with it, but it would also stand on it's own as a neat accomplishment 02:45:21 wget.b by pikhq already exists 02:45:36 Although I guess a webserver would be cooler 02:45:48 I 02:46:07 I'd imagine if PSOX had simple socket support a webserver would be pretty straightforward 02:46:30 hell, I think you can make one by hooking up a BF interpeter's I/O to netcat 02:46:31 It has socket support, but I don't know how simple it is 02:46:38 Really, a simple wobserver is trivial if you just assume inetd. 02:46:43 inetd? 02:47:15 Also, I want to add a PSOX-ASCII on top of what's there already 02:47:21 It's a super-daemon. Listens on ports, initiates the appropriate server when a connection comes in. . . 02:47:32 And does all the network setup for that server beforehand. 02:48:14 after that, a webserver would pretty much just be something that barfs a string when it's pinged? 02:48:19 Is inetd universal, or UNIX-like only 02:48:25 * pikhq nods 02:48:31 Sgeo: It's UNIX-like only. 02:48:41 Which is to say, everything-but-Windows-only. :p 02:48:42 (Cygwin has an inetd) 02:48:42 well, a filesystem accessing webserver would be better 02:48:48 in that case, you could pick a really nasty language for the proof of concept, sgeo 02:48:49 GregorR: Oh. Cool. 02:48:55 But that is UNIX-like. :p 02:49:00 Touché. 02:49:13 I don't think straight win32 offers it. 02:49:19 ... Unless you could build it with mingw? 02:49:27 RodgerTheGreat, without PSOX-ASCII, the language has to support sending and receiving NULs 02:49:35 hm. 02:49:39 With PSOX-ASCII, it has to be decent at handling strings 02:50:03 bbiab 02:50:06 (OSX uses launchd instead, and most Linux distros use xinetd. . . Of course, they all do the same job, just in different, more fancy ways (OSX's launchd, IIRC, is also an init replacement)) 03:01:46 -!- ehird has joined. 03:02:19 wb ehird 03:22:22 -!- ehird has quit (Read error: 113 (No route to host)). 05:59:51 -!- adu has joined. 07:23:30 -!- adu has left (?). 07:39:06 -!- Sgeo has quit ("Ex-Chat"). 07:47:11 -!- calamari has quit ("Leaving"). 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 09:23:18 -!- Iskr has joined. 09:37:10 -!- Iskr has quit ("Leaving"). 09:59:13 -!- Iskr has joined. 10:10:23 -!- atsampso1 has quit (Read error: 113 (No route to host)). 10:44:56 -!- Judofyr_ has changed nick to Judofyr. 10:55:43 -!- jix has joined. 10:57:34 -!- Iskr has quit ("Leaving"). 11:03:14 -!- Iskr has joined. 11:29:17 -!- atsampson has joined. 12:51:03 -!- Tritonio_ has quit (Remote closed the connection). 14:34:24 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)). 14:35:02 -!- Judofyr has joined. 14:54:55 -!- Tritonio_ has joined. 16:34:14 -!- ehird has joined. 16:34:15 -!- Slereah has quit (Read error: 110 (Connection timed out)). 17:31:31 -!- Tritonio_ has quit (Read error: 113 (No route to host)). 17:37:33 -!- RodgerTheGreat has quit (Read error: 104 (Connection reset by peer)). 18:18:46 -!- Sgeo has joined. 18:28:42 -!- Tritonio_ has joined. 18:57:22 -!- jix has quit (Nick collision from services.). 18:57:32 -!- jix has joined. 19:03:23 -!- Zuu has joined. 19:03:40 -!- Zuu has left (?). 19:39:32 -!- timotiis has joined. 20:10:55 -!- Tritonio_ has quit (Remote closed the connection). 20:19:55 Sometimes, people make me want to kill them! 20:19:58 "Theses licenses are TOO weird, I prefer the 'normal' license.. 'The source is mine, is private and you must not mess with that'." 20:32:40 -!- Unnamed-4AD202 has joined. 20:39:35 Unnamed-4AD202: hello slereah 20:40:46 -!- sebbu2 has changed nick to sebbu. 20:41:59 ehird, huh at that license? 20:42:16 what license was too weird 20:42:27 -!- Unnamed-4AD202 has changed nick to Slereag. 20:42:28 -!- Slereag has changed nick to Slereah. 20:42:32 Hello little man 20:42:40 I am back from der Scientologie 20:43:01 Scientology is just nuts 20:43:46 Slereah: I hope it was epic. 20:43:57 Well, in France, not that much. 20:44:11 The cops once again blocked us from protesting in front 20:44:12 AnMaster: it was just a comment on a blog where someone had compared free software licenses 20:44:16 and attendance was less epic 20:44:21 Slereah: Lame. 20:44:29 Slereah: Was there any Rick Astley? 20:45:33 Well duh 20:45:54 It would be nice to find a way to stop the street blocage. 20:46:51 Slereah, what were you doing 20:47:06 AnMaster: anonymous scientology protests today.. 20:47:28 Maybe I'll end up on TV and newspaper :o 20:47:30 aha 20:47:40 why anonymous? 20:47:48 AnMaster: Anonymous as in the pseudo-entity 20:47:51 err 20:47:52 what? 20:47:58 I think AnMaster lives under a rock 20:48:11 Since I was the only guy with the good idea to order my Epic Fail Guy mask in february, I was quite filmed :o 20:48:12 ehird, oh no, my secret is out 20:48:15 ;P 20:48:41 Slereah, what is "epic fail guy mask"? 20:48:49 AnMaster: Anonymous = *chan user. 20:48:52 ie, what does it look like 20:48:57 Anonymous = currently warring with CoS. 20:49:05 mhm 20:49:19 there is some organization called "anonymous"? 20:49:26 No. 20:49:29 AnMaster: you know what a *chan is i presume 20:49:35 "Anonymous" is a collective name. 20:49:44 and that on most of them, posts are forced to be marked as Anonymous, or at least convention dictates so. 20:49:50 One would say that he is Anonymous. 20:49:57 Not that he is a member of Anonymous. 20:49:58 But it has sprawled into a pseudo-entity for wars such as the current one. 20:50:04 It's an old joke. 20:50:14 Slereah: Quite. 20:50:35 From 4chan, or possibly 2chan. I'm not sure when people started to referring to Anonymous as a real single person. 20:50:47 I can't read jap. 20:51:06 Slereah: It's recent. 20:51:23 It might have even originated from 7chan or similar 20:51:27 Perhaps even as recent as the fox report. 20:51:46 Also, do you realise we are having a discussion about chans using punctuation and spelling and capitalization? 20:51:54 epic fail 20:52:35 http://www.flickr.com/photos/24718854@N04/2407669233/sizes/l/in/set-72157604504981741/ 20:52:39 Thar be I. 20:52:58 Giving some auditing, with a multimeter I got for 25 euros. 20:53:19 Slereah: heh 20:53:24 (I don't have the mask there, it's fucking hard to keep that thing on) 20:53:27 BODY THETANS DETECTED 20:53:49 http://www.flickr.com/photos/24718854@N04/2408506072/sizes/l/in/set-72157604504981741/ 20:53:57 Here I am, measuring the Thetaness of my brain 20:54:18 Slereah: It needs soap 20:54:35 Wot? 21:32:37 ehird, yes I know what one is 21:32:40 sorry was afk 21:34:42 Slereah, why the multimeter? 21:35:03 Because it accomplishes the same thing as an E-meter :o 21:35:10 what is an E-meter? 21:35:23 Scientology's "religious technology" 21:35:27 aha 21:40:01 night 21:42:46 -!- Iskr has quit ("Leaving"). 22:07:03 -!- oerjan has joined. 22:13:11 -!- calamari has joined. 22:13:18 hi 22:13:29 * pikhq would like to disband the Union. 22:13:37 which one? 22:13:51 Of the USA. 22:14:01 http://www.washingtonpost.com/wp-dyn/content/article/2008/04/11/AR2008041103655.html 22:14:15 Welcome, my fellow Americans, to the police state in toto. 22:16:29 what else is new.. 22:17:37 I did some country research.. some of the european countries rate better in press freedom, that type of thing... but they all seem to be welfare states 22:49:44 -!- testingerator has joined. 22:49:44 -!- testingerator has quit (Excess Flood). 22:53:41 -!- testingerator has joined. 22:53:41 -!- testingerator has quit (Dead socket). 23:03:30 -!- Endeavour has joined. 23:03:30 -!- Endeavour has quit (Remote closed the connection). 23:12:24 -!- Endeavour has joined. 23:12:40 Testing. 23:12:43 ehird: You said: #esoteric 23:12:46 Heh. 23:12:49 ehird: You said: #esoteric 23:13:14 -!- Endeavour has quit (Remote closed the connection). 23:13:20 -!- Endeavour has joined. 23:13:36 I hope this works now. 23:13:49 Oh well. 23:14:00 Hm, wait, why is it just being *silent*? 23:14:08 -!- Endeavour has quit (Remote closed the connection). 23:14:14 -!- Endeavour has joined. 23:14:15 Test... 23:14:19 Ahh, I see. 23:15:02 Hmm, waitasecondary, why is that happening 23:15:33 * oerjan guesses that it is trying to send a message to Test... 23:15:39 PRIVMSG Hmm, :You said waitasecondary, why is that happening 23:15:49 Yep, oerjan 23:15:58 :-) 23:16:34 -!- Endeavour has quit (Remote closed the connection). 23:16:41 As always, 'print' debugging will save the day. 23:16:45 -!- Endeavour has joined. 23:16:49 Okay, test. 23:16:52 ehird: You said: #esoteric 23:17:01 Wait -- what the hell? It's being spammed somehow 23:17:03 -!- Endeavour has quit (Remote closed the connection). 23:18:22 * oerjan wonders if ehird knows the actual format of irc messages :) 23:18:34 oerjan: Yes. :P 23:18:41 It's just subtle indexing bugs.. 23:18:42 -!- Endeavour has joined. 23:18:48 oh HAH 23:18:51 ehird: You said: #esoteric 23:18:52 ['PRIVMSG endeavour', 'Endeavour: You said: endeavour', 'endeavour'] 23:18:52 endeavour 23:18:55 ehird: You said: #esoteric 23:18:57 ehird: You said: #esoteric 23:19:00 iterating quine 23:19:01 -!- Endeavour has quit (Remote closed the connection). 23:19:07 that is beautiful 23:20:20 that should be resolved 23:20:24 -!- Endeavour has joined. 23:20:25 test 23:20:30 ehird: You said: test 23:20:33 oh joy 23:20:38 ehird: You said: oh joy 23:20:45 fnord 23:20:51 oerjan: You said: fnord 23:21:37 -!- Endeavour has quit (Remote closed the connection). 23:21:44 * ehird tries to find out what is eating his resources 23:21:57 something likes the disk 23:24:28 ok, WTF is happening 23:25:05 aha 23:25:16 'nobody' was running 'find' 23:25:17 wtf 23:25:17 :D 23:25:53 -!- Endeavour has joined. 23:26:00 okay, it should work *without* the lag now 23:26:05 ehird: You said: okay, it should work *without* the lag now 23:26:13 -!- Endeavour has quit (Remote closed the connection). 23:26:15 Hmm. 23:26:15 :Endeavour!n=Endeavou@91.105.104.73 PRIVMSG endeavour :Endeavour: You said: Endeavour: You said: Endeavour: You said: Endeavour: You said: Endeavour: You said: Endeavour: You said: Endeavour: You said: freenode-connect: You said: VERSION 23:27:13 -!- Endeavour has joined. 23:27:13 -!- Endeavour has quit (Remote closed the connection). 23:27:26 -!- Endeavour has joined. 23:27:35 Now you must be awesome. No talking to yourself! 23:27:35 ehird: You said: Now you must be awesome. No talking to yourself! 23:27:43 Don't talk back to me. 23:27:43 ehird: You said: Don't talk back to me. 23:27:51 Grr! You little sh*t. 23:27:52 ehird: You said: Grr! You little sh*t. 23:27:53 -!- Endeavour has quit (Remote closed the connection). 23:27:55 Take that. 23:45:52 <.< 2008-04-14: 00:01:21 -!- oerjan has quit ("Good night"). 00:06:00 -!- jix has quit ("CommandQ"). 00:23:12 -!- Endeavour has joined. 00:23:13 bother ehird 00:23:13 Hey, bother ehird! 00:23:17 HAHAHAHAHAHAHAHA 00:23:30 -!- Endeavour has quit (Remote closed the connection). 00:23:36 -!- Endeavour has joined. 00:23:36 bother ehird 00:23:37 Oi ehird! 00:23:38 bother ehird 00:23:38 ehird! 00:23:39 bother ehird 00:23:39 Oi ehird!!! 00:23:42 ping ehird 00:23:42 Hey, ehird!!! 00:23:47 good 00:24:23 -!- Endeavour has quit (Remote closed the connection). 00:39:49 -!- Endeavour has joined. 00:39:51 abc 00:39:55 .seen ehird 00:39:55 ehird: I last saw %s on %s%s, saying "%s" 00:39:55 -!- Endeavour has quit (Remote closed the connection). 00:40:50 -!- Endeavour has joined. 00:40:51 .seen ehird 00:40:51 ehird: I last saw ehird on 2008-04-14 at 00:40 in #esoteric, saying ".seen ehird" 00:41:52 .seen abc 00:41:52 calamari: I haven't seen abc. Sorry! 00:41:57 .seen 00:41:57 calamari: I haven't seen . Sorry! 00:42:04 .seen Endeavour 00:42:04 ehird: I haven't seen Endeavour. Sorry! 00:42:15 .seen \n 00:42:15 calamari: I haven't seen \n. Sorry! 00:43:16 .seen 00:43:16 calamari: I haven't seen . Sorry! 00:43:59 .seen bot abusers 00:43:59 ehird: I haven't seen bot abusers. Sorry! 00:44:01 liar 00:45:28 wow.. you are hostile towards your beta testers.. must be M$ 00:45:32 calamari: :D 00:45:41 just kidding, of course 00:46:01 I know 00:46:37 -!- Endeavour has quit (Remote closed the connection). 00:47:01 -!- Endeavour has joined. 00:47:03 .seen ehird 00:47:03 ehird: I haven't seen ehird. Sorry! 00:47:05 .seen ehird 00:47:05 ehird: I last saw ehird on 2008-04-14 at 00:47 in #esoteric, saying "ehird" 00:47:11 ... Oh lulz 00:47:37 -!- Endeavour has quit (Remote closed the connection). 00:47:45 -!- Endeavour has joined. 00:47:47 hello world 00:47:48 .seen ehird 00:47:48 ehird: I haven't seen ehird. Sorry! 00:47:51 WTF 00:47:53 .seen ehird 00:47:53 ehird: I last saw ehird on 2008-04-14 at 00:47 in #esoteric, saying ".seen ehird" 00:48:00 That's messed :D 00:48:03 .test 00:48:05 .seen Sgeo 00:48:05 Sgeo: I last saw Sgeo on 2008-04-14 at 00:48 in #esoteric, saying ".test" 00:48:11 -!- Endeavour has quit (Remote closed the connection). 00:48:18 adding debugging stuff... 00:48:19 -!- Endeavour has joined. 00:48:22 test 00:48:24 .seen ehird 00:48:24 ehird: I haven't seen ehird. Sorry! 00:48:26 oic 00:48:41 -!- Endeavour has quit (Remote closed the connection). 00:48:55 -!- Endeavour has joined. 00:48:56 test 00:48:57 .seen ehird 00:48:57 ehird: I last saw ehird on 2008-04-14 at 00:49 in #esoteric, saying "test" 00:49:01 \o 00:49:03 o/ 00:49:04 \o/ 00:49:18 .seen Sgeo 00:49:18 Sgeo: I haven't seen Sgeo. Sorry! 00:49:20 .seen Sgeo 00:49:21 Sgeo: I last saw Sgeo on 2008-04-14 at 00:49 in #esoteric, saying ".seen Sgeo" 00:49:29 .seen Endeavour 00:49:29 ehird: Endeavour? Who's he? 00:49:29 ehird: I haven't seen Endeavour. Sorry! 00:49:32 It doesn't see people who don't talk? 00:49:33 oops 00:49:39 Sgeo: No. 00:49:45 Why should it? 00:50:11 Because what you're doing more closely corresponds with a "lastspoke" than a "seen 00:50:12 " 00:50:24 Sgeo: A lot of bots 'seen' is like that 00:51:25 -!- Endeavour has quit (Remote closed the connection). 00:51:31 -!- Endeavour has joined. 00:51:31 .seen ehird 00:51:32 ehird: I last saw you on 2008-04-14 at 00:50 in #esoteric, saying "Sgeo: A lot of bots 'seen' is like that" 00:51:47 .seen olsner 00:51:47 olsner: I haven't seen olsner. Sorry! 00:51:50 FWIW, seen.py is only 41 lines 00:52:14 41 lines? that's 40 lines longer than a one-liner! 00:52:26 olsner: And good catch, fixing that 00:52:27 -!- Endeavour has quit (Remote closed the connection). 00:52:33 -!- Endeavour has joined. 00:52:34 .seen olsner 00:52:35 olsner: I last saw you on 2008-04-14 at 00:52 in #esoteric, saying "41 lines? that's 40 lines longer than a one-liner!" 00:52:50 http://rafb.net/p/AAHTnD16.html seen.py 00:52:56 .seen lament 00:52:56 ehird: I haven't seen lament. Sorry! 00:53:00 .seen ehird 00:53:00 ehird: I last saw you on 2008-04-14 at 00:53 in #esoteric, saying ".seen lament" 00:53:01 Ehh 00:53:07 Someone use seen on themselves that haven't talked before 00:53:09 pikhq: You. 00:53:18 .seen 89¨ª•¨å•ª¨·‚ 00:53:18 -!- Endeavour has quit (Remote closed the connection). 00:53:22 LOL 00:53:45 you seem to be having a wee bit of a data validation problem there :P 00:54:20 it's easy to track parts/quits 00:54:52 calamari: sure it is but why would i 00:55:08 It doesn't see people who don't talk? 00:55:17 Fine fine fine 00:55:20 :P 00:55:36 BUT tomorrow 00:55:38 Today I must go 00:55:50 also people who are in the chan 00:56:02 actually, I think only counting talking is quite sensible 00:56:36 -!- ehird has quit ("This computer has gone to sleep"). 00:57:11 lots of people idle on IRC when they leave/sleep/work rather than shut down their clients 00:57:49 olsner: also people who are in the chan ;) 00:58:04 but I see your point 00:58:34 "the last time we knew this person was alive" is what ehirds bot currently does.. 00:58:56 * Sgeo would call that a lastspoke, not a seen 00:59:08 actually that's probably more useful... hmm 01:06:39 -!- timotiis has quit (Read error: 110 (Connection timed out)). 01:39:37 Me? 01:42:27 pikhq: you were supposed to say ".seen pikhq" before saying anything else, to test the bot 01:43:48 Ah. 01:43:51 .seen pikhq 01:44:15 And the bot's not here. 01:45:13 * SimonRC goes to bed 01:47:23 g'night SimonRC 03:25:11 -!- RodgerTheGreat has joined. 03:25:14 howdy, folks 03:26:20 Hello sir 03:26:35 'sup, Slereah? 03:29:46 -!- Slereah has quit (Read error: 104 (Connection reset by peer)). 03:37:26 -!- Visitor-51A12C has joined. 03:37:50 What's new is, I have a bad connection 03:37:54 -!- Visitor-51A12C has changed nick to Slereah. 03:43:06 -!- bsmntbombdood has quit (Read error: 110 (Connection timed out)). 03:43:28 -!- bsmntbombdood has joined. 05:21:28 -!- Judofyr has quit (Read error: 110 (Connection timed out)). 06:41:44 -!- Judofyr has joined. 06:43:53 -!- sebbu has quit (Connection timed out). 06:57:04 -!- calamari has quit ("Leaving"). 07:15:18 -!- Judofyr has quit. 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:40:02 -!- Iskr has joined. 08:45:59 -!- sebbu has joined. 09:18:53 -!- Sgeo has quit (Remote closed the connection). 10:30:54 -!- oklopol has joined. 10:42:49 words = ["head" "neck" "eye" "foot"] 10:42:51 match a b = if a == b then 0 else 1 10:42:53 sim [] [] = 0 10:42:55 sim a:as b:bs = match a b + sim as bs | 1 + sim as b:bs | 1 + sim a:as bs 10:42:57 :: sim "hed" \words 10:43:30 genetics-based language for trying to find the values / choice tree for least numeric result 10:45:29 should return "head", with 'h' == 'h' => 'e' == 'e' => drop 'a' from "head" => 'd' == 'd' 10:45:41 this information should be given as result 10:46:16 probably could hack something like this up, with exponential search time to make it always find the best result 10:46:57 also might be possible to automatically find the perfect solution for something that simple 10:47:59 automatically find the perfect solution for finding the perfect solution that is 10:48:07 ... 10:48:12 automatically find a good solution for finding the perfect solution that is 10:48:52 i think this corresponds to one of the known similarity metrics of strings 10:48:55 dunno 10:50:50 well... i think with memoizing this would be O(n^2), but a lot of memory would be used 10:51:33 so perhaps it could just realize we've always dropped a certain number of chars from the beginning, and just memoize the pair of these numbers 10:52:16 now, realizing the pairs are (0..len(a), 0..len(b)) lets us use a matrix for memoization, actually giving us that one dynamic programming algo for this! 10:52:17 i think 10:52:47 someone who knows anything, tell me where i failed 10:53:57 if it's that simple, it might have been possible to deduce the algo from just that definition, which actually suggests this might be useful 10:54:50 well, it's essentially an extension to prolog, ofc 10:55:24 except everything is made a function again... prolog does this same thing, except there, functions just return 0 or 1, so the number doesn't actually need to be seen 10:56:03 i think 10:56:10 i don't really know anything 10:56:29 so everyone's asleep? 10:56:41 olo 10:59:13 dsb rh rg gszg zoo xszmmvoh zodzbh hovvk zg gsv hznv grnv vevm gskfts r'n lm xszmmvoh zoo zilfmw gsv dliow? 10:59:18 also, god i'm slow 10:59:25 learned the chart this moning 10:59:27 *morning 10:59:43 took less time than writing that sentence :D 11:00:39 should learn char-number pairs, would be nice to be fluent in all caesar 11:02:13 -!- oklopol has set topic: http://bespin.org/~nef/logs/esoteric/ --> .pr UPPER .pr STRING p=".pr UPPER .pr STRING p=?;print(p[:22]+REPR 34+p+REPR 34+p[24:])";print(p[:22]+REPR 34+p+REPR 34+p[24:]) --> this_is_an_oklotalk_quine. 11:02:52 "hey, perhaps i should use my morning by writing an oklotalk quine so i get some semantics on strings!!" 11:02:59 "oh, right..." 11:04:33 i guess it's not technically a quine, because that's not printed to stdout 11:04:41 don't really know the definition 11:04:47 that's a repl quine 11:50:34 -!- jix has joined. 12:02:44 -!- oklopol has quit (Read error: 110 (Connection timed out)). 12:29:06 -!- UnrelatedToQaz has joined. 12:31:06 hey all 12:41:03 -!- timotiis has joined. 13:05:02 -!- Iskr has quit (Read error: 110 (Connection timed out)). 13:08:15 -!- Vintersorg has joined. 13:08:26 -!- Vintersorg has left (?). 13:23:49 -!- Iskr has joined. 13:46:20 Deewiant, http://rafb.net/p/a5bUjK70.html <-- stuff are now autogenerated from lists like that :) 13:46:38 including the main list of available fingerprints 14:15:43 -!- UnrelatedToQaz has quit ("ChatZilla 0.9.81 [Firefox 2.0.0.13/2008031114]"). 15:34:48 -!- timotiis has quit (Connection timed out). 15:45:54 -!- timotiis has joined. 15:58:31 -!- oklopol has joined. 16:03:28 -!- Corun has joined. 16:23:14 -!- ehird` has joined. 16:23:32 -!- ehird` has left (?). 16:26:22 -!- Corun has quit ("This computer has gone to sleep"). 16:26:45 -!- oklopol has quit (Read error: 113 (No route to host)). 16:26:51 -!- oklopol has joined. 16:27:26 -!- timotiis has quit (Client Quit). 16:31:05 -!- Corun has joined. 16:36:47 -!- asiekierka has joined. 16:36:53 What happened to the Wiki? 16:37:15 It has more database errors than usual! 16:37:26 i can't even OPEN it 16:37:30 it just 404's or something 16:39:50 hello? 16:39:56 Wot? 16:47:04 i can't get to the wiki 16:47:23 i can't either 16:47:27 i just imagine it 16:48:47 -!- Sgeo has joined. 16:54:01 -!- asiekierka has quit (Read error: 104 (Connection reset by peer)). 16:59:34 Are there any database-based esolangs around? 16:59:40 No, I'm not counting SQL >.> 17:00:06 Also, esolangs.org/wiki 's search is erroring 17:00:19 i don't think there are 17:00:50 * Sgeo is designing one in his head, although the way it does conditionals is rather ugly thus far 17:01:19 do share it 17:01:44 personally, i hate sql 17:01:47 There are a bunch of special tables 17:02:11 time is tracked as a branch and a time 17:02:12 special tables used for flow control? :D 17:02:21 what does that mean 17:02:48 there's a pl_nextime table with branch,time as a primary key, which indicates the next branch and time to go to after that branch and time is done 17:03:10 there's a table for memory, which is 2-dimensional 17:03:33 mem.x = 0 doesn't exist, it's used to specify constants 17:04:02 there's a pl_todo table, with branch,time as primary key 17:04:14 and other fields: command, destx, desty 17:04:30 command is the command, like '+ 17:04:36 '+' or 'frommem' 17:04:58 destx and desty are the destination in the memory table for the result 17:05:17 there's a pl_args with primary key: branch,time,argnum 17:05:27 and other fields memx,memy 17:05:42 which specify where from memory to pull the argument 17:05:54 or memx can be 0 to specify that memy is a constant 17:06:42 -!- oklofok has joined. 17:06:57 oklopol, um, did you get what I said, or did you ping out or something? 17:07:48 i pingered out after memory to pull the argument 17:08:34 or memx can be 0 to specify that memy is a constant 17:08:34 hmm so 17:08:45 assembly with commands stored in a database, somewhat? 17:08:47 -!- oklopol has quit (Read error: 113 (No route to host)). 17:09:15 Um, I don't think quite like assembly 17:09:16 not sure 17:09:49 hmm 17:10:03 times are numbers of operations executed at a certain point? 17:10:13 or actually time 17:10:13 ? 17:10:47 time goes sequentially unless specified otherwise in pl_nextime. You can only execute one command at a given time. 17:11:44 so direct correlation between time and number of operations executed, that was what i meant 17:12:12 anyway, basically, you will have to build new code as you go 17:12:44 oklofok, you don't HAVE to do that. You can using the frommem command, but you can just specify everything in the database beforehand too. 17:12:47 if you allow for multiple operations per one tick, you can probably do something 17:12:57 frommem? 17:13:13 you can't have infinitely many tuples in the database, can you? 17:13:20 if you can, indeed, you don't have to do that 17:13:45 oklofok, or for loops, just specify an entry in pl_nextime 17:13:59 what's that mean 17:14:18 Say I want an infinite loop, and branch,time starts at 0,0 17:14:26 there are 5 operations I want to do in a loop 17:14:39 pl_nextime contains [0,4,0,0] 17:15:09 saying that at the end of 0,4 go to branch/time 0,0 17:15:23 ah you can rewind time 17:15:34 yes 17:16:16 i'm still not entirely sure how exactly evaluation works 17:16:25 try being a bit more formal 17:16:35 what do the tuples contain, and how is evaluation done 17:17:30 evaluation is done by looking at pl_todo for the current branch,time 17:17:46 then pulling all the arguments from pl_args 17:17:59 what does "current branch,time" mean? 17:18:18 the entry stored in pl_time 17:18:18 is this a 2-tuple set to 0,0 at the beginning of the program, and moved in a funge-like fashion to some direction? 17:18:36 oklofok, it's a 2-tuple, and normally just time increases, not branch 17:18:41 okay 17:19:08 branch can change based on pl_nextime though. 17:19:28 * Sgeo just isn't sure how frommem is going to work, though 17:19:35 so, (branch,time) is read from pl_todo, which specifies operation, arguments, and next (branch,time)? 17:19:57 pl_todo doesn't specify the next (branch,time) 17:20:05 so we're dealing with a two-dimensional assembly where the 2d array is stored in an associative map? 17:20:06 hmm 17:20:07 that's done in pl_nextime 17:20:11 *associative array perhaps 17:20:24 and todo would be what? 17:20:37 todo is the list of commands, one for each branch,time 17:21:26 pl_nextime is also indexed by (branch,time) 17:21:26 ? 17:21:31 yes 17:21:58 it is assembly then, pretty much. 17:22:29 (not trying to crush your dream, just trying to be realistic :P) 17:23:20 Does this mean I should stop bothering, or should I keep working on this? 17:23:31 well 17:23:42 you might wanna try adding some relational algebra 17:23:54 and perhaps derive something computationally interesting from that 17:24:24 you could have just trivial operations, and do more by joining and cutting tables 17:24:26 or smth 17:24:37 do you know relational algebra? 17:24:39 no :( 17:24:48 do you know sql? 17:25:43 a bit 17:25:53 sql is a kind of mix of relational algebra and calculus, imo you should learn both, and then try making your own lang 17:26:01 I'm planning on one of the commands being "sql" 17:26:11 where the program can run arbitrary sql 17:26:22 well i somewhat guessed 17:26:26 memory holds tables? 17:26:45 pl_mem hold single values in a 2-dimensional array 17:26:48 actually 17:27:05 there is a frommem command that can pull values from memory and put it into arbitrary tables.. 17:27:16 you could probably have flow control be based on quining, or something, making new programs with operations on the tables 17:27:17 dunno 17:27:19 hmm 17:28:57 hehe, i love yellow journalism, how could i have lived without knowing someone *scratched their ass in america* http://www.iltasanomat.fi/viihde/uutinen.asp?id=1518906 17:29:15 about pamela anderson scratching their ass with a set of keys 17:32:47 -!- Corun has quit ("This computer has gone to sleep"). 17:33:13 Sgeo: i'm always a bit sceptic when it comes to people's first esolangs, i recommend you keep on it, but my suggestion for making a database-based esolang is 1. learn sql, relational calculus and algebra and play with 'em 2. just add simple functionality, in most cases, an esolang should be small 3. don't use an existing language and just built a separate evaluation layer on it, that's a teensy bit lame 17:34:06 and, well, i suggest you look at the existing body of esolangs, and actually try to use them, a language creator should know languages 17:34:59 to be a good esolang designer, you need to understand how a simple language can be extended with functionality from scratch... languages like that are the most interesting ones 17:36:11 also, wouldn't hurt trying to make a few brainfuck/unlambda clones or smth, in your case brainfuck, most have done that, it's nice not to have to do anything revolutionary right away, one will probably just go very wrong. 17:36:44 * Sgeo made a BF-RLE, does that count? 17:36:48 hmm 17:36:54 what's that? 17:36:55 Or do you mean with the database thing? 17:36:55 don't remember 17:37:03 database + brainfuck 17:37:08 why not 17:38:36 BF-RLE = BF stripped of comments, and each character can be followed by a number in base-62, the number is the number of times the character appears in a row at that point minus 3. 17:38:52 It's on the wiki, but wiki doesn't seem to be working. 17:39:01 ah, right 17:39:02 that one 17:41:13 who maintains the esowiki? 17:41:20 "from within function "MediaWikiBagOStuff::_doquery". MySQL returned error "1194: Table 'mw_objectcache' is marked as crashed and should be repaired (localhost)"." 17:42:08 graue 17:42:12 dunno 17:42:16 i think it's him 17:42:41 yarr 17:44:27 * Sgeo emails 17:46:40 -!- asiekierka has joined. 17:46:42 hi 17:49:13 yug 17:49:33 Hi asiekierka 17:52:12 I'd like a programming language that you can program with just using 4 buttons + a D-pad 17:52:20 (esoteric) 17:53:32 whuzza d-pad 17:54:24 directional pad 17:55:53 asiekierka, can't be too difficult to make YABFC 17:56:04 18:07:24 -!- asiekierka has quit (Read error: 104 (Connection reset by peer)). 18:15:19 -!- oklofok has changed nick to oklopol. 18:19:32 -!- Corun has joined. 18:20:12 Hi Corun 18:29:01 Er, hi. 18:46:12 -!- Corun has quit ("This computer has gone to sleep"). 18:46:58 well that lasted 18:48:36 What's SQL concatonate? 18:48:37 ||? 18:48:44 sometimes 18:49:52 What is it for MS SQL Server? 18:50:06 dunno 18:50:40 concatonating sounds a bit like concatenating, but at the same time detonating, perhaps 18:50:46 so i'd say overall, it's a nop 18:50:59 i think i'm using overalls wrong 18:51:00 lol oklopol 18:51:08 GregorR already busted me about it once 18:51:19 I think MS SQL can use '+' to concatenate strings. 18:51:36 Could be wrong, though. 18:52:18 -!- ais523 has joined. 18:52:34 oh, about the wiki: it seems to be down, and I've emailed graue 18:52:58 you can still access the wikitext of a page, however, by typing in http://esolangs.org/wiki/name_of_page?action=raw&ctype=text/css 18:53:59 http://support.encoreusa.com/kb.asp?id= seems to be vulnerable to SQL injection, it expects a number in a "WHERE id=" way 18:54:25 lots of things are vulnerable to SQL injection 18:54:58 (I remember the story about the person who used '; DROP DATABASE; -- as their standard password, but stopped after one website they came to actually crashed when they tried to create an account) 18:55:17 "Little Bobby Tables." 18:55:35 http://xkcd.com/327/ 18:55:36 http://support.encoreusa.com/kb.asp?id=0%20OR%20'x'='x'%20ORDER%20BY%20id%20DESC last article in the kb 18:55:38 fizzie: that's a different story, a well-known cartoon that probably never happened in real life 18:56:02 Sgeo: you mean it allows SQL injection in the URL? That's a new one as far as I'm concerend 18:56:09 although I'm not particularly surprised 18:56:21 I've seen it before in an FAQ 18:56:52 alas ; is forbidden 18:56:55 Although SQL injection in that faq was a bit more fun, you could actually do useful things like combining all the questions from categories 18:56:56 any way round that? 18:57:16 you could use a subquery, I suppose 18:57:25 but I don't know enough SQL to write one 18:57:36 I think this thing is using some sort of LIMIT 1 18:57:42 -!- jix has quit (Nick collision from services.). 18:57:52 -!- jix has joined. 18:58:27 Can't seem to get rid of it 18:58:44 not even using --? 18:59:16 http://support.encoreusa.com/kb.asp?id=553%20OR%20id=554;-- 18:59:32 what happens? 18:59:33 multi-line query? 18:59:55 -- only goes up to the next newline IIRC 19:00:06 ais523, nothing special happens 19:00:14 * ais523 is musing about the text/css in the URL above 19:00:22 text/css shows like plaintext in all commonly-used browsers 19:00:27 whereas text/plain doesn't 19:00:35 huh? 19:00:59 it's forbidden as a ctype on Wikimedia because IE will run it as JScript under some circumstances 19:01:07 WTF? 19:01:08 ! 19:01:08 making it possible to avoid XSS restrictions 19:01:12 Huh? 19:01:14 hah 19:01:18 EgoBot: indeed 19:01:23 * ais523 agrees with EgoBot too 19:01:27 Can subqueries be run in a select clause? 19:01:38 *shrug* 19:02:02 Sgeo: don't do anything illegal, you might get in trouble for deleting entries or something like that 19:02:14 I guess using where whatever IN some_select_clause 19:02:25 But that's not too useful if I want to get a COUNT(*) 19:02:59 I don't even know the table name 19:05:13 * Sgeo learns both the table name and a column 19:05:17 http://support.encoreusa.com/kb.asp?id=0%20OR%20'x'='x'%20GROUP%20BY%20id 19:05:48 by guessing the column name? 19:06:01 kb.problem_statement 19:06:07 kb.solution_text 19:08:28 ais523, the SELECT isn't a * 19:08:50 The fields in there are illegal since they're not in a GROUP BY 19:09:01 and the GROUP BY was specified 19:09:04 (in my query 19:09:15 Now I can search for the first article to contain, say CD 19:09:17 * ais523 just came across this quote: "I don't want to implement it correctly. I want to maintain all the hideously poor design of the original, but in a language people may actually have compilers for." 19:10:15 Ok, what's the LIKE syntax for MS SQL Server? 19:17:29 it seems nobody here knows, you may have to look it up somehow 19:18:01 Sgeo: the same as usualy? 19:18:03 usual 19:18:09 oklopol, tried it, doesn't work 19:18:49 http://support.encoreusa.com/kb.asp?id=0%20OR%20solution_text%20LIKE%20'%Error%' 19:25:36 * Sgeo decides to upgrade to Fx3 19:26:23 Or maybe later 19:28:24 Firefox 3? Where? 19:29:33 it's still in beta IIRC 19:29:50 but early-adoption-style beta, I think 19:32:43 is it very different? 19:34:05 it's apparently much better in terms of memory usage 19:34:10 and much faster at JavaScript 19:34:20 which are two of the most commonly-heard criticisms of Firefox 2 19:34:31 JITted javascript? 19:35:09 I don't know the details 19:35:21 hmm... 19:35:29 * Sgeo can't find the DL 19:36:06 mmm, partially-precompiled JITted Javascript with big fat libraries 19:36:10 n/m 19:36:22 Javascript is in some ways a nice language than Java 19:36:37 it has more oomph in its closure system for a start 19:37:15 Javascript is a nicer language than Java in more or less every way 19:37:41 I like its object orientation model too, I think it's my favourite OO model out of all the ones I've come across even though it flies in the face of the usual theory 19:38:16 (there's no distinction between an object or a class the way I write JavaScript, you can derive from anything to get a new object) 19:38:26 now, if only there was a simple way to do multiple inheritance... 19:38:31 aka. prototype-based programming 19:38:56 ais523: is there a method that gets called if another method isn't found? 19:39:19 I don't think so 19:39:49 methods are just properties with a closure as their value, anyway 19:40:02 that you don't change except to override them 19:45:36 * Sgeo downloads and unpacks Firefox3b5, and changes some shortcut-like-thing-tat-he-always-usez 19:46:35 http://en-us.www.mozilla.com/en-US/firefox/3.0b5/whatsnew/ pretty page 19:47:18 what a pity; the method-not-found method is a powerful tool 19:47:22 Lua has it, for example 19:47:34 The font seems different 19:47:58 SimonRC: Perl has it too, but I don't like the implementation 19:48:05 Neat easy bookmarking feature 19:52:11 looking at the release notes, I see that it now prompts to save tabs on exit 19:52:34 I've been doing that for a while by closing Firefox with SIGHUP rather than exiting, which fools it into thinking it's crashed, when I want to save the tabs 19:53:00 it's quite retarded you have to do it that way 19:53:02 i do that to 19:53:03 too 19:53:11 isn't there another way? 19:53:21 Flash doesn't seem to want to install 19:53:22 Grr 19:53:48 oklopol: yes 19:53:56 SIGKILL works too 19:55:11 SIGHUP is easy to send, though 19:55:19 -!- Corun has joined. 19:55:25 I just press the power button, which SIGHUPs everything and does a controlled shutdown 19:55:36 lol 19:56:44 SimonRC: can you given an example of what you use method-not-found for? I saw a Perl program once that used it to gain all shell commands as methods, but I suspect that isn't a typical use of it 19:57:46 well, you can fake multiple inheritence and do elegant delegation with it 19:58:21 any non-found methods are delegated to the secondary parent or the delegate 19:59:25 * Sgeo can't seem to get flash to work 19:59:26 -!- Corun has quit (Client Quit). 20:01:22 Sgeo: you probably don't /want/ Flash to work 20:01:30 ais523, YouTube 20:01:33 Flash was working here fine a while ago, but I got fed up of it and uninstalled 20:01:41 * ais523 never visits YouTube 20:02:12 * SimonRC found a good use for flash: http://armorgames.com/play/107/portal-the-flash-version 20:04:17 How do I get flash on 3b5? 20:04:41 I recommend contacting your local witchdoctor. 20:04:51 same way you'd get it on 2? 20:04:55 you will need a large black cock 20:04:58 Giving a byte-count while loading without a progress bar = retardo 20:05:00 s/cock/rooster/ 20:05:37 a byte-count is much easier to code :-) 20:06:12 Deewiant: depends on what language you're coding in 20:06:21 a progress bar would be much easier than a byte-count in Underload, for instance 20:06:31 huh? 20:06:33 why? 20:06:50 because byte-count means you have to translate numbers into decimal 20:06:54 progress-bar works in unary 20:07:03 >_< 20:07:06 heh 20:07:08 :D 20:07:44 ais523: giving a unary byte-count would qualify as a progress bar as well, though, so they're at least equally easy ;-) 20:07:49 of course, both are impossible without allowing some sort of input... 20:07:56 hmm, s/least/most/ 20:08:14 Yay it works 20:09:20 Sgeo: for future reference, what did you do? 20:09:37 Installed from the file available from the Flash site 20:09:59 Instead of having Firefox do the installation from that "Missing Plugins" thing 20:33:20 SimonRC, the mouse is always unreasonably slow for me in that game 20:43:22 -!- ais523 has quit ("(1) DO COME FROM ".2~.2"~#1 WHILE :1 <- "'?.1$.2'~'"':1/.1$.2'~#0"$#65535'"$"'"'&.1$.2'~'#0$#65535'"$#0'~#32767$#1""). 21:04:25 -!- ehird` has joined. 21:04:53 best oklotalk quine ever 21:05:02 oklopol: ello 21:05:06 -hello 21:09:27 hi 21:11:09 oklopol: unfortunately i am not on my mac so i do not have INTERESTING OKLOTALK CODE 21:11:12 but did you submit it? 21:11:26 uhhm? 21:12:04 i supermitted it. 21:15:19 heh 21:15:22 any info back? 21:15:31 did they vomit upon seeing the lenient syntax? 21:15:39 OKLOTALK: EXPRESSIVENESS, POWER AND VOMIT 21:15:45 about the quine... by the same logic, is a quine in most (functional) languages... but still fun 21:16:00 oooh 21:16:08 submitted the interp, ah 21:16:21 had no idea what you meant :P 21:16:27 didn't yet. 21:16:57 but they will probably be very underqualified to say *anything* about it. 21:17:00 oklopol: sheesh. can i at least look at the code now? ;) 21:17:16 didn't even submit yet! 21:17:27 I love this message: WARNING: `missing` script is too old or missing 21:17:28 not before that at least, okay? 21:17:45 oklopol: aww, ok 21:17:57 oklopol: can i independently implement it 21:17:57 :DD 21:18:05 lofl :) 21:18:10 if you link to the pastebin of the primitives i will 21:18:14 noooooooooooooooooooooooooooooooo 21:18:20 oklopol: but you pastebinned it earlier 21:18:23 make your own langs :) 21:18:25 i could just look at the logs 21:18:27 yarrr 21:18:35 i can resend it 21:18:41 so there's no stopping me you could just be a little more helpful :P 21:18:41 the "spec" 21:19:30 -!- Iskr has quit ("Leaving"). 21:19:33 noo, not that 21:19:40 you vjn.fi/pb'd the list of primitive functions 21:19:54 it's there too 21:20:08 :(((( downloading zips make me sad 21:20:09 but ok 21:20:10 :P 21:20:11 :P 21:20:23 well, there isn't really *anything* 21:20:36 oklopol: oh thats not the spec i thought 21:20:41 map, filter (ftr), ! indexes 21:20:42 i meant you vjn.fi/pb'd one 21:20:54 that contains it, i think 21:20:57 look in the end 21:21:03 or middle 21:21:05 dunno 21:21:51 oklopol: doesn't 21:21:56 hmmmm 21:22:12 whhhell 21:22:37 that stuff? 21:34:03 oklopol: well ok 21:34:07 I am now working on... OKOHIRD 21:34:16 it is OKO in PYTHON, but with continuations ETC 21:34:22 yes, OKO 21:34:23 not just oko 21:34:24 OKO 21:38:51 oklopol: is (a b c d) a syntax error? 21:38:57 or is it valid under some contexts 21:39:16 -!- olsner has quit (Read error: 110 (Connection timed out)). 21:39:51 -!- olsner has joined. 21:42:03 -!- ehird1 has joined. 21:42:10 what's this about submitting oklotalk to somewhere? 21:42:17 SimonRC: it's for okoschool 21:42:21 -!- ehird1 has left (?). 21:42:21 its his okoproject 21:42:23 for okoschool 21:42:27 *boggle* 21:42:31 bastard 21:42:34 SimonRC: why 21:42:40 he gets the interesting projects 21:42:43 uh 21:42:46 im pretty sure he chose to do it 21:42:56 yes, that is my point 21:42:58 hes the only one crazy enough to make okotalk 21:43:04 he gets the interesting projects 21:43:17 or rather, he is allowed to do them 21:43:44 I would not have been able to do that for any class 21:45:35 oklopol: oko 21:48:31 oklopol: ping 21:56:02 -!- Tritonio_ has joined. 21:58:37 HEY oklopol ANSWER :P 21:59:34 sometimes there's two of him, other times he's not there at all 22:06:51 oklopol: oko 22:29:12 oklopol: okokokokoko 22:31:05 oh wow, intreactive comic-drawing (check out the post times) http://forums.explosm.net/showthread.php?t=5296&filter= 22:31:25 Old. 22:31:34 I have the two first stories if you want 22:31:41 They were deleted when the forum crashed 22:31:45 in a more convinient format? 22:31:53 * SimonRC likes the post of 09-13-2007, 07:22 PM 22:31:56 like, surreal 22:31:59 It's the forum pages with only the pictures 22:32:14 ok 22:32:14 -!- jix has quit ("CommandQ"). 22:36:44 ehird`: (a b c d) is okay with -> 22:36:50 never otherwise 22:36:58 oklopol: should i treat -> as syntax 22:37:05 i.e. should i make (a b c d) a syntax error 22:37:11 its possible 22:37:35 SimonRC : http://membres.lycos.fr/bewulf/Explosm/ 22:37:42 It's loading, but the first parts are here 22:38:07 ok 22:38:18 yeah it should be a syntax error 22:38:27 SimonRC: the project is fairly free 22:38:49 just has to be related to either computers or media... which can be pretty much anything 22:39:04 ehird`: making oklotalk--? 22:39:18 There's a third story, about a zombie invasion. But the forum crashed while it was written, so I didn't save it. 22:39:27 why not ehirdtalk, we need to see that too :D 22:39:38 oklopol: i will do ehirdtalk too of course 22:39:40 but yes oklotalk-- 22:40:24 whhhell, go for it, but try to make it even worse than mine, so i don't feel so bad. 22:40:31 (impossible? oh well...) 22:40:48 oklopol: but yeah, is it possible to treat -> as special syntax? 22:40:52 hmm 22:40:53 like, will it ever appear in something other than the car 22:41:04 well 22:41:08 it can be used as a normal atom 22:41:14 also is [...] an array or a list 22:41:18 oklopol: but is (a -> b) meaningful 22:41:22 array or a list? 22:41:29 like, implementation of it? 22:41:33 that is not specified 22:41:53 oklopol: what is it called 22:42:05 i call it a list 22:42:15 it's implemented as a normal python array 22:42:23 because it needs random access 22:42:36 so i thought it'd be better that way 22:43:24 anyway, actual oklotalk doesn't even distinguish between a list and a hashmap 22:43:31 because both are just functions 22:43:32 oklopol: but whatsit called 22:43:34 list. 22:43:38 in -- 22:45:19 thing,list,1app,2app,atom(special case: var),int,string 22:45:22 oklopol: those are the oklotalk AST nodes right 22:45:32 well, and 4app for -> i guess 22:45:37 hey, is (-> a b c d e f) ok too? 22:45:43 like, is -> variadic? 22:45:46 i think so 22:46:07 yyes 22:46:27 a is pattern, the rest of the args are how the function is continued 22:46:56 basically, you can make different paths for execution to follow, using pattern matching 22:47:29 oklopol: yes yes 22:47:33 oklopol: ok then, another questin 22:47:40 oklopol: is (-> X) valid? 22:47:42 or just (-> X Y ...) 22:48:09 it should be valid 22:48:22 hmm 22:48:31 oklopol: ok 22:48:47 oklopol: is (X -> Y ...) or similar forms valid, or is (-> X Y Z ...) the only 'pattern match' case 22:48:53 only the latter 22:49:01 -> and = are special this way 22:49:57 you can use (a -> b) and (a = b) to get -> and = to work as normal operators... but well, that'd be retarded, ofc :-) 22:51:38 oklopol: ok 22:51:41 oklopol: is = variadic? 22:51:44 or just: (= a b) 22:51:45 no. 22:51:47 just that 22:51:50 okay 22:51:58 i need to go now, so ask quickly if you have more 22:52:00 oklopol: so, awesome: i'm going to parse (-> a b) as patternnodes 22:52:06 and (= a b) as assignment nodes 22:52:21 oklopol: and, (a b c d) will be a parse error 22:52:25 oklopol: also when will you be back? 22:53:17 hmm 22:53:19 tomorrow :| 22:53:31 it should be a parse error, yeah 22:53:55 you will prolly have the implementation ready by then 22:54:16 bye! 22:54:17 -> 23:04:13 -!- Corun has joined. 23:08:31 -!- timotiis has joined. 23:32:14 http://en.wikipedia.org/wiki/Datalog 23:32:15 discuss 23:38:37 Or don;t 23:38:40 -!- olsner has quit ("Leaving"). 23:46:37 :D 23:50:32 Nobody alive? 23:58:35 hm 2008-04-15: 00:00:52 SimonRC: its interseting 00:00:55 No. 00:01:36 * SimonRC goes to bed 00:01:40 ( o/~ # Pedants. / Hgh / What are they good for? / Designing air-trafic control systems. # ) 00:03:12 -!- Corun has quit ("This computer has gone to sleep"). 00:03:49 SimonRC: bye 00:03:53 Slereah: :P 00:08:11 I wonder what databases have many-to-many as their primitive relationship. 00:08:18 You can do many-to-one and one-to-many based on those. 00:16:43 nobody interested in databases? 00:28:57 * Sgeo is in a database class 00:29:07 http://www.itwire.com/content/view/13339/53/ 00:29:08 Heh. 00:35:58 -!- timotiis has quit (Read error: 110 (Connection timed out)). 00:51:21 Sgeo: Huh? 00:53:30 Why huh? 00:55:25 My good God, my math teacher last year is such a geek. . . 00:55:38 Him and his son are going to the Shadowmoor prerelease tournament. 00:55:53 (they're doing two-headed giant) 00:56:01 Well, he has a son. 00:56:12 So that means that he had sex at one point, I suppose. 00:56:18 He can't be that much of a dork. 00:56:32 Having relations with the opposite gender does not eliminate geekiness. 00:56:48 Does it not? 00:56:54 I have a girlfriend; does that make me un-geeky? 00:57:00 I could market some sort of cure otherwise. 00:57:08 LMAO 00:57:33 It would be like a whore house in a computer lab. 00:58:04 Meanwhile, I'll just be amused that I'm going to a prerelease tournament with my *math teacher*, of all things. :p 00:58:13 Why huh? 00:58:16 your statement made no sense 00:58:19 * Sgeo is in a database class 00:58:29 I'm taking a database class in college. 00:58:33 pikhq: You said that a few days ago. 00:58:34 Sgeo: Oh. 00:58:40 ehird`: Oh. 00:58:49 Sgeo: Let me guess: It's totally full of relational theory 00:58:54 Or.. not. 00:59:08 We just got through Database normalization. 00:59:12 Heh. 00:59:58 Are you here when I'm in here thursday mornings? 01:00:31 I am in here most any day because I have nothing better to do 01:00:39 But define 'morning' in GMT 01:01:04 A bit past 12:30EST actually 01:01:16 So not really even morning where I am 01:01:26 GMT. 01:01:35 I am a timezone bigot! :D 01:01:41 Sgeo, you're currently on EDT. 01:01:46 ;) 01:01:51 * Sgeo is not a time person 01:02:00 EDT, IIRC, is UTC-4. 01:02:55 "Call it what you want, I don't care. I make six figures being a general practitioner with a trade-school bachelor's that, in retrospect, I didn't need. I have never even needed to use high school algebra on the job. Most brilliant mathematicians and computer scientists will be stuck in academia or staff-level drone positions for their entire careers because they don't have any soft skills or business sense. They are forever 01:03:03 That guy is like the cool dude of computing! 01:03:15 He probably has all sorts of popped collars. 01:03:21 And I hate cool dudes. 01:04:02 "I have never even needed to use high school algebra on the job." Apparently, he's never had to do any algorithm more complicated than shell sort. 01:04:12 ;p 01:04:55 Since the last big program I had to write was to treat nuclear physics datas, I had to throw in a little math. 01:05:24 Didn't work though. I suck at C for manipulating files. 01:05:31 "Stuck in academia." Is being in academia as bad as all that? 01:05:46 (oerjan's not here, so I can't really know) 01:07:02 programming pretty much is high school algebra 01:07:14 " 01:07:16 Hey, you computer scientists...you are leaving your "I ride a high horse" comments on a web page that was probably designed, coded, managed, etc, by people who have no need for anything at all beyond basic algebra, so I would say that the article is correct -- it is not much algorithims/math that creates value, it is the thoughtful expression of a process. 01:07:17 Heh. 01:07:23 The comments are so awesome. 01:08:28 Link, please. 01:08:48 lament: but orthogonal to it 01:08:52 -!- kwertii has joined. 01:08:55 same difficulty, but not equals 01:08:56 Already gave it 01:08:59 they overlap of course 01:09:00 http://www.itwire.com/content/view/13339/53/ 01:20:31 " 01:20:31 As an artist who has long been interested in computer programming I'm very interested in the philosophical (ontological and epistemological) aspects of computer programming (including mathematics and language) -but it does seem that (even in the arts) these aspects have become buried deeply out of sight =largely because of academic and commercial interests it seems. 01:20:59 I don't agree with that statement. 01:21:28 I lolled at that statement. 01:21:32 Certainly computer /programming/, as the menial engineering field it has become, shows this flaw, but I don't think it's true of computer /science/ at all. 01:21:48 (That is, I don't think it's true of academia) 01:22:36 Mind you, I'm trying not to lol because of the stupid way this is written :P 01:22:51 not sure what's stupid about that comment 01:22:52 The comments are a gold mine. 01:23:00 It's like a gigantic flamewar. 01:23:31 it's not at all obvious that programming should be related to math 01:23:40 (shouldn't it be related to language instead?) 01:23:56 "I really like cats and programming." 01:23:58 What I find silly about the comment is that the wording there is unnecessary, it's just there to go "OOH I'M SO SMART I'M A PHILOSOPHER BLAH BLAH BLAH" 01:24:12 "computer science" involves math simply because it's a science 01:24:16 GregorR: what's unnecessary there? 01:24:40 GregorR: "ontological" and "epistemological" are real words, they actually mean stuff 01:24:55 I'm not claiming that they don't. 01:25:00 I don't think anything was invented. 01:25:06 I just don't think they add anything to the comment. 01:25:09 Except long words. 01:26:04 "The algorithm is not the essential paradigm of computer science", he proclaims. 01:26:16 Alright. Sort a list without an algorithm. 01:26:21 You have infinite time. 01:26:24 Begin. . . Now. 01:26:46 GregorR: of course they add to the comment. Without them, it would say "i'm very interested in the philosophical aspects of computer programming". 01:26:59 that just makes you sound like a moron who has no idea about philosophy or computer programming 01:27:05 * GregorR bashes his head into the wall. 01:27:28 Instead, it makes him sound like a *well-educated* moron who has no idea about philosophy or computer programming. ;) 01:27:39 *ding* 01:28:04 Why do I ever get into arguments online? Soooo pointless. 01:28:20 i don't understand this at all 01:28:44 "An operating cannot be deterministic" 01:28:47 precise terminology is good 01:28:49 Operating system, rather. 01:29:27 * pikhq laughs his ass off until the end of time 01:29:47 "An operating system does not terminate" 01:29:58 Hrm. I dunno what shutdown -h does. 01:30:06 *Can't* be halting. 01:31:10 ontology is actually a pretty cool subject, ESPECIALLY as it related to computer programming 01:31:28 is code data? or is data code? or is it both at once? :) 01:31:29 It doesn't HAVE to terminate due to internal causes.. 01:31:44 s/related/relates 01:32:22 Sgeo: I can make a deterministic, halting operating system. 01:32:27 Plus, an algorithm doesn't have to terminate either. 01:32:39 And he stupidly assumes that. . . Slereah has that covered. 01:32:55 Hell, the original never terminated! 01:33:07 * pikhq can easily make a deterministic operating system. 01:33:34 Am I allowed to not use any non-deterministic hardware on the computer? :p 01:33:39 so what's an algorithm? 01:33:51 pikhq : Are you going to use any atoms? 01:33:52 A sequence of steps. 01:34:09 Slereah: Fine. Any physical machine will, by its very nature, be slightly non-deterministic. 01:34:16 a sequence of steps? 01:34:23 *series of tube 01:34:23 is a haskell function an algorithm? 01:34:34 Poor definition perhaps, but a fairly intuitive one. 01:34:45 Well, lambda calculus is done by a sequence of step 01:34:50 When applying beta conversion 01:34:55 So I assume that yes. 01:35:08 so reducing LC is done by an algorithm 01:35:16 but LC itself is not an algorithm, it's just an expression 01:35:20 a bunch of symbols 01:35:22 isn't that so? 01:35:29 Well, it also has transformation rules. 01:35:31 True. It's a way of defining algorithms. 01:35:35 They're as important! 01:35:43 pikhq: so what's an algorithm? 01:36:02 presumably not a sequence of steps, because there're no steps in fac n = product [1..n] 01:36:08 no sequence, either 01:36:28 it's a working program, though 01:36:29 A sequence of steps is a good abstraction! 01:36:32 Well, there is at least one! 01:36:33 Imperative programs can be beautiful. 01:36:44 Would you like a formal definition? 01:36:59 is it a useful one? 01:37:08 It's nonexistent, actually. 01:37:17 lament: Yes! There are QUITE A FEW languages based on it.. 01:37:38 I think what that article really talks about 01:37:41 Unless you define 'algorithm' as 'anything that can be expressed in a Turing-complete language'. 01:37:45 is operational vs. denotational semantics 01:37:59 his "process expression" is simply operational semantics 01:38:17 "A logic circuit is an expression of a logical process" 01:39:18 this makes sense 01:39:43 you could talk of the "algorithm" that the logic circuit implements, of course 01:42:24 -!- ehird` has quit (Read error: 104 (Connection reset by peer)). 02:18:50 -!- Slereah has quit (Read error: 104 (Connection reset by peer)). 02:47:13 -!- Slereah has joined. 02:56:36 -!- adu has joined. 03:41:19 -!- Tritonio_ has quit (Remote closed the connection). 04:00:48 -!- adu has quit ("Bye"). 04:56:41 G'night all 04:57:29 -!- Sgeo has quit ("Ex-Chat"). 05:16:22 pikhq: you should see this: http://rodger.nonlogic.org/images/aldez/ 05:18:40 I <3 05:18:52 :D 05:18:55 Now, check this out: http://video.google.com/videoplay?docid=5737070239476680627 05:18:58 (not me) 05:19:00 it's the intro to a game I'm making 05:19:09 (just totally fucking awesome) 05:19:16 I own his CD, "The art of motion" 05:19:17 and yes 05:19:54 Ah. Good taste. 05:26:05 * RodgerTheGreat is listening to Hiphopopotamus Vs. Rhymenocerous (Featuring Rhymenocerous And The Hiphopapoatumus) by Flight Of The Conchords from Flight Of The Conchords (Original Staging) 06:06:03 i'm the hiphoppopotomus! My lyrics are bottomless! ........... 06:07:02 Bloody hell. I think I can go to be, and then find out that I need to do laundry. 06:07:07 There goes my sanity tomorrow. 06:07:42 Rarely do you see so many words have so little meaning. 06:08:06 Never read a paper by a liberal arts major, have you? 06:08:12 Heh :P 06:09:23 "And thus, we can conclude that the underlying symbolic metaphor of the /Mona Lisa/ is a misogynistic tyrade against all women everywhere, by giving a simple example of feminine beauty for all to despise." 06:09:31 (translation: I am full of shit.) 06:09:58 -!- calamari has joined. 06:16:41 hi 06:24:07 GregorR: you here? 06:27:08 pikhq: spoilers beware, but I've added the frames for the end of the demo we're finishing this week: http://rodger.nonlogic.org/images/aldez/ 06:32:46 calamari: Not very, but a bit. 06:33:08 GregorR: you need a site map :P ls -R would work in a pinch.. hehe 06:33:20 location of egobot? 06:33:24 Site map? My site needs any sort of organization at all :P 06:33:29 EgoBot is on the Eso files archive. 06:33:33 ahh ok 06:33:35 thaks 06:33:50 i need to rip off part of your code since I'm too lazy to write it myself 06:34:16 It's in C++. 06:34:24 Well, it's in extremely C-ish C++. 06:34:42 yeah 06:35:00 been messing around with a qemu sandboxed mini linux 06:35:22 got it booting up and starting telnetd so now I just need to add the bot wrappers 06:36:06 ooh 11.1 MB getting bigger 06:37:04 I should probably provide a C compiler tho.. what do you think? right now it only has python 06:38:20 wonder how much that'll bloat it 06:44:56 Use tcc 06:45:01 gcc = much bloat, tcc = tiny 06:57:27 good idea 06:58:14 I'll have to figure out how to cross compile that for uclibc 07:02:50 Oh 8-O 07:02:53 G'luck :P 07:18:13 calamari: So, why did you randomly find me on [shivers down the spine] facebook? 07:20:17 GregorR: I was checking to see if anyone I knew was in the esoteric group 07:20:35 so then I searched for a few people in the chat room 07:20:43 you were the lucky one ;) 07:21:11 yeah facebook is pretty lame 07:21:50 I only joined it because IBM promoted it for something, don't even remember now 07:35:03 -!- kwertii has quit ("bye"). 07:37:33 -!- Iskr has joined. 07:46:24 -!- calamari has quit ("Leaving"). 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:06:47 -!- olsner has joined. 10:08:37 -!- jix has joined. 11:10:00 -!- oklopol has quit (Read error: 104 (Connection reset by peer)). 11:10:10 -!- oklopol has joined. 11:33:26 -!- Corun has joined. 12:49:55 -!- Corun has quit ("This computer has gone to sleep"). 13:02:23 -!- timotiis has joined. 14:39:17 -!- Corun has joined. 15:57:17 -!- Corun has quit ("This computer has gone to sleep"). 16:47:03 -!- Corun has joined. 17:02:37 -!- Corun has quit (Read error: 104 (Connection reset by peer)). 18:42:03 -!- ehird` has joined. 18:42:06 -!- ehird has joined. 18:42:21 -!- ehird` has left (?). 18:50:49 oklopol: oko 18:51:12 -!- timotiis has quit (Connection timed out). 18:53:14 -!- oklofok has joined. 18:56:44 oklofok: oko2 18:57:45 -!- jix has quit (Nick collision from services.). 18:57:55 -!- jix has joined. 18:59:56 gto 18:59:58 jh 19:00:13 oklofok: unfortunately noooo okohird YET 19:00:23 didn't work on it much after you left, got distracted :( 19:00:29 however, i will continue the parser 19:01:17 oklofok: it will have crazily cool parse errors though 19:01:25 like (a) -> 'Application with <2 expressions' 19:01:37 ( -> 'EOF while parsing application' 19:01:50 oklofok: OH, and my cons has a bug 19:01:57 [$pb :] should be [$pb $:] if i am not mistaken 19:02:08 hmm 19:02:10 yes. 19:02:36 oklofok: when making oklotalk i suggset trying to cut down on the $ and []s 19:02:38 they're quite ugly 19:03:06 [] is implicit in oklotalk 19:03:22 and $ was originally §, but wasn't ascii so i changed it 19:03:28 indeed, i don't like $ 19:03:31 §atom 19:03:35 i liked that 19:05:12 oklofok: [] is implicit -- can;t you find a way to add elegant multi-arg funcalls to the APL-style? 19:05:14 would be really neat 19:05:26 oklofok: and it's more having to mark it full stop, really 19:06:30 http://xkcd.com/329/ 19:06:39 whaddya mean 19:06:59 oklofok: look at my cons code 19:07:07 replace $ with any symbol - its still too much 19:07:29 it will need some good thinking to work out how to cut them down though 19:08:12 what did you mean by that apl thing 19:08:26 oklofok: like, instead of passing around lists when you want to pass like 5 arguments 19:08:33 find out a way to actually have 5(etc)-argument functions 19:08:42 while keeping in with the elegant apl/oklotalk hybrid semantics 19:09:18 what exactly do you mean? 19:09:22 currently, you would do 19:09:24 -!- oklopol has quit (Read error: 113 (No route to host)). 19:09:28 func Arg Arg Arg Arg Arg 19:09:35 -!- oklofok has changed nick to oklopol. 19:09:49 oklopol: yes, but it would be passed as [arg arg arg arg arg ] or something 19:09:49 right? 19:09:58 yes 19:10:00 I mean, funcs are only unary or dyadic 19:10:01 so 19:10:04 what i'm saying is that's kludgey 19:10:09 i bet you can do it without implicit []s 19:10:13 REALLY support them 19:10:46 it's not kludgey, i disagree :) 19:10:57 anyway, going to the shop! 19:15:28 oklopol: :( 19:15:33 it iiiis kludgey 19:17:49 -!- oklopol has quit (Read error: 113 (No route to host)). 19:18:14 -!- oklopol has joined. 19:18:28 ehird: i don't see the point in not making it a list... only possibility for what i can imagine *actually supporting n-adic functions* might mean is having to match all args separately, which would only complicate stuff. 19:18:33 that was an obscure sentence, but anyway 19:18:35 i don't see the point 19:18:53 oklopol: but :( 19:19:41 :P 19:19:50 well tell me the advantages :) 19:19:59 oklotalk doesn't aim for conceptual perfection. 19:25:05 oklopol: well, implicit [] is just weird 19:25:10 what if you want to pass an array as the last param? 19:26:54 oklopol: = and -> are the only special cases rigt 19:27:05 and what is a ->node called? 19:27:07 = is an assignmentnode 19:27:09 what about -> 19:28:22 There are probably some languages where the empty program is a cat. Concatenative languages where the program is a function to turn input into output. 19:28:26 yes -- golfscript 19:29:48 and lazy k! 19:31:06 !dog god! 19:31:08 Huh? 19:31:12 !daemon dog bf ++++++++++[---------->,----------[>,----------]<[++++++++++.<]++++++++++.] 19:31:14 !dog god! 19:34:17 !undaemon dog 19:34:20 Process 1 killed. 19:34:20 !daemon dup bf ++++[->++++++++<]>>+[->,----------[>,----------]<[++++++++++<]>[.>]<[<]<.>>[.>]++++++++++.[<]+] 19:34:31 !dup !dup 19:34:42 GregorR: EgoBrokent 19:35:05 -!- oklofok has joined. 19:35:18 oklofok: foklo-ok 19:35:33 -!- oklopol has quit (Read error: 113 (No route to host)). 19:36:07 !ps 19:36:09 !ps d 19:36:10 2 ehird: ps 19:36:13 1 ehird: daemon dup bf 19:36:14 2 ehird: ps 19:36:19 !dup lulz 19:36:23 !undaemon dup 19:36:27 Process 1 killed. 19:36:49 -!- oklofok has quit (Read error: 104 (Connection reset by peer)). 19:40:44 -!- oklopol has joined. 19:41:16 oklopol: oko 19:46:00 oooko 19:46:09 ok 19:46:13 ;) 19:46:15 bb 19:46:31 ehird: [] is also list 19:46:53 okokokokoko 19:47:05 oklopol: okokokoko.. 19:50:33 -!- oklofok has joined. 19:50:51 ehird: [] is also list 19:50:54 yes 19:50:55 okokokokoko 19:50:55 but oko. 19:50:57 also you can up into singleton with ^ 19:50:59 in case those didn't come 19:51:01 okokoko 19:52:17 func [Arg Arg Arg] == func Arg Arg Arg 19:52:35 yes 19:52:37 ugly 19:52:41 oh no 19:52:41 but yeah 19:52:45 what is a ->node called 19:52:48 in two meanings 19:53:05 "oh no" as in "who cares", and "oh no", as in "oh dear god you're wrong" 19:53:19 hmm 19:53:26 hmmhmm 19:53:32 i fail to remember 19:53:50 match node, i'd say 19:53:52 okay 19:54:03 how is that ugly? 19:54:24 thing,list,1app,2app,match,assign,atom,var(subclass of atom),int,strnig 19:54:28 that's my ast 19:54:44 those are what i have, yeah 19:54:47 oklofok: is ($-> a b) a match node 19:54:50 or just (-> a b) 19:54:58 good point 19:55:02 only latter 19:55:57 oklofok: same with =? 19:56:05 yes 19:56:24 oklofok: what is (= a) 19:56:30 error 19:56:31 is it an unary application of = to a 19:56:33 or an error 19:56:33 OK 19:57:04 -!- oklopol has quit (No route to host). 19:57:11 oklofok: what about (-> a) 19:57:26 that's okay, i think. 19:57:32 oklofok: what does it mean 19:57:40 hmm... 19:58:22 match on a, just return what would've been returned if it weren't for the match 19:58:31 my implementation fails on that. 19:58:39 oklofok: returns [] 19:58:40 when you app it 19:58:41 :P 19:58:49 oklofok: are you sure it shoultn't be (-> a f) 19:58:50 yes, have no idea why, but lessee 19:58:51 or even an error 19:59:17 no.. not an error 19:59:34 -!- sebbu2 has joined. 19:59:41 you should be able to do stuff like (= _ [4 5]) (-> [a b]) (+ a b) 20:00:23 err 20:00:25 of not 20:00:35 hmmhmm 20:00:39 oklofok: i think (-> a) should be an error 20:00:51 its either redundant (and only 2 chars shorter than its replacement) OR useless 20:01:03 ah 20:01:04 right 20:01:20 it was just for assignment, (-> [$set tail]) etc 20:01:51 oklofok: yeah, that's kinda sucky 20:01:56 mostly you'll want to return tail or similar 20:01:56 s. 20:01:59 so 20:02:13 oklofok: my parser uses a neat trick 20:02:18 it can .pop() because it reverses the input 20:02:50 neat, neat 20:03:01 oklofok: did i mention my implementation uses unicode 20:03:08 hmmhmm, i think [] is a good thing to return, but i cannot quite see why my implementation does it 20:03:48 ah 20:04:00 that is one obscure way to make it return [] xD 20:04:15 also, try doing operations on the list 20:05:13 it's not an Lst, it's a python list :) 20:05:46 oklofok: haha 20:06:03 oklofok: my interp will have script capabilit 20:06:06 maybe even a COMPILER 20:06:07 into python 20:06:11 yes with continuations 20:06:56 i'm gonna make a compiler later, would you recommend java or python bytecode? :) 20:07:00 oklofok: is '2a' a valid atom 20:07:05 no 20:07:16 can't start with a number 20:07:24 but oklotalk-- has very retarded parsing rules 20:07:25 oklofok: :((( that sucks 20:07:28 yes 20:07:31 you should parse as a string 20:07:36 then if everything's a digit make it an int 20:07:37 ...as a string? 20:07:38 i see 20:07:49 oklofok: schemes do that 20:07:55 1+ is a valid id in a lot of them 20:08:00 ofc it is 20:09:02 anyway, i don't care much about that before you can extend syntax 20:09:21 i think i've come up with quite a nice way to do parsing for actual oklotalk 20:09:36 there will be a separate string type for strings with structure 20:09:41 well, list type ofc 20:11:05 will prolly integrate state lists, structured lists and pattern lists into just primitive lists later 20:11:11 but needs a lot of conceptual refinement 20:11:14 everything, really 20:13:41 oklofok: oko 20:15:49 oklofok: oops, atoms are special cases of vars 20:15:51 not the other way around 20:16:00 need a more generic name.. 20:16:01 NameNode 20:16:52 -!- sebbu has quit (Connection timed out). 20:16:53 -!- sebbu2 has changed nick to sebbu. 20:17:11 oklofok: what breaks a node? 20:17:18 is a2 'a2' or a,2 20:17:31 just whitespace,(,),{,},[,],",$? 20:17:32 or.. 20:17:38 yes 20:17:39 the latter 20:17:44 umm 20:17:49 once you start a name 20:18:26 it continues until one of the ending parens of whitespace 20:18:44 oklofok: does ( break it 20:18:47 (-> a(b c)) 20:18:49 no 20:18:51 that's okay 20:18:51 wtf 20:18:52 so that's 20:18:52 a(b 20:18:53 that sucks 20:18:55 totally 20:19:06 sure 20:19:13 oklofok: will you kill me if i break that 20:19:24 ok, what about " 20:19:27 i don't consider it relevant. 20:19:27 thats a closer AND an ender 20:19:28 a"b 20:19:37 and what about $ 20:19:59 i already said what the rules are :) 20:20:03 a"b is okay 20:20:22 this is trivial stuff, who cares, is my opinion 20:20:30 :) 20:20:46 it will be made sane once i actually *make a syntax* 20:21:02 anyway 20:21:07 so, oklofok: whitespace,),},] 20:21:09 for a clearer answer: yes, you can chan that 20:21:13 *change 20:22:02 the parser was whipped up in less than 10 minutes, before which i didn't have any idea how it should look. 20:22:10 oklofok: 2a is 2,a right 20:22:14 yes. 20:22:18 that i'm not gonna change 20:22:36 but indeed, i guess making opening brackets break tokens is a must 20:24:54 oklofok: is \n an escape sequence 20:24:55 or: should it be 20:25:10 it is, and should be 20:25:30 \t is not 20:25:36 and shouldn't be, atm 20:25:54 i despise the tab character 20:26:23 oklofok: why? 20:26:26 think about it this way 20:26:31 the tab has a semantic meaning for code 20:26:32 it means: 20:26:35 'we are indenting now, ok' 20:26:37 now 20:26:38 the problem is 20:26:45 that editors used to interpret that as '+N spaces' 20:26:50 instead of semantically 20:26:57 and people tried to use tabs for alignment 20:27:07 so now everyone uses soft spaces, and people can't decide how they want to look at code 20:27:12 and everything is less semantic 20:27:15 and quite a few bytes are wasted. 20:27:21 so in summary: 20:27:31 tabs rock, spaces suck. but the real world means we must use spaces 20:28:09 well i wasn't thinking about code, i'm more an ast level guy 20:28:17 tabs are nice for that yeah 20:28:24 but, i have other issues with them 20:29:02 oklofok: like. 20:30:07 let's not get into that 20:30:10 :) 20:30:20 oklofok: did tabs abuse you when you were young?!111212 20:30:24 :) 20:30:33 i have issues with a lot of things 20:31:01 oklofok: so is "\r" literally a backslash then an r 20:31:08 no 20:31:12 an error? 20:31:13 it is a syntax error 20:31:38 oklofok: just need to parse assignment and voila 20:31:40 i'm done with the parser 20:31:41 either have characters you need in source code or use the chr function for now. 20:31:43 then i haev to er, test it 20:31:55 well good for you 20:32:19 oklofok: :D 20:32:23 continuations, compilation.. 20:32:26 AWESOMETALK 20:32:28 -- 20:32:30 :) 20:32:55 Awesometalk without the -- will be THE BEST ENTERPRISE OKLOTALK 20:33:10 heh 20:33:31 oklofok: it will cost $32.99 20:33:36 and include a MEGA IDE 20:33:43 perhaps we can spend our lives making better and better oklotalk interps and compilers topping each other until i die of age.. 20:34:22 Either that. 20:34:27 Or we could buy cotton candy. 20:34:31 hmm 20:34:33 THE CHOICE IS YOURS 20:34:36 you make a decent point 20:34:53 It's quite a conundrum. 20:34:59 perhaps we can spend our lives making better and better oklotalk interps and compilers topping each other until i die of age.. 20:35:08 and trying to get people to actually use it 20:35:21 hmm... well then count me out :P 20:35:51 i don't care whether people use my stuff really 20:35:52 oklofok: imagine when google releases its first oklotalk application 20:36:11 this is the reason why i don't aim for perfection in the parsing rules etc. 20:36:23 oklofok: OH NO 20:36:26 I have not made lists yet 20:36:27 :P 20:36:32 oh 20:36:47 not hard 20:36:48 oh, right 20:36:50 i can just rip off the Thing code 20:37:08 you said something about it being lame that i use the python stack 20:37:14 i remember the reason now 20:37:20 what 20:37:37 it was just that you need to do oklotalk calls in pattern matching, and i hadn't taken that into account 20:37:46 so i'd have had to change the code a bit 20:38:02 oklofok: ah 20:38:03 so i just started over, and the randomizer in my head didn't do it stack-based again 20:38:23 >>> print parse('[a b c]')[0] 20:38:23 [a b c] 20:38:29 oklofok: an oklotalk parser in 1-3 man hours 20:38:33 of not much work 20:38:34 well 20:38:36 oklotalk-- 20:38:55 anyway, i'm pretty sure i could reimplement all of oklotalk much better now that i know the scoping/evaluation/parsing rules, so beware, i'll remake it if you finish yours, and it will own it. 20:38:58 hmm 20:39:03 some bad use of "it" 20:39:16 oklofok: oh sure ;p 20:39:22 but my oklotalk-- will support CALLING INTO PYTHON 20:39:32 though if you have this: 20:39:33 oklotalk-- parsing is about 10 man-minutes of work, i have no idea about oklotalk, as its syntax isn't even ready yet 20:39:46 oklofok: ah but i have very specific errors 20:39:49 anyway 20:39:52 oklotalk-- calls python --> python calls oklotalk-- -> oklotalk-- code 20:40:02 heh 20:40:05 the rightmost oklotalk-- code's continuations will only be up to the python one 20:40:14 since obviously you can't capture the python and upwards continuation 20:40:14 BUT 20:40:21 that's never ever gonna happen now is it :p 20:41:00 oklofok: damn, this parser works FIRST TIME 20:41:09 mine did too 20:41:11 i literally implemented 50% of it just now, without reloading 20:41:16 and it is all working, with nice error messages 20:41:17 crazy 20:41:24 i just wrote it, and assumed it worked :) 20:41:33 hmm 20:41:36 mine isn't hideously broken though 20:41:36 :)) 20:41:40 is mine? 20:41:43 don't think so 20:41:45 in error cases 20:41:46 yeah 20:41:53 i see 20:41:55 how exactly? 20:42:10 oklofok: it returns weird stuff 20:42:11 like lists 20:42:18 show example 20:42:22 mine always raisea n exception that has reasonable text 20:42:38 oklofok: also, yours is broken 20:42:43 show example 20:42:43 you cant pass a string as an argument 20:42:46 it tries to parse as an int 20:43:30 show example 20:43:36 oklofok: jesus christ 20:43:52 have no idea what you mean 20:43:55 well 20:43:57 look in logs 20:43:58 we found it 20:44:12 you mean (lol "asdasdads") 20:44:13 ? 20:44:33 have no idea what you mean 20:45:38 oklofok: look in logs 20:45:52 okay 20:45:53 parser done 20:45:58 now i guess i should do types 20:46:47 ehird: i won't, i'll just assume you're lying 20:46:49 :) 20:47:06 oklofok: ass 20:47:33 :: (error "DIE DIE DIE")16:40:55 20:47:33 An error: invalid literal for int() with base 10: 'DIE DIE DIE' 20:47:41 :: (+ "DIE DIE DIE" "oklotalk")16:41:18 20:47:41 An error: invalid literal for int() with base 10: 'oklotalk' 20:48:32 class Oko(object): 20:48:35 cutest code i've written all day 20:48:53 Okoer should be the interpreter class 20:48:55 but that's silly 20:48:56 hmm 20:48:57 okit 20:48:58 err 20:49:00 okoist 20:49:02 the first one is correct 20:49:07 second, doesn't err 20:49:30 oklofok: well its from logs 20:51:30 oklofok: should objects (okos) belong to okoists (interpreters) 20:51:32 or independent 20:53:00 -!- RodgerTheGreat has quit (brown.freenode.net irc.freenode.net). 20:53:00 -!- Deformative has quit (brown.freenode.net irc.freenode.net). 20:53:00 -!- AnMaster has quit (brown.freenode.net irc.freenode.net). 20:53:00 -!- GregorR has quit (brown.freenode.net irc.freenode.net). 20:53:00 -!- Quendus has quit (brown.freenode.net irc.freenode.net). 20:53:00 -!- Deformati has joined. 20:55:04 -!- AnMaster has joined. 20:55:22 -!- Quendus has joined. 20:56:43 anyone know the mail or something of ais 20:56:45 in an EXTREMELY silly way 20:56:47 #ifdef _POSIX_SOURCE \n #include \n #else \n #include \n #endif 20:56:49 well for some reason it does not define _POSIX_SOURCE on freebsd........ 20:59:17 -!- RodgerTheGreat has joined. 21:01:01 -!- oerjan has joined. 21:05:38 ehird: strings, indeed, don't have much functionality in oklotalk--, mainly because i'm very lazy when it comes to the trivial stuff 21:05:47 but there is no parse error there 21:06:02 anyone know the mail or something of ais 21:06:11 as a matter of fact yes 21:06:19 -!- GregorR has joined. 21:06:32 oerjan, ah so I can send a bug report 21:06:36 thanks could you /msg it? 21:07:58 I don't know if that's where he wants bug reports though 21:08:33 just spit it out, man! 21:12:28 AnMaster: post to usenet 21:12:30 alt.lang.intercal 21:12:39 ehird, sent him a mail 21:12:49 /sigh 21:12:56 ehird, and I don't have any read/write news account 21:13:00 so I can't post it there 21:13:06 google offers them for free. 22:14:51 -!- Iskr has quit ("Leaving"). 22:18:25 Deewiant, WTF does the I of PERL fingerprint do 22:18:34 Deewiant, I looked at CCBI's code and it make no sense 22:29:12 -!- jix has quit ("CommandQ"). 22:47:21 -!- timotiis has joined. 22:53:34 -!- RodgerTheGreat has quit. 23:09:39 hello chaps 23:09:52 -!- olsner has quit ("Leaving"). 23:11:22 oklofok: oh NO 23:11:23 parser BUG 23:11:52 fix'd 23:14:19 oklofok: soo 23:14:26 what's the general structure of your oklotalk-- interp? 23:14:31 does it have multiple interps at one time? 23:21:59 oklofok: ping 23:30:51 ... 23:40:29 oklofok: ping 23:44:12 pong 23:44:35 whaddyamean 23:44:39 multiple interps at one time? 23:44:42 i'm going to sleep btw 23:44:45 so be fast 23:45:18 to sleep, perchance to dream 23:45:36 heh 23:45:36 no you can't purchase my dreams 23:45:43 wish i could be ast 23:45:45 fast 23:45:50 but busy:((( 23:45:59 "multiple interps at one time"? 23:46:53 well 23:47:01 to answer what i think that sentence means... 23:47:17 the interpreter doesn't have interpreters at all, it only *is* one 23:47:23 oklofok: ok 23:47:25 so no, it doesn't have multiple interps at one time 23:47:30 so i cant have 2 'contexts' 23:47:34 oh 23:47:42 r=oklotalk.Runner() 23:47:49 aha 23:47:51 r.run(oklotalk_code) 23:47:52 thanks 23:47:54 :) 23:47:57 returns result, stores context 23:48:03 you can use that from the pyc of c 23:48:06 *ofc 23:48:11 oklofok: yeah 23:48:13 not that you didn't know that 23:48:18 hard to use python without the src though :)) 23:48:25 indeed. 23:48:25 its not really oriented to that 23:48:39 i told you about Runner, but quite briefly 23:48:53 whhell 23:48:56 you can just dir the modules 23:49:18 yeah 23:49:20 even so 23:49:41 oklotalk.run will run contextless pieces of code 23:49:55 in case you're really in a hurry! 23:50:09 :) 23:50:18 oklofok: i bet £999 that you won't actually go to sleep 23:50:22 anyway, night-o 23:50:23 :O 23:50:29 and that you'll stay here 23:50:30 ;) 23:50:31 YES I WILL 23:50:38 suuure 23:50:56 there's a naked chick next to me 23:51:04 still want to bet? 23:51:10 oklofok: ok, good point 23:51:13 i retract my bet 23:51:14 :) 23:51:29 whhhell, wouldn't be the first time i choose oklotalk over a chick 23:51:35 but let's hope i succeed 23:51:37 see ya 23:51:38 -> 23:51:42 oklofok: WHAT ABOUT SCOPING 23:51:48 ... 23:51:48 * ehird watches oklofok reappear 23:51:58 you're fucking evil. 23:52:02 totally 23:52:09 you know all about scoping, man 23:52:18 nah 23:52:24 what about dynamic container singletons 23:52:25 static, dynamic look-up if static finds nothing. 23:52:30 ...whut? :D 23:52:34 * oerjan still has doubts about the sleeping part 23:52:40 dunno, better make up a meaning 23:52:41 ok 23:52:42 dynamic 23:52:43 container 23:52:44 singletons 23:52:50 are containers 23:52:52 that contain a dynamic variable 23:52:55 and have set/get operations 23:53:02 a -dynamically scoped- variable that is 23:53:12 how does this interact with the stack? 23:53:28 hmph 23:53:40 err 23:53:41 -!- oerjan has quit ("Good night"). 23:53:46 can you be more spesific... 23:53:55 oklofok: its a structure 23:53:58 yes 23:54:00 but instead of contianing structure-local lexicals 23:54:06 it contains a dynamic variable reference 23:54:14 what's that, exactly, in oklotalk--? 23:54:17 can you code it? 23:54:31 oklofok: maybe, dunno how to do the exact forcing 23:55:02 scoping is only done for variables 23:55:13 oklofok: yes 23:55:15 i'm not sure what you mean here, so hard to say... 23:55:17 but its a variable INSIDE a structure 23:55:19 but i admit it 23:55:23 i'm just trying to keep you here 23:55:25 for me £999 23:55:25 inside it... 23:55:25 ;) 23:55:28 like {a} 23:55:29 srsly, go 23:55:29 :D 23:55:30 :D 23:55:32 asdasdf 23:55:34 oklofok: but 23:55:35 like 23:55:36 okay, okay... 23:55:38 ... 23:55:40 {(-> a ...)} 23:55:45 yarr 23:55:45 but a is dynamically scoped 23:55:47 and ... is {...} 23:55:52 umm 23:55:57 a isn't dynamically scoped 23:56:03 i know 23:56:04 it's bound by the pattern match 23:56:05 you force it to be 23:56:10 how? 23:56:14 by using the other expressions 23:56:15 like 23:56:27 {magic setting stuff, (-> z {...})) 23:56:30 and instead of z in the object 23:56:32 use magic getting stuff 23:56:45 the object 'contains' a dynamically scoped varialbe 23:56:59 i don't think you can do that. 23:57:05 but i'll really go now :D 23:57:07 see ya -> 23:57:29 :D 23:57:32 bye 23:58:30 oklofok: you are still here. 2008-04-16: 00:03:46 Ahah! 00:03:48 Gato works. 00:03:56 Maybe I can write the Andrei Machine 9000! 00:04:10 Slereah: zgoshmgz 00:05:49 I am full of hope. 00:06:01 I really don't want to write it in Python. 00:06:13 Slereah: whuts gato 00:06:46 http://gato.sourceforge.net/http://gato.sourceforge.net/? 00:06:49 It's a program to write algorithms on graphs. 00:06:55 Yes, that one. 00:06:59 Slereah: im sorry but that code is python 00:07:01 they just embed it 00:07:05 and add their own functions 00:07:25 Yes. 00:07:37 But what I mean is, I don't want to build everything 00:07:57 I am terrible at coding, so I really don't want to write the whole graph gestion myself 00:08:27 Plus, all my interpreters have some way of seeing what happens to the machine, and I don't want to make an exception. 00:09:19 Slereah: Cool. 00:14:17 -!- timotiis has quit ("rebloodybooting! They said I wouldn't have to do this on linux!"). 00:14:27 hah 00:16:41 -!- timotiis has joined. 00:18:20 timotiis: sorry 00:18:45 hehe 00:39:46 http://rafb.net/p/dUgDuS45.html 00:39:53 looks like ccbi is broken Deewiant ^ 00:50:03 -!- Sgeo has joined. 00:53:14 -!- timotiis has quit (Connection timed out). 01:01:58 -!- Sgeo has quit (Read error: 104 (Connection reset by peer)). 01:05:20 -!- Sgeo has joined. 01:17:05 On Fark: 01:17:06 "There are actually people named null, and yes, I've actually seen this cause problems in production database code. 'Null' was the last name where I saw it however." 01:26:31 hmm 01:27:10 public class Closure { public Closure(Object... vars); public U apply(T arg); } 01:27:15 e.g. 01:27:45 new Closure(a, b, c) { public Integer apply(Integer n) { return n + (Integer)this.vars[0]; } } 01:27:51 this.vars={a,b,c} 01:28:01 maybe nice if you are compiling a language to jvm 01:55:14 hah! ehird: i was not there! 01:55:25 *here 01:55:29 oklofok: heh 01:57:13 oklofok: but ... yeah 01:57:22 that's also why you shouldnt compile oklotalk-- to the jvm, btw 01:57:25 it doesn't like closures 02:00:10 i would probably make the compilation at a bit lower level 02:00:29 but python bytecode might be nicer 02:00:47 also, as i don't really like java, i don't really wanna use it's bytecode 02:00:48 :o 02:00:55 anyway, /me goes back 02:01:04 before you start asking again :-) 02:01:06 -> 02:27:05 -!- Quendus has quit (Read error: 113 (No route to host)). 02:27:42 -!- Quendus has joined. 02:30:10 quendus 02:30:12 haven't seen that name 02:30:13 hi 04:06:47 -!- ehird has quit (Read error: 104 (Connection reset by peer)). 04:25:02 The Security Manager is vetoing my using Firebug in Fx3.. 04:25:26 >>> 2+2 04:25:26 commandLine.evaluate FAILS: [Exception... "Security Manager vetoed action" nsresult: "0x80570027 (NS_ERROR_XPC_SECURITY_MANAGER_VETO)" location: "JS frame :: chrome://firebug/content/commandLine.js :: :: line 100" data: no] 04:26:35 -!- fizzie has quit (Remote closed the connection). 04:26:39 -!- fizzie has joined. 04:38:56 -!- adu has joined. 05:00:34 lol at http://youtube.com/watch?v=g3KufmUlF5M 05:00:39 (I'm commented SJGster) 05:38:45 -!- calamari has joined. 05:38:50 hi 05:39:36 Hi calamari 05:39:41 http://youtube.com/watch?v=g3KufmUlF5M == fail 05:44:37 hi 06:20:58 -!- calamari has quit ("Leaving"). 06:38:41 AnMaster: cheers, I'll take a look tonight 06:45:44 -!- olsner has joined. 06:47:42 -!- Sgeo has quit ("Ex-Chat"). 07:14:01 -!- GregorR-L has joined. 07:14:03 http://www.cafepress.com/bizarregeek.255291006 07:14:55 (For those who like CAs :P ) 07:42:46 Deewiant, not that mine works perfectly either so far 07:43:08 Deewiant, it fails when using garbage collector for unknown reason 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:10:35 -!- adu has quit ("Bye"). 08:34:12 -!- olsner has quit ("Leaving"). 08:36:00 -!- Iskr has joined. 09:02:45 Deewiant, actually the issue seems to depend on how you interpret the PERL fingerprint docs... hm... 09:03:29 "-e print 'A',eval(%s)" or "-e print 'A';eval(%s)" 09:03:34 where %s is the popped string 10:16:42 -!- GregorR-L has quit (Read error: 110 (Connection timed out)). 10:20:48 okokoko 10:20:51 -> 11:06:50 -!- timotiis has joined. 11:28:09 AnMaster: okay, so we want the Perl program to be able to use the std streams as normal, but how do we get the eval result out then? 11:28:36 I'm confused as to how that would be possible 11:32:35 would just "$x = eval(%s); print 'A',$x" work? can the %s mess with a variable called $x in some way? (I'm unaware of the limitations of eval in Perl) 11:43:23 -!- dbc has joined. 11:56:57 and hmm, even that wouldn't work, since %s might print A and $x might contain A 12:02:17 hm ok 12:02:37 Deewiant, I'm no perl expert either 12:02:40 far from 12:03:24 bbl 12:03:27 I'd say the simplest solution here is to say that accessing stdout is undefined 12:03:37 alternatively make it stderr for more convenience 12:07:49 -!- Sgeo has joined. 12:36:13 -!- jix has joined. 12:59:32 Deewiant, I capture both stdout and stderr 12:59:34 that isn't hard 13:00:28 AnMaster: yes, but how do you get the eval result 13:01:42 Deewiant, just int fds[2]; pipe(fds); pid = fork() if (pid == 0) { /* in child */ dup2(fds[1], 1); dup2(fds[1], 2); .... execvp("perl", arguments); } else { ... read(fds[0], ...) ... } 13:01:54 yes, capturing stderr is trivial 13:01:55 I know this 13:01:56 Deewiant, well a good question 13:02:16 the specs are unclear on what to exactly capture I think? 13:02:21 what exactly to* 13:02:24 no, I think it's clear 13:02:28 hm 13:02:33 it's the value of the expression evaled 13:02:41 hm 13:02:52 e.g. eval 2+2 and get 4. 13:02:54 what about loading libperl.so, I think you can do something like tht 13:02:56 that* 13:03:40 possibly... but it shouldn't be necessary 13:03:51 true 13:03:54 based on what the docs say, as well 13:04:05 anyway then S would get a lot more complex 13:04:09 "It pushes a 1 on the stack otherwise, indicating that the Perl language will be shelled when needed. 13:04:11 say "isn't loaded yet" 13:04:25 hm true 13:04:40 that speaks explicitly of shelling, so libperl.so is a no-go ;-) 13:04:58 I haven't read the whole discussion, but based on what I've seen: no-one says you need to limit yourself to STDOUT and STDERR, why not just open a pipe for file descriptor 3, and in Perl do open FD3, ">&3"; print FD3 eval(...); 13:05:11 anyway, now I really understand why ppl don't use read() but use fread() instead 13:05:27 it a lot easier to work with 13:05:54 fizzie, interesting 13:06:08 fizzie: isn't it possible for the perl code to always be using FD3 itself, though 13:06:26 fizzie, that would print both the result of the eval as well as any print statements inside the eval? 13:06:29 not very likely, but possible? 13:07:16 and hmm, I wonder if that's possible on windows 13:07:32 Well, you'd get stdout, stderr and that eval result via three different pipes. But sure, the Perl code could use file descriptor 3 for something. 13:07:46 hm 13:10:33 also I wonder why I get a segfault with boehm-gc if I use execlp after fork(), execvp works 13:10:49 it makes no sense to me 13:14:59 even more interesting is using valgrind (GC disabled then) 13:15:16 using --trace-children=yes cause things to fail if I use execvp, but they work with execlp 13:15:22 only under valgrind that is 13:17:36 Deewiant, btw, does windows have vfork()? 13:17:43 windows doesn't have fork 13:17:44 of any kind 13:18:08 so how do you start another process without replacing the current one 13:18:22 CreateProcessA/CreateProcessW 13:18:27 don't ask me about the details 13:18:35 I just use what Tango provides 13:19:07 as far as I can see you need to fork() then { in child: dup2 and exec } { in parent: waitpid and read } 13:19:14 hm 13:19:22 windows doesn't use the fork/exec model 13:19:30 I see 13:19:53 hm actually I spend most code at doing read and trying to handle all the error conditions/results from it 13:20:05 yep, same here 13:20:06 ie, "do we need to realloc and read some more or are we done yet" 13:20:09 just running the program is 2 lines :-P 13:20:24 well a bit more for building arguments and such here 13:20:36 but the read code is really a mess 13:22:13 I think doing read into same buffer and keeping extending it may be the wrong way, read and then append the buffer to another buffer would be way easier, and, due to \0 termination, faster 13:22:17 I think it'd be fair to just disallow stderr for PERL 13:22:26 there's no way to write to stderr in Befunge otherwise either 13:22:29 hm? well capturing it isn't an issue 13:22:38 no 13:22:43 but then you can reserve it for the eval result 13:22:51 anyway I use a perror() after forking 13:22:52 i.e. print stderr eval(%s) 13:23:08 in case of exec fails 13:23:22 and then you can pass the perl script's stdout through to the interpreter's stdout 13:23:31 whilst capturing the stderr and reading the eval result from it 13:23:52 Deewiant, hm and what about print stderr eval(print stdout "foo")? 13:23:58 hm 13:24:01 2008-04-16 15:23:21 ( Deewiant) and then you can pass the perl script's stdout through to the interpreter's stdout 13:24:09 Deewiant, not sure if that is a good thing or not 13:24:19 I think it's the least error prone option 13:24:26 + simple to implement :-P 13:25:43 because it allows the PERL script to do output if it so wishes 13:25:58 Deewiant, btw where do you close the fd in eval in perl.d 13:26:06 or is D handling that for you? 13:26:12 Tango does it 13:26:26 in p.execute(); I would guess 13:26:50 read = p.stdout.input.read(buf); 13:26:52 hm 13:26:57 stdout.input? 13:27:13 the input stream of the process's stdout 13:27:32 err, stdout is just output, it isn't bi-directional 13:27:50 but if another program is writing to it what are you going to do 13:27:54 you are going to read from it, no? 13:27:55 so it's input 13:28:08 similarly stdin is an output stream 13:28:09 hm... yeah 13:28:19 Deewiant, but then is stdout.output invalid? 13:28:28 when done on another process 13:28:32 yes, I think so 13:29:02 You could also in Perl do something like: open(REALERR, ">&STDERR); open(STDERR, ">&STDOUT); print REALERR eval(...); if you wanted to have all the eval'd piece outputs (both stdout and stderr) mixed in the stdout of the executed process, leaving the real stderr for the eval result. Of course the eval'd code could still get to the real stderr if it really wanted to. 13:29:10 Deewiant, what is the print A bit about really btw 13:29:25 AnMaster: it took me a while to figure out, too ;-) 13:29:40 Deewiant, well you do it, I don't see why thoug 13:29:41 AnMaster: the idea being that if %s prints to stdout, we take only the eval result. 13:29:41 though 13:29:46 I think. 13:29:49 ah I see 13:29:59 fizzie, heh 13:30:00 but of course that doesn't work if the eval result contains A so it's crap. :-P 13:30:26 fizzie, I know about 0 perl, I do know hello world in perl and I do know PCRE (by libpcre) 13:30:29 but that's about it 13:30:33 fizzie: hm, that might be a good idea actually. 13:30:59 fizzie, so forgive me if I'm ignorant, but the quotes seem mismatched? 13:31:12 open(REALERR, ">&STDERR); <-- as in that 13:31:24 Yes, there's two "s missing. I was about to metion it, but then didn't bother. Should be ">&STDERR". 13:31:30 thanks 13:31:51 fizzie: and then just tell the eval'd code not to mess with a stream called REALERR? Or is there another way it can subvert the whole thing? 13:32:28 Well, the eval'd code could use open(WHATEVER, ">&2"); and use WHATEVER to print to the real stderr file descriptor. 13:32:57 Darn. There's no way to hide the real stderr completely? 13:33:20 I don't think there is, except of course closing it, but that kind-of defeats the purpose. 13:34:04 Alright. Hmh. 13:34:58 Perl might have some sandbox-y functions (probably as CPAN modules) for limiting the things the eval'd code can do. And it might be possible to hook into Perl's "open" call behaviour somehow, but that would mean even more Perl-guts. 13:35:41 ugh. 13:36:59 hm 13:37:05 killall perl? ;) 13:38:02 fizzie, would calling it say, CFUNGE_REALERR work 13:38:17 then I could just say "your own fault, cfunge is my namespace" 13:38:19 AnMaster: unless the code uses something called CFUNGE_REALERR. 13:38:26 AnMaster: or opens ">&2". 13:38:53 point is, is _ valid or not 13:39:04 sure 13:39:17 well considering it's perl, it is bound to have some special meaning 13:39:18 if not, call it CFUNGEISMYNAMESPACEYOUDORKREALERR 13:39:18 :-P 13:39:28 it's a lot like C lexically. 13:39:56 well iirc it does have packages, ie use foo; not #include 13:40:08 thought they provided kind of C++ namespaces 13:40:14 I may totally wrong 13:40:38 yes, not 'the same as C', just 'like C'. 13:40:52 Actually you could open(my $realerr, ">&STDERR); open(...); eval(...); which I _think_ would mean that the eval'd code wouldn't be able to access the filehandle directly, since there's no symbol table entry for it, just the reference in $realerr. (Can't remember details about lexically scoped "my" vars and eval, but at least with some minor changes.) 13:41:11 Still won't help with the open(FOO, ">&2"); problem. 13:41:36 hm. 13:41:40 (With open my $realerr you'd then do print $realerr eval(...);) 13:42:14 wait a second, is $ same as in bash or something else? 13:42:30 $ is just the prefix for a scalar variable. 13:42:44 mhm same as in bash more or less then 13:42:56 fizzie: perl -e 'my $x = 2; print eval($x+$x);' prints 4, at least. 13:43:23 is that evaluated lexically like a pre-processor first? 13:43:49 -!- atsampson has quit (Read error: 113 (No route to host)). 13:43:54 in bash you would need to escape the \$x in an eval statement 13:44:08 because of order of expanding 13:44:41 (however I will not write a perl escaper in C or something like that) 13:47:20 Well, if nothing else works, you can always use print $realerr eval {$realerr = undef; %s}; but that's butt-ugly. I'm pretty sure there is a better way for making a variable that doesn't leak into eval; lexically scoped vars evidently do. 13:48:34 fizzie, there probably is indeed, it's perl after all 13:48:41 Actually more like eval { local $realerr = undef; %s } to avoid gobbling the real $realerr, but then it can't be a "my" variable. 13:48:59 it is probably something like z having a special meaning in a special context *runs* 13:49:09 remember, perl DOES have a entry on the esolang wiki 13:49:58 I think someone said that instead of "foo" you could do q/foo/ in perl. 13:50:02 or something like that 13:50:08 you can do that in D 2.0 as well. :-) 13:50:25 Deewiant, s/)/(/ 13:50:45 :-P 13:50:55 and that was sed not perl! 13:51:17 I have no problems using sed or awk 13:51:19 it's also perl. 13:51:29 Deewiant, yeah I thought so 13:51:31 Actually, if you're really doing string-substitution in the Perl code itself, you don't need eval, and this should work: my $code = sub { %s }; open my $realerr, ">&STDERR"; open STDERR, ">&STDOUT"; print $realerr $code->(); 13:51:45 fizzie, eh? 13:51:56 fizzie: unfortunately the specs say that it should be an eval(). :-) 13:51:57 "E ('Eval') pops a 0gnirts string and performs a Perl eval() on it, possibly (or not) shelling Perl as indicated by S above. The result of the call is pushed as a 0gnirts string back onto the stack." 13:52:07 fizzie, from http://catseye.tc/projects/funge98/library/PERL.html 13:53:11 Oh. Well, my $code = sub { return eval('%s'); } ... then. 13:53:44 in fact, isn't eval(%s) equivalent to %s always? 13:54:10 where %s isn't wrapped in "" or '' or whatever of course 13:54:13 Deewiant, hm... couldn't you pass a string to eval, read from say stdin? 13:54:50 yes, but I'm just pondering. 13:55:06 I don't think eval(%s) really does much, since the %s is evaluated normally, and the result is then passed to the 'eval' function. 13:55:26 eval(my $x = 1; print $x) versus my $x = 1; print $x 13:55:53 ah 13:55:55 "Alternatively, if given a block of code - that is, the code is known at compile time - eval traps run-time exceptions." 13:56:08 what does that mean Deewiant ? 13:56:14 Actually "eval(my $x = 1; print $x)" shouldn't be syntactically right at all. 13:56:16 divide by zero or? 13:56:18 I don't know 13:56:23 something like that probably 13:56:30 fizzie, it shouldn't? 13:56:31 fizzie: only expressions? 13:56:35 Eval takes either a string or a block of code and evaluates it. 13:56:45 hm 13:56:50 perl -e 'eval(my $x = 1; print $x);' gives syntax error at -e line 1, near "1;" 13:57:08 fizzie, perl -e 'eval(print "bar");' works though, hm 13:57:12 alright 13:57:27 AnMaster: that's an expression. you can pass the result of printf to a function in C just fine as well. 13:57:34 hm 13:57:39 right 13:58:10 Since the spec speaks of strings, I think it means one should do something like eval('%s'); but that would need escaping the 's in the string. 13:58:16 (Or reading it from stdin or some-such.) 13:58:31 um 13:58:34 perl -e 'print eval(4 + 5)' 13:58:42 is not same as perl -e '4 + 5' 13:58:53 and with multistatement just adding a print doesn't work 13:59:43 you said something about code block? 14:00:34 and then there is the question of non-matching ( and ) in the input hm... 14:00:41 perl -e 'print eval("my $x = 1;")' prints nothing 14:00:49 but it doesn't error out either 14:01:12 "print eval(%s)", "10); something here(blah" 14:01:18 yay perl injection? 14:01:22 perl -e 'print eval("my \$x = 1;")' however prints "1". 14:01:49 argh, the shell goes inside "" inside '' 14:02:06 stupid bash, just do what I mean 14:02:08 Deewiant, err? bash doesn't at least 14:02:17 well evidently it does 14:02:19 perl -e 'print eval("my \$x = 1;")' works here 14:02:25 I think it's actually the Perl that does mess the $x inside a ""-string. 14:02:27 or no, is that perl mucking it up 14:02:34 Deewiant, indeed it is perl 14:02:35 ayeh 14:02:39 makes sense 14:02:54 fizzie, so given the specs, how would you do it? 14:03:09 I think sub { return eval('%s'); } is the best idea so far 14:03:22 need to do escaping in %s though 14:03:26 which is tricky 14:03:31 yeah something I don't want to mess with 14:03:45 considering the syntax of perl probably could escape escaping 14:03:48 so, instead, return eval(%s); 14:03:58 and statements are disallowed thus. 14:04:08 hm doesn't that break the specs? 14:04:17 But eval(%s) makes really no sense. The '%s' part is evaluated before even passing the result to 'eval'. 14:04:17 how? 14:04:37 fizzie, hm ok 14:04:47 then the specs are confused or PERL is practically impossible to implement without writing the interpreter in perl. 14:05:06 fizzie, could you read the stuff for eval from stdin? 14:05:18 because then perl would escape it itself kind of 14:05:33 Well, you could. Then you'd just use eval($s); after reading into $s. 14:05:42 ie, $variable = read(); eval($variable) 14:05:49 I don't know the needed syntax 14:06:03 fizzie, and how would you read that? 14:06:10 AnMaster: and if the perl script wants to read stdin? 14:06:17 Deewiant, hm true 14:06:25 Well, you'd probably need to have some sort of length-prefix before the code, so that you can keep the stdin open for further reads. 14:06:38 aye. 14:06:56 also it need to be blocking read 14:07:15 so if it get to read before the parent got to write, it would wait 14:08:24 fizzie, well if you can write the needed perl code to read like that, I could do the C bit 14:08:33 I wouldn't be able to do the perl bit sadly :/ 14:08:39 perl is trivial to learn 14:08:47 for short stuff like that I mean 14:08:49 If you don't want to use a prefix, you could use that file descriptor 3, read the code-to-evaluate and then close it. 14:08:57 fizzie, prefix could work 14:09:03 prefix is fine 14:09:10 I guess just write(fd, strlen(perlcode))? 14:09:20 however you choose to implement it 14:09:28 I guess that'd work the easiest 14:09:30 or if you want as a string 14:09:43 Well, it's easier to "read until eof" in one line of Perl than it is to "read at least this many bytes". 14:09:50 ie snprintf("%d", strlen...") 14:10:07 hm EOF isn't a special char is it 14:10:09 it's easier in most languages without scanf. 14:10:15 EOF isn't a char. 14:10:25 or even with scanf, I guess. 14:10:55 fizzie, well, input would be a pipe created with pipe() in C in my case 14:10:55 my $code = ''; open FD3, "<&3"; $code .= $_ while ; close FD3; might do it. 14:11:12 using just stdin makes that a bit easier. 14:11:16 not sure how I would send a EOF that way 14:11:23 my $code = ''; $code .= $_ while <>; 14:11:29 or what 14:11:37 AnMaster: you send EOF by closing the pipe. 14:11:42 or file descriptor, or whatever. 14:11:45 hm ok 14:11:57 Deewiant, well a pipe is a set of two connected fd's in this case 14:12:14 If you close the write end, the read end should get an eof. 14:12:17 well you close the input stream. 14:16:32 fizzie, then print eval($code) or? 14:16:39 or "$code"? 14:17:25 no difference in perl, just like in bash :-) 14:17:32 Yep. 14:17:43 Deewiant, there is a difference in bash 14:17:49 foo="bar quux" 14:17:53 echo $foo 14:17:55 nope, no difference. 14:17:55 echo "$foo" 14:18:01 ? 14:18:03 the difference is that $foo will expand to two parameters 14:18:09 yes 14:18:10 while "$foo" won't 14:18:21 for echo it doesn't matter 14:18:23 but the string itself is the same, it's just the way it's passed to another program that differs 14:18:28 for say grep on a filename it would 14:18:33 -!- timotiis has quit (Connection timed out). 14:18:33 if the filename contains spaces 14:18:38 since eval() is a builtin function, not another program, it makes no difference. 14:18:49 I would assume that it's the same for any builtin function of bash. 14:18:51 Deewiant, for bash it matters for builtins too 14:18:59 example? O_o 14:19:35 echo will do the same, but say: foo="echo bar" 14:19:36 then 14:19:40 $foo 14:19:43 and "$foo" 14:19:47 would be different 14:19:50 the first would echo bar 14:19:51 -!- timotiis has joined. 14:20:06 the second would likely say "echo bar" not such command or something like that 14:20:36 Deewiant, and say test -f $file and test -f "$file" would differ when $file contains spaces 14:20:53 test is a builtin yes 14:21:33 Deewiant, oh and: foo="bar quux"; for i in $foo; do echo "$i"; done 14:21:43 is different from: foo="bar quux"; for i in "$foo"; do echo "$i"; done 14:21:50 Bash is indeed prone to splitting things at spaces; but in Perl I think there's a difference only if $foo doesn't happen to be a string. 14:22:16 fizzie, well there are exceptions: 14:22:23 foo="abc def" 14:22:26 bar=$foo 14:22:33 would be the same as: 14:22:35 bar="$foo" 14:22:37 in that case 14:22:40 however... 14:22:50 foo="abc def" is not the same as foo=abc def 14:23:05 the latter would try to run def with foo=abc in the environment 14:23:15 Deewiant, enough examples? 14:23:17 ;P 14:24:33 fizzie, would this mean something like: 14:24:45 my $code = ''; $code .= $_ while <>; open(CFUNGE_REALERR, ">&STDERR"); open(STDERR, ">&STDOUT"); print CFUNGE_REALERR eval($code) 14:24:45 ? 14:25:39 Yes, if you don't mind losing the use of STDIN in the Perl code. (And of course you can avoid the CFUNGE_REALERR "problem" with a bit more trickery.) 14:26:26 well how would I then save and restore the stdin? 14:26:38 or actually I could just use fd3 I guess 14:26:46 or just pass the length first. 14:26:54 and then read only bytes to $code. 14:27:09 Yes, but with the length-prefix the reading is more complicated. (Of course with fd3 the writing is a bit more complicated.) 14:27:20 "my $code = ''; $code .= $_ while ; close FD3; open(CFUNGE_REALERR, \">&STDERR\"); open(STDERR, \">&STDOUT\"); print CFUNGE_REALERR eval($code)" 14:27:33 assuming the \ is due to the whole thing is inside a C string 14:27:43 and I'm being too lazy to remove it this time ;) 14:27:47 fizzie: with fd3 I'm screwed on Windows, so I prefer the length-prefix method. ;-) 14:28:24 oh wait 14:28:26 no open 14:28:32 "my $code = ''; open FD3, \"<&3\"; $code .= $_ while ; close FD3; open(CFUNGE_REALERR, \">&STDERR\"); open(STDERR, \">&STDOUT\"); print CFUNGE_REALERR eval($code)" 14:28:34 hm? 14:29:22 Well, it looks correct, assuming the Perl code won't try opening &2, or using CFUNGE_REALERR. 14:30:00 fizzie: wouldn't heredoc be the easiest way of making $code directly? 14:30:04 just came to mind 14:30:35 because you can always pick a heredoc string not contained within the program script 14:30:50 Deewiant, finding such a string may not be that simple? 14:30:57 Hmm, yes; that's possible. 14:31:31 AnMaster: start with "THIS_IS_MY_FOOBAR_HEREDOC_STRING" and append that to itself until the prog no longer contains it or it exceeds the prog's length, whichever comes first. :-P 14:31:55 Deewiant, you need to search over the prog, linear search 14:32:02 for a long program that could be an issue 14:33:30 hm, closing the fd doesn't flush it it seems 14:33:40 at least not if it is a file, may be different with pipe 14:33:43 AnMaster: you need to write it to the file descriptor as well, which takes linear time? 14:34:16 Deewiant, hm what about vectored io? oh wait that won't work for a pipe 14:34:51 but I think you're right, in-memory fd writing is probably faster overall 14:34:55 Deewiant, anyway that just means O(n), while searching to see if the program contains a string means at least searching it twice if you hit it 14:35:11 AnMaster: which is still O(n), no matter how many times you do it. ;-) 14:35:29 hm true 14:35:38 If you feel like doing the heredoc thing, it probably makes sense to keep in mind that Perl does variable interpolation in my $code = < Even better than heredoc would be to use Perl's magic 'DATA' filehandle, but I'm not sure how well that works when passing the program as a command line argument. 14:36:40 I'm not going to do it, just wondered how well it would work. Good to know that, though. 14:39:19 Doesn't seem to me that reading from returns anything after the '__END__' marker when the script is passed with the -e argument. Otherwise it could've been much like the heredoc thing but without the suitable-string-finding issues. 14:42:30 seems it works with FD3 14:42:31 :) 14:43:36 Deewiant, so what will you do then? 14:44:02 stdin with the length passed first 14:45:39 A normal person would've just used print eval { %s }; which might not match the letter of the spec, but does match the spirit: takes the string and gives it to the 'eval' function. Of course it's not _exactly_ the same, the code is parsed at a different time and there might be other differences. 14:45:50 that's what I originally did 14:45:58 and then AnMaster came complaining :-P 14:46:07 Deewiant, err? you didn't use { 14:46:09 you used ) 14:46:10 err 14:46:10 ( 14:46:18 auto p = new Process("perl", "-e print 'A',eval(" ~ s ~ ")"); 14:46:25 and I didn't complain before about it 14:46:32 only difference is that one accepts only expressions, I think 14:46:45 if I had used {} you'd still have complained about the same issue ;-) 14:47:13 fizzie, if I passed this in stdin then, should it work?: $x = "Hello world"; print $x 14:47:13 Well, it really isn't the same thing at all: the expression isn't evaluated by "eval", it's evaluated just like the outer code, and then the result is passed to eval. 14:48:07 For example, perl -e 'eval(die "foo");' will die, while perl -e 'eval { die "foo" };' won't. 14:48:57 File descriptor 3, not stdin, I guess. But yes, it looks like valid Perl code to me, although traditionally there's a newline after the string. 14:49:01 I know I pass it on right FD 14:49:08 yeah 3 was what I did 14:49:13 because other stuff work 14:49:18 say 4+5 14:49:21 "my $code = ''; open FD3, \"<&3\"; $code .= $_ while ; close FD3; open(CFUNGE_REALERR, \">&STDERR\"); open(STDERR, \">&STDOUT\"); print CFUNGE_REALERR eval($code)" 14:49:29 that is escaped for C 14:50:29 Oh, I just figured out an embarrassingly easy way to pass the code to the Perl interpreter. 14:50:37 fizzie, oh? 14:50:53 Just do print eval($ARGV[0]); and append the code to the argument list of your "perl -e" call. 14:51:13 $ARGV[0] == "perl" probably? 14:51:20 No, $0 == "perl". 14:51:25 $ARGV[0] is the first "real" argument. 14:51:30 Perl Does It Differently(TM). 14:51:32 the first one after the program after -e? 14:51:33 as in argument for script? 14:51:57 perl -e 'print $ARGV[0], "\n";' foo prints "foo". 14:52:06 yays. 14:52:28 that makes things somewhat simpler. 14:52:40 although I wonder if there's a maximum limit on the length of an argument. 14:53:25 Well, the code was already being passed in the '-e' at some point, it's not a new problem. 14:53:42 true. 14:54:01 Of course the code itself can't "use" the @ARGV array, but looking at the spec it doesn't seem to say anything what @ARGV should look like. 14:55:01 Besides, it's then especially easy to write a Perl quine; print $ARGV[0]; will do it, if you start it in that environment. 14:56:37 -!- RedDak has joined. 14:57:38 AnMaster: alright, now your little test proggy prints 'hi 161'. :-P 14:58:03 well I don't have the same version around any longer 14:58:05 I extended it 14:58:19 http://rafb.net/p/VFZ2St69.html 14:58:21 is what I use now 14:58:52 alright, win. 14:59:04 and it works here too 14:59:10 just checking valgrind and such 14:59:27 fizzie, want to put you in a thanks to comment, what name should I use? 15:00:24 Uh, what sort of names have other people used? :p 15:00:52 ...er, that sounds wrong. 15:01:33 I'm not trying to pick a name, I just was curious about the type of names traditionally used for this sort of thing. IRC-nicks, realnames, something-else. 15:02:01 fizzie, I just want to know if you want some real name, or just "fizzie on #esoteric on freenode" 15:02:01 up to you. do you want your real name in the source code of befunge interpreters? :-P 15:02:15 Deewiant, hahah 15:02:29 I'd think deep and hard on that if I were you. ;-) 15:02:53 Deewiant, well you got your one all over the source of ccbi 15:03:00 I think I already have my real name in the sadly defunct GLfunge98, which didn't really get up the ground. (I think googling for my realname finds, thankfully way down in the list, HP-UX packages for that Befunge interpreter.) 15:03:36 AnMaster: I know, I've plunged off the deep end. :-) 15:03:46 aye, GLfunge98 looked promising. 15:04:02 There were lots of good intentions but lack of real motivation. 15:04:04 Deewiant, I'm not familiar with that proverb 15:04:16 So since I'm already quite a lost cause, feel free to use the real name, 'Heikki Kallasjoki'. Although I don't object to 'fizzie' either. 15:04:38 well believe it or not, but some want their real names 15:05:21 fizzie, you got to choose though 15:05:34 AnMaster: "take the plunge, to enter with sudden decision upon an unfamiliar course of action, as after hesitation or deliberation: She took the plunge and invested her entire savings in the plan." 15:05:45 hm 15:05:53 Er, well, just use the realname, then. 15:05:54 anyway why would it matter? 15:06:31 There it is, on the third results page, the HP-UX packages for a Befunge interpreter. Hopefully no prospective employers will bother reading that far. 15:06:33 fizzie: oh, you're the /author/ of GLfunge98? Didn't expect to find you alive with the program dead ;-) 15:07:14 fizzie, well how old were you? they can hardly think something you did while you were at university would matter for example 15:07:29 or that you did in your free time 15:07:36 I proudly display CCBI on my CV :-) 15:07:52 hm fizzie, you are from Finland? 15:07:53 I still from time to time get occasional pangs of regret over not continuing to play with GLfunge98, but not oftener than once every couple of months. 15:07:56 and even got a summer job in the building fizzie works in, if I read google correctly. 15:08:30 Deewiant, uhu? 15:08:31 If you mean the CIS lab at HUT, you've read correctly. 15:09:02 yeah, I'm just wondering if the building is in fact the same, or not. 15:09:23 I guess it's all in the same CS building so yes, I do believe so. 15:10:31 Actually I did have to give a 15 minute explanation about Befunge in a job interview for Nokia Research Centre (since I had "esoteric programming languages" in the CV) for a summer job in 2006, too, and got the place. Seems like it might even not be a negative thing. 15:10:44 (Although they were more interested in any Perl experience.) 15:10:53 Yeah, ditto. I wonder whether it was positive or negative. ;-) 15:11:11 fizzie, it shows a keen interest in programming on your free time? 15:11:15 probably a good thing then 15:11:22 I talked about Befunge, D, and Haskell whilst interviewing for a job which is probably mostly going to involve shell scripting, heh. :-) 15:11:33 And C, I suppose. 15:11:46 Deewiant, well you need to learn quotes in bash a bit then ;P 15:12:05 AnMaster: rather, I need to learn how they interact with builtin functions. 15:12:13 AnMaster: I'd just use them just in case anyhow, so it doesn't matter. ;-P 15:12:35 Deewiant, apart from in [[ ]], where quotes can sometimes be harmful 15:12:47 in [ ] they work as in normal context though 15:13:02 I don't use such esoteric syntax. ;-) 15:13:04 [ ] is same as test 15:13:10 Deewiant, hm? 15:13:20 [[ -f foo ]] 15:13:22 &c. 15:13:25 you use them in if [ "$foo" = bar ] say 15:13:36 -!- atsampson has joined. 15:13:41 -!- Sgeo has quit ("Ex-Chat"). 15:13:43 of course if grep foo works too 15:13:53 if ; then foo... 15:13:58 it is just about exit code 15:14:05 -!- Sgeo has joined. 15:14:16 -!- Sgeo has quit (Client Quit). 15:14:21 Deewiant, and [ ] as well as [[ ]] is just a test command 15:14:33 -!- Sgeo has joined. 15:14:33 but, [[ ]] got special quoting rules sometimes 15:14:41 and is extended from [ ] in other ways 15:15:01 What I think funny is that there's a /usr/bin/[ -- in a file name it looks ugley. 15:15:19 for example: both [ -z "$foo" ] and [[ -z "$foo" ]] test if $foo is" empty or unset" 15:15:33 [[ -z $foo ]] works too 15:16:03 [ -z $foo ] does NOT work, will be a syntax error if $foo is unset, or if it contains several words 15:16:25 oh and then there is the special issue of the regex =~ match that only exists in [[ ]] 15:16:46 bash 3.1 and 3.2 handles quoting differently in it 15:17:09 the 3.1 behaviour was buggy 15:17:14 but more logical IMO 15:17:21 And yet you think Perl's not-so-clear. :p 15:17:31 in 3.2 it forces a literal match if the regex is quoted 15:18:00 fizzie, well at least bash doesn't make every single ASCII char be an operator 15:18:08 perl is close to that 15:18:29 and befunge much closer. :-) 15:18:37 Actually Perl 6 goes and makes some Unicode chars operators, too. :p 15:18:49 Deewiant, indeed 15:18:53 Like the single-character versions of the '<<' and '>>' quotes. 15:19:00 eww 15:19:19 eww? I think it's rather nice actually 15:19:22 fizzie, UTF-8, or UTF-16 or what? 15:19:24 get some decent looking code 15:19:32 AnMaster: Unicode. UTF-* is just the encoding. 15:19:35 Deewiant, well my keyboard lacks such keys 15:19:44 Deewiant, yes I know, but what one does perl read source as 15:19:53 probably any. 15:20:00 I would guess Perl 6 defaults to Unicode. 15:20:02 well how could it know what one 15:20:02 AnMaster: then you can type '<<' if you don't have the key. 15:20:09 byte order markers exist 15:20:16 hm 15:20:17 you can always tell UTF-* apart 15:20:28 the only problem is UTF-8 versus legacy encodings like ISO-8859-* 15:21:19 Recent versions of Perl 5 have a "use utf8;" pragma for writing identifiers-that-have-Unicode-chars, and also 'use encoding "foo"' for any supported encoding. 15:21:30 well that's the point of UTF8, old programs being able to read the same file 15:21:49 a point, yes. 15:21:57 Deewiant, one important one 15:22:01 yes. 15:22:35 on unix you could make, say, /etc/fstab utf8 in comments, and it would not break old apps reading the file 15:23:33 or /etc/passwd GECOS field could be able to contain names with åäö in them 15:24:06 or as long as I don't use non-ascii here on irc, anyone that can read ASCII can read what I say, even though my client sends utf8 15:25:13 but if you send UTF-8 and the receiving end assumes it's ISO-8859-1 it gets garbage. 15:25:27 that's a tradeoff. 15:25:28 Perl 6 operators grepped from my irclogs, might be outdated: there's ^_= and »+^« and ^..^ 15:25:36 :-) 15:26:38 ^..^ is the current ".." range operator but excluding the endpoints; (5 ^..^ 9) is (6 .. 8). 15:28:11 But these were back in 2004. Haven't been following the Perl 6 saga since then, they might have sensiblized it. 15:28:23 -!- timotiis has quit (Connection timed out). 15:28:48 Deewiant, it gets even more garbage, with, say, UTF-16 15:29:19 AnMaster: but, with UTF-16, you can tell from the BOM that it is, in fact, UTF-16. 15:29:42 also utf-16 got more overhead when the data is mainly in ASCII range 15:29:46 as is common on irc 15:29:51 or config files for *nix 15:30:59 true that 15:49:56 -!- RedDak has quit ("Killed (NickServ (Comando GHOST usato da DIO))"). 16:29:33 -!- ehird` has joined. 16:29:46 oklofok: ANOTHER DAY, ONE TO WORK ON OKOHIRD-- 16:56:16 ehird`, "okohird--"? 16:56:19 what is that 16:56:51 AnMaster: my implementation of oklotalk-- 16:56:57 ah 16:57:06 what differs between the normal one and --? 16:57:33 -- has not muh syntax 16:57:34 and sucks 16:57:40 he has not made oklotalk yes 16:57:41 just oklotalk-- 16:57:42 *yet 17:01:32 k 17:01:44 ehird`, is the syntax that hard to parse? 17:02:18 AnMaster: Yes, there are no syntax errors 17:02:30 ({{{]) is valid 17:03:47 ehird`, and what would it do? 17:04:24 anyway befunge technically got no syntax errors either, it is perfectly valid to use an non-implemented instruction to reflect 17:04:31 AnMaster: I *think* ({{{[]}}}) 17:04:48 oklofok: am I right? 17:07:31 whuaa 17:09:00 { has a lower precedence than (, it would actually be ({{{([])}}}) 17:09:23 okay then oklofok 17:09:34 the rationale is to be able to do { ptrn -> ( expr expr expr } 17:11:02 oklofok: surely { ptrn -> expr expr expr } should be valid! 17:11:14 { x -> func x $hello } 17:11:25 { outn "wooty"; x -> func x $hello; outn "wotty" } 17:11:33 ambigious 17:11:34 but.. 17:12:28 it should know whether you mean (x -> func x $hello) outn "wotty"; or x -> (func x $hello; outn "wotty";) based on which is better. 17:14:21 oklofok: well, i am thinking 17:14:27 that you can introduce another seperator comma , 17:14:31 which has a lower precedence 17:14:32 so 17:14:43 { outn "wooty"; x -> func x $hello; outn "wotty" } 17:14:43 is 17:14:52 { outn "wooty"; x -> (func x $hello); outn "wotty" } 17:14:52 but 17:15:02 { outn "wooty"; x -> func x $hello, outn "wotty" } 17:15:02 is 17:15:07 { outn "wooty"; x -> (func x $hello; outn "wotty") } 17:15:16 oklofok: seems natural to me, and fits with english puncutation 17:15:18 well, comma exists already. 17:15:45 it works exactly like that for side-effects, but is in fact a third way to make a list 17:16:18 oklofok: oh. well i think you should drop commas for lists 17:16:19 because 17:16:20 a, b 17:16:21 [a b] 17:16:27 it's not that much different 17:16:28 and 17:16:30 a, b, c, d 17:16:31 [a b c d] 17:16:33 is shorter 17:16:38 a,b,c,d 17:16:40 is shorter 17:16:42 oklofok: and my way means stuff can be shorter 17:16:46 ok 17:16:46 but 17:16:47 anyway, true, it's not much use 17:16:49 which do you do more often 17:16:50 make a list 17:16:52 and i haven't used it much. 17:16:55 or have multiple exprs in a function 17:17:01 yeah, yeah, i know your point 17:17:05 i'll think about it 17:17:12 and [...] is nicer because with , 17:17:17 its hard to pick out where hte list starts and ends 17:17:21 hmm 17:17:29 there are elaborate rules for it 17:17:34 anyway, south park time :) 17:17:36 -> 17:18:11 oklofok: ok :) 17:31:12 * ehird` is sticking linux on this old crusty machine 17:31:29 I poked the distro chooser for a laugh. It's telling me Arch Linux, Slackware, OpenSuSE, Gentoo, edora 17:31:46 Arch and Gentoo seem the most likely ones I'd consider installing. 17:31:56 AnMaster: If you want to hype Gentoo, now would be the time. 17:32:06 Especially if you can convince me I'll have an installed system in hours rather than days. 17:35:00 depends on your processor speed. :-) 17:35:19 Deewiant: Slow. This is not my main machine. 17:35:24 * ehird` checks 17:35:44 Deewiant: 1.8ghz. 17:35:48 Some kind of AMD Smepron shit. 17:36:00 Windows says I have 480mb of ram, but that doesn't sound right. 17:37:26 might be a day then, but not day_s_. :-) 17:37:41 if you can leave it to compile the base system overnight it shouldn't be that bad. 17:38:28 Deewiant: Isn't there a fancy type of install that's precompiled? 17:38:30 Stage 3 or something. 17:38:42 I mean, ideally I'd like to be using it before the day's up. I know that's not particularly realistic, but 17:38:44 possibly, I'm not sure. 17:39:40 in 6 hours with that processor, certainly not from stage 1, I don't think. 17:39:45 depends on how big a base you want I suppose. 17:39:54 Deewiant: I would probably go for stage 3. That's the most compiled, isn't it? 17:40:06 I am not '-funroll-loops man', so :) 17:40:07 I'm not sure about how the later stages work. 17:40:13 :-) 17:41:26 Deewiant: Well, I don't see what other distro would work well. 17:41:31 Ubuntu sucks on here. 17:41:45 And the rest are either dead, related to Ubuntu or extremely minimalist. 17:42:10 Slackware is fine. 17:42:41 Deewiant: never really liked the feel of Slackware. 17:42:52 I like things such as, say, *dependency management* 17:43:13 :-) 17:45:21 AnMaster: If you want to hype Gentoo, now would be the time. 17:45:22 what? 17:45:24 I guess I could just do Debian. 17:45:27 AnMaster: you use gentoo. 17:45:33 ehird`, gentoo and arch are both good 17:45:35 I prefer gentoo 17:45:52 AnMaster: Right, right, just convince me that I can coerce gentoo into giving me a system _today_ 17:45:54 but well, gentoo, freebsd top the list, followed by arch 17:46:02 ehird`, well what is your CPU? 17:46:05 cpu[1 x AMD Sempron(tm) Processor 3300+ (AuthenticAMD) @ 2.00GHz w/ 128 KB L2 Cache] 17:46:08 is what I got here 17:46:59 ehird`, from first boot to KDE (base system, I never install games and such) installed about 5 hours iirc 17:47:02 AnMaster: amd sempron 1.8ghz. This is not my main computer, before you scream in horror 17:47:05 actually less maybe 17:47:11 ehird`, amd64 or? 17:47:18 AnMaster: No way! This is a lame 32-bit machiine. 17:47:24 And none of the hardware agrees with the ohter hardware. 17:47:26 hm ok 17:47:34 ehird`, oh? how do you mean? 17:48:10 AnMaster: its all incompatible in subtle ways that make it crash and creak 17:48:18 anyway about system today, depends on several things: local time, (if you start just before midnight, of course not), how much time you spend chatting on irc and so on 17:48:26 it was upgraded in a very cobbled-together fashion 17:48:29 ehird`, what components got issues with what ones? 17:48:33 AnMaster: and: time is 17:48 17:48:41 AnMaster: and, just about all of them 17:49:21 well I would start in the morning 17:49:37 ehird`, also I would do a stage3 17:49:45 first time you will need to read the manual 17:49:47 AnMaster: I need a system today, so unless you can convince me I'll install debian today and consider gentoo tomorrow 17:49:51 Yeah, i was thinking stage3. 17:49:58 ehird`, then go for arch 17:50:07 arch is good for being binary 17:50:17 AnMaster: Hmm. How does it differ from, say, debian unstable 17:50:29 ehird`, being sane 17:50:38 AnMaster: Debian's pretty sane 17:50:57 well last I checked they used *old* pre-release compilers in stable for example 17:51:17 AnMaster: Nobody uses stable. 17:51:46 ehird`, anyway arch is quite fast too on x86 17:51:58 and last I checked rather easy to install 17:52:09 AnMaster: I can install Debian in under an hour. 17:52:11 What about arch? 17:52:28 ehird`, it was quite some time ago I tried it, but I think less than half an hour 17:52:46 ehird`, however this may have been about 1-1.5 years ago 17:52:52 but shouldn't be worse I guess 17:52:54 AnMaster: that was a modern system presumably 17:53:08 ehird`, it was a p4 at 1.something GHz 17:53:12 512 MB RAM 17:53:18 IDE 80 GB drive 17:53:37 AnMaster: but the hardware was all compatible, I assume. 17:53:53 ehird`, can't check exactly as I no longer have the system in question, the power supply went for a smoke and I salvaged the bits that worked 17:54:12 ehird`, well I still don't see how they would be incompatible 17:54:19 you haven't given any example 17:54:21 I don't know. This machine is a demon. 17:54:27 It is pure evil itself 17:54:33 you got no examples then? 17:55:02 Not really except that it crashes for no reason and drops data because it feelsl ike it 17:55:20 -!- timotiis has joined. 17:55:27 ehird`, tried memtest? 17:55:50 apart from that I'd recommend trying to disable acpi 17:56:03 AnMaster: I should leave memtest running at one point. 17:56:14 Not sure what ACPI is, though. heard the term, but I don't know what it is. I'm silly, 17:56:32 ehird`, it is something for power managment, as well as "find out what the computer can do" 17:56:35 and a few other things 17:56:49 http://en.wikipedia.org/wiki/Advanced_Configuration_and_Power_Interface 17:56:56 ehird`, however it can cause issues sometimes 17:57:56 interesting 17:58:16 AnMaster: I think I will go for Debian, I don't really care about this system, I just can't bear Windows any more 17:58:31 ehird`, well windows probably cause the lockups then... 17:58:36 ehird`, give arch a try 17:58:39 AnMaster: Nah, I've used Linux on here before. 17:58:43 It's actually less stable. 17:58:50 ehird`, what distro did you use on it? 17:58:51 debian? 17:58:55 various 17:58:59 ehird`, list? 17:59:06 AnMaster: lesse... 17:59:09 and was debian included in it? 17:59:17 FreeBSD, debian, ubuntu, fedora, slackware, and others 17:59:36 then maybe time to try arch 17:59:41 and see if it is more stable 18:00:33 Maybe. 18:00:36 ehird`, anyway my system is quite stable, even though I got quite a mix of components 18:01:50 ie, a sound card with midi from 2003 or so, a new geforce card from last year, and so on 18:01:56 I did try suse, it was quite unstable under it, same for debian, but gentoo did turn out to be stable 18:02:05 only tried arch later, on another computer 18:02:44 ehird`, but since gentoo does need some patience at first install, it is probably best to try arch 18:03:34 ehird`, oh and download time for cd was not included in the "half hour" for arch 18:03:40 I don't know how long it took to download 18:03:50 but I had a bad connection back then 512 kbps down 18:03:55 so quite long I suspect 18:10:40 AnMaster: woot, 600kB/sec 18:10:43 i love my internet connection 18:10:50 it is made of love 18:10:53 and hugs 18:10:57 ^^ TRUTH 18:11:43 well I got 8 mbit down, that means about 450-550 kilobyte / sec here 18:12:51 And this university student village 100Mbps connection means around 9 megabytes / sec from many places. 18:14:19 AnMaster: ditto 18:17:51 ehird`, well arch it is then? :) 18:18:25 AnMaster: No, Debian. I will probably try Gentoo tomorrow. 18:18:28 But for today, this is fastset. 18:18:32 I've already downloaded it. 18:18:41 ehird`, arch is good if you want binary 18:18:56 Too late. 18:19:01 It's burning now 18:19:36 gentoo need a bit more patience, but things are easy to fix if they break, and they don't break often 18:19:38 much easier to fix than when say debian breaks 18:20:44 Ohw Ell. 18:20:46 It's burned. 18:20:50 See you in $TIME 18:22:05 -!- ehird` has quit (Read error: 104 (Connection reset by peer)). 18:26:01 Personally my experiences wrt. the fixability of Debian and Gentoo have been exactly the opposite, but on the other hand I haven't touched Gentoo since 2003 or so. 18:28:19 -!- ehird` has joined. 18:28:58 eh 18:29:01 need to get a bigger one 18:29:23 AnMaster: did I mention that the 600kB/sec speed was on wireless 18:29:31 The people who send me spam can probably help. 18:30:01 ehird`, hm? 18:30:08 bigger what? 18:30:12 ehird`, cd? arch then 18:30:17 -!- ehird has joined. 18:30:24 but yeah. 18:30:26 that was just wireless 18:32:20 -!- ehird has quit (Read error: 104 (Connection reset by peer)). 18:42:46 -!- timotiis has quit (Connection timed out). 18:45:35 -!- olsner has joined. 18:49:13 -!- ehird` has quit (Read error: 113 (No route to host)). 18:55:10 -!- jix has quit (Nick collision from services.). 18:55:20 -!- jix has joined. 19:00:11 -!- jix has quit (Nick collision from services.). 19:00:15 -!- jix has joined. 19:10:06 -!- ehird has joined. 19:10:09 hello from a new debian system 19:10:20 it works, basically. 19:10:27 is debian's gnome meant to feel non-smooth? 19:10:30 oh wait, maybe i need gfx drivers 19:44:37 ehird, KDE may work better 19:44:50 * AnMaster runs 19:44:54 AnMaster, Don't feel like KDe today. 19:44:55 oklofok, Hi. 19:52:35 oklofok, Ping 19:53:05 ölonmg 19:54:23 yay 19:54:39 oklofok, ehird@debian:~/src/oklotalk$ python okofficial/cli.pyc 19:54:39 RuntimeError: Bad magic number in .pyc file 19:54:39 ehird@debian:~/src/oklotalk$ python -V 19:54:39 Python 2.4.4 19:54:52 * ehird installs 2.5 19:57:36 oklofok, btw you got the pyc files for me? I don't have python 2.5 19:57:39 only 2.4 20:02:05 AnMaster, just install 2.5 20:02:43 class DisregardThat(object): # I considered appending 'ISuckCocks' to the name of this lass 20:02:45 *class 20:05:05 :-D 20:05:45 bah 20:05:49 my parser is broken 20:05:53 it can't handle comments nicely 20:06:27 oklofok, can you show me your parser src :( 20:13:24 oklofok, haha, my interp's thing->string shows the actual code 20:13:25 :D 20:16:28 ehird, can't you disassemble the pyc 20:16:52 AnMaster, yes but only to the bytecode instructions 20:16:54 which are stack-based 20:17:00 and thus very unhelpful for reading 20:17:19 ah I see 20:17:33 oklofok, why not open source 20:19:03 AnMaster, its for a school project 20:19:08 so he doesn't want to release it until the 20:19:20 incidentally this is the 3rd time you've bugged him about it being closed source 20:19:34 can you simply not accept the fact that closed source software exists? 20:19:56 :( 20:20:28 some of it is even *good* 20:20:59 oklofok, scoping question 20:21:03 if i have a var A in another scope 20:21:08 then we have a nested scope inside that 20:21:09 and set A 20:21:12 is the outer scope's A mutated, 20:21:19 or is it just created in the inner one 20:21:22 and shadowed 20:34:01 oklofok, qutie important 20:37:58 ehird: comments are trivial to do 20:38:08 just keep the sum of open comments or soemthing 20:38:10 oklofok, yeah 20:38:14 oklofok, oh crap 20:38:15 i don't do nesting 20:38:16 heh 20:38:17 inc on <--, dec on --> 20:38:18 oh 20:38:24 well then ofc even more trivial :P 20:38:24 oklofok, and yeah, its just that i have a method 20:38:26 .parse_one() 20:38:31 okay 20:38:31 which is expected to return a value 20:38:34 and is called in a loop 20:38:34 BUT 20:38:40 i can't just recurse after a comment, .parse_one() 20:38:42 and comments return nothing so boom? 20:38:44 because if the comment is at the end.. 20:38:49 i have to pretend i was never called 20:39:04 whhhell, i'm sure you can fix that on your own :P 20:39:08 so my hack is: .parse_many() gives a special param, after a comment, if the src is over and it is set, we return none 20:39:10 otherwise, unexpected EOF 20:39:14 and parse_many() checks for None 20:39:18 "parsing is trivial", a guy once told me 20:39:24 you know who taht was? 20:39:26 *that 20:39:31 :))) 20:39:38 indeed! 20:40:06 okay, back to watching! 20:40:10 oklofok, but 20:40:10 i'm leaving you 20:40:11 -> 20:40:12 what about scoping 20:40:15 ...but? :| 20:40:16 i asked a question about it 20:40:16 :( 20:40:19 oh 20:40:22 oklofok, scoping question 20:40:22 aaand hmm 20:40:22 if i have a var A in another scope 20:40:22 then we have a nested scope inside that 20:40:22 and set A 20:40:22 is the outer scope's A mutated, 20:40:23 or is it just created in the inner one 20:40:25 and shadowed 20:40:25 lessee 20:40:27 oklofok, qutie important 20:40:38 only created in inner one 20:40:52 oklofok, so how do i mutate outer variables 20:41:08 there will be other ways to set vars, but i'm not gonna tell you what they are, because you'd implement them, and i'd then have to do that too. 20:41:11 you don't. 20:41:15 or make setters 20:41:25 oklofok, actually, could you give me a basic scoping stress-test 20:41:28 so i can verify i get it right 20:41:33 asd 20:41:48 you know the chick i was talking about 20:41:53 she's threatening me 20:41:59 i have to watch an episode now 20:42:01 hahaha 20:42:02 perhaps after taht :| 20:42:04 *that 20:42:08 goodbye 20:42:12 bye 20:55:30 -!- Slereah has quit (brown.freenode.net irc.freenode.net). 20:56:05 -!- Slereah has joined. 21:01:10 Slereah, hello 21:02:57 Hai. 21:03:39 -!- Iskr has quit ("Leaving"). 21:08:08 AnMaster, look at me! I just installed non-free software! 21:08:17 ehird, oh? 21:08:19 good to know debian is no longer run by idealist idiots 21:08:22 ;) 21:08:48 AnMaster, Yeah, enabled the etch non-free repo and installed the Sun Java JDK. It is the only one that supports the newest stuff. 21:08:54 Most of the compilers don't even get 1.5 right. 21:08:58 So the apps I use in java won't work 21:14:54 cute: 21:14:56 enum TinyHelloWorld{T;System s;{s.out.println("Hello, world!");s.exit(0);}} 21:15:04 that, as far as I can tell, is the shortest java hello world you can get 21:15:07 vs: 21:15:33 public class HelloWorld{public static void main(String[]a){System.out.println("Hello, world!");}} 21:24:54 -!- jix has quit ("CommandQ"). 21:33:46 -!- ais523 has joined. 21:34:20 hello ais523 21:34:31 hello ehird 21:35:52 wow, there was actually more discussion about BackFlip 21:36:01 I've been thinking about it a bit recently 21:36:34 I think it would be TC if you repeated the program as a cylinder, so that the left and right sides of the program were identified, and the program was repeated vertically an infinite number of times 21:38:02 ais523, I think I am going to implement one of your rewriting languages in somethiing silly. 21:38:13 like Underlambda in m4? 21:38:27 No, that's for you :P 21:38:54 ais523, Maybe Forte in Thutu. 21:39:05 ehird: I already did that, more or less 21:39:16 the only Forte interp I know of was written in wimpmode Thutu 21:39:29 (where I extended it to allow easy arithmetic) 21:39:47 OK, then 1cnis 21:39:55 Though it looks complex. 21:40:07 Actually. 21:40:11 Underload in Thue. 21:40:28 Underload in Thue sounds good 21:41:00 ais523, I don't think I can do output though 21:41:03 1cnis would probably be harder due to the need to synchronize things so that they happen effectively simultaneously 21:41:18 Well, I mean literal output 21:41:18 ah, this means you can soon have underload in mod_rewrite using my thue-to-mod_rewrite compiler 21:41:22 I could probably REWRITE output. 21:41:30 olsner, I need to see that! 21:41:32 and although it isn't mine, a Xigxag in Thue would be interesting too 21:41:34 Though it's pretty trivial 21:41:54 ehird: you could use Underlambda-style output, where S outputs a function not a string 21:41:58 yeah, four lines of sed and a few bootstrap rewriting rules in an apache config 21:42:24 ais523, No, I mean, Thue can't output text from the initial rule. 21:42:26 Just hardcoded 21:42:34 olsner: why noy use cat as the CGI script that shows the final output 21:43:01 Beh. Thue is too primitive for this. 21:43:01 ehird: with Underlambda-style output you only need to be able to output the command characters, not all characters 21:43:11 hmm, the final results is in the query string, and I don't think that comes on standard input 21:43:17 ais523, Have you tried Oklotalk-- by the way? 21:43:24 olsner, redirect on PATH_INFO 21:43:29 /rewrite.cgi/FOO 21:43:34 rewrite.cgi: 21:43:36 olsner: you're right, it comes in an environment variable for GET, and on stdin for POST 21:43:38 #!/usr/bin/env perl 21:43:44 otoh, maybe you can rewrite things into post variables 21:43:45 print $ENV["PATH_INFO"]; 21:43:47 i think. 21:43:59 ais523, But yeah -- oklotalk-- 21:44:02 ehird: your Perl is atrocious 21:44:07 ehird: I've seen bits of it but not used it 21:44:07 And yes! 21:44:07 It is! 21:44:10 it looked interesting 21:44:16 my Perl is totally atrocious 21:44:19 and that Perl statement should have used curly brackets 21:44:20 Because I don't know Perl 21:44:23 ehird: in this case, I have a php script that does echo $_SERVER['QUERY_STRING'] or whatever the actual names are 21:44:25 Oh yes, that. 21:44:26 $ENV{"PATH_INFO"} 21:44:36 Make it a MODERN reference! 21:44:45 $self->env->{"PATH_INFO"} 21:44:59 ehird: I think that can be done with blessed objects 21:45:11 ais523, yes it can 21:47:22 ais523, Hmm. I want to make a Lambda Calculus macro system 21:47:24 Might be interesting 21:47:57 or write a lambda-calculus-to-Underload-compiler in Thue or some similar language 21:48:05 lambda calculus to underload 21:48:07 hmmm 21:48:14 not for thue 21:48:20 ais523, thue can only deal with very restricted formats 21:48:20 I tried to do one as rewrite rules as a way to specify how lambdas worked in Underlambda 21:48:34 ehird: well, I limited variable names to x, y, and z 21:48:45 possibly w as well, I forget 21:49:16 ais523, But with placeholders, I bet. 21:49:20 Thue is just string->string. 21:49:35 well, I've been designing a new rewriting language that I haven't told anyone about yet 21:49:44 it's interesting, but likely to be very hard to implement efficiently 21:50:01 i'd be interested in having a go 21:50:24 the rewriting is done on graphs rather than on strings 21:51:24 making it a sort of 2D Thue 21:51:57 I was going to call it Eodermdrome, and it looks like someone may have to ask me what it means because neither Google nor Wikipedia seems to know 21:52:13 ais523, sounds like graphica 21:52:15 I'll have to track down the book I learnt the word from, so I can use it as a source to write about it 21:52:27 ehird: quite possibly it's been done before 21:52:29 hmm, graph rewriting = haskell (in some abstract sense... according to what I hear) 21:52:36 the lang looks more like Haifu, though 21:52:44 except mostly using nonsense words, or nonsense sentences 21:52:47 ais523, graphica is oklofok 21:52:48 if you're talking nodes+vertices graphs rather than x/y graphs 21:52:50 and I kept the comma=comment idea 21:53:30 i have always wanted to make a language which is JUST powerful enough to be non-trivial (very low barrier) and powerful enough to represent all of its own model in itself 21:53:37 so it can represent the interpreter, call stack, etc. 21:53:43 but there must not be one unexposed bit 21:53:50 call it Ouroboros 21:54:10 so it can self-interpret, but isn't TC? 21:54:19 ais523, not what i meant 21:54:20 not self-interpret 21:54:21 but 21:54:28 imagine a language where the call stack was a first-class object 21:54:31 smalltalks have them 21:54:34 it's called CallStack or similar 21:54:44 well, that's a bit of the interpreter 'eaten up' by the language it hosts 21:54:51 now, the idea is to have EVERY SINGLE PART eaten up 21:54:56 even the parts that do the eating up 21:56:04 some sort of massive reflection, then 21:57:47 ais523, except it's not reflection 21:57:49 it's THERE 21:57:52 you don't need a mirror 21:57:54 yes 22:00:30 ais523, wow, g++'s error messages just rock 22:00:32 XD 22:00:49 ehird: which one in particular did you like? gcc's are quite good, are g++'s even better? 22:01:05 it was a joke 22:01:23 you get used to seeing many>,abc>> 22:01:27 on even the most basic errors 22:02:08 ehird: I'd say that's being kind to the programmer by providing lots of information to help them track down the problem 22:02:23 ais523, No -- you can literally have one basic error in a 10-line program 22:02:31 and it will quote 15 STL templates 22:02:39 with an unhelpful error message 22:02:45 ehird: but they're part of your program too, they were just written by someone else 22:03:04 ais523, You don't understand: STL templates use each other to depths exceeding 100. 22:03:13 They are *never* helpful to know. 22:03:29 ehird: your last two statements contradict each other 22:03:37 ais523, try coding c++ some time. 22:03:44 actually don't 22:03:45 it's awful 22:03:49 templates using each other to depths exceeding 100 is a great sort of thing for esolangers to like 22:03:56 and I learnt C++ before I learnt C 22:04:02 but it was old-style C++ 22:04:10 before it had STL or even namespaces 22:04:16 the string class was nice, though 22:05:00 ais523, default arguments with the magic setter stuff is so much fun... 22:05:09 you never have to write a function body again! 22:05:13 yay default arguments 22:05:24 Actually, you never have to write values again, since C++ templates are turing complete 22:05:27 Not only that, 22:05:30 they're a lazy functional language. 22:05:38 About 10x nicer than C++ itself. 22:05:58 ehird: see, /that's/ what the error messages are for! 22:06:01 ais523, Not only are they a lazy, turing complete, functional language, they're a lazy, turing complete, strongly-typed functional language. 22:06:14 ehird: in other words, Haskell 22:06:23 ais523, Exactly! 22:06:36 But there's no meta-templates, so you can't use parametized types in the code. I don;'t think so at least. 22:07:07 ais523, http://reddit.com/info/6fasr/comments/c03p4mn Maybe monad in C++ templates 22:07:13 http://reddit.com/info/6fasr/comments/c03oswa Translation for LC->C++ templates 22:07:32 ais523, And finally, a translation of lambda calculus church numerals to C++: http://reddit.com/info/6fasr/comments/c03ongu 22:07:46 As for Peano numerals: 22:07:48 struct Zero {}; 22:07:48 template 22:07:48 struct Succ { T v; }; 22:10:24 ais523, A toy C++ program I just wrote to refresh my memory (It's easy to forget everything about C++ in a few months) 22:10:28 contains this wonderful constructor 22:10:28 Greeter(std::ostream &output = std::cout) : out (output) {} 22:10:38 note: no function body 22:10:40 that is actually (pseudo-code): 22:10:55 -!- oerjan has joined. 22:10:55 Greeter(std::ostream &output = std::cout) { this.out = output; } 22:11:00 ehird: that still looks strange to me, I learnt C++ before the typename keyword was invented (they used to use 'class' back then, which was confusing because the same keyword was used for two things, and it could refer to non-classes too) 22:11:04 wonderfully esoteric 22:14:07 ais523, Actually, it startles me how clean you can make lambda calculus stuff with templates. 22:14:11 It's not unpleasant, really. 22:14:20 ehird: templates are lambda calculus, more or less 22:14:36 ais523, Nicer actually - they have arithmetic and everything 22:14:57 If using them without C++ underneath wasn't considered esoteric, I'd be coding in them :p 22:15:06 boost is cool though 22:16:45 why do so many people hate C++? 22:16:58 it has lots of features that some people don't like, but nobody's forcing you to use them 22:17:10 I can write C++ which is just C + the string class if I like 22:17:23 ais523, C++ pretends C is something it's not. 22:17:27 I personally hate it, but it's fun. 22:17:58 C++ is a continuum of languages, from C to some sort of crazy OO template thing and everything in between 22:18:08 so it's a good language for writing things which are slightly object-oriented 22:18:25 lambda.cc:8: error: type/value mismatch at argument 1 in template parameter list for ‘template class > class > class T’ 22:18:32 ais523, error messages are fun 22:18:55 ehird: that looks like a really informative error message to me, and I'm not being sarcastic 22:19:21 in this case, it's an argument type mismatch, so it's saying you have to pick an argument which really does have that crazy type, not some other crazy type 22:19:24 ais523, yes 22:19:28 sidenote: 22:19:37 templates TOTALLY fuck up 'declaration-as-usage' :D 22:19:39 usage: 22:19:45 T -> typename T 22:19:53 T -> template class T 22:20:08 T> -> template