←2008-09-30 2008-10-01 2008-10-02→ ↑2008 ↑all
00:01:43 <tusho> hi ais523
00:06:27 -!- sebbu2 has quit ("@+").
00:07:47 -!- oc2k1 has quit (Read error: 60 (Operation timed out)).
00:17:18 -!- oc2k1 has joined.
00:18:19 -!- olsner has quit ("Leaving").
00:32:13 -!- MisterN has joined.
00:35:00 <pikhq> ,[.,]
00:38:16 <MisterN> +[,.]
00:38:54 <MisterN> PLEASE COME FROM ##brainfuck :D
00:47:51 -!- MisterN has quit ("Verlassend").
01:50:02 <pikhq> KDE 4 is fucking awesome.
02:09:40 -!- GregorR has quit (Read error: 104 (Connection reset by peer)).
02:17:34 -!- GregorR has joined.
02:59:50 -!- puzzlet has quit ("leaving").
03:34:42 -!- GregorR_ has joined.
03:34:52 -!- GregorR has quit (Nick collision from services.).
03:34:58 -!- GregorR_ has changed nick to GregorR.
03:48:16 -!- optbot has set topic: the entire backlog of #esoteric: http://tunes.org/~nef/logs/esoteric | of course.
05:04:05 -!- Sgeo has joined.
05:05:21 -!- GregorR has quit (Read error: 104 (Connection reset by peer)).
05:15:20 -!- GregorR has joined.
06:09:37 -!- GregorR has quit (Read error: 104 (Connection reset by peer)).
06:10:33 -!- Sgeo has quit (Read error: 110 (Connection timed out)).
06:13:36 -!- oklopod has quit (Read error: 60 (Operation timed out)).
06:23:42 -!- CO2Games has quit (Nick collision from services.).
06:25:34 -!- CO2Games has joined.
06:32:52 -!- CO2Games has left (?).
06:48:55 -!- oklopod has joined.
06:51:34 -!- oklopol has joined.
06:55:02 -!- oklopod has quit (Read error: 104 (Connection reset by peer)).
06:56:07 -!- oklopol has quit (Read error: 113 (No route to host)).
06:58:02 -!- oklopod has joined.
07:07:55 -!- oklopol has joined.
07:08:49 -!- oklopod has quit (Read error: 104 (Connection reset by peer)).
07:13:08 -!- oklopol has quit (Read error: 104 (Connection reset by peer)).
07:13:20 -!- oklopod has joined.
07:23:49 -!- puzzlet has joined.
07:27:32 -!- Slereah_ has joined.
07:27:32 -!- slereah has quit (Read error: 104 (Connection reset by peer)).
07:28:37 -!- oklopol has joined.
07:34:31 -!- oklopod has quit (Read error: 60 (Operation timed out)).
07:44:10 -!- kwertii has quit ("bye").
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:00:49 -!- oklopod has joined.
08:07:46 -!- oklopod has quit (Read error: 113 (No route to host)).
08:07:59 -!- oklopod has joined.
08:13:14 -!- oklopol has quit (Read error: 113 (No route to host)).
08:13:29 -!- oklopod has quit (Read error: 113 (No route to host)).
08:14:15 -!- oklopod has joined.
08:20:19 -!- oklopol has joined.
08:20:34 -!- oklopod has quit (Read error: 113 (No route to host)).
08:23:12 -!- oklopod has joined.
08:23:12 -!- oklopol has quit (Read error: 104 (Connection reset by peer)).
08:25:05 -!- oklopod has quit (Read error: 113 (No route to host)).
08:36:54 -!- oklopod has joined.
08:39:51 -!- oklopol has joined.
08:40:13 -!- oklopod has quit (Read error: 104 (Connection reset by peer)).
08:52:41 -!- oklopod has joined.
08:58:00 -!- oklopod has quit (Read error: 104 (Connection reset by peer)).
08:58:16 -!- oklopod has joined.
08:59:51 -!- oklopol has quit (Read error: 113 (No route to host)).
09:00:35 -!- oklopod has quit (Read error: 104 (Connection reset by peer)).
09:03:28 -!- jix has joined.
09:05:26 -!- oklopod has joined.
09:07:57 -!- jix has quit (Client Quit).
09:08:55 -!- jix has joined.
09:11:22 -!- oklopol has joined.
09:20:52 -!- oklopod has quit (Read error: 113 (No route to host)).
09:21:23 -!- oklopod has joined.
09:21:52 -!- oklopol has quit (Read error: 60 (Operation timed out)).
09:26:59 -!- oklopod has quit (Read error: 104 (Connection reset by peer)).
09:27:46 -!- oklopod has joined.
09:48:17 -!- optbot has set topic: the entire backlog of #esoteric: http://tunes.org/~nef/logs/esoteric | world!.
09:59:54 -!- oklopod has quit (Read error: 113 (No route to host)).
10:44:58 -!- puzzlet has quit (Read error: 104 (Connection reset by peer)).
10:46:02 -!- puzzlet has joined.
10:52:54 -!- puzzlet has quit (Remote closed the connection).
10:53:00 -!- puzzlet has joined.
10:58:29 -!- Judofyr has joined.
11:01:18 -!- oc2k1 has quit (Read error: 110 (Connection timed out)).
11:21:53 -!- oklopod has joined.
11:25:40 -!- oklopol has joined.
11:25:40 -!- oklopod has quit (Read error: 104 (Connection reset by peer)).
11:28:52 -!- oklopod has joined.
11:36:23 -!- oklopod has quit (Read error: 60 (Operation timed out)).
11:36:28 -!- oklopod has joined.
11:39:32 -!- puzzlet has quit (Remote closed the connection).
11:39:37 -!- puzzlet has joined.
11:47:47 -!- oklopol has quit (Read error: 110 (Connection timed out)).
12:00:38 <AnMaster> ais523, hi
12:07:44 <tusho> AnMaster: he's not here.
12:08:17 <oklopod> tusho: make optbot put whether ais523 is here on the topic.
12:08:18 <optbot> oklopod: but that should be the code for a bot that tries to keep in the middle of a platform
12:08:23 <tusho> oklopod: lol :-)
12:08:26 <tusho> it's called /w ais523
12:08:42 <tusho> er
12:08:42 <tusho> who
12:08:50 <tusho> /who ais523
12:08:56 <tusho> 352: #esoteric n=ais523 eso-std.org irc.freenode.net ais523 G 0 (this is obviously not my real name)
12:09:18 <oklopod> that was from an explanation about ob
12:09:23 <oklopod> what optbot said
12:09:23 <optbot> oklopod: when I was young and naive I thought i'd be able to get syntax-error.com
12:09:28 <oklopod> that was you
12:09:32 <oklopod> optbot: more
12:09:32 <optbot> oklopod: by the way,
12:09:38 <oklopod> this one i have no idea about
12:09:48 <oklopod> optbot: more
12:09:49 <optbot> oklopod: having said that, there are occasions when people deserve to be stabbed in the face
12:09:54 <oklopod> pikhq?
12:09:56 <oklopod> optbot: more
12:09:57 <optbot> oklopod: I think so
12:10:05 <oklopod> oh, so it was pikhq
12:10:07 <oklopod> optbot: more
12:10:07 <optbot> oklopod: Because if he spends money registering the domain, it's money that won't go to the poor!
12:10:19 <oklopod> i haven't seen this one
12:10:22 <oklopod> hmmhmm
12:10:42 -!- Hiato has joined.
12:10:53 <tusho> i can always grep for you guys btw.
12:11:04 <oklopod> i can python-grep too
12:11:14 <oklopod> although not from the earliest / newest ones
12:11:18 <oklopod> but that's a minority
12:11:29 <oklopod> you can *check* by grepping if you *feel* like it
12:11:39 <tusho> oklopod: by the way, how do you like bayesian spam filters.
12:11:55 <oklopod> i haven't used them, just simpler statistical methods
12:12:05 <oklopod> i don't know anything about bayesian networks
12:12:08 <tusho> oklopod: but are they neat
12:12:17 <tusho> in a 'probably neat but i don't know anything about them' way
12:12:30 <oklopod> if you're asking about my opinion about their usage, or how much use they are, then i don't have an opinion really
12:12:44 <tusho> oklopod: more about how awesome they are actually
12:13:02 <oklopod> all networks are, by default, awesome, as they are graphs
12:13:08 <tusho> oklopod: good
12:13:31 <oklopod> a book about bayesian networks is on my read-list, or actually two
12:13:31 <tusho> because me and comex have written and are writing a program that uses bayesian spam filtering in python
12:13:34 <tusho> to be cheap ai
12:13:36 <tusho> :D
12:13:41 <oklopod> but course books have a higher priority
12:13:44 <tusho> It votes on Agoran proposals.
12:13:50 <oklopod> and i still have a few books to go
12:13:55 <tusho> First, it was fed a backlog of the proposal results 2006-present.
12:14:01 <tusho> If a proposal passed, it was fed as not spam.
12:14:06 <tusho> if it failed, it was fed as spam.
12:14:15 <oklopod> :D
12:14:17 <tusho> Then, it votes AGAINST new proposals that act like spam.
12:14:22 <tusho> and FOR other ones
12:14:31 <oklopod> lol @ the geniosity
12:14:40 <oklopod> i like that
12:14:48 <tusho> :D
12:14:48 <oklopod> are you writing the actual bayesian network part?
12:14:54 <oklopod> or just using some lib or smth
12:15:01 <tusho> oklopod: just using a lib i'm afraid, but its probably for the best
12:15:07 <tusho> i mean, its designed for spam filtering
12:15:13 <tusho> it's gonna be better at it than a one-day hack...
12:15:27 <oklopod> for the best maybe, but it's against my nonsensical principles. :P
12:15:28 <tusho> funnily enough, on a recent batch we tested it on, it voted exactly the same as me on 3 proposals
12:15:33 <tusho> out of 4 proposals in the pool
12:15:44 <oklopod> haha
12:15:53 <tusho> (the one it voted AGAINST that I voted FOR was probably because it was quite a big thing and probably had a lot of loopholes but I kinda liked the idea so i voted for it)
12:15:57 <oklopod> well 3/4 isn't really that impressive
12:16:01 <tusho> oklopod: no
12:16:04 <tusho> but how about these statistics:
12:16:28 <oklopod> try adding half of the proposals, and testing the rest
12:16:30 <oklopod> well
12:16:33 <tusho> oklopod: nonono
12:16:36 <tusho> watch:
12:16:37 <oklopod> nonono?
12:16:40 <oklopod> okay.
12:17:16 <tusho> oklopod: I made it vote on every proposal that we trained it on and then measured how many times it voted 'right'
12:17:21 <tusho> (FOR when it passed AGAINST when it failed
12:17:25 <tusho> 928/1066
12:17:25 <tusho> FOR: 448/581
12:17:26 <tusho> AGAINST: 464/469
12:17:26 <tusho> PRESENT: 16
12:17:35 <tusho> comex's initial version was closer to the status quo, BUT
12:17:40 <tusho> his tracked author names
12:17:41 <tusho> because
12:17:44 <tusho> certain proposers
12:17:47 <tusho> rarely ever get proposals passed
12:17:48 <oklopod> you tested it on ones that it was fed?
12:17:53 <tusho> his tried to vote on whether it would passed
12:17:57 <tusho> mine votes on whether it's a good proposal
12:18:00 <tusho> oklopod: yeah
12:18:09 <tusho> bayesian spam filtering doesn't actually retain the original test
12:18:13 <oklopod> well, don't, then give me the results
12:18:13 <tusho> so its not as trivial as it seems..
12:18:14 <tusho> *text
12:18:25 <tusho> oklopod: those are the only proposals i can get a hold off
12:18:26 <tusho> *of
12:18:35 <tusho> dunno where I can get pre-2006 archives
12:18:35 <oklopod> half in, then check half
12:18:35 <tusho> :-P
12:18:38 <tusho> oklopod: alright
12:19:08 <fizzie> tusho: You can easily do leave-one-out cross-validation. Train it on all but one, then test on that one. Repeat for every proposal. That's a lot of computing systems, so your machines won't feel all unnecessary.
12:19:18 <tusho> oklopod: less impressive -
12:19:18 <tusho> 798/1066
12:19:19 <tusho> FOR: 379/578
12:19:19 <tusho> AGAINST: 294/363
12:19:19 <tusho> PRESENT: 125
12:19:20 <fizzie> Er, s/systems/cycles/
12:19:23 <tusho> however
12:19:26 <tusho> that's because
12:19:31 <tusho> the game changed a lot around half way through
12:19:31 <tusho> so
12:19:36 <tusho> it wasn't used to the new kinds of proposals
12:19:41 <tusho> after the series of revamps
12:19:45 <tusho> still
12:19:48 <tusho> not bad performance, I'd say
12:19:50 <tusho> plus
12:19:50 <oklopod> did you insert in order?
12:19:53 <tusho> oklopod: yea
12:19:56 <oklopod> try what fizzie said
12:20:01 <tusho> oklopod: no, that'd take years
12:20:11 <oklopod> try first, then insert it, then test next, then insert it
12:20:17 <tusho> alright
12:20:19 <oklopod> etc.
12:20:22 <tusho> um
12:20:26 <tusho> but they're two different scripts
12:20:27 <tusho> :D
12:20:28 <oklopod> this will kinda do what fizzie said, but i guess a bit faster.
12:20:28 * tusho mangles
12:20:43 <oklopod> also it will be more sensical, as bayesian networks adapt
12:20:44 <fizzie> Leave-one-out will take at most 1066 times longer than your original test, and it doesn't sound like it takes a long time right now.
12:21:04 <oklopod> so chronological + testing the one after input in chronological order should work the best
12:21:50 <tusho> fizzie: the feeding takes about a second
12:21:54 <tusho> and the test takes about a second
12:22:02 <tusho> 2132 seconds.
12:22:12 <tusho> thats an hour
12:22:13 <tusho> :-P
12:22:16 <fizzie> Not a year. :p
12:22:21 <tusho> oklopod:
12:22:21 <tusho> 628/1066
12:22:22 <tusho> FOR: 321/627
12:22:22 <tusho> AGAINST: 285/417
12:22:22 <tusho> PRESENT: 22
12:22:25 <fizzie> (And the test will be a lot faster since it has only one proposal to test.)
12:22:32 <tusho> ofc, remember, it isn't AIMING to get it right
12:22:39 <tusho> since proposals fail for non-bad-proposal reasons
12:22:43 <tusho> e.g. grudges, bribery, whatever
12:22:53 <fizzie> For the "test it before inserting" you might want to start testing only after you've fed something like half of the proposals.
12:23:00 <tusho> fizzie: Yeah, ok.
12:23:01 <fizzie> It's not likely the untrained system will do very well.
12:23:01 <oklopod> yes
12:23:06 <oklopod> was just gonna say that
12:23:44 <oklopod> well i was actually gonna say emphasize gradually more as input size grows, and give the percentage, which is the same thing, but more complicated and more useless
12:24:14 <tusho> yikes:
12:24:14 <tusho> 321/1066
12:24:14 <tusho> FOR: 121/294
12:24:15 <tusho> AGAINST: 190/229
12:24:15 <tusho> PRESENT: 10
12:24:18 <tusho> not very good
12:24:19 <tusho> hmm
12:24:21 <tusho> i think i did that wrong
12:24:38 <oklopod> :o
12:24:45 <tusho> oklopod: oh well, the point is
12:24:48 <tusho> i also tested it on a batch of like
12:24:50 <tusho> 10 recent proposals
12:24:55 <tusho> and it voted very, very reasonably
12:25:06 <tusho> didn't really take any risks, and voted against obviously bad stuff
12:25:13 <tusho> but voted for fixes and such
12:25:15 <tusho> so
12:25:19 <oklopod> had it been fed those as inputs..?
12:25:19 <tusho> in its actual real world environment
12:25:20 <tusho> it is good
12:25:22 <tusho> oklopod: yes
12:25:26 <oklopod> :D
12:25:30 <tusho> no
12:25:30 <tusho> no
12:25:31 <oklopod> well that's simply not right
12:25:32 <tusho> it hadn't
12:25:32 <tusho> i meant
12:25:33 <tusho> the 2006
12:25:35 <tusho> to present
12:25:36 <tusho> duh
12:25:38 <oklopod> ah
12:25:38 <tusho> not including them
12:25:39 <tusho> no
12:25:40 <tusho> it hadn't
12:25:43 <oklopod> well okay.
12:25:45 <tusho> so
12:25:48 <oklopod> had it now?!?
12:25:49 <oklopod> had
12:25:50 <oklopod> it
12:25:50 <oklopod> now?
12:25:51 <tusho> even if it doesn't do too well statistically
12:25:51 <oklopod> what
12:25:52 <oklopod> ?
12:25:54 <oklopod> had it?
12:25:56 <tusho> oklopod: nO
12:25:57 <oklopod> i guess not.
12:25:58 <tusho> it hadn't
12:26:02 <oklopod> hadn't?
12:26:03 <tusho> it had not been fed the proposals that it voted on
12:26:08 <tusho> it had been fed the archives, however
12:26:14 <tusho> and that is the conditions in which it will be run in the wild
12:26:16 <tusho> for new proposals
12:26:19 <tusho> as it's the best it can do
12:26:20 <tusho> anyway
12:26:22 <tusho> in that environment
12:26:28 <tusho> it functioned well as a reasonable mechanical voting machine.
12:26:32 <fizzie> Re classification, given the ~300 authors with >10 English books in the Gutenberg project, our very silly SOM-based classifier (using _very silly_ feature representation for books) can already correctly guess the author for >40% of incoming books. Conclusion: writers just keep repeating themselves all the time.
12:26:46 <tusho> haha
12:26:52 <tusho> i bet i could make this detect author
12:26:55 <tusho> but i won't
12:26:56 <tusho> (guess)
12:28:08 <tusho> fizzie: btw
12:28:12 <tusho> i just actually timed it and etc
12:28:14 <fizzie> Also: the same system is pretty good (average in-class accuracy 70-80 %, even though the training data is horribly biased) at guessing the gender of the author.
12:28:15 <tusho> it'd take 0.96 hours
12:28:17 <tusho> to do your thing
12:29:10 <fizzie> It would take 25 days of computing-time to do actual leave-one-out cross-validation for our Gutenberg data-set. :p
12:29:30 <fizzie> (Which is one of the reasons why we're not using it either.)
12:29:34 <tusho> fizzie: what on earth is it doing?! :-)
12:29:39 <tusho> i mean
12:29:40 <tusho> whats it for
12:30:01 <oklopod> fizzie: now the question is, how silly is it?
12:30:05 <fizzie> Coursework, for the... what's the course again? I forget. It's 1.5 years past the returning deadline anyway. :p
12:30:21 <tusho> fizzie: ouch :D
12:30:39 <fizzie> (Because the deadline was a "soft" one; the lecturer said that "you can return it any time you like, but you won't get your course grade before you do".)
12:30:47 <tusho> fizzie: would it be able to vote on agoran proposals?
12:31:39 <fizzie> Probably not well, but theoretically speaking, yes. But the feature representation is all just simple statistics (sentence lengths, use of pronouns, etc.) and does not look at the content words at all.
12:31:48 <tusho> Ahh.
12:32:19 <fizzie> So if you want nonsensical decisions, sure.
12:33:01 <fizzie> Of course with the SOM-based approach you get nifty visualizations, and sort-of proposal clustering, "for free".
12:35:03 <fizzie> I think we selected our classifier because with all the pictures of the SOM maps in the report, there's no need to write much actual text for it. :p
12:35:43 <oklopod> yeah you can't write that much in 1,5 years
12:36:01 <fizzie> Work on the project has been... sporadic.
12:36:45 -!- Hiato has quit (Read error: 104 (Connection reset by peer)).
12:37:13 <oklopod> sporadic... like, spore-adic, cuz it took 1,5 years
12:37:14 <oklopod> i see i see
12:37:32 -!- Hiato1 has joined.
12:37:35 <tusho> fizzie: perhaps you know - you know how ssh makes you enter your pwd at a terminal?
12:37:39 <fizzie> SVN revision 1 has a timestamp of 2007-02-06 02:01:56 +0200.
12:37:45 <tusho> well, bayes has one password on eso-std.org and its long and i dont wanna type it to login
12:37:46 <tusho> so
12:37:50 <tusho> i'm trying to make a shell script
12:37:52 <tusho> that runs ssh
12:37:54 <tusho> but gives it the password
12:37:58 <tusho> via the command line
12:38:01 <tusho> i.e. from the script
12:38:08 <tusho> (that only people who can log in as bayes anyway can see)
12:38:47 <fizzie> I think the more recommended approach would be to generate a RSA (or DSA) key with no passphrase -- in a file that only those people can read -- and add that in authorized_keys of the remote side.
12:38:54 <tusho> [bayes = the bot btw]
12:39:02 <tusho> fizzie: yeah but...fffffffff
12:39:41 <fizzie> Well, you can use the SSH_ASKPASS environment variable.
12:39:47 <tusho> http://www.google.com/search2001.html google's index in 2001
12:41:16 <fizzie> I'm not sure how to force it to use SSH_ASKPASS except by doing "ssh ... </dev/null" so that it doesn't have a terminal in stdin to query the passphrase from.
12:41:55 <tusho> fizzie: anyway, if i do the ssh key thing how would I tell ssh what key to use...?
12:42:04 <fizzie> ssh -i path/to/keyfile
12:43:16 <tusho> fizzie: But I'm using git, I can't give ssh arguments
12:43:16 <tusho> :P
12:43:25 -!- oklopod has quit (Read error: 104 (Connection reset by peer)).
12:43:40 -!- oklopod has joined.
12:44:10 <fizzie> I'm sure there's some way to specify arguments, since even rsync lets you specify the shell used.
12:44:46 <tusho> fizzie: nope.
12:45:06 -!- Hiato1 has quit ("Leaving.").
12:45:49 <fizzie> Well, if you don't mind always using that key, you can stick into your ~/.ssh/config something like "Host remote_side\n IdentityFile /path/to/key"
12:46:26 <tusho> [[don't mind always using that key]]
12:46:27 <tusho> I do.
12:46:38 <tusho> Can I set it to only use that key for that user?
12:46:39 -!- jix has quit (Nick collision from services.).
12:46:40 <tusho> That would be OK.
12:46:49 -!- jix has joined.
12:47:24 <fizzie> Not in ~/.ssh/config, that can only specify per-host preferences. :/
12:47:51 <tusho> Stupid ssh.
12:48:29 <fizzie> http://git.or.cz/gitwiki/GitTips#head-09f587b7791b46d995947704f9ddc4958dff54c3
12:48:43 <fizzie> Ugly but.. well, just ugly.
12:49:06 <fizzie> There's the "fake hostnames" solution you might want to use.
12:50:12 <fizzie> Didn't remember that ssh_config lets you actually override the host to connect to. Should have, since I use it myself for shortcuts like "ssh james" doing "ssh james.hut.fi" even though hut.fi's not in my normal DNS suffix list at home.
13:05:52 <AnMaster> If I want to learn scheme, what interpreter/compiler would you recommend? Gentoo seems to provide several.
13:06:18 <AnMaster> for some reason it seems guile is already installed, I got no idea why
13:08:08 -!- Mony has joined.
13:08:10 <fizzie> I think at least some programs use Guile to provide their Scheme scripting-thing.
13:08:28 <Mony> plop
13:08:31 <oklopod> how about installing them all, then interpreting everything in all of them, taking the md5's of results, taking the arithmetical average of those results, finding the plaintext for it, and showing that as the result
13:08:39 <AnMaster> fizzie, well it seems to have an akward prompt, no readline editing.
13:08:44 <AnMaster> for the REPL
13:09:46 <fizzie> MzScheme is a popular one, and I think nowadays it uses libreadline for the terminal thing.
13:09:59 <fizzie> (DrScheme is the related GUI nonsense, I didn't like that at all.)
13:10:01 <AnMaster> ah thanks to google I found out how to get readline in guile
13:10:07 <AnMaster> seems to work ok
13:10:24 <AnMaster> just had to put some lines into ~/.guile
13:11:05 <fizzie> http://community.schemewiki.org/?category-implementations probably has reasonably good descriptions.
13:11:07 <AnMaster> fizzie, mzscheme doesn't exist in the gentoo package collection, so unless I have a good reason I prefer the lazy way ;)
13:12:43 <fizzie> AnMaster: It's probably under the 'drscheme' package.
13:12:58 <AnMaster> ah yes Description: DrScheme programming environment. Includes mzscheme.
13:13:33 <fizzie> It's all part of "PLT-Scheme"; DrScheme is the IDE, MzScheme is the command-line/terminal parts. Given how gentoo is, there's probably some sort of USE flag that lets you get rid of drscheme. :p
13:14:02 <AnMaster> fizzie, there is yes
13:14:02 <AnMaster> Calculating dependencies... done!
13:14:02 <AnMaster> [ebuild N ] dev-scheme/drscheme-4.1 USE="X cairo opengl -backtrace -cgc -llvm -profile" 14,559 kB
13:14:14 <AnMaster> just need to figure out what they mean for this specific ebuild
13:14:17 <AnMaster> not always very clear
13:14:47 <AnMaster> for example you could interpret X as meaning general X bindings for the programming language
13:15:26 <fizzie> Back when I used mzscheme it was still around version 352; apparently they've graduated to something like 4.1 now and even changed the numbering scheme.
13:15:38 <AnMaster> * dev-scheme/drscheme
13:15:38 <AnMaster> Available versions: ~0.372-r1 ~4.0.1 ~4.0.2 4.1 [M]360-r1 [M]~360-r2 [M]~360-r3 [M]~370.6_p20070725 [M]~370.6_p20070725-r1 [M]~371 [M]~372 [M]~372-r1 {3m X backtrace cairo cgc jpeg llvm opengl perl png profile xft xrender}
13:15:39 <AnMaster> well
13:15:59 <AnMaster> I guess they masked them to make upgrading work
13:16:05 <AnMaster> [M] means masked
13:16:21 <fizzie> Chicken and Scheme48 are other reasonably popular ones.
13:16:32 <AnMaster> fizzie, but guile isn't that good?
13:17:31 <fizzie> That's the feeling I have, but I haven't really used it. It seems to be a bit more "Scheme as a scripting language" than "Scheme as a general-purpose programming language" implementation.
13:17:38 <tusho> AnMaster: Use drscheme.
13:17:40 <tusho> aka mzscheme
13:17:41 <AnMaster> hm
13:17:44 <tusho> Install drscheme.
13:17:45 <tusho> Srsly.
13:17:46 <AnMaster> will try it :)
13:17:48 <tusho> And use its IDE.
13:17:56 <tusho> Emacs is the best long-term solution
13:17:58 <tusho> but for a quick setup
13:18:03 <AnMaster> tusho, why? I don't run X currently
13:18:03 <tusho> DrScheme's IDE is set up wonderfully
13:18:07 <tusho> even with emacs keybindings
13:18:09 <AnMaster> ;P
13:18:11 <tusho> AnMaster: well, that might be a problem :-P
13:18:16 <tusho> but it's a very good way to start coding scheme
13:18:44 <fizzie> The IDE, or the X11 side of it at least, wasn't very nice back in the early 300-series, but that's pretty ancient information now.
13:19:00 <tusho> fizzie: Yeah that's not very up to date :-P
13:19:06 <fizzie> There seemed to be quite many Scheme48 devotees on freenode/#scheme back when I idled there.
13:19:17 <tusho> Scheme48 is... kind of lame.
13:19:26 <fizzie> And Chicken developers hung around there too.
13:19:34 <tusho> Anyway, even if you can't use DrScheme because of X lacking or whatever, MzScheme (its underlying implementation) is exemplary.
13:19:41 <Mony> chicken developers ?
13:19:41 <tusho> Unlike just about every other scheme, it has comprehensive and well designed libraries.
13:19:48 <tusho> Mony: chicken is a scheme impl
13:20:09 <AnMaster> $(use_enable X mred) <-- so useflag X meas --enable-mred will be passed to the configure...
13:20:09 <Mony> and in french ? :D
13:20:09 <AnMaster> huh
13:20:14 <AnMaster> that makes no sense
13:20:22 <tusho> AnMaster: MrEd is the mzscheme gui lib
13:20:27 <AnMaster> ah
13:20:33 <AnMaster> not m red then.
13:20:34 <AnMaster> heh
13:20:36 <tusho> no :-P
13:21:08 <fizzie> My main (irrational) dislike of MzScheme stems from the fact that HtDP, which I really didn't like, used MzScheme-isms instead of standard R5RS stuff for no discernible reason.
13:21:55 <tusho> HtDP is kinda crap yea
13:21:58 <fizzie> Still, the PLT set of libraries is very good indeed.
13:22:07 <tusho> Lemme find that _awesome_ tutorial I found a while back
13:22:13 <tusho> Sec.
13:22:27 <AnMaster> HtDP?
13:22:34 <tusho> AnMaster: How to Design Programs.
13:22:34 <fizzie> AnMaster: How to Design Programs, a book.
13:22:35 <tusho> It sucks.
13:22:37 <AnMaster> ah
13:22:45 <tusho> AnMaster: Here, lemme give you a good tutorial:
13:22:51 <AnMaster> tusho, scip
13:22:54 <fizzie> htdp.org has full text, but don't bother.
13:22:57 <AnMaster> use the online version of it
13:22:57 <tusho> AnMaster: No. :-P
13:23:00 <AnMaster> tusho, no?
13:23:02 <tusho> SICP is a good book.
13:23:04 <AnMaster> yes
13:23:11 <tusho> But it won't help you learn Scheme as a programming language for doing things in.
13:23:25 <tusho> SICP's only relation to scheme is that it happens to be a good language for what it does.
13:23:40 <AnMaster> hm...
13:23:41 <tusho> AnMaster: here
13:23:41 <tusho> http://www.ccs.neu.edu/home/dorai/t-y-scheme/t-y-scheme.html
13:23:47 <tusho> Teach Yourself Scheme in Fixnum Days
13:23:51 <fizzie> Hah, good old Fixnum Days.
13:24:05 <fizzie> Mentioned in the course material listing for our Scheme course.
13:24:11 -!- puzzlet_ has joined.
13:24:23 <fizzie> Was about to suggest the same thing but decided to wait to see if it's the same.
13:24:30 <AnMaster> hm the design of the "page turner" is the same as for the online scip
13:24:32 <AnMaster> interesting
13:24:38 <tusho> yes
13:24:45 <tusho> same converter
13:24:48 <AnMaster> ah
13:24:48 <tusho> http://www.ccs.neu.edu/home/dorai/tex2page/tex2page-doc.html
13:24:58 <tusho> the R5R* standards for scheme use it too
13:25:10 <AnMaster> tusho, stop breaking my conspiration(sp?) theories!
13:25:12 <AnMaster> ;P
13:25:17 <tusho> AnMaster: Constipation theories!
13:25:34 <fizzie> tusho: R*RS instead of R5R*, maybe? :p
13:25:45 <tusho> fizzie: Shut up. :-P
13:25:47 <AnMaster> tusho, no don't think that is right....
13:25:51 <fizzie> "Revised^5 Report on the Algorithmic Language *"
13:25:52 <tusho> R6RS is not Scheme! :<
13:26:04 <tusho> AnMaster: No it's definitely constipation theories.
13:26:13 <AnMaster> Definitions of Constipation on the Web:
13:26:13 <AnMaster> * Bowel movements are infrequent or incomplete.
13:26:14 <tusho> AnMaster: I'm telling you this for prosteriority.
13:26:15 <AnMaster> no...
13:26:53 <AnMaster> konspiration in Swedish... so I guess it should be conspirator theories or something?
13:27:07 <AnMaster> conspiracy theories?
13:27:30 <fizzie> "Cons-piracy", how Scheme-ish.
13:27:36 <AnMaster> hah
13:27:43 -!- GregorR has joined.
13:28:11 <AnMaster> btw that mzscheme seems to take ages to compile
13:28:28 <tusho> perhaps it does, that's why source-based distros are stupid
13:28:34 <fizzie> It has that one compilation-optimilization step that takes quite a long time.
13:29:10 <AnMaster> I think it is more due to that download haven't finished yet in fact...
13:29:11 <AnMaster> sigh
13:29:39 <AnMaster> and that is very odd, since usually I get better speed than this
13:29:45 <fizzie> Aw, mzscheme doesn't define the /c([ad]+)r/ functions for cases where length($1)>4. :/
13:30:03 <tusho> fizzie: The spec doesn't require it to.
13:30:08 <tusho> R5RS just defines those functions.
13:30:22 <fizzie> Sure, but it doesn't forbid it either.
13:31:46 <oklopod> 0/1/inf
13:33:14 <AnMaster> doesn't everything have a return value in scheme? At least the REPL doesn't print out what (if anything) (define x 3) returns
13:34:33 <tusho> AnMaster: (define x 3) returns an unspecified value
13:34:38 <fizzie> It has an unspecified value, yes.
13:34:42 <tusho> Which has a representation of the null string.
13:34:48 <tusho> There's a way to make it print as #<void>, iirc.
13:34:54 <AnMaster> aha
13:35:00 <tusho> also
13:35:02 <tusho> BAYES WORKS!!!
13:35:03 <tusho> :DDDDDDDDDDDD
13:35:22 -!- pikhq has quit (Remote closed the connection).
13:35:45 <tusho> From: Bayes <bayes@eso-std.org>
13:35:45 <tusho> To: agora-business@agoranomic.org
13:35:45 <tusho> Subject: BUS: Bayes voting
13:35:45 <tusho> Date: Wed, 1 Oct 2008 12:32:14 +0000 (UTC)
13:35:46 <tusho> Bayes votes as follows:
13:35:46 <tusho> 5732 FORx2
13:35:47 <tusho> 5733 AGAINSTx2
13:35:47 <fizzie> Yes, actually it might be more correct to say that (in MzScheme) it has the representation #<void>, and the REPL doesn't print it.
13:35:49 <tusho> --
13:35:51 <tusho> bayes 2008-10-01 13:10:18 +0100
13:36:14 <tusho> (The timestamp is the version btw.)
13:37:06 <fizzie> (display (set! x 42)) prints "#<void>", after all.
13:37:08 -!- puzzlet has quit (Read error: 110 (Connection timed out)).
13:38:16 <fizzie> tusho: Weren't you a Django person? Is it any good?
13:38:20 <tusho> So. 199 lines of code (+ 56 but that's just the script I used to take a look at how it votes) just voted on two agoran proposals as a partnership.
13:38:27 <tusho> fizzie: Yes, Django is good.
13:38:34 <tusho> fizzie: Don't read djangobook.com, it's outdated.
13:38:37 <fizzie> It seemed good to me, but I've been wrong before.
13:38:40 <tusho> fizzie: Try the official site's tutorial for a starter.
13:39:00 <fizzie> Yes, that's what I've been reading, as well as links from it. So far it has seemed nice.
13:39:53 <fizzie> The automagically generated "admin" thing sounds rather gimmicky, but can't deny the usefulness of it. Of course this is not the right place to talk about useful things.
13:40:05 <tusho> fizzie: it sounds gimmicky but it's actually useful.
13:40:13 <tusho> ofc, you have to use the admin models to get it to work nicely
13:40:19 <tusho> but that's less work than recoding a whole admin interface again
13:40:26 <tusho> Also, its built in authentication framework is good.
13:40:28 <tusho> Use it. :-P
13:40:39 -!- pikhq has joined.
13:40:47 <tusho> I had troubles using it first - Not Invented Here and all that
13:40:52 <tusho> but when I decided to try it it's actually really good
13:41:11 <tusho> (Save this link for later if you end up wanting to try the auth system: http://www.b-list.org/weblog/2006/jun/06/django-tips-extending-user-model/)
13:42:56 <fizzie> Actually I came across that one already. Yes, I think I'll try it. Usually I tend to reinvent everything, but so far the existing things have seemed to be much like what I would have written myself, except with more features that don't really hurt.
13:44:52 <tusho> fizzie: That's the problem with avoiding NIH - the stuff that you use has to fit your mental model. The other option is having a non-opinionated framework that lets you tweak it to how you want, but that's often more effort for you than just reinventing it, and also is way more effort for the framework writer.
13:44:54 <AnMaster> http://www.ccs.neu.edu/home/dorai/t-y-scheme/t-y-scheme-Z-H-4.html <-- that got an issue, it mentions expt, but not what expt is....
13:45:05 <AnMaster> seems like it is an odd name for pow() in many other languages
13:45:41 <tusho> AnMaster: expt = exponential
13:45:43 <tusho> so yes
13:45:52 <AnMaster> right. Explains the name
13:46:02 <tusho> I was wondering what problem you had with it but then realised you probably don't know english mathematical terminology's abbreviations :-P
13:46:19 <AnMaster> tusho, indeed I don't.
13:46:54 <fizzie> Some slack may be cut for it since the context -- "+, -, *, /, expt" -- gives a strong cue.
13:47:18 <AnMaster> (define (^ x y) (expt x y)) <-- no idea if that is a good idea, but seems to work, in guile, still waiting for mzscheme to finish building
13:47:42 <fizzie> You can just (define ^ expt) if you like.
13:47:48 <AnMaster> fizzie, interesting
13:48:08 <tusho> AnMaster: You don't wanna do that.
13:48:09 <tusho> :-P
13:48:09 <tusho> Also
13:48:12 <tusho> Guile is the worst thing you could use
13:48:19 <tusho> It doesn't nearly come close to obeying R5Rs..
13:48:21 <tusho> *R5RS
13:48:29 <AnMaster> tusho, yes it just happened to be installing, and I'm waiting for drscheme to install
13:48:33 <tusho> :P
13:48:34 <AnMaster> installed*
13:48:37 <AnMaster> in the first case
13:48:48 <AnMaster> setup-plt: making: scribblings/quick/images
13:48:48 <AnMaster> setup-plt: making: scribblings/reference
13:48:48 <AnMaster> setup-plt: in scribblings/reference
13:48:49 <tusho> AnMaster: Anyway, generally, trying to get a language to act like another for familiarity (e.g. that ^ trick) will just hamper your learning of it.
13:48:54 <AnMaster> is how far the compiling got
13:49:04 <AnMaster> #define being {
13:49:07 <AnMaster> #define end }
13:49:08 <AnMaster> ;)
13:49:13 <AnMaster> no I don't claim it is a good idea
13:49:14 <tusho> AnMaster: BEING
13:49:15 <tusho> :D
13:49:24 <AnMaster> tusho, it's psacl
13:49:28 <AnMaster> obviously
13:49:39 <tusho> Piss ACL?
13:49:40 <AnMaster> actually could be psacal even
13:49:44 <tusho> Is that like a really bad accessing control list?
13:49:46 <fizzie> BEING ... NED
13:49:48 <tusho> *access
13:50:07 <AnMaster> tusho, I think it is virulent bda spleeing
13:52:05 <AnMaster> #define procedure void
13:52:20 <AnMaster> #define function /**/
13:52:22 <AnMaster> wait hm
13:52:26 <AnMaster> I forgot pascal syntax
13:52:31 <AnMaster> for return type
13:52:38 <AnMaster> well no great loss there.
13:54:44 <tusho> :D
13:55:12 <AnMaster> is there anyone who *don't* dislike pascal?
13:55:37 <AnMaster> apart from Borland I mean
13:56:01 <tusho> *doesn't
13:56:01 <tusho> and yeah
13:56:01 <tusho> Niklaus Wirth.
13:56:25 <AnMaster> oh yes the author of the language
13:56:26 <AnMaster> true
13:56:34 <tusho> Pascal isn't _bad_, anyway.
13:56:36 <tusho> Just obsolete.
13:56:53 <AnMaster> well yeah, Delphi however is bad
13:57:04 <tusho> yes
13:57:07 <AnMaster> since it is pascal with object orientation bolted on in a horrible way
13:57:15 <AnMaster> Delphi for .NET is *even* worse
13:57:17 <AnMaster> and yes it exists
13:57:37 <tusho> If you ever see the words "OOP", "bolted" and "on" in the same sentence, run the hell away.
13:57:54 <tusho> That includes C++.
13:58:45 <AnMaster> hm interesting both python and guile fail seriously under valgrind
13:58:54 <AnMaster> perl pass it just fine
13:59:02 <AnMaster> tusho, and yes I agree about C++
13:59:12 <AnMaster> nothing wrong with OOP, if it is done correctly IMO
13:59:26 <tusho> Oh, and the same goes for Java.
13:59:35 <tusho> There are some actual Java usecases, but it's not a good language.
13:59:46 <AnMaster> tusho, what about objc?
14:00:14 <tusho> AnMaster: Obj-C sidesteps the issue by not integrating its OOP at all.
14:00:20 <tusho> It has two halfs: a C half and a Smalltalky half.
14:00:23 <tusho> And you can mingle them.
14:00:37 <tusho> Sure, it's a bit glaring, but it doesn't involve any ugly sticky-tape.
14:00:38 <AnMaster> tusho, what? mix one bit from each?
14:00:39 <AnMaster> ?!
14:00:47 <tusho> AnMaster: what
14:00:50 <AnMaster> tusho, mingle
14:00:57 <tusho> oh
14:00:58 <tusho> :-p
14:00:59 <AnMaster> abababa
14:01:00 <AnMaster> you know
14:01:03 <tusho> yes
14:01:33 <AnMaster> thankfully I guess no one tried to mix intercal with c and smalltalk, Yes I know about CLC's lectures...
14:02:41 <AnMaster> setup-plt: rendering: xml/xml.scrbl
14:02:41 <AnMaster> setup-plt: re-rendering: compiler/cffi.scrbl
14:02:50 <AnMaster> mzscheme really got a weird build process
14:03:01 <tusho> AnMaster: That's why people don't build it manually...
14:03:02 <AnMaster> I think it is generating documentation or something
14:03:16 <AnMaster> ah yes
14:03:16 <AnMaster> setup-plt: --- building documentation ---
14:03:53 <AnMaster> tusho, no download from the official website for my platform
14:04:09 <tusho> AnMaster: See, if you were using a binary distro... :-P
14:04:17 <tusho> hm, when I pasted Bayes' votes I didn't show the proposals it voted on
14:04:19 <tusho> Anyone interested?
14:04:46 <AnMaster> tusho, I am using a binary distro.
14:04:58 <AnMaster> Just the binaries are generated locally
14:04:59 <tusho> AnMaster: Really? Which one? :-P
14:05:04 <AnMaster> instead of remotely
14:05:05 <tusho> Heh.
14:05:12 <tusho> That's just twisting terminology.
14:05:16 <AnMaster> tusho, I got /bin/cat not /bin/cat.c
14:05:19 <AnMaster> as an example
14:05:22 <tusho> AnMaster: That's just twisting terminology.
14:05:26 <AnMaster> tusho, maybe :P
14:06:06 <tusho> Hmm, I should make bayes run on a cronjob.
14:06:10 <tusho> Every hour or so, process the new email
14:06:18 <tusho> bayes@rutian:~$ python bayes/bayes.py
14:06:18 <tusho> ....
14:06:19 <tusho> bayes@rutian:~$
14:06:21 <tusho> I like that output
14:06:26 <tusho> '... there's nothing here for me. Huh?'
14:06:28 <AnMaster> I'm using a source based binary distro
14:06:40 <AnMaster> even more, the install cd had binaries, not just source
14:06:41 <tusho> (The dots represent a message it didn't process save for deleting.)
14:06:42 <AnMaster> ;P
14:07:03 <tusho> If anyone wants to see the proposals Bayes voted on: ##nomic-flood
14:07:18 <AnMaster> tusho, ah we got to the binary phase
14:07:26 <AnMaster> it is merging the binaries to the file system now
14:07:54 <tusho> Nobody cares about Bayes. :-(
14:08:01 <tusho> It's a program! That decides if things are good or not!
14:08:13 <AnMaster> I use SpamBayes myself for email filtering
14:08:15 <AnMaster> works well
14:08:52 <tusho> AnMaster: Funny you should say that. Bayes uses SpamBayes, being written in Python, as a library.
14:09:09 <AnMaster> tusho, hm interesting
14:10:15 <tusho> AnMaster: Interesting? Good. Get yer ass over to ##nomic-flood. :D
14:10:28 <AnMaster> tusho, but I think that 96% of my "ham" email could be found using this regex for subject: ^\[[^\]]+-(devel|svn|commit)\]
14:10:29 <AnMaster> ;P
14:10:35 <tusho> Heh.
14:11:04 <AnMaster> tusho, oh and I'm not interested in nomics
14:11:16 <tusho> AnMaster: But Bayes is cool.
14:11:26 <tusho> And fun.
14:11:40 <AnMaster> wtf, mzscheme ran tex config stuff at end of install
14:11:51 <AnMaster> also install is around 200 MB
14:11:53 <AnMaster> -_-
14:12:10 <AnMaster> source download was around 14 MB
14:12:15 -!- oc2k1 has joined.
14:12:31 <tusho> fizzie: Fine, you go to ##nomic-flood then. :-P
14:13:07 <fizzie> I have absolutely no clue what the whole "nomic" thing is about, it's all so confusing.
14:13:26 <tusho> fizzie: Nomic is a game where the rules let you change the rules.
14:13:35 <tusho> Here's a minimal nomic of one rule:
14:13:46 <AnMaster> > (+ 2 3)
14:13:46 <AnMaster> DrScheme cannot process programs until you choose a programming language.
14:13:46 <AnMaster> Either select the “Choose Language...” item in the “Language” menu, or get guidance.
14:13:47 <AnMaster> huh
14:13:48 <tusho> 1. Any player can propose a change to the rules. If all the other players agree to that change, it takes effect.
14:13:52 <AnMaster> I thought it was scheme?
14:14:01 <tusho> AnMaster: Choose Language -> MzScheme
14:14:06 <tusho> err, MzScheme (Full)
14:14:08 <tusho> or whatever it is
14:14:14 <tusho> fizzie: 1. Any player can propose a change to the rules. If all the other players agree to that change, it takes effect.
14:14:36 <AnMaster> tusho, err not there
14:14:41 * AnMaster is going to take screenshot
14:14:44 <tusho> AnMaster: k
14:14:45 <AnMaster> this is just too absurd
14:14:49 <tusho> No.
14:14:50 <tusho> It's not.
14:15:46 <fizzie> The language subset thing it has _was_ a bit silly.
14:15:49 <AnMaster> http://omploader.org/vc2dt
14:15:51 <AnMaster> wtf
14:16:09 <AnMaster> tusho, what one?
14:16:31 <tusho> AnMaster: Um.
14:16:34 <tusho> That's messed up.
14:16:40 <AnMaster> tusho, agreed
14:16:42 <tusho> Those shouldn't be under "legacy languages".
14:16:48 <tusho> AnMaster: you fucked up the install
14:16:53 <AnMaster> tusho, no I didn't
14:16:57 <tusho> AnMaster: Yes, yes you did.
14:17:01 <tusho> Because I have never seen that before.
14:17:04 <AnMaster> tusho, prove it
14:17:06 <tusho> From anyone.
14:17:26 <tusho> AnMaster: Generally, if everybody I know has the right screen and so do I and you have a messed up version of it...
14:17:31 <tusho> I'd not place the blame on anything but your install.
14:17:32 <fizzie> It should have a "PLT" group there, with the sensible settings.
14:17:51 <fizzie> At least in 352. :p
14:17:56 <tusho> AnMaster: 'Pretty Big' is the right language, but somehow I doubt it'll work.
14:17:58 <tusho> Fix your install...
14:18:01 <AnMaster> fizzie, this is 4.1
14:18:04 <AnMaster> not 352
14:18:48 <tusho> AnMaster: Anyway.
14:18:52 <tusho> Select 'Pretty Big'.
14:18:56 <tusho> It's the one you want to use.
14:19:05 <AnMaster> tusho, http://omploader.org/vc2du
14:19:06 <tusho> Its name makes more sense in the correct hierarchy:
14:19:09 <tusho> Scheme
14:19:09 <tusho> - PLT
14:19:12 <tusho> - - Tiny
14:19:13 <tusho> - - (etc)
14:19:15 <tusho> - - Pretty Big
14:19:17 <tusho> - - (etc)
14:19:26 <tusho> AnMaster: Yes, just click OK.
14:19:43 <AnMaster> wait isn't scheme case sensitive?
14:19:49 <tusho> NO.
14:19:50 <tusho> ER
14:19:52 <tusho> capslock
14:19:53 <tusho> No.
14:20:15 <AnMaster> sure that is in the standard?
14:20:25 <tusho> AnMaster: Have you read R5RS?
14:20:26 <tusho> Have I?
14:20:32 <AnMaster> tusho, no idea if you have
14:20:37 <tusho> '(no yes)
14:21:20 <AnMaster> err
14:21:21 <AnMaster> $ mzscheme
14:21:21 <AnMaster> Welcome to MzScheme v4.1 [3m], Copyright (c) 2004-2008 PLT Scheme Inc.
14:21:21 <AnMaster> > (define x 3)
14:21:21 <AnMaster> > X
14:21:21 <AnMaster> reference to undefined identifier: X
14:21:23 <AnMaster> > x
14:21:25 <AnMaster> 3
14:21:35 <tusho> AnMaster: Different language.
14:21:44 <tusho> Select Pretty Big in DrScheme and go with it.
14:22:10 <AnMaster> tusho, different? So it isn't scheme?
14:22:30 <tusho> AnMaster: It is a variation on scheme with case sensitive turned on, presumably.
14:22:45 <tusho> Seriously: Pretty Big, OK, continue reading fixnum days. :P
14:23:15 <AnMaster> tusho, well http://www.ccs.neu.edu/home/dorai/t-y-scheme/t-y-scheme-Z-H-3.html#node_chap_1 suggests command line mzscheme
14:23:26 <tusho> Fine. Then use command-line mzscheme.
14:23:26 <tusho> :-P
14:23:39 <AnMaster> just indeed it states "normally case insensitive"
14:23:40 <AnMaster> hm
14:23:46 <tusho> Oh well.
14:23:50 <tusho> Just go with what fixnum days says.
14:23:59 <tusho> Huh. I just installed 4.1 and get the same language selection box as you.
14:24:01 <tusho> Ahhh, I know.
14:24:07 <tusho> Youre meant to us "Module"
14:24:13 <AnMaster> tusho, there, not my fault!
14:24:14 <tusho> which uses whatever language is specified in the module header
14:24:19 <AnMaster> so stop blaming my install
14:24:27 -!- oerjan has joined.
14:24:31 <tusho> AnMaster: Prior to that I had no reason to believe it was not your install.
14:24:33 <tusho> Kthx.
14:24:50 <AnMaster> tusho, maybe you should be more careful in the future? ;P
14:25:03 <tusho> Meh.
14:25:04 <AnMaster> tusho, anyway I prefer to work from REPL instead of files
14:25:15 <fizzie> Yes, R5RS defines that an implementation has a "preferred case" to which it converts all symbols. (Except those generated by string->symbol, which can have characters in a nonstandard case.)
14:25:19 <tusho> DrScheme is a REPL+file environment.
14:25:30 <tusho> Anyway, just do what Fixnum Days says.
14:25:57 <AnMaster> anyway readline doesn't work in command line mzscheme
14:25:58 <AnMaster> sigh
14:26:33 <tusho> AnMaster: Use rlwrap.
14:26:46 <tusho> also
14:26:47 <AnMaster> hm
14:26:47 <tusho> AnMaster:
14:26:49 <tusho> mzscheme -il readline
14:27:00 <tusho> ah, wait
14:27:12 <tusho> AnMaster: Do this
14:27:14 <tusho> in mzscheme
14:27:14 <tusho> (install-readline!)
14:27:18 <tusho> then restart it
14:27:28 <AnMaster> -il readline *did* work. it seems?
14:27:33 <tusho> Oh.
14:27:34 <tusho> Okay then.
14:27:37 <tusho> You can do (install-readline!) now.
14:27:41 <tusho> So that just 'mzscheme' will use readline.
14:27:50 <AnMaster> > (install-readline!)
14:27:50 <AnMaster> reference to undefined identifier: install-readline!
14:28:02 <AnMaster> ah I need the -il too
14:28:02 <tusho> Hm.
14:28:05 <tusho> Ah.
14:28:05 <tusho> Yes.
14:28:07 <tusho> I mean
14:28:09 <tusho> mzscheme -il readline
14:28:11 <fizzie> And actually: R6RS Scheme _is_ case-sensitive.
14:28:13 <tusho> (install-readline!)
14:28:15 <tusho> ^D
14:28:16 <tusho> mzscheme
14:28:19 <tusho> fizzie: R6RS sucks.
14:28:24 <tusho> And nobody sane uses it.
14:28:38 <AnMaster> fizzie, so R5RS is case sensitive? or undefined?
14:28:45 <tusho> R5RS is case insensitive.
14:28:52 <tusho> R6RS is case sensitive.
14:28:52 <fizzie> Case-insensitive, after a fashion.
14:28:58 <tusho> And R6RS probably didn't actually pass properly.
14:29:07 <tusho> (The committee ... weren't too careful with their votes.)
14:29:17 <tusho> (Also, they used a stupid-shit vote counting algorithm)
14:29:23 <tusho> (That essentially meant it would pass no matter what)
14:29:38 <tusho> All of the major scheme implementations have basically said that they're not implementing R6RS.
14:29:46 <fizzie> In R5RS symbols are turned into the implementation's preferred case in most cases (pun unintended), which makes it pretty case-insensitive.
14:30:24 <fizzie> MzScheme has been case-sensitive by default a reasonably long time, though.
14:30:48 <tusho> Anyway just do what fixnum says, srsly
14:30:48 <tusho> :-P
14:31:19 <AnMaster> > (define a 1)
14:31:19 <AnMaster> > a
14:31:19 <AnMaster> 1
14:31:19 <AnMaster> > (define a 2)
14:31:19 <AnMaster> > a
14:31:20 <AnMaster> 2
14:31:22 <AnMaster> > (set! a 5)
14:31:24 <AnMaster> > a
14:31:26 <AnMaster> 5
14:31:28 <AnMaster> hm
14:31:30 <AnMaster> so...?
14:31:32 <tusho> AnMaster: why is that hm
14:31:32 <AnMaster> single assignment or not?
14:31:36 <tusho> No.
14:31:38 <tusho> Not single assignment.
14:31:40 <AnMaster> and what is the difference between set! and define there
14:31:44 <tusho> define defines.
14:31:46 <tusho> set! sets.
14:31:47 <AnMaster> they seem to work exactly the same
14:31:52 <AnMaster> tusho, oh it is another variable?
14:31:56 <tusho> AnMaster: No.
14:32:04 <tusho> But in R5RS syntax, define can only appear at the start of a function.
14:32:07 <tusho> set! can appear anywhere.
14:32:08 <tusho> Anyway.
14:32:09 <AnMaster> ah
14:32:16 <AnMaster> and REPL mess that up?
14:32:16 <tusho> As R5RS specifies it:
14:32:20 <tusho> define is basically purely functional
14:32:24 <tusho> set! is destructive
14:32:29 <tusho> But yeah, in a REPL they have no difference.
14:32:48 <AnMaster> so in a function you will get an error when trying to change using define?
14:32:58 <tusho> AnMaster: No.
14:33:01 <tusho> It'll just shadow the variable.
14:33:02 <tusho> But
14:33:07 <tusho> (lambda () foobar (define ...))
14:33:09 <tusho> Is technically illegal.
14:33:14 <tusho> I don't think any impls enforce that...
14:33:17 <fizzie> Er, of course they have a difference: set! can't set an undefined identifier.
14:33:19 <AnMaster> hm interesting
14:33:23 <tusho> fizzie: Well, that too.
14:34:15 <tusho> http://www.offensive-security.com/movies/vistahack/vistahack.html OMG IF SOMEONE HAS PHYSICAL ACCESS TO YOUR MACHINE THEY CAN HACK IN TO IT :O :O :O
14:35:05 <AnMaster> tusho, so... how does a shadowed definition differ from a changed definition? If scheme have pointers or references I could see how, but does it have that?
14:35:06 <oerjan> SHOCKING
14:35:14 <tusho> AnMaster:
14:35:16 <tusho> (define a 2)
14:35:25 <tusho> (define (foo) (define a 3) a)
14:35:29 <tusho> (foo) => 3
14:35:31 <tusho> a => 2
14:35:36 <tusho> VERSUS
14:35:39 <tusho> (define a 2)
14:35:43 <tusho> (define (foo) (set! a 3) a)
14:35:44 <AnMaster> tusho, right, the scope
14:35:45 <tusho> (foo) => 3
14:35:46 <tusho> a => 3
14:36:05 <fizzie> Oh, and I have another difference: you can't use "(set! (x a) (+ a 1))" as a shorthand for "(set! x (lambda (a) (+ a 1)))", but with define you can.
14:36:14 <tusho> Well, yes.
14:36:21 <fizzie> Nit-picking: it's what I do.
14:36:33 <tusho> fizzie: FIZZIE: nitpicking
14:36:41 <tusho> Imagine that on a motivational poster, would you.
14:36:44 <tusho> FIZZIE
14:36:46 <tusho> nitpicking
14:37:10 <fizzie> Admittedly, even R5RS says: "At the top level of a program, a definition -- has essentially the same effect as the assignment expression -- if <variable> is bound."
14:37:10 <oerjan> FIZZIE: for all your nitpicking needs
14:37:54 <tusho> GAME LOST I JUST
14:41:05 <tusho> oerjan: did any programs play agora back in the day?
14:41:47 <oerjan> not that i recall
14:43:12 <tusho> Cool. I think Bayes will be the first mechanical playing machine, then. (PerlNomic Partnership doesn't count, it just does things like vote by proxy of the players.)
14:43:56 <AnMaster> reference to undefined identifier: set-car! <-- huh?
14:44:11 <tusho> AnMaster: In PLT Scheme 4, they made all conses immutable by default.
14:44:19 <tusho> It makes things faster and also more functionally.
14:44:24 <AnMaster> tusho, well was just following fixnum days
14:44:31 <tusho> AnMaster: Yeah, well,
14:44:31 <AnMaster> trying out the bits in order to learn
14:44:33 <tusho> use mcons
14:44:42 <tusho> (Mutable Cons)
14:45:00 <tusho> (Note: I disagree with the choice to move to immutable conses by default)
14:45:05 <AnMaster> is that consistent with R5RS?
14:45:11 <tusho> AnMaster: Nope.
14:45:31 <AnMaster> tusho, well I would like to use a standard following scheme
14:45:42 <tusho> AnMaster: It's not a problem.
14:45:45 * AnMaster checks command line options
14:45:48 <tusho> Most code doesn't use set-car!/set-cdr!.
14:46:04 <tusho> When it does, just use mcons/mcar/mcdr/set-mcar!/set-mcdr!
14:46:06 <tusho> But that's a very rare case.
14:46:13 <tusho> AnMaster: set-car!/set-cdr! is considered quite poor style
14:46:20 <tusho> for large values of quite
14:46:39 -!- puzzlet_ has changed nick to puzzlet.
14:46:43 <AnMaster> tusho, yes I understand that, still I assume not all other implementations have the m names
14:46:54 <tusho> AnMaster: Scheme code is not portable. End of.
14:47:04 <tusho> None of the libraries - at all - or the ways of loading them - are portable.
14:47:09 <tusho> SRFI libraries, yes, portable.
14:47:11 <tusho> But not the ways to load them.
14:47:26 <tusho> it is impossible to write a non-trivial R5RS program that runs on multiple implementations without modification.
14:47:33 <AnMaster> hm
14:47:42 <tusho> Best option: Deal with it, use PLT Scheme's dialect, because it has a big user community and is the best impl.
14:47:50 <AnMaster> what about R6RS?
14:47:59 <tusho> R6RS is laughable.
14:48:08 <tusho> It only passed because they decided to count the votes in a retarded way,
14:48:11 <tusho> there is NO user community,
14:48:20 <AnMaster> maybe common lisp is more portable?
14:48:22 <tusho> only a handful of implementations - none with substantial libraries - although R6RS does have more libraries built in -
14:48:31 <tusho> and also R6RS' built in libraries are quite unschemish
14:48:34 <tusho> AnMaster: Yes, but still not by much.
14:48:39 <AnMaster> hm
14:48:46 <tusho> Common Lisp has a way to print numbers in roman numerals built-in
14:48:50 <tusho> but no standard networking library.
14:48:53 <tusho> Also, scheme is nicer.
14:48:59 <AnMaster> tusho, useful for intercal
14:49:01 <tusho> My advice: Just stick with PLT...
14:49:07 <tusho> AnMaster: No, INTERCAL does it in another way
14:49:15 <tusho> With its extra lines for _ super/subscripts
14:49:20 <AnMaster> ah yes true
14:49:54 <AnMaster> tusho, well then, what about a fixnum days compatible scheme? Does that exist?
14:50:09 <tusho> AnMaster: Yes, it's called "obsolete PLT scheme". Honestly, though: It hasn't changed much.
14:50:13 <tusho> mcons is probably the only major snag you'll hit
14:50:15 <AnMaster> hm
14:50:19 <tusho> and I doubt fixnum uses set-car!/set-cdr! much anyway
14:50:37 <AnMaster> hm
14:50:42 <tusho> hm
14:51:55 <oerjan> hm
14:53:59 <fizzie> Re MzScheme, since version 4 there's the command-line executable "plt-r5rs" which loads MzScheme in R5RS mode -- that might even match fixnum's language better than current default PLT scheme.
14:54:30 <fizzie> I don't really have a good guess to how much PLT-isms there are in fixnum.
14:54:55 <fizzie> At least the case-sensitivity seems to go away in "plt-r5rs". :p
14:55:18 <fizzie> (And conses become mutable, obviously.)
14:55:45 <tusho> I would just use mzscheme.
14:55:52 <tusho> :-P
14:55:58 <tusho> since everyone else does
14:56:24 <AnMaster> tusho, that is case sensitive, which you claimed scheme wasn't ;P
14:56:33 <tusho> AnMaster: no, I said R5RS scheme wasn't
15:07:26 -!- ae5ir has joined.
15:41:19 -!- KingOfKarlsruhe has joined.
15:42:28 <tusho> http://en.wikipedia.org/wiki/List_of_numbers
15:48:17 -!- optbot has set topic: the entire backlog of #esoteric: http://tunes.org/~nef/logs/esoteric | for backup files.
15:50:13 * oerjan doesn't think people would be happy if he started using #esoteric for backup
15:50:28 <tusho> oerjan: try it
15:51:05 <AnMaster> tusho, I think I hit another such incompatiblity
15:51:09 <AnMaster> spelling
15:51:17 <tusho> AnMaster: wut
15:51:22 <AnMaster> tusho, http://www.ccs.neu.edu/home/dorai/t-y-scheme/t-y-scheme-Z-H-6.html#node_sec_4.3
15:51:34 <tusho> ya what about it
15:51:53 <AnMaster> "reference to undefined identifier: c
15:51:53 <AnMaster> "
15:52:06 <tusho> AnMaster: "The clause whose head contains the value of c is chosen."
15:52:13 <tusho> My placeholder variables, let me show you them.
15:52:17 <AnMaster> ah
15:52:27 <AnMaster> right
15:52:33 <tusho> :-P
15:52:54 * AnMaster got a cold so not thinking 100% straight atm
15:53:06 <tusho> AnMaster: Try going on hold.
15:53:58 <KingOfKarlsruhe> yeah i am the reason scheme
15:54:02 <KingOfKarlsruhe> for*
15:54:52 <tusho> kCongrats, you speak less sense than fungot...
15:54:53 <fungot> tusho: a multiline text box in a post regarding stalin 0.9, but i
15:55:47 <tusho> stalin is a scheme impl
15:55:47 <tusho> :D
15:55:58 <tusho> only restricted R*4*RS though
15:56:04 <tusho> its hyper-optimizing
15:57:29 <tusho> hi ais523
15:59:42 <tusho> brb
16:00:28 <KingOfKarlsruhe> optbot: do you like scheme ?
16:00:28 <optbot> KingOfKarlsruhe: yeah lzw is used in gif
16:04:35 <fizzie> fungot: Care to write me a Funge-98 Scheme implementation so that I can add a ^scheme command?
16:04:36 <fungot> fizzie: i deliberately made some things different from scsh?
16:04:52 <fizzie> fungot: You mean you already *have* written one?
16:04:52 <fungot> fizzie: ( fnord ' dwim) ( dwim) will do anything, and 3
16:05:12 <oerjan> that's some kickass scheme implementation
16:06:05 <fizzie> fungot: Anything _and_ three! Wow!
16:06:06 <fungot> fizzie: where is scsh? that is a very original thought....are you a poet?
16:06:55 <fizzie> I think I'm being dissed here.
16:08:02 -!- KingOfKarlsruhe has quit (Remote closed the connection).
16:08:25 -!- KingOfKarlsruhe has joined.
16:09:20 -!- Sgeo has joined.
16:33:47 -!- Sgeo has quit (Read error: 110 (Connection timed out)).
16:34:22 <Deewiant> fizzie: try using Sponge to compile Sponge itself into Befunge
16:51:30 <AnMaster> tusho, there?
16:51:35 <tusho> No.
16:51:36 <tusho> :D
16:51:39 <fizzie> I don't think it's capable of compiling itself at the moment.
16:51:40 <oerjan> on the other side
16:51:54 <tusho> fizzie: wut is sponge
16:52:05 <fizzie> "Sponge - a compiler (in Common Lisp) from a tiny subset of Scheme to Befunge 98."
16:52:27 <AnMaster> tusho, Well, copy-pasting the definition of when from http://www.ccs.neu.edu/home/dorai/t-y-scheme/t-y-scheme-Z-H-10.html#node_sec_8.1 caused "reference to undefined identifier: IF" when trying to use the macro later
16:52:29 <tusho> fizzie: Didjoo write it?
16:52:36 <fizzie> tusho: Nopey.
16:52:41 <tusho> AnMaster: case sensitive
16:52:41 <AnMaster> tusho, which explains why I couldn't get it to work on it's own
16:52:49 <tusho> AnMaster: should be "if'
16:52:52 <tusho> *"if"
16:53:04 <AnMaster> hm
16:53:11 <tusho> AnMaster: now I'm _sure_ you could have figured that out yourself...
16:56:05 <AnMaster> tusho, ok then the other bit:
16:56:07 <AnMaster> > (when (= 1 1)
16:56:07 <AnMaster> (list 1 2 3))
16:56:07 <AnMaster> readline::379: if: bad syntax (must have an "else" expression) in: (if (= 1 1) (begin (list 1 2 3)))
16:56:22 <AnMaster> interesting if incompatibility it seems
16:56:29 <tusho> AnMaster: Yes. That is odd.
16:56:37 <tusho> Add the else condition (third if parameter) as (void).
16:56:47 <tusho> That is what (if x y) means in R5RS.
16:56:53 <AnMaster> hm
16:56:56 <tusho> Except you can't do (void) in R5RS. :-P
16:56:59 <tusho> but yeah
16:57:00 <tusho> that's odd
16:57:02 <tusho> but easily fixable
16:57:13 <AnMaster> tusho, so which one is wrong: fixnum or mzscheme?
16:57:22 <Deewiant> fizzie: you can always extend it :-)
16:57:39 <tusho> AnMaster: Fixnum was right relating to mzscheme when it was written, but mzscheme has changed.
16:57:41 <tusho> It's all relative.
16:57:48 <tusho> Anyway, you don't really ever do (if x y).
16:57:53 <tusho> So I guess it was just for consistency.
16:57:58 <fizzie> Deewiant: Maybe I'll just write a Scheme interpreter. How hard can it be? I already wrote one in Prolog, with continuation support and everything.
16:58:16 <tusho> fizzie: Unlimited call/cc in befunge>
16:58:21 <tusho> If you do that I love yo
16:58:21 <tusho> u
16:58:21 <AnMaster> tusho, also I think that macro is somehow messing up the readline history. How strange
16:58:30 <tusho> AnMaster: Huh.
16:58:53 <fizzie> And you definitely do (if x y)... like (if debug (display "blah")).
16:59:04 <Deewiant> fizzie: well, Prolog supports things like data structures :-P
16:59:06 <tusho> fizzie: Ok, true.
16:59:07 <tusho> Well...
16:59:11 <tusho> I don't know.
16:59:13 <tusho> Lemme check in PLT.
16:59:18 <tusho> Perhaps AnMaster's installation actually is fucked. :-P
16:59:21 <AnMaster> tusho, using up arrow skips anything written in this session up until the end of the when macro definition
16:59:23 <AnMaster> it seems
16:59:31 <fizzie> MzScheme v4.0.1 doesn't like 'if' without an else branch.
16:59:33 <tusho> AnMaster: odd
16:59:39 <tusho> fizzie: Also odd.
16:59:51 <tusho> anyway
17:00:02 <tusho> (if debug (display "blah")) is probably not as functional as good scheme should be
17:00:02 <fizzie> (Except when running with "plt-r5rs" when it does "R5RS legacy support loaded".)
17:00:16 <fizzie> Functional, schmunktional, it's a debugging thing. :p
17:00:20 <tusho> AnMaster: check the docs
17:00:26 <fizzie> Of course it's easy to add a "#f" else branch there.
17:00:28 <tusho> (drscheme->help->plt docs)
17:00:43 <AnMaster> tusho, anything specific in those docs? or just in general?
17:00:55 <tusho> AnMaster: Search for 'if'?
17:00:58 <AnMaster> right
17:00:59 <tusho> 'if provided from mzscheme's i the resutl yo uwant
17:01:02 -!- slereah has joined.
17:01:11 <tusho> Hmm...
17:01:14 * tusho reads
17:02:01 -!- Slereah_ has quit (Read error: 104 (Connection reset by peer)).
17:02:07 <tusho> AnMaster: * Use `when' instead of one-armed `if' (which is no longer allowed).
17:02:08 <tusho> Ha.
17:02:11 <tusho> So the macro you are writing...
17:02:14 <tusho> ...is now in the core
17:02:17 <tusho> :-D
17:02:24 <AnMaster> tusho, I was just trying an example in the fixnum
17:02:27 <tusho> yeah
17:02:28 <tusho> just saying
17:02:36 <tusho> AnMaster: perhaps try
17:02:40 <tusho> when-not
17:02:42 <tusho> (define-macro when
17:02:46 <tusho> er
17:02:48 <tusho> (define-macro when-not
17:02:49 <tusho> (lambda test . branch)
17:02:55 <tusho> `(when (not ,test)
17:03:03 <AnMaster> tusho, maybe "unless"? would be a better name
17:03:04 <tusho> (begin ,@branch)
17:03:05 <tusho> ))))))))))))))))))))))))))))
17:03:08 <tusho> AnMaster: That too.
17:03:16 <tusho> also
17:03:21 <tusho> might wanna restart mzscheme if that fails
17:03:24 <fizzie> I don't really see the reason to be so R5RS-incompatible in that particular case.
17:03:26 <tusho> you might have mucked up the core 'when'
17:03:32 <tusho> fizzie: No, nor do I, but oh wlel
17:03:35 <tusho> *well
17:04:05 <AnMaster> tusho, yeah probably
17:06:11 <fizzie> And why unhygienic define-macro instead of the <3 R5RS define-syntax? :p
17:06:16 <fizzie> > (define-syntax unless (syntax-rules () ((_ test branch ...) (when (not test) branch ...))))
17:06:20 <fizzie> > (unless #f (display 'yay) (newline))
17:06:22 <fizzie> yay
17:06:23 <tusho> fizzie: It has define-syntax.
17:06:27 <tusho> But it also has define-macro.
17:06:27 <tusho> Which
17:06:31 <tusho> is NOT the regular
17:06:33 <tusho> unhygenic one
17:06:35 <tusho> iirc
17:06:45 <tusho> it's way more powerful if I recall correctly
17:06:54 <AnMaster> fizzie, because that haven't yet been mentioned in fixnum. I guess it may be mentioned later
17:07:02 <AnMaster> that is the only reason
17:07:22 <fizzie> Well, it sure looks like plain old arbitrary code transformation.
17:07:33 <fizzie> What with all the quasiquote-unquote stuff.
17:07:58 <AnMaster> blame tusho then, since he recommended that site
17:07:59 -!- jix has quit (Read error: 113 (No route to host)).
17:08:05 <tusho> What?
17:08:08 <tusho> That tutorial is good.
17:08:09 <fizzie> No, I like the fixnum tutorial too.
17:08:13 <tusho> fizzie was just commenting on define-macro.
17:10:01 <fizzie> But it's curious that he does point out one way to avoid variable capturing (explicit gensym'ing) and doesn't say a word about hygienic macro systems.
17:10:14 <tusho> fizzie: Probably because they're not the easiest thing to understand at first.
17:10:41 -!- ais523_ has joined.
17:10:42 <tusho> hi ais523_
17:12:20 <AnMaster> hi ais523_ yes
17:12:45 <fizzie> (hi? 'ais523_) ==> #t
17:12:52 <fizzie> I chose a topical way of saying "hi".
17:12:57 -!- jix has joined.
17:13:52 * AnMaster glares at fizzie
17:13:58 <ais523_> fizzie: is that in Scheme?
17:14:12 <tusho> ais523_: Yes.
17:14:26 <slereah> fizzie : Write "Hello world!" then
17:14:56 <tusho> (display "Hello, world!") (newline)
17:15:01 <tusho> BOY THAT WAS HARD
17:16:38 <slereah> :D
17:16:56 <oerjan> ^help
17:16:56 <fungot> ^<lang> <code>; ^def <command> <lang> <code>; ^show [command]; lang=bf, code=text/str:N; ^str 0-9 get/set/add [text]
17:17:02 <slereah> I could write it in Gdel representation, but it's kinda long :D
17:18:20 <AnMaster> http://www.ccs.neu.edu/home/dorai/t-y-scheme/t-y-scheme-Z-H-11.html#node_sec_9.2 <-- is it just me or is that extremely ugly?
17:18:37 <tusho> Yes.
17:18:39 <tusho> That is ugly.
17:18:45 <AnMaster> *shudder*
17:18:50 <tusho> But readable.
17:18:50 <oklopod> but it's probably a bit you too.
17:18:57 <tusho> I mean, it's not the ideal form.
17:19:02 <tusho> but I can read it without too many problems
17:19:05 <tusho> Doesn't stop it being ugly
17:19:16 <oklopod> that's actually quite pretty
17:19:19 * oerjan chases after the pod man ---##
17:19:35 <slereah> What is that function for?
17:19:55 <AnMaster> slereah, it is a macro not a function
17:20:07 <slereah> I don't know what a macro is :(
17:20:18 <fizzie> That hello-world was a bit too simple, maybe?
17:20:19 <AnMaster> well a macro is a (special case of) function too I suppose.
17:20:21 <fizzie> (for-each display (append (map (lambda (i) (string-ref "Hello, world!" i)) (letrec ((iota (lambda (from to) (if (= from to) (cons from '()) (cons from (iota (+ from 1) to)))))) (iota 0 12))) (list #\newline)))
17:20:28 <tusho> AnMaster: macros happen at compile times
17:20:40 <AnMaster> tusho, ah yes, but what about interpreters?
17:20:48 <AnMaster> instead of compilers
17:20:56 <tusho> AnMaster: then yes a special case of function
17:21:34 <AnMaster> tusho, are compile time macros turing complete I wonder...
17:21:40 <tusho> yes
17:21:43 <tusho> as they're just scheme code...
17:22:00 <slereah> heh
17:22:02 <AnMaster> tusho, would you go as far as saying: scheme functions that happen to be run at compile time
17:22:03 <slereah> o u
17:22:03 <AnMaster> ?
17:22:13 <tusho> AnMaster: Yes...that is exactly what macros are.
17:22:21 <tusho> Scheme functions that are run on the code and return code to be compiled,.
17:22:28 <AnMaster> tusho, so really a special case of function? compile time functions ;P
17:22:37 <tusho> Kinda.
17:22:53 <AnMaster> (sorry for twisting the terminology around, don't feel bad over it ;))
17:23:09 -!- oerjan has quit ("C U").
17:23:30 <oklopod> macros are just scheme code, huh? aren't there things like those weird ellipsis and shit
17:23:43 <fizzie> oklopod: They're talking about the "defmacro" style macros.
17:24:03 <oklopod> oh ic
17:24:10 <oklopod> i don't know anything about those
17:24:19 <fizzie> oklopod: Well, they're just Scheme code. :p
17:24:20 <oklopod> except i do now, in case they are just scheme code.
17:24:25 <oklopod> heh :)
17:25:26 <fizzie> In contrast, R5RS syntax-rules macros specify code transformers using a less powerful language. I don't think I want to make a guess about its Turing-completeness.
17:26:19 <fizzie> There's recursion, though, so they might well be.
17:26:53 <fizzie> The Internets contain claims that they are.
17:26:58 <AnMaster> fizzie, if they are tc they would be equally powerful to defmacro style, right?
17:27:03 <tusho> syntax-rules is TC
17:27:14 <tusho> Source: Oleg
17:27:26 <tusho> http://okmij.org/ftp/Scheme/macros.html#turing-completeness-hygiene
17:27:33 <tusho> (Oleg has, as far as I know, never been wrong.)
17:30:20 -!- megatron has joined.
17:30:22 <fizzie> But it's not like a TC macro system would mean it'd have to be able to do all the code transformations possible with defmacro. For example the unhygienic stuff should not be possible. It just needs to be able to compute everything that's computable, which doesn't say it needs to be able to output sensible Scheme code.
17:30:58 <oklopod> sure
17:31:14 <tusho> fizzie: yes
17:31:16 <tusho> that is what http://okmij.org/ftp/Scheme/macros.html#turing-completeness-hygiene says
17:31:17 <tusho> :-P
17:40:32 -!- oerjan has joined.
17:49:41 <AnMaster> While I can certainly see some very very good things with scheme, I have so far two issues with it: 1) you end up with too many ))))) at the end of many expressions for it to be readable. 2) apart from really trivial things it is rather ugly languages, and then I don't mean only macros, but also code with no macros
17:51:01 <tusho> AnMaster: 1) Use an editor that balances them.
17:51:05 <tusho> Once you know Scheme you rarely notice the parens.
17:51:12 <tusho> 2) It is not ugly, your code is ugly.
17:51:35 <AnMaster> tusho, I was also thinking about many examples in fixnum for 2
17:51:45 <AnMaster> not just the basic stuff I wrote so far
17:51:47 <tusho> AnMaster: Then you're looking at them wrong.
17:51:48 <tusho> :-P
17:53:04 <AnMaster> tusho, however I'm convinced (and have been for long) that S-Expressions make a great markup format for data. I'm just not convinced it is a great format for code
17:53:21 <tusho> AnMaster: And I will respectfully disagree.
17:53:30 <AnMaster> fine with me
18:09:38 <AnMaster> tusho, I have a question...
18:09:57 <AnMaster> what is the full list of valid chars in identifiers in scheme?
18:10:03 <AnMaster> almost everything it seems... but?
18:10:23 <tusho> AnMaster: its in r5rs
18:10:27 <tusho> i'll dig it up in a min
18:10:35 * AnMaster googles
18:16:40 <fizzie> Letters, digits and the set ! $ % & * + - . / : < = > ? @ ^ _ ~, if you didn't already find it.
18:18:38 <fizzie> And +, -, ., @ can't be the first characters in an identifier, except the special cases +, - and ..., which are all identifiers.
18:19:39 -!- sebbu has joined.
18:21:30 <fizzie> The rules pretty much come from "an identifier can't begin so that it'd look like a number", and I guess @ is forbidden to make sure that ,@foo is always (unquote-splicing foo) and not (unquote @foo).
18:27:22 -!- oerjan has quit ("leaving").
18:33:09 -!- oerjan has joined.
18:42:46 <AnMaster> oerjan, do you have some time?
18:42:56 <AnMaster> I got a math related question
18:43:41 <oerjan> all the time in the world
18:43:50 <AnMaster> I was playing around with scheme, defining a gcd function, and entered some random large numbers to it. And then I noticed an odd pattern
18:43:51 <oerjan> at least until supper
18:43:53 <oklopod> no you don't, because i definitelyy have some too
18:43:59 <AnMaster> oerjan, http://rafb.net/p/i3RhgM20.html
18:44:02 <AnMaster> 1, 11, 1, 11
18:44:16 <AnMaster> my question is simple: why does it repeat like that
18:44:25 <AnMaster> seems to do so for even more 3s added
18:44:30 <AnMaster> though I can't prove it
18:44:35 <oklopod> well
18:44:37 <AnMaster> (tested with another 10)
18:44:40 <oklopod> do you know any modular arithmetic?
18:44:52 <oerjan> oklopod: it's leased. if anyone claims from either of us, we'll be as screwed as those sub-prime banks
18:45:05 <AnMaster> oklopod, I do know % in C and similar and how to use it for various things
18:45:10 <AnMaster> not sure how much that counts
18:45:31 <oklopod> AnMaster: well more like, what's 53-235 (mod 7)
18:45:38 <oklopod> do you know the reduction rules
18:45:44 -!- kar8nga has joined.
18:45:51 <oklopod> you could use those to see what underlies that magic
18:45:58 <oklopod> i think
18:45:59 <AnMaster> I assume that would be basically 53 235 - 7 mod
18:46:01 <oklopod> i don't know how!
18:46:02 <AnMaster> assuming rpn?
18:46:12 <oklopod> well yes, that's what it means
18:46:16 <oklopod> but that's not what i'm asking
18:46:38 <AnMaster> well reduction rules I don't know anything about in this case
18:46:45 <oklopod> you could try taking the first number modulo the second number, and represent them in nicer forms
18:46:50 <oklopod> and you might get something outta that
18:46:52 <AnMaster> however I don't know math terminology in English very well
18:47:22 <oerjan> hm multiplying by 10, adding 3. i am not sure that should give a consistent gcd
18:47:25 <oklopod> basically, in A <op> B (mod N), you can often do (A % N) <op> (B % N) insteda
18:47:27 <oklopod> *instead
18:47:47 <AnMaster> actually the pattern breaks at
18:47:48 <AnMaster> > (gcd 3237896520375 3094803923233333333333333333333)
18:47:48 <AnMaster> 121
18:48:05 <oerjan> right
18:48:19 <AnMaster> however then why does it repeat so long
18:48:22 <AnMaster> still
18:48:44 <AnMaster> and after that 121 it goes back to repeating 1/11 for quite a bit
18:48:52 <oerjan> the fact that it hits 11 as a factor every second step is the clue.
18:49:07 <AnMaster> yes hm...
18:49:09 <oerjan> that it rarely hits anything else may just be random chance
18:49:20 <oerjan> ah yes
18:49:26 <AnMaster> oerjan, actually the 121 replaced an 11 not an 1
18:49:39 <AnMaster> there were 1 on both sides of it
18:49:43 <oerjan> after two steps, you have replaced y by 100y+33
18:49:55 <oerjan> if y is divisible by 11, clearly so is the next
18:49:58 <AnMaster> ah
18:50:02 <AnMaster> right makes sense
18:50:35 <AnMaster> oerjan, what is more interesting then is that 121 repeats too, always replacing a 11, and very far from each other
18:50:37 <AnMaster> > (gcd 3237896520375 30948039232333333333333333333333333333333333333333333)
18:50:38 <AnMaster> 121
18:50:47 <oerjan> and that it cannot be divisible by 11 on the other steps is also likely
18:51:00 <oerjan> AnMaster: yes. this is explainable by moduli
18:51:08 <AnMaster> hm
18:51:22 <oerjan> because y%121 will go in a cycle somehow
18:51:23 <AnMaster> I guess it is like the 11 pattern, just on larger scale, right?
18:51:47 <AnMaster> > (gcd 3237896520375 309480392323333333333333333333333333333333333333333333333333333333333333333) seems to be the next 121
18:52:05 <oerjan> in fact the _entire_ gcd should repeat on a sufficiently large scale, as you take the modulus of the second number by the first
18:52:34 <AnMaster> hm?
18:52:53 <AnMaster> you mean all subpatterns too?
18:53:07 <AnMaster> is this true for any number? say 444... or such?
18:53:27 <oerjan> when you replace y by 10y+3, you replace y%3237896520375 by (10(y%3237896520375)+3) % 3237896520375
18:53:51 <oerjan> so each modulus depends only on the previous. and the gcd only depends on that modulus.
18:53:51 <AnMaster> ah I see what you mean...
18:55:18 <AnMaster> oerjan, there seems to be a pattern for 2 and 4 too, but much larger than that for 3
18:55:24 <AnMaster> so yeah
18:55:31 <oerjan> yeah there should be
18:55:44 <AnMaster> oerjan, however the 3 one was very simple and short
18:56:03 <ais523_> fungot: suggest a change to the rules of a nomic
18:56:04 <fungot> ais523_: can you ignore all but the most i can come back and write the program
18:56:36 * oerjan thinks fungot has ADHD
18:56:37 <fungot> oerjan: another problem is ie5 isn't used by the caller or callee.
18:56:40 <AnMaster> oerjan, now could there be a larger pattern than the 121-cycle for the "3-case"? Would it in theory be possible to prove?
18:57:26 <oerjan> well first you can prime factorize 3237896520375
18:57:45 <oerjan> because each distinct prime gives an independent part of the cycle
18:57:47 <AnMaster> $ factor 3237896520375
18:57:47 <AnMaster> 3237896520375: 3 5 5 5 11 11 71358601
18:58:16 <oerjan> also, you can ignore the 5's since you are multiplying by 10
18:58:27 <AnMaster> ah and 11*11 is 121...
18:58:30 <oerjan> (unless you also add something divisible by 5)
18:58:36 * AnMaster considers
18:58:55 <oerjan> hitting that last large prime is unlikely
18:59:06 <AnMaster> oerjan, why is that?
18:59:16 <oerjan> often, i mean
18:59:19 <oklopod> because you'd have to have it as a factor somewhere?
18:59:19 <AnMaster> yeah
18:59:29 <oklopod> oh often
18:59:30 <AnMaster> oerjan, but could it happen?
18:59:40 <ais523_> fungot: another suggestion? The first one was a bit short, so I want more info
18:59:41 <fungot> ais523_: hm. does this assume wrapping cells? sounds a bit dirty
18:59:57 <ais523_> wait... fungot actually said something that made sense...
18:59:58 <fungot> ais523_: some economy shit... https://www.osmosian.com/ cal-3037.zip
18:59:59 <AnMaster> oerjan, and possible 11*71358601 and 11*11*71358601 ?
19:00:11 <AnMaster> or am I totally wrong?
19:00:33 <oerjan> AnMaster: as i said the cycles of different primes are independent.
19:00:43 <AnMaster> hm
19:00:55 <AnMaster> oerjan, however how does that explain 121?
19:01:00 * AnMaster is confused now
19:01:03 <oerjan> if you hit 121 every n step and 71358601 every m step then you hit both every lcm(m,n) steps
19:01:18 <oklopod> ais523: it did?
19:01:19 <AnMaster> ah...
19:01:32 <AnMaster> oerjan, so how to compute m? :)
19:01:40 <oerjan> to look at the 121 part you need only to look at y%121 which repeats too
19:01:50 <AnMaster> ah right
19:01:53 <AnMaster> (duh)
19:02:02 <oerjan> similarly you can calculate the y%71358601 part
19:02:06 <oerjan> (of the cycle)
19:02:40 <oerjan> only when that hits 0, do you get it as part of gcd
19:03:27 <AnMaster> hm is there any quick method of finding out *when* it will hit 0, without trying every one possible number?
19:03:34 <oerjan> whether it actually _does_ hit 0 for all numbers y eventually is another matter. there could be several cycles.
19:04:26 <oerjan> lessee
19:04:56 <AnMaster> lessee?
19:05:18 <oerjan> this seems to be connected with something called primitive roots
19:05:28 * AnMaster googles
19:05:53 -!- kar8nga has left (?).
19:05:58 <oerjan> basically for any prime p there are some numbers x such that x^n repeats only every p-1 steps
19:06:50 <oerjan> if 10 is such a number for this prime, then it is likely that every y will hit 0, i think
19:07:13 <oerjan> lessee
19:07:27 <AnMaster> oerjan, however it seems it doesn't hit 0 for every y?
19:07:34 <AnMaster> 3> 309480392323333333333333333333333333333333333333333333333333333333333333333 rem 71358601.
19:07:34 <AnMaster> 14619800
19:07:34 <AnMaster> 4> 3094803923233333333333333333333333333333333333333333333333333333333333333333 rem 71358601.
19:07:34 <AnMaster> 3480801
19:07:56 <oerjan> have you got a cycle?
19:08:20 <oerjan> note that you may expect that hit to happen after 71358601/2 steps on average
19:08:23 <AnMaster> oerjan, of 71358601? Not as far as I know, all I saw was 1/11 and then 121
19:08:39 * AnMaster writes a program to test
19:09:01 <oerjan> also, you want to take modulus after each step, and use that for the next
19:09:09 <oerjan> otherwise the numbers get huge
19:09:47 <oerjan> for 121 this should be a short calculation, as it will repeat after <= 121 steps
19:10:01 <AnMaster> you mean like... y 3237896520375 % 10 * 3 +
19:10:01 <AnMaster> ?
19:10:22 <AnMaster> err wait
19:10:58 <oerjan> y = (10*y+3) % 71358601
19:11:05 <oerjan> if you are checking just that part
19:11:12 <AnMaster> right
19:11:33 <oerjan> but let me see about this primitive root thing
19:11:41 <AnMaster> oerjan, and initial y would be something like 3094803923233333333333333333 then
19:12:24 <oerjan> you only need to consider y's smaller than the modulus
19:12:48 <oerjan> or equivalently, take the modulus once as your first step
19:13:00 -!- olsner has joined.
19:13:27 <oerjan> i wanted to rewrite that equation a bit
19:13:42 <AnMaster> oerjan, then 63375004 or something?
19:13:46 <AnMaster> 1> 3094803923233333333333333333 rem 71358601.
19:13:46 <AnMaster> 63375004
19:13:51 <oerjan> yeah
19:14:24 <oerjan> ... to see if my primitive root idea actually makes sense
19:14:40 <AnMaster> so (leaving lisp and using erlang)
19:14:46 <AnMaster> something like:
19:14:47 <AnMaster> calc(0) ->
19:14:48 <AnMaster> true;
19:14:48 <AnMaster> calc(Y) ->
19:14:48 <AnMaster> Y1 = (10*Y+3) rem 71358601,
19:14:48 <AnMaster> calc(Y1).
19:15:14 <AnMaster> using 63375004 as initial value
19:15:59 <oerjan> yeah provided it actually hits
19:16:16 <oerjan> otherwise you want to keep a count to know when to stop trying
19:16:28 <oerjan> (cannot take more than 71358601 steps)
19:16:33 <AnMaster> ah a sec
19:17:29 <oerjan> as i said there is a likelyhood it _might_ take 71358600 steps per cycle, and so every number hits except one
19:18:06 <oerjan> which i'm now trying to calculate
19:18:08 <AnMaster> calc(_, 71358601) -> false;
19:18:08 <AnMaster> calc(0, _) -> true;
19:18:08 <AnMaster> calc(Y, Count) ->
19:18:08 <AnMaster> calc((10*Y+3) rem 71358601, Count+1).
19:18:09 <AnMaster> maybe
19:18:21 <AnMaster> for calc(63375004, 0) I guess
19:18:23 <oerjan> yeah
19:19:02 <oerjan> you might want to return the count
19:19:16 <AnMaster> oerjan, returns false after a few seconds on my system
19:19:21 <oerjan> ah
19:19:44 <oerjan> try Y = 0 and returning the count, that gives you the length of the whole cycle
19:20:35 <AnMaster> you mean like:
19:20:39 <AnMaster> calc(Y, 71358601) -> {false, Y};
19:20:40 <AnMaster> calc(0, Count) -> {true, Count};
19:20:40 <AnMaster> calc(Y, Count) ->
19:20:40 <AnMaster> calc((10*Y+3) rem 71358601, Count+1).
19:20:40 <AnMaster> ?
19:20:59 <oerjan> for example yeah
19:20:59 <AnMaster> and then cycle:calc(0, 0). ?
19:21:03 <oerjan> yes
19:21:11 <AnMaster> returns {true,0}
19:21:15 <oerjan> er
19:21:16 <AnMaster> heh
19:21:22 <AnMaster> since it hits 0 there
19:21:25 <oerjan> (3,0) then
19:21:35 <AnMaster> 9> cycle:calc(3, 0).
19:21:36 <AnMaster> {true,5946549}
19:21:44 <oerjan> ooh
19:21:54 <AnMaster> oerjan, took about 0.1 seconds or so
19:21:55 <oerjan> that means it _doesn't_ hit for every number
19:22:16 <AnMaster> oerjan, now you confused me
19:22:19 <AnMaster> and that is count
19:22:22 <AnMaster> since it is true
19:22:44 <AnMaster> Y was obviously 0 there
19:23:27 <oerjan> AnMaster: 5946550 is a factor of 71358600, and thus a possible cycle length
19:23:32 <AnMaster> oerjan, btw for the code to be that fast I had to use HIPE, which compiles into native code instead of erlang byte code, without HIPE it takes several seconds
19:23:52 <oerjan> a number Y hits 0 only if it is in the unique cycle which contains 0
19:24:08 <AnMaster> hm
19:24:09 <oerjan> which has length 5946550, and thus that many members
19:24:21 <AnMaster> but wasn't the number 71358601?
19:24:28 <AnMaster> or have I missed something
19:24:44 <oerjan> it's a technicality
19:24:47 <AnMaster> err
19:24:54 <AnMaster> $ factor 71358600
19:24:54 <AnMaster> 71358600: 2 2 2 3 5 5 118931
19:24:55 <AnMaster> $ factor 71358601
19:24:55 <AnMaster> 71358601: 71358601
19:25:06 <AnMaster> (if that is any help)
19:25:36 <AnMaster> (which I guess it isn't)
19:25:57 <oerjan> there will be _some_ number such that (10*y+3) rem 71358601 == y
19:26:03 <AnMaster> $ factor 5946550
19:26:03 <AnMaster> 5946550: 2 5 5 118931
19:26:04 <AnMaster> btw
19:26:38 <AnMaster> oerjan, independent of any other numbers in front like we originally had?
19:26:45 <AnMaster> 3094803923233333333333333...
19:26:51 <oerjan> hm?
19:27:06 <AnMaster> wasn't just 33333... but had some other digits in front
19:27:38 <oerjan> i am talking about a single number y
19:27:45 <AnMaster> ah
19:28:17 <oerjan> which sort of gets left out, and so the remaining large cycles get length that is a factor of 71358600
19:28:48 <AnMaster> oerjan, why 71358600 and not 71358601? I don't get that
19:29:01 <oerjan> another way of saying this (probably) is that 5946550 is the smallest number n such that 10^n rem 71358601 == 1
19:30:10 <oerjan> it is a theorem (fermat's little theorem) that x^(p-1) rem p == 1 for every prime p and gcd(x,p) == 1
19:30:47 <AnMaster> oerjan, it is proved?
19:30:52 <AnMaster> or?
19:30:52 -!- Hiato has joined.
19:30:56 <oerjan> yes
19:31:11 <AnMaster> aha
19:31:41 <oerjan> and that is, with some rearranging of equations, where these cycles come from
19:32:10 <oerjan> x is said to be a primitive root of p if p-1 is the smallest number n such that x^n rem p == 1
19:32:27 <AnMaster> oh btw tusho will be scared
19:32:33 <AnMaster> aug 11 15:23:57 * tusho will be very scared on the day when AnMaster starts preferring a functional language to C for a lot of tasks. :P
19:32:38 <AnMaster> I did that just now
19:32:46 <oerjan> but from what we've calculated so far, i expect 10 is _not_ a primitive root of the prime 71358601
19:32:56 <tusho> AnMaster: what language is it
19:32:59 <AnMaster> used Erlang instead of C, even though I knew Erlang would be slower
19:33:05 <AnMaster> though it didn't matter
19:33:06 <Judofyr> :O
19:33:12 <oerjan> instead 10^5946550 rem 71358601 == 1
19:33:14 <tusho> AnMaster: but erlang lets you microptimize
19:33:18 <tusho> and think pretty low-levelly
19:33:20 <tusho> disqualified
19:33:32 <AnMaster> tusho, I didn't microoptimise
19:33:37 <AnMaster> calc(Y, 71358601) -> {false, Y};
19:33:37 <AnMaster> calc(0, Count) -> {true, Count};
19:33:37 <AnMaster> calc(Y, Count) ->
19:33:37 <AnMaster> calc((10*Y+3) rem 71358601, Count+1).
19:33:39 <AnMaster> was all
19:33:44 <tusho> k
19:33:45 <tusho> :P
19:34:03 <AnMaster> tusho, it was the natural way to write it, in the natural language to write it
19:34:10 <tusho> k
19:34:12 <tusho> :P
19:34:24 <AnMaster> tusho, and it was functional and tail recursive :P
19:34:50 <AnMaster> tusho, non-tail recursive wouldn't have worked since we hit 5946549 iterations
19:35:02 <AnMaster> oerjan, so what is a primitive root to that prime?
19:35:26 <oerjan> oh wait
19:35:36 <oerjan> i've guessed wrongly
19:35:41 <oerjan> er no
19:35:46 <AnMaster> ?
19:35:50 <oerjan> scratch that, i got confused
19:35:57 <oerjan> i am right after all :D
19:36:31 <oerjan> i don't personally know any way to find a primitive root other than testing random candidates
19:36:51 <oerjan> but they do exist, by theorem
19:37:08 <AnMaster> oerjan, are they larger or smaller than the prime?
19:37:12 <AnMaster> or both?
19:37:12 <oerjan> smaller
19:37:14 <AnMaster> ah
19:37:25 <oerjan> only modulos vs. the prime count, after all
19:37:29 <AnMaster> then an exhaustive search shouldn't be that bad
19:37:34 <AnMaster> the prime is pretty small after all
19:38:02 <oerjan> lessee
19:38:09 <oerjan> 71358600: 2 2 2 3 5 5 118931
19:38:13 <AnMaster> oerjan, and is http://en.wikipedia.org/wiki/Primitive_root_modulo_n#Finding_primitive_roots relevant?
19:38:25 <oerjan> quite likely
19:38:38 <AnMaster> oerjan, I got to say that text is over my head though :(
19:38:57 <AnMaster> even more so since it is in English, and I really lack the math terminology in English
19:39:52 <oerjan> in this case it's probably easier just to test candidates.
19:40:08 <AnMaster> I can't work out the needed maths
19:41:00 <oerjan> there should be 1*1*1*2*4*4*118930 primitive roots of 71358601, by the above factorization if i am correct
19:41:09 <oerjan> so hitting one is not too hard
19:42:02 <AnMaster> 3805760, thats a lot
19:42:47 <AnMaster> oerjan, however I still fail at the maths for it
19:43:44 <oerjan> you want to calculate x^n rem 71358601 and check how fast it hits 1
19:43:59 <AnMaster> with steps of n+1?
19:44:31 <AnMaster> err
19:44:33 <oerjan> Y1 = (Y0*X) rem 71358601 in something resembling your calc function
19:44:40 <oklopod> heyyy i've read the primitive root proof for prime rings
19:45:01 <AnMaster> oerjan, were does X come from?
19:45:12 <oerjan> the candidate
19:45:14 <oklopod> primitive roots
19:45:16 <AnMaster> ah
19:45:20 <oklopod> are so cool
19:45:32 <AnMaster> oerjan, which is a huge list that I map the function on or something?
19:45:36 <oklopod> stop solving your problem bask in their coolness
19:45:39 <oklopod> *problem and
19:46:14 <oerjan> AnMaster: well if you want to find _all_ primitive roots
19:46:20 -!- sebbu has quit (No route to host).
19:46:26 <oerjan> but you probably want to stop at the first hit i guess
19:46:30 <AnMaster> yeah
19:47:03 <oerjan> 0 and 1 cannot be primitive roots, so start with 2 and go up from there
19:48:15 <AnMaster> so: initial value for X = 2, Initial value for Y = ?
19:48:26 <oerjan> 1 or X
19:48:46 <oerjan> er, X
19:48:55 <oerjan> (makes testing easier i think)
19:49:00 * AnMaster considers
19:49:18 <AnMaster> oerjan, and when to stop for each?
19:49:34 <oerjan> when Y == 1
19:50:09 <oerjan> then you return the count, which should be the smallest n such that X^n rem p == 1
19:50:20 <AnMaster> wtf I must have this mixed up
19:50:22 <AnMaster> calc_root(X, Y, 71358601) -> {false, X, Y};
19:50:22 <AnMaster> calc_root(X, 1, Count) -> {true, X, Count};
19:50:22 <AnMaster> calc_root(X, Y, Count) ->
19:50:22 <AnMaster> Y1 = (Y*X) rem 71358601
19:50:23 <AnMaster> calc(X, Y1, Count+1).
19:50:26 <AnMaster> that makes no sense
19:51:11 <AnMaster> also should be calc_root
19:51:15 <AnMaster> but even then it makes no sense
19:51:26 <AnMaster> oerjan, you confused me now
19:52:06 <oerjan> the first line is unnecessary
19:52:27 <AnMaster> oerjan, even so what about incrementing X?
19:52:34 <oerjan> the true of the second should be Count == 71358600
19:53:09 <oerjan> this is just the function for checking one candidate
19:53:18 <AnMaster> ah
19:53:19 <AnMaster> so
19:53:21 <AnMaster> calc_root(X, Y, 71358600) -> {true, X, Y};
19:53:21 <AnMaster> calc_root(X, Y, Count) ->
19:53:21 <AnMaster> Y1 = (Y*X) rem 71358601
19:53:21 <AnMaster> calc_root(X, Y1, Count+1).
19:53:29 <AnMaster> err?
19:53:37 <oerjan> um not quite
19:53:43 <oerjan> ah
19:53:45 <AnMaster> indeed it seems wrong
19:54:22 <oerjan> you can make the second line calc_root(X, 1, Count) -> calc_root(X+1,X+1, 1);
19:54:52 * AnMaster considers this
19:55:04 <AnMaster> well a bit more sense
19:55:15 <AnMaster> oerjan, any more errors?
19:55:17 <oerjan> that goes on to the next candidate
19:55:31 <oerjan> i think that should work
19:55:56 <AnMaster> well apart from the missing comma
19:55:57 <AnMaster> heh
19:56:29 <AnMaster> calc_root(2,2,1). or calc_root(2,2,0). for initial call then?
19:56:47 <oerjan> the former
19:56:52 <AnMaster> 20> cycle:calc_root(2,2,1).
19:56:52 <AnMaster> {false,7,1}
19:56:57 <AnMaster> took several seconds
19:57:04 <AnMaster> no clue how to interpret that answer
19:57:20 <oerjan> what?
19:57:27 <AnMaster> oerjan, and it seems wrong?
19:57:36 <oerjan> that's not possible from what i thought we'd agreed on :D
19:57:45 <oerjan> since there is no false in that program
19:57:52 <oerjan> ok:
19:57:58 <AnMaster> wait
19:57:58 <oerjan> calc_root(X, Y, 71358600) -> {true, X, Y};
19:57:59 * AnMaster checks
19:58:05 <AnMaster> right
19:58:08 <AnMaster> oerjan, I had false there
19:58:10 <AnMaster> for some reason
19:58:19 <oerjan> but otherwise the same?
19:58:19 <AnMaster> but otherwise the same
19:58:21 <AnMaster> yes
19:58:36 <oerjan> then 7 should be a primitive root of 71358601
19:58:45 <oerjan> and the smallest, too
19:58:50 <AnMaster> it is easy to verify I assume?
19:59:07 * AnMaster reads on wikipedia
19:59:12 <oerjan> well yeah but that's what you just did :)
19:59:52 -!- oklopod has quit (calvino.freenode.net irc.freenode.net).
19:59:55 -!- lifthrasiir has quit (calvino.freenode.net irc.freenode.net).
19:59:55 -!- dbc has quit (calvino.freenode.net irc.freenode.net).
20:00:00 -!- Hiato has quit (calvino.freenode.net irc.freenode.net).
20:00:00 -!- moozilla has quit (calvino.freenode.net irc.freenode.net).
20:00:02 -!- rodgort has quit (calvino.freenode.net irc.freenode.net).
20:00:15 <AnMaster> oerjan, err wikipedia says g^k = a (mod n) <-- that would be --> 71358601 ^ ??? = ?? (mod 7)
20:00:19 <AnMaster> or?
20:00:34 <oerjan> you have some characters there i cannot read i think
20:00:51 <tusho> no
20:00:51 <tusho> they're question marks
20:00:51 <AnMaster> oerjan, they are really question marks
20:00:57 <AnMaster> since I don't know what to put there
20:01:10 <oerjan> g=7, n=71358601
20:01:15 <oerjan> a=1
20:01:21 <AnMaster> oerjan, k?
20:01:36 <oerjan> ends up being 71358600
20:02:14 <oerjan> oh wait
20:02:23 <oerjan> you are looking at the initial paragraph?
20:02:27 <AnMaster> oerjan, yep
20:02:57 <AnMaster> oerjan, basically I don't trust that program I wrote
20:03:10 <oerjan> right in that case a is any number such that gcd(7, a) == 1
20:03:31 <oerjan> er wait
20:03:41 <AnMaster> oerjan, *you* verify it ;P
20:03:42 <oerjan> gcd(71358601, a) == 1
20:03:59 <oerjan> it's an alternative definition
20:04:00 <AnMaster> I don't trust my own code at this time of the night
20:05:06 -!- sebbu has joined.
20:05:20 -!- Hiato has joined.
20:05:20 -!- oklopod has joined.
20:05:20 -!- moozilla has joined.
20:05:20 -!- dbc has joined.
20:05:20 -!- lifthrasiir has joined.
20:05:20 -!- rodgort has joined.
20:06:44 <oerjan> you don't want to use that definition for checking. for that you want to use the "n is the smallest number such that x^n == 1 (mod p)" version
20:06:55 <AnMaster> oerjan, you check
20:06:58 <oerjan> er, p-1
20:07:22 <AnMaster> oerjan, also isn't that what we did just before?
20:07:34 <oerjan> that's what i said :D
20:07:59 <oerjan> <oerjan> well yeah but that's what you just did :)
20:08:01 <AnMaster> oerjan, but that is hardly a verification :/
20:08:14 <AnMaster> oerjan, I mean verifying that my program was right
20:08:15 <AnMaster> oh well
20:08:34 <oerjan> well i could try and rewrite in haskell
20:08:47 <AnMaster> oerjan, would be easy I guess?
20:08:50 <AnMaster> + probably faster
20:09:02 <AnMaster> erlang isn't really that good at math intensive stuff
20:09:09 <AnMaster> not that it was very slow at all
20:09:12 <oerjan> don't know about faster since i'm using Hugs
20:09:22 <AnMaster> hugs is an interpreter?
20:09:24 <AnMaster> or?
20:09:28 <oerjan> yeah
20:09:32 * AnMaster somehow assumed ghc
20:09:44 <oerjan> doesn't everyone
20:09:54 <AnMaster> why not ghc then?
20:10:17 <AnMaster> oerjan, would be nice to know how long it takes in hugs
20:10:38 <oerjan> i'm on windows and ghc's readline doesn't work there, is my current excuse
20:10:54 <oerjan> so WinHugs is a better interface
20:10:56 <Deewiant> never really missed it myself
20:11:34 <Deewiant> cmd.exe remembers prior commands by itself and that's sufficed for me
20:12:05 <oerjan> i'm talking about the haskell toplevel
20:12:23 <tusho> oerjan: yes
20:12:24 <tusho> he is
20:12:24 <AnMaster> oerjan, in erlang, compiled to native code using hipe, it takes about 9 seconds (clock: count aloud). This is on my 64-bit Sempron 3300+ (2 GHz)
20:12:26 <tusho> cmd.exe retains history
20:12:28 <tusho> for everything
20:12:35 <tusho> you can just use ghc in cmd.exe
20:12:44 <oerjan> huh
20:12:49 <oerjan> i didn't know that
20:13:04 <AnMaster> tusho, how would that work with cygwin? and ncurses apps under cygwin
20:13:07 * AnMaster shudders
20:13:08 <Deewiant> you lose stuff like tab completion and ^U and such from readline, I guess
20:13:13 <tusho> AnMaster: It wouldn't.
20:13:16 <tusho> AnMaster: You just use xterm.
20:13:20 <Deewiant> I've never used cmd.exe with cygwin
20:13:26 -!- Mony has quit ("Ne regrettons pas le passé, ne nous préoccupons pas de l'avenir : le sage vit dans le présent.").
20:14:39 <oerjan> hm wait i remember something
20:14:45 <oklopod> http://dagobah.biz/flash/light-bot.swf forgot to paste
20:15:00 <oerjan> there is a faster way to check primitive roots once you know the factorization of p-1
20:15:07 <oklopod> i scored 194, didn't even realize the commands were counted, so i'll improve if someone gets a better score
20:15:45 <Deewiant> I couldn't do the second-last (IIRC)
20:15:59 <oerjan> because you can check only the factors of p-1 as powers
20:16:03 <oklopod> it's trivial
20:16:28 <oklopod> f2 goes 4 steps forward, f1 does two f2's, and turns & jumps, main just loops f1
20:16:51 <Deewiant> you have to turn in alternating directions, no?
20:16:55 <oerjan> 71358600: 2 2 2 3 5 5 118931
20:17:01 <AnMaster> oerjan, no 7 there...
20:17:06 <oklopod> i didn't even consider the possibility someone couldn't pass it :P
20:17:13 <oklopod> Deewiant: yes, hardcode the other dir in main
20:17:14 <oerjan> that's not what i meant
20:17:25 <AnMaster> oerjan, oh well, what did you mean then?
20:17:29 <oerjan> i just repasted for reference
20:17:41 <Deewiant> oklopod: I ran out of space
20:17:41 <oklopod> then again adapting to weird flash games fast is my specialty
20:17:56 <Deewiant> maybe I did something stupidly but that sounds like pretty much exactly what I did, and I ran out of space :-P
20:18:14 <oerjan> you need only check 7^n for n = 71358600/2, 71358600/3, 71358600/5 and 71358600/118931
20:18:20 <oklopod> i think i had like a third of the cells empty
20:18:44 <AnMaster> oerjan, you do that? :)
20:18:44 <oerjan> because if neither of those rem to 1, then the whole of 71358600 must be the smallest
20:18:59 <Deewiant> looks like there's no way to skip to that level
20:19:05 <Deewiant> so I can't be bothered to take another look
20:19:12 <oklopod> understandable
20:19:18 <oklopod> it's a very annoying ui
20:19:23 <AnMaster> oerjan, since 7^71358600 seems to take ages to compute
20:19:39 <AnMaster> Deewiant, oklopod: Please tell a user without flash wtf you are talking about?
20:19:48 <oklopod> AnMaster: a game
20:19:52 <oklopod> you program this bot
20:19:55 <AnMaster> oklopod, details? screenshot?
20:20:01 <oklopod> in a very simple language
20:20:04 <Deewiant> not very interesting really
20:20:04 <AnMaster> hm ok
20:20:49 <oerjan> gah indeed
20:20:59 <AnMaster> oerjan, ?
20:21:01 <oklopod> i disagree, it's just the levels suck.
20:21:15 <Deewiant> if it had recursion or something else it would be cool
20:21:19 <oklopod> i'm sure that's a very interesting problem, although i haven't proven it :P
20:21:24 <Deewiant> as it is... meh
20:21:24 <oerjan> need to use the mod at each step trick together with binary powering
20:21:34 <oklopod> well it's no programming, because there's no control, indeed
20:21:56 <AnMaster> oerjan, ah 7^71358600 is one of those too large to fit into a computer?
20:21:58 <oklopod> but it's a working concept, it has some computational issues
20:22:02 <oerjan> which means writing my own power function
20:22:18 <AnMaster> oerjan, doesn't haskell have some ready made for that?
20:22:19 <oerjan> AnMaster: er, that too i guess
20:22:32 <oerjan> not with automatic modulus
20:22:52 <oerjan> hm...
20:23:07 <AnMaster> oerjan, assume I don't know haskell, maybe I will try to learn it once I actually understood scheme macros ;P
20:23:15 <AnMaster> I find them awfully confusing
20:23:39 <oerjan> actually i _could_ write a datatype for mod 71358601 calculations
20:23:41 <ais523_> scheme macros aren't very like Haskell...
20:23:59 <oerjan> then the power function would be automatic but i would have to write the rest
20:24:16 <oklopod> ais523: but they are simple
20:24:29 <oklopod> monads aren't, they are an impossible concept to grasp
20:24:34 <oklopod> no one gets them
20:25:29 <tusho> i get them
20:26:06 <oklopod> tusho: don't give AnMaster false hope.
20:26:15 <tusho> oklopod: but it'll be amusing
20:26:38 <AnMaster> ais523, I never claimed they were
20:26:39 <AnMaster> ...
20:26:49 <AnMaster> ais523, it is just that I want to finish one thing before I start another
20:28:04 * oerjan actually did that, even if it sounded silly
20:28:15 <AnMaster> oerjan, did what?
20:28:24 <oerjan> Main> [(Mods 7)^n| x <- [2,3,5,118931], let n = 71358601 `quot` x]
20:28:24 <oerjan> [Mods 71358600,Mods 56502137,Mods 13189798,Mods 68358277] :: [Mods]
20:28:37 <AnMaster> oerjan, err?
20:29:16 <oerjan> i made a Mods datatype that implemented mod 71358601 multiplication and almost nothing else, then the ordinary haskell ^ worked on it :D
20:29:32 <AnMaster> oerjan, interesting
20:29:39 <AnMaster> and makes haskell look really insane
20:30:33 <oerjan> data Mods = Mods Integer deriving (Show, Eq)
20:30:33 <oerjan> instance Num Mods where fromInteger n = Mods (n `rem` 71358601) (Mods m) * (Mods n) = Mods ((m*n) `rem` 71358601)
20:32:08 <oerjan> and this is one of the _simple_ uses of haskell type classes
20:32:35 <oerjan> there are far more insane things involving it
20:33:27 <oerjan> anyway that above was my check, it took less than a second to execute
20:34:07 <oerjan> 7 passes by the fact that none of the list elements are Mod 1
20:38:16 -!- CO2Games has joined.
20:41:52 <oerjan> ah also:
20:41:54 <oerjan> 10*(y+1/3) - 1/3
20:42:08 <oerjan> is a way of rewriting 10*y+3
20:43:33 <oerjan> it implies that with respect to any modulus p where division by 3 makes sense, you can shift y to remove the addition.
20:43:51 <oerjan> that means any p not divisible by 3 itself
20:44:35 <oerjan> in other words, after shifting this whole problem really does become just iterated multiplication by 10
20:45:07 <Judofyr> what problem are you actually trying to solve?
20:45:15 <oerjan> um now what is the equivalence of 1/3 (mod 71358601)
20:45:52 -!- kr4shr has joined.
20:47:44 <oerjan> 47572401 * 3 == 1 (mod  71358601)
20:48:08 <oerjan> so 1/3 == 47572401 for this purpose
20:49:00 <oerjan> Judofyr: AnMaster found some interesting repeating behavior when calculating gcd's: see http://rafb.net/p/i3RhgM20.html
20:49:52 <oerjan> so we got into explaining that, and ended up with primitive roots and stuff
20:50:01 -!- kr4shr has quit (Connection reset by peer).
20:51:43 <AnMaster> <oerjan> anyway that above was my check, it took less than a second to execute
20:51:43 <AnMaster> <oerjan> 7 passes by the fact that none of the list elements are Mod 1
20:51:58 <AnMaster> does that mean that 7 wasn't a valid result?
20:52:10 <oerjan> no, that means 7 is a primitive root
20:52:14 <AnMaster> ah
20:52:29 <AnMaster> :)
20:52:52 <oerjan> since 7^n is _not_ 1 for those n's tested there, the smallest possibility remaining is the one we want, 71358600
20:52:55 <AnMaster> <oerjan> 47572401 * 3 == 1 (mod [007F] 71358601) <--??
20:53:10 <AnMaster> what was that char I'm missing?
20:53:14 <oerjan> oh
20:53:15 <AnMaster> utf8 encoded?
20:53:51 <oerjan> i think that was a ^V that happened when i got confused about cut/paste between windows and xterm. i didn't see it myself.
20:54:13 <AnMaster> oh ok
20:54:17 <oerjan> does this look the same: ?
20:54:29 <oerjan> oh wait
20:54:34 <AnMaster> oerjan, that is a <space><space> question mark
20:54:37 <oerjan> or maybe this:  ?
20:54:39 <AnMaster> ah yes
20:54:56 <oerjan> that was a ^V followed by delete
20:54:58 <AnMaster> <space>[007F]<space><question mark>
20:55:19 <oerjan> ^V inserts a character literally in irssi i think
20:55:48 <AnMaster> oerjan, ^V in most terminals means "treat next char as literal, not escape code" iirc
20:56:03 <AnMaster> not sure if that is terminal or app
20:56:04 <ais523_> control-shift-V is paste in gnome-terminal
20:56:27 <AnMaster> ^V^C in bash in console inserts a literal ^C, that is one char wide according to arrow keys
20:56:55 <oerjan> irssi is sort of bash or emacs inspired i think
20:57:33 <AnMaster> definitely not emacs I'd say
20:57:39 <AnMaster> can't stand it's key bindings
20:57:53 <ais523_> bash's keybindings are loosely based on Emacs
20:57:53 <AnMaster> ais523, how goes gcc-bf?
20:57:57 <ais523_> because it uses readline
20:58:02 <AnMaster> and why are you not on your laptop
20:58:07 <ais523_> AnMaster: not this week, it's a really bad week for me to do other things
20:58:08 <oerjan> ah it's readline then
20:58:21 <AnMaster> ais523, yes unless you use set -o vi
20:58:22 <ais523_> and I didn't bring it with me because I was giving people a tour of Birmingham City Center
20:58:42 <ais523_> AnMaster: would that mean that typing h would move the cursor to the left? That would be pretty hard to use in a shell...
20:58:50 <AnMaster> ais523, I got no clue
20:58:52 <AnMaster> I never tried
20:59:01 <AnMaster> anyway it may be set +o vi
20:59:02 <AnMaster> too
20:59:09 <oerjan> ais523_: maybe you need some ESC characters too
20:59:53 <AnMaster> ah
21:00:10 <AnMaster> seems esc and a changes between the two modes in it yes
21:00:14 <AnMaster> pretty confusing still
21:00:20 <AnMaster> *worse* than real vi
21:00:24 <AnMaster> which is confusing enough
21:00:34 <ais523_> real vi isn't too bad when you get used to it
21:00:40 <ais523_> but I haven't, so I find it confusing
21:00:48 <ais523_> I can see how it would be good if I ever learnt it, though
21:00:52 <AnMaster> ais523, same, nano or emacs for me
21:01:04 <AnMaster> ais523, oh and vi *really really* sucks on dvorak
21:01:13 <AnMaster> emacs does that too, but not as much
21:01:41 <AnMaster> in fact many apps seem to assume qwerty in their key bindings
21:01:44 <AnMaster> which sucks
21:01:55 <pikhq> I wonder: is zsh' "bindkey -v" better than Bash's Vi mode?
21:02:08 <oerjan> heh, hjkl has got to be awkward then
21:02:16 <AnMaster> oerjan, well yes it would be
21:02:27 <pikhq> Not being a Vi user, I can't exactly comment.
21:02:33 <AnMaster> pikhq, nor am I
21:02:39 <AnMaster> you use emacs pikhq ?
21:02:40 <AnMaster> :)
21:02:48 <pikhq> Indeed, I do.
21:02:51 <pikhq> And I use zsh.
21:02:54 <oerjan> pikhq: hjkl are the basic cursor movement commands in vi (although nowadays you can use arrow keys too)
21:02:58 <pikhq> The Emacs of shells. :)
21:03:02 <AnMaster> -pikhq- VERSION irssi v0.8.12 - running on Linux x86_64
21:03:02 <AnMaster> wtf
21:03:10 <pikhq> I don't use it as my IRC client.
21:03:10 <AnMaster> use the power of emacs like I do
21:03:17 <ais523_> maybe it should use NetHack-keys too
21:03:17 <AnMaster> -AnMaster- VERSION ERC Version 5.3 - an IRC client for emacs (http://emacswiki.org/cgi-bin/wiki/ERC (mailing list: erc-discuss@gnu.org))
21:03:22 <pikhq> I use Emacs as my editor.
21:03:22 <ais523_> where yubn go diagonally
21:03:36 <ais523_> and I use a whole load of editors
21:03:40 <AnMaster> ais523, I use numpad in nethack
21:03:51 <ais523_> Emacs, gedit, kate, notepad, vim.tiny, nano, cat, sed
21:03:57 <ais523_> AnMaster: my laptop doesn't have a numpad
21:04:05 <AnMaster> ais523, ah true for a laptop...
21:04:09 <AnMaster> painful
21:04:19 <AnMaster> ais523, which is why I use a full size PC keyboard
21:04:21 <ais523_> not really
21:04:24 <ais523_> I like hjklyubn
21:04:35 <ais523_> although
21:04:41 <ais523_> jkl;uinm would be better
21:04:48 <ais523_> because then the right hand could stay in the usual home position
21:04:51 <oerjan> yeah anyone noticed me writing 7q45t before? :D
21:05:00 <ais523_> home position being one to the left in vi and NetHack is really confusing...
21:05:05 <AnMaster> ais523, jkluiom,. you mean?
21:05:14 <AnMaster> or top to bottom
21:05:15 <oerjan> (that's what happens when i /quit and forget i have numpad on)
21:05:18 <ais523_> AnMaster: heh, different keyboard layout
21:05:23 <AnMaster> uio jkl m,.
21:05:30 <AnMaster> following same diagonal
21:05:47 <ais523_> AnMaster: no, NetHack letter keys don't work like that
21:05:49 <AnMaster> with i at the top
21:05:58 <ais523_> the left down up right are all in a row
21:06:10 <ais523_> so you can have one on each of the non-thumb fingers on the right hand
21:06:12 <AnMaster> ais523, yes that is even more confusing
21:06:15 <oerjan> 789uiojkl
21:06:17 <AnMaster> long live wasd
21:06:18 <ais523_> and the diagonals are positioned to be easy to reach with the index finger
21:06:22 <AnMaster> and arrow keys
21:06:23 <AnMaster> :)
21:06:40 <ais523_> wasd is awful, how are you meant to press the s without moving your hand position?
21:06:59 <ais523_> when I wrote games when I was younger, I generally used zx.;
21:07:04 <ais523_> to have left-right and up-down on different hands
21:07:18 <AnMaster> ais523, err easy, you the 3 middle fingers on a s d, then you can move the middle one up to w if you need
21:07:50 * AnMaster waits as ais523 try it out
21:08:03 <AnMaster> well?
21:08:15 <AnMaster> ais523, works well doesn't it?
21:08:34 <AnMaster> anyway if time is critical I would use a joystick
21:08:56 <AnMaster> http://www.ozhardware.com.au/images/stories/review_images/Input%20Devices/Saitek%20X52%20Pro/x52top.jpg <-- something like that
21:09:02 <AnMaster> (I own one of those)
21:10:13 <tusho> Joysticks suck
21:10:13 <AnMaster> 11 axes and something like 35 buttons, though not as many physical buttons (for example those switches at the base of the joystick register as one button when moved up, and another when moved down)
21:10:17 <AnMaster> tusho, depends
21:10:25 <AnMaster> tusho, for flight sim they rock :)
21:10:37 <tusho> but flight sims are terminally boring :P
21:10:49 <AnMaster> tusho, + this one doesn't have noisy potentiometers (spelling?)
21:10:53 <AnMaster> it use the hall effect
21:10:59 <ais523_> AnMaster: you spelt it correctly
21:11:10 <AnMaster> tusho, so no irritating noise either
21:11:57 <ais523_> hmm... maybe someone could make an editor where the keyboard just inserted and backspaced text, and cursor movement, etc., was done with a joystick
21:12:23 <AnMaster> ais523, implemented in intercal?
21:17:24 * oklopod wants a 4-dimensional flight simulator
21:18:06 <tusho> oklopod: AWESOME
21:18:06 <tusho> write it
21:18:51 <oklopod> i should, it's just i've yet to write even a 3-dimensional physics engine.
21:19:12 <oklopod> and for some reason there isn't that much material about 4-dimensional physics.
21:19:22 <oklopod> well, n-dimensional
21:19:44 <oklopod> i don't see why anyone would care about techniques for such an arbitrary number of dimensions as 3
21:20:24 <oklopod> well, a generic n-dimensional physics engine would most likely be just as simple to write as a 3d one, it's just it might be a bit hard to debug
21:20:40 <ais523_> the problem is showing it onscreen
21:20:56 <ais523_> maybe typical 3D graphics techniques can be used to project 4 dimensions onto 3
21:20:58 <oklopod> you can project twice
21:21:00 <ais523_> and then 3 onto 2
21:21:00 <oerjan> oklopod: i think it's some nonsense about gravitational orbits being strangely stable in 3 dimensions, or something
21:21:01 <ais523_> for a screen
21:21:03 <oklopod> yes
21:21:07 <oklopod> that works, £ ais523
21:21:10 <oklopod> *@ ais523
21:21:17 <tusho> yeah
21:21:25 <ais523_> oklopod: what keyboard has £ next to @?
21:21:25 <tusho> either 4->3->2 or two projections of 3->2
21:21:28 <oklopod> oerjan: i see, i didn't know that
21:21:32 <tusho> ais523_: british ones
21:21:38 <tusho> 2 (shift=@)
21:21:39 <ais523_> shift-3 is £ on a UK keyboard, shift-2 is @ on a US keyboard
21:21:40 <tusho> 3 (shift=£)
21:21:47 <tusho> ais523_: british mac ones
21:21:47 <tusho> :-P
21:21:47 <ais523_> but shift-2 is " on a UK keyboard
21:21:53 <fizzie> Finnish keyboard has altgr-2 = @, altgr-3 = £.
21:21:54 <tusho> ais523_: not in os x
21:21:57 <AnMaster> http://www.newegg.com/Product/Product.aspx?Item=N82E16823200010 <-- is it a keyboard... or a keyboard?
21:21:58 <tusho> ah
21:21:59 <oklopod> alt-gr + 2 = @
21:21:59 <AnMaster> or both?
21:22:00 <AnMaster> :D
21:22:01 <tusho> fizzie: thats more likely
21:22:02 <oklopod> shift + 2 = "
21:22:21 <tusho> AnMaster: That'd be HELL for your wrists!
21:22:26 <AnMaster> tusho, yeah
21:22:28 <tusho> Nowhere to rest when typing...
21:22:33 <tusho> Unless it's retractable?
21:22:36 <AnMaster> tusho, unless you can retract it
21:22:37 <AnMaster> well no idea
21:22:40 <tusho> snap
21:22:41 <AnMaster> tusho, I just saw that
21:22:42 <tusho> hmm
21:22:43 <tusho> it LOOKS retractable
21:22:46 <tusho> http://www.newegg.com/Product/ShowImage.aspx?Image=23-200-010-01.jpg&S7ImageFlag=0&WaterMark=1&Item=N82E16823200010&Depa=0&Description=Creative%20Gray%2fBlack%20Keyboard
21:22:46 <fizzie> There are lots of ways to project 4-dimensional things to 3d or 2d. None of them produce anything I can really grasp, but at least it's pretty pictures.
21:22:57 <AnMaster> tusho, pretty low res image
21:22:58 -!- Hiato has quit ("Leaving.").
21:23:08 <oklopod> fizzie: you would probably learn, at least to some extent
21:23:17 <oklopod> i mean, if you actually "lived" in the world for a while
21:23:20 <fizzie> I've used one of Creative's Prodikeys keyboards.
21:23:21 <oklopod> and by that i mean manouvered
21:23:51 <fizzie> It's not retractable, but there's a removable plastic cover working as wrist-rest on top of the piano-keyboard part.
21:24:01 <fizzie> At least in the model I've seen.
21:24:04 <fizzie> Not sure about that one.
21:24:09 <tusho> meh
21:24:11 <tusho> just get a seperate synth
21:24:12 <tusho> :-P
21:24:20 <oerjan> oklopod: if you lived in it your retina would probably be 3-dimensional
21:25:40 <fizzie> I seem to remember there being some physics things that didn't work all too well for even number of dimensions, but no recollection of the details.
21:25:59 <tusho> fizzie: presumably because they arose in a 3d universe
21:26:20 <oklopod> tusho: huh?
21:26:36 <oklopod> oerjan: i was not talking about actual living.
21:26:38 <AnMaster> tusho, same
21:26:45 <oklopod> more like moving a game character around
21:26:48 <AnMaster> in fact I got a separate synth
21:26:59 <AnMaster> http://www.etcetera.co.uk/products/images/ProdikeysInfoBG.jpg
21:27:28 <fizzie> Oh, there's the plastic cover.
21:27:50 <AnMaster> fizzie, I still think it would be awful
21:28:44 <AnMaster> http://images.techtree.com/ttimages/story/72065_prodikey_dm_big_picture_resize.jpg <-- that one looks slightly better
21:28:48 <AnMaster> not same model
21:29:07 <tusho> ah, that plastic cover
21:29:12 <tusho> would be fine, except it needs moar padding
21:29:16 <AnMaster> tusho, yes
21:29:28 <AnMaster> the other plastic cover looks awful though
21:39:09 <fizzie> Oh, that one looks a lot more like the one I used.
21:39:16 <fizzie> And it wasn't _mine_, I just had to use it.
21:39:27 <tusho> The jews forced you to use it.
21:39:51 <fizzie> There was that second pitch-wheel-type control, at least.
21:47:39 <ais523_> <oerjan> DO CONTINUATIONS DREAM OF MONADIC SHEEP
21:48:10 <oerjan> i never got an answer to that
21:48:17 -!- optbot has set topic: the entire backlog of #esoteric: http://tunes.org/~nef/logs/esoteric | befunge is a hybrid of several things.
21:48:21 <ais523_> I don't know, unfortunately
21:48:27 <fizzie> optbot: Which things?
21:48:28 <optbot> fizzie: time xor ref print chr int ord lc
21:48:45 <oerjan> ARE THERE ANY CONTINUATIONS HERE WHO COULD TELL US?
21:48:46 * ais523_ wonders how many of those things are part of befunge
21:48:46 <fizzie> That's an... interesting definition of Befunge.
21:49:15 <ais523_> hmm... I don't know if continuations dream
21:49:15 -!- megatron has quit (Read error: 110 (Connection timed out)).
21:49:28 <ais523_> maybe they live in serene grace, ready to tweak the time flow
21:49:30 <oerjan> ais523_: the elder god things are not technically part of it. but don't let that reassure you.
21:49:41 <ais523_> or maybe they live in perpetual fear of being garbage-collected
21:49:50 <oerjan> ouch
21:50:00 <ais523_> how does unlambda.i do continuations anyway? CPS?
21:50:13 <ais523_> it might be interesting to make a version that uses my INTERCAL continuation library
21:50:37 <oerjan> continuations are a structure on the heap iirc
21:50:52 <ais523_> I must work on that enhancement to INTERCAL which lets you do first-class functions
21:50:57 <ais523_> but without garbage collection
21:51:37 <ais523_> basically it would create virtual programs
21:51:50 <ais523_> like the real one but where the ignorance status of some variables was "stuck" and they couldn't be remembered
21:52:01 <ais523_> the virtual programs could steal control from the real one using NEXT FROM
21:52:04 <ais523_> or COME FROM
21:52:11 <ais523_> and likewise the real program could steal back control
21:52:29 <ais523_> but that only happened if a virtual program could do a COME FROM but the real one couldn't
21:52:50 <ais523_> then, you can use stuck variables to implement lambdas, although you have to generate names for the anonymous functions at runtime
21:53:01 <ais523_> I'm not entirely certain how function return would work yet, though
21:53:49 <ais523_> probably have the NEXT stack work out which world it's in
21:54:09 <ais523_> and with a bit of trickery you could get infinite recursion by maintaing stacks oneself
21:54:16 <ais523_> garbage collection would be a pain, though
21:54:43 <oerjan> PLEASE NOTE 3=TOP 2=BOTH 1=LAST
21:55:04 <oerjan> i think those are the tag numbers for the continuation cells
21:56:05 -!- moozilla has quit ("- nbs-irc 2.37 - www.nbs-irc.net -").
21:56:42 -!- moozilla has joined.
21:57:05 * ais523_ ponders the thought of getting gcc to generate INTERCAL
21:57:18 <ais523_> I think it would work better than gcc-bf, INTERCAL's more asm-like than BF is
21:57:33 <ais523_> for instance it is capable of dereferencing pointers efficiently, something BF is really bad at
21:58:35 <ais523_> running out of line numbers would be a potential problem
21:58:50 <ais523_> and I'd have to maintain the call stack by hand, I think
22:01:27 <KingOfKarlsruhe> optbot: Are you funny ?
22:01:29 <optbot> KingOfKarlsruhe: s
22:06:42 -!- KingOfKarlsruhe has quit (Remote closed the connection).
22:12:07 -!- jix has quit ("CommandQ").
22:14:57 -!- creepa has joined.
22:15:08 -!- creepa has left (?).
22:16:54 <AnMaster> ais523, why no garbage collection?
22:17:04 <AnMaster> ais523, anyway you could solve that, allow some sort of free()
22:17:09 <AnMaster> no GC needed
22:17:41 <AnMaster> or?
22:17:43 <oerjan> for higher-order first class functions, free() is generally insufficient
22:17:52 <AnMaster> oerjan, why is that?
22:17:55 <oerjan> because lifetime gets too unpredictable
22:18:09 <AnMaster> oerjan, free it when you are done with it?
22:18:36 <AnMaster> or?
22:18:54 <ais523_> AnMaster: what I mean is, most functional langs do GC
22:18:58 <ais523_> but functional INTERCAL wouldn't
22:19:02 <AnMaster> ais523, yes they do
22:19:06 <ais523_> I will allow some sort of free, not sure how though
22:19:17 <AnMaster> ais523, also I think a.l.i would hate if you made it functional!
22:19:22 <AnMaster> really really hate you
22:19:29 <ais523_> heh, no they wouldn't, as long as it wasn't obviously functional
22:19:36 <AnMaster> ais523, really?
22:19:48 <oerjan> AnMaster: a higher-order function may not know who is responsible for freeing a function
22:19:50 <ais523_> I was just going to add a language feature that gave INTERCAL some way of doing first-class functions if you're willing to go through convolutions
22:20:02 <ais523_> CLC-INTERCAL supports classes, and Claudio wasn't hated for that
22:21:52 <AnMaster> ais523, wait... does this mean intercal could have functions like map and such?
22:22:17 <AnMaster> ais523, yes and lectures
22:22:20 <ais523_> yes, if you could deal with the gc issues
22:22:24 <ais523_> they'd take a while to write
22:22:32 <AnMaster> ais523, actually how does the lecture differ from normal classes and objects?
22:22:36 <ais523_> but classes & lectures is an object-orientation system really
22:22:39 <AnMaster> just the name or?
22:22:51 <ais523_> well you don't use it quite the same way
22:23:01 <ais523_> you never specify explicitly which class an object is in
22:23:11 <ais523_> instead you specify a few lectures (=methods) that you want the class to have
22:23:20 <AnMaster> and then?
22:23:22 <ais523_> object=student, by the way
22:23:29 <ais523_> and then it picks a class which implements all of those methods
22:23:41 <ais523_> inheritance is possible too some way I think, I've forgotten how though
22:23:46 <ais523_> and polymorphism works fine
22:23:49 <AnMaster> ais523, hehe
22:24:11 <ais523_> one unusual restriction is that all the lecture names have to be valid as times
22:24:15 <ais523_> such as (0930)
22:24:17 <AnMaster> ais523, I was reading a.l.i on google and come across calls, (phone calls)
22:24:21 <AnMaster> very... nice touch
22:24:39 <AnMaster> ais523, or 0931?
22:24:43 <AnMaster> or how?
22:24:45 <ais523_> that would be fine too
22:24:52 <ais523_> but times that are too late are rejected
22:25:02 <ais523_> because the interp doesn't want to have to go to a lecture at midnight or so
22:25:03 <AnMaster> ais523, you mean like 1830?
22:25:12 <ais523_> 1830 is probably fine
22:25:14 <oerjan> what about lectures that are too close?
22:25:15 <ais523_> 2330 wouldn't be
22:25:20 <AnMaster> ais523, heh
22:25:30 <ais523_> oerjan: I don't think those are detected, maybe they ought to be though
22:26:10 <AnMaster> you could have short ones
22:26:15 <AnMaster> for example 15 minutes
22:27:33 <AnMaster> ais523, anyway making intercal functional would be nice yeah
22:27:36 <AnMaster> as for gc for map
22:27:44 <AnMaster> how is that hard really?
22:27:53 <AnMaster> you create the function, call map, free it
22:28:00 <AnMaster> or?
22:28:18 <AnMaster> ais523, ?
22:28:42 <ais523_> I don't think it's too hard
22:28:50 <ais523_> the problem comes if you want to use the same argument in more than one place
22:28:56 <ais523_> in a lang like Unlambda it's easy
22:29:18 <AnMaster> ais523, create the function again each time?
22:29:29 <ais523_> yes, deep-copy when duplicating is one way it would work
22:29:34 <ais523_> except that's an utter pain to do
22:29:40 <ais523_> and very inefficient
22:29:41 <AnMaster> ais523, why duplicate it?
22:29:55 <ais523_> AnMaster: otherwise you have problems figuring out where to free it
22:30:01 <ais523_> you can free it either in the called function or the caller
22:30:03 <AnMaster> ais523, if I malloc a block in C it is up to me to free it
22:30:06 <ais523_> but neither works properly
22:30:08 <ais523_> AnMaster: I know
22:30:17 <ais523_> functional programs are a real pain to write in C without boehm-gc or similar
22:30:49 <AnMaster> ais523, if I create a fun in erlang (yes gc...) I can often easily say when it would be out of scope
22:31:07 <AnMaster> at least functions in argument lists that are just called should be easy
22:31:12 <AnMaster> like in map
22:31:18 <AnMaster> caller can just free it on return of map
22:31:44 <AnMaster> if it returns a function, then you can free it when you are done with it
22:31:59 <AnMaster> or if you plan to reuse the function often, just let it hang around
22:32:14 <AnMaster> like a fun pointing to a function implemented in a module in erlang
22:32:23 <AnMaster> fun module:name/arity
22:32:28 <AnMaster> in contrast with:
22:32:53 <AnMaster> fun(x) -> x * x end.
22:32:56 <ais523_> caller freeing seems to make the most sense
22:33:39 <AnMaster> ais523, yeah basically same style as you do with malloc/free in C when possible
22:34:00 <ais523_> well, I seem to have screwed it up
22:34:08 <ais523_> look at all the memory leaks in C-INTERCAL for instance
22:34:22 <ais523_> hmm... problem
22:34:24 <AnMaster> (actually I often try to avoid it totally by using on stack variables if they are small and of known size, much easier to manage)
22:34:33 <AnMaster> ais523, ?
22:34:34 <ais523_> suppose you build a data structure, like a binary tree, out of functions
22:34:42 <ais523_> and you have a function that traverses it recursively
22:34:50 <ais523_> and you want to traverse the tree twice
22:35:05 <ais523_> how do you know not to free the nodes of the tree the first time round?
22:35:43 <AnMaster> ais523, suppose you malloc nodes in a linked list with downlinks in C... You use a function to traverse it several times, how do you know how to not free the first time?
22:35:58 <ais523_> in C you know the control flow of your program, so you hardcode it
22:36:01 <AnMaster> in fact I would use a final free function that traversed the structure and freed
22:36:13 <AnMaster> ais523, and this isn't possible in intercal?
22:36:14 <ais523_> in a functional lang you don't generally know the structure of the functions you're manipulating
22:36:22 <AnMaster> hm
22:36:27 <ais523_> it's easily possible in INTERCAL
22:36:35 <ais523_> just functional langs really don't like manual malloc/free
22:36:42 <ais523_> because ther information about what needs freeing gets lost easilt
22:36:44 <ais523_> *easily
22:36:54 <AnMaster> ais523, so A(tree); B(tree); C(tree); freerecursive(tree);
22:36:58 <ais523_> yep
22:37:09 <ais523_> now suppose you're using map on a list of trees
22:37:15 <ais523_> how does map know not to free the trees?
22:37:24 <AnMaster> ais523, why would map free it?
22:37:34 <AnMaster> well map(free, tree); would
22:37:35 <ais523_> ah, ok, so nothing ever frees automatically
22:37:38 <AnMaster> obviously
22:37:45 <AnMaster> map(a, tree); wouldn't
22:37:50 <AnMaster> ais523, like in C :)
22:38:25 <AnMaster> ais523, you need intercalgrind too I guess ;P
22:38:40 <ais523_> shouldn't be too hard, actually
22:38:49 <ais523_> INTERCAL is one of the langs where that sort of thing would be easiest to hook onto a program
22:38:56 <ais523_> you NEXT FROM malloc and free, and double-return
22:39:01 <ais523_> so the original malloc and free never get to run
22:39:08 -!- danopia has joined.
22:39:15 <ais523_> hi danopia
22:39:37 <danopia> hi
22:39:39 <AnMaster> ais523, well obviously you would have to translate it to intercalish terms
22:40:00 <ais523_> probably I'd just call it calgrind
22:40:13 <ais523_> hmm... maybe I could even write a garbage-collector for INTERCAL
22:40:21 <ais523_> it would have to know what was and what wasn't a pointer somehow, though
22:40:27 <AnMaster> ais523, I think GC is often the wrong answer to most problems
22:40:55 <AnMaster> there are better ways, like proper resource mangaging, and using valgrind before each commit to make sure you haven't introduced new leaks
22:40:56 <ais523_> heh, spoken like a true C programmer, but I agree to some extent
22:41:03 <AnMaster> easier to fix it then
22:41:18 <ais523_> I saw a paper arguing that programming in languages with GC was about 10 times faster than programming in languages without
22:42:04 <AnMaster> ais523, very possible, and I'm fine with GC in erlang. But intercal will never be a pure functional language (which erlang almost is, with a few exceptions: process dictionary, eds tables)
22:42:28 <ais523_> AnMaster: never write "intercal will never be" in a sentence again
22:42:45 <AnMaster> ais523, pure functional would indicate single assignment
22:42:52 <AnMaster> I don't think that is realistic
22:43:05 <AnMaster> ais523, and yes with single assignment you do need gc
22:43:06 <ais523_> well I have plans to remove assignment from INTERCAL altogether
22:43:22 <ais523_> which involve effective single assignment, but without changing the variable name
22:43:22 <AnMaster> ais523, that would break existing apps
22:43:32 <ais523_> no, it wouldn't, that's the clever part
22:43:32 <AnMaster> so would have to be optional
22:43:37 <AnMaster> ais523, err what?
22:43:59 <ais523_> basically, beforehand, .1 <- .1 $ .2 assigns the mingle of onespot 1 and onespot 2 to onespot 1
22:44:04 <ais523_> which is simple enough
22:44:16 <AnMaster> yes
22:44:36 <ais523_> in the new system, .1 <- .1 $ .2 solves the equation (new value of onespot 1) = (old value of onespot 1 mingle old value of onespot 2)
22:44:41 <AnMaster> well obviously you could translate it to SSA internally, GCC does that iirc
22:44:50 <ais523_> the arrowhead means that the .1 on the left refers to the new value
22:44:58 <ais523_> and - causes both sides to become equal by changing only new values
22:45:05 <AnMaster> err
22:45:13 <AnMaster> ais523, that is in effect mutable variables
22:45:42 <ais523_> so writing .1 - .1 $> .2 would instead find a new value of .2 that was a right-invariant for .1 under mingling
22:45:47 <AnMaster> you could say x = x + y; solves the equation for a new x
22:45:59 <AnMaster> in effect x2 = x1 + y1;
22:46:00 <AnMaster> however
22:46:09 <AnMaster> that is the exact same thing as mutable variable
22:46:23 <ais523_> the reason is that in complicated stuff like .1 $> .1 <- .2 $> .1
22:46:33 <AnMaster> ais523, I don't understand that
22:46:33 <ais523_> there's clearly an "old .1" and a "new .1"
22:46:51 <AnMaster> I can't code intercal remember
22:47:05 <ais523_> it means solve o1 mingle n1 = o2 mingle n1 for n1
22:47:13 <AnMaster> ah interesting
22:48:04 <AnMaster> 1> 2 + 2 = 3 + 1.
22:48:04 <AnMaster> 4
22:48:07 <AnMaster> ais523, somewhat like that?
22:48:20 <AnMaster> 2> 2 + 4 = 3 + 1.
22:48:21 <AnMaster> ** exception error: no match of right hand side value 4
22:48:37 <AnMaster> pattern matching
22:48:42 <AnMaster> it rocks :)
22:49:19 <ais523_> not exactly
22:49:21 <ais523_> it's more equation solving
22:49:27 <ais523_> like 4 * x = x + 2
22:49:33 <ais523_> I'm not sure of an efficient way to do it
22:49:40 <ais523_> and may have to use brute-force as a fallback strategy
22:49:48 <ais523_> still, I think addition can be written in one statement using that
22:50:04 <AnMaster> ais523, CAS manages it just fine?
22:50:12 <AnMaster> like maxima
22:50:55 <oerjan> i am not quite sure whether ais523_ wants to embed a CAS in the INTERCAL compiler
22:51:20 <ais523_> what's CAS?
22:51:29 <AnMaster> Computer Algebra System
22:51:37 <ais523_> yes, I think that's exactly what I'll have to do
22:51:46 <ais523_> that's why I've held off on implementing it...
22:51:48 <oerjan> also, mingle and select may not necessarily behave as nicely as ring and field operations
22:51:49 <AnMaster> (%i1) solve([4 * x = x + 2], [x]);
22:51:49 <AnMaster> 2
22:51:49 <AnMaster> (%o1) [x = -]
22:51:49 <AnMaster> 3
22:52:13 <ais523_> oerjan: mingle is easy if you calculate at the level of the individual bits, the unaries are alright, select is a pain though
22:52:15 <oklopod> using the existing wheel i see; i recommend writing the solver yourself
22:52:36 <AnMaster> $$[x=\frac{2}{3}]$$
22:52:37 <AnMaster> as tex
22:52:38 <oklopod> what's the opposite of reinventing the wheel?
22:52:40 <AnMaster> maxima can do that
22:52:41 <AnMaster> :)
22:52:53 <ais523_> oklopod: using an existing wheel?
22:53:00 <ais523_> and I'd like to see maxima handle iselect
22:53:02 <oklopod> i guess
22:53:05 <oerjan> oklopod: book burning. again.
22:53:15 <AnMaster> ais523, no clue about that
22:53:16 <AnMaster> and well
22:53:18 <ais523_> (that's the C name for the operator, we couldn't use just "select" for obvious reasons)
22:53:25 <AnMaster> ais523_, maxima is common lisp
22:53:30 <AnMaster> I bet that doesn't work on DOS
22:53:38 <oklopod> oerjan: i like that
22:53:43 <ais523_> why couldn't LISP work on DOS?
22:53:47 <ais523_> I have Emacs working on DOS
22:53:55 <ais523_> and if elisp works I don't see why common lisp wouldn't
22:54:00 -!- CO2Games has left (?).
22:54:01 <oklopod> although i guess it would have to be more like "burning the books"
22:54:03 <AnMaster> ais523_, it works with sbcl, clisp and gcl iirc
22:54:06 <AnMaster> no other ones
22:54:41 <AnMaster> actually
22:54:45 <AnMaster> a few more maybe
22:54:48 <ais523_> well it should be possible to port
22:54:54 <oerjan> oklopod: also, instead of running over people you end up burning them.
22:55:00 <ais523_> just because an individual program hasn't been ported doesn't mean it isn't possible...
22:55:22 <oklopod> oerjan: i don't get that.
22:55:36 <AnMaster> ais523, in fact: clisp, cmucl, scl, gcl, acl, openmcl, sbcl
22:55:44 <oklopod> please use some of your 3% of non-punny messages to explain
22:55:55 <oerjan> "Wo man Bcher brennt, brennt man sofort auch Menschen." iirc
22:56:04 <AnMaster> ais523, according to the /usr/bin/maxima wrapper
22:56:07 <oklopod> aahh
22:56:10 <AnMaster> ais523, anyway I suspect this is totally insane
22:56:14 <ais523_> "<oklopod> please use some of your 3% of non-punny messages to explain" would make a good sig
22:56:18 <AnMaster> ais523, too insane for intercal even
22:56:18 <ais523_> AnMaster: yes, and?
22:56:19 <AnMaster> really
22:56:28 <oklopod> sig? :)
22:56:30 <ais523_> AnMaster: you are missing the point
22:57:03 <AnMaster> ais523_, no, I just think that went way too far. Next you are going to solve differential equations too
22:57:26 <ais523_> AnMaster: you are still missing the point...
22:57:32 <AnMaster> ais523, also maxima is not fast. maybe not as slow as mathematica but...?
22:57:46 <ais523_> well, most likely I'll write my own algebra engine
22:57:52 <ais523_> that can handle INTERCAL stuff
22:57:52 <AnMaster> ais523, it can export algorithms as fortran code though :)
22:58:05 <AnMaster> never tried that
22:58:06 <ais523_> I suspect I'll end up brute-forcing the really weird stuff anyway, though
22:58:13 <ais523_> 65536 possibilities isn't all that many to try
22:58:13 <oerjan> if ghc could use Perl for its Evil Mangler, why can't INTERCAL use Maxima/C.L.
22:58:18 <ais523_> although 4294967296 probably would be
22:58:21 <AnMaster> ais523, two-stop?
22:58:31 <AnMaster> or whatever the name is
22:58:34 <ais523_> and twospot
22:58:38 <AnMaster> ah right
22:58:40 <ais523_> because the sigil is a :
22:58:50 <ais523_> also, if you're assigning two onespot variables at once
22:58:56 <oklopod> ais523: sig? :)
22:59:03 <AnMaster> ais523, with unicode fourspot would work
22:59:17 <ais523_> yes, I've been thinking along those lines
22:59:25 <AnMaster> ais523, 8-spot?
22:59:26 -!- oklopod has changed nick to oklocod.
22:59:43 <ais523_> INTERCAL would have threespot and fivespot too
23:00:00 <AnMaster> ais523, err hm unicode with 3 dots I think exist
23:00:01 <ais523_> in fact given the typical INTERCAL behaviour it would stop at sevenspot
23:00:05 <tusho> oerjan: ghc uses Literat ePerl
23:00:06 <AnMaster> "index marker" or something like that
23:00:07 <ais523_> well, yes
23:00:08 <tusho> *Literate Perl
23:00:12 <tusho> which it invented on the spot
23:00:17 <fizzie> "the octonions are the crazy old uncle nobody lets out of the attic: they are nonassociative."
23:00:33 <oerjan> oklocod: actually, "Dort, wo man Bcher verbrennt, verbrennt man auch am Ende Menschen." says http://en.wikipedia.org/wiki/Book_burning
23:00:38 <AnMaster> ais523, seven-spot would be... 96? bits?
23:00:38 <oklocod> LiteRat ePerl sounds much nicer than literate perl
23:00:41 <fizzie> From http://en.wikipedia.org/wiki/Octonion under "Quotes".
23:01:03 <AnMaster> err no
23:01:14 <oklocod> oerjan: yeah, i recognize the Ende there
23:01:17 <AnMaster> 112
23:01:19 <AnMaster> 112 bits
23:01:20 <AnMaster> crazy
23:01:28 <oklocod> because that always seemed a bit of an ugly sentence structure
23:01:33 <AnMaster> I like it
23:01:41 <ais523_> anyway, I used the word deinstitutionalizations earlier
23:01:47 <ais523_> I needed a 23-letter word for the FRC...
23:01:51 <AnMaster> ais523, wtf does that mean
23:01:53 <fizzie> There's U+2059 "FIVE DOT PUNCTUATION" which has five dots arranged in a X shape.
23:01:56 <AnMaster> and what is FRC?
23:02:06 <AnMaster> RFC I know...
23:02:08 <ais523_> AnMaster: situations in which people are released from a hospital for mentally ill people
23:02:19 <ais523_> and FRC = Fantasy Rules Committee, a long-running email-based game
23:02:35 <AnMaster> ais523, the rules are?
23:02:41 <AnMaster> nomic?
23:02:48 <fizzie> If you stick U+20DC "COMBINING FOUR DOTS ABOVE" to U+2059, you get a nice nine-dot character.
23:03:09 <ais523_> AnMaster: technically it's a nomic but its rules rarely change, the nomicness is only used to improve them from time to time
23:03:10 <AnMaster> fizzie, 144 bits?
23:03:30 <oerjan> oklocod: i think your opinions are a bit fishy at the moment
23:03:32 <AnMaster> ah well I lost my interest in nomics
23:03:33 <fizzie> I was just looking at how many dots you can sensibly get from unicode without it looking ugly.
23:03:40 <ais523_> basically, anyone can submit a "fantasy rule"; the only effect that the fantasy rules have on gameplay is that they all have to be consistent with each other
23:03:50 <AnMaster> fizzie, got a sample of the 9 dots?
23:03:59 <ais523_> and if you submit a rule and nobody else can come up with a rule consistent with all the existing ones for 14 days you win
23:04:09 <ais523_> there are various complications, but that's the heart of it
23:04:31 <fizzie> Maybe COMBINING THREE DOTS ABOVE + COMBINING TRIPLE UNDERDOT + FIVE DOT PUNCTUATION would look nice, and have 11 dots.
23:05:08 <AnMaster> ais523, you could make easy rules, "do not eat the blue flashing grass" should be consistent with lots of existing rules
23:05:18 <ais523_> yes, you could
23:05:18 <AnMaster> or maybe that isn't allowed
23:05:25 <ais523_> there are various unwritten rules
23:05:36 <AnMaster> ais523, that forbid what I suggest?
23:05:42 <ais523_> also, many of the rules make statements like "All rules have a word that sets a new record for word length"
23:05:51 <ais523_> your example doesn't contain a 23-letter word
23:06:05 <ais523_> so it would be inconsistent with that rule, plus a rule that contained a 22-letter word
23:06:06 <AnMaster> ais523, well if it was Swedish then it would be easy
23:06:15 <AnMaster> we write words together to construct new ones
23:06:26 <AnMaster> I one constructed a 56-letter word in Swedish
23:06:33 <AnMaster> could probably have made it longer
23:06:39 <AnMaster> that long is uncommon though
23:06:57 <oklocod> you can get composite nouns of any length trivially
23:07:13 <AnMaster> oklocod, sure but in English you tend to use space between the parts
23:07:21 <AnMaster> or maybe a dash
23:07:23 <oklocod> yes, but i'm takling about swedish
23:07:25 <oklocod> *talking
23:07:29 <AnMaster> oklocod, indeed
23:07:42 <oklocod> english doesn't have a grammar, as i've explained before
23:07:52 <oklocod> if you wanna have a few nouns together
23:07:54 <fizzie> http://zem.fi/~fis/dots.html should have a 11-dot character if I'm right, but at least my browser doesn't want to render it right. The "three dots above" character overlaps a bit, and the "triple underdot" does not want to combine.
23:07:58 <oklocod> then just bash them into a nice bundle
23:08:03 <oklocod> no one cares what's in the middle
23:08:41 <AnMaster> oklocod, I think it was of the lines of "car deformation zone engineer annual conference secretary ball-point pen tip" + a lot more and in one word
23:08:54 <AnMaster> ⁙⃨⃛
23:08:56 <AnMaster> hm
23:08:56 <oerjan> stopp svenskfanordfrlengningsfascistpatriarkatet!
23:09:13 <oklocod> :)
23:09:17 <AnMaster> haha
23:09:27 <AnMaster> oerjan, doesn't Norwegian allow it too?
23:09:32 <oklocod> yes
23:09:33 <oerjan> of course :)
23:09:43 <AnMaster> no idea about Finish
23:09:52 <AnMaster> err is that 1 or 2 n?
23:09:57 <oklocod> in finish all words actually end the whole sentence
23:10:00 <oerjan> but it flows easier in swedish i think
23:10:08 <oklocod> so, you can't have composite nouns.
23:10:09 <AnMaster> oklocod, ?? really?
23:10:14 <AnMaster> wtf
23:10:19 <oklocod> no, that was a joke on n/nn
23:10:23 <AnMaster> ah
23:10:26 <AnMaster> n/nn is?
23:10:30 <oklocod> finnish is one of the composite nouniest languages
23:10:40 <AnMaster> oerjan, I don't think "svenskfanordförlengningsfascistpatriarkatet" flows very easily
23:11:00 <AnMaster> fanord <-- breaks flow for some reason
23:11:00 <oklocod> also you can get quite long words by just inflicting one word
23:11:07 <AnMaster> between fan and ord
23:11:10 <fizzie> The 9-dot character at dots2.html seems to render more or less correctly; that one's five-dot-punctuation + combining-diaeresis + combining-diaeresis-below.
23:11:32 <oklocod> svensk is what breaks it
23:11:36 <AnMaster> fizzie, so what did you change it
23:11:46 * AnMaster slaps oklocod with a stunned seagull
23:11:59 <oklocod> :-)
23:12:16 <AnMaster> (if you get that literary reference: congrats!)
23:12:29 <oklocod> i donp't.
23:12:31 <oklocod> *don't
23:12:31 <AnMaster> (it is very obscure trivia for that book)
23:12:44 <fizzie> AnMaster: Well, dots2.html uses just two dots above and below, since the amazing triple underdot does not combine around here. So it's less dots but better-looking. And actually dots.html had 12 dots, counted 5+4+3 wrong.
23:12:48 <AnMaster> oklocod, Discworld series, book: Pyramids
23:13:25 <AnMaster> very very obscure reference
23:13:38 <oerjan> AnMaster: i think he stole it from Monty Python
23:13:45 <AnMaster> (I don't think most Discworld fans would realize it is a reference)
23:13:45 <fizzie> Something like "epäjärjestelmällistämättömyydelläänsäkäänköhän" is the traditional "long inflected single Finnish word", although I guess it's from dubious legality.
23:13:46 <oerjan> wait a minute i've read that book
23:13:57 <AnMaster> oerjan, oh
23:13:58 <AnMaster> ?
23:14:09 <oklocod> epäjärjestelmällistyttämättömyydellänsäkäänköhän
23:14:10 <AnMaster> fizzie, what does it mean?
23:14:12 <oerjan> there was some trout slapping
23:14:22 <ais523_> Zing! Vext cwm fly jabs Jurd qoph.
23:14:25 <AnMaster> oerjan, ah no trout slapping in the discworld book
23:14:28 <ais523_> *Kurd
23:14:39 <AnMaster> oerjan, that is what makes it so extremely obscure
23:14:44 <oerjan> but still, the inspiration is clear
23:15:02 <oklocod> also, there was that... epäkumarreksituteskenteleentuvaisehkollaismaisekkuudellisentelemättömyydellänsäkäänköpähän or something, but i doubt that means anything :P
23:15:14 <AnMaster> ais523, lets see... ginz, text mwc ylf sabj drunj hope?
23:15:23 <AnMaster> ais523, even if that is drunk...
23:15:43 <AnMaster> ah way should be sbaj
23:15:45 <oklocod> epäjärjestelmällistyttämäättömyydellänsäkäänköhän isn't really even hard to parse, although i probably wouldn't use it actively
23:15:46 <AnMaster> still no sense
23:15:51 <oklocod> *mättö
23:16:01 <AnMaster> oklocod, now what do it mean?
23:16:05 <oerjan> oklocod: if you say so
23:16:15 <AnMaster> does*
23:16:46 <AnMaster> ais523, care to explain? knurd makes me think it is some disc world reference... but?
23:17:03 <AnMaster> gniz btw
23:17:29 <AnMaster> gniz texv mwc ylf sbaj drunk hpoq
23:17:30 <AnMaster> no
23:17:34 <AnMaster> even less sense
23:17:39 <AnMaster> ais523, explain yourself
23:17:46 <ais523_> AnMaster: it's a pangram
23:17:47 <oklocod> järjestelmällistyttää would probably be like "to make systematic", although a weird connotation for that, so i guess "by making unsystematic (question suffix + suffix for third person)"
23:17:52 <AnMaster> ais523, ??
23:17:54 <ais523_> that's technically gramatically correct
23:17:55 <AnMaster> ais523, what is that
23:18:03 <ais523_> Zing! Vext cwm fly jabs Kurd qoph
23:18:09 <ais523_> uses each of the 26 letters exactly once
23:18:13 <AnMaster> oklocod, ugh
23:18:13 <ais523_> if I've remembered it correctly
23:18:16 <AnMaster> oklocod, and the rest
23:18:19 <oklocod> you can't really translate it unless in a sentence
23:18:22 <oklocod> AnMaster: the rest?
23:18:27 <oklocod> the even longer one?
23:18:35 <ais523_> Japanese has a poem like that which makes a lot more sense, traditionally it was used to order the alphabet
23:18:41 <AnMaster> oklocod, "epäjärjestelmällistämättömyydelläänsäkäänköhän" means "to make systematic"?
23:18:42 <AnMaster> wtf
23:19:15 <AnMaster> systematisera in Swedish them
23:19:16 <AnMaster> then*
23:19:20 <oklocod> i translated it to "by making unsystematic", but there are a few constructs that would change the surrounding sentence in english, and not the word
23:19:29 <AnMaster> oklocod, ah
23:19:31 <AnMaster> still...
23:19:34 <oklocod> genom at göra unsystematik
23:19:36 <oklocod> or something
23:19:41 <oklocod> *att
23:19:47 <AnMaster> oklocod, osystematisk too
23:19:52 <AnMaster> un is English
23:19:52 <oklocod> right
23:19:58 <AnMaster> well
23:19:59 <AnMaster> even so
23:20:03 <AnMaster> it is like crazy
23:20:15 <fizzie> oklocod: Are you sure it's that simple? I mean, there's already "järjestelmällistyttämättömyys" which is something like "not making something systematic" -- since it's not "järjestelmällistyttäminen" -- but also the "epä-" negation prefix in front.
23:20:20 <oklocod> the longer one i just saw that in an old book, i can't parse that, just memorized it.
23:20:34 <AnMaster> ais523, and I bet you wish you could use some Nordic language in that nomic ;P
23:20:35 <fizzie> oklocod: And there are more suffixes than just those two.
23:20:39 <oklocod> fizzie: different
23:20:50 <oklocod> the other is "not making systematic", other is "making unsystematic"
23:20:55 <oklocod> so yes, i think it's that simple
23:21:17 <oklocod> and there are mor suffixes, but they cannot be translated, i say
23:21:23 <AnMaster> oklocod, really nice language that even the natives can't parse
23:21:36 <oklocod> and if you disagree, i will /nick oklogod, and it will be futile
23:21:42 <AnMaster> If I ever consider trying to learn Finish, please remind me not to!
23:22:00 <oklocod> finnish, unless you want another bad joke
23:22:09 <AnMaster> oklocod, is it two n?
23:22:14 <oklocod> yes
23:22:29 <AnMaster> <AnMaster> no idea about Finish
23:22:29 <AnMaster> <AnMaster> err is that 1 or 2 n?
23:22:29 <AnMaster> <oklocod> in finish all words actually end the whole sentence
23:22:31 <AnMaster> well
23:22:33 <oklocod> fizzie:
23:22:35 <oklocod> actually
23:22:36 <AnMaster> use that yourself then :P
23:22:38 <fizzie> oklocod: "epäjärjestelmällistyttäminen" would be something like "the act of making something unsystematic"; so shouldn't "epäjärjestelmällistyttämättömyys" mean the avoidance of it?
23:22:38 <oklocod> i now see what you meant
23:22:50 <oklocod> the act of not making something unsystematic, of course
23:23:01 <fizzie> "Of course."
23:23:14 <oklocod> AnMaster: finish is the language where all sentences finish after one word
23:23:20 <oklocod> you know
23:23:21 <oklocod> finish
23:23:23 <AnMaster> ah...
23:23:24 <oklocod> it's like, to end
23:23:38 <AnMaster> oklocod, except I can't remember if it is Finnish of Finish, the spelling that is
23:23:40 <AnMaster> for either of them
23:23:43 <oerjan> do you speak ennd?
23:23:49 <AnMaster> so it makes that very confuing
23:24:14 <oerjan> it's all the suomi to me
23:24:27 <AnMaster> fizzie, Finnish would make a good PRNG (or possibly even true RNG) if you just remove the dots over about half the ä in that ;P
23:24:59 <fizzie> I think I must sleeps now.
23:25:03 <AnMaster> fizzie, same
23:25:06 <AnMaster> night all
23:25:07 <oklocod> i should sleeping too
23:25:13 <oklocod> gotta wake up in 6 hours
23:25:20 <AnMaster> =><=
23:25:27 <oklocod> and i've already been tired for a days
23:25:27 * ais523_ also plans to go home very shortly
23:25:39 <oklocod> ais523: is it 24/7
23:25:43 <oklocod> the place you're at
23:25:48 <oklocod> the Room
23:26:03 -!- ais523_ has quit ("mibbit.com: <oklopod> please use some of your 3% of non-punny messages to explain").
23:27:47 <oklocod> well, didn't answer my question, but in fact answered a question i asked him many hours ago.
23:29:44 <AnMaster> oklocod, ?
23:31:05 <oklocod> AnMaster: long story
23:31:07 <oklocod> sleep! ->
23:31:14 <AnMaster> k
23:31:15 <AnMaster> sane
23:31:16 <AnMaster> same*
23:35:47 -!- olsner has quit ("Leaving").
23:42:48 -!- oerjan has quit ("leaving").
23:45:40 -!- Judofyr has quit.
←2008-09-30 2008-10-01 2008-10-02→ ↑2008 ↑all