00:06:05 -!- Corun has quit (Connection timed out).
00:16:45 -!- jix has quit ("CommandQ").
00:46:00 <ehird> i reinvent monadic parser combinators on a regular basis
00:51:08 <lament> and get kicked out of #python
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 <calamari> I've been reading up on porting gcc.. amazingly complicated.. almost esoteric you might say
05:27:54 <pikhq> Well, yeah. What do you think the RTL is besides an esolang? :p
05:31:01 <pikhq> I've seen some examples stepped through, and Jebus.
05:31:23 <calamari> 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.
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 <AnMaster> Deewiant, to tell the truth your O in CPLI looks completely messed up
11:14:22 <Deewiant> what's so messed up about it, looks pretty straightforward to me :-P
11:14:26 <AnMaster> Deewiant, FYI this crashes CCBI with SIGFPE: "ILPC"4(nD@
11:15:15 <Deewiant> it'd crash RC/Funge-98 too, so I guess that's fair?
11:15:26 <AnMaster> Deewiant, it won't crash last version of cfunge
11:15:45 <AnMaster> last revision that is, last release lacks the fingerprint in question
11:18:27 <Deewiant> I guess I should do a sweep of the fingerprints and make all division instructions push zero on division by zero
11:51:28 <AnMaster> Deewiant, not for floating point iirc
11:51:42 <AnMaster> they would push NaN or similar
11:52:23 <AnMaster> there is nothing for complex floating point is there?
11:52:55 <AnMaster> because complex integer is quite easy to do by hand in funge
11:53:02 <AnMaster> compared to complex floating point
11:54:33 <AnMaster> I may make such a fingerprint later, hmm....
11:54:56 <AnMaster> would same layout as FPDP be sane?
11:54:58 <Deewiant> but once you have floating point, making complex floating point is easy too?
11:55:51 <Deewiant> it's the same as CPLI, just using floating point instead?
11:56:10 <Deewiant> with the bonus that the FP*P provide sqrt
11:56:35 <AnMaster> 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:29 <Deewiant> well sure, translations between polar and cartesian form
11:57:55 <Deewiant> since FP*P provide trigonometric functions
11:58:44 <AnMaster> and I would hate trying to write de Moivres formula (is that the English name for it?) in funge
11:59:44 <Deewiant> why would you want to? its only relevance is in making exponentiation in polar form easier, you can do that in the math easily
12:12:33 -!- Corun has quit ("This computer has gone to sleep").
12:19:51 <AnMaster> ok, was just looking at man complex.h for anything that would be hard to do
12:20:07 <AnMaster> double complex cproj(double complex);
12:20:22 <AnMaster> cproj, cprojf, cprojl - project into Riemann Sphere
12:21:09 <AnMaster> Deewiant, any clue what that is and/or what it is good for
12:22:09 <Deewiant> "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 <AnMaster> yeah and that I basically don't understand
12:22:56 <Deewiant> it's identity unless you have a complex infinity, which becomes +infinity
12:23:27 -!- ihope has joined.
12:34:59 <AnMaster> Deewiant, what is the IP.DORMANT mode thing?
12:35:46 <Deewiant> sounds like TRDS or that other one (IIPC?)
12:36:15 <AnMaster> I'm wondering what exactly dormant means here
12:36:17 <Deewiant> you can see it all in the main function
12:36:35 <AnMaster> D ( -- ) Go Dormant until stack is manipulated by another ip
12:36:45 <AnMaster> still doesn't say what dormant means
12:37:22 <AnMaster> Deewiant, what main function?+
12:37:38 <Deewiant> int main(char[][] args) and all that
12:38:09 <Deewiant> no, it's in fingerprints/cats_eye/null_.d ;-P
12:38:26 <Deewiant> and isn't that clear? i.e. IP is dormant until its stack is manipulated
12:39:20 <AnMaster> Deewiant, also, what is case State.UNCHANGING: break; for
12:39:34 <AnMaster> is it so that if ip doesn't move the instruction it is on isn't executed?
12:39:34 <Deewiant> that wouldn't work as it would keep running the D over and over?
12:39:39 <Deewiant> although I guess that wouldn't matter
12:39:50 <Deewiant> AnMaster: state.unchanging means that the state isn't changing
12:40:05 <AnMaster> state in this case means position?
12:40:53 <AnMaster> no need for state without TRDS I guess
12:41:13 <AnMaster> Deewiant, is the ip mode an enum or something, I can't find where you declare possible modes
12:43:06 <Deewiant> the fact that they're accessed by IP.modename is a giveaway...
12:43:34 <AnMaster> cell[128] mapping = void; // for IMAP
12:43:57 <AnMaster> can IMAP only map for cell values in the first 128?
12:44:16 <AnMaster> can't you may say 220 to be same as k
12:44:26 <Deewiant> that's the way RC/Funge-98 implements it
12:44:35 <AnMaster> that doesn't mean it is correct
12:44:48 <Deewiant> that's the reference implementation
12:45:01 <Deewiant> we can only assume that the reference implementation is valid
12:45:05 <AnMaster> well I looked at the actual specs...
12:45:12 <Deewiant> which means that anything beyond 127 is undefined
12:45:15 <AnMaster> Deewiant, you assumed that TRDS one was wrong
12:45:36 <Deewiant> where the spec says something, the spec is right
12:45:44 <Deewiant> where the spec doesn't, the implementation is right
12:46:09 <Deewiant> and if the spec contradicts the funge-98 spec then it's all crap, like FING :-P
12:47:09 <AnMaster> and well "3DSP" whatever it is, defines C as the Cross porduct
12:47:55 <AnMaster> oh I see you don't implement 3DSP
12:56:06 <AnMaster> static assert (is(typeof(x) == typeof(y)));
12:56:13 <AnMaster> Deewiant, why whould they differ?
12:57:02 <Deewiant> if I ever change it, who knows
13:02:43 <AnMaster> Deewiant, yes... but x and y would still be same right?
13:03:59 * AnMaster still thinks that would be insane and very hard mistake to do
13:04:12 <Deewiant> sure, but I'm not going to go removing it now that I've written it :-P
13:04:24 <Deewiant> I admit I probably wouldn't write it now, if I had to rewrite that
13:04:26 <AnMaster> true, just wondering why you wrote it
13:06:00 <AnMaster> in HRTI, is the ctor thing executed when HRTI is first loaded?
13:06:46 <Deewiant> that's what all fingerprintCon/Destructors do - constructor called when loaded, destructor when unloaded
13:13:19 <AnMaster> so it is called *every* time that HRTI is loaded?
13:13:32 <AnMaster> if (resolution == TimeSpan.zero) {
13:15:37 <AnMaster> Deewiant, this is confusing: auto timeMark = Time.min;
13:16:46 <Deewiant> it's changed at least twice in the time that CCBI has existed and I'm not sure what it is nowadays ;-)
13:16:59 <Deewiant> which is nowadays, IIRC, a long
13:18:09 <AnMaster> hm your timer got an issue, it does not handle something changing system time I think
13:19:08 <AnMaster> well yes, but that isn't what I meant
13:19:22 <AnMaster> I meant, what if the clock is slightly wrong and is then synced
13:19:52 <AnMaster> oh and I'm not sure it handles leap seconds btw
13:20:15 <Deewiant> how would leap seconds be problematic
13:20:28 <Deewiant> the time span should be the same
13:21:06 <Deewiant> 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 <AnMaster> I thought the clock in computers simply changed jumped backwards, instead of actually hitting the :60
13:21:32 <Deewiant> then it's the computer's fault :-P
13:21:53 <AnMaster> Deewiant, anyway mycology fails at leap seconds I suspect?
13:22:07 <AnMaster> it got a case to print it out?
13:22:14 <Deewiant> it just prints out what it gets
13:22:17 <AnMaster> as it couldn't handle the hours
13:23:05 <Deewiant> 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:52 <AnMaster> there should be a fingerprint to print the stardate ;)
13:25:50 <AnMaster> Deewiant, what happens to the timer mark across split?
13:27:39 <Deewiant> in CCBI fingerprints aren't kept across t so it doesn't matter?
13:28:01 <AnMaster> hm but the mark is kept across fingerprint unloading for HRTI it seems
13:28:35 <Deewiant> I'd say you should never expect stuff to keep working between loading/unloading
13:29:08 <Deewiant> in fact, clearing that at unload might be a good idea
13:29:41 <AnMaster> I won't clear it though but I will not copy across t
13:29:52 <Deewiant> I have some handling in MODE for leaving modes on after unloading
13:29:54 <AnMaster> (I do copy loaded fingerprints)
13:32:53 <AnMaster> do resolution = Clock.now() - time;
13:32:53 <AnMaster> while (resolution == TimeSpan.zero);
13:33:11 <AnMaster> ie, I don't get how it can work
13:34:48 <AnMaster> hm does D do some magic to make TimeSpan.zero compare equal to a small number as well as 0?
13:36:09 <AnMaster> Deewiant, what result does that give for you?
13:37:36 -!- ihope has quit ("ChatZilla 0.9.81 [Firefox 2.0.0.13/2008031114]").
13:38:12 <AnMaster> Deewiant, it isn't test in the main mycology?
13:38:34 <Deewiant> it's in the HRTI test of course?
13:39:08 <AnMaster> Deewiant, it says "UNDEF: G gives clock granularity as 2 microseconds" every time here
13:40:13 <AnMaster> Deewiant, "UNDEF: G gives clock granularity as 31250 microseconds" from your table heh
13:40:36 <AnMaster> hm is it better on linux for you
13:41:04 <AnMaster> Deewiant, would be nice to know, also if your linux system got HPET or not
13:41:21 <AnMaster> because if it doesn't and it get worse result I would guess HPET causes the high resolution here :)
13:47:07 <AnMaster> oneSecond = TimeSpan.seconds(1).ticks,
13:47:08 <AnMaster> oneMicro = TimeSpan.micros (1).ticks;
13:48:21 <AnMaster> oh right you don't know what units timespan is
13:48:34 <AnMaster> I could hard code it as gettimeofday says it clearly
13:49:43 <AnMaster> Deewiant, why just micro seconds, it seems it is possible to get nano seconds on linux at least :)
13:49:58 <Deewiant> because the HRTI spec says microseconds
13:52:38 <AnMaster> Clock that cannot be set and represents monotonic time since some unspecified starting point.
13:52:48 <AnMaster> Deewiant, for clock_gettime, that provides nano seconds
13:52:58 <AnMaster> means it solve the time changed issue
13:53:00 <Deewiant> school computer (Linux 2.6.20-16) gives HRTI granularity as 1
13:54:03 <AnMaster> Deewiant, not that the result of S is that deterministic heh
13:55:29 <AnMaster> hm this seems nice, some fallback system at runtime needed though
13:58:45 <AnMaster> gettimeofday does micro seconds
13:58:55 <AnMaster> Deewiant, does the school computer have HPET?
13:59:26 <Deewiant> no such thing as /proc/timer_list
14:00:09 <Deewiant> nope, did /proc/tim<tab> and nothing
14:01:09 <AnMaster> guess it is just linux being so much better ;)
14:01:12 <Deewiant> [ 48.914457] Real Time Clock Driver v1.12ac
14:01:19 <Deewiant> [ 48.956310] Time: tsc clocksource has been installed.
14:01:32 <AnMaster> tsc is time stamp counter iirc
14:01:49 <Deewiant> ah, I guess it's just the ordinary TSC then
14:01:54 <AnMaster> quite high resolution but not fixed speed if dynamic cpu speed varies
14:02:06 <AnMaster> $ dmesg | grep -i "clocksource has been installed"
14:02:07 <AnMaster> Time: tsc clocksource has been installed.
14:02:07 <AnMaster> Time: hpet clocksource has been installed.
14:03:22 <AnMaster> anyway linux normally runs the time source at quite high frequency compared to windows, simply because windows wants backward compatlity
14:03:46 <AnMaster> 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:04:03 <Deewiant> I'm looking through MSDN for any 'high-freq' function
14:04:28 <AnMaster> Deewiant, heh, Performance counter or something like that sound familiar
14:04:56 <AnMaster> also beware of using the cpu speed itself as a clock source, which is possible
14:05:23 <Deewiant> TSC isn't viable on multicore either
14:06:22 <fizzie> dmesg says: Clocksource tsc unstable (delta = -124059314 ns)
14:06:42 <Deewiant> and all my dmesg's are offset by 17 seconds or something
14:06:48 <AnMaster> Marking TSC unstable due to cpufreq changes
14:06:49 <AnMaster> Clocksource tsc unstable (delta = -106250033 ns)
14:07:43 <AnMaster> the linux kernel does check if the timer is sane during bootup iirc
14:08:00 -!- Corun has joined.
14:09:08 <Deewiant> I guess queryperformancecounter would be the way to go if I wanted to do that
14:09:47 <AnMaster> yeah, as usual the windows API is messy
14:10:10 <Deewiant> tango.time.Clock uses GetSystemTimeAsFileTime on windows
14:11:16 <AnMaster> #define __SLONGWORD_TYPE long int
14:11:17 <AnMaster> typedef __SUSECONDS_T_TYPE __suseconds_t;
14:11:24 <AnMaster> those two lines in different headers
14:11:57 <Deewiant> with good accuracy you can say that any posix C header which is in a subdirectory doesn't exist on windows ;-)
14:12:18 <Deewiant> i.e. stdio.h exists but not sys/io.h, for instance
14:12:55 <AnMaster> however it must have gettimeofday as that addon crap
14:13:12 <Deewiant> oh sure, it's probably in there
14:23:42 <AnMaster> hm this fingerprint generation script is getting quite advanced
14:23:46 <AnMaster> http://rafb.net/p/XCA7fB82.html
14:24:34 <AnMaster> 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 <AnMaster> Deewiant, micro == 1/100000 right?
14:49:41 -!- Corun has quit ("This computer has gone to sleep").
14:55:28 -!- jix has joined.
14:57:31 <vixey> http://www.engr.uconn.edu/~dqg/papers/myth.pdf
14:58:29 <AnMaster> 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 <Deewiant> AnMaster: so don't store them as 32-bit.
14:58:49 <AnMaster> as signed 64-bit I think something like 292 * 1000 years
14:59:08 <Deewiant> I believe Tango does nanoseconds in signed 64-bit.
14:59:10 <AnMaster> Deewiant, well the cell space in funge space is just 32-bit depending on compile time options
14:59:25 <AnMaster> 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 <AnMaster> that one will with 32-bit cells be quite limited
14:59:46 <Deewiant> ah, right. you can still store them as higher precision though.
15:00:01 <AnMaster> indeed I will store it as whatever I can represent it as
15:04:02 <RodgerTheGreat> 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 <Deewiant> RodgerTheGreat: http://reddit.com/r/programming/info/6et4f/comments/c03nbfi
15:05:16 <RodgerTheGreat> 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 <vixey> 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:08:22 <RodgerTheGreat> 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 <AnMaster> UNDEF: T after M pushed 46 and a second T, after ff*kyn, pushed 234
15:10:09 <AnMaster> what is that supposed to test?
15:11:38 <AnMaster> ccbi seems to output a result with one more digit
15:11:44 <AnMaster> and this isn't even optimized build
15:12:36 <Deewiant> if S, and you're right, that's a bug
15:12:49 <Deewiant> if T, all I can say is that we've established that cfunge is faster
15:13:28 -!- ehird has joined.
15:13:33 <AnMaster> UNDEF: T after M pushed 7 and a second T, after ff*kyn, pushed 66 for optimized build of cfunge
15:13:42 <AnMaster> UNDEF: T after M pushed 33 and a second T, after ff*kyn, pushed 100666
15:13:56 -!- Corun has joined.
15:14:31 <AnMaster> 95725 is the best of ccbi so far
15:15:24 <AnMaster> Deewiant, even at -O0 -ggdb3 on cfunge I get less than 300 from T
15:17:15 <AnMaster> 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 <AnMaster> debug build sometimes gives 2 microseconds
15:17:56 <Deewiant> getSysInfo is 305 asm instructions here, with 25 'call's
15:18:12 <Deewiant> it helps that DMD doesn't inline functions containing loops :-P
15:18:33 <AnMaster> recursive sure it can't inline
15:18:46 <AnMaster> but ones containing loops should be perfectly possible to inline
15:19:46 <Deewiant> which also means that all foreaches are actually function calls
15:20:43 <Deewiant> so foreach_reverse (farg; fungeArgs) pushStringz(farg); is two function calls on each iteration :-)
15:21:52 <Deewiant> AnMaster: how many cells does the stack have after ff*ky?
15:24:18 <RodgerTheGreat> 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 <RodgerTheGreat> (most sign language "words" require both hands or complex movements, so you'd be largely limited to the alphabet)
15:27:13 <AnMaster> $2 = {size = 316992, top = 316978, entries = 0x2ba8fb318010}
15:27:45 <AnMaster> top is what you want to look at
15:27:57 <AnMaster> size will be the max size it reached
15:28:20 <AnMaster> Deewiant, in chunks of 16 or 32 or such iirc
15:29:27 <AnMaster> Deewiant, so considering differing environment variables and such it seems like the size is reasonable
15:30:20 <AnMaster> however the 66 I got using -S, because didn't want all the temp files around
15:30:37 <AnMaster> so that means it would only push a subset of the env variables too
15:30:47 <AnMaster> without -S I get this time: 3937
15:31:07 <AnMaster> (and my build dir gets spammed with files like mycotmp0.tmp)
15:31:20 <Deewiant> don't run in your build dir :-)
15:32:06 <Deewiant> what's so hard about "../cfunge"? :-P
15:32:21 <AnMaster> Deewiant, oh and with -S it checks what env variables are ok using a perfect hash ;)
15:32:33 <AnMaster> src/instructions/sysinfo-misc/safe_env.gperf
15:33:05 <AnMaster> it also only show a whitelist of env variable
15:33:22 <AnMaster> Deewiant, because there may be env variables for stuff like ssh agent or such
15:33:41 <AnMaster> Deewiant, http://rafb.net/p/5lxkRT79.html
15:34:25 <Deewiant> are you sure those apply to non-Linux as well? :-P
15:34:36 <vixey> "I can do that too! I’m an expert at wasting my day, after all"
15:34:37 <AnMaster> I checked on freebsd, linux and openbsd
15:35:47 <AnMaster> 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:39:00 <AnMaster> Deewiant, however this shows that pushing 0gnirts is slow
15:39:39 <AnMaster> possibly I should optimize that code
15:39:41 <Deewiant> eh? it's no slower than pushing anything else
15:39:57 <AnMaster> cfunge: /home/arvid/src/cfunge/trunk/src/fingerprints/HRTI/HRTI.c:58: FingerHRTImark: Assertion `ip->fingerHRTItimestamp != ((void *)0)' failed.
15:39:57 <AnMaster> Itools/fuzz-test.sh: line 112: 13597 Aborted ( ./cfunge -S fuzz.tmp )
15:40:58 -!- Corun has quit ("This computer has gone to sleep").
15:48:55 -!- oklopol has joined.
15:51:47 <AnMaster> <Deewiant> eh? it's no slower than pushing anything else
15:52:31 <ehird> AnMaster: he could but i don't think he cares much about how fast ccbi is
15:52:54 <AnMaster> not you as in a specific person
15:54:02 <vixey> I want oklotalk :p
15:58:05 <ehird> oklotalk is cool, yes
15:58:11 <ehird> and, oklopol, it must be ready TODAY
15:58:34 <ehird> can i bask in closures and run-time malleability plz
15:58:56 <oklopol> oklotalk-- had to be ready *tomorrow*, i failed to count the days right
15:59:06 <oklopol> but, deadline was moved to 25. :)
15:59:12 <oklopol> anyway, the cli is somewhat ready
15:59:25 <ehird> oklopol: you gave me an oklotalk beta once
15:59:26 <oklopol> i can give you an exe for it :-----------)
15:59:36 <ehird> (different machine y'see)
16:00:08 <ehird> oklopol: yeah, c'mon
16:00:10 <ehird> i wanna play with it
16:00:23 <ehird> sincey ou're obviously not gonna give me the code to the current version :D
16:01:03 <oklopol> the problem is it doesn't really do anything, because i'm too lazy to add actual functionality
16:01:25 <oklopol> it's somewhat extendable as it is though, so i guess you could add stuff in itself
16:01:43 <ehird> oklopol: well i can't use an .exe
16:01:59 <oklopol> i could give you compiled files for the new one.
16:02:19 <oklopol> probably easier to read than my code, even
16:03:07 -!- shinkuzin has joined.
16:04:03 <ehird> oklopol: but .pyc is no fun
16:04:10 <ehird> i want to hack on it! :p
16:04:21 <ehird> i am not fluent in python bytecode
16:05:05 <AnMaster> oklopol, oklotalk got a deadline?
16:05:41 <ehird> AnMaster: tomorrow
16:05:44 <ehird> AnMaster: it's for some school thingy
16:05:54 <ehird> this is, of course, GREAT for #esoteric
16:05:54 <AnMaster> what is the program in the topic btw?
16:05:57 <ehird> because we get to play with oklotalk
16:06:00 <ehird> AnMaster: ALGOL 60 quine
16:06:22 <vixey> hey Ifound something neat
16:06:33 <oklopol> what if i put the interp up on a bot?
16:06:48 <AnMaster> oklopol, why not release the source?
16:06:51 <vixey> transitive_closure(Goal,I,O) :- ( call(Goal,I,M) -> transitive_closure(Goal,M,O) ; I=O ).
16:06:52 <vixey> eval --> transitive_closure(beta_reduce).
16:06:55 <oklopol> AnMaster: not yet at least
16:07:07 <AnMaster> oklopol, well you could use a bot I guess
16:07:10 <oklopol> it's not something i like to do
16:07:30 <vixey> 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 <vixey> lambda calculus interpreter in Prolog :P
16:08:02 <vixey> (yes I know it's zero in lisp but Prolog didn't even know what lambda is before)
16:08:24 <ehird> AnMaster: closed source rocks too
16:08:29 <ehird> esp. for something like oklotalk
16:09:00 <vixey> is that not totally cool? :[
16:09:02 <AnMaster> oklopol, if you give me a binary for x86_64 Linux I could try it, or 32-bit freebsd
16:09:02 <ehird> AnMaster: because! :D
16:09:05 <ehird> vixey: yeah very cool
16:09:12 <ehird> vixey: and lisp isn't based on lambda calc, sorry.
16:09:14 <AnMaster> vixey, no idea, I didn't understand it
16:09:20 <ehird> it is strict, has 0-adic functions, and N>1-adic functions
16:09:25 <ehird> and mountains of other things
16:09:29 <ehird> like: not everything is a function
16:09:33 <vixey> ((((lambda (a) (lambda (b) (lambda (c) ((a b) c)))) (lambda (x) (lambda (y) x))) 'apple) 'banana)
16:09:46 <vixey> takes zero lines of code to write an interpreter for that
16:09:48 <ehird> Haskell is closer, but it cannot represent everything in the LC properly
16:09:57 <ehird> vixey: yes, but that's not LC. it's strict
16:10:03 <ehird> vixey: lambda calculus is *lazily evaluated*
16:10:22 <ehird> λf·(λx·f (x x)) (λx·f (x x))
16:10:26 <ehird> that always diverges in lisp
16:10:29 <ehird> because it requires lazy evaluation
16:10:32 <vixey> lambda calculus isn't a programming language
16:10:33 <ehird> because it recurses infinitely
16:10:41 <ehird> vixey: um, LC is lazily evaluated
16:10:47 <AnMaster> vixey, I think it is turing complete
16:10:52 <ehird> AnMaster: yes, it is
16:10:56 <ehird> but it is LAZILY EVALUATED
16:11:05 <vixey> TC is irrelevant to whether or not somehting is a programming language
16:11:28 <ehird> 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 <vixey> it's not lazy though ehird, there's no evaluation order specified
16:11:35 <ehird> vixey: Non-strict is.
16:11:37 <AnMaster> ehird, also how did you type the upside down y?
16:12:03 <ehird> λ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 <vixey> it doesn't diverge in lambda calculus
16:12:20 <ehird> 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 <ehird> AnMaster: that's the greek lambda..
16:12:45 <AnMaster> ehird, and that is AltGr + what?
16:12:54 <ehird> AnMaster: depends on your OS.
16:13:03 <oklopol> 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:10 <vixey> I'm not clueless, you're treating lambda calculus as if it's a programming language with defined evaluation rules
16:13:15 <ehird> oklopol: thank you
16:13:16 <vixey> which is comeplete nonsense
16:13:17 <ehird> vixey: it is defined
16:13:24 <ehird> http://en.wikipedia.org/wiki/Lambda_calculus
16:13:27 <ehird> please read the evaluation rules there
16:13:50 <ehird> 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 <vixey> you're being pretty silly ehird
16:14:30 <oklopol> 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 <vixey> 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 <ehird> not debating this, vixey, you know nothing about LC :)
16:14:54 <vixey> I know more than you about it..
16:15:05 <ehird> anyhoo, oklopol ... let's talk oklotalk!
16:15:25 <oklopol> vixey: but you said you can do LC in lisp in 0 lines
16:15:27 <vixey> I have no idea why you are being so rude to me about this and calling me clueless though
16:15:48 <oklopol> 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:16:22 <ehird> oklopol: don't waste your keystrokes :)
16:16:32 <ehird> i have explained perfectly clearly
16:16:39 <ehird> he's just re-asserting his opinion
16:16:51 <ehird> which is not an opinion but an incorrect fact
16:16:55 <ehird> back to less repetitive things
16:17:23 -!- atsampso1 has joined.
16:17:37 <oklopol> ehird: i guess, i'll put the bot up now.
16:17:41 <vixey> well fuck hanging around here if people are just going to call me clueless
16:17:46 <ehird> oklopol: awwww, but but but :)
16:17:47 -!- vixey has left (?).
16:17:55 <oklopol> i wasn't calling him clueless
16:18:07 <ehird> oklopol: if he wants to leave over that, let him
16:18:53 <oklopol> mwahaha ":: " prefix :PPPPPP
16:19:22 <oklopol> why do i make my prefixes have the space
16:19:27 <ehird> oklopol: i have a better prefix
16:19:39 <ehird> make your prefix two spaces
16:20:16 <oklopol> i have no idea how to disable *REMOVING SPACES OFF THE BEGINNING OF A MESSAGE*
16:20:31 <oklopol> from incoming and outgoing messages
16:20:35 <AnMaster> oklopol, my client doesn't remove them
16:20:42 <ehird> say something with two spaces
16:20:44 <ehird> i bet it appears fine
16:20:57 <AnMaster> oklopol, I know irssi, xchat and erc keep spaces
16:21:11 <ehird> but two spaces is such a good prefix
16:21:19 <ehird> AnMaster: oklopol doesn't know any emacs.
16:21:19 <oklopol> well no sensible client would remove them
16:21:23 <ehird> he doesn't have any reason to, afaik
16:21:28 <oklopol> also midspaces are filtered
16:21:30 <ehird> oklopol: so try another client! :D
16:21:35 <ehird> two spaces is an awesssommme prefix
16:21:39 <oklopol> but this is so nice otherwise...
16:21:39 <AnMaster> oklopol, well stop using that client then
16:21:59 <ehird> oklopol: just use one temporarily
16:22:23 <AnMaster> really, there are no worse client
16:22:44 <ehird> AnMaster: you are interrogating oklopol for using an irc client
16:23:08 <oklopol> mirc is very nice in general.
16:23:19 -!- atsampson has quit (Read error: 110 (Connection timed out)).
16:23:19 <oklopol> in my experience, *it's one of the better ones*
16:23:20 <ehird> oklopol: can't you use another for like 2 minutes
16:23:26 <ehird> but yeah, mirc is a good client
16:23:35 <ehird> oklopol: don't you love the idea of two spaces as a prefix
16:23:48 <ehird> one space is better though
16:23:49 <oklopol> i do, but i want it to work on this, there has to be a way...
16:23:53 <ehird> it's the oklotalk way
16:24:08 <oklopol> it's not really the oklotalk-- way though.
16:24:16 <oklopol> oklotalk-- even has SYNTAX ERRORS :O
16:24:29 <ehird> i thought you were making oklotalk
16:24:33 <ehird> just oklotalk--?! :(
16:24:57 <oklopol> that's the main difference
16:25:19 <oklopol> also lacks a lot of fun stuff, like continuations and... well stuff i can't really explain unless you know the language
16:25:37 <ehird> i just wanna try it
16:26:00 <oklopol> should store state and everything, automatically
16:27:42 <ehird> oklopol: you're slow
16:28:14 <oklopol> took me time to find the bot code i usually use for new bots.
16:28:30 <oklopol> also, once again i've forgotten the privmsg syntax xD
16:28:32 <ehird> [16:28] <vixey> 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 <ehird> i think calling people a fucking idiot over /msg is against freenode's terms
16:28:54 <ehird> aha, he is in #AutisticParadise
16:29:02 <ehird> still gonna report him!
16:29:06 <ehird> 'cause i'm an ass, you see
16:32:56 -!- otobot has joined.
16:32:56 -!- otobot has quit (Remote closed the connection).
16:34:11 -!- vixey has joined.
16:34:27 -!- otobot has joined.
16:34:30 -!- otobot has quit (Remote closed the connection).
16:34:34 <ehird> haha, i broke otobot :D
16:34:48 <oklopol> ehird: think lisp in syntax.
16:35:03 <ehird> oklopol: think 'don't make it break on invalid code' :p
16:35:14 <ehird> try: oko(code); except e: print >>irc, 'LULZ',e
16:35:16 <oklopol> just saying in case you didn't know
16:35:30 <oklopol> i'm doing raw sockets, naturally ;)
16:36:48 <oklopol> sssry, irc has so much going on
16:36:50 -!- otobot has joined.
16:37:05 <ehird> did you forget to print out
16:37:15 <ehird> oklopol: suggestion
16:37:19 <ehird> make it echo everything form the irc sever
16:37:23 <ehird> if it says like 'no message to send'
16:37:25 <oklopol> if len(line)>=4 and line[3]==":::":
16:37:27 <ehird> it means you effed up stuff
16:37:33 <oklopol> result=result.split("\n")[0]
16:37:35 <oklopol> s.send("PRIVMSG "+line[2]+" :"+result[:200]+"\r\n")
16:37:39 <oklopol> s.send("PRIVMSG "+line[2]+" :An error: "+str(e))
16:37:52 -!- Corun has joined.
16:37:55 <ehird> [3] is always of length 1
16:37:58 <oklopol> line has everything split by " "
16:38:07 <ehird> oklopol: it goes like this
16:38:12 <ehird> :host PRIVMSG channel :foo
16:38:26 <oklopol> so line[3]==":::" should correct... hmm
16:38:29 <ehird> on the exception case
16:38:37 <ehird> and print out everything from the irc server
16:38:53 <AnMaster> oklopol, print out data to and from server on your terminal
16:38:56 <oklopol> oh, right, i already do :D
16:39:34 -!- otobot has quit (Read error: 104 (Connection reset by peer)).
16:39:49 -!- otobot has joined.
16:39:50 <otobot> An error: Int instance has no attribute 'split'
16:39:58 <ehird> you need to repr() it
16:39:58 -!- otobot has quit (Read error: 104 (Connection reset by peer)).
16:40:07 <ehird> LET ME DO THE EXAMPLE :P
16:40:27 -!- otobot has joined.
16:40:49 <otobot> An error: integer division or modulo by zero
16:40:55 <ehird> :: (error "DIE DIE DIE")
16:40:55 <otobot> An error: invalid literal for int() with base 10: 'DIE DIE DIE'
16:41:17 <vixey> :: (+ (+ (+ 0 1) 1) 1)
16:41:18 <ehird> :: (+ "DIE DIE DIE" "oklotalk")
16:41:18 <otobot> An error: invalid literal for int() with base 10: 'oklotalk'
16:41:33 <ehird> oklopol: make a func list :(
16:42:01 <ehird> oklopol: evaluating a function should show its source
16:42:25 <ehird> well, it works in function position
16:42:49 <ehird> so functions are looked up differently from variables
16:42:56 <oklopol> (= ...) just happens to be spacial
16:44:03 <ehird> :: (= id (-> x x))
16:44:16 <otobot> An error: 'list' object has no attribute 'clbl'
16:44:27 <otobot> An error: 'list' object has no attribute 'clbl'
16:44:31 <vixey> :: (-> x (-> y x))
16:44:34 <ehird> oklopol: what IS this
16:44:36 <oklopol> ehird: (-> ... ...) isn't a function.
16:44:42 <otobot> An error: invalid literal for int() with base 10: 'abc'
16:44:48 <ehird> what CAN it do, oklopol
16:44:55 <vixey> :: (-> x (-> y y))
16:45:00 <oklopol> well i have the rational number quicksort
16:45:10 <oklopol> vixey: that makes no sense
16:45:17 <oklopol> that's why it's not "working"
16:45:40 <vixey> what's -> ? I thuoght it was lambda
16:45:40 <otobot> An error: integer division or modulo by zero
16:45:45 <oklopol> http://www.vjn.fi/pb/p535315136.txt
16:45:49 <otobot> An error: Atm instance has no attribute 'call'
16:46:04 <oklopol> http://www.vjn.fi/pb/p612313333.txt <<< not sure these actually work, but that's all that should.
16:46:22 <oklopol> static and dynamic scoping, hf
16:46:32 <vixey> :: {(-> x {(-> y x)})} 2 3
16:46:36 <AnMaster> oklopol, how do you do sqrt on it?
16:46:39 <ehird> :: (= qs { (-> [] []) (-> (: h t) (+ (qs (\ {(< _ h)} t)) (+ [h] (qs (\ {(>= _ h)} t)))))})
16:46:44 <vixey> why did that give 3?
16:47:24 <vixey> :: ({(-> x {(-> y x)})} 2 3)
16:47:26 <oklopol> AnMaster: i haven't doneit
16:47:31 <ehird> oklopol: is oklotalk lazy
16:47:43 <vixey> :: (({(-> x {(-> y x)})} 2) 3)
16:47:44 <AnMaster> :: (= gcd {(-> [a 0] a) (-> [a b] (' b (% a b)))})
16:47:58 <otobot> An error: 1 cannot be set.
16:48:02 <ehird> AnMaster: function id
16:48:04 <oklopol> oklotalk is, it differentiates between stuff with side-effects and stuff without it
16:48:17 <ehird> :: (= c0 {(-> f {(-> x x)})})
16:48:47 <ehird> :: (= cs {(-> n {(-> f {(-> x (f ((n f) x)))})})})
16:48:53 <vixey> :: (({(-> xxx {(-> y xxx)})} 2) 3)
16:48:54 <oklopol> ehird: please don't hit me, BUT IT DOESN'T HAVE TAIL RECURSION
16:49:16 <ehird> fromchurch n = n (1+) 0
16:49:29 <vixey> :: (= cons {(-> car {(-> cdr {(-> f ((f car) cdr)))})})})
16:49:29 <otobot> An error: Unmatching parens @ row 1.
16:49:35 <ehird> :: (= c2n {(-> n ((n {(-> x (+ 1 x))}) 0))})
16:49:49 <vixey> :: (= cons {(-> car {(-> cdr {(-> f ((f car) cdr))})})})
16:49:55 <ehird> am i a qualified oklotalker now, oklopol?
16:50:00 <ehird> i picked up the language soooooo fast
16:50:05 <ehird> :: (c2n (cs (cs c0)))
16:50:19 <oklopol> ehird: well it's the perfect language, so i can't blame you ;;)
16:50:30 <ehird> oklopol: with some synatx yeh
16:50:37 <oklopol> anyway, i guess i have to understand your example
16:50:42 <ehird> gonna edit the code in emacs now, simpler
16:51:42 <vixey> :: (= car {(-> cons (cons {(-> car {(-> cdr car)})}))})
16:51:51 <vixey> :: (car ((cons 1) 2))
16:51:52 <AnMaster> Deewiant, does ccbi handle iterating over @ in a sane way?
16:52:07 <vixey> :: (= car {(-> cons (cons {(-> car {(-> cdr cdr)})}))})
16:52:12 <AnMaster> Deewiant, and wtf should it do, would it just kill ip, or would it kill n ips?
16:52:15 <vixey> :: (= cdr {(-> cons (cons {(-> car {(-> cdr cdr)})}))})
16:52:17 <vixey> :: (= car {(-> cons (cons {(-> car {(-> cdr car)})}))})
16:52:21 <oklopol> i made currying in actual oklotalk once, i think
16:52:22 <ehird> :: (= plus {(-> m {(-> n {(-> f {(-> x ((m f) ((n f) x)))})})})})
16:52:32 <ehird> :: (c2n (plus (cs c0) (cs c0))
16:52:32 <otobot> An error: Unmatching parens @ row 1.
16:52:33 <ehird> :: (c2n (plus (cs c0) (cs c0)))
16:52:40 <oklopol> also pretty easy in python
16:52:49 <Deewiant> AnMaster: in CCBI it'd only kill the current IP
16:53:01 <AnMaster> Deewiant, well atm mine cause a valgrind error
16:53:11 <Deewiant> AnMaster: IIRC @ is one of those 'special optimizations' ;-P
16:53:32 <ehird> :: (= plus {(-> m {(-> n {(-> f {(-> x ((m f) ((n f) x)))})})})})
16:53:35 <AnMaster> Deewiant, well I just want to make it sane in this case, avoid valgrind error that is
16:53:43 <ehird> oklopol: plus is my translation of:
16:53:43 <ehird> plus ≡ λm.λn.λf.λx. m f (n f x)
16:54:34 <ehird> :: (= inf {(-> x (x x))})
16:54:35 <vixey> :: (car (cdr (cdr ((cons 1) ((cons 2) ((cons 3) 0))) )))
16:54:37 <otobot> An error: maximum recursion depth exceeded in cmp
16:54:44 <ehird> you use PYTHON'S STACK
16:54:47 <ehird> that is TOTALLY lame
16:54:50 <oklopol> :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
16:54:56 <oklopol> that's why i don't have tail recursion
16:55:13 <oklopol> i used my own stack first, but... you know, i'm lazy
16:55:32 <oklopol> automatically returned if nothing applies
16:55:34 <ehird> oklopol: take a hint from lisp
16:55:37 <ehird> make false the empty list
16:55:46 <ehird> and {} is printed as nil
16:55:53 <ehird> then 'true' is just the symbol 't'
16:56:01 <ehird> which by virtue of oklotalk is already self-evaluating
16:56:13 <ehird> doodoodododododoooo eeeet
16:56:18 <oklopol> sorry, that's a bit wrong.
16:56:21 <vixey> how is it different frorm lisp?
16:56:23 <ehird> oklopol: doooo eeeeeeeet
16:56:28 <ehird> vixey: thats just the syntax
16:56:33 <ehird> oklopol: Show vixey the real oklotalk quicksort
16:56:46 <oklopol> oklotalk doesn't really have anything to do with lisps
16:56:53 <ehird> oklopol: plzzor show him
16:56:55 <ehird> i want to see it too
16:57:08 <AnMaster> oklopol, that makes no sense whatsoever
16:57:25 <ehird> AnMaster: his error handling is 'hard to explain'
16:57:29 <oklopol> AnMaster: indeed, you wrote weird code.
16:57:31 <ehird> AnMaster: it returns the function name.
16:57:34 <oklopol> thanks for pointing that out
16:57:39 <ehird> oklopol: but show us the oklosort!!
16:57:47 <AnMaster> oklopol, ok... so why did that happen?
16:58:10 <oklopol> quicksort... that quicksort would be {->;h:t->{h>}\t+[t]+$ {h<=}\t}
16:58:17 <ehird> i mean the real quicksort
16:58:22 <ehird> unless you changed it to look like that
16:58:24 <ehird> because THAT SUCKS
16:58:26 <ehird> i preferred the old syntax
16:58:29 <ehird> with loads of symbols
16:58:34 <ehird> oklopol: don't tell me you changed it
16:58:37 <ehird> i'll kill you, in your sleep
16:58:43 <ehird> i want to see the REAL one that i remember
16:58:43 <oklopol> it's just, you can do it in like 1000 ways
16:58:50 <ehird> show me the reaeaaaal one
16:58:52 <ehird> that you showed before
16:59:02 <oklopol> what one... you can paste it, i can tell you if it works...
16:59:09 <ehird> oklopol: i dun wanna dig up logs
16:59:11 <ehird> but it had things like
16:59:18 <ehird> it was something like that
16:59:36 <oklopol> that used to be the atom character
16:59:53 <ehird> seriously, just the oklotalk quicksort
16:59:55 <ehird> that you used to show people
17:00:06 <ehird> i will try and find it
17:01:06 <oklopol> AnMaster: atoms cannot be called, (+ - -) forces + to be called with [$- $-], but as atoms cannot be called, it just returns itself
17:01:18 <ehird> oklopol: it didn't have {} as the first-last chars
17:01:22 <oklopol> while it should return $f, indeed, doesn't really matter.
17:01:30 <oklopol> ehird: that was cise, perhaps?
17:01:39 <oklopol> cise has quicksort in like 8 characters
17:01:44 <AnMaster> oklopol, how do you do a string?
17:01:57 <vixey> cons up church numerals of course
17:01:58 <AnMaster> and what about puts/printf or similar?
17:02:10 <otobot> An error: invalid literal for int() with base 10: 'not really'
17:02:28 <AnMaster> :: (+ (outn "what") "not really")
17:02:28 <otobot> An error: invalid literal for int() with base 10: 'not really'
17:02:36 <AnMaster> :: (+ (outn "what") (outn "not really"))
17:02:36 <otobot> An error: invalid literal for int() with base 10: 'not really'
17:03:45 <ehird> oklopol: cooooooooooool, i have an a^nb^n problem
17:03:47 <ehird> 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 <ehird> it matches *a*, ***a***, and ****a**** as bold
17:04:01 -!- otobot has joined.
17:04:06 <AnMaster> oklopol, you forgot PING PONG?
17:04:10 <ehird> so i can't use regexps
17:04:16 <ehird> AnMaster: freenode has no ping timeouts
17:04:24 <AnMaster> ehird, they do TCP timeouts indeed
17:04:27 <AnMaster> :: (+ (outn "what") (outn "not really"))
17:04:52 <ehird> AnMaster: that's not up to them
17:04:54 <ehird> that's just tcp timing out
17:05:06 -!- Judofyr has joined.
17:05:07 <ehird> AnMaster: f = false
17:05:23 <AnMaster> oklopol, otherwise that would be cool
17:05:38 <oklopol> i can add whatevery you want, or you can add yourself, by making (= str {...})
17:05:42 <AnMaster> how comes - can evaluate to false?
17:05:53 <ehird> AnMaster: when the pattern match fails
17:05:59 <oklopol> IT DOESN'T DO ANYTHING, EVER
17:06:21 <ehird> oklopol: did it just print out an empty atom
17:06:36 <ehird> I WANNA COMMAND LIST
17:06:45 <ehird> i think my $ broke it
17:06:46 <ehird> it still wants input
17:06:49 <ehird> to complete the symbol
17:07:05 -!- otobot has quit (Read error: 104 (Connection reset by peer)).
17:07:23 <ehird> is this otobot sex
17:07:26 <ehird> because that sounds painful
17:07:53 <ehird> turing complete parser
17:07:59 <ehird> oklopol: make a language with a turing complete parser
17:08:28 <AnMaster> ehird, what exactly does that mean
17:08:49 <ehird> AnMaster: depending on the input text the parser can perform arbitary computations
17:08:59 <ehird> so, you could write a program which runs a brainfuck program *entirely by its syntax*
17:09:00 <AnMaster> ehird, tried the C preprocessor?
17:09:09 <vixey> how is this differetn from lisp?
17:09:09 <ehird> and that's not what i mean
17:09:17 <ehird> i mean like the actual parsing
17:09:18 <vixey> while(1) { cpp } is turing complete
17:09:19 <AnMaster> it is 99-bottles of bear complete
17:09:19 <ehird> is turing complete
17:09:34 -!- otobot has joined.
17:09:46 <oklopol> ehird: oklotalk actually has state lists, which are basically made for parsing
17:09:55 <ehird> oklopol: can i have a list of commands
17:10:04 <otobot> An error: Application consists of 2 or 3 expressions.
17:10:08 <otobot> An error: Application consists of 2 or 3 expressions.
17:10:15 <oklopol> http://www.vjn.fi/pb/p612313333.txt
17:10:18 <AnMaster> oklopol, how do you do floating points?
17:10:38 <oklopol> you have my rational numbers.
17:10:48 <ehird> oklopol: variadic?
17:10:51 <ehird> can i do variadiiiic
17:11:14 <AnMaster> oklopol, so how do you do 1/3 to it?
17:11:16 <oklopol> vixey: how is oklotalk-- different from lisp?
17:11:16 <ehird> :: (= . {(-> a b {(-> c (a (b c)))})})
17:11:34 <oklopol> lisp isn't even one of the contributors to it
17:11:42 <oklopol> i didn't know lisp when i made most of it
17:11:48 <ehird> :: (= not {(-> f t) (-> _ f)})
17:12:07 <oklopol> perhaps i should add not :D
17:12:29 <oklopol> it calls $t with $not as arg
17:12:38 <ehird> oklopol: hahahahahahahahahahahaha whut
17:12:59 <oklopol> second arg is called if first is an atom.
17:13:07 <ehird> :: ((. outn outn) "hi")
17:13:07 <otobot> An error: invalid literal for int() with base 10: 'hi'
17:13:13 <oklopol> in oklotalk--, it's actually that simple, i think
17:13:19 <ehird> :: ((. outn outn) hi)
17:13:20 <otobot> An error: invalid literal for int() with base 10: 'hi'
17:13:23 <ehird> dfg';dfg'df'glg'f;dl'd;fl';fgdl;'d
17:13:28 <ehird> :: (= onon (. outn outn))
17:13:31 <otobot> An error: invalid literal for int() with base 10: 'hi'
17:13:43 <oklopol> i haven't really done anything with strings
17:13:51 <ehird> oklopol: string = list of int
17:14:19 <AnMaster> oklopol, is it turing complete?
17:14:24 <oklopol> the problem is, it's not something i can just whip out my ass to fix it
17:14:28 <oklopol> AnMaster: trivial to make ski
17:14:28 <ehird> AnMaster: it has closures
17:14:33 <ehird> AnMaster: ergo it is TC
17:14:39 <ehird> AnMaster: you can do the lambda calculus in it
17:14:48 <ehird> \x.E -> {(-> x E)}
17:14:54 <oklopol> but now to tackle those strings...
17:14:55 <AnMaster> ehird, no I can't, because I don't know bambda
17:15:01 <ehird> AnMaster: you suck
17:15:13 <vixey> you don't really want O(n) append on strings
17:15:36 <oklopol> lists don't have O(1) append
17:15:42 <AnMaster> oklopol, what does the (. ) thing do
17:15:44 <ehird> you can make O(1) lists
17:15:48 <ehird> oklopol: make O(1) lists!
17:15:50 <ehird> just store the pointer to the end
17:16:02 <oklopol> python does that for me, duh
17:16:42 <oklopol> ehird: i promise i'll start working on a c version or something
17:16:50 <oklopol> dunno what language, but some other than python
17:17:08 <oklopol> i could just do what everyone keeps telling me and start making the compiler in itself
17:17:15 <AnMaster> oklopol, can you write an oklotalk interpreter in oklotalk?
17:17:21 <ehird> AnMaster: right on the mark!
17:17:26 <oklopol> well, actually you *can't*
17:17:39 <oklopol> strings cannot be splitted in any way.
17:17:44 <oklopol> but that's trivial to add ofc
17:17:55 <oklopol> i should really just do string -> [int] as ehird said
17:18:06 <oklopol> AnMaster: that we said the same thing
17:18:18 <AnMaster> <AnMaster> oklopol, can you write an oklotalk interpreter in oklotalk? <oklopol> i could just do what everyone keeps telling me and start making the compiler in itself
17:18:24 <oklopol> ehird needs an interpreter
17:18:58 <AnMaster> I guess I lagged, or ehird wouldn't have acted like that
17:19:12 <ehird> i am a pure function in ST
17:19:15 <ehird> i have state packets.
17:19:30 <ehird> ehird :: String -> StateT WTFs ST Nonsense
17:19:46 <ehird> ehird "HELLO" => "GO DIE IN A FIRE"
17:19:52 <ehird> ehird "rocks" => "AAAAAAAAAAAAA"
17:20:01 <ehird> ehird "" => string of infinite length
17:20:06 <vixey> what language is that?
17:20:08 <ehird> ehird (string of infinite length) => string of -1 length
17:20:15 <ehird> vixey: well, haskell, but the => is meaning 'evaluates to'
17:20:21 <ehird> the previous was just my types
17:20:40 <vixey> what's the difference from = and =>?
17:21:19 <ehird> 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:43 <otobot> An error: Application consists of 2 or 3 expressions.
17:21:44 <oklopol> why does . have a different behavior :O
17:22:02 <oklopol> the world of oklotalk cries
17:22:13 <ehird> [17:21] <otobot> An error: Application consists of 2 or 3 expressions.
17:22:18 <oklopol> AnMaster: that's an invalid application
17:22:38 <ehird> [17:21] <otobot> An error: Application consists of 2 or 3 expressions.
17:22:41 <AnMaster> oklopol, so how do you define a function now again
17:22:48 <oklopol> "2-3 expressions" is better
17:22:51 <ehird> AnMaster: {...pattern...}
17:22:56 <ehird> AnMaster: pattern is (-> PATTERN EXPR)
17:23:08 <ehird> {(-> [a b] a) (-> foo bar)}
17:23:09 <AnMaster> :: (= ehird {(outn "ehird!")})
17:23:11 <oklopol> ehird: it is not (function arg arg ...)
17:23:16 <otobot> An error: Application consists of 2 or 3 expressions.
17:23:19 <ehird> AnMaster: uh... PATTERN
17:23:20 <oklopol> it is (expression expression{1,2})
17:23:25 <ehird> AnMaster: pattern is (-> PATTERN EXPR)
17:23:35 <ehird> :: (= ehird {(-> x (outn "ehird!"))})
17:23:41 <oklopol> -> takes any number of expressions
17:23:49 <otobot> An error: Unmatching parens @ row 1.
17:23:51 <otobot> An error: Application consists of 2 or 3 expressions.
17:24:10 <AnMaster> do I get this right? it does not accept functions taking no arguments
17:24:24 <vixey> {(-> <name> <expression> ...)} makes sense
17:24:26 <oklopol> AnMaster: more like, it's not like thet
17:24:32 <ehird> AnMaster: procs can only take 1 argument that you define yourself
17:24:33 <vixey> but what is {..} and (-> ...) alone?
17:24:36 <ehird> but + etc can take 2
17:24:39 <ehird> because they'er magic
17:24:42 <ehird> this is a very early prototype ofc
17:24:45 <AnMaster> oklopol, how do you refer to an argument in the function body?
17:24:45 <oklopol> AnMaster: what should (proc) do?
17:24:57 <vixey> so why not just write
17:24:57 <AnMaster> oklopol, something like: :: (= hi {(-> x (outn "Hi $1!"))})
17:24:58 <oklopol> THERE ARE NO FUNCTIONS, THERE ARE THINGS.
17:25:03 <vixey> {-> <name> <expression> ...}
17:25:06 <oklopol> think function where appropriate
17:25:10 <oklopol> think object where approriate.
17:25:11 <ehird> vixey: its pattern matching
17:25:17 <ehird> vixey: you can have multiple patterns
17:25:30 <vixey> can you make new types?
17:25:31 <AnMaster> oklopol, something like: :: (= hi {(-> x (outn (+ "Hi " (+ x "!")))})
17:25:37 <oklopol> vixey: i have the rational type
17:25:40 <ehird> vixey: yes, just make them into functions
17:25:43 <oklopol> it's made functionally thuogh
17:25:49 <AnMaster> ;; (= hi {(-> x (outn (+ "Hi " (+ x "!")))})
17:25:51 <ehird> vixey: see rational class: http://www.vjn.fi/pb/p612313333.txt
17:25:51 <AnMaster> :: (= hi {(-> x (outn (+ "Hi " (+ x "!")))})
17:25:52 <otobot> An error: Unmatching parens @ row 1.
17:25:53 <oklopol> you can make it mutable though, why not
17:26:02 <ehird> http://www.vjn.fi/pb/p535315136.txt
17:26:03 <AnMaster> :: (= hi {(-> x (outn (+ "Hi " (+ x "!"))))})
17:26:06 <ehird> AnMaster: http://www.vjn.fi/pb/p535315136.txt (= rat starts there
17:26:24 <ehird> :: <-- comment -->
17:26:28 -!- otobot has quit (Remote closed the connection).
17:26:29 <ehird> :: (+ <-- comment --> 2)
17:27:05 -!- otobot has joined.
17:27:10 <ehird> :: (+ <-- comment --> 2)
17:27:15 <AnMaster> :: (= hello {(-> x (outn (+ "Hello " x "!"))))})
17:27:16 <otobot> An error: Unmatching parens @ row 1.
17:27:16 <otobot> An error: Application consists of 2 or 3 expressions.
17:27:19 <AnMaster> :: (= hello {(-> x (outn (+ "Hello " x "!")))})
17:27:19 <otobot> An error: Application consists of 2 or 3 expressions.
17:27:29 <AnMaster> :: (= hi {(-> x (outn (+ "Hello, " (+ x "!"))))})
17:27:30 <oklopol> AnMaster: I'M ONLY GOING TO TELL THIS ONCE MORE, + ISN'T A FUNCTION
17:27:32 <ehird> :: (+ <-- comment --> 2) <-- so a comment actually evaluates to a value? -->
17:27:40 <ehird> :: (+ <-- comment --> 1 1)
17:27:46 <oklopol> ATOMS, BY DEFINITION, ARE THE ONE THING THAT *CANNOT* BE CALLED
17:28:12 <AnMaster> oklopol, yet my example above worked, didn't it?
17:28:16 <oklopol> the evaluation goes like this in an application
17:28:35 <AnMaster> <AnMaster> :: (= hi {(-> x (outn (+ "Hello, " (+ x "!"))))})
17:28:35 <oklopol> (= hello {(-> x (outn (+ "Hello " x "!"))))}) ?
17:28:59 <AnMaster> it did produce what I intended it to
17:29:10 <ehird> :: (= hello {(-> x (outn (+ "Hello " x "!"))))})
17:29:10 <otobot> An error: Unmatching parens @ row 1.
17:29:17 <ehird> :: (= hi {(-> x (outn (+ "Hello, " (+ x "!"))))})
17:29:27 <ehird> you defined 'hi' before
17:29:40 <ehird> AnMaster: of course it worked
17:29:41 <ehird> :: (= hi {(-> x (outn (+ "Hello, " (+ x "!"))))})
17:29:43 <ehird> what's not working about that
17:29:49 <otobot> An error: Application consists of 2 or 3 expressions.
17:29:57 <AnMaster> just it seems oklopol said it didn't work
17:30:01 <oklopol> AnMaster: i assumed you were doing something like a varadic +
17:30:25 <AnMaster> oklopol, well varadic stuff would help IMO
17:30:59 -!- shinkuzin has quit (No route to host).
17:31:07 <ehird> oklotalk will be infix
17:31:09 <oklopol> as you see, this is just alternative syntax over infix & prefix
17:31:12 <ehird> when it loses its --
17:31:17 <ehird> so it would make no sense
17:31:29 <ehird> APL only has unary and binary functions too
17:31:34 <ehird> and it was used a lot :)
17:31:47 <ehird> :: (+ [1 2 3] [4 5 6])
17:31:55 <ehird> oklopol: uhh, make it an arary language plz
17:32:06 <ehird> that should be [5 7 9]
17:32:09 <ehird> that's how apl, k, etc do it
17:32:13 <ehird> array languages r0x
17:32:27 <ehird> that's a prime number finder
17:32:33 <ehird> concise because of the array stuffs
17:32:53 <ehird> oklopol: this sorts according to word length, and works with any N-dimensions of array:
17:33:00 <oklopol> 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 <oklopol> which would be concatenation level.
17:33:10 <ehird> oklopol: noo, in array languages
17:33:13 <ehird> its not up to the function
17:33:22 <ehird> (op [1 2 3] [4 5 6]) is:
17:33:28 <AnMaster> you want to try /dev/urandom next?
17:33:30 <ehird> that's language-level
17:33:36 <ehird> AnMaster: uhm, apl uses non-ascii
17:33:45 <ehird> oklopol: that's why they're so short
17:33:54 <oklopol> oklotalk wins apl in many cases.
17:34:32 <oklopol> 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:44 <ehird> oklopol: aha, that's what i wanted originally
17:34:51 <ehird> you agree! mwahaha
17:35:44 <ehird> AnMaster: forgot parens
17:35:45 <oklopol> that just evaluates the symbols.
17:36:03 <otobot> An error: 'int' object is not iterable
17:36:25 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)).
17:36:27 <AnMaster> you got to tell me how that works
17:36:46 <oklopol> lists can be used as a function though...
17:37:01 -!- Judofyr has joined.
17:37:10 <otobot> An error: 'int' object is not iterable
17:38:02 <oklopol> give it a function as second arg
17:38:33 <AnMaster> ehird, anyway you could do that array stuff in other languages, operator overloading in C++ could do it
17:38:38 <ehird> oklopol: i am going to make a python lisp now, where EVERYTHING is first-class
17:38:48 <ehird> AnMaster: its about the paradigm. you could do stack-based programming in c++ too
17:38:52 <AnMaster> so arrayobject + otherarrayobject caused them to be added the way you want
17:39:08 <ehird> oklopol: the parser, the callstack
17:39:26 <ehird> oklopol: good idea or not :D
17:39:43 <otobot> An error: Unmatching parens @ row 1.
17:39:48 <otobot> An error: Unmatching parens @ row 1.
17:39:54 <ehird> oklopol: here's another example:
17:40:04 <ehird> first class macros
17:40:10 <otobot> An error: Unmatching parens @ row 1.
17:40:21 <oklopol> :: (map [1 2 3 4 5] [[$! 2] [$! 1] [$! 0]])
17:40:21 <otobot> An error: Lst instance has no attribute '__len__'
17:40:24 <AnMaster> oklopol, I can't see them being that
17:40:32 <oklopol> AnMaster: nothing works atm
17:41:02 <ehird> oklopol: if ==> #<macro (c t e) (cond (c t) (else e))>
17:41:10 <oklopol> AnMaster: well you have too many args for ==
17:41:17 <ehird> #<macro args=(c t e) body=((cond (c t) (else e)))>
17:41:20 <oklopol> it's the wrong error, but an error still
17:41:34 <otobot> An error: Unmatching parens @ row 1.
17:41:54 <otobot> An error: Unmatching parens @ row 1.
17:42:01 <otobot> An error: Unmatching parens @ row 1.
17:42:05 <ehird> AnMaster: why have (x) around the arg
17:42:06 <otobot> An error: Assignment consists of 2 args.
17:42:07 <ehird> that makes no sense
17:42:26 <oklopol> ehird: perhaps to evaluate it? :D
17:42:46 <otobot> An error: Application consists of 2 or 3 expressions.
17:43:03 <otobot> An error: Lst instance has no attribute '__len__'
17:43:09 <oklopol> btw. siisii would crash it and such...
17:43:11 <otobot> An error: Lst instance has no attribute '__len__'
17:43:12 <ehird> AnMaster: you missed the arg name
17:43:17 <ehird> :: (= a {(-> x (outn (x x)) )})
17:43:20 <otobot> An error: maximum recursion depth exceeded
17:43:27 <ehird> python's stack has a limit
17:43:32 <AnMaster> :: (= = {(-> x (outn (x x)) )})
17:43:39 <otobot> An error: maximum recursion depth exceeded
17:43:43 <otobot> An error: Assignment consists of 2 args.
17:43:45 <ehird> AnMaster: = is special cased
17:43:59 <ehird> AnMaster: otherwise the var name would be evaluated
17:44:11 <oklopol> ehird: btw. look at the comparisons in the rational example
17:44:26 <oklopol> just the code, i kinda like it
17:44:27 <otobot> An error: Empty application.
17:44:33 <ehird> (-> [(@ o [$any [$> $< $>= $<=]]) (/ dn dd)]
17:44:33 <ehird> (o (* n dd) (* dn d)))
17:44:50 <oklopol> special functions should be as applications
17:45:08 <oklopol> but... didn't change it yet, not that it's that hard, but i have to change all my test progs
17:45:09 <otobot> An error: Atm instance has no attribute '__len__'
17:45:18 <AnMaster> oklopol, what exactly does that error mean
17:45:30 <oklopol> well the error is in my implementation
17:45:42 <oklopol> but i fixed it, in my head, like a second ago
17:45:56 <AnMaster> oklopol, THAT SHOULD WORK! ½ is rational
17:47:33 <oklopol> retry something that said __len__ doesn't work
17:47:41 <ehird> oklopol: name my crazy pythonlispfirstclassawesome
17:47:59 <oklopol> ehird: well you could steal the name soup?
17:48:06 <oklopol> i hear the soup people haven't really gotten much done
17:48:39 <oklopol> right, you're one of those "THE SOUP WILL RISE AGAIN" cooks... well i myself am not that optimistic.
17:48:39 <vixey> what more can you make first class than procedures and continuations?
17:48:39 <AnMaster> oklopol, would be cool if that actually worked
17:48:39 <ehird> vixey: function source code
17:48:39 <AnMaster> would make it way more esoteric
17:48:40 <ehird> vixey: internal interpreter source
17:48:53 <AnMaster> oklopol, it's the unicode symbol for 1/2...
17:49:08 <ehird> first-class parser is in a lot of lisps
17:49:19 <ehird> if the interpreter uses the data structure
17:49:27 <AnMaster> oh intercal syntax didn't work
17:49:27 <ehird> oh ,first class scopes of course
17:50:10 <AnMaster> ehird, what about first class class?
17:50:11 <oklopol> i should make scopeless functions, then you could do stuff like /=
17:50:19 <ehird> first class first classity
17:50:25 <ehird> (set! first-classity #f)
17:50:29 <oklopol> why not first class first?
17:50:33 <ehird> ;; This operation disabled because first classity is disabled
17:50:44 <ehird> impossible to turn off because turning it off makes turning it off impossible
17:52:32 <AnMaster> What kind of tickets do functional programmers prefer when traveling by aircraft? Answer: first class tickets.
17:52:35 <ehird> soup objects will be called pans
17:52:49 <ehird> AnMaster: my first class lisp
17:53:01 <AnMaster> ehird, you said the name was in use?
17:53:16 <ehird> but by me and oklopol
17:53:26 <ehird> AND A CRACK DEVELOPMENT TEAM
17:53:36 <ehird> or a development team on crack
17:53:41 <ehird> oklopol: Soup lisp will have first-class GCs
17:53:53 -!- Sgeo has joined.
17:53:54 <oklopol> perhaps i should make oklotalk also evaluate stuff given urls... that's like a few lines
17:53:54 <ehird> also, call/cc will be trivial
17:54:16 <oklopol> ehird: perhaps you just make it as a syntax extension to the original soup
17:54:18 <AnMaster> oklopol, oooh nice, then I know how to disable it
17:54:23 <ehird> oklopol: but then i have to make soup
17:54:56 <AnMaster> oklopol, tell it to evaluate a 100 MB download or so
17:55:28 <ehird> 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:34 <ehird> AnMaster: it'll time out
17:56:11 <ehird> oklopol: BUT WHICH
17:56:13 <AnMaster> :: http://adelie.polymtl.ca/releases/x86/2007.0/livecd/livecd-i686-installer-2007.0.iso
17:56:13 <otobot> http://adelie.polymtl.ca/releases/x86/2007.0/livecd/livecd-i686-installer-2007.0.iso
17:56:27 <ehird> AnMaster: he didn't implement it yet
17:56:39 <AnMaster> otherwise evaluating a huge ISO
17:57:45 <oklopol> ehird: i'm not sure what you mean, but latter
17:57:48 <ehird> but which should i use
17:57:54 <ehird> cook.pan() would just call Pan(cook)
17:57:57 <otobot> An error: invalid literal for int() with base 10: 'foo'
17:58:03 <AnMaster> Strings can be concatenated ('+') and multiplied by an integer ('*').
17:58:15 <otobot> An error: invalid literal for int() with base 10: 'foo'
17:58:19 <AnMaster> oklopol, one of the links you posted
17:58:22 <AnMaster> http://www.vjn.fi/pb/p612313333.txt
17:58:24 <ehird> it should replicate it
17:58:37 <ehird> oklopol: what should i call the id of pans
17:59:12 <ehird> class Pan(object):
17:59:12 <ehird> def __init__(self, cook):
17:59:12 <ehird> self.pancake = cook.next_id()
17:59:34 <ehird> maybe i should call it cook.flip
17:59:50 <ehird> I also have Pan.throw, which copies an object to the context of another interpreter
18:00:00 <otobot> An error: invalid literal for int() with base 10: 'foo'
18:00:22 <AnMaster> oklopol, I thought order shouldn't matter?
18:00:44 <ehird> oklopol: remember, it's not ASSOCIATIVE
18:00:47 <ehird> i lectured you about + before
18:01:09 <AnMaster> oklopol, looks like multiplication?
18:01:15 <oklopol> that sends the object 5 the list [$* 4]
18:01:21 <oklopol> 5 can do what it wants with it
18:01:39 <ehird> AnMaster: yeargh, but that's how addition etc on rationals works
18:01:42 <oklopol> you can redefine all this in oklotalk, but not yet.
18:02:42 <oklopol> except it's sent as #lo... but you'd have to know oklotalk :P
18:02:54 <oklopol> with the operator and the arg
18:03:09 <oklopol> if it knows what to do, it does it
18:03:10 <AnMaster> ok, what about negative numbers
18:03:23 <oklopol> the interp supports them internally
18:03:40 <AnMaster> because (- 0 1) would be almost befunge
18:03:43 <oklopol> i could add that... it's just the syntax is retarded anyway.
18:03:52 <ehird> soup lisp is too hard
18:03:56 <ehird> oklopol: paste your old python lisp
18:04:15 <oklopol> that sch thing of ololobot
18:04:30 <oklopol> hmmhmm, did it have static scoping?
18:04:38 <oklopol> or was it that it *didn't*
18:04:50 <oklopol> i remember it was definitely either.
18:04:50 <otobot> An error: Application consists of 2 or 3 expressions.
18:05:01 <oklopol> 4 and i are separated as tokens
18:05:14 <AnMaster> oklopol, ah, so how do you do complex numbers?
18:05:22 <oklopol> well, you first make a class for them
18:05:44 <oklopol> if you want to do it, that would be awesome.
18:06:04 <ehird> oklopol: i wannnnaaaaaaiiit
18:06:08 <oklopol> because then i could say "EVEN OTHERS LOVE IT GOD IT''S AWESOME"
18:06:11 <ehird> and put ololobot up here
18:06:20 <oklopol> ehird: i don't have it, actually :\
18:06:21 -!- Corun has quit ("This computer has gone to sleep").
18:06:32 <ehird> oklopol: its on the pastebin
18:06:50 <ehird> 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:56 <oklopol> well, the pastebin has a shitload of stuff...
18:07:18 <ehird> okokokokokokokokokokokokoko...
18:07:29 <ehird> oklopol: grep 'class MEM'
18:07:37 <ehird> or 'class O(object)'
18:07:58 <AnMaster> you know, befunge seems *sane* compared with this
18:07:59 <ehird> oklopol: cause i know it had one of those in
18:08:02 <ehird> just do something like
18:08:05 <oklopol> i can prolly connect on putty and do it
18:08:19 <oklopol> AnMaster: compared with oklotalk?
18:08:35 <oklopol> i've used it for like a few hours
18:08:47 <oklopol> making the rational class took 10 minutes
18:09:02 <oklopol> do the same in a few minutes in befunge, and i'll believe you
18:09:02 <AnMaster> oklopol, yeah making a standard library in befunge is harder
18:09:21 <ehird> oklopol: what is ittt :D
18:09:38 <AnMaster> oklopol, well object orientated befunge.... maybe
18:10:04 <AnMaster> using a global offset table for the function pointers and for the vtable and so on
18:10:22 <oklopol> well, the rational class was as easy to make in oklotalk as it would've been in, say, python.
18:10:37 <AnMaster> oklopol, well I don't really like python
18:10:43 <oklopol> it's not *that* bad a language
18:10:50 <oklopol> well, python was my example of where it would be trivial
18:10:53 <AnMaster> my non-esoteric languages of choice are C and Bash
18:10:54 <ehird> oklopol: linkokokoko
18:10:59 <oklopol> it's naturally easier in oklotalk than say X
18:12:00 <ehird> AnMaster: vjn.fi presumably
18:13:04 <oklopol> this is not the real account
18:13:10 <oklopol> the account with shell access
18:14:14 <oklopol> i asked the guy who knows anything about it, perhaps get an answer soon
18:14:47 <oklopol> ehird: want to try making complex numbers, btw?
18:15:25 <ehird> oklopol: it's just a tuple of numbers that are operated on together right?
18:15:36 <ehird> you barely need to define anything
18:15:38 <oklopol> kinda like rat, but different operations
18:15:56 <oklopol> i'll make the interpreting urls thing
18:17:57 <vixey> funny video http://video.google.com/videoplay?docid=-7990603720514207956
18:18:39 <ehird> vixey: oleg is cooool
18:19:02 <ehird> http://okmij.org/ftp/ is full of gems
18:19:19 <oklopol> ehird: it is simply a list of all arguments given
18:19:33 <oklopol> (+ your_obj arg) == [$+ arg]
18:19:42 <oklopol> and (your_obj arg arg) == [arg arg]
18:19:51 <ehird> oklopol: okay. <-- pattern match on division -->
18:19:51 <ehird> (-> [pb $/] [n d])
18:19:51 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)).
18:19:54 <ehird> what is pb, and what does that do
18:20:02 <oklopol> unary would be (+ you_obj) == $+ as the message
18:20:12 <oklopol> and (your_obj arg) == arg as message
18:20:25 <oklopol> [$pb ...] pattern matches on the ...
18:20:28 -!- Judofyr has joined.
18:20:32 <oklopol> it should return a list with two elements
18:20:36 <oklopol> splitting the object in half
18:21:24 <oklopol> this would extract the nominator of a rational
18:21:39 <ehird> oklopol: so that defines a custom pattern match
18:21:54 <ehird> (-> [pb CAR-OF-PATTERN-MATCH] ...)
18:22:02 <ehird> but i don't get how [n d] fits into it
18:22:17 <oklopol> it returns the list with the object split in two logical halves
18:22:23 <oklopol> a list would return [head, tail]
18:22:37 <ehird> so, i should match on 'j' i guess
18:22:42 <ehird> (that's my class name)
18:22:47 <ehird> (-> [pb $cpx] [r i])
18:23:00 <oklopol> or you can define a setter
18:23:26 <oklopol> (-> $getreal r) (-> $getimag i)
18:23:36 <oklopol> it's just nice to be able to do this at pattern matching
18:24:22 <oklopol> the pattern matching can only be extended with binary splits and unary... drops or something
18:24:46 <oklopol> but it should have stuff like (>> stack 3) that would match the 3rd element of the stack
18:24:55 <ehird> oklopol: heh this is trivial...
18:24:58 <ehird> everything is of the form:
18:25:12 <ehird> (-> [$OP (cpx rr ii)] (cpx (OP r rr) (OP i ii)))
18:25:56 <AnMaster> oklopol, for complex numbers you do need square root
18:26:22 <ehird> comparisons aren't even that hard
18:26:27 <ehird> since i don't have to define them
18:26:39 <oklopol> AnMaster: gaussian integers
18:27:13 <oklopol> ehird: multiplication doesn't work like that
18:27:32 <ehird> oklopol: oops, yeah
18:27:39 <ehird> sorry, mind is fuzzed right now
18:27:46 <ehird> and crap, i need to define more stuff
18:27:49 <ehird> for adding to non-complex
18:27:50 <AnMaster> oklopol, how would you do that in oklotalk?
18:28:22 <oklopol> ofc doesn't work that easily
18:28:43 <oklopol> and you cannot match on type, atm.
18:29:05 <Sgeo> Will anyone but myself care when PSOX 1.0b1 is released?
18:29:18 <ehird> oklopol: i'm gonna make a concatenative language in python
18:29:21 <ehird> since we're already done lisps to death
18:29:26 <ehird> now, in tradition, you must copy me
18:29:39 <Sgeo> AnMaster, why not?
18:29:41 <oklopol> ehird: can you make it so it only works for the complex range?
18:30:03 <ehird> oklopol: you should call yours okompose
18:30:15 <ehird> AnMaster: befunge can already do what psox provides
18:30:19 <ehird> and psox is hell to use in anything but BF
18:30:27 <ehird> oklopol: yeah, since concatenation is composition :D
18:30:36 <AnMaster> ehird, just need to code SOCK fingerprint I think
18:30:45 <Sgeo> ehird, because of NUL bytes etc.?, or other reasons?
18:30:55 <ehird> Sgeo: you never considered non-BFs, thats why
18:30:57 <oklopol> befunge + psox = no problem
18:31:26 <oklopol> that's like the worst character to choose for frequent use
18:31:42 <AnMaster> oklopol, indeed I hate NULL byte
18:31:55 <AnMaster> 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:17 <AnMaster> Sgeo, well tell me what it would offer me as a befunge programmer
18:32:18 <ehird> Sgeo: but nobody really cares about psox any more, so not many people will suggest
18:33:00 <oklopol> the problem with doing complex numbers is you cannot lift integers to that range... you'd need to extend syntax
18:33:09 <oklopol> that would be the oklotalk way to do it
18:33:24 <oklopol> my next language should be able to understand integers are a subset of cpx
18:33:28 <AnMaster> oklopol, indeed you basically need vectors, because that is what they (mostly) are
18:33:32 <ehird> oklopol: i can pattern match on non compelx too
18:33:37 <AnMaster> apart from the sqrt(-1) == i quirk
18:33:39 <oklopol> AnMaster: i don't see what your point is
18:34:20 <AnMaster> oklopol, also you should be able to use rational numbers in the place of the integers when making complex numbers
18:34:23 <oklopol> that will do stuff like cpx + int
18:34:48 <oklopol> well, ideally, rat would just lift into a complex number
18:34:54 <oklopol> and should work automatically.
18:34:59 <AnMaster> oklopol, idea: call the garbage collector the "cat"
18:35:12 <oklopol> but rat will need to know about complexes.
18:35:36 <vixey> can't it just know about numbers in general?
18:35:37 <oklopol> this isn't really a problem of oklotalk's, much more general prob
18:35:40 <vixey> while also being a number
18:35:46 <AnMaster> oklopol, you could use an interface
18:36:01 <AnMaster> rat implements interface "number"
18:36:08 <oklopol> if complex numbers are created, you can have rational complexes automatically.
18:36:13 <oklopol> the problem is then ranges mix.
18:36:41 <Sgeo> If PSOX is not going to be appreciated, I need to find another major programming project to do
18:36:42 <AnMaster> oklopol, cpx takes two things implementing the interface number. cpx itself implements the fingerprint number
18:37:08 <oklopol> what's the use of implementing the interface?
18:37:25 <AnMaster> oklopol, because then you can stick *any* number into the cpx
18:37:34 <oklopol> well, in fact, oklotalk doesn't even have that
18:38:06 <oklopol> it is assumed everything can handle everything, though somethings things are asked whether they actually *want* to have certain args
18:38:32 <oklopol> AnMaster: you can do that in oklotalk, just put in the *any number*
18:38:37 <AnMaster> actually you could get some issues from that, like making a complex of two complex
18:38:43 <oklopol> the problem is int + cpx will call int's +-operation
18:39:01 <oklopol> and that makes no sense, because ints don't know what cpx's are
18:39:08 <ehird> oklopol: this is an old OO problem
18:39:09 <AnMaster> I got no clue what (1+3i)+(0-4i)i
18:39:15 <oklopol> the fact cxp "is a number" doesn't make any difference
18:39:19 <ehird> oklopol: the 'x+y' when x doesn't know what ys are
18:39:21 <ehird> oklopol: the solution
18:39:23 <AnMaster> well mathimatically I can solve it
18:39:24 <ehird> oklopol: is generic methods
18:39:50 <ehird> oklopol: basically, in 'x.y(z)' you dispatch on the magic first param - self, here x
18:39:50 <ehird> oklopol: with generic methods you dispatch on THEM ALL
18:39:50 <ehird> and methods are no longer tied to classes
18:39:50 <ehird> so you define e.g.
18:39:57 <ehird> (+ (int a) (cpx b))
18:40:10 <ehird> that solves the problem
18:40:13 <oklopol> well, you can do that, ofc
18:40:19 <ehird> and also removes the arbitary 'dispatch only on first magic param thing'
18:40:26 <ehird> oklopol: yeah but the point is: you drop message sending
18:40:27 <oklopol> not in oklotalk--, but it's a trivial change to the structure
18:40:30 <ehird> no messages are sent
18:40:45 <ehird> you don't understand what i' saying
18:40:47 <oklopol> message sending works great for this exact thing
18:41:12 <ehird> message sending sucks for this
18:41:18 <ehird> because you get the 'x+y' x doesnt know what y is
18:41:22 <ehird> with generic methods, that's never a problem
18:41:25 <ehird> because 'x' doesn't know anything
18:41:30 <ehird> because methods are not 'inside' the object
18:41:51 <oklopol> so + just knows about all, that's no problem for message-passing
18:41:56 <oklopol> oklotalk already does this.
18:42:16 <oklopol> and for most cases, objects getting the messages is simply prettier
18:42:25 <oklopol> which is why many people like OO
18:43:12 <oklopol> you can just add functionality to + easily, once i add a certain feature oklotalk-- lacks
18:43:21 <oklopol> (the other one, apart from syntax, that made me change the name)
18:45:11 <oklopol> python solves this by having __ropr__'s
18:46:03 <oklopol> it's conceptually a fairly good solution for this exact case, because the other object is "cleverer" than the other
18:46:24 <oklopol> so the cleverer one will be called automatically
18:46:35 <oklopol> not good, but *a somewhat working*
18:46:51 <AnMaster> 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 <oklopol> anyway, it is true that for numbers, having message-passing complicates things a bit
18:47:38 <oklopol> i'm just saying oklotalk is especially designed to make message-passing support having behavior outside the objects themselves.
18:47:49 <oklopol> in case you can parse that sentence
18:47:55 <Deewiant> AnMaster: of course you need to use complex numbers - i.e. use pairs of doubles for everything.
18:48:36 <oklopol> anyway, ehird: it doesn't make the code less complicated to have + dispatch on its arguments
18:48:44 <Deewiant> after that it's easy, sqrt(-x) where x > 0 = imaginary sqrt(x).
18:49:00 <oklopol> usually you'll just end up doing a type conversion, which the objects could just have done themselves
18:49:49 <oklopol> 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 <oklopol> not that anyone will, prolly
18:50:02 <vixey> sqrt(-x) = sqrt(-1)*sqrt(x)
18:50:13 <vixey> less horribly confusing way to put it :P
18:50:56 <AnMaster> Deewiant, so how would you write a befunge program that solves: 2x^2 + 4x + 1 = 0
18:51:30 <ehird> noo i was just saying to say something
18:51:42 <vixey> that's not a counter example
18:51:46 <oklopol> don't you know me at all...
18:51:51 <vixey> you can prove this from the difinition of sqrt
18:51:54 <vixey> that's not a counter example
18:52:19 <vixey> because sqrt(-1)*sqrt(-1) = -1
18:53:37 <oklopol> ehird: i'm trying to leave though, so say if you're gonna
18:54:15 <ehird> oklopol: I tried writing python in okostyle for my interp :P
18:54:31 <ehird> oklopol: your weird style
18:54:40 <Deewiant> vixey: enough of a counter example?
18:54:43 <vixey> Dewiant: what number times itself is 9?
18:54:54 <vixey> *that's not a counter example*
18:54:55 <ehird> short names, not much whitespace
18:54:58 <vixey> please try to listen to me
18:55:21 <oklopol> okay, now i'll really go! ->
18:55:23 <Deewiant> vixey: you said, sqrt(-x) = sqrt(-1) * sqrt(x). I'm trying to say, this only applies if x > 0.
18:55:48 <ehird> oklopol: but i was just about to put it in here
18:55:50 <vixey> you take sqrt as only the positive value
18:56:07 <vixey> I define sqrt(x) = x^1/2
18:56:28 <Deewiant> but that denotes the principal square root
18:56:36 <Deewiant> which is to say, the positive one.
18:57:01 -!- jix has quit (Nick collision from services.).
18:57:03 <ehird> oklopol: def _(x): return lambda o: getattr(o,x)()
18:57:06 <vixey> there are n, nth roots of unity as there are some constant
18:57:11 -!- jix has joined.
19:05:58 <oklopol> ehird: i'm insulted by the fact you assume i'm still here! you think i have no self-control?!?!?
19:06:39 <ehird> oklopol: of course not, you haven't seen my concatenative language yet
19:06:42 <ehird> the parser is cooooool
19:07:37 <ehird> and it was based on rewriting
19:07:41 <ehird> so i'm making it stakkk
19:13:08 <ehird> oklopol: i have a weird bug
19:14:12 <ehird> http://www.vjn.fi/pb/p461542621.txt the bug is in pa near the botto
19:15:08 <AnMaster> shows why tab completion didn't show it
19:15:22 <oklopol> ehird: that's the parseror?
19:15:29 <oklopol> s,i... i is current place, like?
19:15:39 <ehird> oklopol: yeah that[s the parser
19:15:47 <ehird> i is nesting depth
19:15:56 <ehird> return pa(s,i+1)+pa(s,i)
19:15:59 <ehird> return [pa(s,i+1)]+pa(s,i)
19:16:00 <ehird> that doesn't fix it
19:16:11 <ehird> (lists are quotations)
19:16:13 <ehird> oklopol: unmatched ]
19:16:33 <oklopol> or parse error in your code?
19:16:34 <ehird> oklopol: see the return []?
19:16:39 <ehird> oklopol: if you 'print s' before that
19:16:45 <ehird> but after pa(s,i+1) thing
19:16:48 <ehird> where we get returned to
19:16:52 <ehird> and that makes no sense
19:16:56 <ehird> since they share the list
19:17:20 <oklopol> you're getting a bit technical, are you assuming i've read the code? :)
19:18:06 <ehird> see how weird that is
19:18:08 <ehird> it works on the empty quotation.
19:18:11 <ehird> after the second example since it sees ] with i=0 it says unmatched ]
19:18:18 <ehird> the ] gets removed
19:18:21 <ehird> before we return []
19:18:23 <ehird> oklopol: plz read the code
19:18:35 <oklopol> if it's buggy, then i'm not sure i'll get it
19:19:24 <oklopol> so basically the recursion doesn't gulp a ] it should be gulping?
19:19:35 <ehird> but it works for []
19:20:52 <oklopol> i have no idea what anything should return.
19:20:56 <oklopol> i don't know what you're parsing
19:26:46 <ehird> oklopol: woot, almost ready
19:31:30 <ehird> oklopol: it's almost working flllaaawwwlessly
19:34:21 <ehird> oklopol: i've even got a REPL with history and tab completion
19:34:36 <ehird> 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 -!- Judofyr_ has joined.
19:39:37 <ehird> AnMaster: coding a simple concatenative lang
19:41:10 -!- Slereah has quit.
19:42:16 -!- oklopol has quit (Read error: 104 (Connection reset by peer)).
19:42:37 -!- oklopol has joined.
19:42:52 <ehird> [19:34] <ehird> 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 <oklopol> ehird: it's just an ugly while-loop thingie.
19:45:13 <ehird> oklopol: wannit :D
19:45:20 <ehird> so you can see my awesomest bottt
19:46:24 <oklopol> http://www.vjn.fi/s/sadf.py <<< verrrry ugly
19:50:37 <oklopol> 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 <ehird> oklofok: print pp(e(p(x)))[1:-1]
19:57:56 -!- CCB has joined.
19:57:56 -!- CCB has quit (Remote closed the connection).
19:58:02 <ehird> concatbot nick is taken
19:58:42 -!- concat has joined.
19:58:49 -!- concat has quit (Remote closed the connection).
19:59:51 -!- concatbot has joined.
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:45 -!- concatbot has quit (Remote closed the connection).
20:00:51 -!- concatbot has joined.
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: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:54 <ehird> yours splits on space
20:03:27 -!- concatbot has quit (Remote closed the connection).
20:03:29 <oklofok> well, it makes no sense, if that's what you're saying
20:03:33 -!- concatbot has joined.
20:03:45 -!- concatbot has quit (Remote closed the connection).
20:03:51 -!- concatbot has joined.
20:04:08 <oklofok> 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:36 -!- concatbot has quit (Remote closed the connection).
20:04:48 -!- concatbot has joined.
20:04:56 -!- concatbot has quit (Remote closed the connection).
20:05:00 -!- concatbot has joined.
20:05:25 -!- concatbot has quit (Remote closed the connection).
20:05:30 -!- concatbot has joined.
20:05:38 -!- concatbot has quit (Remote closed the connection).
20:05:42 -!- concatbot has joined.
20:05:58 -!- concatbot has quit (Remote closed the connection).
20:06:09 -!- concatbot has joined.
20:06:10 -!- concatbot has quit (Remote closed the connection).
20:07:06 -!- concatbot has joined.
20:07:41 <ehird> i maed last minute changes
20:08:55 -!- concatbot has quit (Remote closed the connection).
20:08:59 <ehird> removed debug output
20:09:01 -!- concatbot has joined.
20:09:07 <ehird> oklofok: time to concatenate!
20:09:13 <ehird> # "hello" "world" +
20:09:17 <ehird> i broke my own rule :D
20:10:51 -!- concatbot has quit (Remote closed the connection).
20:11:07 -!- concatbot has joined.
20:11:16 <ehird> oklofok: funny - + is composition
20:11:31 <ehird> # pop pop pop pop pop
20:11:50 -!- concatbot has quit (Remote closed the connection).
20:11:55 -!- concatbot has joined.
20:12:19 <ehird> oklofok: oh, and watch this
20:12:54 unexpected log event :(
20:13:03 -!- concatbot has quit (Remote closed the connection).
20:13:09 -!- concatbot has joined.
20:13:17 <ehird> # drop "lambda x: x" py
20:13:21 <ehird> # pop "lambda x: x" py
20:13:44 <ehird> # 2 "(lambda x: pop()(x))(pop())" py
20:13:48 <ehird> oklofok: cool, or not
20:15:40 <ehird> # [add1 1 +] define
20:15:40 -!- concatbot has quit (Remote closed the connection).
20:15:57 -!- concatbot has joined.
20:15:59 <Sgeo> Wait, what happened to that Pythonbot?
20:16:03 <ehird> # [add1 1 +] define
20:16:07 -!- concatbot has quit (Remote closed the connection).
20:16:15 <ehird> Totally hilarious.
20:17:03 -!- concatbot has joined.
20:17:04 <ehird> # [add1 1 +] define 1 add1
20:17:16 <ehird> # [[1 2] a] define
20:17:23 <ehird> oklofok: shall i make it its own channel?
20:18:09 -!- concatbot has quit (Remote closed the connection).
20:18:15 -!- concatbot has joined.
20:18:23 <ehird> 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: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:43:35 -!- oerjan has joined.
20:57:22 <ehird> oerjan: do you like concatenative languages
21:00:40 -!- p3k has joined.
21:01:17 <AnMaster> 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:34 <ehird> oerjan: there's one in here riiiiight now
21:05:43 -!- concatbot has quit (Remote closed the connection).
21:10:54 -!- UnrelatedToQaz has joined.
21:12:03 <UnrelatedToQaz> most random number generators I see have seeds to do with the date/time
21:12:17 <UnrelatedToQaz> and I was wondering if there were any that used other things
21:14:33 <oerjan> there is linux's /dev/[u]random, which is based on collecting "random" noise from parts of the memory, i think
21:16:51 <sekhmet> /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 <sekhmet> UnrelatedToQaz: http://www.google.com/search?hl=en&q=linux%20entropy%20random&btnG=Google+Search
21:18:18 <sekhmet> Should find plenty of information on entropy gathering there, can probably get non-Linux-specific advice as well
21:20:11 <UnrelatedToQaz> 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:06:19 <AnMaster> http://rage.kuonet.org/~anmaster/tmp/specs.pdf
22:06:26 <AnMaster> anyone want to implement that?
22:07:18 <oerjan> RodgerTheGreat: dragons. with light sabres. in a ufo.
22:07:50 <oerjan> (slightly calvin & hobbes inspired :)
22:08:49 <AnMaster> RodgerTheGreat, I just uploaded a new version
22:09:02 <AnMaster> 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 <AnMaster> RodgerTheGreat, the link works for me
22:09:28 <AnMaster> but I know there are some routing issues, so some may not be able to reach the data center
22:09:48 <AnMaster> I *could* publish it using gopher on my local system if anyone wants that
22:09:52 <oerjan> (mind you she _is_ the serious type)
22:10:26 <AnMaster> you mean "time out" or similar?
22:10:32 <RodgerTheGreat> I don't have a gopher client, and I imagine copying and pasting from telnet would be dreadfully inconvenient
22:10:46 <RodgerTheGreat> AnMaster: I don't get a connection at all. I suppose time out might be more appropriate
22:10:52 <AnMaster> RodgerTheGreat, ok basically it is the specs for a befunge program
22:11:06 <AnMaster> rather complicated to write in befunge
22:11:18 <AnMaster> because Deewiant said "I wouldn't" when I asked how he would do it in befunge
22:11:40 <RodgerTheGreat> hm. It *might* be beyond my level of expertise- I'm no befunge expert
22:12:06 <AnMaster> basically finding all possible, real and complex, values for x in: ax^2+bx+c=0
22:12:12 <AnMaster> where user can enter, a, b and c
22:12:32 <AnMaster> floating point by the FPDP fingerprint should be used
22:13:12 <AnMaster> RodgerTheGreat, sigh I wrote it up very nicely in LaTeX, hm maybe if I can upload it somewhere else
22:13:18 <AnMaster> RodgerTheGreat, you got firefox?
22:14:19 <AnMaster> $$[x=-\frac{\sqrt{{b}^{2}-4\,a\,c}+b}{2\,a},x=\frac{\sqrt{{b}^{2}-4\,a\,c}-b}{2\,a}]$$
22:14:38 <AnMaster> would be the two possible answers
22:14:59 <AnMaster> I love how maxima can generate TeX output
22:15:43 <RodgerTheGreat> 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 <AnMaster> RodgerTheGreat, there is a fingerprint for it (FPDP)
22:16:33 -!- p3k has quit.
22:16:41 <AnMaster> however I did this mostly because of <AnMaster> Deewiant, so how would you write a befunge program that solves: 2x^2 + 4x + 1 = 0 <Deewiant> AnMaster: I wouldn't. :-P
22:16:44 <RodgerTheGreat> http://en.wikipedia.org/wiki/Special:Search?search=FPDP&go=Go
22:17:20 <AnMaster> like a standard library kind of
22:17:40 <AnMaster> RodgerTheGreat, CCBI supports it and so does cfunge
22:17:44 -!- UnrelatedToQaz has quit (Read error: 110 (Connection timed out)).
22:17:50 <AnMaster> two conforming befunge interpreters
22:17:59 <AnMaster> RodgerTheGreat, well for cfunge, only development version got it yet
22:18:26 <AnMaster> 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 <AnMaster> RodgerTheGreat, http://omploader.org/vZnl2
22:28:06 <AnMaster> RodgerTheGreat, for the great layout thank LyX, a WYSIWYM (What You See Is What You Meant) GUI editor for LaTeX
22:28:18 <ehird> its more standards compliant than firefox
22:28:21 <ehird> and the rendering is better
22:29:17 <ehird> AnMaster: caught ya! Safari is based on KHTML, Konqueror's rendering engine
22:29:27 <ehird> And the KDE people are merging back in Apple's changes into KHTML
22:29:35 <ehird> so don't be insulting the safari!
22:30:06 <AnMaster> but I would want gopher support in it
22:30:48 <AnMaster> ehird, some stuff I still miss from firefox, some of the extensions for example
22:32:30 <ehird> AnMaster: how apple will see the gopher issue:
22:32:35 <ehird> 1. next to nobody uses gopher anymore
22:32:50 <ehird> 2. those that do probably use a CLI interface since gopher has little to offer graphically anyway
22:32:59 <AnMaster> 3. no it really doesndoes not have an i in it
22:33:02 <ehird> 3. ergo, supporting gopher in safari is pointless
22:33:16 <ehird> AnMaster: HA HA FUNNY JOEK! apple sux0r coz dey have WUN BUTAN
22:33:20 <ehird> no right klik!!! ahahaha
22:33:31 <AnMaster> ehird, they do have right click nowdays
22:33:51 <ehird> AnMaster: Suprise! You could PLUG IN another MOUSE
22:33:56 <ehird> I know, it's really goddamn mind-blowing.
22:33:59 <ehird> Obviously, Apple suck.
22:34:31 <AnMaster> they even got the right click menus YEARS before their own mice had more than one button
22:34:48 <AnMaster> Mac OS 8 may have had, not sure
22:34:58 <RodgerTheGreat> 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 <AnMaster> RodgerTheGreat, um? way more efficient
22:35:27 <AnMaster> I mostly work with keyboard anyway
22:35:57 <AnMaster> RodgerTheGreat, and I didn't say it was bad
22:36:18 <RodgerTheGreat> and ehird was being ironic, anyway- I wasn't implying this was a flamewar
22:36:21 <lament> apple sells a whole bunch of single button mice. They come with every computer.
22:36:42 <AnMaster> lament, indeed the laptops still have a single button for example
22:36:44 <lament> Also, all laptops have a single-button trackpad
22:36:56 <RodgerTheGreat> lament: the mighty mouse is what comes standard with macs, and it has 4 buttons
22:37:10 -!- wildhalcyon has joined.
22:37:18 <AnMaster> RodgerTheGreat, that doesn't address the laptop issue still
22:37:27 <oerjan> the mouse that roared?
22:37:31 <lament> i didn't know it was standard now
22:37:37 <lament> must be a very new thing
22:37:37 <RodgerTheGreat> AnMaster: every mac laptop in YEARS recognizes multitouch
22:37:54 <AnMaster> RodgerTheGreat, hm but one button below the pad
22:38:10 <AnMaster> and I hate using the tap interface
22:38:19 <RodgerTheGreat> the only thing that button's even really for is dragging things
22:38:44 <AnMaster> so I either use a button or I use an external mouse
22:38:55 <AnMaster> even though my laptop got the multitouch stuff
22:38:57 <RodgerTheGreat> then it's more a matter of "I don't like how that functionality works" than "macs don't have this feature"
22:39:17 <AnMaster> (as in x86_64 NOT made by apple)
22:39:36 <AnMaster> RodgerTheGreat, I used it, and it works horribly for me
22:39:46 <AnMaster> I prefer a split button below the touchpad
22:40:15 <AnMaster> RodgerTheGreat, so what was your point? locking out some customers?
22:40:21 <AnMaster> I'm not sure I got the point really
22:42:50 <ehird> lament: mighty mouse = 2005
22:44:53 <AnMaster> ehird, so what do you think of the laptop problem they got?
22:45:13 <AnMaster> seems like you fanboys are ignoring when I point out the flaw :P
22:50:52 <lament> ehird: yes, but it coming standard must be new
22:51:09 <lament> (unless i'm on crack. which is possible)
22:51:35 -!- calamari has joined.
22:53:22 <lament> equalUpToTransposition a b = (a ==) `any` shiftedVersions b where shiftedVersions b = [Set.map (transpose n) b | n <- [0..11]]
22:54:28 <lament> even though the part after 'where' is kind of ugly
22:57:10 <oerjan> (a ==) `any` == a `elem`
22:57:38 <oerjan> also, that cannot be the usual transpose from Data.List...
22:58:17 <lament> and good point about `elem`, i'm an idiot
22:58:55 <lament> equalUpToTransposition a b = a `elem` [Set.map (transpose n) b | n <- [0..11]]
22:59:27 <lament> transpose is transposition of chords
23:01:29 <ehird> [22:50] <lament> ehird: yes, but it coming standard must be new
23:01:45 <ehird> AnMaster: the gesture you can use on the laptop is fine
23:01:50 <ehird> see: RodgerTheGreat
23:01:55 <ehird> [22:37] <RodgerTheGreat> AnMaster: every mac laptop in YEARS recognizes multitouch
23:01:55 <ehird> [22:37] <RodgerTheGreat> tap with two fingers == right click
23:02:02 <AnMaster> <AnMaster> RodgerTheGreat, I used it, and it works horribly for me
23:02:13 <AnMaster> I even used it on a actual mac
23:02:13 <ehird> [22:37] <AnMaster> RodgerTheGreat, hm but one button below the pad
23:02:13 <ehird> [22:38] <AnMaster> and I hate using the tap interface
23:02:13 <ehird> [22:38] <AnMaster> on laptops
23:02:21 <ehird> AnMaster: your point is 'i don't like how macs do it'
23:02:29 <ehird> not 'mac laptops sux coz they got 1 butan'
23:03:11 <AnMaster> that they lock out potential customers
23:03:43 <ehird> AnMaster: they lock out YOU
23:03:45 <ehird> everyone else is fine with it
23:03:57 <AnMaster> I got some friends who agree with me
23:04:49 <AnMaster> other than that I would love apple hardware (I would not run OS X on it of course
23:05:19 <ehird> apple's hardware isn't all that special, anyway
23:05:27 <ehird> OS X is that part that's worth the money
23:05:36 <AnMaster> ehird, because linux works well on it
23:05:53 <AnMaster> I don't want a GUI most of the time
23:06:05 <AnMaster> atm for example. X isn't running
23:06:53 <oklofok> what's not accessible to AnMaster? tapping on two fingers at once?
23:07:22 <AnMaster> I just end up tapping when I try to just move the pointer and so on
23:07:27 <ehird> AnMaster: you don't have to run quartz
23:07:41 <ehird> a good solution is fullscreening a terminal app, though
23:07:49 <ehird> [23:05] <AnMaster> and no way I will run os x
23:07:49 <oklofok> i used to do everything except right-clicking on the pad
23:07:54 <ehird> you don't provide any justification
23:07:58 <oklofok> actually, i did that too on it
23:08:10 <ehird> AnMaster: only one. and i rebutted it
23:08:15 <oklofok> but i haven't set up the new mouse for stuff like dragging
23:08:15 <AnMaster> ehird, I can't stand the OS in question, GUI and just eye candy
23:08:34 <AnMaster> ehird, I want ion or ratpoison as window manager on my system
23:08:39 <AnMaster> I use that on my current laptop
23:08:58 <ehird> 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:20 <ehird> i repeat my previous statement
23:09:26 <AnMaster> ehird, I have used it quite a bit
23:09:49 <AnMaster> ehird, the system was 10.4 Tiger
23:09:55 * oerjan turned off everything tapping except plain left button selection on his pad. or something like that.
23:10:15 <ehird> AnMaster: i repeat my previous statement
23:10:16 <AnMaster> oerjan, indeed, that would fail totally on a mac laptop
23:10:17 <ehird> oklofok: hey you're BACK!!!!
23:10:22 <AnMaster> because, you couldn't right click
23:10:31 <ehird> oklofok: NOW #ESOTERIC IS NO LONGER BORIIGIIGIGIGNNGNNGG
23:10:38 <ehird> this one: [23:09] <ehird> your words are well picked: like those of someone who has only used OS X in passing
23:10:41 <oklofok> i had right-click when clicking the right upper corner
23:10:46 <AnMaster> ehird, I have used OS X quite a bit
23:10:58 <oklofok> you could easily have like 10 buttons that way
23:11:05 <oerjan> 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 <oklofok> unless we're not talking about pads, we should be talking about them
23:11:33 <ehird> AnMaster: and i repeat it once again
23:11:40 <oklofok> (i did read the logs, but i can easily read a whole conversation without actually understanding the topic)
23:12:08 <AnMaster> ehird, what? insisting that I haven't used OS X?
23:12:15 <AnMaster> ehird, or what one did you repeat?
23:12:39 <AnMaster> you are unable to accept differences in taste, and more important, so is Apple
23:13:05 <oerjan> ehird: you are showing too much enthusiasm. please lower your spirit or you will be banned.
23:13:19 <AnMaster> ehird, you are just restating your incorrect statement
23:14:09 <oerjan> i don't think that is even finnish
23:14:14 <AnMaster> ehird, basically it seems you are unable to accept non-mainstream (read: non-ehird, is what you think) opinions
23:14:31 <AnMaster> oklofok, it is not Swedish at least
23:14:43 <oklofok> oerjan: we don't have many non-borrowed ones with r ending
23:15:03 <oklofok> it's not swedish or english either, no
23:15:16 <oklofok> i'm fairly sure it's not anything
23:15:38 <oklofok> why should everything have a meaning
23:15:58 <oerjan> it's in the Armagan language
23:16:52 <oerjan> it means well-known, or closely related
23:17:26 <ehird> [23:13] <oerjan> ehird: you are showing too much enthusiasm. please lower your spirit or you will be banned.
23:17:30 <ehird> funniest thing of the day :D
23:17:59 <ehird> [23:14] <AnMaster> 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:12 <oklofok> oerjan: isn't that the gnilshe language?
23:18:20 <ehird> oerjan: i retract my previous statement. FUNNIEST THING OF THE DAY :D
23:18:44 <oerjan> oklofok: well it's sometimes called that as well.
23:20:11 <oklofok> mi' ont entful ni nel-higs, hoguth
23:21:27 <oerjan> mi' sa entful sa lli' erve eb, ldi' nkith
23:22:59 <oerjan> lli' entfrelquy nkith ni nelhigs
23:24:15 <oklofok> pulirgsynsir derlaabe, wtb
23:24:26 <oklofok> DDDDDDDDDDDDDDDDDddDDDDDDDDD:DDDDDDDDDddd
23:25:39 * oerjan is having problems with that first word. sti' ont tequi derlaabe.
23:25:50 -!- otobot has joined.
23:33:07 -!- oerjan has quit ("Ogdo ngith").
23:52:07 -!- olsner has quit ("Leaving").