00:00:18 although I strongly suggest that numbers are optimised; that's possible in Underlambda because there's no way to distinguish two data if they do the same thing in all cases 00:00:22 (and all data are functions) 00:00:58 ais523: underlambda->c compiler: dibs on it 00:01:13 ehird: it's specifically designed to be compilable 00:01:21 and also so that Unlambda can be compiled into it 00:01:27 thus allowing an Unlambda -> C compiler 00:01:33 dibbsss 00:01:40 if you can handle the C command, you're well on your way to writing the compiler 00:02:00 (it looks so simple on the rewrite rule, but I put a lot of thought into that one; it can be used to implement call/cc, for instance) 00:02:28 cool 00:02:40 include landarins J 00:02:43 :D 00:03:42 ehird: what's that? 00:04:51 ais523: hard to explakin 00:05:00 c/cc on steroids 00:05:31 ehird: C captures the entire state of the program, in such a way that it can be edited to some extent (but not enough to make compilation impossible) and then run 00:05:54 you can use it to implement call/cc by simply editing the result of C a bit and then using it as your continuation 00:06:20 it would be great if it could implement J too, whatever it is 00:07:09 ais523: does it have variables? 00:07:20 ehird: not exactly 00:07:25 but there are various ways to simulate them 00:07:30 :/ 00:07:57 For instance, all Brainfuck programs with no comments become legal Underlambda programs if you add the magic line and | at the end 00:08:07 although I haven't put [],. in the spec yet 00:10:23 the stack is good to use for temporary variables 00:10:27 and you can use lambdas as well 00:11:00 I might also implement some sort of 'variable storage' at some point which allows you to store and retrieve functions in a hash table, exactly like global variables work in imperative languages 00:11:13 and I might make each of them a STASH like in INTERCAL so you could have scoping 00:11:23 if I do that, it would probably go in Tier 3 00:22:12 ais523: I feel like spceifying a minimal concatenative language based on rewrites. 00:22:13 So I will. 00:23:06 ais523: Hmm 00:23:09 What about one with no [...]? 00:23:18 The only way to get a quotation is 'dei' 00:23:21 (de-i) 00:23:31 which [...]s the last execution step 00:23:37 but of course you have to execute it first 00:23:39 making stuff tricky 00:24:10 -!- BMeph has joined. 00:24:25 [...] is what makes a language concatenative, generally speaking 00:24:34 although I suppose you might just about be able to create one without it 00:24:39 ais523: well, what i mean is 00:24:45 foo dei => [foo] 00:24:47 but it would probably end up just being lambda calculus or something like that 00:24:49 but since 'foo' executes first... 00:24:54 so like 00:25:02 2 dup dei => 2 2 [dup] 00:25:08 so you'd have to do 00:25:16 2 dup dei swap drop => 2 [dup] 00:25:30 dup a dei doo dah 00:26:04 Whatcha talking about? 00:26:18 Factor? 00:26:23 Deformative: no 00:26:35 Then what? 00:26:43 this 00:27:28 * Deformative is waiting. 00:28:42 ehird: so dei's like ' in Underlambda, but its argument gets evaluated anyway? 00:28:56 hmm... manipulating deis would be fun 00:29:00 ais523: pretty much 00:29:06 2 dei dei swap drop => [dei] 00:29:09 basically, it's like this: 00:29:18 after each word is executed, you save it in the 'last' variable 00:29:28 'dei' just pushes a quotation of the last word 00:29:34 you'd also have 'compose' of course 00:29:36 so: 00:29:38 ehird: there'd be no way to get [quit] 00:29:48 ais523: but of course 00:30:06 2 dei dup dei compose drop drop => [2 dup] 00:30:09 being able to write (Q) (or 'Q) is needed for Underlambda to be able to do call/cc 00:30:13 cooooooooooool :D 00:30:21 ais523: meh, i'm thinking about it in a purely functional manner right now 00:30:35 Q and A are sort of opposites in Underlambda 00:30:42 Q deletes the program, A deletes the stack 00:30:44 ais523: like my idea though? :D 00:30:51 ehird: it's interesting 00:31:03 not sure it'll lead to a very usable language, but somehow I don't think that was your aim 00:31:19 What language has [...]? I thought I came up with that all on my own. 00:31:20 Heh. 00:33:06 ais523: dips rewrite rule is simple :D 00:33:07 [X] Y dip => X Y 00:33:21 ehird: eys 00:33:24 s/eys/yes/ 00:33:27 dip is _ in Underlambda 00:33:39 but I haven't written it into the spec yet, or the reference interp, so it only exists in my head 00:34:06 you can implement _ as ~a*^ 00:34:59 so what's simpler? _ => ~a*^ or (x)(y)_ => y(x) 00:35:24 (are the X and Y the wrong way around in your rewrite rule, actually?) 00:35:56 and no, ais523 00:35:57 it's ... TOP 00:36:00 err 00:36:00 wait 00:36:02 you're right 00:36:22 X [Y] dip => Y X 00:36:45 I have a vision of somewhere (maybe Tier 5) of being able to write your own rewrite rules at the start of the program, sort of like Lisp macros 00:37:38 ais523: wrote a spec for my thing 00:37:43 ais523: also, have user-definable synta 00:37:43 x 00:37:43 :D 00:37:57 ehird: that's pretty much what that rule would do 00:37:59 http://pastebin.ca/943111 00:38:08 i am going to work on a factorial 00:38:11 err wait 00:38:13 i need compose 00:38:17 ais523: btw 00:38:21 [X] dei => http://en.wikipedia.org/wiki/Special:Search?go=Go&search=X 00:38:24 err. 00:38:25 well 00:38:25 :D 00:38:29 [X] dei => [ [X] ] 00:38:34 but 00:38:36 you can't do that literally 00:38:36 so. 00:38:50 so i need a special 'curry; 00:38:55 are you implementing wrap? 00:39:01 ais523: guess so 00:39:01 heh 00:39:31 ais523: http://pastebin.ca/943115 00:39:32 new spec 00:39:40 ehird: it looks like you're implementing negative numbers. Stop it. 00:40:03 Negative numbers don't exist except in reversible languages, because you can't do something a negative number of times 00:40:03 ais523: haha, why 00:40:03 :P 00:40:08 hmm 00:40:09 true i guess.. 00:40:16 ais523: but they're just atoms 00:40:20 and there's no "do n times" thingy 00:40:39 ehird: in Underlambda the number n is the function that transforms a function into that function composed with itself n times 00:40:43 ais523: not in this. 00:40:49 ais523: anyway, hm, recursion is hard with this language 00:40:51 maybe impossible.. 00:40:57 since you have to do it to dei it 00:40:57 ehird: but then you have more than one data type 00:41:04 ehird: what about implementing sii? 00:41:05 * ehird adds a 'while' to simplify things 00:41:08 ais523: ooh, good idea 00:41:40 ais523: wait 00:41:42 what would that do 00:41:42 :| 00:41:50 hm 00:41:51 [X] sii => [X] X 00:41:54 it's :^ in Underlambda/Underload 00:42:01 so [X] sii => [X] X 00:42:05 heh, snap 00:42:11 ais523: maybe I should do Y 00:42:11 :D 00:42:15 wait, impossible 00:42:16 xD 00:42:52 ais523: dup drop dei => [drop] 00:42:53 useful 00:43:10 ehird: all reversible combinators can be deid easily 00:43:31 ais523: yeah 00:43:48 but i'm having trouble dei'ing [1 - swap sii] 00:43:52 for certain values of reversible 00:43:54 i'm trying to implement this 00:44:04 : make0 dup 0 = [drop] [1 - make0] if ; 00:44:07 for instance, a 'invert order of stack' combinator would be hard to dei 00:44:19 because your [invertstack] would end up on the /bottom/ of the stack 00:45:03 ais523: invertstack dei dup dip 00:45:05 wait, no 00:45:08 you'd need another dip 00:45:09 arrgh 00:45:42 the problem is, to dip around the invertstack, you need a dei'd invertstack, so you have a chicken-and-egg problem 00:45:49 ais523: any ideas on my make0 btw? 00:46:04 you have to write the function, remove the recursion, dei the whole thing, then sii it i guess 00:46:07 no, I'm trying to concentrate on something else in RL 00:46:12 but i'm stuck on writing the function :) 00:46:24 ais523: think this is TC? 00:46:24 i don;t 00:46:44 ehird: it's probably TC but probably hard to write programs in 00:46:55 ais523: probably tc? really? 00:46:59 i wouldn't think s 00:46:59 o 00:47:00 if you can implement s, k, and apply, you're done, after all 00:50:53 I think it's possible to implement s and k, and i=apply, but you'd have to write the program in the first place using deis 00:51:44 hmm... it's possible to get [wrap], [drop], [dup], [swap], [i], and [compose] easily enough 00:51:55 so all you have to do is get some TC Underload program 00:52:23 then flatten it so that it never quotes more than one combinator in a row (which is easy with a few rewrite rules) 00:52:35 then just dei each of the combinators, and you're done 00:52:41 e.g. (:^):^ 00:52:58 would be [dup] [i] compose wrap [dup] compose [i] compose 00:53:25 and [dup] and [i] are both easy to dei onto the stack 00:53:34 so the language is TC, I've just informally proved it 00:54:18 maybe I'll write an Underload-minus-S (i.e. Underlambda Tier 1) to your language compiler, it wouldn't be too hard 01:00:07 ais523: interesting 01:00:07 :) 01:02:57 ehird: http://pastebin.ca/943140 01:03:21 a 'flattener' for your language that takes a program using [] and Underlambda-tier-1 combinators and transfers it into one using dei 01:03:22 -!- timotiis has quit ("leaving"). 01:04:24 ais523: woo 01:04:24 :D 01:04:33 see, I told you it was TC 01:04:46 ais523: I think that could be regexpable actually 01:04:46 :P 01:04:54 (caveat: you need at least one element on the stack to start with unless it magically fills itself, but you could just write 0) 01:05:08 ehird: using recursive regexen (like Python and Perl5.10 have), yes 01:05:12 otherwise, no 01:05:36 -!- ais523 has quit ("it's past midnight"). 01:12:19 -!- oerjan has quit ("Good night"). 01:59:49 well, bye everyone for today 01:59:54 see you all tomorrow :) 02:00:02 -!- ehird has quit ("Konversation terminated!"). 02:24:40 -!- Deformati has quit (SendQ exceeded). 02:45:27 -!- GregorR-L has joined. 02:50:28 Fastest way to get the integral square root of an integer with no FPU? 02:51:55 -!- Tritonio_ has joined. 02:57:34 binary search? 02:57:41 dunno 02:57:50 lotsa ways 02:57:53 probably just iterate newtons methods 02:57:57 -s 03:02:46 -!- Corun has joined. 03:04:19 -!- calamari has joined. 03:19:13 -!- Tritonio_ has quit (Remote closed the connection). 03:51:27 -!- Corun has quit (Read error: 110 (Connection timed out)). 05:01:11 * oklokok made his first thue program! 05:01:15 ski interp 05:01:30 not sure it works yet, just tried some simple examples 05:11:49 `````s``s`ks``s``s`ks``s`kk`ks``s``s`ks``s``s`ks``s`kk`ks``s``s`ks``s`kk`kk``s`kki``s`kk`ki``s``s`ks``s`kk`kk`kiski evaluates correctly, i'm convinced 05:11:52 :D 05:25:35 -!- GregorR-L has quit ("Leaving"). 05:40:20 http://www.vjn.fi/oklopol/thue.txt 05:40:50 i'm fairly sure that's all i'm ever going to do with thue without code generation :D 05:42:01 perhaps i should do that brainfuck self interp 06:00:42 http://video.google.com/videoplay?docid=-7974828993993586658 06:03:02 * pikhq performed that earlier today (not that recording, though) 06:07:19 oklokok, in PSOX? 06:07:33 anyways, g'night 06:07:38 Goodnight all! 06:08:40 -!- Sgeo has quit ("Ex-Chat"). 06:22:15 -!- calamari has quit ("Leaving"). 06:57:19 -!- BlackMeph has joined. 06:57:23 -!- BMeph has quit (Read error: 104 (Connection reset by peer)). 06:57:32 -!- BlackMeph has changed nick to BMeph. 07:02:01 -!- BlackMeph has joined. 07:03:57 -!- BMeph69 has joined. 07:13:31 -!- adu has joined. 07:16:22 -!- BMeph has quit (Connection timed out). 07:20:30 -!- oklokok has quit (Remote closed the connection). 07:20:58 -!- oklokok has joined. 07:21:01 -!- BlackMeph has quit (Read error: 110 (Connection timed out)). 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:24:46 -!- adu has quit (Remote closed the connection). 10:17:24 Deewiant, what is this from strn.d about: static assert (cell.sizeof == 4 && cell.min < 0, "Need more than 11 chars here"); 10:35:38 real 0m0.085s 11:00:24 -!- sebbu2 has joined. 11:08:12 -!- sebbu has quit (Read error: 110 (Connection timed out)). 11:08:12 -!- sebbu2 has changed nick to sebbu. 11:14:13 AnMaster: it probably (I don't have the code here, at school) uses a static buffer of 11 chars 11:14:27 AnMaster: which means that if you have a 64-bit int, for instance, it won't fit. 11:14:35 ah I see 11:14:44 * AnMaster is wrestling with cmake atm 11:15:36 ah that's fixed 11:15:52 -!- faxathisia has left (?). 11:16:32 Deewiant, now cfunge compiles with no warnings here, using either 32-bit or 64-bit data type, I got no idea if that is also the case on 32-bit platforms. I still get a single warning when using -DNDEBUG however 11:18:19 wtf *looks again* 11:26:51 -!- oklokok has quit (Remote closed the connection). 11:37:34 -!- oklokok has joined. 11:42:50 Deewiant, I admit, doing it in D is simpler: That the size of the stack stack is 0 11:42:51 BAD: should be at least 1, assuming 1 11:42:51 That the stack sizes are [ 41 ] from top to bottom 11:42:51 That the command-line arguments were: [ "▒" "/mycology/mycology.b98" ] 11:42:54 * AnMaster debugs 11:43:39 now, everything pushed on stack seems ok, so would be useful to have ccbi print each instruction as it runs it so I can compare 11:57:42 -!- ais523 has joined. 12:37:10 -!- Hiato has joined. 12:44:31 Deewiant, the stack matches for ccbi and cfunge in the interesting part, so that's not the problem, but they show different output for time, up to and including date everything is fine in mycology 12:44:59 after that y output is more or less garbled for cfunge, until environment variables 12:45:02 * AnMaster wonders wtf 12:45:46 AnMaster: is it possible that you're pushing the wrong number of elements onto the stack? 12:46:16 that way all the ouput would be displayed in the wrong section in the wrong format, leading to that sort of problem 12:46:18 ais523, I dumped stack from both ccbi and cfunge, they match in size for elements 12:46:35 up to, and past the section we are discussing 12:46:38 are any of the elements themselves a count of elements? 12:47:30 ais523, well yes, items of stack and such, but I verified those, the only ones that differ are handprint, interpreter version, exact time, and supported features 12:48:21 wtf 12:48:47 ais523, when I build with -fstack-protector-all it works, when I don't it fails, and this is -O0, so it isn't due to optimizing too much 12:49:42 actually now it works without -fstack-protector-all too, but I did make clean before, so it can't be due to broken build before 12:49:43 w t f 12:50:27 AnMaster: you might have run an old executable by mistake. I've been doing that quite a lot recently due to cross-compiling and transferring the resulting executable from computer to computer by USB stick 12:50:46 ais523, err, I didn't do that, I use cmake, and I ran make 12:50:54 and I run on same computer 12:51:20 OK, that makes it substantiatlly harder to get things wrong 12:51:27 ais523, indeed 12:51:37 and now it refuse to fail for the moment 12:51:55 odd thing is, I had about same problem yesterday, for a while, then it started working again 12:52:03 * AnMaster wonders if he maybe should run memcheck 12:52:11 or memtest or whatever it is called 12:52:20 it's the default on valgrind, anyway 12:52:31 ais523, no I mean on computer memory 12:52:35 thing you boot into 12:52:48 I think your memory is very unlikely to be the problem 12:52:55 ais523, and I did do valgrind on the failing binary before, it reported nothing 12:53:03 -!- Hiato has left (?). 12:53:07 some memory leaks yes, because I had to build without garbage collector 12:53:09 but that was it 12:53:15 no invalid reads or such 12:54:49 ais523, anyway it did have some issue before, because it reported random garbage in the first field of command line arguments, like: 12:55:04 That the command-line arguments were: [ "" "mycology/mycology.b98" ] 12:55:59 * AnMaster checks one thing 12:56:05 AnMaster: most likely the stack somehow got out of sync 12:56:46 as it first failed at time value, *tries to make it push same time value as before to see what happens* 12:57:11 hmm... maybe it's a current-time-dependent error, that would explain why it suddenly started working 12:57:11 ais523, hah, when I push old time value it fails 12:57:17 StackPush((FUNGEDATATYPE)668196, pushStack); 12:57:20 that one breaks it 12:57:27 what type is FUNGEDATATYPE? 12:57:45 ais523, int_fast64_t, depending on compile time options 12:57:54 the normal line is: 12:58:00 StackPush((FUNGEDATATYPE)(curTime.tm_year * 256 * 256 + (curTime.tm_mon + 1) * 256 + curTime.tm_mday), pushStack); 12:58:25 where curTime is returned from gmtime 12:58:35 * ais523 is amused at seeing the int_fast64_t; I wonder how long it'll be before there's a computer that's faster at >64-bit numbers than 64-bit numbers? 12:58:50 ais523, heheh :) 12:58:54 128-bit anyone? 12:59:05 actually gcc got __int128_t if you want to try 12:59:09 horribly slow here 12:59:29 ais523, anyway it can be set to use int32_t or int_fast64_t 12:59:30 :) 12:59:34 cfunge that is 13:00:18 actually the line I meant above that was normal push was: StackPush((FUNGEDATATYPE)(curTime.tm_hour * 256 * 256 + curTime.tm_min * 256 + curTime.tm_sec), pushStack); 13:00:30 copied wrong one first 13:03:28 ok... this doesn't make any sese 13:03:31 sense* 13:03:57 what data type is curTime.tm_hour? 13:03:58 11 * 256 * 256 = 720896 13:04:03 ais523, int, so 32-bit 13:04:07 is it possibly overflowing before you cast it to FUNGEDATATYPE? 13:04:10 668196 < 720896 13:04:17 2^32 > 720896 13:04:19 no, can't be in this case 13:04:23 should not overflow? 13:04:37 * ais523 has been working on a 16-bit embedded system, and as a result is somewhat jumpy about overflows 13:05:07 ais523, well man gmtime says it's int 13:05:17 * AnMaster checks header file 13:05:37 header file agrees 13:05:46 so it's not an overflow, at least not there... 13:05:56 what's 668196 in hex? 13:06:16 ~$ printf %x\\n $((668196)) 13:06:16 a3224 13:06:18 $ echo $(( 0x668196 )) 13:06:18 6717846 13:06:18 ? 13:06:29 AnMaster: you converted in the wrong direction 13:06:35 ah right 13:06:36 true 13:06:54 ais523, but 668196 is value I printed using %d 13:07:00 I don't see anything particularly unusuable about that bit pattern 13:07:01 in my stack dump routine 13:07:22 (I was wondering if it ended with lots of 0s or something) 13:09:39 ais523, how do you find out the hours, minutes and seconds from 668196 13:09:43 * AnMaster can't think of how atm 13:10:04 hour = 668196 / 65536 13:10:13 minute = (668196 / 256) % 256 13:10:21 second = (668196) % 356 13:10:35 % 356? 13:10:36 s/356/256/ 13:10:50 10:50:36 13:11:01 yep that matches when I dumped stack I think 13:11:01 or you could just look at the hex output; the hour is 0xa, the minute is 0x32, the second is 0x24 13:11:33 hmm... does ccbi have the same problem when run at that precise time? 13:11:36 or actually 11:50:36 because I found out hour was off by one 13:11:40 if so it's likely a bug in Mycology 13:11:43 ais523, hard to check :/ 13:12:02 agreed 13:12:20 I run some time dependant stuff that would scream is I set clock back, and I can't compile ccbi myself 13:12:24 I use binary from Deewiant 13:12:43 so checking will be hard, then 13:12:49 ais523, yep 13:13:19 Deewiant, can you check what happens when you push 668196 as time in ccbi? ie. hard code that value in and test what happens 13:13:25 or rather 13:13:32 hard code the value of 10:50:36 13:14:18 ais523, now it correctly says: 13:14:20 That the time is 13 : 14 : 05 13:14:43 local time hm 13:14:56 * AnMaster changes to UTC 13:17:08 -!- olsner has joined. 13:24:29 ais523, btw I'm happy there isn't any way to get phase of moon in befunge XD 13:24:39 (unless you calculate it from date) 13:24:50 AnMaster: there should be a fingerprint for that 13:24:53 also the date of Easter 13:25:25 ais523, god, that's complicated, well in that case we should do non-western holidays too 13:25:55 * ais523 has an Easter-calculating algorithm in C which they translated from an example in an Algol-68 textbook 13:25:57 like say, Ramadan or whatever it is the Muslims do (of course it would be classed as terrorist software in US if it did that)! 13:26:58 maybe also convert between calendars of different cultures 13:27:07 hm 13:27:21 ais523, year of the pig? 13:27:39 do the Western zodiac as well in that case 13:27:50 oh, and also convert to sidereal and Darian just in case 13:27:50 such a fingerprint would get extremely complex 13:28:00 ais523, what about Discordian dates? 13:28:23 just do as many calendary things as you can until you run out of capital letters 13:28:26 you know there is some unix program for that called ddate 13:29:02 ais523, nah, it could be C for convert, that pops type of calender to convert from, type to convert to and date 13:29:05 all in one 13:29:34 $ ddate 13:29:34 Today is Prickle-Prickle, the 1st day of Discord in the YOLD 3174 13:29:59 * AnMaster wonder why someone added that to util-linux 13:30:04 sys-apps/util-linux (/usr/bin/ddate) 13:30:39 that's like me wondering why factor is in GNU coreutils; I think there must be more to it than ehird`'s claim that it's because GNU is horribly bloated 13:30:51 at least tsort makes some kind of sense 13:31:21 ais523, well no ddate on my freebsd :) 13:31:58 factor: `42233453345345233256' is too large :/ 13:48:13 $ factor 9223372036854775807 13:48:13 9223372036854775807: 7 7 73 127 337 92737 649657 13:48:13 $ factor 9223372036854775806 13:48:13 9223372036854775806: 2 3 715827883 2147483647 13:48:34 so it can handle signed 64-bit ints 13:48:48 at least in the implementation I have here 13:48:54 still no idea why it's in coreutils, though 14:26:10 Deewiant, btw I'm down around 0.78 seconds when I disable boehm-gc, also currently just 8 bytes leaked memory without boehm-gc, though there is a lot valgrind says is "still reachable" 14:39:21 (which means that there's a pointer to it available somewhere, but that you don't necessarily know you're going to have to free) 14:50:08 -!- Corun has joined. 14:56:57 ais523, indeed 14:57:06 and quite a few "possibly lost" 14:57:14 meaning, pointer to somewhere inside object 14:57:29 reason is that I allocate data cells for fungespace in chunks of 512 cells 14:57:57 so that *will* be a memory leak if there is no cell referenced inside such a block, when not using a garbage collector 15:02:54 -!- oklopol has quit (Read error: 110 (Connection timed out)). 15:16:52 -!- timotiis has joined. 15:58:16 Deewiant, apart from the time issue mentioned above, I got another question, why does it seem that ccbi's SUBR only allocate a call stack of 8 calls? 16:09:48 -!- Sgeo has joined. 16:18:19 Deewiant, AAAAAAAAAAAAAAAAARGH! at rcfugne fingerprint docs, and I fail to understand wtf you are doing in subr.d 16:23:46 AnMaster: fixed the bug with mycology's time output 16:23:59 ah what was the issue? 16:24:20 a 'a' instead of a '9' lead to the leading zero 16:24:24 and then there was a misalignment 16:24:29 should have hit a space but it hit a 'y' 16:24:31 ah 16:25:17 and subr, what about it 16:25:38 the call stack is initialized to 8, yes. but it can grow. 16:25:43 ah right 16:25:44 (first two lines of push) 16:25:59 Deewiant, why not create a normal temp stack? 16:26:13 'normal'? 16:26:20 it needs to be persistent, no? 16:26:21 err don't you have some stack class? 16:26:34 Deewiant, it does? anyway is it local to ip or not? 16:26:40 the D stdlibs don't have any containers like in C++ 16:26:46 not at the time of writing, anyway 16:26:48 I think they might nowadays 16:27:12 * AnMaster points to his stack struct 16:27:27 but anyhoo, sure I've got the stack class 16:27:35 Deewiant, but anyway should it be local to ip, and, what do you mean persistent? 16:27:40 but it's different 16:27:51 'cause this one doesn't pop zero when it's empty, for instance. 16:28:00 hm true 16:28:04 I don't know, I can't remember what the fingerprint does. 16:28:17 Deewiant, RC/Funge subroutine 16:28:26 call, jump, ret. 16:28:43 hmm, maybe it should be local to IP. 16:28:44 see ret, the return address is on the main stack, no? 16:29:02 so call stack should be local to function? 16:29:03 yeah. 16:29:33 to function? to IP, certainly, I think. 16:29:46 although strictly speaking these are all UNDEF when it comes to multiple IPs. 16:30:01 since RC/Funge-98's docs suck and it doesn't implement concurrency. 16:30:22 err, as far as I can see, you don't need to store call stack, as you get return address from ip's stack 16:30:54 look at what's happening 16:30:58 in call(), it pops n 16:31:09 and then it moves n cells from IP's stack to the callstack 16:31:17 in ret, it puts them back 16:31:28 or wait, what? 16:32:03 it pops n, then it puts the ret address, then it puts them back again. 16:32:15 I guess you're right. 16:32:31 so it's just an optimization to avoid needless heap activity. 16:32:39 huh, auto is a C keyword!? 16:32:44 * AnMaster wonders what it does in C 16:32:53 nothing 16:33:04 what is it for then? 16:33:07 AnMaster: you know 'register'? 16:33:13 yes 16:33:17 auto is basically the opposite 16:33:20 i.e. let the compiler decide 16:33:25 but auto is also the default for all variables 16:33:31 so it's unnecessary 16:33:45 err that's volatile? 16:33:45 maybe in the old days you wanted to be explicit about auto vs. register or something 16:33:51 that's the opposite of register 16:33:56 err 16:33:59 auto would be default middle value 16:34:01 I'm using the term 'opposite' loosely 16:34:04 ie, let compiler decide 16:34:09 register -> put it in register 16:34:12 yep 16:34:13 auto -> let compiler decide 16:34:21 volatile -> always read the value from wherever it came from 16:34:27 indeed 16:34:36 therefore register is opposite of volatile 16:34:38 ;P 16:34:52 I'd disagree 16:35:07 I'd say none of these are opposites of each other, strictly speaking 16:35:16 but anyway, that's 'auto' for ya. 16:35:16 well strictly speaking indeed 16:38:51 * SimonRC wonders what is up with ddate's man-page 16:39:29 actually, "auto" variables are those with automatic allocation 16:39:32 i,e, stack allocation 16:40:06 but for some reason, my less thinks that the ddate manpage has ~6500 lines just befor the "EXAMPLES" subtitle. 16:40:12 when it blatently doesn't 16:41:54 #\884***+1#<;#_ -! #_ bb*01- x>".dedaol">:#_,#>:#_,#>:#_,#>:#_,#>:#_,#>:#_,#>:#_,#>:#_$a,Testing fingerprint SUBR... loaded. 16:41:54 0655**- \ ef* - x5xtxxxxxxxxxxxxxxxxxxxxxxxxxx 16:42:03 * AnMaster sighs at infinite loop 16:42:25 ah, usefunge 16:42:27 *une 16:42:30 no 16:42:35 just debug output 16:42:41 from my befunge interpreter 16:42:46 ok 16:43:04 printing each instruction as it runs, at trace level 3, (at 4 it would print like: x=165 y=210: x (120) ) 16:44:55 ok 16:47:20 Deewiant, help, what could cause that error on SUBR loading? :( 16:47:24 it makes no sense 16:47:29 dunno 16:47:33 >0" tnirpregnif gnitseT">:#,_00p410p310p210p110p>:;^p1p00:+1g00:;# _ " ...",,,, 41g:!#^_>31g:!#^_>21g:!#^_>11g 00g #^(22p33pv>".dedaol">:#,_$a, 0655**- \ ef* - x 16:47:34 do you get to (15, 725) 16:47:39 it fails at the x at the end 16:47:45 somehow it pops 0,0 16:47:50 so something is messed up 16:47:53 so ip end up not moving 16:48:01 because that's the standard fingerprint loading routine 16:48:03 used for every fingerprint 16:48:09 Deewiant, yes, and it works for other fingerprints 16:48:23 at the end, it hits an x and jumps to (15, y) where the y-coordinate is pushed at the fingerprint 16:48:27 in this case it should be 725 16:48:41 Testing fingerprint SUBR... loaded. 16:48:41 Testing fingerprint SUBR... loaded. 16:48:42 huh 16:49:26 Deewiant, that is odd eh? 16:49:32 why would it load it twice wtf 16:49:44 something's going wrong in that first x I guess 16:49:55 yes 16:50:13 Deewiant, but considering it is generic loading and works for other fingerprints, I don't get it 16:50:52 * Sgeo is about to die of boredom 16:50:57 what's that '5' after the first x 16:51:02 where is it at 16:51:18 err? 16:51:28 2008-03-15 17:41:54 ( AnMaster) 0655**- \ ef* - x5xtxxxxxxxxxxxxxxxxxxxxxxxxxx 16:51:31 x5xtx 16:51:35 good question a sec 16:51:36 what's the 5 16:52:23 * AnMaster traces in gdb to be able to catch the output 16:52:42 because even without optimizing it takes just a fraction of a second to fill the scrollback with x 16:52:58 how about teeing the output? 16:54:56 Deewiant, http://rafb.net/p/mz4t6B40.html 16:55:25 x=15 y=0? fail :-P 16:55:58 Deewiant, yes, looks like something jumped way too far 16:56:19 looks like your math goes wrong somewhere 16:56:46 it's your program, you debug it :-P 16:57:20 (gdb) print ip->delta 16:57:20 $1 = {x = -150, y = -210} 16:57:23 yes indeed 17:01:19 Deewiant, ok J is broken, if I make J reflect i do get BAD but it doesn't lock up 17:02:02 aha, missing a setting of delta in J I think 17:02:20 Deewiant, yes that was it ^ 17:02:25 J? I thought that died before getting to J 17:02:35 Deewiant, nop 17:02:47 What is this SUBR fingerprint? 17:02:54 Deewiant, but J didn't set delta, you may want to test for that 17:02:59 SimonRC, sub routinesa 17:03:03 routines* 17:03:14 I thought '98 already did those 17:03:18 err no? 17:03:25 oh 17:07:01 Deewiant, pull to get my SUBR, not yet optimal 17:07:10 (in sense of speed I mean) 17:07:15 -!- Corun has quit ("This computer has gone to sleep"). 17:07:44 Deewiant, still around 0.075 seconds here for it :D 17:08:20 hmm, odd indeed 17:08:40 I must have been confused by j in combination with u and {} 17:08:55 SimonRC, those are different indeed 17:09:19 but really, SUBR is quite possible to emulate using befunge 17:09:34 Deewiant do that in mycology really 17:10:12 sure, you just have to manually push the return address 17:10:23 I make things easier by hard-coding the return x-coordinate as 15 17:11:27 indeed 17:12:06 * SimonRC considers a C->Befunge compiler 17:13:30 actually a Forth might work quite well 17:14:15 SimonRC, err what? 17:14:20 C->forth? 17:14:24 sure, but why? 17:14:32 oh wait, C->befunge would be nice 17:14:47 because then I could run cfunge under cfunge 17:14:53 heh 17:15:02 SimonRC, note that cfunge is very much C99, so would be quite a bit of work 17:15:13 Aren't there enough befunge terps out there already? 17:15:26 SimonRC, very few standard conforming ones 17:15:37 CCBI and mine are all standard conforming ones I know 17:15:41 and CCBI is in D 17:15:46 so a pain to compile 17:15:50 what about fbbi? 17:15:58 SimonRC, not conformant iirc 17:16:53 SimonRC, http://users.tkk.fi/~mniemenm/befunge/mycology-comparison.html 17:17:04 see chart at end 17:17:28 Deewiant, btw for mycology fix of date, you didn't update webpage it seems? 17:17:33 ie, no changelog entry 17:23:36 only on the main page 17:23:53 can't be bothered to put it all there 17:24:06 because they're mostly of the type "fixed typo" like that one. 17:25:53 zzzz 17:26:16 * Sgeo is dead tiredbored 17:26:38 SimonRC, anyway cfunge: http://rage.kuonet.org/~anmaster/cfunge/ 17:43:02 Deewiant, it is weird that my interpreter seems to get no slower for each fingerprint I add 17:43:20 it is basically same speed, around 0.78 seconds in super-optimized mode 17:43:39 I found that gcc 4.1 and later actually got an undocumented -O4 17:43:40 * ais523 has just proved Splinter to be a push-down automaton 17:43:49 ais523, what is splinter? 17:43:57 I found it on Keymaker's website 17:44:06 not sure if it's on esolangs 17:44:14 ais523, how much do you win for that? 17:44:21 nothing 17:44:23 it was just for fun 17:44:29 link to it? 17:44:35 but it was an interesting task, because Keymaker thought it was just a finite-state machine 17:44:54 http://koti.mbnet.fi/yiap/splinter/splinter.html 17:46:00 ais523, contact him/her about it? 17:46:15 I may do at some point 17:46:53 * ais523 pastes their pushdown automaton to Splinter compiler 17:47:24 Deewiant, is adding concurrency hard? 17:47:47 http://pastebin.ca/943809 17:48:09 AnMaster: dunno... potentially 17:48:19 AnMaster: if you've just copied all my algorithms then probably not ;-P 17:48:30 Deewiant, I have designed with concurrency in mind 17:48:35 ie, passing around ip pointer 17:48:49 using ip->stack instead of some global stack stack variable 17:48:59 err actually the latter I do but it's quite hidden 17:49:01 and easy to fix 17:49:08 the definition of a push-down automaton requires it to accept input, but I simulate that by using a separate splinter N whose only purpose is to provide input every time it's called, so the input is entirely separate to the program 17:51:03 Deewiant, but I didn't copy your algorithms for core code, wrapping and fingerprints yes, but I didn't look at ccbi before I got stuck at wrapping 17:51:09 splinter is cute 17:51:20 Deewiant, the reason being I thought D was so different I wouldn't understand it, heh 17:51:47 http://esolangs.org/wiki/Splinter works too (although Esolang was down a few minutes ago, apparently due to 'too many connections', it's back up again) 17:52:19 ais523, the whole program looks like a > heh 17:52:25 * AnMaster wonders why 17:52:43 ais523, that pastebin link, it may not exist forever 17:53:00 AnMaster: it's meant to, but I still have the original file, just nowhere more permanent to put it 17:53:15 there are a few pastebin links on Esolang for before things can be moved to a proper home 17:53:18 hrm 17:53:31 and because pastebin.ca keeps things around forever, it's likely to last longer than many esolang sites 17:55:11 when ehird's website is up, that would likely be a better place 17:58:46 ais523, well I got launchpad to mirror cfunge and sf.net for download hosting 17:59:07 it's more of a serious project than a proof-of-concept compiler, though 17:59:39 ais523, true 18:13:52 -!- Corun has joined. 18:29:08 -!- oklokok has quit (Read error: 113 (No route to host)). 18:31:55 -!- oklofok has joined. 18:34:55 -!- shinku has joined. 18:52:42 -!- shinku has quit. 18:58:11 -!- sebbu2 has joined. 19:02:04 Deewiant, btw about concurrent IP, would you do it as a linked list? 19:02:22 considering this with inserting and removing IPs it seems like the best way 19:02:30 a double linked list 19:02:42 I did that once, it ended up slower than arrays 19:03:23 Deewiant, true not good for CPU cache 19:03:34 aye, memory locality is likely the reason 19:04:19 Deewiant, but adding a new one, or deleting an old one becomes O(n) with array, right? 19:04:26 as you need to insert 19:06:34 Deewiant, what file is IP *list* in? 19:06:36 it's O(1) + memory allocation costs 19:06:39 IP.d 19:06:42 it's a global at the top 19:06:47 ah 19:06:53 IP[] ips; 19:07:11 Deewiant, how can it be O(1) if you need to insert an entry in front of another you will need to move all later ones 19:07:17 unless you use some hash map for it? 19:07:32 allocate new array which is 1 bigger 19:07:38 "It causes the current IP to be duplicated, and this duplicate is added to the IP list such that it is executed for the first time before the parent IP is next executed." 19:07:41 copy old_array[0..i] to the beginning 19:07:49 of the new array 19:07:55 insert new IP at position i 19:08:03 copy old_array[i+1..end] to the end of the new array 19:08:16 Deewiant, ok true, yes I get that bit, but that isn't O(1) 19:08:17 :/ 19:08:40 it's something like O(n) for number of elements in array 19:08:48 the memory allocation costs make it O(n) in practice 19:09:02 Deewiant, yes and you can't copy all in one go 19:09:04 but the copying can basically be done by sharing 19:09:09 Deewiant, err what? 19:09:18 or hmm, actually only half of it can be done by sharing. darn, so it becomes O(n/2) 19:09:21 which is O(n) anyway. 19:09:50 err? *thinks* O(n/2) == O(n)?? 19:09:57 yep 19:10:04 then O maths are strange 19:10:05 O(constant * n) == O(n) 19:10:08 :-P 19:10:18 if you know the definition it makes sense 19:10:21 Deewiant, that would only be true if n is treated as infinite 19:10:30 ah, but O isn't a function 19:10:32 O is a set 19:10:33 mathematically speaking I mean 19:10:42 Deewiant, ok hm 19:11:12 the notation is a bit crap, but it makes it easier to talk about stuff 19:11:35 haven't got to set theory much in school yet, we done some basics like discuss N, Z, Q and R and such 19:11:44 for instance, it's not really "f = O(n)", it's "f ∈ O(n)" 19:12:18 UNCHANGING = 0, 19:12:18 STOPPING, 19:12:18 QUITTING, 19:12:22 state hm? 19:12:27 aye 19:12:39 what does those means? they aren't same as mode 19:12:41 -!- ais523 has quit ("might be back soon, might not be"). 19:12:50 STOPPING - hit an @ 19:12:55 QUITTING - hit a q 19:13:01 UNCHANGING - normal. 19:13:04 ah 19:13:13 then there's the one or two for TRDS. 19:13:46 Deewiant, why those? I think q = call to exit, @ = some call to destroy current ip, and exit if it's the only one 19:14:05 because of TRDS. 19:14:08 -!- sebbu has quit (Read error: 110 (Connection timed out)). 19:14:17 Deewiant, err all of those are for TRDS? 19:14:29 as you say, they wouldn't be necessary if it weren't for TRDS. 19:14:31 oh god sounds like a real mess (yes it is) 19:15:13 I don't think, anyway. 19:18:59 think what? 19:19:03 at all? ;P 19:19:05 * AnMaster runs 19:19:20 (sorry, considering ccbi's code, you *DO* think) 19:19:54 I'm not sure they're necessary even now. depends on how the states get set. 19:20:03 mhm 19:20:09 I won't do TRDS 19:20:22 Deewiant, in: 19:20:24 IP[] ips; 19:20:29 is that a C style array 19:20:34 A spam email that sends to a malicious IP belongs to ucsd.edu 19:20:40 or some D interal to make it sparse? 19:20:43 no, C style arrays are static. :-) 19:20:55 Do I forward the email to the technical contact, or should I send to abuse@ucsd.edu ? 19:21:03 Deewiant, so it's a sparse array= 19:21:08 s/=/?/ 19:21:11 -!- ehird has joined. 19:21:15 it's essentially a struct __someinternalname { whatever_the_type_is *data; size_t length; } 19:21:28 it's flat, just dynamic 19:21:29 ooh 19:21:31 what's this about 19:21:31 ah ok 19:21:38 it sounds interestermating 19:21:38 ehird, ? 19:21:40 ehird: dynamic arrays in D 19:21:47 oh ah 19:21:49 and it's not like that 19:21:52 the actual thingy is: 19:22:02 struct __foo { size_t length; void *data; } 19:22:03 iirc. 19:22:06 ;) 19:22:14 but that is, of course, post-compilation 19:22:14 * Sgeo pokes urgently 19:22:15 yes makes sense to store length first 19:22:22 also i found a silly little thing 19:22:28 imagine this structure for a string 19:22:29 it doesn't matter, really 19:22:33 struct { size_t length; char first; } 19:22:36 means less indirectly addressing to access first element of a struct 19:22:37 you get to the data by: 19:22:40 &foo->first 19:22:44 and since D do range checking 19:22:45 i think that would work 19:22:45 cute 19:22:46 it makes sense 19:22:49 Deewiant, ^ 19:23:05 oh, wait 19:23:10 the __foo includes size_t allocated; too 19:23:20 AnMaster: it makes no difference whether you're accessing address FOO or FOO+x. that's implemented at the hardware level. 19:23:40 Deewiant, yes at hardware level it (used to at least) make a difference 19:23:41 * Sgeo sends 19:23:43 ehird: that's for the GC, not in the struct itself, I don't think. 19:23:51 Deewiant, in how many cycles the access took that is 19:23:53 Deewiant: no, i mean how much it has been allocated 19:23:58 not always == length. 19:24:10 btw, how to allocate my structure thingy: malloc(sizeof(string_t) + (sz ? sz-1 : 0)) 19:24:59 Deewiant, I got an idea to make it faster for first time anyway, you can just realloc then, if you consider "before in exec order" == "after in array" 19:25:07 ie, you execute counting downwards 19:25:14 should make the first split faster 19:25:15 ehird: yes, I know what you meant. 19:25:29 it looks like it's defined as void** data actually. 19:25:37 ehird, is that a struct that can grow at the end? 19:25:38 Deewiant: that would make sense 19:25:40 if obj = void * 19:25:46 then the replacable array ref is obj* 19:25:51 thingy 19:25:56 AnMaster: yepp 19:26:00 AnMaster: but transforms into a char* 19:26:03 ehird, if it is, see how I do stackstacks in my code 19:26:18 * AnMaster use C99 flexible struct members 19:26:21 or whatever the name is 19:26:25 AnMaster: the cool thing about it is that you don't need two pointers 19:26:31 ehird, indeed 19:26:33 if one is always going to be in one place -- the struct -- it's pointless 19:26:39 so just have one that can pretend to be both :D 19:26:47 typedef struct { 19:26:47 size_t size; /**< This is number of elements in stacks. */ 19:26:47 size_t current; /**< Top stack and current stack */ 19:26:47 fungeStack * stacks[]; /**< Array of pointers to stacks */ 19:26:47 } fungeStackStack; 19:27:01 stackStack = cf_realloc(*me, sizeof(fungeStackStack) + ((*me)->size + 1) * sizeof(fungeStack*)); 19:27:07 that is how I grow it 19:27:36 initial alloc is just: stackStack = cf_malloc(sizeof(fungeStackStack) + sizeof(fungeStack*)); 19:27:44 AnMaster: i like c89 19:27:52 ehird, well that's your choice 19:27:54 but i think there is a place for a langugae like c99 19:28:01 just not as the latest c :) 19:28:10 ehird, hehe, tough luck 19:29:18 AnMaster: http://pastebin.ca/943924 19:29:20 string_t! 19:29:22 :p 19:29:42 ehird, god, are you doing C99 feature in C89 19:29:43 -_- 19:30:02 -!- ais523 has joined. 19:30:04 ehird, you know, the original gopher client had something like that 19:30:27 AnMaster: you got the timing on that message so precise you beat the welcome message from ChanServ 19:30:40 ais523: same happened when i came in 19:30:48 ais523, err? it was 2 seconds later 19:30:48 :P 19:30:50 maybe Chanserv is just being slow today 19:30:51 AnMaster: and no, i'm not 19:31:03 * SimonRC thinks that big-O notation would be better as a partial ordering on functions than the current wibbliness 19:31:10 that's just a structure which is allocated past its size and the rest is used as char * 19:31:11 :D 19:31:25 ais523: I am splitting my dei language into two 19:31:27 littledei and bigdei 19:31:32 littledei will be the minimum to do your rewrites 19:31:35 and bigdei will have IO 19:31:41 but you can redirect input and output to 'sinks' to it will work 19:31:50 and you can catch signals so [quit] is possible 19:31:50 etc 19:31:53 ehird, yes, ie, something likehttp://pastebin.ca/943925 19:31:54 * ais523 came across (on Wikipedia) the fact that there were algorithms that ran in O(n*alpha(n)) time, where alpha is the inverse of the Ackermann function 19:31:56 err add space 19:32:00 so very very slightly worse than O(n) 19:32:12 AnMaster: no, not really 19:32:15 but eh. 19:32:24 ehird, it works the same *shrugs* 19:32:26 ais523: link to your rewrites again? 19:32:28 AnMaster: so does two pointers 19:32:42 ehird, no, that is one more level of indirection 19:32:59 * ais523 tries to find it 19:33:00 and therefore likely slower 19:33:22 ais523, wtf link to that? 19:33:46 AnMaster: for dei 19:33:50 which is turing complete 19:33:54 * ais523 came across (on Wikipedia) the fact that there were algorithms that ran in O(n*alpha(n)) time, where alpha is the inverse of the Ackermann function 19:33:56 for that 19:34:00 ho 19:34:03 oh 19:34:27 AnMaster: it's apparently one of the algorithms for solving the [[Minimal Spanning Tree]] problem 19:34:36 mentioned in some of the pages around there 19:34:45 none of them said explicitly what the algorithm was, though 19:35:00 ok 19:35:09 ais523: hmm, i need a special value to put at the start of the program 19:35:10 maybe []? 19:35:25 ehird: that's the most obvious option 19:35:28 ehird, is this TURKY BOMB, your funge or what? 19:35:41 AnMaster: it's a concatenative language without the [] operator 19:35:48 ah ok 19:36:15 * ais523 is still trying to find the link 19:36:30 http://pastebin.ca/943140 19:36:58 it's how to translate programs written in terms of [] into programs written in terms of dei 19:37:11 which is, of course, scary :) 19:37:25 (assuming the semantics for i dei are to evaluate TOS, then push [i]; that isn't clear from the spec) 19:37:47 where is Dei defined? 19:37:51 ehird: did you see my proof that Splinter was a PDA that I linked in #esoteric earlier today? 19:38:06 SimonRC: this: 19:38:07 well 19:38:08 in my spec 19:38:16 which ais523 will now find and give a link, maybe ;) 19:38:17 SimonRC: ehird's most recent spec was http://pastebin.ca/943115 19:38:25 ehird: way to cross messages... 19:38:32 hehe, indeed. 19:38:36 and no, ais523, I didn't 19:38:47 SimonRC: basically, `X dei` is `X [X]` 19:38:50 but before X is executed 19:38:55 `dup dei` => `dup [dup]` 19:39:02 so the top element of the stack is duplicated, then [dup] is pushed 19:39:10 "Firefox can't find the server at www.pastebin.ca." ! 19:39:22 SimonRC: there isn't a www at the start of the name 19:39:24 Okies: 19:39:25 www is so 1990s 19:39:27 http://pastebin.ca/943935 19:39:29 That's minidei 19:39:38 the smallest dei that is turing complete, as far as I know 19:39:40 also, more formally specified 19:39:55 I will now do the noble thing and write an interpreter using s/// 19:40:04 ais523: before I start, what's the "and redo" trick? it looks useful 19:40:12 well firefox is putting it there 19:40:21 ehird: it jumps back to the start of the {} block you're in 19:40:30 if the command succeded 19:40:48 when combined with s/// it gives you Thutu-style replacements: start the block again if you make a change 19:41:11 SimonRC: can you ping pastebin.ca? 19:41:23 ais523: hm damn i don't think i can implement this 19:41:38 because of [...] 19:41:42 can't do that with regexps 19:41:46 ehird: learn to write recursive regexps 19:41:50 ais523: scared 19:41:54 the syntax was improved a lot for Perl 5.10 19:42:12 but the 5.005 syntax is to declare a part of a regexp with $variable=qr/regexp/ 19:42:23 and to access it with (?{{$variable}}) 19:42:24 ais523: i have 5.10 19:42:36 in that case, (?R) will do the entire regexp 19:42:47 as in, it recurses the whole thing 19:43:01 ping can't see it either 19:43:01 there's also syntax to recurse into one group which I've forgotten right now, but is very simple 19:43:12 SimonRC: can you access other websites? 19:43:15 ais523: hmm, how does kate highlight: 'whatever / 25 ; # / ; die "this dies!";' 19:43:15 yes 19:43:20 cperl-mode highlights it as divide+Comment 19:43:25 perl-mode too 19:44:18 Kate interprets it as divide+comment 19:44:32 "Ping request could not find host pastebin.ca. Please check the name and try again." 19:44:35 hmm# 19:44:37 ais523: my $q = /(\[(?:(?:R)|[^ ]+)+\])/; 19:45:16 ehird: if you change the whatever to the reserved word split, then it higlights it as regexp + die because it knows that split takes arguments 19:45:23 sorry, not reserved word, built in function 19:45:38 ais523: hmm, I want $q to match 'foo [bar baz]' in [foo [bar baz]] 19:46:07 /\[((?:(?:R)|[^ ]+)+)\]/ 19:46:09 think that's right 19:47:25 SimonRC: can you navigate to http://208.68.18.97/ 19:47:38 that's how you write pastebin.ca as numbers, according to ping 19:47:48 (i.e. by IP rather than by domain name) 19:48:13 nope, can' do 19:48:13 ehird: you want to put \[ and \] inside your character class [^ ] 19:48:17 *can't 19:48:40 SimonRC: that's strange, it seems like bits of the internet are inaccessible to you for some reason 19:48:45 weird 19:48:56 ais523: thanks 19:49:03 What does "(qmail 11842 invoked from network)" mean? 19:49:06 ok now i need to know how to debug this :p 19:49:09 Sgeo: qmail, eww 19:49:19 what does it mean? 19:49:26 where was it? 19:49:34 In a Received: header in some spam 19:49:35 ehird: putting a print; just inside your block that you're redoing into is generally useful for debugging, I find 19:49:41 Received: (qmail 11842 invoked from network); Mon, 10 Mar 2008 11:30:46 +0530 19:49:47 ais523: oh and i want * 19:49:48 not + 19:50:02 well, it is just giving the PID of the qmail process that invoked it 19:50:07 oops 19:50:07 ehird: only the outer + 19:50:17 I mean the PID of the one that processed it 19:50:20 or you could have zero-character combinators, HOMESPRING-style 19:50:20 ehird@ehird-desktop:~$ echo 'i'|perl minidei.pl 19:50:20 0 19:50:25 veeeery odd 19:50:46 ehird: are you using $_ for your s///s? 19:50:53 Received: from unknown (HELO forki) (28.116.40.228) 19:51:04 weird 19:51:10 Is that Received: line reliable, even with the Received: with the qmail above it? 19:51:15 ais523: http://pastebin.ca/943947 19:51:28 Sgeo: qmail is a program 19:51:29 a sucky one 19:51:31 does that help? 19:51:43 What is it doing in the header like that? 19:51:51 Sgeo: advertising itself to the world 19:51:56 what it is saying is: 19:52:09 And could that line be used to fake wahtever's below it? 19:52:12 'I am qmail with PID 11842. I was invoked from the network (i.e. not used locally from the box Im running on)' 19:52:22 And you can always fake every part of an email. 19:52:33 ehird: you need to write my $q = qr/\[((?:(?:R)|[^ \[\]]+)*)\]/; and so on (note the extra qr) 19:52:40 ehird: not all 19:52:42 EVERY part? 19:52:44 ais523: okies. why? 19:52:47 I trust this: 19:52:48 Received: from 210.211.190.168.bb-static.vsnl.net.in ([210.211.190.168]) 19:52:48 so that the regexp is evaluated when it's included, rather than when you declare it 19:52:48 by mx.google.com with SMTP id 13si12968233fks.8.2008.03.09.23.02.19; 19:52:48 Sun, 09 Mar 2008 23:02:24 -0700 (PDT) 19:52:49 SimonRC: most that matter :) 19:53:01 at some point the email must have finished passing through untrusted computers 19:53:03 it's like writing '(list) rather than (list) in Lisp 19:53:12 ais523: still the same 19:53:27 and almost any trusted computer will tell you if it detects it is being given bogus headers 19:53:41 like, computers that lie about who they are 19:53:52 is 0 all the output you're getting? 19:54:09 or is there other output first? 19:54:17 The only line that looks like it might have been used for forging earlier stuff is the qmail one 19:54:35 ais523: that;s it 19:54:48 $_ = "[] "+<>; 19:54:50 i guess that is wrong 19:54:59 yep 19:55:02 it gets it as .. 19:55:03 oh of course 19:55:05 + ain't concat 19:55:07 . is 19:55:13 * ais523 feels stupid for not noticing that 19:55:57 ehird@ehird-desktop:~$ echo 'wrap'|perl minidei.pl 19:55:57 [] wrap 19:55:57 [[]] 19:56:04 hm 19:56:05 dup doesn't work 19:56:12 oh 19:56:14 i didn't implement it 19:56:14 XS 19:56:15 XD 19:56:35 oh dear 19:57:05 ais523: i think $e is broken 19:57:05 :( 19:57:08 oh wait 19:57:09 of course 19:57:18 $e should match the whole [..] 19:57:34 and $w needs to exclude square brackets 19:57:38 ais523: wait a second.. 19:57:43 the only time $e will be used is for dei 19:57:49 since otherwise all we have are quotations 19:57:56 since the words to the left have been executed 19:57:57 right? 19:58:06 yes 19:58:09 and.. 19:58:12 dei only needs to match on words!! 19:58:18 yes 19:58:31 but your implementation of i is wrong 19:58:40 it needs to remove the outermost set of square brackets 19:58:47 ais523: it does. [..] does 19:58:47 :) 19:59:07 ehird@ehird-desktop:~$ echo 'dup dei i'|perl minidei.pl 19:59:07 [] dup dei i 19:59:07 [] [] [dup] i 19:59:07 [] [] dup 19:59:07 [] [] [] 19:59:09 because the [] are /inside/ the () in $q. That's clever 19:59:16 ais523: yep. and sorry for the flood 19:59:20 everything looks so much smaller in the terminal window 19:59:25 why is there a "dei" instruction? 19:59:37 SimonRC: because [] isn't allowed in input programs 19:59:38 SimonRC: because there's no [..] instruction 19:59:42 so you have to do everything with dei 19:59:44 which i should fix, actually 19:59:44 ah, ok 19:59:52 technically the spec allows [...] in the program just as a word 19:59:57 but i'll just die if i find [..] 19:59:57 it's ehird being deliberately difficult 20:00:01 which is the nature of esolangs, after all 20:00:04 ais523: that is one way of saying it 20:00:04 :) 20:00:05 ok 20:00:50 ais523: can i use <> multiple times? 20:00:59 ehird: yes 20:01:02 you get one line each time you do 20:01:13 if you set $/=undef you get one file each time you do instead 20:01:19 ais523: hmm 20:01:23 what's the easiest way to just slurp all of stdin? 20:01:27 well 20:01:28 (that is, one file from the command line, and stdin when they run out) 20:01:30 ruby's ARGF 20:01:33 command line OR stdin 20:01:42 ehird: $/=undef; $something=<> 20:01:55 that gives you the first file on the cmdline, or stdin if there weren't any 20:02:31 although if you're aiming for encapsulation saying local $/=undef will localise the change on <>'s effect to the entire program 20:02:54 the golfing variant of this is $/=$] 20:03:04 [] found in input at minidei.pl line 3, <> chunk 1. 20:03:05 huh? "localise the change ... to the entire program"? 20:03:06 it sets the line separator to the Perl version number, which is unlikely to be in the input 20:03:11 i love how perl puts useufl crap at the end of your message 20:03:40 SimonRC: if you were using multiple program files, which is how Perl does object-orientation, or you were writing a module 20:03:49 blither 20:03:50 sort of like static in C 20:03:53 * Sgeo wishes there was a way to determine if he's doing a good job of sending abuse reports 20:04:44 Sgeo: Presumably, a program that could do that could just find abuse itself. 20:04:49 ais523: http://pastebin.ca/943963 minideiii! It works. 20:05:05 It's public domain because it's so trivial that I couldn't bring myself to even MIT it 20:05:19 that is also my first perl program beyond 'hello world', really 20:05:26 it's far too readable, i guess 20:05:39 ehird: I write like that too 20:05:51 although I suspect the reason the program looks like that is that you were copying my style 20:06:14 Well, the email listed as the Registrant in the whois for vsnl.net.in doesn't exist 20:06:26 ais523: yeah, i probably was.. 20:06:30 ais523: :) 20:07:20 ais523: hm 20:07:22 that's buggy 20:07:24 need to fix up whitespace 20:08:12 ehird: as for the whatever line: Kate correctly marks the // stuff as a regexp whenever I change whatever to a builtin function that takes at least one argument 20:08:20 and otherwise treats it as a division 20:08:21 you said that 20:08:21 :) 20:08:35 ehird: I was trying even functions which don't normally take regexps as arguments, like log 20:08:39 ais523: http://pastebin.ca/943970 20:08:40 upgraded it 20:08:44 made it do deis in steps 20:08:45 and fixed [] etc 20:09:05 You know what this channel needs? 20:09:10 A more fleshed-out topic. 20:09:12 I wonders if pastebin.ca have a reguler customer discount scheme... 20:09:15 :-) 20:09:41 -!- SimonRC has set topic: FLESH http://ircbrowse.com/cdates.html?channel=esoteric FLESH - From Brainfuck FLESH to extending FLESH tetration to the reals FLESH.. 20:09:59 ais523: 'drop dei dup i' is a program worth trying 20:10:13 i love how you can see it expand the is out D: 20:10:14 *:D 20:10:22 pikhq: Would the qdb count? :p 20:10:45 ehird: I get similar joy watching similar things in Underlambda 20:10:55 which is implemented and debugged the same way ATM 20:11:12 #esoteric - From Brainfuck to extending tetration to the reals. | Logs: http://ircbrowse.com/cdates.html?channel=esoteric | Wiki: http://esolangs.org/wiki/ | The Esoteric File Archive: http://esolangs.org/files/ 20:11:12 it's great to see it collapse a whole line of lambdas 20:11:16 ? 20:11:18 ehird: Does it work? 20:11:26 pikhq: Sooooooon. 20:11:28 <___< 20:11:34 We can add it once it works. 20:11:41 How can "no reply" exist in tracepath? 20:11:48 Meanwhile, if that's a sufficient topic, then I'm changing to it. 20:11:50 Is tracert or whatever more reliable? 20:12:05 -!- pikhq has set topic: - From Brainfuck to extending tetration to the reals. | Logs: http://ircbrowse.com/cdates.html?channel=esoteric | Wiki: http://esolangs.org/wiki/ | The Esoteric File Archive: http://esolangs.org/files/. 20:12:06 pikhq: I like our topic 20:12:08 It's crazy 20:12:21 -!- pikhq has set topic: #esoteric - From Brainfuck to extending tetration to the reals. | Logs: http://ircbrowse.com/cdates.html?channel=esoteric | Wiki: http://esolangs.org/wiki/ | The Esoteric File Archive: http://esolangs.org/files/. 20:12:23 ais523: Hmm, I'm going to implement your flattener and use it to write an infinite loop 20:12:24 :D 20:12:30 (:^):^ -> [dup i] dup i 20:12:32 hmm 20:12:34 i can do that manually 20:12:48 Seems like this spammer just sent from their computer directly to Google's computer.. 20:12:59 Received: from itlxx ([92.81.128.73]) 20:12:59 by mx.google.com with SMTP id g1si18349881muf.5.2008.03.15.03.37.47; 20:12:59 Sat, 15 Mar 2008 03:37:48 -0700 (PDT) 20:13:04 ehird: there's actually a much better way to dei an i than I used in the flattener, that I thought up more recently 20:13:07 No Received:'s after that 20:13:09 wrap i dei 20:13:09 * pikhq curses at OpenVPN 20:13:15 dup dei swap drop dup swap dei i dei swap drop compose dup i 20:13:26 hmm 20:13:29 that doesn't wooooork 20:13:29 :( 20:13:31 So did they just connect to mx.google.com or wahtever? 20:13:36 ais523: wanna post a new spec so i can retest? 20:13:39 hmm... 20:14:08 ehird: it's the same, just with the rule for [i] changed to [i] => wrap i dei 20:14:21 ehird: how do you get arbitrary stuff inside brackets? 20:14:33 Actually, what is mx.google.com ? 20:14:35 SimonRC: http://pastebin.ca/943140 20:14:43 SimonRC: that's all the underload functions, sans S 20:14:46 ehird: no good, pastebin is still fail for me 20:14:50 so, that's all you NEED to get in brackets 20:14:57 Sgeo: Main eXchange 20:14:58 and by 'coincidence' ;) that's all there is in the spec 20:15:04 SimonRC: MAIL exchange 20:15:08 named after MX DNS records, I assume 20:15:18 um, yeah, I meant to type Mail 20:15:34 SimonRC: http://rafb.net/p/e3X6O830.html is the same as what ehird just linked 20:15:40 I just repasted it elsewhere so you could see it 20:15:59 So how does one connect directly to gmail's server? 20:16:51 Sgeo: Just how your mail client does it. 20:17:02 ais523: Hmm. How does that handle, e.g. [X [wrap]]? 20:17:04 I think I meant server-to-server 20:17:05 that is, when the second isn't a word 20:17:08 The same way, I'd bet 20:17:10 Because I think that's what the spammer did 20:17:24 ehird: it splits it into [X] http://en.wikipedia.org/wiki/Special:Search?go=Go&search=wrap compose 20:17:36 um, wow 20:17:40 a whole url? 20:17:41 :-) 20:17:53 SimonRC: my client expands [[ ]] into links to Wikipedia 20:17:58 which is sometimes useful, and sometimes not useful 20:18:17 I'll write it as (X) ((wrap)) compose to prevent that happening 20:20:10 How do I get the mx record for gmail.com? 20:21:10 ehird@ehird-desktop:~$ echo '[dup i] dup i' | perl flatten.pl 20:21:12 runs forever 20:21:12 :( 20:21:28 it goes into a huuuge compose chain 20:21:31 ais523: maybe your order is wrong 20:21:39 [dup i] dup i 20:21:39 [] [] compose dup i 20:21:39 [] [] compose compose dup i 20:21:39 .... 20:21:42 is how it goes 20:21:44 Sgeo: dig gmail.com MX 20:21:49 with the host command? oh 20:22:08 ehird: are you making sure that the [] splitter insists both halves are positive-length 20:22:16 you may be accidentally using * rather than + 20:22:17 host is easier to read 20:22:21 But I should learn the dig stuff 20:22:51 ais523: http://pastebin.ca/943984 20:22:54 newest version of both scripts 20:23:55 ehird: you need capture parens around the $w in the [$w $w] rule 20:24:23 aha 20:24:44 ais523: now it thinks it should be: 20:24:45 [dup]]]]]]]]] [[[[[[[[[i] compose compose compose compose compose compose compose compose compose dup i 20:25:09 ehird: you still haven't banned [ and ] in $w 20:25:15 ah 20:25:41 why isn't it working? 20:25:49 sgeo@ubuntu:~$ telnet gmail-smtp-in.l.google.com 25 20:25:49 Trying 72.14.205.27... 20:26:01 ais523: Well now it converts 20:26:04 but runs in finite time 20:26:04 :) 20:26:13 ehird: what does it convert to? 20:26:13 Sgeo: you didn't say HELO 20:26:19 dup dei swap drop wrap i dei compose dup i 20:26:32 sgeo@ubuntu:~$ telnet alt1.gmail-smtp-in.l.google.com 25 20:26:32 Trying 72.14.221.27... 20:26:32 HELO sgeo 20:26:32 that looks right to me? 20:26:35 what goes wrong? 20:26:41 so: 20:26:42 dup [dup] swap drop wrap i [i] compose dup i 20:26:43 (I don't have 5.10 installed over here) 20:26:46 so let's run through that 20:26:54 [] dup [dup] swap drop wrap i [i] compose dup i 20:26:58 [] [] [dup] swap drop wrap i [i] compose dup i 20:26:59 and how do I make sure the proper line endings are being used? 20:27:02 [] [dup] [] drop wrap i [i] compose dup i 20:27:06 [] [dup] wrap i [i] compose dup i 20:27:10 Sgeo: dunno 20:27:10 [] http://en.wikipedia.org/wiki/Special:Search?go=Go&search=dup i [i] compose dup i 20:27:15 [] [dup] [i] compose dup i 20:27:22 [] [dup i] dup i 20:27:30 [] [dup i] [dup i] i 20:27:33 [] [dup i] dup i 20:27:34 so yes 20:27:36 it should work 20:27:40 it is minidei.pl's fault 20:27:48 minidei stops at 20:27:49 [] http://en.wikipedia.org/wiki/Special:Search?go=Go&search=dup i [i] compose dup i 20:27:54 so, i have a bug 20:28:20 ais523: Think I got it 20:28:24 $q doesn't handle nested 20:28:30 Is (?:R) wrong? 20:28:33 Does (?R) make a group? 20:28:50 waiiiit 20:28:52 i [i] compose 20:28:54 hehe 20:28:56 that's what it sees 20:28:59 ehird: I'm not too sure about the new recursion syntax 20:28:59 so, I need to fix $q 20:29:07 seeing as I can't use it over here, I never learnt it 20:29:09 Sequence (?R...) not recognized in regex; marked by <-- HERE in m/\[((?:(?R <-- HERE )|[^ \[\]]+)*)\]/ at minidei.pl line 9. 20:29:15 ais523: (?:R) is just matching R. 20:29:16 :P 20:29:22 This is perl, v5.8.8 built for i486-linux-gnu-thread-multi 20:29:22 hah 20:29:30 ehird: try (??{$q}) 20:29:34 it's ugly, but it works 20:29:59 Sequence (??:...) not recognized in regex; marked by <-- HERE in m/(?:(??: <-- HERE {})|[^ \[\]]+)*/ at flatten.pl line 7, <> chunk 1. 20:30:00 darn 20:30:01 hehe 20:30:02 i will fix 20:30:24 now it dies at [] [dup i] dup i 20:30:36 but.. 20:30:40 there's no reason for that to fail 20:30:42 other than.. 20:30:43 $q failing! 20:30:51 my $q = qr/\[((?:(??{$q})|[^ \[\]]+)*)\]/; 20:31:59 sgeo@ubuntu:~$ telnet alt1.gmail-smtp-in.l.google.com 25 20:31:59 Trying 72.14.221.114... 20:31:59 HELO [24.191.104.202] 20:32:14 ais523: hmm yours is kinda b0rken 20:32:18 ehird@ehird-desktop:~$ echo '[[[dup [i] dup]]]' | perl flatten.pl 20:32:18 [[[dup [i] dup]]] 20:32:18 [[[dup wrap i dei dup]]] 20:32:19 and it stops there 20:32:24 SO, in conclusion: 20:32:26 $q is broken. 20:32:38 yes 20:33:43 ais523: Does (??{x}) make a group? 20:34:30 ehird: no 20:35:07 ais523: ok, so it's not that 20:35:09 ehird: does $q allow spaces between items in a group? 20:35:15 ais523: HEY wait a second.. 20:35:19 I can't see where you explicitly allow them 20:35:32 qr// + (??{$me}) == ? 20:35:43 ehird: it works 20:35:46 I've done it many times before 20:36:02 ais523: ok minidei works now 20:36:03 BUTT 20:36:08 my $q = qr/(?:(??{$q})|[^\[\]]+)*/; 20:36:10 doesn't work, for flatten 20:36:19 maybe because of my missing out of \[\] 20:36:20 maybe I need +? 20:36:24 that is '+?' 20:36:46 ehird: you want my $q = qr/(?:(??{$q}) *|[^ \[\]]+ *)*/ 20:37:00 so that you can have spaces between bracketed groups, and between words 20:37:06 ais523: If you look, it can 20:37:09 actually, that's equivalent, ignore me 20:37:16 I don't disallow spaces in the group any more 20:37:43 ehird: I noticed, but for some reason thought it prevented you putting spaces between two [] groups. It doesn't though 20:38:00 and yes, you need [] around the (??{$q}) 20:38:16 my $q = qr/\[(?:(??{$q})|[^\[\]]+)*\]/; 20:38:21 isn't working 20:38:24 not there 20:38:27 stops at: [[dup wrap i dei dup]] wrap 20:38:29 ais523: and no 20:38:31 that's from minidei.pl 20:38:34 sans group 20:38:35 y $q = qr/(?:\[(??{$q})\]|[^\[\]]+)*/; 20:38:38 no, look 20:38:41 mine works fine 20:38:43 because I fixed $e too 20:38:46 oh 20:38:48 my $e = qr/$w|($q)/; 20:39:03 ais523: aha 20:39:05 it's [a b c] 20:39:09 i.e. more than two elements 20:39:12 because you just have $w $w 20:39:17 so, it never matches in the first place 20:39:22 I need: 20:39:24 hmm 20:39:24 ehird: one of them is meant to be able to match multiple elements 20:39:24 well 20:39:30 i need to ignore the rest of the block thingy.. 20:39:41 s/\[$w $w\]/[$1] [$2] compose/ and redo; 20:39:43 that's the problem 20:39:57 so change the second one to ( $w)+ 20:40:19 ais523: third one. actually. 20:40:23 and * 20:40:42 I mean s/\[$w( $w)+\]/[$1] [$2] compose/ 20:40:47 although that has minor whitespace problems 20:40:49 oh 20:40:50 good point 20:41:00 dup dei swap drop dup] compose compose] wrap 20:41:03 not so good point 20:41:05 I know a solution though.. 20:41:16 s/\[$w((?: $w)+)\]/[$1] [$2] compose/ and redo; 20:41:17 hmm 20:41:19 that doesn't work either 20:41:38 ais523: wait... 20:41:49 (GROUP)+ is like ((?:GROUP)+) 20:41:50 ?? 20:41:54 maybe not 20:42:05 but the ((?:GROUP)+) is what I meant 20:42:36 [[dup wrap i dei dup]] wrap 20:42:36 [[dup] wrap i dei dup] compose] wrap 20:42:39 that is the broken transition 20:42:52 s/\[$w((?: $w)+)\]/[$1] [$2 compose/ and redo; 20:42:53 that works 20:42:54 :) 20:43:01 but is scary 20:43:04 WTF? 20:43:10 ais523: don't ask me.. 20:43:11 how did the closing ] get into $2 20:43:15 and i don't know. 20:43:22 ehird: are you banning ] in $w? 20:43:26 yes 20:43:28 that's the only explanation 20:43:29 oh wait 20:43:31 $w has a group 20:43:49 hm 20:43:50 still no luck 20:43:57 ehird: paste what you have so far? 20:44:31 yep 20:44:31 doing so 20:44:41 http://pastebin.ca/944013 20:44:44 commented out version doesn't work 20:44:55 i'll paste the new minidei.pl once flatten.pl works 20:46:07 ais523: also, yours can't dei-ify [] 20:46:12 -- which will be very hard indeed 20:46:24 ehird: deify [dup drop] 20:46:30 which means exactly the same thing 20:46:35 i guess so 20:47:12 ais523: 'nother bug 20:47:14 ehird@ehird-desktop:~$ echo '[dei i]' | perl flatten.pl 20:47:14 [dei i] 20:47:14 [dei] i compose 20:47:46 another one 20:47:47 [i i i i i i i i i i i] 20:47:48 [i] i i i i i i i i i i compose 20:47:48 wrap i dei i i i i i i i i i i compose 20:48:19 ehird: the flattener wasn't designed to handle dei 20:48:39 and the square-brackets quickfix obviously didn't work, we'll have to find out what the problem actually was 20:49:34 ais523: was it not? okay :P 20:49:45 but [i i i i i ii i ] is definately broken 20:50:30 yes 20:50:41 and I'm pretty sure it's for the same reason as the square-bracket mismatch is 20:51:09 okay 20:53:03 ais523: i'm truly not sure 20:54:26 ehird: the [$w $w] rule isn't allowing nested []s 20:54:31 it needs to for the flattener to work 20:54:42 but that doesn't sort out the [i i i i i i i i] problem 20:56:55 ais523: so.. $e $e 20:57:23 ais523: and, it does solve the i i i i i problem 20:57:29 albeit wrongly 20:57:31 it does: wrap i dei [] compose 20:57:43 [i i i i i i i i i i i] 20:57:43 [i] [] compose 20:58:23 [i i i i i i i i i i i] 20:58:23 [i] [] compose 20:58:23 so 20:58:27 it isn't being captured right 20:59:33 personally, I never put capture brackets in the qr// quotes, because it makes things too confusing to follow on occasion 21:00:41 s/\[\[((?: ?$e)*)\]\]/[$1] wrap/ and redo; 21:00:44 new wrap rule 21:04:41 * Sgeo blinks at the existance http://museum/ 21:04:46 *existence of 21:05:28 Sgeo: congrats, you discovered firefox's auto search 21:05:31 welcome to 2003 21:05:37 ehird, um, that's not autosearch 21:05:40 Sgeo: that's a bad URL, so it's either autosearch or a local DNS entry 21:05:47 Sgeo: yes it is 21:05:56 ais523, are you saying that you didn't try it? 21:05:59 there are some local DNS entries at my university which can only be accessed from there and have invalid URLs 21:06:01 try this 21:06:03 http://gogle/ 21:06:06 -> google.com 21:06:12 Sgeo: I did, I just get 'Unknown host' 21:06:16 yes -- gogle 21:06:18 not google 21:06:19 ergo. 21:06:34 ehird, I said http://museum/ not anything else 21:06:38 ah, wait, no 21:06:43 Sgeo: firefox sees http://foo 21:06:47 and turns it into http://www.foo.com 21:06:52 BRB 21:07:23 museum actually points to 195.7.77.17 21:07:37 back 21:07:56 what tejeez said 21:08:08 ehird, try it in links2 or something 21:08:34 Sgeo: fails for me in both Konqueror and w3m 21:08:43 ehird@ehird-desktop:~$ ping museum 21:08:43 ping: unknown host museum 21:08:45 end of discussion 21:08:49 maybe it's one of the national DNSes? 21:08:57 sgeo@ubuntu:~$ ping museum 21:08:58 PING museum (195.7.77.17) 56(84) bytes of data. 21:08:59 ais523: museum is a tld 21:09:05 Sgeo: uhh, what does the page say 21:09:08 ISTR one of them allows people to register invalid URLs 21:09:12 and will resolve them 21:09:47 ais523: that's cool 21:10:05 can't remember which one, though, and the resulting URLs aren't portable to other DNSes 21:10:14 so you can only access them in a limited geographical region 21:10:43 `dig @4.2.2.1 museum` 21:10:46 Note the A record 21:11:02 Sgeo: if there isn't an AAAA record it'll become obsolete soon 21:11:19 hmm 21:11:25 I am going to piss someone off: 21:11:31 Brian D Foy. Brian D Foy. Brian D Foy. Brian D Foy. Brian D Foy. 21:11:34 mwahahaha 21:11:35 ais523, why doesn't google have an AAAA record? 21:11:37 you cannot silence me, Brian D Foy! 21:11:47 Sgeo: ipv6.google.com does 21:11:50 Sgeo: ipv6.gooogle.com 21:11:52 oh 21:11:55 ais523: they said that in 1995 21:11:57 they put it up recently 21:12:13 So, A will become obsolete when IPv4 does? 21:12:18 * Sgeo won't hold his breath 21:12:20 ais523: I meant, 'obsolete soon' 21:12:25 And for one -- Sgeo is totally right. 21:12:27 *once 21:12:30 lol 21:13:01 there is probably people in here younger than ipv6 21:13:02 :p 21:13:19 and since ipv4 was going to be 'obsolete soon' as soon as ipv6 was discussed... 21:13:29 .. we've been waiting a long time :p 21:13:33 more than DNF 21:13:35 * Sgeo wonders if http://museum./ works better 21:13:51 compared to ipv6 arc was quite zippy 21:13:51 ehird: IETF went and turned off IPv4 access from their conference to see what would happen 21:13:58 ais523: i know 21:14:04 ais523: that means nothing 21:14:08 Deewiant, there? 21:14:11 that just means the ietf are fooling themselvse about ipv6 21:14:20 ehird: it means that ipv6 is becoming usable 21:14:26 it's the default on Vista, by the way 21:14:27 Deewiant, I got a question: wtf should 4kt do in concurrent funge 21:14:29 * Sgeo pokes people to try museum. instead of museum 21:14:37 I had to tell it to actually look at museum. 21:14:44 Deewiant, because I think k + t will break *horribly* here 21:14:52 or about.museum 21:14:57 AnMaster: spawns 4 threads which all start execution at k 21:14:59 or? 21:15:13 tejeez, about.museum doesn't have the same kind of "that's ALLOWED?" as museum or museum. 21:15:19 Deewiant, yes they will all follow the same path? right? 21:15:27 ais523: have you seen this: http://www.livejournal.com/doc/server/bml.index.html? 21:15:30 it's horribly 1996 21:15:33 AnMaster: aye, since they're all just reversed from the original 21:15:37 w3m works for http://museum./ for me 21:15:41 Deewiant, I suspect order may get messed up heh 21:15:57 Deewiant, ie, thinks *will* break here for that 21:15:57 ehird: no 21:16:04 ais523: look at the examples 21:16:20 Sgeo: yeah, but it shows if the used dns server allows .museum domains 21:16:22 AnMaster: why's that? all are just prepended 21:16:25 hmm 21:16:31 ais523: they tried to make it look more modern 21:16:31 try: http://bradfitz.com/bml/ 21:16:36 tejeez, shouldn't they all allow it? 21:16:44 Deewiant, appended to end in fact, and traversed backwards 21:16:55 AnMaster: same difference 21:17:02 i don't know 21:17:06 Deewiant, I'll test both models to see what one is fastest at mycology :) 21:17:18 AnMaster: appending to end is faster 21:17:29 Deewiant, yep, that's what will happen first time 21:17:32 ais523: one of the gems: 'H1=>{D}

%DATA%' 21:17:44 Deewiant, but if original IP spawns again... then it would be slower 21:18:00 ehird: it looks like obfuscated HTML 21:18:01 ie if all splits happen from main thread, or if all happens from each new child 21:18:18 ais523: well, that is html 21:18:21 ais523: with template crap around it 21:18:41 MediaWiki markup probably does much the same thing and looks much better than that 21:18:43 Deewiant, oh another thing, should the thread ID reported by y stay unique? as in, should it just be index into thread array, or some soft of unique index? 21:18:47 the html is also amusingly 1996 21:18:52 ais523: it was developed for livejournal 21:18:55 & lj still uses it. 21:18:55 Deewiant, that persists during the entire program 21:19:05 ais523: in fact, the architechture of lj is very simple.. 21:19:11 ais523: there are lots of perl files 21:19:12 ehird: wouldn't that been it was full of tags, frames, and weird JavaScript designed to look flashy? 21:19:16 s/been/mean/ 21:19:17 ais523: but the actual webpages are php-style bml 21:19:21 ais523: with embedded perl 21:19:25 AnMaster: not sure, it might have mattered for some fingerprint or something 21:19:30 the site may look modern nowadays 21:19:32 but it's just a skin.. 21:19:42 Deewiant, yes but what one do CCBI do? standard doesn't say anything about it 21:20:02 AnMaster: I think with CCBI they're 64-bit and unique... but I'm not sure 21:20:29 ais523: oh, and the livejournal software requires ROOT ACCESS to set up 21:20:33 ais523: it's almost as fiddly as slashcode 21:20:38 Deewiant, err, 64-bit? I thought data typed used was 32-bit, so if you spawned 2^31 you would get issues? 21:20:45 ehird: why? 21:20:53 ais523: you know I have no idea 21:20:55 ais523: but it does, officially 21:20:59 Deewiant, as y couldn't return it in a single data cell 21:21:13 AnMaster: beats me, okay? look at the source. :-P 21:21:24 Deewiant, heh ok 21:21:35 ais523: it's really crazy 21:22:09 http://code.sixapart.com/trac/livejournal/browser/trunk 21:22:16 Deewiant, btw what does ! mean in D? as in new Stack!(Semantics); 21:22:23 there is a directory named 't' 21:22:23 :D 21:22:29 AnMaster: Stack!(foo) -> Stack 21:22:30 in C++ 21:22:31 it's generics 21:22:34 or teamplates 21:22:36 oh I see 21:22:37 or whatever you wish to call em 21:22:52 ehird, I've used generics in C# yes so I know what they are 21:23:06 just used foo syntax there 21:23:14 ais523: whoaaa.... livejournal uses INLINE C! 21:23:15 http://code.sixapart.com/trac/livejournal/browser/trunk/src/utf8.pl 21:23:41 ehird: C's a compiled language usually, so I'm not sure if that even makes sense 21:24:09 ais523: Inline::C 21:24:14 ais523: it compiles it out from a string 21:24:16 very popular.. 21:24:20 i'm suprised you don't know of it 21:24:23 it's very useful 21:24:29 but ... yeah. in a blog software?! 21:24:45 * ais523 's mouse just came apart 21:25:05 ais523: btw, heres the big glob of bml http://code.sixapart.com/trac/livejournal/browser/trunk/htdocs 21:25:05 but I've snapped it back together; the battery cover keeps coming off 21:25:05 ehird, wait, does it compile it once in a temp dir or what? 21:25:06 AnMaster: pretty much 21:25:08 AnMaster: it's clever 21:25:09 ehird, ie, how does it work, does it fork() to run the code? 21:25:16 http://search.cpan.org/~ingy/Inline-0.44/C/C.pod 21:25:22 AnMaster: no 21:25:23 it's clever 21:25:24 http://search.cpan.org/~ingy/Inline-0.44/C/C.pod 21:25:25 ehird, I can't read perl :( 21:26:07 AnMaster: that's documentation 21:26:08 :| 21:26:16 ah 21:26:18 (And now on People Who Comment Before Clicking Links..) 21:26:34 ehird, I clicked, but dns server is slow today 21:26:42 so it's still loading 21:26:52 [22:24:04] ehird, I can't read perl :( 21:26:52 [22:24:46] AnMaster: that's documentation 21:26:55 quotelicious :D 21:27:17 heh 21:27:23 oklofok: that'll be on the qdb :p 21:32:33 ais523: umm, crap, i'm starting to want to code stuff in perl 21:32:37 ais523: WTF did you do to me 21:32:54 ehird: maybe that should be in the qdb too 21:33:05 ais523: ironically the thing i'm wanting to code in perl is the qdb. 21:33:06 :| 21:33:22 Perl is good for some things, bad for others 21:33:38 it's my first choice for anything rewriting-related, unless Thutu would be a resonable choice 21:33:51 ais523: of course, i'm not being silly and reusing perl webdev stuff 21:33:53 -!- RedDak has joined. 21:34:03 the most i'll use is CGI/CGI::Fast and some DB stuff 21:34:03 :-D 21:34:07 oh, and a template engine 21:34:12 Is it just me, or is the Internet rather centralized? 21:34:18 Sgeo: just you. 21:34:39 ais523: hmm, does perl have anything built on DBI so i don't have to use SQL? 21:34:40 I mean, there are root servers, and there also has to be some organization assigning IP addresses at the top 21:34:43 python has stuff like: 21:34:51 db.select("users", name="foo") 21:35:01 and you get a hash back 21:35:12 there's also ORMs but i'm not sure about any of perl's oo systems 21:35:46 Doesn't IANA basically control IP addresses and domain names? 21:39:23 boo 21:39:28 ? 21:43:17 * AnMaster stabs his code 21:43:29 infinite fork 21:43:33 for unknown reason 21:44:27 AnMaster: within the program, or did you just forkbomb your computer? 21:44:40 ais523, within the interpreter 21:44:43 just ttttttttttttttttttttt 21:44:45 like that 21:44:47 on mycology 21:44:49 * AnMaster debugs 21:48:00 ais523: eso-std.org should use shell scripts. 21:48:08 durable! ;) 21:48:18 oh god... cgi.sh library :D 21:48:45 forces your script to take parameters like ?a;b;c because sh doesn't have hashes :) 21:49:56 ehird: not that surprising, really 21:50:02 although they could emulate them 21:50:17 anything that has eval and allows arbitrary variable names that can escape the eval can emulate hashes ;) 21:51:25 ais523: i meant, it would be hilarious to have a module like that 21:51:31 and yeah 21:51:34 oh, you mean it doesn't exist yet? 21:51:36 using md5?! :D 21:51:44 stores in $GET__sdfs98dfu98su4knjfd 21:52:00 usage: $(hash GET foo) 21:52:01 :D 21:52:17 ehird: hashing using an actual cryptographic hash function strikes me as a neat mix of concepts 21:52:28 header () { echo -n "$1: $2\r\n" } 21:52:30 ais523: quite 21:52:41 the reason i said it is because you can trivially get an md5 from the shell 21:52:58 ehird: why not just header () { echo "$1: $2\r" } 21:53:06 that saves the need to use -n, which is nonportable 21:53:14 ais523: true 21:53:27 i need to write cgi.sh now 21:53:28 :D 21:54:02 ehird: your projects seem to require writing other projects in order to be able to start 21:54:15 it would be nice to get something up and running on eso-std.org sometime soon 21:54:23 a pastebin would have been useful, for instance 21:54:32 uh, i love java, reading a file to a string is like 6 lines <3 21:54:40 ais523: indeed 21:54:50 ais523: well, the pastebin is going to be Really Advanced(TM) ;) 21:54:53 And I like reinventing the wheel. 21:55:03 However, hopefully i only need to get the wheel right *once*. :p 21:55:21 md5 () { echo "$1" | md5sum | sed 's/ .*//' } 21:56:11 that won't distinguish between $1=--help and $1=the help text for GNU echo, if that's what's being used 21:56:44 ais523: huh? 21:56:50 md5sum outputs: "sum -" 21:56:59 $ echo "foo" | md5sum 21:56:59 d3b07384d113edec49eaa6238ad5ff00 - 21:57:05 I mean they're the same text, so they'll hash to the same thing 21:57:24 ais523: show me what you mean 21:57:24 not that this matters at all, but echo "x$1" would avoid that problem 21:57:30 '--help' is not equal to 'the help text' 21:57:35 oh wait 21:57:35 i see 21:57:40 ais523: better fix: 21:57:42 echo -- "$1" 21:57:49 but ... everyone uses the shell builtin 21:57:51 i mean seriously :) 21:58:01 echo will actually echo -- if you give it as an argument 21:58:07 oh jeez 21:58:37 * ais523 seems to remember a system (was it SunOS?) on which echo was deprecated in favour of printf 21:58:57 hah 21:59:18 maybe because it's command-line parameter processing was so inconsistent 21:59:22 s/it's/its/ 22:00:02 ais523: case/esac is portable, rihgt? 22:00:06 I think so 22:00:12 it's in POSIX sh IIRC 22:00:28 after all, nobody would use that syntax otherwise ;-) 22:02:14 _hash_"$1"_$(md5 "$2")="$3" 22:02:16 that's my 'set' 22:02:16 :D 22:02:30 ehird: why do you keep putting $1, etc., in double quotes? 22:02:32 Deewiant, I broke it so hard when adding concurrency it even fails mycology/sanity.bf when compiling with -DCONCURRENT_FUNGE *debugs* 22:02:36 ais523: hmm. good point 22:02:37 paranoia :| 22:02:42 i keep thinking about it in terms of rewrites 22:02:51 Deewiant, XD 22:02:52 because if they contain embedded spaces you're going to be in trouble anyway 22:02:57 AnMaster: :-) 22:03:16 Deewiant, I got no clue why it only prints sanity up to 7 atm 22:04:59 ais523: hmm i actually need no hashtable initialization 22:05:09 ais523: since it's purely virtual and there is no 'hashtable object' 22:05:10 coool 22:07:17 eval "echo \$"$(echo _hash_$2_$(cgi_md5 "$3")) 22:07:20 i'm sure that could be prettier 22:08:05 eval "echo $"_hash_$2_$(cgi_md5 "$3") 22:08:08 that's the nicest i can get it 22:08:31 ...why am I wasting my time on this? 22:08:44 * ais523 asked you that a while ago 22:12:21 wwwwwwwwwwwwwwwwwwwwwwwwtf 22:12:29 AnMaster: what 22:12:43 ehird, I'm adding concurrency to cfunge 22:12:46 I have some problems 22:13:55 in unrelated parts 22:13:57 -_- 22:14:33 AnMaster: your problem is clearly insufficient setjmp 22:14:48 ais523, harhar 22:14:53 because C-INTERCAL's threading works fine, at least on the programs that people have managed to think up so far 22:15:25 really, it seems I get some memory corruption somewhere or something, because something totally unrelated breaks 22:15:34 ie, funge-space 22:15:38 although half the times I think up a new and unusual way to use it it segfaults, normally in a way that left me wondering why it worked on everything else because I'd made an obvious typo 22:15:43 not changed, yet it breaks by concurrency 22:15:54 and well. it isn't actually threading after all 22:16:04 just looping instruction pointers 22:16:12 likewise on C-INTERCAL 22:16:14 it's not looked I threaded the interpreter itself 22:16:25 but that has several complications the way I've done it 22:16:34 because a simple straightforward INTERCAL interpreter is no fun 22:16:44 ais523, it even breaks on single threads now :/ 22:16:56 what about 0 or a negative number of threads? 22:17:06 ais523, current IP = 0 22:17:14 I checked that 22:17:22 that bit works, the issue is elsewhere 22:20:20 -!- RedDak has quit (Remote closed the connection). 22:23:10 ais523: so as it turns out trying to glue peices of software together to make a semi-framework isn't pretty 22:23:18 and actually using stuff is pretty 22:23:21 how suprising 22:30:21 i'm shocked that nobody else is suprised. 22:30:42 ehird, huh? 22:31:09 * AnMaster was afk 22:34:03 AnMaster: :) 22:34:23 what about it? 22:34:27 * AnMaster lacks context 22:37:30 * AnMaster ponders the irony of having a stack allocated on the heap 22:41:08 oh found it, I referenced once too many times 22:42:59 -!- oerjan has joined. 22:44:38 Deewiant, wow, this is pretty 22:44:52 Assuming that instructions without any particular concurrency-related behaviour, such as ^>v<#, take one tick. 22:44:52 Will continue to produce textual output, so strings must work correctly where concurrency is concerned: "a b" should take 5 ticks, 'a should take 1. 22:44:52 GGGGGGOGOGOGOGOGOGOOGOOGOOGOOGOOGOODGOODGOODGOODGOODGOODGO:ODGO:ODGO:ODGO:ODGO 22:45:01 Deewiant, that's good I assume? :D 22:45:02 ;) 22:47:21 BABABABDBDBABABBDBBABBDBABDDD 22:49:03 ehird, found it, ip didn't move correctly after split 22:49:11 so it split and split and split and so on 22:49:25 one thread stayed on t spawning new threads all the time 22:49:26 :) 22:49:49 cfunge: /home/arvid/src/cfunge08/src/stack.c:89: StackPush: Assertion `stack != ((void *)0)' failed. 22:49:53 * AnMaster looks 22:50:31 aha 22:50:47 it goes on to execute after thread finished :/ 22:51:20 ais523: how come perl manages to all look the same 22:51:28 especially when all I've learnt about it I've learnt from your pastes <.< 22:51:38 low barrier to entry i guess 22:51:58 ehird: because people are so unused to seeing anything that looks like perl, except maybe shell-script 22:52:26 it's like seeing people from a culture you aren't used to; they're all so different from you in terms of appearance, you find them hard to find apart whereas they can tell themselves apart quite easily 22:53:00 ais523, now you are just being weird :P 22:53:06 about all perl alike 22:53:12 I'm no racist, but all Malbolge programs look alike to me 22:53:16 I've seen readable perl 22:53:27 ais523, but indeed most perl looks like line noise 22:53:30 ais523: well hey, a quote management system as my second perl app may be... a little ambitious 22:53:43 ehird, to it in python 22:53:48 or C 22:54:02 ehird, or do it in perl but use Inline::C 22:54:05 * AnMaster runs 22:54:27 AnMaster: I was doing it in python, the first two times 22:54:37 First with a DIY framework, then with Spyce 22:54:40 ehird, that failed? 22:54:47 I was going to try Pylons, web.py &co but cba because I don't like frameworks like that 22:54:50 AnMaster: You betcha 22:54:52 ehird, try twisted? 22:55:02 AnMaster: Can I say 'please die in a fire' here? :< 22:55:09 ehird, I never used it 22:55:12 twisted for a web app is the most awful idea i've heard of 22:55:12 ever 22:55:27 ehird, I thought there was twisted HTTP or something? 22:55:38 or is twisted for writing http servers? 22:56:38 ehird, ? 22:56:56 ehird, look try php or python 22:57:07 or just use an existing software 22:58:06 AnMaster: php heh 22:58:16 and I just told you I tried Python *twice* 22:58:26 and twisted.web does exist, but eek. 22:58:34 and using an existing software is so not cool ;) 22:59:14 ehird, "PTTH"4( 22:59:50 is that a fingerprint? I thought it was SOCK 23:00:15 ais523, not an existing one no 23:00:25 ais523, SOCK does exist 23:00:40 but why not an HTTP server framework for befunge? 23:01:10 why not indeed 23:01:22 there was a CGI script written in INTERCAL, after all 23:01:28 * ais523 wonders if it's still online 23:01:38 ais523, some nice ideas btw: BOOP = Befunge Object Object Orientated Programming Extension 23:01:46 ais523, what do you think? 23:01:58 AnMaster: interesting 23:02:02 ais523, no idea how 23:03:12 ais523: Hmm, why is OOP in perl ugly as hell 23:03:16 sooo much boilerplate 23:03:23 ehird: I don't like Perl OOP either 23:03:40 ais523: Though this looks interesting 23:03:41 http://search.cpan.org/~stevan/Moose-0.40/lib/Moose.pm 23:03:57 ehird: http://www.muppetlabs.com/~breadbox/intercal/ins/insstart.html 23:05:40 ais523: when I saw the intercal spec 23:05:47 it was so extensive that i thought it would be pretty substantial 23:05:49 if esoteric 23:05:56 but it really has very little stuff.. 23:05:58 just fancy syntax. 23:06:04 ehird: have you seen my improved spec? 23:06:12 It's linked from http://intercal.freeshell.org 23:06:22 support for things like multithreading, operand overloading, and so on 23:06:31 CLC-INTERCAL, linked from the same site, has even more 23:06:43 its spec is simply a delta from INTERCAL-72 and yet still fills several pages 23:08:01 INTERCAL has come along a long way from the old days 23:08:13 (I challenge anyone to understand WHILE at the first attempt, for instance) 23:12:32 yarg, that INTERCAL CGI script stores information in the /names/ of elements 23:12:45

23:13:54 'use RatsAss;' is a vaguely disturbing line 23:13:59 ais523: yes, but even the basic stuff 23:16:43 ahh, how i love the fact that html 4.01 lets me omit / and other cruft 23:17:06 hello... 23:17:51 ehird: there are two schools of thought about HTML 23:18:04 one goes on to create XHTML, where a single typo blanks your page 23:18:10 the other goes on to create HTML 5 23:18:26 which has a DOCTYPE line of 23:18:36 is it ! or ?, actually, I can never remember 23:18:45 ais523, it is way easier to code an XHTML interpreter than a HTML one 23:18:53 but the point is it's the minimum number of characters needed to trip browser's compliance switches 23:18:54 because XHTML is more strict 23:19:04 AnMaster: I actually favour XHTML over HTML 23:19:09 ais523, good 23:19:42 ais523: not really 23:19:47 xhtml is step in the wrong direction 23:19:50 yes, it's more formal -- good 23:19:54 but it retains *cruft* 23:20:01 see, ehird, you belong to the /other/ school of thought 23:20:09 ais523: I used to be an XHTML weenie. 23:20:11 XHTML 1.1, even. 23:20:17 ais523, how was http://intercal.freeshell.org/ick-0.27/index.htm generated I wonder 23:20:25 seems familiar 23:20:29 INFO style? 23:20:29 AnMaster: texinfo 23:20:29 AnMaster: texinfo 23:20:32 aha 23:20:39 but with custom modifications 23:20:44 (also, you SHOULD serve xhtml as application/xml+xhtml, but IE dies on this) 23:20:44 try hovering the URLs, for instance 23:20:50 they're 8.3 format for DOS-compatibility 23:20:54 ais523, yeah doesn't look that the ones on gnu.org 23:21:02 and I'm using my own stylesheet 23:21:15 ais523, weird names yes 23:21:17 also, there's some custom hacking of the TOC and some of the headings 23:21:21 ais523, you made C-INTERCAL? 23:21:26 no 23:21:30 but I'm the current maintainer 23:21:33 aha 23:21:43 ais523, what is the weird filenames for 23:21:45 I mean, why 23:22:09 for DOS compatibility, of course 23:22:22 ais523, ok.... why DOS compatibility? 23:22:29 why on earth would anyone care about that? 23:22:37 AnMaster: c-intercal supports DOS. 23:22:40 because INTERCAL is compatible with a whole load of outdated technologies 23:22:47 DJGPP is one of the maintained targets for C-INTERCAL 23:22:56 which (apart from cygwin) is the only way to run it on Windows 23:23:02 ais523: I know at least one person who uses dos as his main system 23:23:08 know in a loose sense - internetknow 23:23:14 ais523, oh and what is the difference between CLC-INTERCAL and C-INTERCAL 23:23:21 ais523, what one is the "newest" 23:23:27 AnMaster: they're two different implementations 23:23:30 CLC-INTERCAL is newer 23:23:36 in terms of when it was created 23:23:42 but they're both actively maintained 23:23:44 ais523: uuurgh, I want a StrictWarningsIronFist 23:23:50 give it a package, it makes them all strict&warnings 23:23:55 ais523, who maintains CLC then? 23:23:55 so i don't have to type it all the goddamn time 23:24:31 AnMaster: Claudio Calvelli 23:24:42 ehird, -Wall -ansi -pedantic -Wextra -Werror 23:24:43 :P 23:24:55 ais523, not here in this channel? 23:25:01 not right now 23:25:07 ais523, also are CLC and your one compatible? 23:25:09 I don't think I've ever seen him here 23:25:14 AnMaster: to some extent 23:25:19 mhm? 23:25:21 each has features the other doesn't implement 23:25:32 but the ones that are implemented in both are mostly compatible 23:25:35 ais523: is CLC an abbreviation for his name? 23:25:38 the C-INTERCAL manual has a portability list 23:25:41 oerjan: not sure, but probably 23:26:07 and I comment on what each of the common commands does in each implementation 23:26:34 there were two INTERCAL-72 implementations that used different syntaxes (the Princeton and Atari implementations) 23:26:42 then C-INTERCAL, J-INTERCAL and CLC-INTERCAL 23:26:59 J-INTERCAL hasn't been updated in a while, and is just INTERCAL-72+COME FROM by label 23:27:00

Software error:

23:27:00
Quot.pm did not return a true value at index.cgi line 10.
23:27:06  I have to put a true value at the end of my module? :|
23:27:07  hah
23:27:35  yes
23:27:41  a Perl module traditionally ends 1;
23:27:56  also, I find the fact that I have to put @EXPORT etc in BEGIN disturbing
23:29:52  BEGIN {
23:29:52    use vars(@EXPORT);
23:29:52    @EXPORT = qw(quot);
23:29:52  }
23:29:57  faaar too verbose :D
23:31:02  err
23:31:18  add a qw in there
23:50:51 -!- sebbu2 has changed nick to sebbu.