←2008-04-11 2008-04-12 2008-04-13→ ↑2008 ↑all
00:00:35 <RodgerTheGreat> GregorR: RodgerTheGreat@gmail.com - it's on my website, too
00:00:55 <GregorR> Only the first line, the rest will be piped into the user.
00:02:26 <pikhq> What the *fuck*?
00:02:42 <ehird> Oh yes, that thing.
00:02:46 <pikhq> Vista's driver model involves *doing AES-128 on the video layer*.
00:02:56 <ehird> GregorR: I can use Procs directly, though, can't I
00:03:17 <GregorR> ehird: Shore *shrugs*
00:04:00 * pikhq wonders if they use PGP on all output from the sound drivers, too. :p
00:06:15 -!- kwertii has quit ("bye").
00:06:19 <ehird> GregorR: Hmm. If I have a Proc object, what can I *do* with it? Specifically, I want to slurp all output.
00:06:26 <ehird> I guess I'll just write my own starter. It doesnt' need to be in ps
00:12:07 -!- kwertii has joined.
00:15:07 <ehird> Okay. Coded the thread. Now to figure out pthreads.
00:19:08 <ehird> phew
00:19:10 <ehird> i think that should work
00:19:19 -!- timotiis has joined.
00:20:11 <lament> *Parser> parse parseChord "" "C7b9#11"
00:20:12 <lament> Right (RootedChord C (fromList [0,1,4,6,7,10]))
00:20:14 <lament> <3
00:20:19 <ehird> GregorR: What's more, it's a compiler option!
00:20:22 <ehird> lament: Yaey.
00:20:25 <ehird> err.
00:20:28 <ehird> Compile-time option.
00:20:32 <ehird> -DWITH_FORTUNE to enable
00:20:44 <lament> i love how if it compiles, it works
00:20:56 <lament> (i'm not sure why it compiles though)
00:22:27 <ehird> lament: yes
00:22:46 <ehird> lament: there's even libraries for HTML generation that make invalid HTML a type-error
00:23:00 <ehird> lament: I've always wanted to make one for XML where you can just write some instances corresponding to the schema
00:23:11 * pikhq loves a lot of the HTML renderers out there. . .
00:23:27 <pikhq> And how *trivial* it is to make valid, well-formed HTML that they can't render.
00:23:32 <pikhq> (or even parse)
00:24:00 <ehird> GregorR: I can't compile EgoBot on this machine because it is linux-specific. D:
00:24:04 <ehird> GregorR: Can you try my changes?
00:24:09 <ehird> pikhq: WebKit! WebKit!
00:24:14 <ehird> (It's open source, so you can't complain.)
00:24:24 <pikhq> KHTML doesn't parse it.
00:24:42 <pikhq> I have yet to find a browser that parses this: http://pikhq.nonlogic.org/test.html
00:24:45 <pikhq> It validates, though.
00:24:57 <ehird> KHTML is NOT WebKit.
00:25:10 <pikhq> I know. I'm not feeling like installing WebKit yet.
00:25:19 <pikhq> Lemme wait unto KDE 4.1.
00:25:25 <pikhq> until, even.
00:25:27 <ehird> pikhq: And suprise, it doesn't work. Guess why? *Nobody* uses short closing tags.
00:25:37 <pikhq> But it's valid and well-formed.
00:25:37 <ehird> And -- shock -- rendering engines are designed to be practical.
00:25:53 <ehird> If they were a platonic, standards-supporting ideal they wouldn't render invalid pages.
00:26:11 <pikhq> Some claim to attempt to be that ideal.
00:26:23 <pikhq> While they can't parse test.html, they fail epically.
00:26:31 <pikhq> epicly, even.
00:26:56 <ehird> None claim to be that ideal.
00:27:06 <ehird> No sane one, anyway.
00:27:15 <ehird> The standards suck, anyway.
00:28:06 <ehird> GregorR: No? :(
00:33:02 <ehird> GregorR: Well, I have a patch if you want it
00:33:08 <pikhq> Well, yeah. That SGML part is a real bitch. ;)
00:33:27 <GregorR> ehird: Remind me tomorrow.
00:35:29 <ehird> GregorR: Aww. I can't even test it locally, y'see.
00:35:38 <GregorR> LOSAH
00:47:58 -!- kwertii has quit ("bye").
00:48:12 -!- kwertii has joined.
00:51:20 <ehird> GregorR: I use a non-Linux system. So yeah.
00:51:51 <pikhq> What do you run?
00:52:25 <pikhq> If it's Windows, install Cygwin. If it's OS X, install the development environment from your install discs.
00:53:36 <pikhq> (insofar as I'm aware, Egobot runs on most POSIX targets)
01:00:17 <ehird> pikhq: It does not. cpkt.
01:00:30 <ehird> Relies on linux headers, elf, all that stuff.
01:00:48 <pikhq> GregorR: How dare you?
01:01:09 <ehird> pikhq: He didn't write cpkt.
01:01:09 <pikhq> Do you do the ELF loading yourself or some such?
01:01:12 <pikhq> Oh.
01:01:16 <ehird> He just uses it to trace the syscalls or.. something.
01:01:23 <ehird> It seems to serialize some state or.. actually I don't know what it does.
01:01:24 * pikhq kicks *cpkt* devs instead. :p
01:01:37 <ehird> Err, pikhq, I don't think it could be portable.
01:01:48 <ehird> It does pretty deep magic to lodge in to the process.
01:01:53 <pikhq> Oh.
01:01:59 <pikhq> *Why*?
01:02:07 <pikhq> Surely there's a good reason.
01:02:08 <ehird> pikhq: Because it's the only way to do... whatever it does.
01:02:22 <ehird> pikhq: aha
01:02:22 <ehird> ckpt - process checkpoint library
01:02:22 <ehird> www.cs.wisc.edu/~zandy/ckpt
01:02:22 <ehird> Copyright (c) 2002-2005 Victor C. Zandy zandy@cs.wisc.edu
01:02:25 <ehird> process checkpointing.
01:02:30 <ehird> totally non-portable in every shape or form
01:02:41 <ehird> pikhq: Basically, it can freeze a running process to disk.
01:02:44 <ehird> Then thaw it out again.
01:03:03 <RodgerTheGreat> GregorR: aw, man- that's terrible!
01:03:14 <RodgerTheGreat> how the fuck do they mess it up that badly?
01:03:49 -!- boily has joined.
01:04:57 <pikhq> Jebus.
01:05:08 <pikhq> I can understand why they have to do such deep magic. . .
01:05:16 <pikhq> But why must *Gregor* use it?
01:05:28 <ehird> pikhq: I think to remember all the definitions made in the esolangs.
01:05:30 <ehird> Between runs.
01:05:40 <ehird> Since they are in a variety of languages
01:05:45 <pikhq> Also, I wonder: can User Mode Linux run on OS X?
01:05:50 <ehird> I don't think s
01:05:51 <ehird> o
01:05:53 <pikhq> I remember some guy getting it to work on Cygwin. . .
01:05:55 <ehird> But I have Parallels and QEMU.
01:06:03 <ehird> So it isn't hard to get Linux up.
01:06:10 <RodgerTheGreat> and pikhq: how the FUCK is that supposed to be valid HTML?
01:06:18 <ehird> RodgerTheGreat: it is valid html
01:06:20 <pikhq> RodgerTheGreat: Read up on SGML.
01:06:22 <ehird> the feature is inherited from SGML
01:06:25 <RodgerTheGreat> I call total bullshit
01:06:28 <pikhq> And run it through the W3C validator.
01:06:36 <ehird> RodgerTheGreat: 'i have never heard of this obscure feature' != 'total bullshit'
01:06:49 <ehird> unfortunately a lot of people have that preconception.
01:06:53 <pikhq> It gives 4 or 5 warnings, saying basically "This is valid, but nobody *supports* it."
01:06:58 -!- olsner has joined.
01:07:06 <pikhq> And then hands me a "Valid HTML4" button.
01:07:08 -!- Iskr has quit ("Leaving").
01:07:43 <RodgerTheGreat> even if it *is* a part of the standard, it's ridiculous. It's unreadable and breaks all the preexisting conventions of the format
01:07:57 <pikhq> No it doesn't.
01:08:05 <pikhq> The preexisting conventions of the format *are* SGML.
01:08:08 <ehird> RodgerTheGreat: You are incredibly idealistic if you think that HTML has conventions.
01:08:11 <ehird> Much less reasonable ones.
01:08:15 <pikhq> Here's a hint: that SGML feature predates HTML.
01:08:19 <ehird> HTML is *unbearably* bad.
01:09:22 <RodgerTheGreat> pikhq: then it's cruft and should be deprecated
01:09:40 <ehird> RodgerTheGreat: most of HTML is cruft
01:09:42 <RodgerTheGreat> In fact, I'd interpret the fact that it's unsupported on sane browsers as deprecation
01:09:58 <ehird> there is no such thing as a sane browser. they must be insane to read most of the html out there.
01:10:14 <pikhq> It's explicitly deprecated in HTML 4.01. But, most of HTML 4.01 *is*.
01:11:40 -!- timotiis has quit (Read error: 110 (Connection timed out)).
01:11:59 <RodgerTheGreat> if it's explicitly deprecated, it isn't valid HTML, ergo my original argument stands.
01:12:34 <RodgerTheGreat> anything that was deprecated and still works is a bonus feature, rather than something you can reasonably test for compliance. Your methodology and argument is flawed.
01:12:53 <ehird> [01:12] <RodgerTheGreat> if it's explicitly deprecated, it isn't valid HTML, ergo my original argument stands.
01:12:54 <ehird> wrong
01:13:01 <ehird> deprecated != invalid
01:13:17 <pikhq> By the same notion, K&R function declarations are invalid C.
01:13:30 <pikhq> (in fact, they're deprecated but *required* by the ISO C spec)
01:13:30 <RodgerTheGreat> and for many practical purposes, they are
01:13:43 -!- boily has quit ("Schtroumpf!").
01:13:44 <ehird> RodgerTheGreat: wow
01:13:46 <ehird> what a load of crap
01:13:55 <ehird> 'invalid' is so far apart from 'practical purposes'
01:14:39 <pikhq> BTW, HTML 4.01 itself is considered deprecated. ;)
01:16:08 <ehird> pikhq: Unfortunately. XHTML is far worse.
01:16:35 <pikhq> True.'
01:16:42 <pikhq> It has some things that are nicer. . .
01:16:47 <pikhq> And an assload of things that are worse.
01:17:04 <ehird> 1. Take horrible markup format rooted in history, arcane things and ad-hoc design. 2. Take *generic* markup format that misused in 90% of cases. 3. Stick them together
01:17:16 <ehird> And before you say 'XHTML 2', *please* don't. That thing is god-awful
01:17:28 <ehird> NOW, there is slightly good news
01:17:31 <pikhq> XML *itself* is SGML-based.
01:17:33 <pikhq> ;)
01:17:41 <ehird> HTML 5 *will be better* than HTML 4.01
01:17:48 <ehird> It won't be perfect because it's mostly backwards compatible.
01:17:53 <ehird> But it *is* relatively sane.
01:17:59 <ehird> Especially the nice, short doctype: <!DOCTYPE html>
01:18:05 <ehird> Sure, that's invalid SGML. Who cares?
01:18:20 <pikhq> Basically, they're dropping the SGML base? Whee.
01:18:50 <Slereah> http://www.roesler-ac.de/wolfram/hello.htm#Intercal <- this does not seem correct
01:18:57 <ehird> pikhq: Yeah.
01:19:17 <ehird> Slereah: it's correct in a perverse way
01:19:26 <ehird> Slereah: errors in programs are printed out by the intercal compiler
01:19:30 <ehird> Slereah: at runtime
01:19:38 <Slereah> :O
01:19:40 <ehird> and 'NOT' makes a statement not executed unless explicitly enabled
01:19:44 <ehird> Of course, that is a total cheat.
01:19:56 <Slereah> Yes, but an awesome cheat
01:19:59 <ehird> pikhq: What I think is the minimal HTML 5 document: <!DOCTYPE html><html><p>Hello, world!</p></html>
01:20:21 <pikhq> Hmm. Sane.
01:20:23 <ehird> pikhq: The reason why it is quite decent is twofold:
01:20:28 <pikhq> Requiring container tags? Glee!
01:20:43 <ehird> 1. The W3C didn't get their paws on it until it was almost done
01:20:46 * pikhq shudders at the <p> tag
01:20:51 <ehird> 2. The WHATWG did it before that. The WHATWG are clever.
01:20:52 <pikhq> Well, in traditional HTML.
01:21:05 <ehird> 3. Ian Hixie did lots of work on it because he is in the WHATWG. Ian Hixie is *very* clever, and sane.
01:21:11 <ehird> So threefold!
01:21:17 <ehird> pikhq: You might be able to drop the <p>s.
01:21:33 <ehird> But <p> isn't too bad.
01:21:39 <ehird> Semantically it makes sense.
01:21:49 <ehird> And having some text in the root and others in elements is a bad weird.
01:21:50 <ehird> But meh.
01:22:41 <pikhq> My problem with <p> is how it acts in HTML 4.01 and below, actually.
01:22:48 <pikhq> Specifically, it doesn't need to be closed.
01:22:52 <Slereah> http://www.roesler-ac.de/wolfram/hello.htm#Pocket-Calculator
01:22:57 <ehird> pikhq: Ah, yes. That thing.
01:23:03 <ehird> I'm not sure if that's still in HTML 5.
01:23:04 <Slereah> With this technique, you cal also write "HELLO BOOB"
01:23:17 <ehird> HTML 5 is certainly lenient.
01:23:28 <ehird> So it retains a lot of HTML's quirks.
01:23:35 <ehird> But on the *overall*, it's sane.
01:53:40 -!- ehird has quit ("This computer has gone to sleep").
04:01:01 -!- Judofyr_ has joined.
04:01:01 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)).
04:04:01 -!- Deformative has quit (Remote closed the connection).
04:05:01 -!- Deformative has joined.
04:05:37 -!- Deformative has quit (Remote closed the connection).
04:06:16 -!- Deformative has joined.
05:11:04 -!- RodgerTheGreat has quit.
05:11:11 -!- RodgerTheGreat has joined.
05:11:25 -!- RodgerTheGreat has quit (Client Quit).
05:53:35 -!- cmeme has quit ("Client terminated by server").
05:53:46 -!- cmeme has joined.
05:57:37 -!- sebbu2 has joined.
06:15:05 -!- sebbu has quit (Read error: 110 (Connection timed out)).
06:40:14 -!- Sgeo has quit ("Ex-Chat").
07:35:33 -!- oklopol has joined.
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:03:47 -!- adu has joined.
08:33:03 -!- kwertii_ has joined.
08:38:41 -!- kwertii_ has quit ("bye").
08:49:05 -!- kwertii has quit (Read error: 113 (No route to host)).
09:08:18 -!- oklopol has quit (Read error: 113 (No route to host)).
09:14:21 -!- oerjan has joined.
09:17:39 -!- Iskr has joined.
09:36:24 -!- oklopol has joined.
09:36:30 -!- oklopol has quit (Remote closed the connection).
09:36:42 -!- oklopol has joined.
10:08:12 -!- adu has quit ("Bye").
10:15:53 -!- oerjan has quit ("leaving").
11:11:50 -!- oklofok has joined.
11:12:43 -!- oklopol has quit (Read error: 113 (No route to host)).
11:21:58 -!- Slereah has quit (Read error: 110 (Connection timed out)).
11:23:43 -!- Slereah has joined.
11:33:08 -!- oklofok has quit (Read error: 104 (Connection reset by peer)).
11:33:24 -!- oklopol has joined.
11:42:43 -!- timotiis has joined.
13:21:07 -!- pikhq has quit (Remote closed the connection).
13:21:22 -!- pikhq has joined.
13:48:21 -!- Judofyr has joined.
13:48:21 -!- Judofyr_ has quit (Read error: 104 (Connection reset by peer)).
14:07:00 -!- oklopol has quit (Read error: 113 (No route to host)).
15:01:01 -!- oklopol has joined.
15:12:10 -!- ehird has joined.
15:38:04 <SimonRC> logo FAIL: http://www.harveyshopfitters.co.uk/images/menu_01.gif
15:40:15 <oklopol> ehird: that cons cell you created, can i include that with your nick/name in my oklotalk report? would be cool to have something like "user experiences" :D
15:40:57 <oklopol> more impressive if *others* can do something with it than if i can.
15:42:08 <ehird> oklopol: brb, with you in a sec
15:42:09 <ehird> and yes
15:42:13 <ehird> i wanna code some more though too
15:42:14 <ehird> :D
15:42:26 <ehird> but for the record, if you didn't know, my name is elliott hird
15:42:32 <ehird> and please don't get the wrong number of ls and ts
15:42:34 <oklopol> :D
15:42:41 <oklopol> hey, i've always known it.
15:43:25 <oklopol> would be awesome if you did something, i'm trying to get people to write me an stdlib :)
15:43:32 <oklopol> not many are that interested to :O
15:43:59 <oklopol> it's not that i'm too lazy to do it, just that it's a bit useless if i do it
15:44:38 <oklopol> because of course i can do it trivially... well, you too, but i'm also trying to get normal people to write something with it.
15:44:53 <oklopol> normal coders that is
15:44:54 <AnMaster> SimonRC, hm?
15:45:11 <AnMaster> SimonRC, yes I read it has "shoplifter" first time
15:45:15 <oklopol> naturally i consider #eso guys a few grades up :D
15:45:34 <oklopol> AnMaster: that's not the point, although i did too
15:45:55 <AnMaster> what's the point then?
15:46:03 <oklopol> :|
15:46:28 <oklopol> logo
15:46:35 <oklopol> see people in it.
15:46:38 <AnMaster> it's a boring logo yes, but boring logos with symbols meaning nothing is rather common
15:47:10 <AnMaster> err what?
15:47:26 <AnMaster> yeah could be a person using some kind of tool
15:47:30 <oklopol> it's doggie style, receiver laying down
15:47:36 <oklopol> *lying
15:47:36 <AnMaster> ...
15:47:37 <oklopol> err
15:47:42 <oklopol> english is too hard
15:47:44 <AnMaster> oklopol, you know this qualifies as "inkblot"....
15:47:51 <oklopol> no it doesn't
15:48:14 <AnMaster> pervertness then?
15:48:21 <AnMaster> or at least dirty minded
15:49:24 <oklopol> well, you know, i'm male
15:50:41 <AnMaster> so am I, and?
15:50:59 <AnMaster> and I don't think about such things all the time
15:51:40 -!- timotiis has quit (Read error: 110 (Connection timed out)).
15:53:08 <oklopol> well i do admit i'm a sick pervert, but i'm 100% sure that logo can only be conceived as a sex act
15:54:12 <AnMaster> oklopol, to me it looks like a person using a "slipmaskin" don't know English word for it
15:54:40 <SimonRC> oklopol: looks like front-to-front to me
15:55:07 <AnMaster> a handheld device that you put a paper (that got sand glued to it) on. then you use the device to make wood smooth
15:55:11 <AnMaster> what's the English word?
15:55:12 <oklopol> ironing board or smth?
15:55:20 <SimonRC> no
15:55:23 <SimonRC> sander?>
15:55:33 <AnMaster> <oklopol> ironing board or smth? <-- that would be making clothes flat
15:55:45 <oklopol> yarr...
15:55:51 <AnMaster> if you confuse them your clothes would looks very bad
15:55:54 <oklopol> i didn't know what slip was
15:55:59 <AnMaster> very important to not confuse them
15:56:08 <AnMaster> oklopol, well slip in Swedish can be other stuff too
15:56:13 <AnMaster> SimonRC, possibly
15:56:31 <AnMaster> oklopol, something to do with boats I think the other meaning is
15:56:38 <AnMaster> (I'm no boat expert)
15:57:23 <AnMaster> SimonRC, anyway google images to the rescue: http://www.fynda.se/bilder/londa_slipmaskin_ld1211.jpg
15:57:52 <oklopol> anyway, SimonRC: well, the hands seem to be on the receiver, so i would've said doggie
15:57:59 <oklopol> but stick figures, so go figure
15:58:50 <oklopol> i'm pretty sure sander was right
15:58:55 <oklopol> hmm
15:59:02 <oklopol> or is that like a hone or smth
15:59:02 <AnMaster> why not mail the company and ask which one it is
15:59:07 <AnMaster> I'm sure they would *love* it
15:59:10 * AnMaster runs
15:59:12 <oklopol> i don't really know this stuff even in finnish
16:00:42 <AnMaster> oklopol, well slipmaskin can be for other materials than wood, for example metal
16:00:54 <AnMaster> but it seems that "sander" is correct
16:01:19 <ehird> that is definately a sexual act.
16:01:19 <ehird> :p
16:01:26 <ehird> anyhoo
16:01:39 <oklopol> definitely
16:01:41 <ehird> oklopol: soo i'll write some more okocode if you put otobot in here, or give me an oklotalk interpreter
16:01:45 <oklopol> hehe
16:01:53 <oklopol> i'll put it up :-)
16:01:56 <ehird> also, if you give me an oklotalk interpreter, i'll even write a special testimonial
16:02:10 <ehird> to put in the Report on the Algorithmic Programming Language Oklotalk
16:02:15 <oklopol> haha
16:02:22 <oklopol> i can give you the compiled version.
16:02:41 <ehird> oklopol: i'm on a mac
16:02:45 <ehird> so that would be thoroughly unhelpful
16:03:16 <oklopol> compiled into pyc, man
16:03:48 <ehird> meh
16:03:50 <ehird> endianness
16:03:52 <ehird> or something
16:03:54 <ehird> :P
16:04:07 <ehird> oklopol: i'll add an awesome REPL
16:04:09 <ehird> and send you a patch
16:04:09 <ehird> :D
16:04:13 <ehird> oh
16:04:16 <ehird> and a debugger
16:04:25 <ehird> and maybe add continuations
16:04:33 <AnMaster> oklopol, I want to see it too so I can see how it works
16:04:38 <AnMaster> then I may help writing some code
16:04:57 <ehird> AnMaster: oklopol's python code uses 1-2 letter variables names and has no comments
16:04:58 <ehird> and little whitespace
16:05:03 <ehird> it is only for the hardened obfuscated python editor
16:05:09 <oklopol> there is an awesome repl already
16:05:17 <oklopol> well not awesome, but somewhat working
16:05:18 <AnMaster> "hardened obfuscated python editor"?
16:05:38 <ehird> AnMaster: you need to be really good at editing dense, obfuscated python
16:05:51 <AnMaster> well count me out then
16:05:51 <ehird> oklopol: i will add history that is stored across sesssions, completion, brace matching..
16:05:57 <ehird> :D
16:06:00 <oklopol> AnMaster: (hardened ((obfuscated python) editor)) for the parse tree
16:06:06 <ehird> and the debugger and continuation stuff, of course
16:06:11 <AnMaster> oklopol, I suggest you make your code more readable if what ehird said is true
16:06:29 <ehird> AnMaster: he likes it that way
16:06:30 <ehird> i do too
16:06:43 <AnMaster> oklopol, try something like literate programming, just for a change
16:06:53 <oklopol> it's hard to read code with comments imo :)
16:06:54 <ehird> eww
16:06:56 <ehird> literate programming
16:06:57 <AnMaster> (though IMO that is going too far in the other direction)
16:07:06 <oklopol> and the shorter the easier to read :)
16:07:06 <AnMaster> but maybe they will cancel out?
16:07:08 <ehird> oklopol: yeah, comments are mostly useless.
16:07:10 <ehird> but..
16:07:12 <ehird> a few of them is alright
16:07:18 <AnMaster> and you will end up with something usable
16:07:24 <ehird> like, instead of # loop through all elements in the array and xor them into the checksum, resulting in a floob
16:07:25 <ehird> do
16:07:25 <oklopol> well, good comments that just specify stuff like interfaces, can be very nice
16:07:31 <ehird> comments above the function
16:07:31 <oklopol> so you can just take a quick glance
16:07:34 <ehird> about what it does
16:07:36 <ehird> not how
16:07:37 <ehird> like
16:07:44 <ehird> # provides a checksum used as a floob
16:07:53 <ehird> but most of the time good code is self-explanatory
16:07:57 <ehird> comments can be misleading
16:08:06 <AnMaster> good variable names too
16:08:08 <ehird> they make it easier for someone who doesn't *really* understand the source code to try and edit it
16:08:11 <ehird> often messing up things subtly
16:08:16 <oklopol> well i have a few comments, but they are mostly useful for myself :P
16:08:22 <ehird> also, comments are very hard to keep up to date
16:08:35 <oklopol> indeed.
16:08:36 <AnMaster> ehird, I agree you shouldn't overdo comments
16:09:01 <AnMaster> but you could use good variable and function names
16:09:09 <oklopol> ehird: i might let you play with my implementation once i've submitted it
16:09:12 <ehird> AnMaster: there's a problem with all that: writing oko-python is fun
16:09:26 <AnMaster> ehird, ie, single char ones like i and j should be used for looping nothing else
16:09:30 <ehird> fuck readability and maintainability, it's fun
16:09:35 <SimonRC> dense code helps you get more on the screen
16:09:40 <AnMaster> well x and y are ok if you are doing co-ordinates
16:09:55 <AnMaster> SimonRC, agreed, but good variable names is still important
16:09:59 <AnMaster> very important
16:10:08 <ehird> AnMaster: you like to stare at code like a work of art
16:10:12 <SimonRC> there is a definite maintainability drop as code goes beyond one screenful
16:10:15 <ehird> i like to have fun when writing it
16:10:21 <ehird> SimonRC++
16:10:26 <AnMaster> SimonRC, yes that is why you split functions
16:10:31 <ehird> oklopol: well, ok, give me the pyc
16:10:32 <AnMaster> and mark them as "inline"
16:10:36 <SimonRC> no
16:10:46 <ehird> AnMaster: that is not the point
16:10:48 <AnMaster> making the code modular is good
16:10:57 <SimonRC> I meant there is a definite mainatainability drop as the length of the program goes over one screenful
16:11:05 <ehird> exactly
16:11:11 <AnMaster> ehird, still how much do you save writing "int a" instead of "int sum"
16:11:12 <ehird> instead of making the current code easy to understand
16:11:19 <ehird> think of a shorter, more self-describing way to express it
16:11:22 <ehird> a far better use of time
16:11:28 <SimonRC> macros, lots of macros
16:11:31 <AnMaster> ehird, as a variable name
16:11:36 <ehird> AnMaster: well, you use a language that doesn't require stupidly verbose type declarations
16:11:39 <ehird> so that becomes ''
16:11:41 <ehird> and you just use a.
16:11:47 <ehird> AnMaster: however, in the case of C
16:11:52 <ehird> AnMaster: please read K&R
16:12:00 <AnMaster> ehird, even then calling the variable sum is better
16:12:02 <ehird> their style is *exemplary* C
16:12:08 <SimonRC> one- and two- letter variable names help you get most functions on to 1 or 2 lines
16:12:10 <ehird> and is very short, concise, uses mostly 1-char variable names,
16:12:12 <AnMaster> SimonRC, macors do have their place yes, but again it is easy to overdo it
16:12:17 <ehird> and tries to keep things about one screenful
16:12:21 <ehird> AnMaster: and how can you argue with K&R?
16:12:25 <oklopol> this is just imo, but usually, if a variable can have a very simple name without being misleading, you are doing a conceptually trivial thing much too verbosely... but i'm prolly wrong, no need to tell me that.
16:12:34 <ehird> oklopol: yes!
16:12:37 <ehird> you're right
16:12:38 <AnMaster> ehird, because it is not available as a free pdf
16:12:39 <oklopol> you agree?
16:12:42 <AnMaster> afaik
16:12:42 <oklopol> niec.
16:12:55 <ehird> AnMaster: HAHAHAHAHA
16:13:00 <ehird> that is the funniest thing i've heard all day
16:13:07 <AnMaster> ehird, so I haven't read it
16:13:09 <SimonRC> also, document the datastructures, not the functions
16:13:15 <AnMaster> SimonRC, yes very true
16:13:17 <SimonRC> the former is rather more helpful
16:13:29 <ehird> I bet AnMaster would complain about K&Rs style if he read it.
16:13:37 <ehird> 'how can they make their code so OBFUSCATED'
16:13:42 <ehird> 'these people's C is horrible'
16:13:45 <AnMaster> SimonRC, however something like a one line comment above the prototype in the header file is useful
16:13:55 <SimonRC> for example, that prototype J interpreter is easy to read once you know what the datastructures are
16:13:57 <AnMaster> SimonRC, and if a library for others to use: much more
16:14:02 <AnMaster> on the public funtions
16:14:08 <SimonRC> AnMaster: yes, and probably yes
16:14:13 <ehird> SimonRC: yes, that prototype J interpreter is actually quite simple when you read it
16:14:39 <ehird> the immediate shock reaction is very telling of the bad assumptions programmers make
16:14:51 <AnMaster> SimonRC, would you like the man page for fopen to say: "opens a file, read source to see what the parameters are for and what the valid values for the mode parameter is"
16:14:53 <ehird> if you understand some code immediately because it has tons of comments and all that
16:14:56 <ehird> you probably understand it wrong
16:14:59 <AnMaster> that question is to ehird too
16:14:59 <ehird> and editing it is dangerous
16:15:04 <ehird> with a more concise style, you learn the code
16:15:10 <ehird> and then you learn it PROPERLY, and editing is easier
16:15:28 <ehird> AnMaster: that is a totally irrelevant question
16:15:37 <AnMaster> ehird, oh? it is code documentation
16:15:41 <AnMaster> in a way
16:15:53 <ehird> AnMaster: totally stupid attempt to clutch at straws
16:15:55 <ehird> :|
16:16:04 <AnMaster> ehird, how do you mean?
16:16:09 <SimonRC> hmm
16:16:13 <ehird> AnMaster: run this for me
16:16:15 <ehird> 'man fopen|wc -l'
16:16:35 <AnMaster> 124 on freebsd
16:16:46 <ehird> ditto here. do you know how long the gnu version is?
16:16:53 <ehird> it's god-awful
16:16:57 <AnMaster> ehird, yes, 130 lines
16:17:03 <AnMaster> so 6 more
16:17:04 <ehird> AnMaster: that must be an old version
16:17:05 <AnMaster> I checked
16:17:12 <ehird> but anyway, the gnu version *tells you less*
16:17:15 <ehird> the bsd writing style is better
16:17:21 <ehird> more concise, and more information packed
16:17:28 <AnMaster> ehird, I agree freebsd got better man pages
16:17:29 <ehird> 124 is a bit excessive, it's got bigger over the years
16:17:30 <ehird> BUT!
16:17:33 <ehird> if you read the manpage
16:17:41 <ehird> a LOT of it is stuff to do with standards compliance
16:17:45 <ehird> and historical stuff
16:17:50 <ehird> when writing a new app, normally that doesn't apply
16:17:53 <AnMaster> ehird, yes I fully agree about comments
16:18:08 <ehird> SO, if fopen was new and written today
16:18:12 <AnMaster> ehird, if you look in cfunge source you won't find a lot of comments, mostly something like "this function does foo"
16:18:14 <AnMaster> or such
16:18:15 <ehird> a good manpage would be much shorter
16:18:22 <AnMaster> + the gpl header in each file
16:18:24 <AnMaster> that is about all
16:18:31 <ehird> AnMaster: license headers in each file is so horrid
16:18:32 <ehird> i hate it
16:18:34 <ehird> so redundant
16:18:37 <ehird> but
16:18:41 <ehird> 'this function does foo'
16:18:42 <ehird> i suggest
16:18:42 <ehird> 'foo'
16:18:44 <ehird> instead of
16:18:52 <ehird> 'This function calculates the checksum of s'
16:18:53 <ehird> try
16:18:56 <ehird> 'Calculate the checksum of s'
16:19:06 <AnMaster> ehird, you said a lot in fopen man page was about standard
16:19:07 <AnMaster> wrong
16:19:21 <AnMaster> 4 lines are
16:19:21 <ehird> AnMaster: looks like it to me
16:19:24 <ehird> oklopol: .pyc plz?
16:19:29 <ehird> you can dcc it
16:19:33 <oklopol> oh righ.
16:19:34 <oklopol> t
16:19:35 <AnMaster> ehird, however man fopen is about three functions
16:19:42 <AnMaster> FOPEN(3) FreeBSD Library Functions Manual FOPEN(3)
16:19:42 <AnMaster> NAME
16:19:42 <AnMaster> fopen, fdopen, freopen -- stream open functions
16:19:44 <AnMaster> they share man page
16:19:52 <ehird> AnMaster: yes, I don't like man(1) anyway
16:19:54 <oklopol> you also get the spec wannabe, so comments on that too
16:20:00 <AnMaster> ehird, want info *runs*
16:20:01 <ehird> for documenting functions i prefer tools that extract stuff out of the source
16:20:05 <ehird> basically
16:20:11 <ehird> documentation should be as close as possible to the thing it documents
16:20:14 <AnMaster> ehird, well gnu info is worse
16:20:14 <SimonRC> yup
16:20:17 <ehird> otherwise it has a far higher chance of being irrelevant
16:20:18 <ehird> or out of date
16:20:23 <SimonRC> ehird: yup * 2
16:20:34 <AnMaster> ehird, well you could use something like doxygen then
16:20:36 <ehird> SimonRC: :)
16:20:41 <ehird> AnMaster: doxygen's a bad exampl
16:20:41 <ehird> e
16:20:42 <AnMaster> but if you use that, I just say eww
16:20:43 <SimonRC> Sun got that mostly right, with JavaDoc
16:20:46 <AnMaster> it's TOO verbose
16:20:50 <ehird> yes, doxygen sucks
16:20:56 <oklopol> ehird: cli is the repl
16:20:58 <AnMaster> good idea, bad implementation
16:21:01 <ehird> but the idea is alright
16:21:02 <oklopol> it seems it's not coming
16:21:06 <AnMaster> exactly
16:21:07 <ehird> oklopol: ?
16:21:13 <ehird> okay
16:21:13 <oklopol> hmm
16:21:15 <ehird> upload it somewhere
16:21:19 <oklopol> perhaps i'm not identified
16:21:19 <ehird> and send the url to me
16:21:21 <ehird> ah
16:21:23 <ehird> i'm not
16:21:26 <ehird> now i am
16:21:35 <AnMaster> ehird, auto generated man pages then?
16:21:47 <AnMaster> ehird, there is a gnu tool that can auto generate a man page from --help output
16:21:52 <AnMaster> help2man I think the name is
16:22:07 <SimonRC> Forth traditionally has one "screen" of pure comments for each "screen" of code.
16:22:15 <AnMaster> you need to give it some options to make sure it doesn't add the "see info page for more" crap
16:22:22 <AnMaster> but it isn't too bad with the right options
16:22:35 <ehird> oklopol: trying to figure out how to accept that
16:22:36 <ehird> :--)
16:22:43 <SimonRC> in text files, just have half of the line for comment and half for code I suppose
16:22:45 <oklopol> heh
16:23:04 <AnMaster> SimonRC, nah, too much comments, usually I need way less
16:23:05 <ehird> I really need to get a place to put my thoughts on code
16:23:16 <ehird> then i can point them to it
16:23:20 <ehird> instead of wording it badly on irc
16:23:31 <AnMaster> however: the more obfuscated the code, the more comments needed
16:23:38 <AnMaster> so it is better to give usable variable names
16:23:50 <oklopol> ehird: cli.pyc is a repl, and if you want to do something with context, oklotalk.pyc has a Runner class, which can .run() code, and stores context... and oklotalk.run() runs code
16:24:06 <AnMaster> oklopol, what is a "repl"?
16:24:11 <ehird> AnMaster: read/eval/print/loop
16:24:12 <oklopol> read-eval-print-loop
16:24:14 <AnMaster> ah
16:24:16 <AnMaster> right
16:24:20 <oklopol> damn ehird and his divine typing skills
16:24:27 <ehird> in concatenative languages you can express it almost exactly like that
16:24:37 <ehird> DEFINE loop = read eval print loop.
16:24:45 <AnMaster> mhm
16:24:54 <ehird> (loop (print (eval (read)))), is, of course, ridiculous
16:24:55 <ehird> :-)
16:25:12 <AnMaster> eh?
16:25:26 <AnMaster> isn't that the same in "lispy" syntax?
16:25:55 <ehird> yes
16:25:55 <oklopol> sexps
16:26:00 <ehird> its totally backwards
16:26:02 <ehird> :)
16:26:41 <oklopol> in concisative languages, you can write it as readevalprintloop
16:26:51 <oklopol> cise does this easily
16:26:57 <oklopol> it owns so bad
16:27:01 <oklopol> i gotta get on it soon
16:27:08 <oklopol> hmm
16:27:08 <ehird> oklopol: or rather - 'in ambigious languages'
16:27:09 <oklopol> oh, right
16:27:14 <oklopol> the send failed
16:27:14 <ehird> specifically, parsing cise is turing complete
16:27:21 <SimonRC> hehehe
16:27:22 <ehird> you need to know the definitions to parse it properly
16:27:23 <SimonRC> lol
16:27:25 -!- jix has joined.
16:27:29 <oklopol> ehird: no
16:27:31 <ehird> oklopol: yes
16:27:35 <oklopol> no.
16:27:40 <ehird> 'readevalprintloop' could be 're adev alpri ntlo op'
16:27:58 <oklopol> the magic is that you need to have those defined already.
16:28:20 <ehird> yes, oklopol
16:28:23 <oklopol> you need to have explicit tokenization somewhere in file
16:28:24 <ehird> so it is decided at runtime
16:28:26 <ehird> oh
16:28:28 <ehird> i see
16:28:32 <ehird> so if i use stuff from a library
16:28:34 <ehird> i have to specify which ones
16:28:37 <ehird> so it can parse it right
16:28:40 <ehird> won't that be verbose?
16:29:10 <oklopol> specify which ones?
16:29:18 <ehird> oklopol: imagine this
16:29:25 <ehird> 'import foolib; readevalprintloop'
16:29:31 <ehird> foolib could have 're', 'adev' etc
16:29:36 <ehird> you would have to scan foolib, i guses
16:29:37 <ehird> *guess
16:30:04 <oklopol> well yes, but i do not have all parsing rules done yet.
16:30:19 <oklopol> all i know is i'll choose something that makes sense
16:30:42 <oklopol> cise isn't at all ready yet
16:30:55 <oklopol> hmm
16:30:59 <oklopol> i'll up the interp btw
16:36:06 <oklopol> ehird: ping
16:36:09 <oklopol> ehird: pingu
16:41:14 <ehird> back
16:41:24 <ehird> downloading
16:41:32 <oklopol> okies
16:41:54 <ehird> oklopol: i guess now i'll decompile it
16:41:54 <ehird> :D
16:41:59 <oklopol> :D
16:42:12 <oklopol> that wouldn't be very fair, now would it
16:42:19 <ehird> it wouldn't be readable for one thing
16:42:35 <oklopol> python bytecode would be fun to learn
16:42:42 <ehird> The only other documented tester of Oklotalk-- is Elliott hird, who implemented a synthetic lisp style cons cell in pure Oklotalk. This was done based on solely the rational number example, implying the language can be picked up in an instance given a basic knowledge of the concepts involved.
16:42:43 <ehird> :D
16:42:47 <oklopol> it's very high-level, i'm prettu sure you could
16:42:54 <oklopol> :D
16:43:02 <oklopol> well didn't you pretty much do that?
16:43:15 <oklopol> or did i explain much :D
16:43:26 <ehird> yes
16:43:27 <ehird> i did
16:43:27 <ehird> :p
16:43:30 <oklopol> yarr
16:43:39 <oklopol> Hird
16:43:44 <oklopol> i *did* fail your name
16:43:48 <ehird> haha
16:43:51 <ehird> credit me as 'ehird'
16:43:57 <ehird> it's 1337++
16:44:08 <ehird> To be exact, also integers, strings and lists are things, but "thing" refers to user-created things (the "{...}" ones) in this document. Atoms aren't, in Oklotalk--, due to their special call behavior.
16:44:22 <ehird> things are things except when they're not
16:44:23 <oklopol> that's true for this version
16:44:24 <ehird> and you can have things
16:44:27 <ehird> which are not like the other things
16:44:29 <oklopol> :D
16:44:57 <oklopol> i put alot of thought into finding a good name for 'em :-)
16:45:05 <ehird> oklopol: how about 'responder'
16:45:09 <ehird> :D
16:45:12 <oklopol> haha :d
16:45:13 <oklopol> :D
16:45:16 <ehird> for Oklotalk, of course.
16:45:20 <ehird> oklotalk-- is set in stone too much :P
16:45:36 <ehird> oklopol: oh and i came up with a little 'syntaxful' oklotalk-- variation
16:45:42 <oklopol> do tell
16:45:42 <ehird> gonna rewrite my cons cell with it
16:46:07 <ehird> oklopol: hey, i just noticed something
16:46:11 <ehird> oklotalk doesn't need comments
16:46:13 <ehird> just use
16:46:13 <ehird> "strings"
16:47:36 <ehird> oklopol: http://pb.vjn.fi/p641631565.txt
16:47:37 <oklopol> yes.
16:47:42 <ehird> i have many more ideas for the syntax
16:47:49 <ehird> but that's just adding one or two niceties
16:47:51 <ehird> i like it
16:48:02 <oklopol> well, the thing is, "comments" are in fact just another kind of string.
16:48:11 <ehird> oklopol: well yeah
16:48:14 <ehird> but anyhoo
16:48:16 <ehird> my example
16:48:16 <ehird> :D
16:48:19 <oklopol> this is actual oklotalk ofc
16:48:39 <oklopol> yarr i thought of that too, acttually
16:48:41 <oklopol> actually
16:48:55 <oklopol> might be nice
16:49:12 <ehird> oklopol: yeah
16:49:14 <ehird> basically
16:49:20 <ehird> it's just adding infix stuff
16:49:21 <ehird> but
16:49:25 <ehird> the thing that makes it special is my indentation style
16:49:32 <ehird> try and read this
16:49:32 <ehird> (= cons {(-> [h t] {(-> [$pb :] [h t]) (-> $car h) (-> $cdr t) (-> [$setcar h] h) (-> [$setcdr t] t) (-> [$! 0] h) (-> [$! n] (! t (- n 1))) (-> $length (+ 1 (length t)))})})
16:49:35 <ehird> even if you add newlines
16:49:36 <oklopol> well i meant the indentation actually.
16:49:37 <ehird> it's still hard to read
16:49:44 <ehird> but my style combined with the indentaiton
16:49:50 <ehird> makes it nice and trivial
16:49:58 <oklopol> well i read it quite easily, but indeed, some might not
16:50:12 <oklopol> yarr, i meant i thought of *the indentation style*
16:50:17 <ehird> yeah
16:50:17 <ehird> :)
16:50:29 <oklopol> i assumed infix was just automatic because... well, it usually is
16:50:33 <oklopol> i mean
16:50:37 <oklopol> for single statements
16:50:50 <oklopol> i'm also pondering whether i should add precedence to oklotalk, still
16:51:54 <ehird> oklopol: you should only add precedence when you write programs
16:51:58 <ehird> and see where parens crop up
16:52:00 <ehird> parens are evil
16:52:06 <ehird> oklopol: actually
16:52:11 <ehird> i've always wanted to do a language where
16:52:13 <ehird> 2*3 + 4
16:52:14 <ehird> and
16:52:17 <ehird> 2 * 3+4
16:52:19 <oklopol> graphica!
16:52:20 <ehird> parse like you would expect
16:52:23 <ehird> :D
16:52:26 <oklopol> i've come up with that too :)
16:52:38 <AnMaster> <ehird> yes
16:52:38 <AnMaster> <oklopol> sexps
16:52:38 <AnMaster> <ehird> its totally backwards
16:52:43 <ehird> oklopol: but what about multiple spaces
16:52:44 <AnMaster> well xml is worse
16:52:50 <ehird> 2 * 3+4 / 2 * 3+4
16:52:52 <oklopol> ehird: well, graphica isn't exactly that
16:52:56 <ehird> totally epical
16:52:57 <AnMaster> S-Expressions > xml
16:52:59 <ehird> yes, epical
16:53:02 <oklopol> is't sexps + infix if no spaces
16:53:09 <ehird> AnMaster: no the repl is backawrds
16:53:11 <oklopol> but, same basic idea
16:53:14 <ehird> *backwards
16:53:15 <oklopol> *it's
16:53:24 <AnMaster> ehird, I prefer RPN too
16:53:28 <AnMaster> ;P
16:53:36 <ehird> AnMaster: i just like concatenative languages
16:53:36 <oklopol> ...rpn? :O
16:53:39 <ehird> not just for the RPN
16:53:42 <ehird> oklopol: okorpn
16:54:02 <AnMaster> befunge is more or less RPN
16:54:02 <ehird> {$f [$pb :] ->; ...} = cons
16:54:02 <ehird> heh
16:54:08 <ehird> AnMaster: but not concatenative
16:54:20 <AnMaster> how do you push 20 on the stack? a2* would work in funge98
16:54:37 <oklopol> AnMaster: do you know concatenativity?
16:55:11 <AnMaster> oklopol, I know the word and I know forth is such a language
16:55:15 <ehird> concatenativity is RPN jesus
16:55:18 <AnMaster> but not the details indeed
16:55:19 <oklopol> the idea is that if you're point-free (meaning no variables -> no scope), you can just combine functions by combining their sources
16:55:20 <ehird> AnMaster: forth isn't concatenative
16:55:22 <ehird> really
16:55:23 <AnMaster> hm
16:55:26 <ehird> but here is the definition
16:55:33 <oklopol> i mean
16:55:34 <ehird> in applicative languages, the invisible space operator is application
16:55:35 <ehird> foo bar
16:55:36 <ehird> is foo(bar)
16:55:38 <oklopol> concatenating their sources
16:55:44 <ehird> in concatenative languages, the invisible space operator is composition
16:55:45 <AnMaster> ehird, yes right
16:55:45 <ehird> foo bar
16:55:46 <ehird> is foo . bar
16:55:48 <ehird> well
16:55:52 <ehird> pretty much
16:55:52 <AnMaster> means bash is a applicative language
16:55:55 <ehird> err
16:55:58 <ehird> no it isn't
16:56:01 <ehird> oh
16:56:01 <ehird> yes
16:56:02 <ehird> kind of
16:56:07 <AnMaster> myfunction argument
16:56:07 <ehird> a weird kind of applicative languages
16:56:08 <ehird> :-)
16:56:09 <ehird> but
16:56:14 <ehird> the cool thing about concatenative languages
16:56:18 <ehird> is that because space = composition
16:56:26 <ehird> putting two valid programs together is their composition
16:56:28 <AnMaster> so what is foo . bar
16:56:28 <AnMaster> then
16:56:34 <AnMaster> in C syntax
16:56:37 <ehird> AnMaster: foo . bar is \x -> bar (foo x)
16:56:40 <ehird> you can't express it in c
16:56:42 <ehird> it doesn't have closurse
16:56:51 <AnMaster> ehird, well then you can't express it so I get it :P
16:56:52 <ehird> well, actually that's bar . foo
16:56:58 <ehird> but concatenative languages use it like that
16:57:02 <ehird> AnMaster: basically
16:57:07 <ehird> in 'foo . bar'
16:57:10 <ehird> is a function:
16:57:13 <AnMaster> hm
16:57:16 <ehird> (x) { return foo(bar(x));}
16:57:24 <AnMaster> ok
16:57:24 <ehird> in concatenative languages, 'foo bar' is 'bar . foo'
16:57:29 <ehird> and
16:57:30 <ehird> '2'
16:57:33 <ehird> is a function pushing 2
16:57:40 <ehird> then you have [...] to make functions
16:57:40 <ehird> so
16:57:43 <ehird> 2 3 +
16:57:44 <ehird> is
16:57:51 <ehird> (x) { return +(3(2(x))); }
16:57:57 <ehird> and the initial x passed to the program
16:57:58 <ehird> is the empty stack
16:58:01 <AnMaster> and what does that evalute to?
16:58:02 <ehird> so that program pushes 2
16:58:06 <ehird> wel
16:58:08 <ehird> 2(x)
16:58:12 <ehird> is x+[2]
16:58:17 <AnMaster> assuming 2 is a function
16:58:22 <ehird> so, that makes a stack like x but with 2 added to it
16:58:25 <ehird> then passes that to 3
16:58:28 <ehird> then passes that to +
16:58:31 <AnMaster> ok.
16:58:33 <ehird> which adds the top two avlues together
16:58:34 <ehird> now
16:58:36 <ehird> when you call a function
16:58:38 <ehird> it gets the current stack
16:58:41 <ehird> i.e. 'x' gets it
16:58:42 <ehird> but
16:58:44 <ehird> at the start of the program
16:58:47 <ehird> an empty stack is passed
16:58:54 <AnMaster> ok
16:58:57 <ehird> [...] is an anonymous function
16:59:02 <AnMaster> so all it does is stack operations?
16:59:03 <ehird> '[...] i' is '...'
16:59:10 <ehird> AnMaster: kind of, but stack is an implementation detail
16:59:39 <AnMaster> can't see the point of it though really
17:00:11 <ehird> AnMaster: what's the point of anything really
17:00:16 <ehird> it's a paradigm
17:00:19 <ehird> a very interesting one
17:00:22 <AnMaster> ok
17:00:28 <AnMaster> why is it useful
17:00:40 <AnMaster> why is it better than say functional programming
17:00:41 <ehird> AnMaster: the same way any paradigm is useful over any other
17:01:01 <AnMaster> ehird, like?
17:01:35 <AnMaster> ehird, and what existing languages are concatenative
17:01:45 <AnMaster> and is any of them non-esoteric?
17:01:52 <ehird> AnMaster: most of them are non-esoteric
17:01:54 <ehird> well
17:01:58 <AnMaster> like?
17:02:07 <ehird> Joy was created to research the implications
17:02:12 <ehird> Factor, however, is the prime example
17:02:16 <ehird> Slava Pestov is its head
17:02:19 <ehird> author of jEdit
17:02:31 <ehird> it has a web server, is used to develop apps, has a small but strong community, etc
17:02:36 <ehird> it has a channel here, #concatenative
17:02:43 <ehird> factorcode.com
17:04:13 <AnMaster> wikipedia call Joy "functional"
17:04:18 <AnMaster> hm
17:05:41 <ehird> yes, functional but concatenative
17:05:43 <ehird> AnMaster: oh and Cat
17:05:46 <ehird> Cat is like Joy, but strongly typedf
17:05:56 <AnMaster> not man cat?
17:06:01 <ehird> AnMaster: no
17:06:02 <ehird> catlanguage.com
17:06:11 <AnMaster> cat is certainly "concatenative" though XD
17:06:18 <AnMaster> but not turing complete
17:06:48 <AnMaster> ehird, not related to lolcode? ;P
17:06:54 <ehird> no
17:07:02 <ehird> predates it
17:07:17 <ehird> er wait
17:07:18 <ehird> dead link
17:07:44 <ehird> http://cat-language.com/
17:08:37 <AnMaster> that one is functional too?
17:08:56 <ehird> yes
17:09:01 <AnMaster> are *all* concatenative languages functional?
17:09:05 <ehird> AnMaster: most are
17:09:07 <ehird> but
17:09:10 <ehird> most of them have side-effects
17:09:13 <ehird> so functional but not purely
17:09:26 <ehird> but all of them have [...] and use combinators for 'if' and all that stuff
17:09:30 <ehird> but in e.g. factor
17:09:31 <AnMaster> well most functional languages allow side effects, even haskell does it in special contexts iirc
17:09:33 <ehird> side effects are trivial
17:09:41 <ehird> and haskell doesn't, it just lets you emulate it
17:09:51 <AnMaster> ehird, it lets you do file IO
17:10:07 <AnMaster> or how the heck did they write darcs in haskell?
17:10:10 <oklopol> i'm fairly sure a concatenative language has to be functional
17:10:53 <oklopol> because you can't use something like goto for program flow, you have to have a way to nest code... this essentially lets you have functions
17:10:54 <ehird> AnMaster: it's hard to explain
17:11:00 <ehird> AnMaster: haskell can be used for very real, IO-doing apps
17:11:05 <ehird> AnMaster: but it is done in a purely functional way
17:11:14 <ehird> i'll word-drop... Monads
17:11:14 <oklopol> hmm, i'm assuming a stack here, perhaps a wider consideration of concatenativity might let you be imperative.
17:11:24 <ehird> AnMaster: basically, the only non-functional part is the small runtime written in c
17:11:25 <AnMaster> ehird, yes I heard that word
17:11:29 <ehird> which is 100% detached from the haskell code
17:11:29 <AnMaster> hm
17:11:36 <ehird> its hard to explain, most newbies misunderstand it
17:11:38 <AnMaster> was just about to ask what it meant
17:11:41 <ehird> but just believe me when i say --
17:11:48 <ehird> haskell is 100% purely functional
17:12:01 <AnMaster> ehird, file IO is a side effect, right?
17:12:19 <ehird> AnMaster: yes but the haskell doesn't do it
17:12:25 <ehird> i told you, it's hard to explain
17:12:27 <oklopol> AnMaster: it doesn't have side-effects, it just has a construct for ordering evaluating, in which case you can have the program receive a conceptual list of inputs that will ever be given, and read from that
17:12:33 <oklopol> this list can only be read sequentially
17:12:36 <ehird> oklopol: eeeeh, no
17:12:37 <oklopol> and is the IO monad
17:12:39 <AnMaster> right, so everyone using darcs just imagined they commited a file
17:12:39 <ehird> no that's wrong
17:12:40 <ehird> :)
17:12:42 <AnMaster> it really didn't do it?
17:12:42 <oklopol> ehird: no?
17:12:48 <ehird> AnMaster: ... what an IDIOTIC comment
17:12:57 <AnMaster> ehird, yes I'm aware of that
17:13:00 <AnMaster> but you make no sense
17:13:00 <ehird> its not the Haskell that does the IO.
17:13:14 <ehird> AnMaster: most people have a lot of trouble with monads. i'm not going to explain it over irc.
17:13:17 <ehird> just trust me. i'm right.
17:13:23 <oklopol> ehird: what's wrong about my explanation?
17:14:14 <ehird> oklopol: hm
17:14:15 <ehird> not srue
17:14:32 <oklopol> i'm not saying it's exactly that, but it somewhat corresponds to that :)
17:15:06 <oklopol> you can think of actions that effect the IO monad as taking stuff from the list
17:15:15 <oklopol> and at recursion, passing the tail
17:15:20 <oklopol> because you've used the head
17:16:14 <oklopol> well, you can also do stuff like output, and tell the IO monad how to read, but you can find a similar analogy for that too
17:16:32 <oklopol> how
17:16:33 <oklopol> i mean
17:16:34 <oklopol> what
17:17:28 <oklopol> ehird: did you try the interp?
17:17:31 <oklopol> does it work at all?
17:19:23 <ehird> oklopol: going to
17:19:46 <ehird> :: "
17:19:46 <ehird> }
17:20:10 <oklopol> it seems this is an idle day for me, so i'll be here waiting, i guess! :D
17:20:42 <oklopol> ehird: i haven't tried anything that shouldn't work btw, so don't be surprised if it's trivial to crash
17:20:44 <ehird> oklopol: well, it works
17:20:45 <ehird> :P
17:20:55 <ehird> not much to see really
17:21:02 <oklopol> well, you can't crash it that easily ofc
17:21:10 <oklopol> because it just excepts
17:22:01 <oklopol> anyway, if you find bugs, i may remention you in the report!!
17:22:12 <ehird> oklopol: there's lots of bugs
17:22:14 <ehird> just not on valid code
17:22:14 <ehird> :-)
17:22:19 <oklopol> hehe
17:22:21 <ehird> oklopol: i find the scoping odd though
17:22:23 <ehird> here's an example
17:22:24 <oklopol> prolly, prolly
17:22:42 <ehird> (= ptr {(-> o {(-> $get o) (-> [$set o] o)})})
17:22:47 <ehird> you see the o
17:22:48 <ehird> bound in
17:22:49 <ehird> [$set o]
17:22:59 <ehird> i would expect that to be local to that pattern match, and just return the o
17:22:59 <ehird> and then
17:23:01 <ehird> on a future get
17:23:04 <ehird> the get would refer to the objects o
17:23:05 <ehird> but instead
17:23:10 <ehird> it somehow 'overrides' the thing's o
17:23:15 <ehird> is that intentional?
17:23:17 <oklopol> yes.
17:23:20 <ehird> if so, how is it done consistently?
17:23:30 <oklopol> it's only a problem at recursion
17:23:52 <oklopol> mutable objects and functions at the same time don't really mix
17:23:56 <oklopol> but i wasn't afraid ofc
17:24:06 <oklopol> recursion will remake the scope
17:24:11 <oklopol> nothing else
17:24:54 <oklopol> you see, usually you will not use a *field* in a pattern, you will use new varnames... using field names in a pattern will have the side-effect of changing the field.
17:26:12 <oklopol> if you find problems with it, do tell me. sofar, it seems to have been a good idea
17:27:09 <oklopol> well, apart from the fact it may make it easy to make mistakes; this of course i don't care about at all, oklotalk is supposed to be fun and easy to code, if you *know what you're doing, and are perfect*
17:29:56 <AnMaster> oklopol, the bot is offline :(
17:30:01 <oklopol> hmm
17:30:08 <AnMaster> otobot I mean
17:30:12 <AnMaster> or whatever it's name was
17:31:26 <oklopol> wtdf
17:31:28 <oklopol> wtf
17:31:34 <oklopol> invalid username i=-1 :D
17:31:45 <AnMaster> err yes I agree it is invalid
17:31:47 <AnMaster> see irc standard
17:32:03 <AnMaster> = is not valid in nicks iirc
17:32:06 <AnMaster> brb phone
17:32:07 <oklopol> i don't use it
17:34:48 -!- oktabot has joined.
17:35:05 <oklopol> a-ha, cannot have ident and realname be the same as nick, it seems :O
17:35:17 <oklopol> :: (= ptr {(-> o {(-> $get o) (-> [$set o] o)})})
17:35:17 <oktabot> <<<25877720>>>
17:35:29 <oklopol> :: (= x (ptr 7))
17:35:29 <oktabot> <<<25884032>>>
17:35:33 <oklopol> :: (= y x)
17:35:34 <oktabot> <<<25884032>>>
17:35:38 <oklopol> :: (set x 5)
17:35:39 <oktabot> 5
17:35:42 <oklopol> :: (get x)
17:35:42 <oktabot> 5
17:35:43 <oklopol> :: (get y)
17:35:44 <oktabot> 5
17:35:51 <oklopol> :: (= x (ptr 8))
17:35:51 <oktabot> <<<25883472>>>
17:35:56 <oklopol> :: (get y)
17:35:57 <oktabot> 5
17:36:01 <oklopol> :: (set y 7)
17:36:02 <oktabot> 7
17:36:04 <oklopol> :: (get x)
17:36:05 <oktabot> 8
17:36:17 <oklopol> i have no idea why i'm doing this
17:36:29 <oklopol> i'm so goddamn paranoid stuff just stops working out of nowhere :D
17:37:42 <ehird> [17:35] <oklopol> a-ha, cannot have ident and realname be the same as nick, it seems :O
17:37:44 <ehird> you can
17:37:45 <ehird> :<
17:38:11 <ehird> :: x
17:38:11 <oktabot> <<<25883472>>>
17:38:13 <ehird> :: (+ x y)
17:38:14 <oktabot> f
17:38:23 <ehird> :: º·Ë„‰‚·„°)(ÔË°*(Ë—‚Ë_SAO—±ÅÍÚ((((ÆÒ–ºÈËU0(WA*$()£$
17:38:23 <oktabot> An error: Unmatching parens @ row 1.
17:42:08 <oklopol> ehird: well, i couldn't connect
17:42:09 <oklopol> hmm
17:42:15 <oklopol> i cannot see those chars
17:42:55 <ehird> oklopol: they're jewnicode
17:43:43 <oklopol> ah eunuchcode
17:46:50 <oklopol> ehird: well i just do whatever happens to happen if unicode is used. it's supposed to be used with ascii atm
17:46:57 <oklopol> :: 9ii09i
17:46:58 <oktabot> ii09i
17:48:07 <ehird> :: ømgø∂∑†ƒ
17:48:08 <oktabot> ømgø∂∑†ƒ
17:48:11 <ehird> :: "ømgø∂∑†ƒ")
17:48:12 <oktabot> An error: Unmatching parens @ row 1.
17:48:12 <ehird> :: "ømgø∂∑†ƒ"
17:48:13 <oktabot> ømgø∂∑†ƒ
17:48:16 <ehird> :: (length "ømgø∂∑†ƒ")
17:48:16 <oktabot> An error: invalid literal for int() with base 10: '\xc3\xb8mg\xc3\xb8\xe2\x88\x82\xe2\x88\x91\xe2\x80\xa0\xc6\x92'
17:48:17 <oklopol> heh
17:48:19 <ehird> :|
17:48:25 <ehird> oklopol: open stdin in unicode mode
17:48:26 <ehird> same with files
17:48:31 <ehird> and replace '' with u''
17:48:35 <ehird> then it'll be jewnicode
17:48:46 <oklopol> is taht so?
17:49:01 <ehird> alternatively, you could put the jewnicode into auschwitz
17:49:12 <ehird> but then you'd be an nascii
17:49:22 <oklopol> :: (length "seher")
17:49:22 <oktabot> An error: invalid literal for int() with base 10: 'seher'
17:49:36 <oklopol> perhaps i should fix that :D
17:49:49 <oklopol> you see
17:49:56 <oklopol> :: (lolimagination "14354")
17:49:58 <oktabot> 14354
17:50:13 <ehird> lmao
17:50:36 <oklopol> long story short, strings can only be int()'d atm
17:51:01 <oklopol> so i saved a few chars ;)
17:52:17 <oklopol> at some point i though i might make oklotalk only do base 16 numbers
17:53:55 <oklopol> they're much more natural
17:54:49 <ehird> oklopol: hmm, all my esoideas from earlier today have just gone
17:54:57 <oklopol> have gone?
17:55:49 <ehird> yes
17:55:56 <oklopol> liek how
17:55:59 <oklopol> forgotten?
17:57:49 <ehird> yes
17:58:42 <oklopol> do you know a set of combinators that are tc given call/cc, but not without?
17:59:06 <oklopol> i'm pretty sure that cannot exist, but...
17:59:18 <ehird> oklopol: no, i don't think there is any
17:59:18 <ehird> well
17:59:22 <ehird> you can implement loops with call/cc.
17:59:28 <oklopol> yeah, somewhat
17:59:31 <ehird> so maybe
17:59:38 <ehird> oklopol: like, make a functional equiv. of brainfuck
17:59:39 <ehird> without loops
17:59:41 <ehird> then add call/cc
17:59:42 <ehird> and maybe.
18:19:26 -!- Sgeo has joined.
18:33:20 <Sgeo> pikhq, still care about PSOX?
18:33:32 <pikhq> Barely.
18:33:42 <Sgeo> If anyone still cares about PSOX, I'm thinking of adding an ASCII mode
18:33:53 <Sgeo> pikhq, why only barely?
18:39:01 <pikhq> Because I've got an assload of other stuff to do.
18:40:15 -!- oklofok has joined.
18:46:23 <SimonRC> hehehe
18:46:39 <SimonRC> Elsenet, some people are playing with a bot called nicknick
18:46:52 <SimonRC> it steals nicks whenever anyone changes nick
18:47:02 <AnMaster> Sgeo, you didn't answer me yesterday (or was it two days ago?): what use would PSOX be to me as a befunge programmer
18:47:05 <SimonRC> to get back, you have to o two more steps
18:47:16 <SimonRC> thus resulting in 6 lines of nick changes overall
18:47:23 <Sgeo> AnMaster, none I guess
18:47:26 <SimonRC> head-spinning stuff
18:47:36 <AnMaster> ok thank you
18:47:57 <Sgeo> I mean, assuming befunge can access the network and files and stuff
18:48:42 <ehird> SimonRC: heh
18:48:57 * AnMaster wonders idly about a program that can solve the halting problem for *itself*
18:49:05 <ehird> actually, a good irc server would make all this nicky stuff automatic
18:49:08 <AnMaster> did that make any sense at all?
18:49:13 <ehird> AnMaster: same as regular halting problem
18:49:14 <ehird> like
18:49:21 <ehird> if a nick is online for more than N time
18:49:26 <ehird> it gets registered
18:49:31 <ehird> and then... somehow you can claim it
18:49:32 <ehird> i don't know
18:49:50 <AnMaster> ehird, well you need to work somewhat on the details
18:49:52 <ehird> really irc is far too klunky
18:49:57 <ehird> but
18:50:01 <ehird> you could do channel registration easily
18:50:11 <AnMaster> <SimonRC> to get back, you have to o two more steps
18:50:11 <ehird> if you go in to an unused channel it's registered to you
18:50:14 <AnMaster> well /ns ghost
18:50:15 <AnMaster> :D
18:50:22 <AnMaster> funny to kill a bot that wya
18:50:23 <AnMaster> way*
18:50:32 <ehird> if the channel dies, then it is dropped
18:50:36 <ehird> AnMaster: lots of places have no /ns
18:50:48 <AnMaster> ehird, right /msg nickserv/userserv/whatever
18:50:49 <ehird> I guess what IRC needs is a well thought out replacement
18:50:53 <AnMaster> if they got services
18:51:03 <ehird> AnMaster: not all have those
18:51:13 <AnMaster> the only bit networks without services these days are efnet and ircnet
18:51:17 <AnMaster> big*
18:51:34 <AnMaster> ehird, sure some got account based system
18:51:37 <AnMaster> or similar
18:52:12 <ehird> AnMaster: some have none
18:52:32 <AnMaster> yes ircnet and efnet these days
18:52:41 <AnMaster> as I said all other large network do use services nowdays
18:53:14 <ehird> does anyone else think irc sucks? ;)
18:54:42 <Sgeo> ehird, support Haver! lol
18:54:49 <ehird> oklopol: oklohi
18:54:55 <ehird> Sgeo: haver kinda punts on the hard stuff
18:55:17 <Sgeo> howso?
18:56:19 <ehird> it doesn't really do anything new
18:57:28 -!- jix has quit (Nick collision from services.).
18:57:29 -!- oklopol has quit (Read error: 110 (Connection timed out)).
18:57:38 -!- jix has joined.
18:59:14 -!- oktabot has quit (Read error: 110 (Connection timed out)).
18:59:36 -!- oklofok has quit (Success).
18:59:50 <ehird> NOOOOOOOOOOO
18:59:52 <ehird> NO MORE OKLOTALK
19:07:05 -!- timotiis has joined.
19:22:34 -!- Judofyr_ has joined.
19:22:34 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)).
19:23:17 -!- Judofyr_ has changed nick to Judofyr.
20:07:03 <ehird> d
20:07:10 <ehird> GregorR: so about that egobot patch..
20:13:53 <ehird> GregorR: :D
20:20:18 * SimonRC PONDERS
20:20:28 <SimonRC> SILC has an interating alternative to nicks
20:20:51 <SimonRC> everyone has cryptographic identites, and nikcs are merely decorative
20:21:24 <SimonRC> Programs that solve the halting problem for themselves are easy.
20:21:55 <SimonRC> obviously, it will always halt, because a halting-problem-solver must
20:22:02 <SimonRC> therefore it is just "true"
20:31:44 <Sgeo> Can INTERCAL do string processing"
20:31:45 <Sgeo> ?
20:36:47 <ehird> Sgeo: yes
20:36:54 <ehird> Sgeo: it is turing complete
20:36:58 <ehird> there is an intercal cgi script
20:37:02 <Sgeo> Can it do it well?
20:37:15 <ehird> Sgeo: you can't do anything 'well' in intercal
20:37:18 <ehird> every operation is tedious and verbose
20:37:20 <ehird> but you can do it
20:37:23 <ehird> it's pretty standard
20:37:45 <ehird> Sgeo: http://www.muppetlabs.com/~breadbox/intercal/ins/insstart.html
20:37:47 <ehird> intercal cgi script
20:37:53 <Sgeo> Because I'm planning a PSOX-ASCII, which will return argumnts like: 12345,hi,0
20:38:04 <Sgeo> I want to know how Intercal would handle stuff like that
20:39:55 <ehird> Sgeo: Uh, you can do binary in intercal too.
20:40:07 <ehird> But if you want true INTERCAL support, you have to do input and output in roman numerals.
20:40:11 <ehird> Since that's all that's standard.
20:40:17 <ehird> wait, no
20:40:19 <ehird> input in text numerals
20:40:21 <ehird> output in roman numerals
20:40:24 <ehird> input like:
20:40:25 <Sgeo> ..PSOX_ASCII is not about to support that
20:40:29 <ehird> 'ONE ZERO NINE FIVE ZERO'
20:40:31 <ehird> output like
20:40:33 <ehird> 'MXVIIVIVI'
20:40:38 <ehird> sometimes with bars or underscores
20:40:45 <Sgeo> *PSOX-ASCII
20:40:53 <ehird> Sgeo: Well duh, I could have guessed that. You don't like actually designing things that work..
20:41:11 <ehird> character io extensions exist
20:41:13 * Sgeo doesn't want something centered on any language
20:41:15 <ehird> but they are not standard
20:41:27 <ehird> Sgeo: PSOX is centered around brainfuck. Stating anything to the contrary is just a lie
20:41:43 <Sgeo> ehird, that's why I'm working on PSOX-ASCII
20:42:15 <ehird> Sgeo: Which will be centered around something else. Yay!
20:42:30 <Sgeo> Although I wonder if I should just break it off PSOX entirely to make it much more flexible..
20:43:05 <ehird> or just give up psox
20:44:07 <Sgeo> ehird, the current spec/codebase, or the idea entirely?
20:46:25 <ehird> Sgeo: both
21:48:59 -!- timotiis_ has joined.
21:49:47 -!- oerjan has joined.
21:55:58 -!- Judofyr_ has joined.
21:55:58 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)).
22:02:03 -!- timotiis has quit (Read error: 110 (Connection timed out)).
22:07:33 -!- Judofyr_ has changed nick to Judofyr.
22:33:59 -!- Judofyr_ has joined.
22:33:59 -!- Judofyr has quit (Connection reset by peer).
22:51:37 -!- jix has quit ("CommandQ").
23:32:13 -!- oerjan has quit ("leaving").
23:32:20 <ehird> dead day today
23:38:58 -!- pikhq has quit ("REbooting for new kernel").
←2008-04-11 2008-04-12 2008-04-13→ ↑2008 ↑all