←2008-04-08 2008-04-09 2008-04-10→ ↑2008 ↑all
00:06:05 -!- Corun has quit (Connection timed out).
00:16:45 -!- jix has quit ("CommandQ").
00:45:50 <ehird> wow
00:46:00 <ehird> i reinvent monadic parser combinators on a regular basis
00:51:08 <lament> and get kicked out of #python
00:51:10 <lament> :P
01:06:25 -!- Sgeo has joined.
01:13:06 -!- Tritonio_ has joined.
01:14:21 -!- ehird has quit ("This computer has gone to sleep").
05:27:24 <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:30:26 <calamari> do you know RTL?
05:30:48 <pikhq> Nope.
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.
08:36:32 <AnMaster> hah
09:18:53 -!- GreaseMonkey has joined.
09:21:27 -!- Corun has joined.
09:23:29 -!- cmeme has quit (Read error: 104 (Connection reset by peer)).
09:27:19 -!- cmeme has joined.
09:48:02 -!- immibis has joined.
10:02:27 -!- immibis has quit ("Hi Im a qit msg virus. Pls rplce ur old qit msg wit tis 1 & hlp me tk ovr th wrld of IRC. and dlte ur files. and email ths to).
10:05:27 -!- Corun has quit ("This computer has gone to sleep").
10:06:05 -!- Corun has joined.
10:39:03 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)).
10:40:11 -!- Judofyr has joined.
10:42:53 -!- GreaseMonkey has quit ("gnight").
10:59:30 <AnMaster> Deewiant, to tell the truth your O in CPLI looks completely messed up
11:03:34 <AnMaster> ah now I see how it works
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:17 <Deewiant> :-P
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:51:58 <Deewiant> of course not
11:52:03 <Deewiant> they'd push infinity or NaN
11:52:23 <AnMaster> there is nothing for complex floating point is there?
11:52:28 <AnMaster> no fingerprint I mean
11:52:38 <Deewiant> nope
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:53:31 <Deewiant> apart from the sqrt operation
11:53:34 <AnMaster> well yes
11:53:42 <AnMaster> but FIXP provides that iirc
11:54:17 <Deewiant> yep
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:10 <AnMaster> hm yeah it probably is
11:55:23 <AnMaster> except for some stuff
11:55:32 <AnMaster> possibly
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:10 <AnMaster> as in re^(iv)
11:57:29 <Deewiant> well sure, translations between polar and cartesian form
11:57:47 <Deewiant> but they'd be pretty easy too
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
11:59:53 <AnMaster> hm
11:59:57 <AnMaster> true
12:12:33 -!- Corun has quit ("This computer has gone to sleep").
12:17:29 <AnMaster> Deewiant, what about cosh?
12:19:20 <Deewiant> (exp(x) + exp(-x)) / 2
12:19:51 <AnMaster> ok, was just looking at man complex.h for anything that would be hard to do
12:19:58 <Deewiant> :-P
12:20:07 <AnMaster> double complex cproj(double complex);
12:20:11 * AnMaster wonders what that is
12:20:22 <AnMaster> cproj, cprojf, cprojl - project into Riemann Sphere
12:20:24 <AnMaster> huh?
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:38 <AnMaster> ie, went over my head
12:22:56 <Deewiant> it's identity unless you have a complex infinity, which becomes +infinity
12:23:09 <AnMaster> ah
12:23:12 <AnMaster> right then I get it
12:23:27 -!- ihope has joined.
12:34:59 <AnMaster> Deewiant, what is the IP.DORMANT mode thing?
12:35:30 <Deewiant> ?
12:35:46 <AnMaster> what exactly does it do
12:35:46 <Deewiant> sounds like TRDS or that other one (IIPC?)
12:35:49 <AnMaster> IIPC
12:35:50 <Deewiant> where is it?
12:36:01 <AnMaster> IIPC, line 34
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:24 <Deewiant> or in the spec :-P
12:36:35 <AnMaster> D ( -- ) Go Dormant until stack is manipulated by another ip
12:36:36 <AnMaster> heah
12:36:37 <AnMaster> yeah*
12:36:45 <AnMaster> still doesn't say what dormant means
12:37:22 <AnMaster> Deewiant, what main function?+
12:37:26 <AnMaster> s/+//
12:37:30 <Deewiant> the main function
12:37:38 <Deewiant> int main(char[][] args) and all that
12:37:39 <Deewiant> :-P
12:37:43 <AnMaster> and what file is it in?
12:37:54 <Deewiant> ccbi.d, where else
12:38:00 <AnMaster> mhm ok
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:38:46 <AnMaster> dormant == delta set to 0?
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:39:51 <Deewiant> :-P
12:40:05 <AnMaster> state in this case means position?
12:40:19 <Deewiant> no, it means the state
12:40:22 <Deewiant> whatever there is
12:40:26 <Deewiant> something for TRDS
12:40:27 <Deewiant> one for @
12:40:28 <AnMaster> aha
12:40:30 <Deewiant> one for q IIRC
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:41:55 <Deewiant> in ip.d probably
12:42:03 * AnMaster looks again
12:42:09 <Deewiant> grep State...
12:42:26 <AnMaster> err mode
12:42:30 <AnMaster> not state
12:42:40 <Deewiant> ah, mode
12:42:48 <Deewiant> that's in ip.d
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:38 <AnMaster> is that really right?
12:43:51 <Deewiant> what would be wrong?
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:44:50 <Deewiant> it's his spec
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:23 <AnMaster> some comment says that iirc
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:45:48 <AnMaster> hm
12:46:09 <Deewiant> and if the spec contradicts the funge-98 spec then it's all crap, like FING :-P
12:46:20 <AnMaster> FNGR not FING iirc
12:46:25 <Deewiant> whatever
12:47:09 <AnMaster> and well "3DSP" whatever it is, defines C as the Cross porduct
12:47:13 <AnMaster> in his specs
12:47:17 <AnMaster> porduct?
12:47:21 <AnMaster> poorduct?
12:47:25 <AnMaster> ;P
12:47:55 <AnMaster> oh I see you don't implement 3DSP
12:50:06 <AnMaster> Deewiant, ?
12:50:58 <Deewiant> nah
12:51:30 <AnMaster> how comes?
12:52:01 <Deewiant> can't remember
12:56:06 <AnMaster> tc x, y;
12:56:06 <AnMaster> static assert (is(typeof(x) == typeof(y)));
12:56:08 <AnMaster> hum
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:04 <Deewiant> unless I do int x; short y;
13:03:45 <AnMaster> mhm
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:04:31 <Deewiant> beats me
13:04:51 <AnMaster> TURT looks quite complex hm
13:06:00 <AnMaster> in HRTI, is the ctor thing executed when HRTI is first loaded?
13:06:04 <AnMaster> or when program starts?
13:06:11 <Deewiant> when loaded
13:06:14 <AnMaster> ah ok
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:30 <AnMaster> ah right you check for that
13:13:32 <AnMaster> if (resolution == TimeSpan.zero) {
13:15:37 <AnMaster> Deewiant, this is confusing: auto timeMark = Time.min;
13:15:42 <AnMaster> what type is it really
13:15:56 <AnMaster> a timestamp?
13:16:11 <AnMaster> of what kind then
13:16:14 <Deewiant> I don't know
13:16:17 <Deewiant> it's up to the library
13:16:21 <AnMaster> mhm
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:49 <Deewiant> probably Time
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:18:17 <AnMaster> say ntp or similar
13:18:48 <Deewiant> it uses UTC time, no?
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:31 <AnMaster> by ntp or similiar software
13:19:33 <Deewiant> can't be helped
13:19:36 <Deewiant> how could that be handled?
13:19:38 <AnMaster> hmmmm
13:19:52 <Deewiant> exactly ;-)
13:19:52 <AnMaster> oh and I'm not sure it handles leap seconds btw
13:20:01 <AnMaster> Deewiant, there *may* be ways
13:20:09 <AnMaster> not portable though I think
13:20:13 <AnMaster> sigh
13:20:15 <Deewiant> how would leap seconds be problematic
13:20:28 <Deewiant> the time span should be the same
13:20:37 <AnMaster> hm it would?
13:20:47 <Deewiant> why not?
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:41 <AnMaster> but I'm not sure
13:21:53 <AnMaster> Deewiant, anyway mycology fails at leap seconds I suspect?
13:22:00 <Deewiant> how?
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:22:24 * AnMaster points to bug he found
13:22:29 <Deewiant> that was a bug
13:22:34 <Deewiant> overlapping code
13:22:35 <Deewiant> or something
13:22:37 <AnMaster> ah
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:27 <Deewiant> or if it doesn't, it's a bug
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:26:03 <AnMaster> the standard doesn't say
13:27:00 <Deewiant> split?
13:27:09 <Deewiant> t, you mean?
13:27:13 <AnMaster> yeah
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:28:49 <AnMaster> well REFC probably should...
13:28:56 <Deewiant> I don't think you should
13:29:00 <AnMaster> hm
13:29:08 <Deewiant> in fact, clearing that at unload might be a good idea
13:29:17 <AnMaster> indeed
13:29:36 <Deewiant> although hmm
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:32:59 <AnMaster> how does that work
13:33:11 <AnMaster> ie, I don't get how it can work
13:33:47 <Deewiant> why not
13:34:04 <AnMaster> err?
13:34:10 <Deewiant> what don't you get?
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:34:58 <Deewiant> no?
13:35:14 <AnMaster> huh then
13:35:24 <Deewiant> what's wrong?
13:35:34 <AnMaster> why the loop then.?
13:35:49 <Deewiant> because we want nonzero?
13:35:58 <AnMaster> hmmm
13:36:09 <AnMaster> Deewiant, what result does that give for you?
13:36:18 <Deewiant> varies run by run
13:36:26 <AnMaster> average?
13:36:29 <Deewiant> can't remember
13:36:32 <Deewiant> check the myco results table
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:38:41 <AnMaster> ah found it
13:38:45 <AnMaster> grep ++
13:39:08 <AnMaster> Deewiant, it says "UNDEF: G gives clock granularity as 2 microseconds" every time here
13:39:23 <Deewiant> great
13:39:30 <AnMaster> hm now it said 1 once
13:40:13 <AnMaster> Deewiant, "UNDEF: G gives clock granularity as 31250 microseconds" from your table heh
13:40:22 <AnMaster> what kind of system was that
13:40:22 <Deewiant> yep
13:40:27 <Deewiant> my windows system
13:40:36 <AnMaster> hm is it better on linux for you
13:40:40 <Deewiant> haven't tried
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:41:32 <Deewiant> I would guess that too
13:41:36 <Deewiant> I'll try it later today
13:41:40 <AnMaster> thanks
13:47:07 <AnMaster> oneSecond = TimeSpan.seconds(1).ticks,
13:47:08 <AnMaster> oneMicro = TimeSpan.micros (1).ticks;
13:47:21 <AnMaster> Deewiant, I don't get logic?
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:50:06 <AnMaster> yeah it is a pitty
13:52:37 <AnMaster> CLOCK_MONOTONIC
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:53:47 <AnMaster> ok
13:53:51 <AnMaster> nice :)
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:30 <AnMaster> actually I don't need that
13:58:45 <AnMaster> gettimeofday does micro seconds
13:58:55 <AnMaster> Deewiant, does the school computer have HPET?
13:59:13 <AnMaster> grep hpet /proc/timer_list
13:59:13 <Deewiant> I have no way of knowing?
13:59:14 <AnMaster> iirc
13:59:26 <Deewiant> no such thing as /proc/timer_list
13:59:32 <AnMaster> kernel version?
13:59:38 <Deewiant> said above
13:59:43 <AnMaster> ah
13:59:44 <AnMaster> right
13:59:47 * AnMaster runs .24
13:59:57 <AnMaster> anything else /proc/timer*
13:59:57 <AnMaster> ?
14:00:09 <Deewiant> nope, did /proc/tim<tab> and nothing
14:00:16 <AnMaster> ok
14:00:42 <AnMaster> dmesg | grep -i hpet
14:00:55 <Deewiant> nothing
14:01:01 <AnMaster> ah no hpet then
14:01:09 <AnMaster> guess it is just linux being so much better ;)
14:01:11 <Deewiant> here's something though
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:27 <Deewiant> isn't that something special?
14:01:32 <AnMaster> tsc is time stamp counter iirc
14:01:39 <AnMaster> something related to the cpu
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:01:55 <AnMaster> iirc
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:02:13 <Deewiant> aye.
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:03:47 <AnMaster> I think
14:03:48 <Deewiant> perfectly possible
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:08 <AnMaster> think of speedstep and such
14:05:18 <Deewiant> I know I know
14:05:23 <Deewiant> TSC isn't viable on multicore either
14:05:28 <AnMaster> indeed
14:06:22 <fizzie> dmesg says: Clocksource tsc unstable (delta = -124059314 ns)
14:06:31 <AnMaster> very possible
14:06:33 <Deewiant> something similar for me
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:06:50 <AnMaster> here
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:10:15 <Deewiant> and gettimeofday on posix
14:10:37 <AnMaster> windows lacks gettimeofday?
14:11:16 <AnMaster> #define __SLONGWORD_TYPE long int
14:11:17 <AnMaster> typedef __SUSECONDS_T_TYPE __suseconds_t;
14:11:24 <Deewiant> of course it does
14:11:24 <AnMaster> those two lines in different headers
14:11:25 <Deewiant> it's posix
14:11:30 <Deewiant> it's in sys/time.h right?
14:11:44 <AnMaster> it is
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:10 <AnMaster> eh?
14:12:17 <AnMaster> ah I see
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:13:13 <Deewiant> or in cygwin
14:13:26 <AnMaster> yep
14:13:30 <AnMaster> cygwin would have it
14:23:42 <AnMaster> hm this fingerprint generation script is getting quite advanced
14:23:46 <AnMaster> http://rafb.net/p/XCA7fB82.html
14:23:47 <AnMaster> :)
14:24:15 <Deewiant> :-P
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:40:42 <AnMaster> or am I wrong
14:40:48 <RodgerTheGreat> howdy, folks
14:40:49 <Deewiant> one zero more
14:40:56 <AnMaster> a milion hm
14:41:12 <vixey> hi
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:00:08 <AnMaster> in funge-space that is
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:06:44 <RodgerTheGreat> hm
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:09:50 <AnMaster> Deewiant, hmm?
15:10:09 <AnMaster> what is that supposed to test?
15:10:31 <Deewiant> that T works
15:11:22 <AnMaster> UNDEF: S pushed 647201
15:11:22 <AnMaster> hm
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:18 <Deewiant> S?
15:12:29 <Deewiant> or T?
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:12:52 <AnMaster> UNDEF: S pushed 2943
15:12:53 <AnMaster> :)
15:12:57 <AnMaster> with optimized build
15:13:03 <AnMaster> oh wait
15:13:06 <AnMaster> Deewiant, hm
15:13:14 <Deewiant> S doesn't matter
15:13:17 <AnMaster> right
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:45 <AnMaster> from ccbi
15:13:50 <AnMaster> Deewiant, that seems extreme
15:13:56 -!- Corun has joined.
15:14:04 <Deewiant> how?
15:14:13 <AnMaster> such a HUGE difference
15:14:31 <AnMaster> 95725 is the best of ccbi so far
15:14:40 <Deewiant> shrug
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:11 <AnMaster> that is ccbi one?
15:18:12 <Deewiant> it helps that DMD doesn't inline functions containing loops :-P
15:18:18 <Deewiant> yep
15:18:20 <Deewiant> and on windows
15:18:21 <AnMaster> containing loops!?
15:18:23 <AnMaster> errr
15:18:28 <AnMaster> that makes no sense
15:18:33 <AnMaster> recursive sure it can't inline
15:18:42 <Deewiant> I didn't say it can't
15:18:44 <Deewiant> I said it doesn't :-P
15:18:46 <AnMaster> but ones containing loops should be perfectly possible to inline
15:18:53 <Deewiant> of course they are
15:18:55 <Deewiant> it just doesn'
15:18:56 <Deewiant> t
15:18:56 <AnMaster> why is it?
15:19:01 <Deewiant> I don't know
15:19:46 <Deewiant> which also means that all foreaches are actually function calls
15:19:58 <Deewiant> (on each iteration)
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:21:57 <Deewiant> 324424 here :-P
15:22:18 <AnMaster> hm will check shortly
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:14 <AnMaster> Deewiant, ^
15:27:28 <Deewiant> entries?
15:27:34 <AnMaster> entries is a pointer
15:27:37 <Deewiant> ah
15:27:40 <AnMaster> to the actual array of items
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:05 <Deewiant> hmm, odd size
15:28:09 <Deewiant> how do you grow your stack?
15:28:20 <AnMaster> Deewiant, in chunks of 16 or 32 or such iirc
15:28:27 <AnMaster> #define ALLOCCHUNKSIZE 32
15:28:29 <AnMaster> yeah 32
15:28:33 <Deewiant> right
15:29:27 <AnMaster> Deewiant, so considering differing environment variables and such it seems like the size is reasonable
15:29:44 <Deewiant> yep
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:31:27 <AnMaster> Deewiant, hah
15:31:40 <Deewiant> I certainly don't
15:31:51 <AnMaster> a lot easier
15:32:06 <Deewiant> what's so hard about "../cfunge"? :-P
15:32:11 <Deewiant> (for instance)
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:32:40 <Deewiant> eh?
15:32:50 <AnMaster> -S is the sandbox mode
15:33:05 <AnMaster> it also only show a whitelist of env variable
15:33:21 <Deewiant> so what's 'white'
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:38:04 <RodgerTheGreat> vixey: lol
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:51 <Deewiant> meh >_<
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:39:58 <AnMaster> hm
15:40:01 * AnMaster looks
15:40:58 -!- Corun has quit ("This computer has gone to sleep").
15:41:25 <AnMaster> oh threading
15:48:55 -!- oklopol has joined.
15:51:47 <AnMaster> <Deewiant> eh? it's no slower than pushing anything else
15:51:52 <AnMaster> well you could speed it up
15:52:31 <ehird> AnMaster: he could but i don't think he cares much about how fast ccbi is
15:52:45 <AnMaster> no I mean in theory
15:52:52 * vixey anticipates
15:52:54 <AnMaster> not you as in a specific person
15:53:38 <AnMaster> vixey, huh?
15:54:02 <vixey> I want oklotalk :p
15:54:11 <AnMaster> ah
15:58:05 <ehird> oklotalk is cool, yes
15:58:05 <ehird> :D
15:58:11 <ehird> and, oklopol, it must be ready TODAY
15:58:18 <ehird> HA HA HA
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:09 <vixey> :(
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:27 <ehird> where is it
15:59:29 <ehird> i lost the link
15:59:33 <ehird> you can /msg it
15:59:36 <ehird> (different machine y'see)
15:59:39 <oklopol> ehird: that was very beta
15:59:59 <oklopol> didn't have a parser
16:00:08 <ehird> oklopol: yeah, c'mon
16:00:08 <oklopol> and scoping didn't work
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:00:29 <oklopol> :P
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:48 <ehird> being a maccie
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:02:21 <oklopol> :-)
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:12 <oklopol> why not?
16:04:17 <oklopol> heh
16:04:21 <ehird> i am not fluent in python bytecode
16:04:22 <ehird> unfortunately
16:04:23 <ehird> (yet)
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:51 <AnMaster> I see..
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:03 <ehird> iirc.
16:06:05 <AnMaster> hm
16:06:09 <AnMaster> looks different to me?
16:06:17 <AnMaster> than it was a few days ago
16:06:22 <vixey> hey Ifound something neat
16:06:26 <vixey> a bit of code
16:06:32 <AnMaster> not algol please
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:01 <AnMaster> hm ok
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:17 <oklopol> but perhaps, perhaps
16:07:19 <AnMaster> what? open source rocks!
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:07:44 <vixey> in like 5 lines
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:08:35 <AnMaster> ehird, err why?
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:30 <vixey> no ehird
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:10 <ehird> /sigh
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:11:40 <AnMaster> what key combo
16:11:42 <vixey> lol
16:11:44 <vixey> lol
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:46 <AnMaster> or ?
16:12:54 <ehird> AnMaster: depends on your OS.
16:12:56 <ehird> go look it up.
16:12:58 <AnMaster> Linux
16:13:02 <ehird> go look it up.
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:04 <ehird> i use OS X
16:13:05 <AnMaster> hm
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:52 <ehird> not interested
16:14:54 <vixey> I know more than you about it..
16:14:57 <ehird> haha
16:15:05 <ehird> anyhoo, oklopol ... let's talk oklotalk!
16:15:11 <oklopol> :P
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:15:53 <ehird> whoopsie
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:52 <ehird> anyway
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:49 <oklopol> :P
16:17:50 <ehird> oh, bye vixie
16:17:51 <ehird> *vixey
16:17:54 <ehird> nice knowing you
16:17:55 <oklopol> i wasn't calling him clueless
16:17:55 <ehird> yes
16:17:57 <ehird> bot!
16:18:07 <ehird> oklopol: if he wants to leave over that, let him
16:18:11 <oklopol> i guess
16:18:53 <oklopol> mwahaha ":: " prefix :PPPPPP
16:19:22 <oklopol> why do i make my prefixes have the space
16:19:26 <oklopol> i don'get it
16:19:27 <ehird> oklopol: i have a better prefix
16:19:27 <oklopol> *don
16:19:30 <oklopol> 't
16:19:30 <ehird> \
16:19:32 <ehird> \2+2
16:19:34 <ehird> no, wit
16:19:37 <ehird> K uses two spaces
16:19:39 <ehird> make your prefix two spaces
16:19:41 <ehird> 2+2
16:19:56 <oklopol> /whois me and think again
16:20:07 <ehird> what do you mean
16:20:08 <AnMaster> eh?
16:20:13 <ehird> :: 2
16:20:15 <ehird> nope
16:20:16 <oklopol> i have no idea how to disable *REMOVING SPACES OFF THE BEGINNING OF A MESSAGE*
16:20:23 <ehird> oh
16:20:24 <oklopol> automatically.
16:20:25 <ehird> um
16:20:27 <ehird> not hard, i guess
16:20:28 <ehird> try
16:20:31 <oklopol> from incoming and outgoing messages
16:20:31 <ehird> '/ a'
16:20:35 <AnMaster> oklopol, my client doesn't remove them
16:20:35 <ehird> maybe
16:20:39 <ehird> oklopol: actually
16:20:39 <AnMaster> like this
16:20:39 <ehird> wait
16:20:40 <oklopol> AnMaster: what client?
16:20:42 <ehird> say something with two spaces
16:20:44 <ehird> i bet it appears fine
16:20:48 <ehird> just doesn't show
16:20:49 <ehird> on your end
16:20:53 <oklopol> f
16:20:57 <AnMaster> oklopol, I know irssi, xchat and erc keep spaces
16:20:57 <oklopol> worked?
16:21:01 <ehird> oklopol: nope
16:21:04 <ehird> ok, try xchat
16:21:05 <oklopol> heh
16:21:07 <ehird> or.. irssi
16:21:08 <ehird> or something
16:21:11 <ehird> but two spaces is such a good prefix
16:21:12 <AnMaster> ehird, erc
16:21:13 <ehird> to pass up
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 <oklopol> f f
16:21:23 <ehird> he doesn't have any reason to, afaik
16:21:24 <AnMaster> ah ok true
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:17 <AnMaster> oklopol, and why mirc :(
16:22:23 <AnMaster> really, there are no worse client
16:22:34 <AnMaster> is*
16:22:44 <ehird> AnMaster: you are interrogating oklopol for using an irc client
16:22:45 <ehird> just sayin'
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:25 <oklopol> :D
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:37 <ehird> i mean seriously
16:23:38 <ehird> it's hilarious
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:51 <ehird> less typing!
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:25 <ehird> wait
16:24:29 <ehird> i thought you were making oklotalk
16:24:33 <ehird> just oklotalk--?! :(
16:24:39 <oklopol> currently.
16:24:44 <oklopol> different parsing.
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:32 <ehird> ah
16:25:33 <ehird> well
16:25:35 <ehird> just use :: then
16:25:37 <ehird> i just wanna try it
16:25:38 <ehird> :D
16:25:41 <oklopol> hehe
16:25:47 <oklopol> okay, i'll put it up
16:26:00 <oklopol> should store state and everything, automatically
16:26:05 <ehird> cool
16:27:42 <ehird> oklopol: you're slow
16:27:43 <ehird> ;)
16:27:53 <oklopol> indeed
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:31 <ehird> cooool
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:43 <ehird> i'ma go ask!
16:28:46 <oklopol> hehe
16:28:54 <ehird> aha, he is in #AutisticParadise
16:28:58 <ehird> poor guy :D
16:28:59 <ehird> oh well
16:29:02 <ehird> still gonna report him!
16:29:06 <ehird> 'cause i'm an ass, you see
16:29:44 <oklopol> poor vixey.
16:29:47 <ehird> yeah
16:29:48 <ehird> poor vixey
16:29:55 <oklopol> harrassed the wrong guy
16:30:09 <ehird> totally
16:32:56 -!- otobot has joined.
16:32:56 -!- otobot has quit (Remote closed the connection).
16:32:59 <oklopol> :D
16:33:03 <oklopol> wtf
16:33:05 <ehird> brillant
16:34:11 -!- vixey has joined.
16:34:22 <ehird> oh amusing
16:34:25 <oklopol> rehi
16:34:27 -!- otobot has joined.
16:34:29 <ehird> :: 2+3
16:34:30 -!- otobot has quit (Remote closed the connection).
16:34:30 <vixey> hi
16:34:33 <oklopol> ... :D
16:34:34 <ehird> haha, i broke otobot :D
16:34:48 <oklopol> ehird: think lisp in syntax.
16:34:59 <oklopol> but i'll fix crashing now
16:35:03 <ehird> oklopol: think 'don't make it break on invalid code' :p
16:35:05 <ehird> very simple fix
16:35:06 <ehird> just do:
16:35:10 <oklopol> yeah, yeah
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:17 <ehird> or something
16:35:30 <oklopol> i'm doing raw sockets, naturally ;)
16:35:35 <ehird> haha, yeah
16:35:35 <ehird> :D
16:36:36 <ehird> come onnnn :P
16:36:48 <oklopol> sssry, irc has so much going on
16:36:50 -!- otobot has joined.
16:36:54 <AnMaster> :: ööö
16:36:54 <ehird> :: (+ 2 3)
16:36:54 <oklopol> : (+ 4 5)
16:36:58 <AnMaster> : ööö
16:36:58 <ehird> : (+ 2 3)
16:37:01 <oklopol> darn
16:37:02 <ehird> lulz
16:37:03 <AnMaster> does nothing does it?
16:37:05 <ehird> did you forget to print out
16:37:05 <ehird> the result
16:37:06 <ehird> :D
16:37:07 <oklopol> whhell, dind't crash.
16:37:10 <oklopol> i don't think so
16:37:13 <ehird> hmm
16:37:15 <ehird> oklopol: suggestion
16:37:19 <ehird> make it echo everything form the irc sever
16:37:21 <AnMaster> : (+ 1 1)
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 <oklopol> try:
16:37:27 <ehird> it means you effed up stuff
16:37:29 <oklopol> koed=" ".join(line[4:])
16:37:31 <ehird> uhhh
16:37:31 <oklopol> result=runner.run(koed)
16:37:32 <ehird> oklopol: line[3]
16:37:33 <oklopol> result=result.split("\n")[0]
16:37:34 <ehird> you mean
16:37:35 <oklopol> s.send("PRIVMSG "+line[2]+" :"+result[:200]+"\r\n")
16:37:36 <ehird> line[:3]
16:37:37 <oklopol> except Exception, e:
16:37:39 <oklopol> s.send("PRIVMSG "+line[2]+" :An error: "+str(e))
16:37:39 <oklopol> you fix.
16:37:42 <ehird> oklopol: stoppit
16:37:43 <ehird> i said
16:37:44 <ehird> line[3]
16:37:44 <oklopol> i dno't
16:37:44 <ehird> ->
16:37:45 <ehird> line[:3]
16:37:48 <oklopol> no
16:37:52 -!- Corun has joined.
16:37:53 <ehird> line[3]==":::":
16:37:55 <ehird> [3] is always of length 1
16:37:58 <oklopol> line has everything split by " "
16:38:04 <ehird> ok
16:38:06 <AnMaster> ::: test
16:38:07 <oklopol> so it's
16:38:07 <ehird> oklopol: it goes like this
16:38:09 <AnMaster> :: test
16:38:12 <ehird> :host PRIVMSG channel :foo
16:38:18 <ehird> ok
16:38:20 <ehird> so that's right
16:38:23 <ehird> well
16:38:26 <oklopol> so line[3]==":::" should correct... hmm
16:38:27 <ehird> you forgot
16:38:27 <ehird> \r\n
16:38:29 <ehird> on the exception case
16:38:32 <ehird> and besides
16:38:33 <ehird> print out line
16:38:34 <oklopol> hmm, indeed.
16:38:37 <ehird> and print out everything from the irc server
16:38:40 <ehird> just to help
16:38:53 <AnMaster> oklopol, print out data to and from server on your terminal
16:38:56 <AnMaster> it will help indeed
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:44 <oklopol> we should see errors now.
16:39:49 -!- otobot has joined.
16:39:50 <oklopol> :: (+ 3 4)
16:39:50 <ehird> ::(- 5 3)
16:39:50 <otobot> An error: Int instance has no attribute 'split'
16:39:54 <oklopol> :D
16:39:56 <ehird> durrr
16:39:58 <ehird> you need to repr() it
16:39:58 -!- otobot has quit (Read error: 104 (Connection reset by peer)).
16:40:00 <ehird> or .pretty()
16:40:01 <ehird> or whatever
16:40:03 <ehird> and
16:40:07 <ehird> LET ME DO THE EXAMPLE :P
16:40:22 <oklopol> hehe
16:40:27 -!- otobot has joined.
16:40:28 <ehird> :: (- 5 3)
16:40:28 <otobot> 2
16:40:31 <ehird> :D
16:40:32 <oklopol> cool
16:40:33 <ehird> :: foo
16:40:34 <otobot> foo
16:40:36 <ehird> :: foo+3
16:40:36 <otobot> foo+3
16:40:36 <oklopol> it actually worked
16:40:39 <ehird> :: (+ foo 3)
16:40:39 <otobot> +
16:40:40 <oklopol> (+ foo 3)
16:40:42 <ehird> haha what
16:40:45 <oklopol> hehe
16:40:45 <ehird> why is that +
16:40:48 <ehird> :: (/ 1 0)
16:40:48 <oklopol> :)
16:40:49 <otobot> An error: integer division or modulo by zero
16:40:53 <oklopol> hard to explain.
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:40:58 <oklopol> but i can if you want
16:40:59 <ehird> :: (error 134)
16:40:59 <otobot> 134
16:41:07 <oklopol> what
16:41:09 <ehird> :: "DIE DIE DIE"
16:41:10 <otobot> DIE DIE DIE
16:41:17 <vixey> :: (+ (+ (+ 0 1) 1) 1)
16:41:17 <otobot> 3
16:41:18 <ehird> :: (+ "DIE DIE DIE" "oklotalk")
16:41:18 <otobot> An error: invalid literal for int() with base 10: 'oklotalk'
16:41:21 <ehird> haha
16:41:22 <oklopol> :D
16:41:23 <ehird> BROKEN
16:41:23 <oklopol> ah
16:41:25 <Deewiant> :: (error 1)
16:41:25 <otobot> 1
16:41:27 <ehird> :: dir
16:41:27 <otobot> dir
16:41:29 <oklopol> oh, right
16:41:30 <ehird> :: (dir *)
16:41:31 <otobot> dir
16:41:33 <ehird> oklopol: make a func list :(
16:41:38 <ehird> :: 'a
16:41:38 <otobot> 'a
16:41:42 <oklopol> hehe, i guess i should
16:41:43 <ehird> :: (set x 2)
16:41:43 <otobot> set
16:41:46 <ehird> :: (= x 2)
16:41:46 <otobot> 2
16:41:49 <ehird> :: x
16:41:49 <otobot> 2
16:41:51 <ehird> succses
16:41:54 <ehird> :: =
16:41:55 <otobot> =
16:41:56 <ehird> hmm
16:42:01 <ehird> oklopol: evaluating a function should show its source
16:42:16 <oklopol> = isn't a function
16:42:18 <oklopol> it's an atom
16:42:24 <oklopol> evaluates to itself :-)
16:42:25 <ehird> well, it works in function position
16:42:27 <ehird> so there
16:42:28 <ehird> oh
16:42:30 <ehird> oklopol: lisp-2?
16:42:34 <ehird> :: (= = 2)
16:42:34 <otobot> 2
16:42:36 <ehird> :: =
16:42:36 <otobot> 2
16:42:39 <ehird> :: (= y 2)
16:42:40 <otobot> 2
16:42:41 <ehird> :: y
16:42:42 <otobot> 2
16:42:43 <ehird> i see
16:42:49 <ehird> so functions are looked up differently from variables
16:42:51 <ehird> two namespaces
16:42:56 <oklopol> (= ...) just happens to be spacial
16:42:59 <oklopol> *special
16:43:07 <oklopol> as is (-> ... ...)
16:43:09 <oklopol> but that's all.
16:43:19 <ehird> okay
16:43:21 <ehird> :: (-> x x)
16:43:22 <otobot> []
16:43:24 <oklopol> (-> ptrn ... ... ...)
16:43:25 <ehird> :: (-> x x) 2
16:43:25 <otobot> []
16:43:28 <oklopol> matches _ on ptrn
16:43:31 <ehird> :: (-> X X) 2
16:43:31 <otobot> []
16:43:32 <oklopol> (= _ 6)
16:43:35 <oklopol> try now
16:43:35 <ehird> BROKENZ
16:43:39 <ehird> :: (-> X X) 2
16:43:40 <otobot> []
16:43:44 <oklopol> err
16:43:44 <ehird> :: (-> _ _) 2
16:43:45 <otobot> []
16:43:48 <ehird> BORKENTALK
16:43:49 <oklopol> (-> x x)
16:43:54 <oklopol> :: (-> x x)
16:43:54 <otobot> []
16:43:58 <oklopol> hmmm
16:44:03 <ehird> :: (= id (-> x x))
16:44:04 <otobot> [x]
16:44:08 <oklopol> (= _ 4)
16:44:08 <ehird> huh
16:44:09 <oklopol> :: (-> x x)
16:44:10 <otobot> []
16:44:10 <ehird> wtf
16:44:12 <oklopol> ...
16:44:16 <vixey> :: [x] 3
16:44:16 <oklopol> :: (= _ 4)
16:44:16 <otobot> 3
16:44:16 <ehird> :: (id 2)
16:44:16 <otobot> An error: 'list' object has no attribute 'clbl'
16:44:17 <otobot> 4
16:44:18 <oklopol> :: (-> x x)
16:44:18 <otobot> 4
16:44:20 <ehird> ID 2 => 3
16:44:21 <oklopol> ehird: see
16:44:22 <ehird> LOL LOL LOL
16:44:26 <ehird> :: (id 2)
16:44:27 <otobot> An error: 'list' object has no attribute 'clbl'
16:44:30 <ehird> hahahahahahahhhhh
16:44:31 <AnMaster> :: ööööööööööööö
16:44:31 <vixey> :: (-> x (-> y x))
16:44:31 <otobot> ööööööööööööö
16:44:31 <otobot> 4
16:44:34 <ehird> oklopol: what IS this
16:44:35 <AnMaster> hm
16:44:36 <oklopol> ehird: (-> ... ...) isn't a function.
16:44:38 <ehird> :: (length 2)
16:44:38 <otobot> 2
16:44:41 <ehird> :: (length "abc")
16:44:42 <otobot> An error: invalid literal for int() with base 10: 'abc'
16:44:45 <ehird> XDXDXD
16:44:45 <AnMaster> :: (+ 2 2)
16:44:46 <otobot> 4
16:44:48 <ehird> what CAN it do, oklopol
16:44:53 <ehird> show me quicksort
16:44:55 <vixey> :: (-> x (-> y y))
16:44:56 <otobot> 4
16:45:00 <oklopol> well i have the rational number quicksort
16:45:01 <vixey> ...
16:45:02 <oklopol> i can show it again
16:45:07 <ehird> shur
16:45:10 <oklopol> vixey: that makes no sense
16:45:17 <oklopol> that's why it's not "working"
16:45:36 <AnMaster> :: (% 5 4)
16:45:36 <otobot> 1
16:45:40 <AnMaster> :: (% 5 0)
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:43 <AnMaster> ah
16:45:45 <oklopol> http://www.vjn.fi/pb/p535315136.txt
16:45:48 <AnMaster> :: (% 5 -34)
16:45:49 <otobot> An error: Atm instance has no attribute 'call'
16:45:53 <AnMaster> eh?
16:46:02 <ehird> omg oklopol :D
16:46:03 <AnMaster> :: (% 5 (- 0 34))
16:46:04 <otobot> -29
16:46:04 <oklopol> http://www.vjn.fi/pb/p612313333.txt <<< not sure these actually work, but that's all that should.
16:46:08 <ehird> > {(-> x x)} 2
16:46:09 <ehird> :: {(-> x x)} 2
16:46:09 <otobot> 2
16:46:12 <ehird> WHOOOO
16:46:22 <oklopol> static and dynamic scoping, hf
16:46:32 <vixey> :: {(-> x {(-> y x)})} 2 3
16:46:33 <otobot> 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:39 <otobot> <<<27796784>>>
16:46:39 <vixey> :/
16:46:40 <oklopol> vixey: lambda is {}
16:46:42 <ehird> wow
16:46:43 <oklopol> somewhat.
16:46:44 <ehird> what is <<<>>>
16:46:44 <vixey> why did that give 3?
16:46:48 <ehird> :: qs
16:46:49 <otobot> <<<27796784>>>
16:46:53 <ehird> :: qs [1 2]
16:46:54 <otobot> [1 2]
16:46:55 <ehird> :: qs [2 1]
16:46:56 <otobot> [2 1]
16:47:00 <oklopol> :O
16:47:01 <oklopol> oh
16:47:01 <ehird> :: (qs [2 1])
16:47:01 <otobot> [1 2]
16:47:04 <oklopol> yeah
16:47:05 <ehird> totally rad
16:47:12 <oklopol> rad?
16:47:16 <ehird> ya
16:47:20 <AnMaster> oklopol, how do you do sqrt?
16:47:20 <oklopol> wuzzat
16:47:24 <vixey> :: ({(-> x {(-> y x)})} 2 3)
16:47:24 <otobot> <<<27843320>>>
16:47:26 <oklopol> AnMaster: i haven't doneit
16:47:28 <oklopol> done it
16:47:31 <AnMaster> ah
16:47:31 <ehird> oklopol: is oklotalk lazy
16:47:37 <oklopol> ehird: no.
16:47:42 <oklopol> well
16:47:43 <vixey> :: (({(-> x {(-> y x)})} 2) 3)
16:47:43 <otobot> 2
16:47:44 <AnMaster> :: (= gcd {(-> [a 0] a) (-> [a b] (' b (% a b)))})
16:47:45 <otobot> <<<27796064>>>
16:47:49 <AnMaster> eh
16:47:57 <AnMaster> what is the <<< >>>?
16:47:58 <ehird> :: (= 1 2)
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:07 <oklopol> but oklotalk-- isn't.
16:48:08 <AnMaster> ah
16:48:17 <AnMaster> :: (gcd [5 4])
16:48:17 <otobot> 1
16:48:17 <ehird> :: (= c0 {(-> f {(-> x x)})})
16:48:18 <otobot> <<<27854728>>>
16:48:23 <AnMaster> :: (gcd [237 23])
16:48:23 <otobot> 1
16:48:25 <AnMaster> err
16:48:30 <AnMaster> :: (gcd [8 4])
16:48:30 <otobot> 4
16:48:32 <AnMaster> ah
16:48:33 <AnMaster> :)
16:48:47 <ehird> :: (= cs {(-> n {(-> f {(-> x (f ((n f) x)))})})})
16:48:48 <otobot> <<<27817424>>>
16:48:51 <ehird> :: (cs c0)
16:48:52 <otobot> <<<27755544>>>
16:48:53 <vixey> :: (({(-> xxx {(-> y xxx)})} 2) 3)
16:48:54 <otobot> 2
16:48:54 <oklopol> ehird: please don't hit me, BUT IT DOESN'T HAVE TAIL RECURSION
16:49:12 <ehird> hmm
16:49:16 <ehird> fromchurch n = n (1+) 0
16:49:17 <ehird> right?
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:35 <otobot> <<<27882920>>>
16:49:36 <oklopol> hmm
16:49:40 <ehird> :: (c2n (cs c0))
16:49:40 <otobot> 1
16:49:45 <ehird> woot
16:49:47 <ehird> church numerals
16:49:49 <vixey> :: (= cons {(-> car {(-> cdr {(-> f ((f car) cdr))})})})
16:49:49 <otobot> <<<27900144>>>
16:49:55 <ehird> am i a qualified oklotalker now, oklopol?
16:49:58 <oklopol> :O
16:50:00 <ehird> i picked up the language soooooo fast
16:50:05 <ehird> :: (c2n (cs (cs c0)))
16:50:05 <otobot> 2
16:50:12 <ehird> i am so cool
16:50:13 <ehird> am i not
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:38 <oklopol> wait
16:50:42 <oklopol> oh
16:50:42 <ehird> gonna edit the code in emacs now, simpler
16:50:42 <oklopol> right
16:51:40 <AnMaster> Deewiant, there?
16:51:42 <vixey> :: (= car {(-> cons (cons {(-> car {(-> cdr car)})}))})
16:51:42 <otobot> <<<27853488>>>
16:51:51 <vixey> :: (car ((cons 1) 2))
16:51:51 <otobot> 1
16:51:52 <AnMaster> Deewiant, does ccbi handle iterating over @ in a sane way?
16:52:06 <oklopol> hehe
16:52:07 <vixey> :: (= car {(-> cons (cons {(-> car {(-> cdr cdr)})}))})
16:52:08 <otobot> <<<27783416>>>
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:16 <otobot> <<<27808952>>>
16:52:17 <vixey> :: (= car {(-> cons (cons {(-> car {(-> cdr car)})}))})
16:52:18 <otobot> <<<27754784>>>
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:22 <otobot> <<<27830592>>>
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:34 <otobot> <<<27884680>>>
16:52:37 <ehird> ...
16:52:40 <oklopol> also pretty easy in python
16:52:41 <ehird> goddamn
16:52:42 <oklopol> hmm
16:52:44 <ehird> :(((
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:02 <AnMaster> heh
16:53:11 <Deewiant> AnMaster: IIRC @ is one of those 'special optimizations' ;-P
16:53:13 <oklopol> ehird: did you fail?
16:53:13 <Deewiant> in k
16:53:17 <ehird> dfdfdffs
16:53:20 <ehird> oklopol: yes
16:53:22 <ehird> that should be 2
16:53:24 <ehird> that c2n i did
16:53:32 <ehird> :: (= plus {(-> m {(-> n {(-> f {(-> x ((m f) ((n f) x)))})})})})
16:53:32 <otobot> <<<27863880>>>
16:53:33 <ehird> plus is wrong
16:53:35 <AnMaster> Deewiant, well I just want to make it sane in this case, avoid valgrind error that is
16:53:40 <oklopol> yeah
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 <otobot> <<<27795824>>>
16:54:35 <vixey> :: (car (cdr (cdr ((cons 1) ((cons 2) ((cons 3) 0))) )))
16:54:36 <otobot> 3
16:54:36 <ehird> :: (inf inf)
16:54:37 <otobot> An error: maximum recursion depth exceeded in cmp
16:54:41 <ehird> aw sheesh
16:54:44 <ehird> you use PYTHON'S STACK
16:54:47 <ehird> that is TOTALLY lame
16:54:50 <oklopol> :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
16:54:51 <oklopol> yes.
16:54:56 <oklopol> that's why i don't have tail recursion
16:55:09 <ehird> :: []
16:55:10 <otobot> []
16:55:10 <ehird> :: [{}]
16:55:11 <otobot> [<<<35741088>>>]
16:55:13 <oklopol> i used my own stack first, but... you know, i'm lazy
16:55:13 <ehird> :: {} 2
16:55:14 <otobot> 2
16:55:17 <ehird> huh whut
16:55:19 <ehird> :: ({} 2)
16:55:19 <otobot> f
16:55:22 <ehird> uhh
16:55:22 <ehird> 'f'
16:55:24 <ehird> riiiiiight
16:55:26 <oklopol> false
16:55:30 <ehird> oh
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:41 <ehird> and call it nil
16:55:43 <ehird> so nil = {}
16:55:46 <ehird> and {} is printed as nil
16:55:47 <oklopol> :: ({(-> [a b] 4)} 6)
16:55:47 <otobot> f
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:03 <oklopol> :: (and 2 4)
16:56:03 <ehird> mmm yes :D
16:56:04 <otobot> f
16:56:09 <oklopol> :: (& 2 4)
16:56:10 <otobot> True
16:56:13 <oklopol> what :D
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:41 <ehird> srsly :D
16:56:41 <AnMaster> :: (- + -)
16:56:41 <otobot> -
16:56:46 <oklopol> oklotalk doesn't really have anything to do with lisps
16:56:48 <AnMaster> :: (- - -)
16:56:49 <otobot> -
16:56:52 <AnMaster> :: (+ - -)
16:56:53 <otobot> +
16:56:53 <ehird> oklopol: plzzor show him
16:56:54 <AnMaster> hm?
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:11 <oklopol> i think
16:58:14 <ehird> oklopol: no
16:58:17 <ehird> i mean the real quicksort
16:58:18 <ehird> of oklotalk
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:28 <oklopol> :D
16:58:29 <ehird> with loads of symbols
16:58:34 <oklopol> it hasn't really changed.
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:45 <ehird> it was awesome
16:58:50 <ehird> show me the reaeaaaal one
16:58:52 <ehird> that you showed before
16:58:52 <oklopol> :D
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:14 <ehird> {}%()£$)_D>+>AS}
16:59:15 <ehird> or something
16:59:17 <oklopol> :D
16:59:18 <ehird> it was something like that
16:59:20 <ehird> really symboly
16:59:21 <oklopol> wtf xD
16:59:21 <ehird> and cool
16:59:26 <ehird> awww just show me
16:59:27 <oklopol> § ?
16:59:36 <oklopol> that used to be the atom character
16:59:43 <oklopol> now it's $
16:59:48 <ehird> oklopol: no
16:59:53 <ehird> seriously, just the oklotalk quicksort
16:59:54 <oklopol> also \ -> / in that one
16:59:55 <ehird> that you used to show people
17:00:01 <oklopol> i always rewrite it.
17:00:06 <ehird> i will try and find it
17:00:07 <oklopol> sry
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:19 <ehird> i think
17:01:22 <oklopol> while it should return $f, indeed, doesn't really matter.
17:01:26 <AnMaster> :: (+ wtf err?)
17:01:26 <otobot> +
17:01:30 <AnMaster> hm
17:01:30 <oklopol> ehird: that was cise, perhaps?
17:01:39 <ehird> oklopol: no
17:01:39 <oklopol> cise has quicksort in like 8 characters
17:01:40 <ehird> it wasn't
17:01:42 <ehird> this was ages ago
17:01:44 <ehird> like 2007
17:01:44 <AnMaster> oklopol, how do you do a string?
17:01:55 <oklopol> :: "lol"
17:01:55 <otobot> lol
17:01:57 <vixey> cons up church numerals of course
17:01:58 <AnMaster> and what about puts/printf or similar?
17:01:59 <AnMaster> oklopol, ?
17:02:01 <vixey> :p
17:02:03 <oklopol> :: (outn "lol")
17:02:03 <otobot> lol
17:02:06 <oklopol> prints in my terminal.
17:02:10 <AnMaster> :: (+ "what" "not really")
17:02:10 <otobot> An error: invalid literal for int() with base 10: 'not really'
17:02:13 <oklopol> hehe
17:02:16 <oklopol> i should have that
17:02:16 <AnMaster> nice error
17:02:16 <oklopol> wait
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:02:39 <AnMaster> hm
17:03:06 <oklopol> hmm
17:03:10 <oklopol> i should make reload
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:03:56 <oklopol> ehird: what?
17:03:58 <ehird> but not **a*
17:03:59 <ehird> :D
17:04:01 -!- otobot has joined.
17:04:06 <AnMaster> oklopol, you forgot PING PONG?
17:04:09 <oklopol> :: (+ "asd" "fase")
17:04:09 <otobot> asdfase
17:04:10 <ehird> so i can't use regexps
17:04:15 <oklopol> AnMaster: no
17:04:16 <ehird> AnMaster: freenode has no ping timeouts
17:04:19 <oklopol> i fixxored the bot a bit
17:04:24 <AnMaster> ehird, they do TCP timeouts indeed
17:04:27 <AnMaster> :: (+ (outn "what") (outn "not really"))
17:04:27 <otobot> whatnot really
17:04:41 <AnMaster> :: (- "foo" "oo")
17:04:41 <otobot> f
17:04:43 <AnMaster> :D
17:04:45 <oklopol> :O
17:04:46 <AnMaster> :: (- "foof" "oo")
17:04:46 <otobot> f
17:04:51 <AnMaster> no that makes no sense
17:04:51 <oklopol> that's coincidence
17:04:52 <ehird> AnMaster: that's not up to them
17:04:52 <oklopol> heh
17:04:54 <ehird> that's just tcp timing out
17:04:59 <AnMaster> :: (- "goof" "oo")
17:04:59 <otobot> f
17:05:01 <AnMaster> ah
17:05:06 -!- Judofyr has joined.
17:05:07 <ehird> AnMaster: f = false
17:05:08 <AnMaster> :: (- "good" "oo")
17:05:08 <otobot> f
17:05:11 <AnMaster> ah ok
17:05:13 <AnMaster> right
17:05:23 <AnMaster> oklopol, otherwise that would be cool
17:05:29 <AnMaster> :: (- 0 3)
17:05:30 <otobot> -3
17:05:38 <oklopol> i can add whatevery you want, or you can add yourself, by making (= str {...})
17:05:41 <oklopol> *whatever
17:05:42 <AnMaster> how comes - can evaluate to false?
17:05:49 <oklopol> err
17:05:53 <ehird> AnMaster: when the pattern match fails
17:05:54 <oklopol> - is the atom $-
17:05:58 <ehird> :: $a
17:05:59 <otobot> a
17:05:59 <oklopol> IT DOESN'T DO ANYTHING, EVER
17:06:00 <ehird> :: $$a
17:06:01 <otobot> $a
17:06:02 <AnMaster> ok
17:06:03 <ehird> :: $$$$$a
17:06:03 <otobot> $$$$a
17:06:06 <ehird> $ is like quote
17:06:06 <ehird> :D
17:06:12 <ehird> :: $
17:06:14 <oklopol> ehird: not really :D
17:06:16 <ehird> :: $$
17:06:21 <ehird> oklopol: did it just print out an empty atom
17:06:22 <ehird> XD
17:06:23 <ehird> ::
17:06:28 <oklopol> dunno :D
17:06:32 <AnMaster> :: (% "foo" -1)
17:06:33 <ehird> :: help
17:06:35 <AnMaster> hm?
17:06:36 <ehird> I WANNA COMMAND LIST
17:06:39 <oklopol> did it crash
17:06:40 <ehird> haha
17:06:41 <ehird> we broke it
17:06:43 <oklopol> :: (+ 4 5)
17:06:45 <ehird> i think my $ broke it
17:06:46 <ehird> it still wants input
17:06:47 <oklopol> perhaps
17:06:49 <ehird> to complete the symbol
17:06:53 <ehird> but can't get any
17:06:58 <AnMaster> haha
17:06:59 <oklopol> haha
17:07:05 -!- otobot has quit (Read error: 104 (Connection reset by peer)).
17:07:09 <oklopol> wait a sex
17:07:14 <ehird> a sex?
17:07:15 <ehird> yes plz
17:07:17 <AnMaster> a sex?
17:07:21 <oklopol> xD
17:07:23 <ehird> is this otobot sex
17:07:26 <oklopol> parser infloops xDD
17:07:26 <ehird> because that sounds painful
17:07:29 <oklopol> :DDDDDDDDDDDDDDDDD
17:07:33 * oklopol is lolling
17:07:53 <ehird> turing complete parser
17:07:53 <ehird> OMG
17:07:59 <ehird> oklopol: make a language with a turing complete parser
17:08:20 <AnMaster> eh
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:02 <vixey> again,
17:09:07 <ehird> cpp is not TC
17:09:09 <vixey> how is this differetn from lisp?
17:09:09 <ehird> and that's not what i mean
17:09:12 <AnMaster> ehird, hm true
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:24 <ehird> bear
17:09:25 <ehird> XD
17:09:30 <AnMaster> beer*
17:09:34 -!- otobot has joined.
17:09:35 <AnMaster> I always mix them up
17:09:40 <AnMaster> :: $$
17:09:41 <otobot> $
17:09:46 <AnMaster> :: $$$
17:09:46 <otobot> $$
17:09:46 <oklopol> ehird: oklotalk actually has state lists, which are basically made for parsing
17:09:54 <AnMaster> :: (% "foo" -1)
17:09:54 <otobot> f
17:09:55 <ehird> oklopol: can i have a list of commands
17:10:04 <AnMaster> :: (+ 32.41 -1)
17:10:04 <otobot> An error: Application consists of 2 or 3 expressions.
17:10:08 <AnMaster> :: (+ 32.41 1)
17:10:08 <otobot> An error: Application consists of 2 or 3 expressions.
17:10:10 <oklopol> ehird: i already gave
17:10:14 <ehird> oklopol: where
17:10:15 <oklopol> http://www.vjn.fi/pb/p612313333.txt
17:10:18 <AnMaster> oklopol, how do you do floating points?
17:10:27 <oklopol> AnMaster: don't exist?
17:10:32 <AnMaster> ok
17:10:32 <oklopol> i mean
17:10:34 <oklopol> they don't
17:10:36 <AnMaster> oklopol, no sqrt yet?
17:10:37 <ehird> :: (\ {} [1 2 3])
17:10:37 <otobot> []
17:10:38 <oklopol> you have my rational numbers.
17:10:41 <ehird> :: .
17:10:42 <otobot> .
17:10:48 <ehird> oklopol: variadic?
17:10:51 <ehird> can i do variadiiiic
17:10:56 <AnMaster> oklopol, rational numbers hm?
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:17 <otobot> <<<27780600>>>
17:11:19 <oklopol> wtf :D
17:11:27 <ehird> = not
17:11:30 <ehird> :: (not 1)
17:11:31 <otobot> 1
17:11:32 <ehird> :: (not f)
17:11:33 <otobot> not
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:11:49 <otobot> <<<27793048>>>
17:11:54 <ehird> :: (not f)
17:11:54 <otobot> t
17:11:55 <ehird> :: (not t)
17:11:55 <otobot> t
17:11:58 <ehird> WTF
17:12:02 <oklopol> hmm
17:12:03 <oklopol> hehe
17:12:05 <ehird> :: (not $t)
17:12:05 <otobot> t
17:12:07 <oklopol> perhaps i should add not :D
17:12:11 <ehird> borkering
17:12:12 <oklopol> wait
17:12:22 <AnMaster> :: (! 1)
17:12:23 <otobot> 1
17:12:23 <oklopol> ehird: no
17:12:25 <AnMaster> :: (! +)
17:12:25 <otobot> !
17:12:29 <EgoBot> Huh?
17:12:29 <oklopol> it calls $t with $not as arg
17:12:32 <AnMaster> thanks for making no sense
17:12:32 <oklopol> returning $not
17:12:34 <oklopol> i think.
17:12:38 <ehird> oklopol: hahahahahahahahahahahaha whut
17:12:50 <ehird> :: (. and or)
17:12:51 <otobot> <<<27804096>>>
17:12:59 <oklopol> second arg is called if first is an atom.
17:13:01 <ehird> :: (. outn outn)
17:13:02 <otobot> <<<27793328>>>
17:13:07 <ehird> :: ((. outn outn) "hi")
17:13:07 <otobot> An error: invalid literal for int() with base 10: 'hi'
17:13:11 <ehird> fgh
17:13:13 <oklopol> in oklotalk--, it's actually that simple, i think
17:13:14 <oklopol> hmm
17:13:15 <ehird> :: (= hi "hi")
17:13:16 <otobot> hi
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:27 <oklopol> wtf :P
17:13:28 <ehird> :: (= onon (. outn outn))
17:13:29 <otobot> <<<27819424>>>
17:13:31 <ehird> :: (onon hi)
17:13:31 <otobot> An error: invalid literal for int() with base 10: 'hi'
17:13:39 <ehird> i love my life
17:13:43 <oklopol> i haven't really done anything with strings
17:13:48 <oklopol> but...
17:13:48 <oklopol> hmm
17:13:51 <ehird> oklopol: string = list of int
17:13:52 <ehird> :D
17:13:57 <AnMaster> :: (sqrt 3 4)
17:13:58 <oklopol> should be, but isn't.
17:13:58 <otobot> f
17:14:19 <AnMaster> oklopol, is it turing complete?
17:14:24 <ehird> AnMaster: yes
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:34 <AnMaster> hm ok
17:14:34 <ehird> well
17:14:36 <ehird> pretty much
17:14:39 <ehird> AnMaster: you can do the lambda calculus in it
17:14:44 <oklopol> yeah
17:14:48 <ehird> \x.E -> {(-> x E)}
17:14:53 <ehird> xy -> (x y)
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:14:55 <ehird> tada, LC
17:14:57 <AnMaster> :P
17:15:00 <oklopol> :: (. "a " "s")
17:15:01 <otobot> <<<27842680>>>
17:15:01 <ehird> AnMaster: you suck
17:15:07 <AnMaster> heheh
17:15:13 <vixey> you don't really want O(n) append on strings
17:15:13 <AnMaster> lambda*
17:15:24 <oklopol> vixey: what?
17:15:36 <oklopol> lists don't have O(1) append
17:15:42 <AnMaster> oklopol, what does the (. ) thing do
17:15:44 <AnMaster> the . that is
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:15:55 <ehird> :D
17:16:02 <oklopol> python does that for me, duh
17:16:06 <ehird> bah
17:16:08 <oklopol> :P
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:16:52 <oklopol> or...
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:23 <ehird> two seconds
17:17:23 <AnMaster> hm
17:17:24 <ehird> congrats
17:17:26 <oklopol> well, actually you *can't*
17:17:27 <AnMaster> sounds too hard
17:17:32 <AnMaster> ehird, eh?
17:17:39 <oklopol> strings cannot be splitted in any way.
17:17:44 <oklopol> but that's trivial to add ofc
17:17:45 <oklopol> and
17:17:47 <AnMaster> ehird, wtf do you mean?
17:17:55 <oklopol> i should really just do string -> [int] as ehird said
17:17:59 <AnMaster> ehird, ?
17:18:06 <oklopol> AnMaster: that we said the same thing
17:18:10 <AnMaster> ah
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:24 <AnMaster> one second difference here
17:18:30 <oklopol> ah
17:18:49 <Deewiant> 7 second difference here
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:22 <ehird> :D
17:20:40 <vixey> what's the difference from = and =>?
17:20:46 <ehird> that was examples
17:20:48 <ehird> not a definition
17:20:53 <AnMaster> ehird "ehird" => ???
17:20:54 <vixey> ah ok
17:21:03 <oklopol> ("ehird" "ehird")
17:21:08 <oklopol> :: ("ehird" "ehird")
17:21:09 <otobot> f
17:21:11 <AnMaster> hah
17:21:13 <oklopol> :: (. "ehird" "ehird")
17:21:14 <otobot> <<<27841920>>>
17:21:19 <oklopol> wtf :P
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:31 <oklopol> :: (:;: "ehird" "ehird")
17:21:32 <otobot> f
17:21:38 <AnMaster> :: (= ehird (outn "ehird!"))
17:21:38 <otobot> ehird!
17:21:43 <AnMaster> :: (ehird)
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:21:45 <AnMaster> err
17:21:49 <AnMaster> oklopol, ??
17:21:53 <oklopol> PARSE ERROR :OOOOO
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:16 <ehird> only one :(
17:22:17 <ehird> arg
17:22:18 <oklopol> AnMaster: that's an invalid application
17:22:20 <ehird> *only one arg
17:22:27 <ehird> no wait
17:22:29 <oklopol> hmm?
17:22:31 <ehird> only 1 or 2 args
17:22:38 <ehird> [17:21] <otobot> An error: Application consists of 2 or 3 expressions.
17:22:38 <oklopol> well
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:22:59 <ehird> {(-> x x)}
17:23:01 <ehird> is identity
17:23:08 <ehird> {(-> [a b] a) (-> foo bar)}
17:23:09 <AnMaster> :: (= ehird {(outn "ehird!")})
17:23:09 <otobot> <<<27828632>>>
17:23:11 <oklopol> ehird: it is not (function arg arg ...)
17:23:11 <ehird> maps [a b] to a
17:23:13 <ehird> and foo to bar
17:23:13 <ehird> XD
17:23:14 <AnMaster> : (ehird)
17:23:16 <AnMaster> :: (ehird)
17:23:16 <otobot> An error: Application consists of 2 or 3 expressions.
17:23:18 <AnMaster> err
17:23:19 <ehird> AnMaster: uh... PATTERN
17:23:20 <oklopol> it is (expression expression{1,2})
17:23:23 <AnMaster> hm
17:23:25 <ehird> AnMaster: pattern is (-> PATTERN EXPR)
17:23:30 <AnMaster> hm....
17:23:35 <ehird> :: (= ehird {(-> x (outn "ehird!"))})
17:23:35 <otobot> <<<27818864>>>
17:23:38 <ehird> :: (ehird f)
17:23:38 <otobot> ehird!
17:23:40 <AnMaster> aha!
17:23:41 <oklopol> -> takes any number of expressions
17:23:49 <AnMaster> :: (ehird))
17:23:49 <otobot> An error: Unmatching parens @ row 1.
17:23:51 <AnMaster> :: (ehird)
17:23:51 <otobot> An error: Application consists of 2 or 3 expressions.
17:23:53 <AnMaster> so...
17:24:10 <AnMaster> do I get this right? it does not accept functions taking no arguments
17:24:14 <AnMaster> ie, procedures?
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:34 <oklopol> *that
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 <ehird> vixey: nonsense
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:47 <ehird> vixey: :)
17:24:56 <ehird> AnMaster: name it
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:24:59 <ehird> {(-> x x)}
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:13 <oklopol> it's not lisp.
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:34 <AnMaster> maybe?
17:25:37 <oklopol> vixey: i have the rational type
17:25:38 <oklopol> kinda.
17:25:40 <ehird> vixey: yes, just make them into functions
17:25:43 <oklopol> it's made functionally thuogh
17:25:45 <oklopol> *though
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 <ehird> err wrait
17:25:53 <oklopol> you can make it mutable though, why not
17:25:54 <AnMaster> err
17:26:02 <ehird> http://www.vjn.fi/pb/p535315136.txt
17:26:03 <AnMaster> :: (= hi {(-> x (outn (+ "Hi " (+ x "!"))))})
17:26:03 <otobot> <<<27767632>>>
17:26:06 <ehird> AnMaster: http://www.vjn.fi/pb/p535315136.txt (= rat starts there
17:26:07 <ehird> err
17:26:09 <ehird> vixey
17:26:10 <AnMaster> :: (hi "test")
17:26:10 <otobot> Hi test!
17:26:13 <AnMaster> yay!
17:26:15 <AnMaster> it worked!!
17:26:18 <oklopol> heh
17:26:24 <ehird> :: <-- comment -->
17:26:24 <otobot> f
17:26:28 <oklopol> ::
17:26:28 -!- otobot has quit (Remote closed the connection).
17:26:29 <ehird> :: (+ <-- comment --> 2)
17:26:30 <oklopol> xD
17:26:32 <ehird> :(
17:26:34 <oklopol> okay, whit
17:26:35 <oklopol> *shit
17:26:51 <vixey> ahh cool
17:27:05 -!- otobot has joined.
17:27:10 <ehird> :: (+ <-- comment --> 2)
17:27:10 <otobot> 2
17:27:11 <AnMaster> oklopol, is + varadic?
17:27:13 <ehird> looool
17:27:15 <AnMaster> :: (= hello {(-> x (outn (+ "Hello " x "!"))))})
17:27:16 <ehird> :: (+ 1 2 3)
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:18 <ehird> AnMaster: no
17:27:19 <AnMaster> :: (= hello {(-> x (outn (+ "Hello " x "!")))})
17:27:19 <ehird> :)
17:27:19 <otobot> An error: Application consists of 2 or 3 expressions.
17:27:23 <AnMaster> sigh
17:27:29 <AnMaster> :: (= hi {(-> x (outn (+ "Hello, " (+ x "!"))))})
17:27:29 <otobot> <<<25658472>>>
17:27:30 <oklopol> AnMaster: I'M ONLY GOING TO TELL THIS ONCE MORE, + ISN'T A FUNCTION
17:27:31 <oklopol> IT'S AN ATOM
17:27:32 <ehird> :: (+ <-- comment --> 2) <-- so a comment actually evaluates to a value? -->
17:27:33 <otobot> 2
17:27:35 <oklopol> IT DOESN'T DO ANYTHING
17:27:38 <AnMaster> :: (hi "world")
17:27:38 <otobot> Hello, world!
17:27:40 <ehird> :: (+ <-- comment --> 1 1)
17:27:40 <otobot> 2
17:27:42 <ehird> hmm
17:27:43 <ehird> weird
17:27:44 <AnMaster> oklopol, ok whatever
17:27:45 <ehird> :: (+ 2)
17:27:45 <otobot> 2
17:27:46 <oklopol> ATOMS, BY DEFINITION, ARE THE ONE THING THAT *CANNOT* BE CALLED
17:27:47 <ehird> aha
17:27:47 <oklopol> :D
17:28:00 <AnMaster> oklopol, ok right
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:24 <oklopol> hmm
17:28:29 <oklopol> AnMaster: what exactly?
17:28:35 <AnMaster> <AnMaster> :: (= hi {(-> x (outn (+ "Hello, " (+ x "!"))))})
17:28:35 <oklopol> (= hello {(-> x (outn (+ "Hello " x "!"))))}) ?
17:28:37 <AnMaster> <AnMaster> :: (hi "world")
17:28:37 <AnMaster> <otobot> Hello, world!
17:28:38 <oklopol> no it didn't
17:28:48 <AnMaster> looks to me like it did?
17:28:59 <AnMaster> it did produce what I intended it to
17:29:03 <oklopol> whmm
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:17 <otobot> <<<25698552>>>
17:29:20 <ehird> :: (hi "world")
17:29:20 <otobot> Hello, world!
17:29:23 <ehird> aha
17:29:25 <oklopol> oh
17:29:25 <ehird> i know why!!
17:29:27 <ehird> you defined 'hi' before
17:29:28 <oklopol> (+ )
17:29:32 <ehird> oh wait
17:29:33 <ehird> duh
17:29:34 <ehird> of course
17:29:34 <ehird> right
17:29:35 <ehird> okay
17:29:37 <AnMaster> what?
17:29:40 <ehird> AnMaster: of course it worked
17:29:41 <ehird> :: (= hi {(-> x (outn (+ "Hello, " (+ x "!"))))})
17:29:41 <otobot> <<<25708064>>>
17:29:43 <ehird> what's not working about that
17:29:48 <oklopol> :: (+ 1 2 3)
17:29:49 <otobot> An error: Application consists of 2 or 3 expressions.
17:29:49 <AnMaster> ehird, indeed
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:08 <AnMaster> <oklopol> no it didn't
17:30:25 <AnMaster> oklopol, well varadic stuff would help IMO
17:30:33 <oklopol> well
17:30:37 <oklopol> defined semantics, please
17:30:40 <oklopol> (+ 1 2 3)
17:30:43 <oklopol> what should that do
17:30:46 <ehird> oklopol: is 1+2+3
17:30:53 <oklopol> ah, well
17:30:59 -!- shinkuzin has quit (No route to host).
17:31:04 <ehird> but the point is
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:15 <oklopol> that's why only 2 or 3
17:31:17 <ehird> so it would make no sense
17:31:17 <oklopol> expressions
17:31:22 <ehird> yeah
17:31:24 <ehird> it's APL-style
17:31:27 <oklopol> ya
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:48 <oklopol> and it's still *awesome*
17:31:48 <otobot> [1 2 3 4 5 6]
17:31:55 <ehird> oklopol: uhh, make it an arary language plz
17:31:56 <ehird> :(
17:32:01 <oklopol> arary?
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:14 <ehird> :D
17:32:15 <oklopol> hmm
17:32:21 <ehird> (∼R∈R∘.×R)/R←1↓⍳R
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:32:54 <ehird> X[⍋X+.≠' ';]
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:18 <AnMaster> ehird, that used non ascii
17:33:22 <ehird> (op [1 2 3] [4 5 6]) is:
17:33:27 <ehird> [(op 1 4) ...]
17:33:27 <ehird> etc
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:37 <oklopol> ehird: god no
17:33:38 <ehird> it predates ascii
17:33:40 <oklopol> :<
17:33:45 <ehird> oklopol: that's why they're so short
17:33:45 <ehird> :D
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:39 <oklopol> (nice to use for me)
17:34:43 <oklopol> (:D)
17:34:44 <ehird> oklopol: aha, that's what i wanted originally
17:34:51 <ehird> you agree! mwahaha
17:34:54 <oklopol> omg!
17:35:00 <AnMaster> ::
17:35:03 <AnMaster> :: ::
17:35:03 <otobot> ::
17:35:08 <AnMaster> :: \
17:35:08 <otobot> ftr
17:35:11 <AnMaster> eh?
17:35:15 <oklopol> filter.
17:35:22 <AnMaster> oklopol, huh?
17:35:30 <oklopol> :: (\ {(< _ 2)} [1 2 3])
17:35:30 <AnMaster> it filtered my line?
17:35:31 <otobot> [1]
17:35:35 <AnMaster> :: \ 0 1
17:35:36 <otobot> 1
17:35:38 <AnMaster> :: \ 0 1 3
17:35:38 <otobot> 3
17:35:42 <AnMaster> :: \ 0 1 3 5 6
17:35:42 <otobot> 6
17:35:44 <ehird> AnMaster: forgot parens
17:35:45 <oklopol> that just evaluates the symbols.
17:35:47 <AnMaster> ah
17:35:52 <AnMaster> :: \\
17:35:52 <otobot> \\
17:36:03 <AnMaster> :: (\ 4 2)
17:36:03 <otobot> An error: 'int' object is not iterable
17:36:13 <AnMaster> :: (\ [4 5] [2])
17:36:14 <otobot> []
17:36:19 <AnMaster> :: (\ [4 2 5] [2])
17:36:19 <otobot> []
17:36:22 <AnMaster> eh
17:36:23 <oklopol> whut :)
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:31 <oklopol> hehe
17:36:32 <oklopol> well
17:36:34 <AnMaster> because I can't figure it out
17:36:35 <oklopol> (\ func list)
17:36:46 <oklopol> lists can be used as a function though...
17:37:01 -!- Judofyr has joined.
17:37:09 <AnMaster> :: (\ [2 3 5])
17:37:10 <otobot> An error: 'int' object is not iterable
17:37:15 <AnMaster> um?
17:37:35 <AnMaster> :: (\ [2 3 5] [5 6])
17:37:35 <otobot> []
17:37:42 * AnMaster gives up
17:37:50 <oklopol> hmm
17:37:52 <oklopol> [] isn't a list
17:37:54 <oklopol> -..
17:37:55 <oklopol> function
17:38:02 <oklopol> give it a function as second arg
17:38:10 <AnMaster> oklopol, what is a list then
17:38:15 <oklopol> [...]
17:38:18 <oklopol> [] isn't a function
17:38:19 <oklopol> i meant
17:38:21 <AnMaster> ah
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:09 <ehird> everything
17:39:16 <oklopol> :: reload
17:39:16 <otobot> reload
17:39:18 <oklopol> hm
17:39:26 <ehird> oklopol: good idea or not :D
17:39:29 <oklopol> :: (= d 5)
17:39:29 <otobot> 5
17:39:30 <oklopol> :: d
17:39:31 <otobot> 5
17:39:32 <oklopol> :: reload
17:39:33 <otobot> reload
17:39:34 <oklopol> :: d
17:39:35 <otobot> d
17:39:38 <oklopol> ehird: very
17:39:43 <AnMaster> :: (= = x {(outn(1))}
17:39:43 <otobot> An error: Unmatching parens @ row 1.
17:39:44 <oklopol> hmmmm let's see now...
17:39:47 <AnMaster> :: (= = x {(outn(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 <AnMaster> :: (= = x {( (outn(x)) )})
17:40:10 <otobot> An error: Unmatching parens @ row 1.
17:40:11 <AnMaster> err
17:40:18 <AnMaster> are they unmatched?
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 <oklopol> :<
17:40:24 <AnMaster> oklopol, I can't see them being that
17:40:32 <oklopol> AnMaster: nothing works atm
17:40:34 <oklopol> wait a sex
17:40:46 <oklopol> errrrr
17:40:51 <oklopol> actually
17:40:52 <AnMaster> x != c
17:41:02 <ehird> oklopol: if ==> #<macro (c t e) (cond (c t) (else e))>
17:41:05 <ehird> and you can do
17:41:08 <ehird> no wait
17:41:09 <ehird> that would be
17:41:10 <oklopol> AnMaster: well you have too many args for ==
17:41:12 <oklopol> *=
17:41:16 <AnMaster> oklopol, hm ok
17:41:17 <ehird> #<macro args=(c t e) body=((cond (c t) (else e)))>
17:41:19 <ehird> and you could do
17:41:20 <ehird> (field
17:41:20 <oklopol> it's the wrong error, but an error still
17:41:22 <ehird> er
17:41:24 <ehird> (field 'args if)
17:41:27 <ehird> and get (c t e)
17:41:34 <AnMaster> :: (= = {(-> (outn(x)) )})
17:41:34 <otobot> An error: Unmatching parens @ row 1.
17:41:40 <AnMaster> no I don't
17:41:40 <oklopol> hmm
17:41:43 <oklopol> well...
17:41:50 <AnMaster> they *are* matched
17:41:53 <AnMaster> :: (= + {(-> (outn(x)) )})
17:41:54 <otobot> An error: Unmatching parens @ row 1.
17:41:55 <oklopol> :: (= = {(-> (outn x) )})
17:41:56 <otobot> <<<25760392>>>
17:42:00 <AnMaster> :: (= a {(-> (outn(x)) )})
17:42:01 <otobot> An error: Unmatching parens @ row 1.
17:42:05 <ehird> AnMaster: why have (x) around the arg
17:42:05 <oklopol> :: (= 5)
17:42:06 <otobot> An error: Assignment consists of 2 args.
17:42:07 <ehird> that makes no sense
17:42:25 <AnMaster> ehird, hm right
17:42:26 <oklopol> ehird: perhaps to evaluate it? :D
17:42:41 <AnMaster> oklopol, yeah could be
17:42:45 <AnMaster> :: (= a {(-> (outn (x)) )})
17:42:46 <otobot> An error: Application consists of 2 or 3 expressions.
17:42:48 <oklopol> anyway
17:42:52 <oklopol> you don't do it like that
17:42:54 <AnMaster> :: (= a {(-> (outn (x x)) )})
17:42:54 <otobot> <<<25761432>>>
17:42:55 <AnMaster> :D
17:42:57 <oklopol> yarr
17:43:01 <ehird> haha
17:43:03 <AnMaster> :: (a a)
17:43:03 <otobot> An error: Lst instance has no attribute '__len__'
17:43:06 <AnMaster> ?
17:43:09 <oklopol> btw. siisii would crash it and such...
17:43:10 <oklopol> hm
17:43:10 <AnMaster> :: (a 1 2)
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:18 <otobot> <<<25701112>>>
17:43:18 <AnMaster> ah right
17:43:19 <ehird> :: (a a)
17:43:20 <otobot> An error: maximum recursion depth exceeded
17:43:24 <oklopol> hehe
17:43:27 <ehird> python's stack has a limit
17:43:27 <ehird> :P
17:43:29 <AnMaster> :: (= = {(-> (outn (x x)) )})
17:43:30 <otobot> <<<35563400>>>
17:43:32 <AnMaster> :: (= = {(-> x (outn (x x)) )})
17:43:33 <otobot> <<<35556728>>>
17:43:38 <AnMaster> :: (x a)
17:43:39 <otobot> An error: maximum recursion depth exceeded
17:43:43 <AnMaster> :: (= a)
17:43:43 <otobot> An error: Assignment consists of 2 args.
17:43:45 <AnMaster> hm
17:43:45 <ehird> AnMaster: = is special cased
17:43:48 <AnMaster> aww
17:43:52 <AnMaster> :(
17:43:59 <ehird> AnMaster: otherwise the var name would be evaluated
17:44:07 <AnMaster> :: <-- non closed comment
17:44:07 <otobot> f
17:44:10 <AnMaster> aww
17:44:11 <oklopol> ehird: btw. look at the comparisons in the rational example
17:44:16 <oklopol> fun? :D
17:44:17 <ehird> oklopol: why
17:44:20 <oklopol> well
17:44:26 <ehird> hmm, wait..
17:44:26 <oklopol> just the code, i kinda like it
17:44:27 <AnMaster> :: (<-- non closed comment
17:44:27 <otobot> An error: Empty application.
17:44:28 <ehird> oh cool
17:44:29 <ehird> yes
17:44:29 <ehird> awesome
17:44:33 <ehird> (-> [(@ o [$any [$> $< $>= $<=]]) (/ dn dd)]
17:44:33 <ehird> (o (* n dd) (* dn d)))
17:44:35 <oklopol> you get it?
17:44:36 <ehird> that's nice
17:44:39 <oklopol> well
17:44:40 <AnMaster> :: @
17:44:41 <otobot> @
17:44:43 <oklopol> should be (any ...)
17:44:47 <AnMaster> :: (@ @)
17:44:47 <otobot> @
17:44:50 <oklopol> special functions should be as applications
17:44:53 <oklopol> in pattern matching
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 <AnMaster> :: (¶ 1)
17:45:09 <otobot> An error: Atm instance has no attribute '__len__'
17:45:13 <oklopol> hmm :D
17:45:18 <oklopol> aaaaaaaaaaaaah
17:45:18 <AnMaster> oklopol, what exactly does that error mean
17:45:30 <oklopol> well the error is in my implementation
17:45:34 <oklopol> it shouldn't be there
17:45:42 <oklopol> but i fixed it, in my head, like a second ago
17:45:43 <oklopol> so wait
17:45:48 <AnMaster> :: (+ ½ 1)
17:45:48 <otobot> +
17:45:55 <vixey> lol
17:45:56 <AnMaster> oklopol, THAT SHOULD WORK! ½ is rational
17:46:01 <AnMaster> 1/2 == rational :P
17:46:02 <ehird> haha
17:46:41 <AnMaster> :D
17:47:18 <oklopol> :: reload
17:47:19 <otobot> reload
17:47:29 <AnMaster> oklopol, what does reload do?
17:47:33 <oklopol> retry something that said __len__ doesn't work
17:47:41 <ehird> oklopol: name my crazy pythonlispfirstclassawesome
17:47:41 <AnMaster> :: (¶ 1)
17:47:43 <otobot> 1
17:47:57 <AnMaster> ehird, plisp?
17:47:59 <oklopol> ehird: well you could steal the name soup?
17:48:00 <AnMaster> plip?
17:48:06 <oklopol> i hear the soup people haven't really gotten much done
17:48:10 <ehird> oklopol: haha
17:48:12 <ehird> BUT THEY WILL
17:48:13 <ehird> SOON
17:48:17 <AnMaster> :: (+ ½ 1)
17:48:18 <otobot> +
17:48:21 <AnMaster> sigh
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 <oklopol> :D
17:48:40 <ehird> vixey: internal interpreter source
17:48:44 <ehird> vixey: the parser
17:48:46 <ehird> etc
17:48:49 <ehird> oklopol: XD
17:48:53 <AnMaster> oklopol, it's the unicode symbol for 1/2...
17:48:53 <AnMaster> :D
17:48:54 <vixey> cool
17:49:08 <ehird> first-class parser is in a lot of lisps
17:49:09 <ehird> but MEH
17:49:14 <ehird> the idea is
17:49:18 <AnMaster> :: (+ TWO ONE)
17:49:19 <otobot> +
17:49:19 <ehird> if the interpreter uses the data structure
17:49:22 <ehird> you can get at it
17:49:27 <AnMaster> oh intercal syntax didn't work
17:49:27 <ehird> oh ,first class scopes of course
17:49:28 <AnMaster> :/
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:12 * AnMaster runs
17:50:16 <ehird> AnMaster: haha
17:50:16 <oklopol> that maps =
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:31 <AnMaster> ehird, first class ticket
17:50:32 <AnMaster> :D
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:50:45 <ehird> :D
17:51:17 <AnMaster> ehird, XD
17:52:32 <AnMaster> What kind of tickets do functional programmers prefer when traveling by aircraft? Answer: first class tickets.
17:52:34 * AnMaster runs
17:52:35 <ehird> soup objects will be called pans
17:52:45 <AnMaster> ehird, what is soup?
17:52:49 <ehird> AnMaster: my first class lisp
17:53:01 <AnMaster> ehird, you said the name was in use?
17:53:11 <ehird> it is
17:53:16 <ehird> but by me and oklopol
17:53:18 <ehird> :)
17:53:19 <oklopol> :D
17:53:21 <AnMaster> a
17:53:22 <ehird> uhh
17:53:22 <AnMaster> ah*
17:53:26 <ehird> AND A CRACK DEVELOPMENT TEAM
17:53:27 <ehird> OF COURSE
17:53:28 <ehird> <_<
17:53:28 <oklopol> hmmmmm
17:53:36 <ehird> or a development team on crack
17:53:40 <AnMaster> craq
17:53:41 <ehird> oklopol: Soup lisp will have first-class GCs
17:53:41 <ehird> :D
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:35 <oklopol> AnMaster: wut? :D
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:30 <ehird> which is nicer
17:55:34 <ehird> AnMaster: it'll time out
17:56:04 <oklopol> AnMaster: go for it!
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:16 <AnMaster> aww
17:56:19 <AnMaster> oklopol, :/
17:56:25 <oklopol> ehird: well lol? :D
17:56:27 <ehird> AnMaster: he didn't implement it yet
17:56:31 <AnMaster> oh
17:56:33 <ehird> oklopol: WHICH
17:56:39 <AnMaster> otherwise evaluating a huge ISO
17:56:47 <AnMaster> would rock
17:56:52 <oklopol> ehird: both?
17:56:54 <oklopol> hmm
17:57:42 <ehird> oklopol: haha
17:57:45 <oklopol> ehird: i'm not sure what you mean, but latter
17:57:45 <ehird> i guess
17:57:48 <ehird> but which should i use
17:57:54 <AnMaster> :: (* 2 4)
17:57:54 <otobot> 2
17:57:54 <ehird> cook.pan() would just call Pan(cook)
17:57:57 <AnMaster> :: (* "foo" 4)
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:04 <AnMaster> eh?
17:58:10 <AnMaster> :: (* 4 "foo")
17:58:10 <otobot> 4
17:58:11 <oklopol> what
17:58:15 <ehird> :: (* "foo" 4)
17:58:15 <otobot> An error: invalid literal for int() with base 10: 'foo'
17:58:17 <oklopol> wtf :D
17:58:19 <AnMaster> oklopol, one of the links you posted
17:58:20 <ehird> :: (* [a b c] 4)
17:58:21 <otobot> [a b c]
17:58:22 <AnMaster> http://www.vjn.fi/pb/p612313333.txt
17:58:22 <ehird> eh
17:58:24 <ehird> it should replicate it
17:58:27 <ehird> foofoofoofoo
17:58:28 <oklopol> :: (+ 4 5)
17:58:29 <otobot> 4
17:58:30 <oklopol> oh
17:58:33 <oklopol> everything broke
17:58:35 <oklopol> wait a sex
17:58:37 <ehird> oklopol: what should i call the id of pans
17:58:38 <ehird> object id
17:58:45 <AnMaster> ehird, pancake?
17:58:51 <ehird> haha
17:58:52 <ehird> okay
17:58:55 <ehird> self.pancake :D
17:59:04 <AnMaster> aww maybe too confusing
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:22 <AnMaster> god
17:59:25 <AnMaster> that is confusing
17:59:29 <ehird> AnMaster: totally
17:59:30 <ehird> but hilarious
17:59:34 <ehird> maybe i should call it cook.flip
17:59:42 <oklopol> :: reload
17:59:43 <otobot> reload
17:59:45 <oklopol> ::(+ 4 5)
17:59:47 <oklopol> :: (+ 4 5)
17:59:48 <otobot> 9
17:59:50 <ehird> I also have Pan.throw, which copies an object to the context of another interpreter
17:59:55 <AnMaster> :: (* "foo" 4)
17:59:55 <otobot> foofoofoofoo
17:59:59 <AnMaster> :: (* 4 "foo")
18:00:00 <otobot> An error: invalid literal for int() with base 10: 'foo'
18:00:16 <oklopol> COCKFLIP
18:00:22 <AnMaster> oklopol, I thought order shouldn't matter?
18:00:24 <oklopol> :: (* "sd" 4)
18:00:24 <otobot> sdsdsdsd
18:00:31 <AnMaster> when adding of multiplying
18:00:32 <oklopol> why would you think that?
18:00:43 <oklopol> * is not multiplication
18:00:44 <ehird> oklopol: remember, it's not ASSOCIATIVE
18:00:46 <AnMaster> because 4+5 == 5+4
18:00:47 <ehird> i lectured you about + before
18:00:49 <ehird> ;)
18:00:56 <ehird> ofc its bullshit
18:00:56 <AnMaster> oklopol, hm
18:00:57 <ehird> but still
18:01:00 <ehird> nitpicking is fun
18:01:01 <AnMaster> :: (* 5 4)
18:01:02 <otobot> 20
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:27 <AnMaster> yeargh
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:01:44 <AnMaster> oklopol, and + then
18:01:52 <AnMaster> :: (+ 5 4)
18:01:52 <otobot> 9
18:01:56 <AnMaster> what exactly does that do?
18:02:05 <oklopol> same thing
18:02:11 <AnMaster> hm
18:02:13 <oklopol> 5 ! [$+ 4]
18:02:18 <oklopol> in real oklotalk
18:02:20 <AnMaster> mhm
18:02:42 <oklopol> except it's sent as #lo... but you'd have to know oklotalk :P
18:02:46 <oklopol> well
18:02:47 <oklopol> anyway
18:02:50 <oklopol> 5 is sent the list
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:14 <oklopol> otherwise just returns $f
18:03:16 <AnMaster> do you do (- 0 1) ro get -1?
18:03:20 <AnMaster> or is there any simpler way
18:03:23 <oklopol> the interp supports them internally
18:03:27 <oklopol> but not yet syntactically
18:03:33 <AnMaster> oh
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:49 <AnMaster> 01- to get -1 in befunge
18:03:50 <ehird> bah
18:03:52 <ehird> soup lisp is too hard
18:03:52 <ehird> :D
18:03:54 <oklopol> :D)
18:03:56 <ehird> oklopol: paste your old python lisp
18:04:03 <oklopol> oh what now?
18:04:15 <oklopol> that sch thing of ololobot
18:04:17 <oklopol> 's?
18:04:21 <ehird> oklopol: think so
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 <AnMaster> :: (+ (- 2 4i) 3)
18:04:50 <otobot> An error: Application consists of 2 or 3 expressions.
18:04:52 <AnMaster> hm
18:04:55 <oklopol> hmm
18:05:01 <oklopol> 4 and i are separated as tokens
18:05:02 <AnMaster> :: (+ (- 2 4) 3)
18:05:02 <otobot> 1
18:05:03 <oklopol> i think.
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:05:45 <oklopol> i mean
18:05:46 <AnMaster> oh right
18:05:48 <oklopol> in oklotalk-- ofc
18:06:04 <ehird> oklopol: i wannnnaaaaaaiiit
18:06:05 <AnMaster> you need a libstdoklo
18:06:06 <AnMaster> :D
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:12 <ehird> :D
18:06:13 <oklopol> *it's
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:27 <oklopol> not here
18:06:32 <ehird> oklopol: its on the pastebin
18:06:39 <oklopol> the scheme? :O
18:06:44 <ehird> ya
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:50 <ehird> so
18:06:52 <ehird> okoko
18:06:56 <oklopol> well, the pastebin has a shitload of stuff...
18:06:58 <ehird> for balance:
18:06:59 <ehird> okokoko
18:07:05 <ehird> in fact
18:07:07 <ehird> add another oko
18:07:09 <ehird> for each version
18:07:10 <oklopol> :D
18:07:12 <ehird> so revision 64 is
18:07:18 <ehird> okokokokokokokokokokokokoko...
18:07:29 <ehird> oklopol: grep 'class MEM'
18:07:32 <ehird> no wait
18:07:33 <ehird> 'class O:'
18:07:37 <ehird> or 'class O(object)'
18:07:43 <oklopol> hmm...
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:06 <ehird> grep 'class O:' *
18:08:08 <ehird> yeah
18:08:09 <oklopol> i guess
18:08:19 <oklopol> AnMaster: compared with oklotalk?
18:08:23 <AnMaster> oklopol, indeed
18:08:25 <oklopol> well
18:08:32 <AnMaster> and compared with ehird
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:08:50 <AnMaster> mh
18:08:52 <oklopol> and it worked right away
18:08:52 <AnMaster> hm*
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:26 <oklopol> ittt?
18:09:31 <oklopol> i'll connect now
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:08 * AnMaster grins madly
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:25 <oklopol> for me at least
18:10:27 <oklopol> i just wrote it
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:11:00 <oklopol> *C
18:11:10 <oklopol> ehird: dl'ing putty..
18:11:15 <ehird> haha
18:11:28 <AnMaster> connect to where?
18:12:00 <ehird> AnMaster: vjn.fi presumably
18:12:57 <oklopol> shit.
18:13:04 <oklopol> this is not the real account
18:13:05 <oklopol> i mean
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:30 <oklopol> yes
18:15:36 <ehird> you barely need to define anything
18:15:38 <oklopol> kinda like rat, but different operations
18:15:45 <ehird> ok i'll try
18:15:49 <oklopol> cool
18:15:56 <oklopol> i'll make the interpreting urls thing
18:16:14 <ehird> {(-> [n d] {
18:16:18 <ehird> d = operation?
18:17:57 <vixey> funny video http://video.google.com/videoplay?docid=-7990603720514207956
18:18:39 <ehird> vixey: oleg is cooool
18:18:39 <ehird> :D
18:19:01 <oklopol> hmm
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:21 <oklopol> so
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:00 <ehird> :D
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:14 <oklopol> okay
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:20:41 <ehird> what is pb
18:20:43 <ehird> is it magic
18:20:44 <oklopol> like : for lists
18:20:48 <ehird> huh
18:20:50 <ehird> whut
18:20:50 <ehird> :|
18:20:51 <oklopol> pb == pmatch both
18:20:55 <ehird> don't get it
18:20:56 <ehird> :|
18:20:59 <oklopol> well
18:21:15 <oklopol> (-> (/ n d) n)
18:21:24 <oklopol> this would extract the nominator of a rational
18:21:27 <oklopol> errr
18:21:29 <oklopol> nominator
18:21:32 <oklopol> i mean
18:21:32 <ehird> oh i see
18:21:34 <oklopol> ...
18:21:39 <ehird> oklopol: so that defines a custom pattern match
18:21:42 <oklopol> yes
18:21:54 <ehird> (-> [pb CAR-OF-PATTERN-MATCH] ...)
18:22:01 <oklopol> yeah
18:22:02 <ehird> but i don't get how [n d] fits into it
18:22:02 <ehird> :|
18:22:08 <oklopol> well
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:27 <ehird> oklopol: okay
18:22:27 <oklopol> for [pb :]
18:22:37 <ehird> so, i should match on 'j' i guess
18:22:38 <ehird> or...
18:22:40 <ehird> maybe just 'cpx'
18:22:42 <ehird> (that's my class name)
18:22:46 <oklopol> perhaps
18:22:47 <ehird> (-> [pb $cpx] [r i])
18:22:57 <oklopol> yarr something like that
18:23:00 <oklopol> or you can define a setter
18:23:06 <oklopol> err
18:23:07 <oklopol> getter
18:23:26 <oklopol> (-> $getreal r) (-> $getimag i)
18:23:28 <oklopol> if you wanna
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:01 <oklopol> it oughtta be
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:13 <AnMaster> to get absolute value
18:26:22 <ehird> comparisons aren't even that hard
18:26:27 <ehird> since i don't have to define them
18:26:30 <ehird> how convenient :D
18:26:32 <ehird> well
18:26:32 <ehird> ==
18:26:39 <oklopol> AnMaster: gaussian integers
18:26:48 <ehird> hmm wait
18:27:13 <oklopol> ehird: multiplication doesn't work like that
18:27:16 <AnMaster> abs(a+bi) == sqrt(a^2 + b^2);
18:27:18 <AnMaster> oklopol, ^
18:27:23 <oklopol> AnMaster: duh
18:27:32 <ehird> oklopol: oops, yeah
18:27:39 <ehird> sorry, mind is fuzzed right now
18:27:42 <oklopol> hehe
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:27:52 <ehird> bah, i give up :D
18:27:56 <oklopol> :<
18:28:00 <oklopol> ehird: well
18:28:07 <oklopol> hmm
18:28:10 <oklopol> :: (cpl 5)
18:28:11 <otobot> 5
18:28:12 <oklopol> :)
18:28:15 <oklopol> darn
18:28:22 <oklopol> ofc doesn't work that easily
18:28:23 <oklopol> hmmhmm
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:08 <ehird> Sgeo: Nope
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:23 <AnMaster> Sgeo, well I won't use it no
18:29:26 <ehird> now, in tradition, you must copy me
18:29:27 <ehird> :D
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:29:44 <ehird> oklopol: no
18:29:47 <oklopol> darn
18:29:48 <AnMaster> Sgeo, what would it offer me?
18:29:56 <AnMaster> Sgeo, as a befunge programmer
18:30:03 <ehird> oklopol: you should call yours okompose
18:30:08 <ehird> AnMaster: nothing
18:30:12 <AnMaster> exactly
18:30:12 <oklopol> okompose? :D
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:19 <AnMaster> yep
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:06 <oklopol> well...
18:31:11 <oklopol> actually, nulls
18:31:26 <oklopol> that's like the worst character to choose for frequent use
18:31:27 <oklopol> :P
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:00 <AnMaster> ie to terminate them
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:33:46 <AnMaster> you need two numbers
18:33:47 <AnMaster> not one
18:33:53 <oklopol> yes
18:33:55 <oklopol> but the point is
18:33:57 <oklopol> i don't see it
18:34:11 <oklopol> ehird: what?
18:34:16 <oklopol> yeah
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:24 <AnMaster> :)
18:34:30 <AnMaster> cpx + rat
18:34:31 <AnMaster> :D
18:34:35 <oklopol> hehe
18:34:41 <AnMaster> a complex rat?
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:34:59 <AnMaster> :D
18:35:12 <oklopol> but rat will need to know about complexes.
18:35:25 <AnMaster> oklopol, not first class?
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:04 <AnMaster> or something like that
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:16 <oklopol> *when
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:36:45 <AnMaster> that could work
18:36:47 <AnMaster> oklopol, :D
18:37:08 <oklopol> what's the use of implementing the interface?
18:37:18 <oklopol> oklotalk is duck-typed
18:37:25 <AnMaster> oklopol, because then you can stick *any* number into the cpx
18:37:31 <AnMaster> duck-typed?
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:13 <oklopol> AnMaster: giyf
18:38:22 <AnMaster> eh?
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:38:50 <oklopol> i mean, conceptually
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:10 <AnMaster> would do
18:39:15 <oklopol> the fact cxp "is a number" doesn't make any difference
18:39:18 <oklopol> ehird: i know
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 <oklopol> ehird: okay.
18:39:50 <oklopol> now what does that mean
18:39:50 <ehird> oklopol: basically, in 'x.y(z)' you dispatch on the magic first param - self, here x
18:39:50 <AnMaster> ehird, \o/
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:00 <ehird> instead of
18:40:03 <ehird> int.+(other)
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:35 <ehird> ever
18:40:37 <oklopol> no i don't
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:06 <oklopol> i don't?
18:41:09 <oklopol> okay
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:13 <AnMaster> Deewiant, there?
18:46:24 <oklopol> so the cleverer one will be called automatically
18:46:27 <oklopol> well
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:10 <oklopol> i'm not gonna argue that
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:37 <oklopol> does it?
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:49:55 <oklopol> cya
18:49:56 <oklopol> ->
18:50:02 <vixey> sqrt(-x) = sqrt(-1)*sqrt(x)
18:50:13 <vixey> less horribly confusing way to put it :P
18:50:52 <Deewiant> doesn't always apply.
18:50:56 <AnMaster> Deewiant, so how would you write a befunge program that solves: 2x^2 + 4x + 1 = 0
18:50:58 <AnMaster> XD
18:51:00 <Deewiant> only for reals.
18:51:03 <vixey> yes it does
18:51:08 <Deewiant> AnMaster: I wouldn't. :-P
18:51:11 <AnMaster> Deewiant, hahah
18:51:25 <ehird> omg oklopol went
18:51:26 <Deewiant> vixey: try x == sqrt(-1).
18:51:30 <ehird> noo i was just saying to say something
18:51:39 <oklopol> i didn't go anywhere...
18:51:42 <vixey> that's not a counter example
18:51:44 <ehird> good
18:51:45 <ehird> :D
18:51:46 <oklopol> don't you know me at all...
18:51:47 <Deewiant> or a simpler example.
18:51:49 <Deewiant> x == -1.
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:02 <Deewiant> why nto?
18:52:05 <Deewiant> s/nto/not/
18:52:19 <vixey> because sqrt(-1)*sqrt(-1) = -1
18:52:34 <Deewiant> and?
18:52:44 <vixey> you asked
18:52:47 <Deewiant> sqrt(-(-1)) == sqrt(1) == 1.
18:52:54 <Deewiant> sqrt(-1) * sqrt(-1) == -1.
18:52:57 <Deewiant> -1 != 1.
18:52:58 <Deewiant> QED.
18:53:37 <oklopol> ehird: i'm trying to leave though, so say if you're gonna
18:54:07 <ehird> oklopol: i am
18:54:08 <ehird> just a sec
18:54:15 <ehird> oklopol: I tried writing python in okostyle for my interp :P
18:54:25 <oklopol> wuzzat?
18:54:31 <ehird> oklopol: your weird style
18:54:31 <ehird> heh
18:54:34 <oklopol> :D
18:54:38 <oklopol> i have a style? :D
18:54:40 <Deewiant> vixey: enough of a counter example?
18:54:43 <vixey> Dewiant: what number times itself is 9?
18:54:52 <ehird> oklopol: yeah
18:54:54 <vixey> *that's not a counter example*
18:54:55 <ehird> short names, not much whitespace
18:54:56 <ehird> :D
18:54:56 <Deewiant> 3 or -3
18:54:58 <oklopol> hmm
18:54:58 <vixey> please try to listen to me
18:54:59 <oklopol> right
18:55:00 <oklopol> try
18:55:02 <oklopol> true
18:55:03 <vixey> right
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:30 <vixey> two values
18:55:32 <Deewiant> or (>= 0)
18:55:38 <AnMaster> Deewiant, indeed
18:55:42 <vixey> oh ok
18:55:44 <ehird> oklopol: aww
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:55:55 <Deewiant> er
18:55:58 <Deewiant> that /is/ how sqrt is defined
18:56:07 <vixey> I define sqrt(x) = x^1/2
18:56:20 <Deewiant> fine
18:56:28 <Deewiant> but that denotes the principal square root
18:56:36 <Deewiant> which is to say, the positive one.
18:56:41 <ehird> oklopol: btw
18:56:43 <ehird> oklopol: useful:
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:13 <ehird> oklopol: hello
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:06:45 <ehird> it's recursive
19:06:56 <ehird> also
19:06:57 <ehird> the eval function
19:06:58 <ehird> only 18 lines
19:07:37 <ehird> and it was based on rewriting
19:07:38 <ehird> but that was only
19:07:41 <ehird> so i'm making it stakkk
19:09:07 <ehird> ok
19:09:08 <ehird> now its 14 lines
19:12:37 <AnMaster> oklopol, where is the bot?
19:13:08 <ehird> oklopol: i have a weird bug
19:13:09 <ehird> halp me fix
19:13:58 <ehird> oklopol: plzz
19:14:12 <ehird> http://www.vjn.fi/pb/p461542621.txt the bug is in pa near the botto
19:14:13 <ehird> m
19:14:16 <oklopol> AnMaster: what bot
19:14:27 <oklopol> what bug
19:14:33 <AnMaster> oklopol, oklobot
19:14:41 <AnMaster> with the oklotalk interpreter
19:14:46 <oklopol> that's otobot
19:14:50 <AnMaster> aha
19:14:51 <oklopol> oklobot is very different
19:14:54 <AnMaster> there is it
19:14:56 <AnMaster> it is*
19:14:56 <oklopol> it's my c++ bot
19:15:02 <oklopol> otobot: where are you?
19:15:08 <AnMaster> shows why tab completion didn't show it
19:15:12 <oklopol> i guess he's gone
19:15:15 <oklopol> didn't answer anything
19:15:17 <oklopol> anyway
19:15:22 <oklopol> ehird: that's the parseror?
19:15:29 <oklopol> s,i... i is current place, like?
19:15:39 <oklopol> or whut
19:15:39 <ehird> oklopol: yeah that[s the parser
19:15:45 <ehird> and
19:15:47 <ehird> i is nesting depth
19:15:49 <oklopol> where's the but
19:15:49 <ehird> wait
19:15:51 <oklopol> oh
19:15:56 <ehird> return pa(s,i+1)+pa(s,i)
19:15:57 <ehird> change to
19:15:59 <ehird> return [pa(s,i+1)]+pa(s,i)
19:16:00 <ehird> that doesn't fix it
19:16:05 <ehird> but
19:16:06 <ehird> it's what i meant
19:16:08 <oklopol> what's the error?
19:16:11 <ehird> (lists are quotations)
19:16:13 <oklopol> i'm not gonna run it!
19:16:13 <ehird> oklopol: unmatched ]
19:16:16 <ehird> when parsing
19:16:18 <oklopol> oh
19:16:21 <ehird> and
19:16:23 <oklopol> prints that?
19:16:23 <ehird> no wait
19:16:24 <ehird> unmatched [
19:16:25 <oklopol> or what
19:16:27 <ehird> err wait
19:16:28 <ehird> hmmm
19:16:29 <ehird> ok
19:16:30 <ehird> i'll explain
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:40 <ehird> s = []
19:16:42 <oklopol> sure
19:16:45 <ehird> but after pa(s,i+1) thing
19:16:48 <ehird> where we get returned to
19:16:50 <ehird> s=[']']
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:17:23 <oklopol> hmm
19:17:25 <ehird> yes
19:17:30 <oklopol> i can read pa
19:17:32 <oklopol> now
19:17:38 <oklopol> what's s=
19:17:38 <oklopol> ?
19:17:42 <oklopol> the thing to parse?
19:17:46 <ehird> yes as a list
19:17:51 <ehird> aha
19:17:51 <ehird> >>> p('[]')
19:17:52 <ehird> ['[', ']'] 0
19:17:52 <ehird> [']'] 1
19:17:52 <ehird> [] 0
19:17:52 <ehird> [[]]
19:17:54 <ehird> >>> p('[a]')
19:17:56 <ehird> ['[', 'a', ']'] 0
19:17:58 <ehird> ['a', ']'] 1
19:18:00 <ehird> [']'] 1
19:18:02 <ehird> [']'] 0
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:12 <ehird> but WHY
19:18:17 <oklopol> what should it do...
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:18:37 <oklopol> well
19:18:40 <oklopol> i can try
19:19:11 <oklopol> errr
19:19:24 <oklopol> so basically the recursion doesn't gulp a ] it should be gulping?
19:19:31 <ehird> no
19:19:32 <ehird> well
19:19:32 <ehird> yes
19:19:35 <ehird> but it works for []
19:19:37 <ehird> just not [a]
19:19:38 <ehird> or similar
19:19:40 <ehird> which is weiiird
19:20:36 <oklopol> asd
19:20:49 <ehird> aha wait..
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:21:40 <ehird> oh
19:21:41 <ehird> OF COURSE
19:21:42 <ehird> duhhh
19:22:30 <ehird> oklopol: fixed it
19:22:30 <ehird> so yay
19:22:35 <oklopol> cool
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:21 <ehird> heh
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 <AnMaster> ehird, what are you doing?
19:38:48 -!- Judofyr_ has joined.
19:39:37 <ehird> AnMaster: coding a simple concatenative lang
19:41:10 -!- Slereah has quit.
19:41:20 <AnMaster> mhm
19:42:05 <ehird> oklopol: no? :D
19:42:16 -!- oklopol has quit (Read error: 104 (Connection reset by peer)).
19:42:37 -!- oklopol has joined.
19:42:42 <ehird> oklopol: :(
19:42:44 <AnMaster> ehird, try again now?
19:42:48 <ehird> yeah
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:45:55 <oklopol> www.okay
19:45:56 <oklopol> wait
19:46:24 <oklopol> http://www.vjn.fi/s/sadf.py <<< verrrry ugly
19:49:22 <AnMaster> lambda? python got that?
19:49:25 <AnMaster> :/
19:50:05 <oklopol> sure
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:54:58 <ehird> my code rox
19:54:59 <ehird> :D
19:56:35 <olsner> rox? in which way?
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:02 <ehird> :(
19:58:04 <ehird> ooh i know
19:58:42 -!- concat has joined.
19:58:44 <ehird> wtfff
19:58:47 <ehird> sux at nams
19:58:49 -!- concat has quit (Remote closed the connection).
19:59:21 <ehird> hmm
19:59:51 -!- concatbot has joined.
19:59:51 <ehird> oklofok: okay
19:59:54 <ehird> # 2 2 +
19:59:57 <ehird> :((
20:00:16 -!- vixey has quit ("Leaving").
20:00:17 -!- concatbot has quit (Remote closed the connection).
20:00:23 -!- concatbot has joined.
20:00:25 <ehird> # 2 2 +
20:00:45 -!- concatbot has quit (Remote closed the connection).
20:00:51 -!- concatbot has joined.
20:00:52 <ehird> # 2 2 +
20:01:12 -!- concatbot has quit (Remote closed the connection).
20:01:18 -!- concatbot has joined.
20:01:19 -!- concatbot has quit (Remote closed the connection).
20:01:54 -!- concatbot has joined.
20:01:55 <ehird> # 2 2 +
20:02:14 -!- concatbot has quit (Remote closed the connection).
20:02:20 -!- concatbot has joined.
20:02:47 -!- Judofyr_ has quit (Read error: 104 (Connection reset by peer)).
20:02:52 <ehird> oklofok: hmm
20:02:54 <ehird> yours splits on space
20:02:57 <ehird> and ignores :
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:34 <ehird> # 2
20:03:36 <ehird> hmph
20:03:37 <oklofok> that is true, yes.
20:03:45 -!- concatbot has quit (Remote closed the connection).
20:03:51 -!- concatbot has joined.
20:03:52 <ehird> # 2
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:20 <ehird> # 2
20:04:36 -!- concatbot has quit (Remote closed the connection).
20:04:48 -!- concatbot has joined.
20:04:49 <ehird> # 2
20:04:51 <ehird> urgh
20:04:56 -!- concatbot has quit (Remote closed the connection).
20:05:00 -!- concatbot has joined.
20:05:00 <ehird> # 2
20:05:03 <ehird> rugdflgjdfdfg
20:05:25 -!- concatbot has quit (Remote closed the connection).
20:05:30 -!- concatbot has joined.
20:05:30 <ehird> # 2
20:05:38 -!- concatbot has quit (Remote closed the connection).
20:05:40 <ehird> jaoisj ljddlfkg
20:05:42 -!- concatbot has joined.
20:05:44 <ehird> # 2
20:05:58 -!- concatbot has quit (Remote closed the connection).
20:06:09 -!- concatbot has joined.
20:06:10 <ehird> # 2
20:06:10 -!- concatbot has quit (Remote closed the connection).
20:06:12 <ehird> well
20:06:15 <ehird> that's a start
20:07:06 -!- concatbot has joined.
20:07:12 <ehird> # 2
20:07:14 <ehird> oh woooot
20:07:16 <ehird> oklofok: looky
20:07:22 <oklofok> well... cool?
20:07:23 <oklofok> :D
20:07:24 <ehird> # 2
20:07:26 <ehird> # +
20:07:29 <ehird> ...
20:07:30 <ehird> XD
20:07:33 <oklofok> haha
20:07:41 <ehird> i maed last minute changes
20:07:43 <oklofok> so that's why concatbot
20:08:04 <ehird> # reload
20:08:09 <ehird> # 2 2
20:08:12 <ehird> ...
20:08:14 <ehird> Much lulz.
20:08:45 <ehird> # reload
20:08:46 <ehird> # 2 2 +
20:08:50 <ehird> oh woot
20:08:55 -!- concatbot has quit (Remote closed the connection).
20:08:57 <ehird> ok
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:09:26 <oklofok> :)
20:10:49 <ehird> # reload
20:10:51 <ehird> # 1 0 /
20:10:51 -!- concatbot has quit (Remote closed the connection).
20:10:54 <ehird> Lulz!
20:11:07 -!- concatbot has joined.
20:11:08 <ehird> # 1 0 /
20:11:16 <ehird> oklofok: funny - + is composition
20:11:20 <ehird> # [1 2] [3 4] +
20:11:24 <ehird> # [1 2] [3 4] + i
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:00 <ehird> # reload
20:12:02 <ehird> # 1 0 /
20:12:05 <ehird> heee
20:12:08 <ehird> # reload
20:12:10 <ehird> # 1 0 /
20:12:19 <ehird> oklofok: oh, and watch this
20:12:23 <ehird> # "2+2" py
20:12:27 <ehird> wait.
20:12:29 <ehird> that should work.
20:12:54 <ehird> # reload
20:12:54 unexpected log event :(
20:13:00 <ehird> lulz!
20:13:03 -!- concatbot has quit (Remote closed the connection).
20:13:09 -!- concatbot has joined.
20:13:10 <ehird> # "2+2" py
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:14:10 <oklofok> cool, shure
20:15:33 <ehird> # reload
20:15:40 <ehird> # [add1 1 +] define
20:15:40 -!- concatbot has quit (Remote closed the connection).
20:15:44 <ehird> Hahah
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 <ehird> # 1 add1
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:11 <ehird> # [] define
20:17:16 <ehird> # [[1 2] a] define
20:17:23 <ehird> oklofok: shall i make it its own channel?
20:17:47 <oklofok> omg i need to leave!
20:17:50 <oklofok> but shuuure?
20:17:52 <oklofok> invite me
20:17:53 <oklofok> ->
20:17:57 <ehird> aww
20:18:09 -!- concatbot has quit (Remote closed the connection).
20:18:14 <ehird> ok
20:18:15 -!- concatbot has joined.
20:18:16 <ehird> it'll be in #ccb
20:18:18 <ehird> as well as here
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:14 <ehird> nobody? :P
20:19:27 -!- concatbot has quit (Remote closed the connection).
20:19:33 -!- concatbot has joined.
20:19:42 -!- concatbot has quit (Remote closed the connection).
20:20:01 -!- concatbot has joined.
20:28:17 -!- Judofyr has joined.
20:32:54 <ehird> # [] i
20:43:35 -!- oerjan has joined.
20:57:22 <ehird> oerjan: do you like concatenative languages
20:57:42 <oerjan> well a bit
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:26 <AnMaster> :P
21:01:34 <ehird> oerjan: there's one in here riiiiight now
21:01:40 <ehird> # 2 3 +
21:05:43 -!- concatbot has quit (Remote closed the connection).
21:05:47 <ehird> oops
21:10:54 -!- UnrelatedToQaz has joined.
21:10:58 <UnrelatedToQaz> hiya all
21:11:37 <UnrelatedToQaz> I have a question about seeds
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:12:25 <UnrelatedToQaz> like the current CPU usage
21:12:32 <UnrelatedToQaz> (that looks fairly random)
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:18:53 <UnrelatedToQaz> thanks all
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:05:19 <RodgerTheGreat> I feel like drawing something. Any ideas/requests?
22:06:19 <AnMaster> http://rage.kuonet.org/~anmaster/tmp/specs.pdf
22:06:26 <AnMaster> anyone want to implement that?
22:06:27 <AnMaster> :D
22:07:18 <oerjan> RodgerTheGreat: dragons. with light sabres. in a ufo.
22:07:33 <RodgerTheGreat> sorry, I'm not feeling it
22:07:50 <oerjan> (slightly calvin & hobbes inspired :)
22:08:20 <RodgerTheGreat> it doesn't really catch my imagination
22:08:34 <RodgerTheGreat> AnMaster: I might if I didn't get a 404
22:08:41 <AnMaster> RodgerTheGreat, hm,
22:08:49 <AnMaster> RodgerTheGreat, I just uploaded a new version
22:08:54 <AnMaster> fixed a typo
22:08:57 <AnMaster> maybe that caused it
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:09:53 <RodgerTheGreat> yeah, no luck here
22:09:53 <AnMaster> no httpd here though
22:10:19 <AnMaster> RodgerTheGreat, 404 really?
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:42 <AnMaster> hmmm
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:19 <AnMaster> :D
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:13:23 <AnMaster> firefox can do gopher
22:13:37 <RodgerTheGreat> x = (-b +/- sqr(b^2 - 4*a*c)) / 2*a ?
22:13:44 <RodgerTheGreat> I use safari
22:13:50 <AnMaster> ouch
22:14:01 <RodgerTheGreat> I like safari. :<
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:28 <AnMaster> as (La)TeX
22:14:38 <AnMaster> would be the two possible answers
22:14:45 <RodgerTheGreat> yeah
22:14:59 <AnMaster> I love how maxima can generate TeX output
22:15:00 <AnMaster> :D
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:16:48 <RodgerTheGreat> what
22:16:55 <AnMaster> RodgerTheGreat, huh?
22:17:00 <AnMaster> fingerprint as for befunge
22:17:08 <AnMaster> a loadable module in befunge
22:17:08 <RodgerTheGreat> I have no idea what you mean by that
22:17:11 <AnMaster> provided by the interpreter
22:17:20 <AnMaster> like a standard library kind of
22:17:24 <AnMaster> Funge98 specific
22:17:24 <RodgerTheGreat> ok
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:27:14 <RodgerTheGreat> very nice writeup
22:27:23 <AnMaster> thanks
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:12 <ehird> i like safari too
22:28:18 <ehird> its more standards compliant than firefox
22:28:21 <ehird> and the rendering is better
22:28:24 <RodgerTheGreat> indeed
22:28:29 <AnMaster> ehird, well I use konqueror
22:28:32 <AnMaster> or lynx
22:28:33 <AnMaster> :)
22:29:17 <ehird> AnMaster: caught ya! Safari is based on KHTML, Konqueror's rendering engine
22:29:19 <AnMaster> also
22:29:24 <AnMaster> it is not a memory hog
22:29:26 <AnMaster> ehird, I know..ö.
22:29:27 <ehird> And the KDE people are merging back in Apple's changes into KHTML
22:29:29 <AnMaster> ...*
22:29:35 <ehird> so don't be insulting the safari!
22:29:39 <AnMaster> I haven't
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:30:57 <AnMaster> adblock is the main one
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:46 <AnMaster> 2. does not have an i in it
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:03 <AnMaster> doesn't have*
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:36 <AnMaster> but they didn't for ages
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:20 <RodgerTheGreat> Apple hasn't sold a single button mouse in years
22:34:31 <AnMaster> they even got the right click menus YEARS before their own mice had more than one button
22:34:41 <AnMaster> Mac OS 9 had right click
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 <RodgerTheGreat> *than yours
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:00 <AnMaster> it was ehird that did
22:36:08 <AnMaster> I just agreed with him
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:48 <lament> right
22:36:56 <RodgerTheGreat> lament: the mighty mouse is what comes standard with macs, and it has 4 buttons
22:37:04 <lament> RodgerTheGreat: oh?
22:37:08 <RodgerTheGreat> yes
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:34 <AnMaster> oerjan, hehehe
22:37:37 <lament> must be a very new thing
22:37:37 <RodgerTheGreat> AnMaster: every mac laptop in YEARS recognizes multitouch
22:37:45 <RodgerTheGreat> tap with two fingers == right click
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:13 <AnMaster> on laptops
22:38:19 <RodgerTheGreat> the only thing that button's even really for is dragging things
22:38:22 <AnMaster> I just mess up with it
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:01 <AnMaster> (a PC thank goodness)
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:39:53 <AnMaster> WAY easier to work with
22:39:55 <AnMaster> for me
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:22 <AnMaster> RodgerTheGreat, well?
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:53:48 <lament> <3 haskell
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:57:51 <lament> no, good point
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:00:26 <lament> err, of pitches
23:01:29 <ehird> [22:50] <lament> ehird: yes, but it coming standard must be new
23:01:30 <ehird> nope
23:01:40 <AnMaster> night
23:01:45 <ehird> AnMaster: the gesture you can use on the laptop is fine
23:01:50 <ehird> see: RodgerTheGreat
23:01:55 <AnMaster> ehird, no, it didn't work
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:01:58 <AnMaster> see what I said above
23:02:02 <AnMaster> <AnMaster> RodgerTheGreat, I used it, and it works horribly for me
23:02:07 <AnMaster> ehird, your point?
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:18 <AnMaster> it is horrible
23:02:21 <ehird> AnMaster: your point is 'i don't like how macs do it'
23:02:28 <AnMaster> ehird, I can't use it
23:02:29 <ehird> not 'mac laptops sux coz they got 1 butan'
23:02:30 <AnMaster> is my point
23:02:34 <ehird> good for you
23:02:43 <AnMaster> ehird, it is not accessible
23:02:59 <AnMaster> that is MY point
23:03:11 <AnMaster> that they lock out potential customers
23:03:12 <AnMaster> night
23:03:39 <ehird> AnMaster: no
23:03:43 <ehird> AnMaster: they lock out YOU
23:03:45 <ehird> everyone else is fine with it
23:03:51 <AnMaster> not really
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:12 <ehird> 'of course'
23:05:13 <ehird> why 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:44 <AnMaster> and no way I will run os x
23:05:53 <AnMaster> I don't want a GUI most of the time
23:05:59 <AnMaster> mostly I work in text only
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:06:59 <oklofok> you got just one finger?
23:07:01 <AnMaster> oklofok, tapping
23:07:07 <AnMaster> on the touch pad
23:07:09 <AnMaster> at all
23:07:13 <oklofok> :|
23:07:21 <oklofok> you retarded? ;P
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:42 <ehird> you can do that.
23:07:49 <ehird> but still
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:53 <oklofok> hmm
23:07:54 <ehird> you don't provide any justification
23:07:58 <oklofok> actually, i did that too on it
23:08:00 <AnMaster> ehird, I did
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:49 <ehird> hehe, eye candy
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:05 <AnMaster> ehird, or rather eye poison
23:09:11 <AnMaster> not eye candy really
23:09:20 <ehird> i repeat my previous statement
23:09:26 <AnMaster> ehird, I have used it quite a bit
23:09:41 <AnMaster> I wish I wouldn't have had to
23:09:49 <AnMaster> ehird, the system was 10.4 Tiger
23:09:49 <oklofok> oses are all the same
23:09:55 * oerjan turned off everything tapping except plain left button selection on his pad. or something like that.
23:10:15 <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:19 <ehird> :p
23:10:20 <oklofok> :O
23:10:22 <oklofok> :DDDDDDDDDDDDD
23:10:22 <AnMaster> because, you couldn't right click
23:10:31 <ehird> oklofok: NOW #ESOTERIC IS NO LONGER BORIIGIIGIGIGNNGNNGG
23:10:31 <AnMaster> ehird, what one?
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:49 <AnMaster> ehird, I loath it
23:10:57 <AnMaster> ehird, just GUI crap
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:13:24 <AnMaster> or opinion
23:13:29 <AnMaster> this sounds VERY familiar
23:13:45 <oklofok> limifaar
23:13:51 <oklofok> that's a cool word
23:13:55 <oklofok> right, fellas?
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:14:45 <AnMaster> nor English?
23:14:54 <oerjan> that's what i thought
23:15:03 <oklofok> it's not swedish or english either, no
23:15:07 <oklofok> and it's not german
23:15:10 <oklofok> and not french
23:15:12 <oerjan> maybe dutch?
23:15:14 <AnMaster> what language?
23:15:16 <oklofok> i'm fairly sure it's not anything
23:15:20 <oklofok> dutch... perhaps
23:15:20 <AnMaster> night
23:15:38 <oklofok> why should everything have a meaning
23:15:58 <oerjan> it's in the Armagan language
23:16:07 <oklofok> is that so?
23:16:13 <oklofok> what's it mean then?
23:16:21 <oerjan> almost certainly
23:16:29 <oklofok> that's the meaning?
23:16:52 <oerjan> it means well-known, or closely related
23:17:14 <oerjan> ;)
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:56 <oerjan> we aim to please.
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:01 <oerjan> you aim too, please.
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:19:38 <oerjan> kickban ehird now.
23:20:11 <oklofok> mi' ont entful ni nel-higs, hoguth
23:20:20 <oerjan> argh
23:20:59 <ehird> oerjan: :D
23:21:27 <oerjan> mi' sa entful sa lli' erve eb, ldi' nkith
23:22:17 <oklofok> li'd?
23:22:31 <oklofok> hwut
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:26:16 <oklofok> ont purgsinsir.
23:28:34 <oerjan> dendei ont.
23:33:07 -!- oerjan has quit ("Ogdo ngith").
23:52:07 -!- olsner has quit ("Leaving").
←2008-04-08 2008-04-09 2008-04-10→ ↑2008 ↑all