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").