00:00:16 -!- puzzlet_ has quit (Read error: 60 (Operation timed out)). 00:03:18 -!- puzzlet has joined. 00:17:27 -!- puzzlet_ has joined. 00:17:54 -!- Corun has quit ("This computer has gone to sleep"). 00:24:49 -!- Corun has joined. 00:28:31 -!- oerjan has quit ("Good night"). 00:29:21 -!- puzzlet has quit (Read error: 110 (Connection timed out)). 00:31:23 -!- jix has quit ("..."). 00:51:23 o 00:52:08 -!- moozilla has joined. 01:04:16 -!- moozilla has quit (Read error: 131 (Connection reset by peer)). 01:06:36 -!- mib_vg1sr6 has quit ("http://www.mibbit.com ajax IRC Client"). 01:08:02 oko 01:21:26 ooooo 01:21:41 opopopo 01:30:14 koko 01:35:29 size 01:35:38 assize 01:42:47 Assassinate. 01:47:52 basmati senate 01:47:56 sleep! -> 01:49:11 Etanissassa. 01:49:14 A tiny saucer. 01:52:27 -!- ais523 has quit. 02:04:05 -!- moozilla has joined. 02:06:31 -!- moozilla has quit (Read error: 104 (Connection reset by peer)). 02:06:55 -!- CakeProphet has joined. 02:59:37 -!- Corun has quit ("This computer has gone to sleep"). 03:00:11 -!- Corun has joined. 03:01:07 -!- Sgeo has joined. 03:03:22 -!- moozilla has joined. 03:21:06 -!- moozilla has quit (Read error: 104 (Connection reset by peer)). 03:24:32 -!- Corun has quit (Remote closed the connection). 03:24:59 -!- Corun has joined. 03:31:45 -!- Corun has quit (Remote closed the connection). 03:34:06 -!- Corun has joined. 04:23:51 -!- moozilla has joined. 04:26:11 -!- moozilla has quit (Read error: 104 (Connection reset by peer)). 05:18:42 -!- Asztal has quit (Read error: 110 (Connection timed out)). 05:26:57 -!- moozilla has joined. 05:27:28 -!- Corun has quit (Read error: 104 (Connection reset by peer)). 05:35:34 -!- moozilla_ has joined. 05:35:36 -!- moozilla has quit (Nick collision from services.). 05:46:10 -!- moozilla_ has quit (Read error: 145 (Connection timed out)). 06:03:33 -!- Corun has joined. 06:17:23 -!- moozilla has joined. 06:20:00 -!- moozilla has quit (Read error: 104 (Connection reset by peer)). 07:05:25 -!- seveninchbread has joined. 07:05:57 -!- CakeProphet has quit (Nick collision from services.). 07:06:15 -!- seveninchbread has changed nick to CakeProphet. 07:13:24 -!- Sgeo has quit (Read error: 110 (Connection timed out)). 07:14:15 -!- seveninchbread has joined. 07:14:54 -!- CakeProphet has quit (Nick collision from services.). 07:15:04 -!- seveninchbread has changed nick to CakeProphet. 07:36:23 -!- Corun has quit ("This computer has gone to sleep"). 07:36:51 -!- Corun has joined. 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:29:23 -!- SpaceMan has joined. 08:29:32 -!- SpaceMan has quit (Client Quit). 08:29:52 -!- Mony has joined. 08:30:30 -!- SpaceMan has joined. 08:30:50 -!- SpaceMan has quit (Client Quit). 08:31:56 -!- SpaceManPlusPlus has joined. 08:32:27 plop guys :) 08:32:36 hi. 08:32:56 how are you ? 08:32:56 im using a homebrew app 08:33:15 i created a new esoteric language 08:35:41 im going to browse esilang, bye 08:35:43 -!- SpaceManPlusPlus has quit (Client Quit). 08:52:36 -!- SpaceManPlusPlus has joined. 08:53:29 -!- SpaceManPlusPlus has quit (Client Quit). 10:15:34 -!- Corun has quit ("This computer has gone to sleep"). 10:48:39 -!- Corun has joined. 12:04:41 -!- Judofyr has joined. 12:05:49 -!- LinuS has joined. 12:05:53 -!- Linus` has joined. 12:05:59 -!- Linus` has quit (Remote closed the connection). 12:31:48 -!- Judofyr has quit. 12:33:12 -!- oklopol has quit ("( www.nnscript.com :: NoNameScript 4.2 :: www.regroup-esports.com )"). 15:30:34 -!- Asztal has joined. 15:48:28 -!- mib_c2zegu has joined. 15:58:56 -!- oklopol has joined. 16:01:22 -!- oklopol has set topic: THIS IS THE LINK TO THE LOGS >>> http://tunes.org/~nef/logs/esoteric/ <<< IT'S FUCKING ANNOYING HAVING TO GOOGLE IT ALL THE TIME, IF SOMEONE REMOVES IT AGAIN, I WILL put it back. 16:07:41 -!- mib_c2zegu has set topic: I love your mom. 16:12:22 -!- oklopol has set topic: THIS IS THE LINK TO THE LOGS >>> http://tunes.org/~nef/logs/esoteric/ <<< IT'S FUCKING ANNOYING HAVING TO GOOGLE IT ALL THE TIME, IF SOMEONE REMOVES IT AGAIN, I WILL put it back. 16:12:52 hum... 16:12:56 hi oklopol :p 16:13:00 hi Mony 16:13:19 did you see my esolang ? 16:13:24 yep 16:13:30 it's my very first esolang so ... 16:14:06 relink it if you want a comment, i don't remember much, since it wasn't fundamentally different from the mass 16:14:27 (not much is) 16:14:40 here it is http://mony.servhome.org/esolang/h0rR0r.html 16:16:34 and a goto was added right? 16:16:46 yah 16:16:57 but i don't remember how they work -_- 16:17:03 haha 16:17:36 in fact, i made this esolangs some weeks ago 16:17:45 well, comment on that subset, it doesn't really have any computational powah 16:17:54 do you have bignums 16:18:09 -!- puzzlet_ has quit (Remote closed the connection). 16:18:17 -!- puzzlet has joined. 16:20:11 bignums ? 16:23:13 http://www.codinghorror.com/blog/archives/001201.html Whine whine whine bitch bitch bitch. I wish Jeff Atwood would just go die or something. 16:30:49 i didn't find that all that annoying 17:12:53 -!- Corun has quit ("This computer has gone to sleep"). 18:02:20 -!- ais523 has joined. 18:02:58 -!- oerjan has joined. 18:03:18 what a horrible threat 18:03:32 yes 18:03:38 well done oklopol for setting that 18:03:49 -!- mib_c2zegu has set topic: BLOOD AND FIRE. 18:04:35 * oerjan hits mib_c2zegu with the saucepan ====\___/ 18:05:00 -!- ais523 has set topic: THIS IS THE LINK TO THE LOGS >>> http://tunes.org/~nef/logs/esoteric/ <<< IT'S FUCKING ANNOYING HAVING TO GOOGLE IT ALL THE TIME, IF SOMEONE REMOVES IT AGAIN, oklopol WILL put it back. 18:05:26 -!- mib_c2zegu has set topic: oklopol SHALL change this topic. 18:05:40 -!- mib_c2zegu has set topic: oklopol SHALL change this topic. everyone else SHALL NOT. 18:06:39 * Mony hits plop with the saucepan ====\___/ 18:06:41 -!- oerjan has set topic: oklopol SHALL change this topic. everyone else SHALL NOT. or ELSE.. 18:06:43 \o/ 18:06:55 -!- ais523 has set topic: THIS IS THE LINK TO THE LOGS >>> http://tunes.org/~nef/logs/esoteric/ <<< IT'S FUCKING ANNOYING HAVING TO GOOGLE IT ALL THE TIME, IF SOMEONE [probably ehird] REMOVES IT AGAIN, SOMEONE [quite possibly oklopol] WILL put it back. 18:07:02 oerjan: or else they'll be me 18:08:35 :-D 18:08:44 btw j is pretty awesome, have i mentioned 18:08:55 oklopol: i'm pretty sure 18:08:55 possibly, I know ehird mentions it often enough 18:09:03 hmm. does he now? 18:09:28 well. he should, since it's pretty awesome. 18:10:09 also building about 1000 pages of tutorial labs into the interpreter kinda makes it hard to lazy out of learning the language 18:10:23 i mean i can just start the interp, and "hmm. what should i do? oh! maybe read another lab." 18:10:54 and you can play with the language as you go, test all the things you learn, because the lab runs in the repl 18:10:59 that's pretty awesome too. 18:11:13 * oklopol continues, more random praise in a moment. 18:11:44 hrmph. 18:14:54 j cures malaria and prevents babies from crying. it also can be usedas a laundry detergent. 18:22:26 (*:^:_1) 4 <<< *: is square, ^:_1 applies it minus i times; evaluates to 2 18:22:40 ^:_1 applies it minus i times 18:22:41 wat 18:22:42 *minus 1 times 18:23:27 (*:^:7) 2 would be *: *: *: *: *: *: *: 2 18:23:45 (*:^:_1) 4 is naturally the square root of 4 18:23:53 how can you apply negative times 18:24:01 through magic :D 18:24:03 grr... J should stop looking like Underload, it's confusing me 18:24:14 i'm assuming a verb can contain info about how to negate its effects 18:24:39 this is mainly used for conjunctions that first apply ^:1 of a verb, then ^:_1 18:25:22 for instance stuff like geometric mean can be done by having the stages of squaring and square rooting kinda wrapped over the part where you just do arithmetic mean 18:25:30 in quite a pretty way 18:26:04 because you don't have to provide squaring and square rooting separately, just the square will do as long as it knows how it's effects are negated 18:27:24 also i don't know how to specify the function for negating a function, or how to specify other things functions can have, like units (0 for + and 1 for *) 18:27:31 oklopol, talking about reversible programs or? 18:27:47 and i don't know whether you can add concepts like this yourself, i'm assuming you can't, but wouldn't be the first surprise 18:27:55 AnMaster: not really 18:27:59 ah 18:28:01 what then? 18:28:10 reversible functions, I think 18:28:28 oh? Sounds quite similar, if you have the result you can get the arguments 18:28:33 being able to annotate functions with certain info higher-order functions need. 18:29:09 not the same thing, reversible programming would require the language to be able to look inside functions, and do algebra 18:29:11 however lots of functions can't be reversed, just consider additions, you have to know at least two of: a + b = c, to get the third 18:29:14 i mean 18:29:21 making functions reversible 18:29:32 if the language is reversible, that's a whole another issue of course 18:29:53 AnMaster: yes. but you're missing the point 18:29:57 oklopol, there is an reversible programming language at the esolang wiki iirc 18:29:59 forgot the name 18:30:05 2D iirc 18:30:11 there are many, 18:30:16 has nothing to do with this. 18:30:16 ok 18:30:19 hm ok 18:30:33 this is about... well i just said 18:30:37 being able to annotate functions with certain info higher-order functions need. 18:30:49 oklopol, and that isn't very clear 18:31:03 yes it is. 18:31:13 i'm elaborating, be patient. things like what / (fold) should use as the unit when given an empty list as arg 18:31:20 + has 0, * has 1 18:31:33 so +/ 0$0 would be 0, and */ 0$0 would be 1 18:31:41 hm 18:31:45 (0$0 is just a hacky way to make an empty list) 18:31:56 oklopol, what language is this? 18:32:02 this is J 18:32:05 spec? 18:32:23 jsoftware.com 18:32:26 is the spec closed-source, or just the implementation? 18:32:34 i don't know and i don't care 18:32:37 clicky: http://www.jsoftware.com/ 18:32:49 now watch AnMaster rant about how much it sucks because its' closed 18:33:27 AnMaster: reversability here was just an example of something you can annotate a function with: have another function to reverse it with, somehow stored with the function 18:33:50 hm 18:33:57 is this an esolang or? 18:34:00 no. 18:34:05 you could have clicked the link... 18:34:07 it's meant to be serious, it acts a bit like an esolang now 18:34:16 mib_c2zegu, I was waiting for browser to load 18:34:17 ... 18:34:22 I see many similarities with Overload, for instance, although also differences 18:34:27 Slow computer. 18:34:28 J's a lot faster, for one thing, and has more syntax 18:34:47 mib_c2zegu, rather: fast computer rendering images with raytracing 18:35:01 J's syntax seems very clever, it solves some of the problems i was struggling with with oklotalk simply better than i did 18:35:06 so result is slow for everything else 18:35:09 and i don't admit that easily 18:35:38 I think J is a non-esolang that does well at solving many of the problems in implementing an oklotalk/Overload-style esolang (something multiple people here have obviously thought of) 18:35:56 hm 18:36:40 well one of J's greatest benefits is having an incredible amount of *algorithmic* modules 18:36:56 i mean, yeah, java and python have a million networking modules. who gives a shit. 18:38:04 or, at least if the small subset i've seen is, in fact, a small subset and not most of it :P 18:40:21 oklopol, that is probably because J and Java try to solve different problems 18:43:40 true. j solves all problems, while java doesn't. 18:43:44 :-) 18:45:09 i don't know much about j's module facilities. there's a lab about Object Oriented Programming though, and i'm sure j + oo is better than not j + oo. 18:49:51 (to be honest i'm pretty sure it's really ugly) 18:50:03 which VPS host do you guys use? 18:50:29 slicehost.com 18:50:40 it's el greato maximus 18:50:42 ah, good, I was just looking at those 18:51:00 _0x44 from ##nomic works there :-) 18:55:41 mib_c2zegu: is that a permanent nick? 18:56:17 oklopol: what? 18:56:36 no, ehird's just using random mibbit links atm 18:56:50 because for some reason he seems not to like using an IRC client but not a bouncer 18:56:57 lazy 18:57:02 my irc client is configured to my bouncer 18:57:22 reconfiguring a client is easier than using Mibbit, IMO 18:58:10 so. no. 18:58:16 cmd-n mibbit enter click click Freenode click esoteric type click 18:58:17 vs 18:58:34 mib_c2zegu: wanna know something mind-blowing? 18:58:39 look thru menus, connections, delete, add, freenode, irc.freenode.net, add #esoteric, click, connect 18:58:40 assuming i didn't tell you yet. 18:58:43 oklopol: sure 18:58:45 vs F2 alt-e irc.freenode.net enter enter 18:58:52 which is all it took to reconfigure my client 18:59:06 ais523: that does not join #esoteric. 18:59:07 although I went through the menus because I forgot the keyboard shortcuts, so two clicks not F2 18:59:12 mib_c2zegu: yes it does 18:59:14 also, I don't memorize the shortcuts for reconfiguring my irc client. 18:59:18 crazy I know. 18:59:22 my client was set up to join #esoteric by default beforehand 18:59:27 ais523: that's cheating. 18:59:29 i tried a version control system 18:59:30 mine wasn't. 18:59:31 via the bouncer 18:59:35 oklopol: holy fuck. which one 18:59:37 please say git 19:04:24 nope 19:04:30 i was just the user of the system 19:04:34 used tortoisesvn 19:04:51 oklopol: svn is kinda suck :{ 19:04:52 there are some development models svn is good for 19:05:00 I've only once been in a situation where svn was useful, though 19:05:03 ais523: and they all work just as well with a dvcs 19:05:05 and used it on more projects than one 19:05:12 mib_c2zegu: pretty much, yes 19:05:17 cvcs's are an inferior subset of dvcs's 19:05:37 although #interhack are using a dvcs, when they really need a cvcs I think 19:05:49 at least, you get in trouble for doing something a cvcs couldn't do 19:05:52 ais523: no; they just have a bad development model 19:05:53 hey. at least i liked it. meaning i might even try the other options. 19:05:54 :P 19:06:01 oklopol: you liked it? hoshit :D 19:06:12 oklopol is turning into an enterprise programmer :< 19:06:16 :DD 19:06:55 hey i'm moving from python to j now, clearly i'm struggling against it 19:07:02 lo 19:07:03 l 19:07:38 well actually i thought i'd start my language learning spree over, but this time actually learn the languages instead of just enough to forget it right away 19:08:01 and j and haskell are first 19:08:08 hee 19:08:31 * ais523 thinks there should be a lang like J, but more tinkerable 19:08:35 well haskell i know much better than i did j of course 19:09:39 j is tinkerable, no? 19:09:48 yes, but you can always get more tinkerable 19:10:15 can you elaborate on tinkerable 19:10:41 like, able to change things about the language 19:10:43 like syntax 19:11:39 mib_c2zegu: what was the thing i was trying to solve in j? 19:11:45 when we had the whole #j episode 19:11:57 oklopol: err, factorial with @ or something 19:12:35 (#j has both an autoinvite on part, and autoban on join-flood, it's a fun channel to part considering i have autojoin on invite :DD) 19:12:54 autoinvite on part? why? 19:13:06 ais523: because quakenet 19:13:14 could you elaborate? 19:13:18 well it's inhabited by gamers 19:13:39 i dunno. just seems like a very quakenety thing to do 19:13:45 hmm... does the autoinvite do anything but cause people to rejoin the channel? 19:13:57 it asks them to rejoin 19:13:59 obviously 19:14:03 with an invite 19:14:06 ais523: it may cause them to rejoin if their clients are like that 19:14:08 very quakenet, I agree 19:14:08 I mean, anything else? 19:14:11 ais523: no 19:14:19 the invite doesn't let them join voiced, for instance? 19:14:21 otherwise it does nothing, because why would someone rejoin if they just parted 19:14:40 ais523: it's just to get them to come back. 19:15:15 ais523: i doubt that, they should be voiced if Q-bot considers them worthy 19:17:34 mib_c2zegu: the reason for why i couldn't get it to work is @: is function composition, and the @ i used is actually not, it has a small difference, it uses the rank of the latter verb for both verbs 19:17:54 rank is kinda like whether arguments are of type [a] or [[a]]. 19:18:02 yes you said 19:18:03 or just a 19:18:09 well yes 19:18:12 but i didn't actually know :P 19:18:15 now i do 19:18:27 it was just a sophisticated guess back then 19:18:46 i guess that's a bit irrelevant from your perspective. 19:35:37 -!- oerjan has quit ("Trying a reboot"). 19:39:00 -!- oerjan has joined. 20:13:01 so, tonight, programming or algorithms? 20:13:29 programming 20:13:34 documentation 20:13:50 * oerjan cackles evilly 20:14:36 oerjan: not much difference :< 20:14:50 programming is documentating YOUR MOTHER 20:15:32 RIR 20:17:44 RIR? 20:19:51 RIRIRIR 20:27:30 -!- Judofyr has joined. 20:27:34 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)). 20:28:04 -!- Judofyr has joined. 20:48:06 -!- Sgeo has joined. 20:57:54 o 20:58:27 oko 21:02:30 oko 21:02:34 o 21:02:37 o 21:02:41 oko 21:02:43 okoko 21:02:50 okokoko 21:02:52 oko 21:03:26 okokokokoko 21:03:31 o 21:03:38 okoko 21:03:42 oko 21:03:44 o 21:04:26 okookokk 21:04:41 kookook 21:05:07 ok?ok!Ok. 21:05:21 Ook? Ook! 21:05:29 let's play Nim with okos 21:05:49 * Sgeo should probably look up Ni, 21:05:51 Nim 21:05:57 -!- Asztal has quit (Read error: 110 (Connection timed out)). 21:05:57 it's a good game, and very simple 21:06:04 basically, you start with a certain number of piles of objects 21:06:07 okos in this case 21:06:15 players take turns to remove objects from a pile 21:06:24 as in, you can remove any number of objects but they all have to be in the same pile 21:06:30 whoever takes the last object loses 21:06:54 Isn't Nim solved or something? 21:06:58 yes 21:07:18 yes, it is, that's why I'll beat you at it 21:07:27 unless you start in a winning position and either have also solved it, or are lucky 21:07:52 you have to be exponentially lucky 21:08:12 yes 21:08:25 You'd be the one choosing who goes first? 21:08:32 * Sgeo is looking at it on Wikipedia 21:08:38 no 21:08:46 err. 21:08:54 yeah that's not enough 21:08:55 if I choose who goes first and there are two players, I'll win unless I screw up really badly 21:09:03 even if someone else chose the board before that 21:09:09 i.e. the starting position 21:09:26 now, is it pspace-complete if you have two stacks? 21:09:37 huh? 21:10:07 i would imagine it is logspace 21:10:09 oerjan: well in pspace, but not known to be in np, isn't that the usual game classification 21:10:20 hmm 21:10:20 far below pspace 21:10:30 the strategy for winning it is O(log n), where n's the largest stack you have remaining 21:10:42 hmm 21:11:27 by stack you mean pile? 21:11:29 hmm. yeah okay it doesn't really make the game more interesting 21:11:43 oerjan: umm. well yes 21:11:44 oerjan: yes 21:11:50 oh, ais523 21:11:57 oh, me too 21:12:23 hmm. 21:12:30 how about some kinda graph... 21:12:54 see hackenbush, i think 21:13:15 no that's just either the original or multiple stacks if you can cut it into a forest 21:13:21 hackenbush? k 21:14:43 http://en.wikipedia.org/wiki/Hackenbush 21:15:19 and sprouts 21:15:46 http://en.wikipedia.org/wiki/Sprouts_(game) 21:15:59 sprouts with oko wouldn't really work 21:16:51 * oerjan once played sprouts with conway in person 21:17:14 who won? 21:17:17 and wow 21:17:17 of course i lost, since i hadn't seen the game before 21:18:10 * oerjan hasn't really tried learning it since either 21:18:50 brussels sprouts always has the same winner no matter who plays where 21:18:59 :D 21:20:12 ahh, hackenbrush is essentially my graph idea, except when split into components, some components are removed from the game 21:20:29 == nim -> game 21:20:45 oerjan: how come you've seen a celebrity? 21:21:21 he was giving a lecture in seattle when i was there during my ph.d. 21:22:43 and afterwards there were some discussions in the institute's lunch room 21:23:11 (the lecture was on surreal numbers iirc) 21:23:58 you have an awesome life 21:25:10 oklopol: was that sentence an attempt at alphanumeric-only oko? 21:30:17 ...yes of course 21:31:07 so 21:31:09 what if 21:31:11 o 21:31:15 o's were 21:31:16 umm 21:31:21 on the ground 21:31:59 and a word, "xozy", for instance, meant the graph consisting of the characters of english, contained the path xozy 21:32:08 linking x, o, z and y 21:32:26 so you could eodermdrome hackenbrush 21:32:40 now if you mix scrabble into that... 21:32:48 :P 21:32:50 oh wait 21:33:00 nim is still an incomplete game if everyone can remove any line? 21:33:04 hmm. 21:33:21 what do you mean incomplete? 21:33:35 an incomplete game, trivial 21:33:52 dunno. 21:33:55 hmm 21:33:59 see the sprague-grundy theorem linked from the hackenbush article 21:34:29 ah 21:34:31 ! 21:34:50 not that that implies complete triviality. sprouts hasn't been completely solved despite being theoretically under that theorem 21:35:04 alright 21:35:40 oooooooooo 21:35:52 now 21:35:59 *boom* 21:36:20 the red-blue-(green) hackenbush described is sort of to get conway's general games rather than just nimbers 21:36:25 how about someone start the game, the obvious scrabble rule is you can only use english words when doing transformations 21:36:55 (or so i assume, i haven't actually read that book) 21:53:50 -!- Judofyr_ has joined. 21:54:10 -!- Judofyr has quit (Read error: 110 (Connection timed out)). 21:54:13 hi Judofyr_ 21:54:41 hi :-) 21:54:43 -!- Judofyr_ has changed nick to Judofyr. 21:54:53 wazzzzzzup? 21:55:06 the sky 21:55:18 oh 21:55:30 duh. 21:55:53 what book should I buy from Amazon? 21:55:57 say one 21:55:59 a good one 21:56:06 one\na good one 21:56:08 > 21:56:14 err how abou 21:56:15 t 21:56:20 Enterprise Esoteric Programming: From Brainfuck to Underload 21:56:24 by Fake T. Name 21:56:37 I would love that book! 21:56:45 yes! 21:56:48 * mib_c2zegu = ehird 21:56:52 so would I 21:57:00 I should write a book about esolangs 21:57:00 pity it doesn't exist 21:57:02 it'd be awesome. 21:57:12 actually, I think it might be interesting to convert Esolang the wiki into book form 21:57:25 mib_c2zegu: why the heck are you mib_c2zegu and not ehird? 21:57:31 together with commentary 21:57:36 Judofyr: mibbit 21:57:37 and explanations 21:57:47 Judofyr: because he's too lazy to change the default nick, even with /nick 21:58:03 ais523: better idea: cite it with little footnotes in the book, except have it reference it as saying stuff entirely different from what it does 21:58:04 ah 21:58:08 understandable 21:58:26 mib_c2zegu: why? 21:58:30 that would mean a lot more writing 21:58:34 ais523: because that's esoteric 21:58:41 also, writing a book about esolangs sounds fun 21:58:50 (so does playing with its typography for 7 years) 21:59:14 brb 21:59:21 the toilet needs me 21:59:59 uh, thanks. 22:02:18 back! 22:02:26 but seriously, a good book? 22:02:34 sicp :-P 22:02:39 right now I got SICP and The Little Schemer in my cart :P 22:02:51 and the From NAND to Tetris-book 22:02:55 enterprise javabean development with struts 22:02:57 well everyone needs rwh 22:03:05 oh yeah, throw in rwh 22:03:10 rwh? 22:03:14 rwh. 22:03:14 real world haskell 22:03:18 http://www.realworldhaskell.org/ 22:03:19 ah 22:03:29 -!- mib_c2zegu has set topic: functional programming weenies.. 22:03:57 hm... haskell? 22:03:58 really? 22:04:02 what about it? 22:04:05 -!- oklopol has set topic: functional programming weenies. also THIS IS THE LINK TO THE LOGS >>> http://tunes.org/~nef/logs/esoteric/ <<< IT'S FUCKING ANNOYING HAVING TO GOOGLE IT ALL THE TIME, IF SOMEONE REMOVES IT AGAIN, I WILL put it back. 22:04:06 haskell is cool. 22:04:52 I like Haskell 22:05:07 btw, anyone know how to write a recursive function with base case inside the GHCi REPL? 22:05:12 it's easy enough in an actual program 22:05:17 func 0 = ... 22:05:20 func x = ... 22:05:23 ais523: ; 22:05:23 but that doesn't work inside the REPL 22:05:25 instead of \n 22:05:28 actually 22:05:31 you can do \n too 22:05:32 let func 0 = ... 22:05:35 let func x = ... 22:05:40 IIRC I tried that 22:05:45 and the second definition overwrote the first 22:05:48 oh, right 22:05:50 and I got a syntax error when I used a ; 22:05:51 well do the first first! 22:05:57 let func 0 = ...; func x = ... 22:06:06 ah, that might be it 22:06:07 yeah 22:06:08 do that 22:06:10 it is it 22:06:10 :P 22:07:34 o 22:07:41 -!- psygnisf_ has quit (Read error: 110 (Connection timed out)). 22:09:41 I'm thinking of buy Programming in Lua 22:09:55 what you think about Lua? 22:10:03 Lua is alright, but I wouldn't buy a book about it 22:10:34 I wouldn't buy a book about most langs, though 22:10:38 I'd just download a free one 22:10:48 I would buy a book about my language! Despite there not existing one! <.< 22:11:08 * ais523 remembers the fun he had trying to cite in an academic paper a book he downloaded via the Debian/Ubuntu repos 22:11:13 "published on the Internet, but not the Web" 22:11:33 you know, with all those fingerprints "Practical Befunge" almost sounds like a reasonable idea 22:11:39 yes 22:11:48 I should write Practical Befunge. 22:11:49 and INTERCAL is almost practical, it just needs better string-handling 22:11:53 In fact, I should just write a series of books on esolangs. 22:11:59 Who wouldn't buy them? 22:12:13 They would, of course, treat the subject entirely seriously. 22:12:16 :D 22:12:31 and Underlambda is meant to be practical eventually, once I finish it 22:12:34 okey. more books I *really* should read! 22:12:41 'night 22:12:44 -!- Mony has quit ("Quit"). 22:13:27 Judofyr: algorithm design is a pretty fun book 22:13:29 it's evil to say goodbye before you can respond :-( 22:13:55 Mony is like that, plops in and 'nights out, doesn't have a care in the world 22:14:07 Judofyr: i kept seeing Concepts Techniques and Models of Computer Programming recommended when i was following Lambda The Ultimate 22:14:10 probably an /amsg 22:14:56 i recently read the first four or so chapters of ctmcp 22:15:00 Mony has distilled the essence of eso 22:15:03 it was quite enlightening 22:15:07 haha 22:15:09 (which is different from oklopol, who /is/ the essence of eso) 22:16:08 Judofyr: also, i prefer to say my goodbyes in my quit message. saves everyone work. 22:16:23 it describes the language oz via a nice set notation 22:16:39 essentially describes an interpreter in math 22:16:59 Chaitin apparently once wrote a Diophantine equation which implemented Lisp 22:17:12 adds concepts as they are discussed, dataflow variables, lazy evaluation, exceptions etc 22:17:18 so. 22:17:20 i recommend too. 22:17:29 so. <--- so what? 22:17:36 i recommend too. <<< this. 22:17:43 sorry, I've been waiting to make that joke for months 22:17:46 :D 22:17:58 well. that's funnier than the actual joke :P 22:18:03 oh dear, I must be turning into AnMaster 22:18:59 i was planning to buy ctmcp myself, but sicp won for now 22:19:30 since i can just borrow a brand new ctmcp from the lib if i have the time to continue on in 22:21:09 hm actually Lambda the Ultimate had a book list 22:21:42 link it so i can read them all 22:21:58 i've got to find it again first 22:24:12 hm it may have been a thread actually, possibly this one: http://lambda-the-ultimate.org/node/492 22:43:48 o 22:44:26 -!- oerjan has quit ("Good night BWAHAHAHA"). 22:44:53 hrmph 22:54:34 god i hate java 22:55:33 it kills my creativity 22:55:58 i just end up slowly writing up a crappy solution and thinking "python is so much nicer" 22:56:22 so does everyone else who knows both Java and Python 22:56:24 it's not that you can't do things well with java, it's just i just can't, because i hate it 22:56:30 oklopol: use Jython 22:56:31 :P 22:56:37 just replace your whole program with sth like 22:56:41 well yeah that probably would've been a good solution 22:56:45 (new JythonInterpreter()).eval("PYTHON YAY"); 22:56:57 i just thought, since this is a trivial little application, it doesn't matter how i do it 22:57:01 oklopol let's make a language based on kittens 22:58:03 it's just even a trivial program takes ages to write considering most of my coding time is just looking at the source and hoping the 15 lines to do something trivial would write itself. 22:58:11 because i don't want to write 15 lines to do something trivial 22:58:21 i want trivial things to be trivial :< 22:58:59 almost done though, yay. 23:02:11 oklopol: write a java module called Shit.java 23:02:18 that contains shit that makes life a little less painful. 23:02:28 heck, you could even fake lambdas: 23:02:40 new L(){void c(){...}} 23:02:41 yes, i should do that 23:02:51 the problem is, i don't want to. 23:02:52 that's only like 100 characters bigger than python's lambdas 23:02:52 :P 23:03:00 because i don't want to use java 23:03:01 oklopol: I'll write it for you. Because I am so kind/ 23:03:05 and bored 23:03:15 so as a protest, i'm punishing myself by doing everything the hard way 23:03:42 i wonder if "package net.freenode.irc.esoteric;" is acceptable :-P 23:03:44 for instance i'm not using any kind of serialization, because you can't do it functionally. 23:04:02 if you can't write serialize(object) or something conceptually as simple, the language is flawed. 23:04:18 well not the language necessarily, but the stdlib anyway 23:04:51 Underlambda has S and D commands 23:04:59 which serialise and deserialise something, respectively 23:05:03 to stdout or from stdin 23:05:17 obj serialize 23:05:21 "" deserialize 23:05:27 ^ my vaporware language 23:06:28 serialization is ugly the way it's done in most languages 23:06:52 i mean, if serialization is done to get a bitstring out of an object, so you can send it over a network, or put it in a file 23:07:18 obj serializeTo: stream 23:07:20 that's just retarded, you shouldn't have to have two conceptual representations of an object, and have different things use different represenations 23:07:20 :P 23:07:24 *representations 23:07:31 that should be hidden from the programmer completely 23:07:31 oklopol: it's not a conceptual representation 23:07:35 an object "has" no representation 23:07:43 an object just is 23:07:52 serializing is giving it a bytestring representation 23:08:42 can't really think where that'd be useful, except maybe for hash values, but that should be in the stdlib anyway 23:09:00 oklopol: putting on a disk? 23:09:02 or whatever 23:09:08 you can't put plain objects on to disk 23:09:11 it's just a fact 23:09:16 the disk is made up of bytes 23:09:17 :| 23:09:21 objects, being conceptual, aren't 23:09:40 in Underlambda, one neat trick is to serialise a continuation 23:09:41 i don't see where it'd be useful to think of the disk as made up of bytes 23:09:44 gives a trivial way to save your program 23:09:46 oklopol: because it _is_ 23:09:55 do you want your language to -lie- to you? 23:10:01 the disk is made up of bytes in files. 23:10:02 end of. 23:10:05 you write the serialised continuation out to disk; to run the program from there, just deserialise and give it an argument 23:10:24 mib_c2zegu: it's just a different level of abstraction to think of it as not being made up of bytes 23:10:33 oklopol: no -- it's a layer on top of 23:10:35 an abstraction that doesn't lose generality 23:10:43 it's not a different level, it's a new abstraction 23:11:08 "IF SOMEONE REMOVES IT AGAIN, I WILL put it back" 23:11:11 What a threat 23:11:19 :-) 23:13:37 anyway mib_c2zegu, what's the problem with that abstraction? 23:14:05 i mean the fact it's made up of bytes so the programmer should know that too isn't really much of an argument 23:14:16 it stops the programmer using existing files which are made of bytes? 23:14:19 it's also made up of electricity, but the programmer doesn't know that 23:14:33 and stops them writing out files for use in other things which use them as bytes? 23:15:15 mib_c2zegu: that's a better argument, although i'm not really satisfied with it 23:15:33 there are better ways around that than serialization 23:15:42 raw mode should be an exception, not the standard 23:15:47 files are made of bytes, this is the API exposed to the programmer from the OS (electricity isn't), and the rest of the universe expects them to be bytes 23:15:57 and it's more useful to create files that work with everything else, and read them, than just this language 23:15:58 in general 23:16:03 so the most common case should be default 23:16:35 well in the case of serialization, nothing else can read the file anyway 23:16:44 because serialization is specific to the language 23:16:47 yes 23:16:54 but serialization in that case can build on top of the byte exposing 23:16:59 and just be obj.serialize() -> String 23:17:16 in Underlambda, serialisation is specific to the interp, or the executable in the case of compilation 23:18:07 mib_c2zegu: it can, yes, i still think it's not pretty. 23:18:16 if you don't agree, fine 23:18:34 yay, my java lambdas work 23:18:38 although they're hideously verbose 23:18:41 I think I can make them lesso 23:18:42 but, 23:19:00 L addWorld = new L() { public String _(String a) { return a + " world!'; }}; 23:19:01 vs python 23:19:06 addWorld = lambda a: a + " world!" 23:19:22 :) 23:19:51 an example with multiple arguments would make the distinction even greater 23:20:03 yes, mine doesn't do multiple arguments 23:20:04 well, Java's typed, so the specifying types everywhere is hardly surprising 23:20:08 put them in an array :P 23:20:10 ais523: Haskell: 23:20:13 mib_c2zegu: well i meant with an array 23:20:13 yeah 23:20:15 addWorld = \a -> a ++ " world!" 23:20:16 it's typed too :P 23:20:27 at least you're using templates, even though Java's implementation of templates is stupid 23:20:30 java is just totally inexcusable as a language. 23:20:37 ais523: ah, wait, I should get rid of the template stuff 23:20:39 just make it Object 23:20:41 then there's less typing 23:20:53 no, I dont' care about safety :P 23:21:06 java isn't exactly type safe. 23:21:23 it's just annoying 23:21:46 haskell's type system has actually helped me a few times, java's is just in the way 23:21:58 L addWorld = new L(){public Object _(Object a){return a + " world!";}}; 23:22:01 ^ that's better, slightly 23:22:07 now to see if I can eliminate those Object's 23:22:17 btw, you call like 23:22:20 Java's sort of got an anti-type-system 23:22:21 lambda._(arg) 23:22:29 it checks types at compile time, then forgets about them 23:22:33 yeah 23:22:46 and at runtime it doesn't have any type information so you have to tell it what types things are all over again 23:22:55 then it just errors if things are the wrong type, which can somehow happen anyway 23:23:33 java knows what type things are, just not the generic parameters, afaik 23:23:42 *types 23:23:54 oklopol: not in cases of inheritance 23:23:58 which you're doing all the time in OO langs 23:24:12 hmm. 23:24:14 damnit, you need to explicitly specify public for anon classes 23:24:20 I think I may have reached the limit here. 23:24:24 i'm pretty sure it does know the exact types. 23:24:30 oklopol: are you wary of running a preprocessor over your program? 23:24:49 mib_c2zegu: do you expect me to use your system? :D 23:24:52 YES. 23:24:53 :) 23:24:56 I could write a python program that turned FUN(a -> a + " world!") 23:24:56 :D 23:24:57 into 23:24:58 well err. 23:25:11 new L(){public Object _(Object a){return (a + " world!");}} 23:25:12 :D 23:25:16 oklopol: ISN'T THAT TEMPTING?? 23:25:21 heck, you could even have maps. 23:25:26 but... can you make it infer the types so i don't have to do explicit type conversions? 23:25:39 oklopol: well, perhaps 23:25:45 I may allow explicit types defaulting to Object 23:25:51 so you could do FUN(StupidType a -> ...) 23:26:26 Map._(FN(a -> a + " world!"), {"a","b","c"}) 23:26:31 ^ that's pretty awesome I think. 23:26:37 i mean, as far as using java goes 23:26:42 I think that's pretty cool :P 23:28:19 hmm. 23:28:30 {"a","b","c"}? 23:28:41 tha's javas array literal syntax no? 23:28:49 i think it's more like new String[]{...} 23:28:59 well, whatever 23:29:06 it's still better than a hueg for loop and reassign and shit 23:29:31 anything is better than a loop 23:30:17 * mib_c2zegu wonders what to name the utils package 23:30:21 make.java.less.crap? 23:30:28 okay booker time. 23:30:31 -!- Judofyr has quit (Read error: 60 (Operation timed out)). 23:30:37 oklopol: NOES. 23:30:38 :P 23:31:08 i wonder if british universities are as keen on java as finnish ones 23:31:14 maybe. 23:31:14 oklopol: 23:31:16 x+4 = 3 23:31:19 WHAT IS X 23:31:50 hmm 23:31:51 well 23:32:01 I don't know what X is 23:32:02 x+4 is a temporary object on the stack 23:32:08 I know what x is, though 23:32:12 -!- Judofyr has joined. 23:32:13 and we need to convert it to an lvalue 23:32:31 now, we have all integers as lvalues somewhere in the memory, for literals that is 23:32:53 we just look up the reference to where ever x + 4 is, and rewrite that to 3 23:33:08 x stays the same 23:33:11 The answer was x+4.3089£& 23:33:36 i don't understand 23:33:41 you will have to walk me through this. 23:33:43 k 23:33:45 $£56@£ 23:33:51 have you noticed oklopol 23:33:55 I drew you from your book. 23:33:56 MWAHAHA 23:33:59 ... 23:34:03 oh my god! 23:34:04 er 23:34:05 forget I said that 23:34:06 <.< 23:34:07 so oklopol 23:34:08 what is x 23:34:17 i already told you 23:34:22 no you did not 23:34:31 wait i didn't? 23:34:32 hmm. 23:34:34 nope 23:34:38 let's see... 23:34:45 01:32… oklopol: x stays the same <<< i so did,. 23:34:54 .,.,.,.,.,.,.,.,.,. 23:34:58 ,.,.,.,.,.,.,.,.,., 23:34:59 k 23:35:01 :P 23:35:04 oklopol: that looks like BF 23:35:09 it is 23:35:26 import functional.java.Fn; public class Example { public static void main(String[] args) { System.out.println(FN(a => a + " world!")._("Hello,")); } } 23:35:43 it's an interactive conversation program 23:36:55 mib_c2zegu: ._ is ugly. 23:37:06 oklopol: got a better idea? 23:37:09 I could also make it $ 23:37:14 just make the trivial type inference code and use () :o 23:37:16 FN(a => a + " world!").$("Hello, ") 23:37:24 also, that can't be performed as a simple rewrite of the source 23:38:21 it can, although you need to infer the types of all callers 23:38:25 wait... 23:38:35 well yeah, more or less. 23:38:50 oklopol: i don't think you understand, mine just runs a few regexs 23:38:51 :P 23:39:18 i know, i'm joking for teh most part :) 23:49:07 hmm, well basic compilationeration works 23:49:10 can't specify return type atm 23:49:22 can specify input tho 23:50:16 oklopol: how should return valuamations be specified 23:50:18 I'm thinking liek 23:50:31 FN(a =>Object a + " world!") 23:50:32 or sth. 23:52:17 maybe have A=>B be reduced to L, and use -> for lambdas 23:52:20 dunno. 23:52:29 mayb. 23:52:35 still 23:52:38 it compiles this: 23:52:39 import functional.java.*; public class Example { public static void main(String[] args) { System.out.println(FN(a => a + " world!")._("Hello,")); } } 23:52:40 into this: 23:52:44 import functional.java.*; public class Example { public static void main(String[] args) { System.out.println((new Lambda() { public Object _(Object a) { return (a + " world!"); }})._("Hello,")); } } 23:52:46 not bad. 23:53:42 ooooooooooo 23:54:03 it's nice, but i can't help thinking it's also very trivial :P 23:54:10 oklopol: shur, it is 23:54:14 but wait till I add more stuff :P 23:54:29 well yeah add all the stuff python has and i'm good to go 23:54:41 wellllll not all of it 23:54:49 oklopol: I'm just trying to avoid you committing suicide. 23:57:18 :) 23:59:03 -!- Judofyr has quit.