00:03:59 -!- calamari has quit ("Leaving").
00:07:27 * xor starts to hate OOP
00:08:20 <xor> @'print-hello ["Hello, World" print] @object %inherit add-method done create print-hello
00:09:01 <lament> xor: have you looked at Slate?
00:16:31 <xor> I wonder if I should separate classes and class builders
00:19:32 <xor> a class has one method, create, which creates the object. class builders have two methods, add-method and done.
00:20:48 <xor> kinda like smalltalk, except with a stack
00:21:00 <lament> do have a look at slate, slate.tunes.org
00:21:51 -!- Rugxulo has joined.
00:22:45 <xor> 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 <xor> everthing is anonymous and held on the stack
00:24:05 <xor> (except @)
00:25:31 -!- Rugxulo has left (?).
00:26:05 <SevenInchBread> a good example I read recently was - http://en.wikipedia.org/wiki/Antiobject
00:39:03 * GregorR considers rererererecreating Plof.
00:41:58 -!- pikhq has joined.
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 <Izzy7> Could someone please write a quine to this channel?
02:31:54 <xor> 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 <lament> Could\ someone\ please\ write\ a\ quine\ to\ this\ channel?
04:25:45 <xor> This is a quine.
04:33:40 <lament> Could someone please write something other than a quine?
04:34:50 -!- ShadowHntr has quit ("End of line.").
04:40:05 <xor> This is not a quine.
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:39:19 <oklopol> ~bf +++++++++++++++++++++++++++++++++++.
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 <oklopol> 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 <oklopol> that might be a bad explanation :P
18:18:02 <oerjan> sounds impossible the way you say it
18:18:08 <oklopol> it seems impossible in oklotalk, so i'd like to know if it's in haskell
18:18:15 <oerjan> because haskell cannot deconstruct b
18:19:29 <oklopol> 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 <oklopol> because i have these stdlib kinda functions... and decided it'd be nice if i could implement them in oklotalk
18:20:21 <oklopol> but... that one proved pretty tricky :P
18:20:45 <oerjan> if you have b = fix b' then you can construct such a thing from b'
18:21:11 <oklopol> but i think i know what you mean
18:21:16 -!- pikhq has joined.
18:21:38 <oerjan> it's in the Control.Monad.Fix module
18:22:21 <oklopol> can you try to walk me through those 15 characters?
18:22:37 -!- RodgerTheGreat has quit.
18:22:39 <oerjan> well to be precise it should be:
18:22:48 <oerjan> fix f = x where x = f x
18:23:06 <oerjan> (otherwise you lose sharing)
18:23:25 <oklopol> i see that as an identity function
18:23:53 <oklopol> it's recursive in a weird way
18:24:28 <oklopol> i don't understand that tbh
18:25:11 <lament> oklopol: think of 'fix' as a magic function that returns a fixed point
18:25:35 <lament> oklopol: for example, a fixed point of square() is 1
18:25:42 <lament> oklopol: so fix(square) could return 1
18:25:52 <oerjan> rather unlikely to work :)
18:25:56 <lament> (of course, square has other fixed points)
18:26:10 <oerjan> in Haskell it only works if f is lazy in its argument
18:26:18 <lament> 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 <oerjan> i believe that fix f = bottom iff f bottom = bottom
18:27:05 <oklopol> eeeeeh fixed point...? like non infinitesimal?
18:27:18 <lament> oklopol: square(1) = 1
18:27:30 <lament> oklopol: that's called a fixed point
18:27:59 <lament> if we have a function f(x) = 42
18:28:05 <lament> then its fixed point is 42
18:28:14 <lament> so fix(f) ought to be 42
18:28:39 <oerjan> because x is not used in the expression, f is obviously lazy in it
18:28:42 <lament> fix magically finds it :)
18:28:57 <oerjan> not magically, it depends on lazyness
18:29:43 <lament> 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 <lament> so fix magically goes through all possible inputs, until it finds one that is a fixed point (that is, 42).
18:30:24 <oerjan> fix f essentially evaluates f(fix f)
18:30:45 <oklopol> but.......... how do i import a module in ghci?
18:31:11 <oerjan> it's that in Hugs at least
18:31:18 <lament> oerjan: sorry, i like my explanation more!
18:31:38 <oerjan> i think ghc is more flexible and can import more than one module interactively
18:32:03 <oklopol> <no location info>: module `Control.Monad.Fix is a package module
18:32:15 <oklopol> Failed, modules loaded: none.
18:32:27 <oerjan> that package system, hm...
18:34:08 <oklopol> 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 <oerjan> :set package -name whatever
18:35:05 <oklopol> since it's not the Control.modna.agre thing
18:35:23 <oerjan> need to look up the package name
18:35:24 <oklopol> "unrecognized flags: <whatever>"
18:36:04 <oklopol> and unknown package: Control.Monad.Fix
18:36:20 <oerjan> eh, it says package is base on the hierarchical library page
18:36:35 <oerjan> however, base definitely is autoloaded
18:36:57 <oerjan> i think you must have an old version of the hierarchical libraries
18:37:16 <oklopol> i dl'd this when i did my thue
18:37:26 <oklopol> i don't suppose you remember when that was
18:37:39 <oklopol> 2 years ago - 3 weeks ago or somthing
18:38:03 <oklopol> hmm... i'll try to dl something random and retry importing then
18:38:11 <oerjan> anyhow: it is probably easier to just write "let fix f = x where x = f x"
18:41:00 <oklopol> does that mean something is wrong, that lament > haskell, or that it shouldn't do that?
18:41:02 <oerjan> indeed, because * evaluates its arguments
18:41:15 <lament> oklopol: it doesn't fail. Infinity is a fixed point. :)
18:41:20 <oklopol> can i do something else that works?
18:41:30 <oklopol> but... it should return bottom then or something?
18:41:53 <lament> "to return bottom" means "to die horribly"
18:42:17 <oklopol> fix (1 :) what does (1 :) mean?
18:42:29 <oerjan> it means add 1 to the beginning of a list
18:43:34 <oklopol> hehe fixing (1 :) returns [1 1 ...] right?
18:43:48 <oerjan> yes. in future list examples it might be an idea to put "take 100 $ " first
18:44:43 <oerjan> yep, those are the same
18:46:17 <oerjan> let f l = 1 : zipWith (+) l (tail l) in fix f
18:47:06 <oerjan> eh, make that an extra 1 :
18:48:39 <oklopol> darn, i shouldn't blindly copy code if i don't understand it throughly :)
18:49:01 <oerjan> i _told_ to put take 100 $ first, didn't I? ;)
18:49:05 <oklopol> haha i though let can't be harmful, but "in fix f" might make it so....
18:49:44 <oerjan> oh you thought it was a definition
18:50:53 <oklopol> i don't understand that... :<
18:51:23 <oerjan> let's do it without fix (which is not much used anyhow)
18:51:43 <oerjan> let fib = 1 : 1 : zipWith (+) fib (tail fib)
18:52:01 <oklopol> you were faster... how unlikely! :<
18:52:01 <pikhq> I'm not sure I want to know what you're working on ATM.
18:52:11 <xor> how is "fix f = x where x = f x" different from "fix f = f (fix f)"?
18:52:29 <oerjan> it will share the x even if the compiler is stupid
18:52:47 <oerjan> otherwise it might reevaluate it at each level
18:53:08 <oerjan> oklopol: fib is a standard tutorial example
18:54:02 <oerjan> on the other hand i don't know if any compilers are that stupid
18:54:24 <oklopol> are there many langs with infinite lists?
18:54:47 <oerjan> streams are available in a number of otherwise non-lazy languages
18:54:51 <xor> you can do it in scheme
18:54:55 <xor> but not as nicely as haskell
18:55:38 <oklopol> [1 1 {!--_+!-_}] in oklotalk, in case i've not told that often enough :)
18:56:58 <oerjan> pikhq: just playing around with the fixpoint combinator in Haskell
18:57:12 <oklopol> and since there is no distinction between funcs and lists, `{0 1->1;.(_-1)+.(_-2)} too :)
18:57:13 <oerjan> (the Y combinator essentially)
18:57:14 <pikhq> source ^stdcons.bfm;source ^outs.bfm;string foo! "That's just wrong.\n";outs foo!end
18:57:39 <pikhq> oerjan: Stop with the Lambda.
18:58:09 <oerjan> pikhq: You on something? (No, don't answer)
18:59:01 <oerjan> Some languages distinguish recursive from corecursive data structures.
18:59:15 <oklopol> Can i see a haskell ackermann?
18:59:18 <oerjan> *inductive and *coinductive
18:59:23 <pikhq> (it's been a while, mmkay? I'm like a drug addict, just getting back in the habit)
18:59:40 <xor> oklopol: it's almost exactly the mathy definition
19:00:16 <oerjan> a 1 n = n + 1; a m n = a (m-1) (a m (n-1))
19:00:23 <xor> or you could do the fancy function power one
19:00:44 <oerjan> add an a n 1 = a (n-1) 1
19:03:40 <xor> ack 0 = succ
19:03:59 <xor> ack (m+1) = iter (ack m)
19:04:12 <xor> iter f 0 = 1
19:04:23 <xor> iter f (n+1) = f (iter f n)
19:05:59 <oklopol> i need to convert multiple definitions -> case of
19:06:48 <oerjan> iter f n = (iterate f 1) !! n
19:07:38 <oerjan> why do you need to convert?
19:08:05 <oklopol> because i avoid files... might be a bad excuse :\
19:08:24 <oerjan> just put it on one line with ; between
19:08:28 <oklopol> too hard if you have to use notepads and saves and such
19:08:36 <oklopol> it said incorrect indentation
19:09:07 <oerjan> let takes a definition block
19:10:37 <oerjan> in fact the whole definition of a function must be in the same block
19:11:11 <oklopol> hmm, that looks right to me, but a 6 6 = 7... :\
19:11:48 <oklopol> 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:17:13 <oklopol> 1's in the patterns -> 0's
19:18:46 <oklopol> hmm, a 5 7 doesn't like being calculated, it seems
19:18:53 <xor> of course not
19:19:10 <oklopol> yeah, it's all because haskell is so lazy though
19:19:47 <oerjan> it is rather likely that it is duplicating work as well.
19:22:17 <oklopol> 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 <oklopol> you think a 4 1 will ever terminate?
19:22:49 <oklopol> i'll leave it on for the night
19:23:12 <oklopol> i mean, will it terminate during my life time
19:23:20 <xor> a 4 2 can be calculated if you replace the a [1, 3] with their non-recursive equivalents
19:23:28 <oerjan> it might be an idea to use memoing at some levels
19:24:08 <oklopol> like calculating some values and putting guards for them?
19:24:11 <oerjan> and do the level with simple multiplication directly
19:24:21 <xor> a 0 n = n+1
19:24:29 <xor> a 1 n = n+2
19:24:38 <xor> a 2 n = 3 + 2*n
19:24:50 <oerjan> you can in fact make a nested infinite list with all the ackermann values
19:25:03 <xor> a 3 n = 5 + 8*(2**n-1)
19:25:21 <xor> a 4 2 calculates fairly quickly with those
19:25:27 <oerjan> but the first three levels will be a waste of time
19:26:17 <xor> oklopol: a 4 1 == 65533
19:26:50 <xor> a 4 2 == 5+8*(2**65533-1)
19:27:35 <oerjan> make ** into ^ and haskell can calculate it entirely
19:29:07 <oerjan> (** just gives floating point infinity)
19:29:12 <oklopol> ^ can't be done since there's a different charset in ghci
19:29:42 <oerjan> i mean ^ the ascii character
19:31:06 <oerjan> hugs does 5+8*(2^65533-1) in an instant
19:31:12 <oklopol> i'm pretty sure there was a different charset when i tried that just now... but it's right again :\
19:32:25 <oerjan> of course, its number of digits is on the order of a 4 2
19:33:05 <oerjan> so you cannot even save it
19:33:25 <oerjan> might be able to print it in binary though
19:33:32 <oklopol> how do you know how many universes worth of hd i have?
19:33:58 <oerjan> i may be making a few loosely founded assumptions there :)
19:35:12 <oklopol> well... maybe lsb first... but i don't think normally
19:35:44 <oerjan> i think both ways in binary can be found, because of its form
19:37:23 <oerjan> a 3 n = 2^(n+3) - 3 to simplify a bit more
19:38:46 <oerjan> which is simply n+1 ones followed by 01
19:40:15 <oerjan> hm, perhaps even decimal is feasible
19:40:30 <oerjan> (finding any given digit, i mean)
19:41:00 <oklopol> probably, math goes over my head though
19:43:06 <oerjan> i am not sure. it is going to need some tricks i don't know.
19:43:29 <oklopol> "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 <oklopol> quantum mechanics seem trivial
19:44:02 <oklopol> and, you know, quite intuitive
19:44:37 <oerjan> then you cannot have understood it ;)
19:44:57 <oerjan> (someone else _must_ have said that before)
19:45:09 <oklopol> since i've seen that twice in the book :)
19:46:30 <oklopol> 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 <oerjan> 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 <oerjan> (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 <oklopol> i was being sarcastic there, in case i hid that too well :) one particle is hard enough :P
19:49:07 <oklopol> oerjan by the way, how old are you?
19:49:10 <oerjan> ok you did hide that too well.
19:49:29 <oklopol> well, i understand it, but not well enough to actually understand what that means...
19:49:50 <oklopol> since if you'd been 14 or smth, i'd be out the window by now
19:50:47 <oklopol> i have some issues with younger people beating me.
19:51:46 <oerjan> hm, i would advise you against that attitude here. one of our resident 14-year olds seems frightfully smart.
19:52:52 <oklopol> that's exactly where i got that exact age :)
19:54:20 <lament> good for you i'm not that smart, huh
19:54:36 <oerjan> isn't it your bedtime?
19:54:54 <oklopol> "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 <oerjan> is this according to the Geneva conventions?
19:57:47 <oklopol> it's so cool it abides by no rules i think
20:00:01 -!- xor has changed nick to bsmntbombdood.
20:00:34 <oklopol> 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 <oklopol> hmm that question might assume reading this page, though :D
20:01:24 <oerjan> yes, if the rest of the universe finds out
20:01:59 <oklopol> oh :< would've been cool if it could've seen the future
20:02:04 <oerjan> there have been experiments on erasing the information again - it can be done if carefully controlled
20:03:00 <oklopol> why the heck don't they teach this at school, i might listen :D
20:03:48 <oklopol> good for sleeping, since you aren't allowed do anything else.
20:04:13 <oklopol> well, we could take a laptop, but i don't like unplugging it
20:31:03 -!- Keymaker has joined.
20:31:50 <Keymaker> it almost finished me but i managed to finish it in the end: http://koti.mbnet.fi/yiap/aeolbonn/kquine.aeo
20:37:58 <oklopol> "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:48:00 <Keymaker> 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:49:16 <Keymaker> 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 <oklopol> yeah, i was like that, but i try to program every day nowadays
20:51:25 <Keymaker> have you been working on anything interesting? (not that my work is interesting...)
20:52:22 <oklopol> maintaining old projects mostly, i mostly design my new language, oklotalk, i'm pretty obsessed about it
20:52:47 <oklopol> but i'll soon be failing at implementing it :)
20:54:03 <Keymaker> heh, yea. i should finish some of my esolang plans, i haven't published a new language for months.
20:54:31 <Keymaker> and i always have problems writing the interpreter, as well.
20:54:39 <oklopol> well, oklotalk is not an esolang, though looks like it :)
20:55:07 <oklopol> well, esolangs are often easy to write an interpreter for
20:55:57 <Keymaker> that's the problem, i don't have nerves to use normal languages
20:56:32 <oklopol> i've never coded interpreters in esolangs, though you should always use them for everything, of course
20:56:48 <Keymaker> 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 <Keymaker> i've made a few interpreters in esolangs
20:59:00 <Keymaker> i assume everyone has time to run the program for a few years, so speed is not an issue ;)
21:05:39 <Keymaker> 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 <Keymaker> 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.