00:00:34 -!- oerjan has quit ("Good night"). 00:09:11 -!- Sgeo_ has joined. 00:12:57 -!- KingOfKarlsruhe has quit (Remote closed the connection). 00:26:14 -!- Sgeo has quit (Read error: 110 (Connection timed out)). 00:28:04 Who here uses qmail? AnMaster? 00:28:17 ehird, correct. Night 00:28:20 * AnMaster goes to bed 00:28:29 AnMaster: Impeccable timing. 00:29:13 AnMaster: You got one second? Guess not. 00:29:29 well 00:29:30 ok then 00:29:36 I have a headache tough 00:29:38 what imap server do you use with qmail? 00:29:39 though* 00:29:55 ehird, um I don't. I use maildir... 00:30:08 AnMaster: Ah, you read mail directly on the server? 00:30:29 ehird, I'm used to the pine/mutt/alpine family of mail clients yes 00:30:36 How quaint. :p Thanks anyway :) 00:30:57 ehird, also I hate MTAs, that is as long as they are working they are ok, but I hate sysadmining them 00:31:18 Yes, that's why I'm trying to decide between qmail and letting google host my mail atm. 00:32:25 mhm 00:32:38 bye 00:32:41 ehird, qmail config is not as bad as sendmail config though 00:32:44 and night 00:46:43 erg 00:47:02 guys, i have a question you might have a worthwhile opinion on 00:48:03 i think you know what my answer is. 00:48:10 is it oko? 00:48:39 well i have no idea. 00:52:37 so my question is this 00:53:03 i have these things called glosses that represent a sort of annotated form of a sentence 00:53:33 and there are a number of standard orthographic forms used to annotate 00:53:46 i want to be able to integrate this into the database software im building tho 00:54:15 in which the standard orthgoraphic forms are representative of things in the database 00:54:56 you lost me at "things" 00:55:07 :P 00:55:11 * oklopol is too tired for big words 00:55:12 should i store the glosses as just strings like "F.B.Q" and require that searches work on the orthographic forms only 00:56:23 or should i make the glosses actually store pointers to the items in the DB instead of storing just strings of representation? 01:14:14 -!- GreaseMonkey has joined. 01:35:42 -!- Corun has quit ("This computer has gone to sleep"). 01:44:26 hmm, no oerjan? 01:56:09 Anybody want to play Cheskers? 01:58:28 NO. 01:58:29 maybe you can play cheskers and I can be in the audience making fun of you? 01:59:12 ... 01:59:46 wait 01:59:51 cheskers 01:59:56 is that some wacky game of yours? 02:00:01 checkers + chess 02:00:08 Naturalismo. 02:00:23 right, right, for some reason god only knows, i thought it was a typo 02:00:46 * oklopol is slowwww 02:00:52 ...but still NO 02:00:55 need to koed 02:00:56 -> 02:01:17 co-educate? 02:01:33 as in, interact with females? 02:02:11 yes, i'm a pornstar 02:02:17 Anyone want to play Arimaa? 02:02:18 No, he's just impersonating the word coed, so he'll be interacting with female impersonators. 02:02:36 Sgeo_: Oooh, I should add Arimaa support to my board game software ... 02:02:37 sweet, pornstar and crazy-person.. I'm just missing two out of two 02:02:51 GregorR, what about legal issues? 02:03:21 Sgeo_: Has legality ever stopped me before? Bahahahahah!!! 02:03:32 GregorR, I have no clue, obviously 02:06:46 http://arimaa.com/arimaa/license/ 02:06:56 Yeah, should be compatible. 02:07:03 http://arimaa.com/arimaa/license/current.txt 02:07:05 The software is F/OSS, but that's copyright, not patent ^^ 02:08:14 "Some usage or distribution of Arimaa may be non-commercial, but also not fall 02:08:14 under the personal, educational and research (PER) category. For such cases a 02:08:14 written authorization must be obtained from Arimaa.com. 02:08:14 " 02:08:24 " * I want to freely distribute software that incorporates Arimaa. Such as 02:08:24 open source software that plays Arimaa. 02:08:24 " 02:09:44 Bah, why would somebody patent a game created for the purpose of testing the limits of AI. That's so stupid. 02:12:28 lots of patents are 02:19:18 Yeah, that is the one dumb thing about Arimaa. 02:19:46 Really sad, since everything else about Arimaa is rather clever and smart... 02:20:18 Fairly deep game. 03:18:35 -!- bsmntbombdood has quit. 03:19:31 -!- bsmntbombdood has joined. 03:32:19 -!- chuck has changed nick to chuck_cat. 03:32:35 -!- chuck_cat has changed nick to chuck. 04:04:44 -!- Slereah2 has joined. 04:08:51 -!- Slereah has quit (Read error: 110 (Connection timed out)). 04:17:28 -!- Slereah has joined. 04:26:13 -!- Slereah2 has quit (Read error: 110 (Connection timed out)). 04:49:18 -!- Dewio has joined. 05:01:56 -!- Dewi has quit (Read error: 101 (Network is unreachable)). 05:18:56 -!- Sgeo__ has joined. 05:21:05 -!- Pthing has quit (Read error: 104 (Connection reset by peer)). 05:33:22 -!- Slereah has quit (Read error: 110 (Connection timed out)). 05:34:00 holy shit 05:34:08 i have a palindrome embedded in my nick! 05:34:11 :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD 05:36:08 -!- Sgeo_ has quit (Read error: 110 (Connection timed out)). 05:49:12 lopol is indeeda palindrom 05:49:13 e 05:50:20 i was actually talking about the "o", but yeah i guess "lopol" is a palindrome as well 05:51:07 :P 05:51:35 you have a wonderful ability to counter ones expectations 05:52:19 i do now? it's probably just the lack of sleepness. 05:53:09 i just made my first GC, and it was so trivial i'm a bit ashamed i did it. 05:53:30 two hours until the breakfast store opens 05:53:43 all i can do until then is troll irc channels by being my tired self 06:05:11 oklopol: Everyone has at least len(nick) trivial palindromes :P 06:05:42 oklopol: Conservative GC? Mark and sweep? Copying? Generational? Magic GC? 06:08:39 GC? 06:09:03 oh 06:09:06 garbage collector 06:09:07 ok. 06:21:53 how does a conservative gc know how large objects are? 06:22:26 oh, duh, it hacks the allocator 06:38:54 -!- Sgeo has joined. 06:49:44 bsmntbombdood: It /is/ the allocator. 06:49:59 yeah 06:53:35 but you still have to use a malloc thing 06:54:08 -!- Sgeo__ has quit (Read error: 110 (Connection timed out)). 06:58:46 allocators get awfully complicated 07:02:16 like in memcached, they decided malloc() isn't good enough 07:04:03 and you still see things like obj_t objcache[128]; 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:08:42 -!- GreaseMonkey has quit ("Client Excited"). 08:20:52 Bye all 08:21:16 -!- Sgeo has quit (Read error: 104 (Connection reset by peer)). 08:48:57 -!- kar8nga has joined. 09:10:00 -!- oerjan has joined. 09:14:39 i have a palindrome embedded in my nick! 09:14:53 me too! six of them in fact 09:15:20 oh wait, seven 09:15:34 forgot the empty string 09:16:18 i was actually talking about the "o", but yeah i guess "lopol" is a palindrome as well 09:16:34 no that's way to destroy my joke in advance 09:16:41 *now 09:17:24 oklopol: Everyone has at least len(nick) trivial palindromes :P 09:17:29 +1 09:17:53 maybe i _should_ start reading the rest of the logs before responding. nah. 09:20:09 also, that's technically correct only if you count duplicates, in which case it still isn't, should be 2*len(nick)+1 09:20:28 (empty strings all around) 09:27:53 -!- kar8nga has quit. 09:56:07 -!- Hiato has joined. 10:02:42 -!- Hiato has quit (Remote closed the connection). 10:04:30 -!- Hiato has joined. 10:12:25 GregorR: oklopol: Conservative GC? Mark and sweep? Copying? Generational? Magic GC? <<< variant of m&s. 10:13:18 i would probably feel less dirty if it was something algorithmically contentful 10:14:09 -!- appletizer has joined. 10:16:20 oerjan: there is an infinite amount of empty strings in every hole, isn't there? 10:19:22 counting duplicated may not be such a great ida 10:19:24 *idea 10:19:26 -!- appletizer has left (?). 10:30:52 oklopol: i assume you count only once per position... 10:31:22 otherwise it would get SILLY, and we wouldn't have THAT 10:31:28 ah, infinite amount, but they all have the same position, yes i guess that's solid logic 10:31:37 yes, exactly :) 10:36:06 -!- Hiato has quit ("Leaving."). 10:59:06 -!- Judofyr has joined. 11:10:01 -!- dbc has joined. 11:13:41 -!- sebbu2 has quit (Read error: 60 (Operation timed out)). 11:15:20 -!- kar8nga has joined. 11:25:47 -!- Judofyr has quit (Remote closed the connection). 11:26:31 -!- Judofyr has joined. 11:26:39 -!- oerjan has quit ("leaving"). 11:32:18 d-d-d-d-D-D-D-DANNNNCE aLLLL nIGHT lONGGGGGGG 11:37:12 Hi people. 11:37:32 hi you. 11:52:27 -!- MigoMipo has joined. 11:56:26 -!- ais523 has joined. 12:02:05 -!- KingOfKarlsruhe has joined. 12:03:17 -!- jix has joined. 12:09:17 -!- sebbu has joined. 12:20:08 -!- fungot has quit (brown.freenode.net irc.freenode.net). 12:20:08 -!- fizzie has quit (brown.freenode.net irc.freenode.net). 12:20:08 -!- Deewiant has quit (brown.freenode.net irc.freenode.net). 12:20:18 -!- Deewiant has joined. 12:31:41 -!- ais523 has quit ("http://www.mibbit.com ajax IRC Client"). 12:44:53 -!- Judofyr has quit (Remote closed the connection). 12:45:35 -!- Judofyr has joined. 13:09:29 -!- jix has quit (Read error: 60 (Operation timed out)). 13:32:14 -!- fizzie has joined. 13:34:09 -!- kar8nga has quit (Read error: 60 (Operation timed out)). 13:45:21 -!- Slereah2 has joined. 13:54:33 -!- MigoMipo has quit (Read error: 110 (Connection timed out)). 14:18:47 -!- ais523 has joined. 14:24:10 -!- olsner_ has joined. 14:38:14 -!- olsner has quit (Read error: 110 (Connection timed out)). 14:38:17 [14:35:33] [05:53:09] i just made my first GC, and it was so trivial i'm a bit ashamed i did it. 14:38:23 you're right that's trivial 14:38:26 hi ehird 14:38:27 but, you know, it's fun. 14:38:29 hi ais523 14:38:37 I wrote a GC for Overload a while back 14:38:41 two, in fact 14:38:53 because the GC semantics are part of the language 14:38:58 oklopol: gcs CAN be algorithmically contentful 14:39:00 the first one was mark-and-sweep 14:39:04 do it parallel, and generational 14:39:04 and the second one was weird 14:39:09 that's tricky 14:40:50 ehird: i know 14:41:03 yah 14:41:05 just suggestering 14:42:41 well this is in c++, and it's just not fast enough to code in to be all that fun. 14:42:49 so i just made something simple that works. 14:43:32 oklopol: did you make it for a reason, or just for fun? 14:43:38 and which algorithm did you use? 14:43:41 it's for a c++ course. 14:43:48 and i didn't really use an algorithm 14:44:05 well, the code has to be using some method to do it 14:44:10 and even trivial algorithms have names 14:44:25 but i think it's mark-and-sweep 14:44:30 ofc 14:45:22 mark and sweep is pretty much the most dumb thing ever 14:45:22 but you know giving mark-and-sweep a name is like naming different ways to call a function, it's just kinda stupid, since anyone will come up with it given the problem statement, there is absolutely no insight to it. 14:45:26 it's no wonder gc had a bad rep 14:45:38 oklopol: it's useful when talking about it 14:45:41 well different ways to call a function is a bad example. 14:45:43 oh, debian 5 is out 14:45:46 pass-by-value, pass-by-reference, pass-by-name 14:45:47 ehird: sure. i still don't like it. 14:45:48 ehird: "5"? 14:45:54 yes. 14:45:57 debian 5.0 "lenny" 14:46:00 it's Lenny, and something like the ninth or tenthversion 14:46:04 http://www.debian.net/News/2009/20090214.en.html 14:46:07 " Debian GNU/Linux version 5.0" 14:46:10 I wasn't even aware Debian had version numbers 14:46:14 ais523: yes, very bad example, also you could consider call conventions another categorization 14:46:24 obviously, it must have version numbers that don't follow an obvious pattern 14:46:27 much more algorithmical insight to it 14:46:29 ais523: I'm pretty sure Lenny and the like are just codenames, like Tiger and Leopard 14:46:38 although apple are now marketing with those names, they didn't use to 14:46:50 ehird: sort of, except that those names are the names of the repositories 14:47:03 I bet internal apple code has "Leopard" in it, too 14:47:06 the way it works is that a few weeks ago, "Lenny" was the testing repository 14:47:18 "Lenny" is now the stable repo, and testing is "Squeeze" 14:47:30 and those names are the names you actually have to give to the package manager for it to work 14:47:39 ais523: I just looked it up, debian's gone: 14:47:44 0.x, 1.x, 2.x, 3.x, 4.x, 5.0 14:47:57 so it's not the ninth or tenth release, they're just slooooow. 14:47:58 ais523: maybe a better example is something like insertion sort, sure it's useful to have a name for it, but it's not like anyone implements insertion sort, insertion sort is what you implement if you don't feel like thinking or reading and want to get the job done. 14:48:05 so you can either say "stable" to automatically stay on the stable repo (which would upgrade from etch to lenny automatically) 14:48:15 4.0 was released april 2007 14:48:22 so 5.0 is a positively fast release 14:48:24 or say "etch", then it stays on etch until you tell it to upgrade to lenny 14:48:30 (and etch is now the oldstable repo) 14:48:48 http://www.debian.net/doc/manuals/project-history/ch-detailed.en.html#s4.6 14:48:50 Mostly deaths... 14:48:55 (Important Events section) 14:49:58 ais523: what do you think debian will do when they run out of toy story names? 14:50:11 persuade Disney to release Toy Story 3 14:50:31 Erm, they're already making it :P 14:50:37 there are still quite a lot they haven't used yet, though 14:53:21 holy shit, linus uses _this kind of emphasis_ a lot 14:53:23 http://article.gmane.org/gmane.comp.version-control.git/217 14:54:23 ais523: ah: 14:54:24 Other codenames that have been already used are: buzz for release 1.1, rex for release 1.2, bo for releases 1.3.x, hamm for release 2.0, slink for release 2.1, potato for release 2.2, woody for release 3.0, sarge for release 3.1, and etch for release 4.0. 14:54:35 so the codename changes more frequently than the major release 14:54:46 so this is the 10th release or thereabouts 14:54:50 yes, I wonder what makes them decide whether a release is minor or major/ 14:55:29 well, they seem to be going for major release = codename, once every year and a half or so 14:55:39 going by etch and this new one here 14:55:46 major release = codename is necessary 14:55:51 or their whole release process would fail 14:55:59 what I mean is, 14:56:04 not changing the codename on a minor release 14:56:07 like they used to, as above 14:56:23 ah 14:56:47 what I mean is, there doesn't seem to be any way to tell whether a Debian release is minor or major, except from the version number 15:01:08 yes 15:01:17 I guess those minor releases were not that minor 15:01:25 yep 15:01:29 basically, the way Debian works 15:01:36 is that they have unstable, which is cutting-edge 15:01:46 and experimental, which is even more cutting-edge 15:01:55 yes 15:01:59 unstable contains the latest versions of whatever packages they're using 15:02:03 so, say, the latest version of KDE 3 15:02:04 When I used debian as a desktop OS I used sid 15:02:10 because everything else was hopelessly slow 15:02:14 whereas experimental contains the latest version of KDE 4 15:02:19 because 4 isn't in mainstream yet 15:02:22 unstable = testing, right? 15:02:26 not quite 15:02:26 and experimental = unstable 15:02:29 -!- Hiato has joined. 15:02:47 if something's been in Debian unstable for a certain number of days and nobody reports a bug in it, it moves into testing 15:02:51 yes 15:03:01 the number of days depends on how serious the bug that fixed it was 15:03:08 so, say when I release a new C-INTERCAL version 15:03:20 it goes into unstable as soon as Debian package it, and into testing if nobody reports a bug after 8 days 15:03:25 longer if there's a code-freeze on 15:03:44 yes 15:03:48 every so often, they gradually code-freeze testing 15:04:02 and delays there get longer and longer, until they're only porting fixes for release-critical bugs 15:04:26 when there are no release-critical bugs in testing, and there's a freeze at the time, it becomes the next stable version 15:10:11 -!- BeholdMyGlory has joined. 15:22:44 Think I'll note again that in case anyone has a boardgamegeek membership, I've got an "esoteric language programmer" microbadge available. http://boardgamegeek.com/microbadge/7285 15:31:16 -!- ais523 has quit ("http://www.mibbit.com ajax IRC Client"). 15:31:41 -!- ais523 has joined. 15:31:51 MIBBIT PLEASE STOP DOING THAT 15:32:10 wow, allcaps 15:32:15 is this a first? 15:32:21 I don't think so 15:37:59 o 15:38:25 o8o 15:41:02 -!- BeholdMyGlory has quit ("rebooting"). 15:43:56 -!- BeholdMyGlory has joined. 16:05:44 -!- Slereah2 has quit. 16:07:55 -!- kar8nga has joined. 16:08:19 -!- Slereah has joined. 16:10:09 -!- Slereah has quit (Client Quit). 16:10:54 -!- Slereah has joined. 16:11:29 -!- Slereah has quit (Client Quit). 16:21:59 -!- Slereah has joined. 16:23:32 -!- Hiato has quit ("Leaving."). 16:26:30 -!- BeholdMyGlory has quit (Remote closed the connection). 16:38:57 -!- BeholdMyGlory has joined. 16:48:58 Heh, apparently there's a process called Electrowinning. 16:52:11 what does it do? 16:56:54 Electrowinning, also called electroextraction, is the electrodeposition of metals from their ores that have been put in solution or liquefied. Electrorefining uses a similar process to remove impurities from a metal. Both processes use electroplating on a large scale and are important techniques for the economical and straightforward purification of non-ferrous metals. The resulting metals are said to be electrowon. 17:01:46 * ehird is working on a HIDEOUS ABOMINATION. 17:02:25 Objectivist-C. Entities fight for processor and memory. More efficient producers (e.g., a prime checker using a better algorithm) end up killing other entities. 17:02:34 All based on the C we know and love! 17:06:09 -!- oerjan has joined. 17:07:29 -!- kar8nga has quit. 17:08:04 -!- MigoMipo has joined. 17:09:03 pass-by-value, pass-by-reference, pass-by-name 17:09:13 hm, are there any more esoteric ones, i wonder 17:10:17 Pass-by-arbiter. Rather than getting the object, you get an object that can access the original, but you have to access it through annoying proxy-like requests. 17:10:23 if there were, i'd expect INTERCAL to have incorporating some... 17:10:26 *ed 17:10:45 oh right 17:11:17 oerjan: yes 17:11:23 hm prototype OO falls under that, doesn't it 17:11:37 oerjan: call by copy-restore 17:11:40 call by sharing 17:11:44 call by need 17:11:48 call by macro expansion 17:11:50 call by future 17:12:10 call-by-copy-restore ought to be functionally indistinguishable from pass-by-reference 17:12:19 oh right, call by need i should have remembered 17:12:25 http://en.wikipedia.org/wiki/Evaluation_strategy#Call_by_copy-restore 17:12:38 GregorR: not with concurrent programming 17:12:43 Ah yse. 17:12:44 *yes 17:13:08 call-by-macro-expansion is effectively call-by-name 17:13:13 oerjan: there's the method Feather uses 17:13:18 GregorR: i was going to ask that 17:13:24 pass-readonly-by-value-or-reference-it-doesn't-matter 17:13:44 and you can retroactively change the value of any object you were passed 17:13:54 which causes it to change in the past, thus you get passed the new changed value 17:13:57 so the object is always readonly 17:13:58 call-by-macro-expansion is not call by name 17:14:04 ais523: well that applies to any pure language too like haskell 17:14:12 yes 17:14:12 f(x) = x*2 17:14:14 f(y-3) 17:14:15 and such 17:14:22 although haskell doesn't retroactively change function arguments 17:14:26 and scoping 17:14:33 call-by-macro-expansion can access variables in its expander 17:14:35 or ML, really 17:14:37 call-by-name can't 17:15:00 ais523: in Haskell, every value is a function returning its value. after the first evaluation, it actually rewrites its own machine code into a trivial return 17:15:02 so it's only evaluated once 17:15:31 i would be surprised if ais523 didn't already know that 17:15:37 umm... that's in a particular implementation of Haskell, you mean 17:15:44 nothing about the language suggests machine code is involved 17:15:46 ais523: it's the standard way 17:15:56 well, yes, it's sensible 17:15:57 oerjan: he knows haskell, but doesn't seem to know much about its implementation 17:16:00 that doesn't make it the only way, though 17:16:04 of course 17:16:06 ehird: more I don't care much about its implementation 17:16:10 well yeah, in _theory_ haskell can be faithfully implemented with call-by-name instead of need, i think 17:16:10 it's just the fun, esoteric, efficient way 17:16:12 because that doesn't affect use of the language 17:16:14 it's just insane 17:16:19 oerjan: it just specifies "non-strict" 17:16:21 and I wouldn't call it esoteric 17:16:31 an auto-memoizing, auto-parallel call-by-need haskell would be valid 17:16:39 and work apart from things like unsafePerformIO 17:16:42 well, it'd work, just go haywire 17:17:07 unsafePerformIO breaks the semantics of Haskell 17:17:14 the 'unsafe' is there for a reason... 17:17:21 of course 17:17:25 unsafeCoerce is funner, though 17:17:33 just like looking at the code of a function in Underlambda breaks its semantics 17:17:46 you can do it by printing out a continuation and reading it in as text, but that's unsafeCamelCase 17:17:49 in ghc, (unsafeCoerce () :: Double) gives you something like 3.2752 17:17:53 instead of segfaulting 17:17:56 what does unsafeCoerce do? 17:18:03 ais523: unsafeCoerce :: a -> b 17:18:12 oh dear... 17:18:22 I can guess 17:18:29 it reminds me rather of the _cast operators in C++ 17:18:37 except more dangerous 17:18:43 except those would crash if you tried to do an impossible coercion, even dynamic_cast<> 17:18:55 and crash with an exception rather than segfault 17:18:55 oh, it lets you segfault in haskell 17:19:04 unsafeCoerce 3 :: Either () () 17:19:06 prints out 17:19:09 also, how does unsafeCoerce figure out what types its arguments are 17:19:10 Left 17:19:15 ais523: umm, it doesn't 17:19:22 it just gives back the internal pointer data 17:19:23 well, its result 17:19:26 ehird: obviously if you coerce into something with pointers in it 17:19:26 ais523: you tag it 17:19:32 (unsafeCoerce a :: TypeIWant) 17:19:46 just like you can do (2+2 :: Integer) 17:19:56 oerjan: yes 17:20:27 ehird: what does unsafeCoerce () return 17:20:29 if you don't tag it? 17:20:41 ais523: meaningless question i think 17:20:49 it has all types 17:20:52 ais523: forall b. b 17:20:52 well, it has to either return something or error 17:20:58 just like how 17:21:00 (2+2) 17:21:01 is of type 17:21:02 yes, that's its type 17:21:06 (Num a) => forall a. a 17:21:10 I wonder what value the interp prints, though 17:21:14 ais523: it doesn't 17:21:18 there's no instance for (Show (forall a. a)) 17:21:19 makes sense 17:21:21 and you can't make one 17:21:25 so you get a type error 17:21:30 ugh 17:21:36 we need an unsafeShow, obviously 17:21:40 heh 17:22:07 ais523: that requires the interpreter to have enough information, fortunately it probably has due to gc 17:22:19 to distinguish pointers at least 17:22:27 you could just print out a hex representation or something 17:22:39 or a series of Haskell commands that create the value that's there 17:22:45 there's probably an unsafePointer# :: a -> Integer 17:22:49 err, Int 17:23:16 Perl has Data::Dumper::Dumper, you apply it to an object and get a series of commands to create that object 17:23:18 i want an inefficient haskell impl that has a playground 17:23:22 like, 17:23:34 ais523: yes but perl has dynamic types 17:23:51 nativeCallCC :: ((a -> a) -> a) -> a 17:23:54 Perl's more untyped than dynamically typed 17:23:57 and you can do 17:24:16 nativeCallCC (\f -> f 3 + 2) --> 3 17:24:31 callCC makes no sense in a non-strict language 17:24:37 are you sure you got the type of nativeCallCC right? 17:24:44 oerjan: sure it does 17:24:50 ais523: err, it should be 17:24:54 no 17:24:55 that's right 17:25:12 let's see... a continuation is of type a -> (), isn't it? 17:25:13 oerjan: + forces its arguments (obviously), and when (f 3) is evaluated the current evaluation chain is given up 17:25:16 ais523: no 17:25:28 [17:25:23] :t callCC 17:25:28 [17:25:25] forall a (m :: * -> *) b. (MonadCont m) => ((a -> m b) -> m a) -> m a 17:25:28 well, it clearly doesn't return 17:25:40 the reason I had a as the result is so you can use it in expressions like that 17:25:50 Let's play Cheskers! 17:25:55 Somebody! :P 17:26:23 Me!! 17:26:24 ais523: callCC has the type of pierce's [sp] law in boolean logic 17:26:27 ehird: that's like making printf return an integer so you can do printf("Hello, world!\n") + printf("Bye!\n"); 17:26:38 ehird: http://codu.org/cheskers/client/cheskers.html# game 18, join as white 17:26:40 that's not the reason printf returns an integer, and if it was it would be stupid 17:26:41 ais523: it's useful because nativeCallCC (\x -> x 2) should be valid. 17:26:56 oerjan: I've never heard of pierce's law 17:26:58 GregorR: Loading... 17:27:02 Works on Safari? 17:27:12 ehird: Haven't tested it on Safari ... works on Konq :P 17:27:13 ais523: peirce's 17:27:21 GregorR: Just hangs at "loading". 17:27:26 ehird: I don't think it should be valid, it's semantically nonsensical 17:27:33 ais523: no it isn't 17:27:51 what you've written there would translate into C as int func {return return 2;} 17:27:59 ... I don't think you understand call/cc 17:28:05 yes I do 17:28:09 ais523: it's one of the laws of boolean logic that aren't in intuitionistic logic 17:28:21 like excluded middle 17:28:43 a continuation doesn't return a value, by definition, so it doesn't make sense to make it return a value 17:29:01 it returns the Void valu 17:29:01 e 17:29:05 in haskell, (forall a. a) 17:29:07 hmm... actually, giving it type forall b. a -> b would make sense 17:29:10 this is standard, e.g.: 17:29:14 error :: forall a. String -> a 17:29:27 haha wow, in Ruby 1.9 you can use λ to make a proc 17:29:30 (that's a unicode lambda) 17:29:38 the physical unicode character? 17:29:42 they're stealing from INTERCAL! 17:29:46 :-D 17:29:49 ais523: oh wait, it's ((P -> Q) -> P) -> P 17:29:57 oerjan: hmm, that is the right type 17:29:58 sorry, I was wrong 17:29:59 (CLC-INTERCAL for ages, and C-INTERCAL for a while, accept ¬ as a synonym for NOT) 17:30:01 but ais523 was too 17:30:30 hmm... oerjan's type looks righter than ehird's, at least q can be () then 17:30:51 yes 17:30:54 oerjan's type Is right 17:30:59 and it's what haskell's callcc continuation monad uses 17:31:06 Valid ruby: 17:31:13 add = λ(a,b){ a + b } 17:31:15 puts add.(1, 2) 17:31:26 ugh, why the dot? 17:31:32 ehird: Doesn't work in midori either, but firebug is being unhelpful. 17:31:38 ais523: because in ruby you can call functions without parens 17:31:49 and lambdas give you Procs 17:31:56 a.(b) is short for a.call(b) 17:32:05 also valid ruby: 17:32:08 add = λ a, b { a + b } 17:32:11 (omitting parnes) 17:32:12 *parens 17:32:33 in Perl that would be $add=sub{shift+shift}; say &$add(1,2) 17:32:40 yep 17:32:44 the parens are optional, &$add 1, 2 would work too 17:32:53 also, shift+shift is ridiculous 17:33:03 because it isn't defined which order the shifts evaluate in, but it doesn't matter 17:33:15 shift-shift might not work because you don't know which shift evaluates first 17:33:32 s = λ x { λ y { λ z { x.(z).(y.(z)) } } } 17:33:32 k = λ x { λ y { x } } 17:33:32 i = λ x { x } 17:33:33 $_[0]-$_[1] is the same number of chars and shorter 17:33:43 ... 17:33:45 the same number of chars 17:33:46 and shorter? 17:34:01 I meant more correct, not shorter 17:34:06 ah 17:35:27 ehird: Aha, fixed. Will push in a sec. 17:35:33 yay 17:36:09 OK, pushed. 17:36:16 ais523: 17:36:16 c = 2; -> ;c { c = 1 }.call; c # => 2 17:36:20 MWAHAHAHAHAHAHAHA 17:36:35 The problem is I was checking whether firebug was enabled so I could use its console, but my check didn't work on Safari, so thought it was always enabled. 17:36:51 GregorR: link 17:37:02 ehird: http://codu.org/cheskers/client/cheskers.html# , join game 18 as white 17:37:12 GregorR: did you write cheskers? 17:37:18 Loading... 17:37:19 Loading... 17:37:19 Loading... 17:37:39 ais523: Half. 17:37:42 ehird: WTFBBQ 17:38:14 well, I joined 18 and it seems to work for me 17:38:30 ehird: Works on Midori :P 17:38:44 I take it that the checkers move as in checkers and the chess pieces as in chess/ 17:38:49 ais523: Yes. 17:38:49 what's the win condition? checkmate? 17:38:52 ais523: Yes. 17:38:53 All based on the C we know and love! 17:38:54 you're all mac hating blubberheads. :| 17:39:00 not objective C? 17:39:01 ais523: Wanna play? :P 17:39:02 GregorR: anyway, play a move 17:39:18 >:( 17:39:20 I WANNA PLAY :| 17:39:29 GregorR: I am playing 17:39:40 ais523: So am I, it's your turn ;) 17:39:46 ais523: Whoops, spoke too late. 17:39:50 no it isn't ;) 17:40:03 are captures compulsory? 17:40:06 for the checkers? 17:40:09 ais523: No. Nor is multi-jumping. 17:40:17 GAH I'LL DOWNLOAD FIREFOX. 17:40:18 ais523: They're slightly more like pawns than checkers in that sense. 17:40:24 EVEN THOUGH FIREFOX IS _AWFUL_. 17:40:24 ehird: I want you to play! But I can't test Safari :P 17:40:35 No wait, yes I can, I have a mac laptop :P 17:40:44 but you HATE ME so you won't :P 17:40:50 safari is one of the worst and buggiest mainstream browsers on Windows, but apparently it works a lot better on Mac 17:41:29 Apple suck at windows software 17:41:34 case in point: quicktime 17:41:40 quicktime is the worst, most annoying piece of crap on windows 17:41:46 on mac, it's the best way to play non-music media 17:41:53 was that apple's originally? 17:41:55 * ehird downloads firefox 17:41:59 or did they buy it off someone else? 17:42:00 ais523: QuickTime is Apple's yes 17:42:14 On OS X it's actually the core media framework 17:42:38 strange, it won't let me move my king to f1 or g1 17:42:58 Uhhhh, it should ... 17:43:03 GregorR: OK, link 17:43:15 oh, I see what happened 17:43:18 you put yourself in check last move 17:43:21 and I think that confused it 17:43:22 * ehird pukes over firefox a bit 17:43:27 ehird: http://codu.org/cheskers/client/cheskers.html# , but now I'm in the middle of a game with ais523 :P 17:43:29 you're still in check, by the way 17:43:33 ais523: How so? 17:43:33 I should have just taken your king 17:43:38 Oh looka that :P 17:43:44 Shouldn't have moved THAT checker :P 17:43:48 your king and queen are the wrong way round 17:44:06 ais523: No, they're not, that's a change we made for cheskers. 17:44:12 ais523: It's utterly unfair if they're not swapped. 17:44:12 which is what makes that trick possible 17:44:17 and yes 17:44:30 end your stupid game with ais523 17:44:31 I'M COMIN' IN 17:44:34 what number 17:44:35 :D 17:45:19 you should make moving into check impossible, it screws things up 17:45:33 or do it as in Shogi, where if your king is captured you lose even if you weren't checkmated 17:46:13 the chess pieces seem a lot more useful than the checkers, but I suppose that isn't surprising 17:46:53 ais523: The checkers serve more to get in the way, but that doesn't make them not part of the strategy. 17:47:17 well, obviously, the relatively useless pieces are the same for both players 17:47:27 GregorR: what numberrrrr 17:47:47 ehird: We're playing 18, but don't go taking that over :P 17:47:56 ehird: I'll start a new one 17:48:01 make it 3-player 17:48:02 :P 17:48:12 ehird: http://codu.org/cheskers/client/cheskers.html# join 19 as white 17:48:26 ehird: Actually the server should more-or-less support that, there are just no rulesets in the DB defined for three players. 17:48:44 okay, so what're the rules :x 17:48:50 joined btw 17:49:07 ehird: the same as in chess and in checkers (draughts) combined 17:49:19 yikes. i'm crap at both :-D 17:49:27 ais523: I find it somehow unsurprising that you're better than me at chess :P 17:49:30 ehird: That's fine, I suck too :P 17:49:39 ehird: Your turn. 17:49:43 I'm so crap that I can barely remember how chess works :-D 17:49:48 Err, let's move a checker. 17:50:09 can the two piece types interact? 17:50:35 yes, checkers can take chess pieces by jumping them, chess pieces can take checkers by collision 17:50:38 just as in the actual games 17:50:47 OK 17:51:40 and I used to be captain of the house chess team, although I haven't played since school 17:51:52 ais523: That was a lot of work to decide that move :P 17:52:00 GregorR: I had it planned 17:52:06 ehird: Sorry, go ahead :P 17:52:11 taking the bishop was relatively obvious, after all 17:52:39 I've played chess about thrice in my live 17:52:47 ais523: Enjoy my queen :P 17:53:32 http://homepage.mac.com/avidrissman/extimgs/st.png <- Oh heck yes. 17:53:51 GregorR: it's not as if I didn't set a trap for her two moves ago 17:54:02 but you got a bishop and rook in exchange, that's normally about fair compensation 17:54:35 ais523: In case you haven't noticed, I don't HAVE your rook :P 17:55:02 oh, two bishops 17:55:08 not a bishop and rook, you misplayed that slightly 17:55:24 you could have used the king to defend the queen, and got the rook that way 17:56:13 ehird: Sorry our game is going slow, but ais523 is kickin' my arse :P 17:57:15 ehird: Thanks for the queen :P 17:57:25 ehird: Uh, you just moved into check :P 17:57:32 is there any way to watch games in progress? 17:57:32 :D 17:57:33 ehird: I WIN 17:57:42 I AM STILL MOVING 17:57:42 :D 17:57:54 ais523: You can join any game as any player and just don't play. We have an observer player built in, but I forgot to add it to the UI X-D 17:58:07 -!- Hiato has joined. 17:58:36 GregorR: does it detect checkmate/ 17:58:42 it should at least ban moves into check 17:58:48 http://www.reddit.com/r/programming/comments/7xe5p/give_it_up_reddit_python_c_print_njoin_joinn_for/c07o0ty <- first reply is golden 17:58:50 ais523: It should, but it doesn't :P 18:00:21 also, what happens when you crown a checker? 18:00:44 ais523: It turns into a king. 18:00:48 ehird: a BF program that does something ekse 18:00:48 ais523: HAW HAW JUST KIDDING 18:00:57 ais523: It turns into what we call an "ace", which is just like a checker king 18:00:57 GregorR: a checkers king, or a chess king? 18:01:01 ah, ok 18:01:18 ehird: a BF program that does something ekse 18:01:18 what 18:01:29 ais523: It'd be funny though if it turned into a chess king ;) 18:01:42 the BF program doesn't do the same as the Python program 18:02:21 I can't tell from my head what it does print, but it prints lots of different letters, not just * and space 18:03:21 ais523: ... "first reply is golden" 18:03:27 was the keyword in that link 18:03:32 -!- MigoMipo has quit ("QuitIRCServerException: MigoMipo disconnected from IRC Server"). 18:03:46 * GregorR is struggling for good moves :( 18:04:35 ehird: it's even funnier in that it's correct, though 18:04:39 it would be funny even if it was wrong 18:04:49 yes 18:04:55 you seemed to be looking at just the first post,t hough 18:04:58 GregorR: you only /have/ one legal move here... 18:05:08 ehird: it's more fun when trying to work out if the post is correct 18:05:16 yeah I thought it was a joke at first 18:05:48 ais523: That doesn't mean I can't cry myself to sleep looking at the board :P 18:06:09 looks like it's going to be a long endgame which I win convincingly, based on that 18:08:37 GregorR: check, just to make sure you notice 18:09:10 and mate 18:09:31 WITH MY DYING BREATH I KILL YOUR QUEEN 18:09:56 RAAAA ANARCHIST CHESS 18:10:11 do I really have to spend the time to take all your other pieces too/ 18:10:15 your king is already dead... 18:10:29 No :P 18:10:33 it's not dead, it's just resting... 18:10:44 captured, to be precise 18:10:47 in my castle 18:10:57 I want anarchist nomic 18:11:10 what, nomic without rules? 18:11:15 isn't that an oxymoron? 18:12:05 oxymoron: someone so stupid they don't deserve to breathe air 18:12:38 ais523: :D 18:14:14 ais523: So anyway, aside from how much I suck at chess, don't you think that cheskers adds an interesting dynamic to the game? (Since some of your pieces which would otherwise take a few moves to release are free, but because they start out free they're quite valuable and so bringing them out too early is unwise) 18:14:57 it's somewhere between chess and shogi in terms of playstyle 18:15:13 it basically forces open games, as it's impossible to clog the board up with pawns 18:15:19 Yuh 18:15:19 and it's harder to defend things 18:17:50 Not that you needed to defend anything >_< 18:18:07 that's because you weren't attacking 18:18:20 That's because I was spending half the game defending :P 18:18:34 s/half/all/ 18:18:48 does black play first? 18:18:53 Yes. 18:19:09 Whoa, Leopard's speech synthesis is creepily realistic. 18:19:47 Oh, that's not right :P 18:19:51 White is supposed to play first :P 18:20:04 * ehird uploads example 18:20:40 ais523: I don't know what you're talking about, white plays first and that's how it's implemented! *cough* 18:21:15 -!- FireFly has joined. 18:21:38 hi FireFly 18:21:44 Hello 18:22:03 hmm... what esolang projects are people working on at the moment? 18:22:11 GregorR: sure you're name isn't really George L? :D 18:22:13 *your 18:22:18 I'm not, really, I'm busy with other things (although continuing to think about Underlambda) 18:22:34 I'm finding Sir. Cut interesting 18:22:35 oerjan: ........................................... joke: FAILED 18:22:49 DID NOT 18:22:59 oerjan: WELL I DIDN'T GET IT 18:23:05 also, trying to work out if an infinite-memory version of Advance Wars would be Turing-complete with the default AI 18:23:25 ...the game? 18:23:28 yes 18:23:32 GregorR: i guess you don't read Darths & Droids, or anything else Star Wars... 18:23:32 I managed to create a loop 18:23:39 Ooh 18:23:41 Tell me 18:23:43 with a red infantry and a blue infantry who continuously walked round in circles 18:23:51 Sounds interesting 18:23:52 Creepy OS X text to speech: http://filebin.ca/zfgscj/speech.ogg 18:24:17 if you go city plains river river plains plains river river city plains river river plains plains river river 18:24:28 CLICK AT YOUR OWN RISK 18:24:28 bent round in a loop so the last river connects to the first city 18:24:33 and start an infantry on each city 18:24:52 then the two infantry will both go round in the same direction, never encountering each other 18:24:57 at least with the "defensive" AI 18:25:04 Hmm 18:25:31 the reason being that going forwards, the infantry goes city / plains river / river plains / plains river / river city 18:25:34 and repeats from there 18:25:36 * oerjan almost forgets swatting FireFly -----### 18:25:44 Why? :< 18:25:59 going backwards it would be city / river / river plains / plains river / river plains / city 18:26:02 which is one turn longer 18:26:08 Ah 18:26:10 and the AI always chooses the shortest route 18:26:11 Makes sense 18:26:13 FireFly: you're a firefly 18:26:15 oh, i was just not paying attention 18:26:17 so both infantry go round in the same direction 18:26:17 he has a fly swatter 18:26:28 * FireFly dies 18:26:44 and they want to keep going round so as to capture each other's cities, which exchange ownership every 5 turns 18:26:58 That's really interesting 18:27:10 I think this principle can be extended with 3 players to make increment and decrement operations on two counters 18:27:17 where the counters are the amount of money each team has 18:27:29 the problem is getting that to affect control flow 18:27:47 Does nobody find it as creepy as I? 18:28:19 well, infantry walking round and round in little squares in a post-apocalyptic wasteland forever is pretty creepy 18:28:39 Not that 18:28:40 :P 18:29:36 ais523: This: http://filebin.ca/zfgscj/speech.ogg 18:30:03 ehird: this isn't my computer, and it doesn't have speakers or ogg codecs 18:30:08 what's the chance I'll be able to play it? 18:30:12 ah. 18:30:31 Not over 9000% 18:30:51 where does the over 9000 meme come from? 18:30:53 -!- KingOfKarlsruhe has quit (Remote closed the connection). 18:30:58 ais523: a youtube video 18:31:07 using a few seconds of the show Dragonball Z 18:31:23 oh, I've heard of Dragonball Z 18:31:29 but IIRC, 9000 is rather low in the context of that show 18:31:35 ais523: Here's a text transcript: http://qntm.org/?9000 18:31:42 what is qntm.org? 18:31:48 this terminal has internet filters 18:32:14 qntm.org is the website of Sam Hughes. 18:32:26 Is it blocked? 18:32:29 never heard of him, I don't think 18:32:36 and no idea, I'd have to click on it to find out 18:32:41 It's just text. 18:32:43 and visiting a blocked website gets you in trouble 18:32:44 Sam Hughes is a brilliant sci-fi author. 18:32:48 some really weird things are blocked here, though 18:32:51 such as the X11 licence 18:32:55 ais523: How to Destroy the Earth - he wrote that. 18:33:01 well, the licence isn't weird, but the fact it's blocked is 18:33:07 Btw, the DS version of advance wars? 18:33:08 And the Earth Destruction Advisory Board. 18:33:13 And the Fine Structure series. And ... 18:33:18 FireFly: there are two DS versions of advance wars 18:33:28 Ah.. Well, theres also a GBA version 18:33:32 I was trying on Dark Conflict, which is probably better for esoprogramming because of the temporary ports 18:33:35 Or, at least one 18:33:39 Hm 18:33:40 and there are also two GBA versions, so oyu fail in that respect too 18:33:40 Brb google 18:33:46 :< 18:33:52 "Brb google"? 18:34:08 Nvm 18:34:25 Fnd. Grb lk lpsfn 18:36:08 Ugh. 18:36:10 ferret.c: In function ‘rs2s’: 18:36:10 ferret.c:165: error: ‘struct RString’ has no member named ‘ptr’ 18:38:26 well let's hope it's easy to ferret out that bug 18:38:43 * ehird kills oerjan with a fork 18:38:43 ferret.c? 18:39:02 ais523: ferret = ruby bindings to indexer thingy 18:39:03 * ais523 vaguely mumbles something about cruelty to forks 18:39:14 * oerjan realizes he deserves it, and croaks 18:39:22 hmm not binding, native, okay 18:39:29 * ehird revives oerjan because puns are fun 18:44:30 Brains... 18:55:32 * oerjan realizes ehird is a master strategist 18:55:44 He is capable of many-pronged attacks... 18:55:58 ok, that's a good pun 18:57:46 XD 18:59:15 -!- kar8nga has joined. 19:02:27 -!- ais523 has quit ("http://www.mibbit.com ajax IRC Client"). 19:05:48 http://welldonefillet.blogspot.com/2009/01/stabbing-fork-what-is-it-good-for.html 19:16:19 -!- MigoMipo has joined. 19:30:52 An irritating algorithm to code: Find the rightmost, deepest application in an SKI application. 19:33:14 -!- FireFly has quit (Excess Flood). 19:35:34 -!- Hiato has quit ("Leaving."). 19:36:04 This, by the way, lets you lazily evaluate SKI and get a non-blowing-up SII(SII): 19:36:05 ```sii``sii 19:36:05 ``i``sii`i``sii 19:36:05 ``i``sii``sii 19:36:05 ```sii``sii 19:36:24 "Non-blowing-up" being the technical term of course. 19:36:28 Since you evaluate the rightmost, deepest expression that can be reduced (`sx can't be reduced, ```sxyz can be) 19:36:30 GregorR: Yep. 19:37:01 -!- Sgeo has joined. 19:37:15 oerjan: say, is that reduction lazy? 19:37:17 I think so 19:37:46 -!- FireFly has joined. 19:38:04 Heh, here's a new chess variant: Stupidly-friendly chess. You're never allowed to put a king in check :P 19:38:07 um lazy implies leftmost... 19:38:16 oerjan: sure? 19:38:35 GregorR: winner decided by arbitration? 19:38:54 pretty sure 19:39:09 oerjan: it would check the parent expression 19:39:23 so in ``kk```sii``sii, it wouldn't loop 19:39:34 Deewiant: Eventually somebody has to give up from being bored of the sixteen hour game they've just been playing :P 19:39:41 because while ```sii``sii is the rightmost, deepest expression you can evaluate, its parent is a `kx 19:39:44 GregorR: a tie will happen eventually 19:39:48 so it skips straight to the ``kkx 19:39:58 Deewiant: Well, it's assumed you're trying to avoid stalemate :P 19:40:07 Ah, well that's crap. :-P 19:40:14 NORLY!?! 19:40:15 :P 19:40:39 ehird: well then you aren't really doing rightmost 19:40:42 Chesssss: Stupidity-friendly chess but whoever makes the move leading to a tie wins. 19:40:44 oerjan: true 19:40:53 Something like that might make sense if the winner is decided by strength of pieces remaining (what's the term) when a tie happens 19:40:56 it's rightmost-deepest-if-would-be-evaluated-anyway 19:41:04 still lazy 19:41:14 There's a precursor to chess in which if you get it into a stalemate you win. 19:41:20 So that's not without precedent. 19:41:26 Yep. 19:41:54 oerjan: in ````skkkk```sii``sii, it'd evaluate the func to find out if it's k first, ofc 19:41:55 (and it is) 19:42:45 ehird: you are ending up with leftmost, i say 19:43:01 oerjan: no, because: 19:43:01 [19:36:04] ```sii``sii 19:43:02 [19:36:04] ``i``sii`i``sii 19:43:02 [19:36:04] ``i``sii``sii 19:43:03 [19:36:04] ```sii``sii 19:43:07 (evaluated in my head according to these rules) 19:44:45 if you replace the first ``sii with something else that turns into `kk but only _after_ applying it, but still without using its argument... 19:44:58 oerjan: hm? 19:45:11 oerjan: it checks the result of the evaluation but does not replac 19:45:20 so it sees that `i``sii = ``sii, but leaves it as is in the expression 19:45:22 so it can do rightmost 19:45:50 bah 19:46:04 oerjan: what 19:46:21 essentially you evaluate leftmost until you find that something more rightward happens to be evaluated, then you backtrack 19:46:33 pretty much 19:46:46 still lazy, as far as I can tell, and evaluates ```sii``sii without growing 19:47:13 hm 19:47:27 you know call by _need_ is what you really want, i think 19:47:44 You can't do that in ski 19:47:48 since there are no bindings 19:47:54 i.e. the expansion happens only because evaluating one copy doesn't evaluate the others 19:47:56 call by need = call by name, without bindings 19:49:19 you can do graph sharing 19:49:25 oerjan: vut 19:49:42 like, search the tree for all occurances of the same expr 19:49:42 ? 19:49:46 i.e. when doing ```sxyz -> ``xz`yz , the z should be _shared_ 19:49:57 ah 19:50:07 in fact that's enough since that's the only ski rule that duplicates things 19:50:08 oerjan: but ``xz`yz isn't reduced immediately 19:50:21 I'm doing step-until-x-==-eval(x) 19:50:31 so it'll just return App (App x z) (App y z) 19:50:39 where z = App S K or whatever 19:51:46 oerjan: so how do you do it then? 19:52:07 well haskell datatypes don't usually allow sharing detection 19:52:11 yeah 19:52:30 you need some id or monadic references for that 19:52:39 that's what I'm avoiding :-( 19:53:20 you could also use a tie-the-knot trick, where you bundle the evaluation of z with z 19:53:27 "bundle"? 19:54:09 does haskell do multiplication lazily? 19:54:14 bsmntbombdood: no 19:54:21 what's 0 * _|_ 19:54:28 unless you define a numeric datatype where it does 19:54:33 it's _|_ 19:54:55 in the standard datatypes, arithmetic is strict in all arguments 19:58:02 ehird: i'm not sure if it would be useful to you, essentially it would implement ski laziness with haskell laziness, but maybe add some symbolic tags or something 19:58:02 for reasons of SPEED 20:11:45 * ehird installs gtk2hs to install yi 20:11:48 to edit this ski thingymabob 20:32:19 Cheskers now has support for chess (minus proper promotions (always promotes to queen) and en passant) 20:34:25 also castling? 20:35:33 castling is a rule that's actually used, you can't leave *that* out. 20:36:23 it strictly requires keeping some extra state, though 20:36:36 Whoops, forgot about castling entirely X-D 20:37:03 as does en passant 20:37:16 En passant requires less. 20:37:46 yeah 20:39:17 -!- MigoMipo has left (?). 20:52:53 -!- FireFly has quit ("Later"). 20:55:50 -!- ehird has changed nick to ehird|away. 20:57:41 -!- FireFly has joined. 21:03:00 -!- ehird|away has changed nick to ehird. 21:11:08 -!- Judofyr has quit ("sleeping"). 21:34:19 Implemented castling :) 21:34:43 ooh, what is this? 21:34:48 BFchess? 21:35:00 lol, no, it actually has no relevance to this channel whatsoever :P 21:35:08 KICKBAN 21:35:27 A friend of mine and I wrote a game server to play a mix of chess and checkers (cheskers), and now I'm generalizing it to play most any game on a vaguely chess-like board. 21:35:38 (As well as properly supporting all the basic chess rules :P ) 21:36:41 mixed how? 21:37:11 You start with a row of chess pieces and two rows of checker pieces. 21:37:44 ok... 21:38:32 -!- MigoMipo has joined. 21:38:41 That's it :P 21:38:48 Beyond that it's just standard chess and checkers rules. 21:38:59 But it changes the dynamics of the game a lot. 21:39:04 -!- MigoMipo has quit ("QuitIRCServerException: MigoMipo disconnected from IRC Server"). 21:39:43 I imagine one ends up with a useful bishop and a crap bishop 21:39:55 Indeed. 21:40:10 We call them the "free" bishop and the "pinned" bishop. 21:40:19 ö 21:40:21 Same is true (to a much lesser degree) of the knights. 21:40:24 r 21:40:44 Ü 21:41:01 m 21:42:45 -!- ehird has changed nick to ehird|away. 21:45:10 hi 21:45:15 -!- ehird|away has changed nick to ehird. 21:45:19 you don't exist 21:45:38 you're an anti-entity 21:45:40 yep 21:45:46 no, not you 21:45:50 Yeah, well you're an auntie-entity 21:45:56 the other guy, who said hi 21:46:12 your evil remote twin 21:47:26 auntities and other uncleanness 21:47:36 aunt titties 21:48:29 whatever turns you on 21:48:44 ... *stab* 21:49:03 for which one? 21:49:12 ehird. 21:49:24 :´( 21:49:42 * ehird is dead. :-( 21:49:50 oerjan: What, you think I'm stabbing with sunshine and rainbows? :P 21:50:08 hm does that mean your auntity now exists? 21:54:44 There's a little bit of aunt titty in all of us. 21:59:15 uuuuhhhhh, ooook 21:59:38 hi SimonRC 22:05:17 -!- Corun has joined. 22:19:22 -!- kar8nga has quit (Read error: 145 (Connection timed out)). 22:41:25 -!- psygnisfive has quit (Remote closed the connection). 22:55:41 * SimonRC goes 23:03:24 -!- Deewiant has quit (Read error: 60 (Operation timed out)). 23:06:45 -!- Deewiant has joined. 23:09:40 -!- oerjan has quit ("Argh"). 23:13:16 -!- oerjan has joined. 23:24:00 -!- jix has joined. 23:30:52 -!- psygnisfive has joined. 23:31:03 ehird da 23:31:27 i showed the Life sierpinski gasket to my philosophy-and-computers prof and his response was "you gotta be frikkin kidding me" 23:32:56 :DD 23:33:23 :) 23:36:30 ... Sierpinski gasket in life? 23:36:34 ?? 23:36:40 yes? 23:36:42 * pikhq want see 23:37:01 i showed it off the other day after ehird's doubly mirrored gasket :| 23:37:13 wellnowwhat.net/transfers/Golly1.jpg 23:37:15 wellnowwhat.net/transfers/Golly2.jpg 23:37:20 oh whoops 23:37:32 wellnowwhat.net/transfers/Golly1.png 23:37:34 wellnowwhat.net/transfers/Golly2.png 23:38:27 pikhq: just draw a long perfectly straight line 23:38:33 voila: sierpinski. 23:38:44 Well. Damn. 23:38:46 yeah 23:38:48 it has to be one of the top coincidences of the century. 23:38:50 pretty crazy 23:39:00 i'm sure there's a deep mathematical reason for it 23:39:02 it's just amazing 23:39:05 oh there is 23:39:08 More accurately, it's not a coincidence at all, as i'm sure there's a deep mathematical reason for it 23:39:10 its pretty simple when you look up close 23:39:16 its amazingly obvious 23:39:20 GregorR: it wasn't intended, though 23:39:28 to the best of my knowledge 23:39:37 the reason is basically this ok 23:39:37 Right, 'struth. 23:39:50 the long line spawns two neighboring lines, right 23:39:59 because of the rule for cell activation 23:40:00 right 23:40:05 so you go from ...010... 23:40:10 to ...01110... 23:40:27 -!- BeholdMyGlory has quit ("godnatt"). 23:40:30 this then creates two more neighboring lines, while killing off those original three due to crowding 23:40:35 yeah 23:40:35 so you get ...0100010... 23:40:48 and now you have the same thing again 23:40:50 yep 23:40:51 only doubled 23:40:56 and separated by 3 0's 23:41:00 and the debris it generates = sierpinski 23:41:12 this keeps happening, separating out the long single lines, doubling each time 23:41:44 so that as they build outwards, they naturally form sierpinski's triangle by just .. spreading and doubling. 23:44:23 -!- jix has quit ("activating sleep mode ......... Done"). 23:44:41 hm this explains why it forms initially on the border of the shrinking lines, but not why it doesn't decay more afterwards (although the picture shows some decay) 23:44:51 -!- comex has quit ("Caught sigterm, terminating..."). 23:45:02 that's not decay 23:45:04 it smoothes out 23:45:08 it doesnt decay afterwards because it just ends up producing oscillators 23:45:44 so somewhat accidental perhaps 23:45:59 or maybe symmetry comes into it 23:47:58 -!- comex has joined. 23:48:16 oh dude 23:48:19 Golly has the metapixel 23:48:39 huh? 23:48:45 it has a number of them it seems 23:48:54 the self-simulation of Life 23:49:38 wait golly = GoL ? 23:49:48 no Golly is an app for running GoL 23:49:58 ah