00:03:59 -!- calamari has quit ("Leaving"). 00:07:20 gah 00:07:27 * xor starts to hate OOP 00:08:20 @'print-hello ["Hello, World" print] @object %inherit add-method done create print-hello 00:09:01 xor: have you looked at Slate? 00:09:06 no 00:09:10 Self? 00:09:19 no 00:09:22 Javascript? 00:09:52 no 00:16:31 I wonder if I should separate classes and class builders 00:19:32 a class has one method, create, which creates the object. class builders have two methods, add-method and done. 00:20:18 Smalltalk? 00:20:32 FOOS 00:20:48 kinda like smalltalk, except with a stack 00:21:00 do have a look at slate, slate.tunes.org 00:21:51 -!- Rugxulo has joined. 00:22:45 http://bsmntbombdood.mooo.com/FOOS.txt 00:23:06 -!- nazgjunk has quit ("crap, exam in exactly 8 hours... sleeeeep"). 00:23:57 -!- nazgjunk has joined. 00:24:00 everthing is anonymous and held on the stack 00:24:05 (except @) 00:24:48 yeah... I love hate OOP. 00:25:31 -!- Rugxulo has left (?). 00:25:53 it's a useful metaphor... but not for anything. 00:25:57 er... everything 00:26:05 a good example I read recently was - http://en.wikipedia.org/wiki/Antiobject 00:39:03 * GregorR considers rererererecreating Plof. 00:41:09 s/re/rere 00:41:58 -!- pikhq has joined. 00:43:37 hmm 00:43:42 ? 01:21:58 -!- jix__ has quit ("Bitte waehlen Sie eine Beerdigungnachricht"). 01:43:23 -!- pikhq has quit (Remote closed the connection). 02:30:39 -!- Izzy7 has joined. 02:31:15 Could someone please write a quine to this channel? 02:31:54 Could someone please write a quine to this channel? 02:54:44 Could someone please write a quine to this channel? 03:11:21 -!- ShadowHntr has joined. 03:18:57 -!- Sgeo has joined. 03:29:48 -!- UpTheDownstair has joined. 03:34:49 -!- nazgjunk has quit (Connection timed out). 04:05:19 Could\ someone\ please\ write\ a\ quine\ to\ this\ channel? 04:25:45 This is a quine. 04:32:24 Gregor kill. 04:33:40 Could someone please write something other than a quine? 04:34:50 -!- ShadowHntr has quit ("End of line."). 04:40:05 This is not a quine. 04:41:36 bollocks 05:06:09 -!- SevenInchBread has quit (Read error: 113 (No route to host)). 05:14:43 -!- Abednego has joined. 05:17:05 -!- Abednego has changed nick to Abedneg0. 05:17:42 -!- Abedneg0 has changed nick to Abednego. 06:10:39 -!- RodgerTheGreat has quit. 06:16:07 -!- Sukoshi has quit ("ERC Version 5.1 (CVS) $Revision: 1.796 $ (IRC client for Emacs)"). 06:31:44 -!- Sgeo has quit ("Leaving"). 06:55:27 -!- UpTheDownstair has changed nick to nazgjunk. 07:43:58 -!- ShadowHntr has joined. 07:50:52 -!- oerjan has joined. 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:09:21 -!- ShadowHntr has quit (Read error: 110 (Connection timed out)). 08:35:36 -!- Sukoshi has joined. 10:26:52 -!- oerjan has quit ("leaving"). 13:48:10 -!- Sukoshi has quit (zelazny.freenode.net irc.freenode.net). 13:48:10 -!- Abednego has quit (zelazny.freenode.net irc.freenode.net). 13:48:10 -!- xor has quit (zelazny.freenode.net irc.freenode.net). 13:48:11 -!- helios24 has quit (zelazny.freenode.net irc.freenode.net). 13:48:11 -!- GregorR has quit (zelazny.freenode.net irc.freenode.net). 13:48:36 -!- Sukoshi has joined. 13:48:36 -!- Abednego has joined. 13:48:36 -!- xor has joined. 13:48:36 -!- helios24 has joined. 13:48:36 -!- GregorR has joined. 13:50:17 -!- jix has joined. 14:02:41 -!- jix has quit ("This computer has gone to sleep"). 14:46:22 -!- sebbu has joined. 14:59:48 -!- Abednego has quit ("quitted"). 15:31:19 -!- RodgerTheGreat has joined. 15:31:52 hi guys 15:39:19 ~bf +++++++++++++++++++++++++++++++++++. 15:39:19 # 15:52:15 -!- crathman has joined. 16:09:10 -!- jix has joined. 16:24:33 -!- jix__ has joined. 16:33:54 -!- jix has quit (Read error: 113 (No route to host)). 17:35:19 -!- Sukoshi` has joined. 17:42:55 -!- oerjan has joined. 17:47:10 -!- Sukoshi has quit (Read error: 110 (Connection timed out)). 18:16:53 how easy is it to make a function "a" that takes as params a function "b" and a number "c" that returns function "d" which is "b" except it only allows "c" recursion depth? 18:17:01 that might be a bad explanation :P 18:17:14 *that returns a 18:17:29 i mean 18:17:35 in haskell 18:18:02 sounds impossible the way you say it 18:18:08 it seems impossible in oklotalk, so i'd like to know if it's in haskell 18:18:15 because haskell cannot deconstruct b 18:18:19 ah 18:19:29 hmm, you can access the tokenized form of the function in oklotalk so everything is possible, but i'm looking for a way to make that possible sensibly 18:20:08 because i have these stdlib kinda functions... and decided it'd be nice if i could implement them in oklotalk 18:20:21 but... that one proved pretty tricky :P 18:20:45 if you have b = fix b' then you can construct such a thing from b' 18:21:04 fix? 18:21:11 but i think i know what you mean 18:21:16 -!- pikhq has joined. 18:21:17 fix f = f(fix f) 18:21:38 it's in the Control.Monad.Fix module 18:22:21 can you try to walk me through those 15 characters? 18:22:31 bbiab, folks 18:22:37 -!- RodgerTheGreat has quit. 18:22:39 well to be precise it should be: 18:22:48 fix f = x where x = f x 18:23:06 (otherwise you lose sharing) 18:23:17 okay... hmm 18:23:25 i see that as an identity function 18:23:26 :< 18:23:34 oh 18:23:35 hmm 18:23:53 it's recursive in a weird way 18:23:53 :D 18:24:10 it's the Y combinator 18:24:28 i don't understand that tbh 18:24:38 i mean 18:24:42 how it helps 18:24:52 helps with what? 18:25:11 oklopol: think of 'fix' as a magic function that returns a fixed point 18:25:35 oklopol: for example, a fixed point of square() is 1 18:25:42 oklopol: so fix(square) could return 1 18:25:52 rather unlikely to work :) 18:25:56 (of course, square has other fixed points) 18:26:10 in Haskell it only works if f is lazy in its argument 18:26:18 oerjan: i suspect in most cases fix would return bottom, that is infinity, which is still a fixed point of square 18:26:30 -!- digital_me has joined. 18:27:01 i believe that fix f = bottom iff f bottom = bottom 18:27:05 eeeeeh fixed point...? like non infinitesimal? 18:27:18 oklopol: square(1) = 1 18:27:22 yeah 18:27:26 ah 18:27:27 :) 18:27:30 oklopol: that's called a fixed point 18:27:59 if we have a function f(x) = 42 18:28:03 42! 18:28:05 then its fixed point is 42 18:28:07 i found it :) 18:28:14 so fix(f) ought to be 42 18:28:19 is it? 18:28:24 yes 18:28:32 yes 18:28:39 because x is not used in the expression, f is obviously lazy in it 18:28:42 fix magically finds it :) 18:28:57 not magically, it depends on lazyness 18:29:43 oerjan: it still seems like magic to me. Fix is handed a black box. We know it always returns 42, but fix doesn't. 18:30:02 so fix magically goes through all possible inputs, until it finds one that is a fixed point (that is, 42). 18:30:09 rubbish 18:30:13 of course :) 18:30:24 fix f essentially evaluates f(fix f) 18:30:45 but.......... how do i import a module in ghci? 18:31:00 :l I think 18:31:11 it's that in Hugs at least 18:31:18 oerjan: sorry, i like my explanation more! 18:31:38 i think ghc is more flexible and can import more than one module interactively 18:31:48 but i am not sure 18:32:03 : module `Control.Monad.Fix“ is a package module 18:32:14 oh... 18:32:15 Failed, modules loaded: none. 18:32:27 that package system, hm... 18:34:08 i hope i don't learn too much haskell, i don't wanna become one of those "if something is hard, do it in haskell" people 18:34:21 :set package -name whatever 18:34:33 allllright 18:34:35 i mean -package name 18:34:56 now what is whatever? 18:35:05 since it's not the Control.modna.agre thing 18:35:23 need to look up the package name 18:35:24 "unrecognized flags: " 18:35:32 no whatever 18:35:35 just name 18:35:57 unknown package: Control 18:36:04 and unknown package: Control.Monad.Fix 18:36:20 eh, it says package is base on the hierarchical library page 18:36:35 however, base definitely is autoloaded 18:36:57 i think you must have an old version of the hierarchical libraries 18:37:04 darn. 18:37:16 i dl'd this when i did my thue 18:37:26 i don't suppose you remember when that was 18:37:39 2 years ago - 3 weeks ago or somthing 18:37:41 *some 18:38:03 hmm... i'll try to dl something random and retry importing then 18:38:11 anyhow: it is probably easier to just write "let fix f = x where x = f x" 18:38:15 oh 18:38:16 hehe :) 18:39:03 WOW it did it! :D 18:39:15 so cool 18:40:26 fix (\ x -> x * x) fails 18:41:00 does that mean something is wrong, that lament > haskell, or that it shouldn't do that? 18:41:02 indeed, because * evaluates its arguments 18:41:06 ah 18:41:07 oki 18:41:11 so it is not lazy 18:41:12 but 18:41:15 oklopol: it doesn't fail. Infinity is a fixed point. :) 18:41:20 can i do something else that works? 18:41:30 but... it should return bottom then or something? 18:41:35 fix (1 :) 18:41:53 "to return bottom" means "to die horribly" 18:41:57 :P 18:42:00 okay 18:42:17 fix (1 :) what does (1 :) mean? 18:42:24 or was it a smiley? :O 18:42:29 it means add 1 to the beginning of a list 18:43:34 hehe fixing (1 :) returns [1 1 ...] right? 18:43:48 yes. in future list examples it might be an idea to put "take 100 $ " first 18:43:48 [1, 1..] 18:43:58 hehe :) 18:44:43 yep, those are the same 18:44:58 another one: 18:45:22 eh wait 18:46:17 let f l = 1 : zipWith (+) l (tail l) in fix f 18:47:06 eh, make that an extra 1 : 18:47:45 fibonacci? 18:47:47 yep 18:48:09 hmm 18:48:39 darn, i shouldn't blindly copy code if i don't understand it throughly :) 18:49:01 i _told_ to put take 100 $ first, didn't I? ;) 18:49:05 haha i though let can't be harmful, but "in fix f" might make it so.... 18:49:44 oh you thought it was a definition 18:49:50 yeah :\ 18:50:46 hmm 18:50:53 i don't understand that... :< 18:51:23 let's do it without fix (which is not much used anyhow) 18:51:29 hmm 18:51:34 i think i can do that 18:51:43 let fib = 1 : 1 : zipWith (+) fib (tail fib) 18:52:01 you were faster... how unlikely! :< 18:52:01 I'm not sure I want to know what you're working on ATM. 18:52:11 how is "fix f = x where x = f x" different from "fix f = f (fix f)"? 18:52:29 it will share the x even if the compiler is stupid 18:52:47 otherwise it might reevaluate it at each level 18:53:08 oklopol: fib is a standard tutorial example 18:53:18 yeah, i've seen it 18:54:02 on the other hand i don't know if any compilers are that stupid 18:54:24 are there many langs with infinite lists? 18:54:47 streams are available in a number of otherwise non-lazy languages 18:54:51 you can do it in scheme 18:54:55 but not as nicely as haskell 18:55:38 [1 1 {!--_+!-_}] in oklotalk, in case i've not told that often enough :) 18:56:09 You. . . I. . . 18:56:58 pikhq: just playing around with the fixpoint combinator in Haskell 18:57:12 and since there is no distinction between funcs and lists, `{0 1->1;.(_-1)+.(_-2)} too :) 18:57:13 (the Y combinator essentially) 18:57:14 source ^stdcons.bfm;source ^outs.bfm;string foo! "That's just wrong.\n";outs foo!end 18:57:39 oerjan: Stop with the Lambda. 18:58:09 pikhq: You on something? (No, don't answer) 18:58:49 I'm on Internet. 18:59:01 Some languages distinguish recursive from corecursive data structures. 18:59:15 Can i see a haskell ackermann? 18:59:18 *inductive and *coinductive 18:59:23 (it's been a while, mmkay? I'm like a drug addict, just getting back in the habit) 18:59:25 of course. 18:59:40 oklopol: it's almost exactly the mathy definition 19:00:16 a 1 n = n + 1; a m n = a (m-1) (a m (n-1)) 19:00:21 eh wait 19:00:23 or you could do the fancy function power one 19:00:44 add an a n 1 = a (n-1) 1 19:00:58 in the middle 19:01:42 function power? 19:03:25 yeah 19:03:40 ack 0 = succ 19:03:59 ack (m+1) = iter (ack m) 19:04:06 where 19:04:12 iter f 0 = 1 19:04:23 iter f (n+1) = f (iter f n) 19:05:40 hmm 19:05:59 i need to convert multiple definitions -> case of 19:06:05 but... i can't :) 19:06:48 iter f n = (iterate f 1) !! n 19:07:23 in haskell? 19:07:27 yeah 19:07:38 why do you need to convert? 19:08:05 because i avoid files... might be a bad excuse :\ 19:08:24 just put it on one line with ; between 19:08:28 too hard if you have to use notepads and saves and such 19:08:28 oh 19:08:36 it said incorrect indentation 19:08:37 :\ 19:08:46 and a let first 19:08:46 i added let though 19:08:52 oh 19:08:54 just one let? 19:08:57 yes. 19:09:07 let takes a definition block 19:10:37 in fact the whole definition of a function must be in the same block 19:11:11 hmm, that looks right to me, but a 6 6 = 7... :\ 19:11:48 let a 1 n = n + 1; a n 1 = a (n-1) 1;a m n = a (m-1) (a m (n-1)) is the exact line 19:12:56 a 3 4 === 5 19:13:01 that's weird 19:13:02 :< 19:14:50 a 100 100 jammed it 19:14:50 :) 19:16:44 i fixed it! 19:17:13 1's in the patterns -> 0's 19:18:46 hmm, a 5 7 doesn't like being calculated, it seems 19:18:53 of course not 19:18:56 too big 19:19:10 yeah, it's all because haskell is so lazy though 19:19:23 ...i know humor 19:19:47 it is rather likely that it is duplicating work as well. 19:22:17 ackermann's growth is mean, it grows so fast i can't see the nice big numbers, because they're so big the program crashes 19:22:44 you think a 4 1 will ever terminate? 19:22:48 yes 19:22:49 i'll leave it on for the night 19:23:12 i mean, will it terminate during my life time 19:23:20 a 4 2 can be calculated if you replace the a [1, 3] with their non-recursive equivalents 19:23:28 it might be an idea to use memoing at some levels 19:24:08 like calculating some values and putting guards for them? 19:24:11 and do the level with simple multiplication directly 19:24:19 no, like the fib list 19:24:21 a 0 n = n+1 19:24:29 a 1 n = n+2 19:24:38 a 2 n = 3 + 2*n 19:24:50 you can in fact make a nested infinite list with all the ackermann values 19:25:03 a 3 n = 5 + 8*(2**n-1) 19:25:21 a 4 2 calculates fairly quickly with those 19:25:27 but the first three levels will be a waste of time 19:26:17 oklopol: a 4 1 == 65533 19:26:50 a 4 2 == 5+8*(2**65533-1) 19:27:08 a 4 2 == Infinity 19:27:09 :< 19:27:12 oh 19:27:15 2**65533 19:27:17 hehe :) 19:27:35 make ** into ^ and haskell can calculate it entirely 19:28:52 hmm 19:29:07 (** just gives floating point infinity) 19:29:12 ^ can't be done since there's a different charset in ghci 19:29:21 oh 19:29:42 i mean ^ the ascii character 19:30:09 hmm 19:30:41 eh 19:31:06 hugs does 5+8*(2^65533-1) in an instant 19:31:12 i'm pretty sure there was a different charset when i tried that just now... but it's right again :\ 19:31:39 wow 19:32:01 a 4 3 crashed :P 19:32:25 of course, its number of digits is on the order of a 4 2 19:33:05 so you cannot even save it 19:33:25 might be able to print it in binary though 19:33:32 how do you know how many universes worth of hd i have? 19:33:58 i may be making a few loosely founded assumptions there :) 19:34:31 *start printing it 19:35:12 well... maybe lsb first... but i don't think normally 19:35:27 or 19:35:29 i don't know 19:35:44 i think both ways in binary can be found, because of its form 19:37:23 a 3 n = 2^(n+3) - 3 to simplify a bit more 19:38:46 which is simply n+1 ones followed by 01 19:40:15 hm, perhaps even decimal is feasible 19:40:30 (finding any given digit, i mean) 19:41:00 probably, math goes over my head though 19:43:06 i am not sure. it is going to need some tricks i don't know. 19:43:29 "In order to go through both slits at once and produce an interference pattern, a particle must pass through the slits undetected." 19:43:50 quantum mechanics seem trivial 19:44:02 and, you know, quite intuitive 19:44:07 *seems 19:44:37 then you cannot have understood it ;) 19:44:48 :D 19:44:57 (someone else _must_ have said that before) 19:45:03 yeah 19:45:09 since i've seen that twice in the book :) 19:46:30 i've read a lot of weird physics books, mostly when i was little, but this book was pretty tempting, since this guy somewhat writes from a programmers point of view 19:47:00 i don't know that much QM but my impression is things get much worse when you have more than one particle, since then the waves are no longer in ordinary space 19:48:12 (i should qualify that "i don't know that much QM" somehow. i certainly know more than the average guy.) 19:48:13 -!- pikhq has quit (Read error: 54 (Connection reset by peer)). 19:48:45 i was being sarcastic there, in case i hid that too well :) one particle is hard enough :P 19:49:07 oerjan by the way, how old are you? 19:49:10 ok you did hide that too well. 19:49:14 :) 19:49:17 36 :) 19:49:29 well, i understand it, but not well enough to actually understand what that means... 19:49:37 okay, good :) 19:49:50 since if you'd been 14 or smth, i'd be out the window by now 19:50:04 out the window? 19:50:26 you know, suicide 19:50:47 i have some issues with younger people beating me. 19:51:04 i have many issues 19:51:06 :| 19:51:46 hm, i would advise you against that attitude here. one of our resident 14-year olds seems frightfully smart. 19:52:18 yeah, i know :\ 19:52:52 that's exactly where i got that exact age :) 19:52:54 anyway 19:53:10 qm is great :P 19:53:26 gotta read more 19:54:12 i'm 5 19:54:20 good for you i'm not that smart, huh 19:54:35 heh 19:54:36 isn't it your bedtime? 19:54:54 "When you ask the particle where it is, it is forced to confess that it is in one place or another and no longer in both places at once." :D 19:55:22 is this according to the Geneva conventions? 19:56:18 *in accordance with 19:57:47 it's so cool it abides by no rules i think 19:59:14 hmm 20:00:01 -!- xor has changed nick to bsmntbombdood. 20:00:34 it says the interference pattern in case of two slits is destroyed if information about it is gathered... but does this mean it's destroyed if it's gathered in such way the viewer will never find it out? for example collisions between air and the photon in question 20:00:50 hmm that question might assume reading this page, though :D 20:00:55 yes. 20:01:00 oklopol: yes. 20:01:12 is destroyed? 20:01:23 or assemes? 20:01:24 yes, if the rest of the universe finds out 20:01:25 *u 20:01:59 oh :< would've been cool if it could've seen the future 20:02:04 there have been experiments on erasing the information again - it can be done if carefully controlled 20:03:00 why the heck don't they teach this at school, i might listen :D 20:03:20 school is a waste 20:03:48 good for sleeping, since you aren't allowed do anything else. 20:03:50 *to do 20:04:12 no 20:04:13 well, we could take a laptop, but i don't like unplugging it 20:04:18 oh 20:31:03 -!- Keymaker has joined. 20:31:50 it almost finished me but i managed to finish it in the end: http://koti.mbnet.fi/yiap/aeolbonn/kquine.aeo 20:31:55 quine in aeolbonn.. 20:37:58 "Even values perform a conditional jump. Jump is performed if flip is true, otherwise the execution continues on the next line." jump to line indicated by the number in question i take? 20:39:46 it's declared later, okay 20:39:50 on the page 20:42:44 oh well, new programs await.. 20:42:53 :) 20:43:04 how long did that take? 20:48:00 a few days, with extremely long breaks :D every time i had to think something i started to do something different. i started making quine in this a long time ago, but stopped quite soon, but now had nerves to make it because i invented a new way for memory stuff. in this language it's really annoying if one has to add data somewhere; you need to calculate again all the jumps before the new data and probably add some 'nop' data too 20:48:01 -!- oklobot has quit (Read error: 104 (Connection reset by peer)). 20:48:06 :P 20:49:16 it happens often that i don't work on some program for months, and then i suddenly invent a new shorter/easier/better way to do something and then i write the program 20:50:31 yeah, i was like that, but i try to program every day nowadays 20:51:25 have you been working on anything interesting? (not that my work is interesting...) 20:51:47 nope, long time since :| 20:52:13 ah. 20:52:22 maintaining old projects mostly, i mostly design my new language, oklotalk, i'm pretty obsessed about it 20:52:47 but i'll soon be failing at implementing it :) 20:54:03 heh, yea. i should finish some of my esolang plans, i haven't published a new language for months. 20:54:31 and i always have problems writing the interpreter, as well. 20:54:37 i hate that part... 20:54:39 well, oklotalk is not an esolang, though looks like it :) 20:55:07 well, esolangs are often easy to write an interpreter for 20:55:29 what do you program with? 20:55:57 that's the problem, i don't have nerves to use normal languages 20:56:06 ah :) 20:56:32 i've never coded interpreters in esolangs, though you should always use them for everything, of course 20:56:48 but the aeolbonn interpreter i managed to do in python (with some help asked here :)), so i guess i'll use python in the future too, if i have to. 20:57:11 i've made a few interpreters in esolangs 20:59:00 i assume everyone has time to run the program for a few years, so speed is not an issue ;) 20:59:42 hehe :) 21:05:39 ais523: it was interesting to see some forte programs, hopefully you'll link the programs to the forte article at esowiki 21:07:17 -!- sebbu has quit ("reboot"). 21:09:55 well, i'll terminate. good bye 21:10:02 -!- Keymaker has left (?). 21:34:18 -!- sebbu has joined. 21:46:39 -!- pikhq has joined. 22:14:45 -!- digital_me has quit ("Lost terminal"). 22:24:23 -!- ShadowHntr has joined. 22:32:19 -!- ihope has joined. 22:38:41 -!- ihope_ has joined. 22:40:35 -!- crathman has quit ("Chatzilla 0.9.77 [Firefox 2.0.0.3/2007030919]"). 22:56:02 -!- ihope has quit (Connection timed out). 23:35:06 -!- SevenInchBread has joined.