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