00:12:45 -!- Asztal has quit (Read error: 113 (No route to host)).
00:13:05 -!- Asztal has joined.
00:18:31 -!- jix__ has changed nick to jix.
00:24:35 -!- tgwizard has quit (Remote closed the connection).
00:59:06 -!- Asztal has quit (Read error: 113 (No route to host)).
00:59:45 -!- Asztal has joined.
01:21:54 -!- digital_me has joined.
02:00:24 -!- RodgerTheGreat_ has changed nick to RodgerTheGreat.
02:05:39 -!- Sandman has joined.
02:07:22 <oerjan> Please write "Hello, world" _before_ I make this request.
02:07:37 <CakeProphet> I should make a language based on coroutines.
02:07:47 <CakeProphet> and... somehow mix it into my genetic language idea.
02:08:34 <CakeProphet> a subroutine takes input, executes, and returns an output to its caller.
02:09:33 <CakeProphet> a coroutine takes in input, executes, returns a value, halts execution, awaits more input, continues execution until it returns a new value, repeat.
02:10:28 <CakeProphet> you can use them to do psuedothreads nicely.
02:10:49 <CakeProphet> and take in more input when they continue.
02:11:27 <CakeProphet> You could actually use a coroutine to simulate an infinite list.
02:11:33 -!- Administrator has joined.
02:11:42 -!- Administrator has changed nick to kilovh.
02:12:12 <kilovh> Please, write the 99 bottles lyrics
02:12:16 -!- kilovh has quit (Client Quit).
02:12:32 <Sandman> 99 nine bottles of beer on the wall
02:12:36 <Sandman> 98 nine bottles of beer on the wall
02:12:40 <Sandman> 97 nine bottles of beer on the wall
02:12:43 <Sandman> 96 nine bottles of beer on the wall
02:12:58 <oklopol> a lazy evaluator like me won't do that if the programmer isn't looking
02:13:16 <Sandman> 99...0 bottles of beer on the wall
02:13:57 <RodgerTheGreat> 0 bottles of beer on the wall, 0 bottles of beer, go to the store, pick up some more, 99 bottles of beer on the wall
02:14:09 <jix> i don't like beer
02:14:30 <jix> so 99 bottles of beer on the wall... (2 hours later) still 99 bottles of beer on the wall
02:14:38 <Sandman> 99 bottles of beer go to the store and pick upp 99 bottles, 99*99 bottles of beer on the wall
02:16:00 <Sandman> oh sorry it should have been: 99 bottles of beer go to the store and pick upp 99 bottles each, 99*99 bottles of beer on the wall
02:16:54 <pikhq> Sandman: Join #irp; we need programmers.
02:17:03 <RodgerTheGreat> what I've always wondered about the song is: "why do they store all the beer on a *wall*? Wouldn't a box, refrigerator, or at least shelf prove a more efficient storage medium?"
02:18:36 <Sandman> Yeah me too...walls ive tried storing bottles of beer on the wall, and guess what? They fell to the floor
02:19:59 <RodgerTheGreat> You could glue them to the wall, but it'd make it tricky to take them down again
02:20:27 <pikhq> Cleverly arranged nails, perhaps.
02:20:37 <RodgerTheGreat> I imagine something like a workbench tool rack, with beer bottle-sized loops
02:21:00 <Sandman> I once heard something about some shelve thingy. dont really know what thats all about
02:33:12 -!- Asztal has quit (Read error: 113 (No route to host)).
02:37:04 -!- Sandman has quit ("Merry christmas to ya all out there!").
02:39:56 <CakeProphet> hmmm... I kind of regret that = become the most popular way to assign variables.
02:41:10 <oerjan> There is of course the broken BF version.
02:41:18 <CakeProphet> one of the most common confusions by new programmers is the distinction between variabe assignment and mathematical equality... most likely because = (the symbol for mathematic equality) is used for it...
02:41:35 <CakeProphet> and they look superficial similar at first glance (VERY first glance :D )
02:41:50 <oerjan> 0 bottles of bear on the wall, 0 bottles of beer. Take one down, pass it around, 255 bottles of beer on the wall!
02:41:55 <bsmntbombdood> If someone can't wrap their head around that, they aren't very smart
02:42:28 <oklopol> I myself do not really care how hard it is for newbies to start programming :\
02:42:30 <CakeProphet> Pretty much everyone makes the leap... I just wonder why it's nessicary to put the cliff there. :P
02:43:16 -!- jix has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
02:43:17 <CakeProphet> if programming is a bitch... programming looks painful and boring.
02:43:41 <CakeProphet> It -is- fun... but only if you know what you're doing.
02:43:47 <oklopol> i use c++ almost exclusively
02:44:28 <CakeProphet> So I think it's best to start with something that's easy to learn... so programming starts out fun.
02:45:07 <bsmntbombdood> if it's easy to learn it's not going to be worth using
02:45:50 <CakeProphet> If it's easy to learn... that means it's more intuitively worth using.
02:46:20 <CakeProphet> but... let's be optimistic and go with the first option.
02:46:30 <oklopol> I started with basic, was a bitch changing to C++ since i couldn't understand the distinction between = and ==, i though "How can I know which kind of equality this is?".
02:49:15 <CakeProphet> You should start from the top and work your way down... not stay at the top and keep the bottom hidden (ir works nicely for abstraction, but not for learning)
02:49:32 * pikhq went Basic -> Javascript -> rm -rf basic -> Tcl -> shell -> C -> C++ -> way, way too many esolangs.
02:49:34 <oklopol> tho i was kinda small, didn't really understand what was happening there, prolly properly taught a basic programmer would've understood the difference even tho the same symbon is used :)
02:51:19 * oklopol wants to list too: Basic -> C++ -> python -> C++ -> Brainfuck -> Java -> C++ -> Haskell -> C++
02:51:26 <CakeProphet> Python -> Scheme -> Python -> C (for a second) -> esolangs yay
02:51:44 <CakeProphet> I should really get to know a lot of other languages better... rather than just skimming over them.
02:52:07 <CakeProphet> C makes my stomach churn... so not going there.
02:52:29 <CakeProphet> Perl and Lisp (definetely Lisp) look cool...
02:53:33 <oklopol> i don't know perl, lisp, pascal, cobol, intercal or smalltalk, i hate it when i know the name but not the language
02:53:41 <pikhq> I've gotten to the point where I can at least do a minor amount of fiddling around in the vast majority of languages (with the help of Google).
02:53:59 <CakeProphet> I'm more familiar with Scheme than I am Lisp.
02:54:05 <CakeProphet> but... they're not that different anyways.
02:54:25 <oerjan> Basic -> Turbo Pascal -> Modula -> LPC -> C -> Perl -> Ocaml -> Haskell and a bunch that i just read about
02:54:45 <oerjan> or used even less than the ones mentioned
02:54:48 <pikhq> It's comparable to the difference between C and C++.
02:55:16 <CakeProphet> I like that Scheme uses a single define function :D
02:56:25 <CakeProphet> LPC... hmmm... a language used to create MUDs...
02:56:36 <CakeProphet> sounds like something I would enjoy... but probably not.
02:56:40 <oerjan> oklopol: it is usually not considered a disadvantage not to know cobol. :)
02:56:44 * CakeProphet is making a MUD in Python that uses freaky meta-programming stuff.
02:57:24 <CakeProphet> Perl is a little weird... it has a lot of obvious disavantages, but I like the philosophy behind it.
02:57:37 <pikhq> oklopol: The use of COBOL cripples the mind, therefore, it's teaching should be considered criminal.
02:58:19 <oerjan> You are supposed to change your nick to dijkstra when you say that :)
02:58:39 <pikhq> MNGGFOCOBOLGSO1GAORKGR
02:58:44 <pikhq> oerjan: Yeah, yeah, yeah
02:59:12 <oklopol> i'll learn ork once i see a complete reference for it
02:59:28 <pikhq> Hit the Esolangs wiki.
02:59:43 <pikhq> And realise that code is a bunch of English sentences.
03:00:17 <oklopol> i thought there was just a few examples
03:00:48 <pikhq> It's not that hard. . .
03:00:55 <pikhq> When the program starts:
03:01:00 <oerjan> the wiki doesn't describe the builtin classes very well, i guess.
03:01:06 <pikhq> There is a scribe named Hi.
03:01:14 <pikhq> Hi is to write "Hello, world!\n."
03:01:19 <CakeProphet> http://esoteric.voxelperfect.net/files/ork/doc/README
03:02:02 <oklopol> i've made a lot of english based langs while planning on a project etc but never made an interpreter for any since they often grow quite complex
03:02:27 <CakeProphet> short jumbled-up-series-of-characters languages are starting to grow on me.
03:02:48 <pikhq> It's compiled into C++.
03:05:39 <CakeProphet> :P Most languages go to assembly at some point... doesn't mean I'd enjoy coding in assembly very much. :P
03:06:29 * CakeProphet has never actually seen assembly code before.
03:07:15 * pikhq doesn't do any assembly. . .
03:07:38 <pikhq> Although I do tons of equally crazy stuff. ;)
03:08:13 <CakeProphet> I can see where ORK sometimes looks like obvious syntatic sugar over C++... but it's strangely different in a way that I like. :D
03:08:45 <pikhq> It's syntactic sugar over C++ and some libraries, in some ways.
03:09:24 <CakeProphet> I don't consider syntatic sugar a bad thing though.
03:09:39 <CakeProphet> Everything is just syntax sugar for some super low-level operation anyways.
03:13:07 <CakeProphet> The whole function-names-blending-into-the-syntax is the coolest part.... so seeing readOne is just kind of annoying. :P
03:13:14 <oklopol> yeah, ORK should try to avoid anything that looks like programming imo
03:13:19 <pikhq> Functions with a space in the name produce some vagueness in parsing.
03:13:25 <oklopol> exactly what CakeProphet said
03:13:37 <GregorR> ORK doesn't support multi-word function names :(
03:13:49 <oklopol> make it support :) then i love it
03:13:51 <GregorR> Due to the parsing difficultimpossibility.
03:14:10 <GregorR> <actor> is to <function> <variable>
03:14:24 <GregorR> If both functions and variables can have spaces, it's very difficult to parse.
03:14:31 <oklopol> yeah, but you can avoid that if you know it
03:14:51 <oerjan> you could demand an article between <function> and <variable>.
03:14:55 <pikhq> And impossible if one has two function/variable combinations that match.
03:15:08 <GregorR> oerjan: Yeah, but then it doesn't read well X_X
03:15:17 <oklopol> but the compiler could give an error if names can collide
03:15:19 <GregorR> It's the one corner of ORK that bugs me 8-X
03:15:28 <GregorR> oklopol: And then what? There's still no solution ;P
03:15:34 <CakeProphet> hmmm... Python has a just-in-time compiler implementation... neato.
03:15:52 <oerjan> it can read well if the variables are nouns
03:16:53 <oklopol> if there are say 5 words in the bit that has <function> and <variable>, it checks all possibilities (4 of them) and does the right one
03:17:22 <GregorR> oklopol: But if there are conflicts, there would then be no way to right it.
03:18:21 <oerjan> now wait. proper nouns can be detected because they are capitalized.
03:18:50 <pikhq> Perhaps a rewrite of the sentence's grammer?
03:19:05 <oerjan> so a variable would be either 'the' <common noun>, 'a' <common noun> or a capitalized proper noun.
03:19:22 <GregorR> oerjan: That's a good point ...
03:19:41 <oklopol> i mean, if a thing has functions "a b c" and "a b" and vars called "c d e" "d e", it would give an error, very easy to check for each class
03:19:42 <CakeProphet> Doggie Samuels is to be or not to be that is the question when there is the functions "to be" "be or not"
03:20:15 <CakeProphet> hmmm... if it finds the variable first... it can clip off the variable name and know -exactly- what function to look for.
03:20:24 <GregorR> oklopol: Giving an error isn't a solution, it just leaves the coder with no way to call that particular selection :P
03:20:53 <oklopol> GregorR, you still have the old way of naming if you MUST have colliding names
03:21:16 <oklopol> and, it can support the ucase thing too
03:21:36 <CakeProphet> so in that example... the parse would find the variable "to be that is the question"... and could conclude that "to be or not" is the only function.
03:21:37 <oklopol> if collision, check for uppercase and solve that way
03:21:56 <CakeProphet> but... there could be ambigious -between- multiple functions and variables... which is where you would have problems.
03:22:42 <oklopol> as i said, then check if there are uppercase beginnings in words that indicate change of noun, if not, tell the programmer his names are colliding
03:22:57 <oklopol> and please supply me with a better word that collision...
03:23:14 <CakeProphet> yeah... the chance of colliding names is rare enough that it could simply complain to the programmer about it.
03:23:44 <CakeProphet> and then have OPTIONAL syntax to explicitly mark the beginning of the parameter... should a name collision occur.
03:24:13 <oklopol> yep, just harder to make a compiler, but not much
03:24:38 <oklopol> i'll do it if GregorR won't
03:25:04 <CakeProphet> It's line-by-line statements that each do one thing... so it can't be that harder than a compiler.
03:25:41 <CakeProphet> it actually sounds easier than convert all of it to C.
03:26:58 <oklopol> both simple, i just meant the pattern-matching for the var- and cuntnames
03:27:07 <CakeProphet> but yeah... the chance of there being a bunch of name overlaps that ORK couldn't possibly figure out is so rare that it can just be solved by optional syntax to split up the two.
03:27:47 <oklopol> or, it can be guaranteed to be lazy
03:28:08 <CakeProphet> yeah, de-ambiguity rules is the other route.
03:28:08 <oklopol> i mean, shortest possible func for example
03:28:22 <CakeProphet> stating what the interpreter will do during ambiguity...
03:28:24 <GregorR> oklopol: I would, but since you volunteered, feel free :P
03:28:59 <oklopol> GregorR, depends on whether i go to sleep still
03:29:00 <CakeProphet> it would be the Perl way to go about it. :D
03:29:21 <CakeProphet> well no... hueristical evaluation is also in Perl's domain.
03:30:08 <oklopol> must the built-in classes be named like that? i mean, inputter is too programmingish imo, ork shouldn't sound like that
03:30:33 <CakeProphet> there could just e a single read/write class called scribe.
03:30:40 <CakeProphet> or typist... or any other nifty name you want.
03:32:32 <CakeProphet> but it kinda adds a nice touch to the syntax.
03:33:30 <CakeProphet> hmm... what's the delimiter for statements... periods or newlines (or both?)
03:34:50 <CakeProphet> aaand... # is comment I'm guessing? Like Python comments?
03:35:32 <pikhq> oklopol: inputter is a temporary name. . . Like, Gregor doesn't know of a better name for it.
03:35:39 <CakeProphet> oooh... I like the separation of function and class...
03:35:45 <CakeProphet> you can mix and match classes to functions.
03:37:03 <CakeProphet> no they're connected right? ...to prevent scoping ambiguity.
03:37:29 <GregorR> Only newline is a delimiter.
03:37:51 <GregorR> (Perhaps this should be a comment)
03:38:29 <oklopol> This is an object for expressing BigNums, but that is ignored.
03:39:04 <CakeProphet> This is an object for expression BigNum, but nobody cares. (reference to an uncyclopedia inside joke)
03:39:35 <oklopol> not that exact string of course :)
03:40:44 <CakeProphet> I think "backwards if" statements look a little more englishy.
03:41:23 <CakeProphet> Bob is to eat a sandwhich, if my kitchen is not exploded.
03:41:49 <oerjan> I thought i heard someone here say today that they hated such statements. :)
03:42:14 <CakeProphet> I use them quite a bit... since it's how Python does conditional expressions
03:43:42 <oklopol> When looper is to loop a number:
03:43:43 <oklopol> There is a mathematician called Fibonacci.
03:43:43 <oklopol> I have a number called current.
03:43:43 <oklopol> Fibonacci's first operand is the number.
03:43:43 <oklopol> Fibonacci's second operand is 1.
03:43:44 <oklopol> current is Fibonacci's result.
03:43:46 <oklopol> Fibonacci's first operand is Fibonacci's result.
03:43:48 <pikhq> Looks like [set x [expr {1 ? [myConditional] : 0}]]
03:43:48 <oklopol> Fibonacci's second operand is 0.
03:43:52 <oklopol> If Fibonacci says it's greater then I am to loop.
03:44:22 <oklopol> well, anyways, "I have a number called current." means int ¤t = number; ? because otherwise number wouldn't change
03:44:31 <pikhq> That's [expr {[myConditional] ? 1 : 0]}] XD
03:45:07 <pikhq> I think it means "number ¤t;".
03:45:31 <CakeProphet> I don't like C's conditional expressions :P
03:45:39 <pikhq> Nah, it's "double current;".
03:45:59 <pikhq> (thought that Gregor had number as a seperate class, which he doesn't.)
03:46:03 * CakeProphet needs to figure out all the possible statements in ORK to do a proper implementation of it.
03:46:05 <oklopol> okay, then this is an infinite loop, right?
03:46:22 <oerjan> we don't have to choose. we could make it alternating current.
03:46:49 * CakeProphet implements a form of coroutine in his ORK :D
03:47:29 <oklopol> This would loop from the value you gave it down to 0. You would of course want to add some sort of
03:49:03 <pikhq> It's an infinite Fibo loop.
04:01:47 -!- anonfunc has joined.
04:11:08 <oklopol> GregorR, you'll prolly make it faster, i've only done some basic classes
04:11:30 <oklopol> if you have the old code, i mean, it won't take long prolly :)
04:12:59 <oklopol> haha made a regexp parser last night and got to use it right away :)
04:20:05 * CakeProphet is just now definining the new number class for ORK numbers.
04:20:34 -!- oerjan has quit ("Good night.").
04:20:37 <CakeProphet> it would basically be a floating point with an overriden __str__ class... so it doesn't print the a trailing .0 like Python does.
04:26:00 <RodgerTheGreat> hm. I just had a thought- can anyone think of a way to calculate the length of an optimal BF program that generates a constant, without actually creating he program?
04:28:59 <oklopol> i've made the calculations i think
04:31:20 <RodgerTheGreat> the problem with creating a compiler to Def-BF is the absolute addresses- if you don't use a constant-generation command (?), you have to generate values in-place. This means that making constants changes code length, requiring a change in what the resulting values should be. The only way I can see to get around this would be making use of a lookup table as on the BF-constants page.
04:31:53 <oklopol> yeah, i've researched it a bit, but can't find the fucking file :(
04:32:48 <oklopol> you can brute force the most optimal way to create a number quite easily
04:33:51 <oklopol> 2 levels, takes: Abase+A+B+7, where N=Abase+B*A
04:33:51 <oklopol> 3 levels, takes: Abase+Bbase+A+B+C+14, where N=Abase+(Bbase+C*B)*A
04:34:06 <oklopol> levels is the amount of memory slots you are willing to use
04:34:41 <oklopol> i've not come up with a clever algoritm to produce good bases for 3 levels, but you don't need it often
04:36:20 <oklopol> if you use one memory slot for help, you the smallest possible "Abase+A+B+7" where a*b+abase = your number
04:37:19 <oklopol> and constructed of course A times + [ > B times + < - ] > abase
04:38:01 <oklopol> the amount of auxiliary symbols is (memory slots used)*7
04:38:13 <oklopol> if you want the result in your starting slot
04:39:55 <oklopol> but, seems i didn't make it thro to the end
04:40:03 <oklopol> i don't have an algorithm :)
04:42:04 <oklopol> hmm take the squareroot of the number and make a and b that, or if not an integer, a<sqrt, b>sqrt
04:42:22 <oklopol> abase will be balance it out
04:42:32 <oklopol> that is the best algorithm i think, actually
04:43:33 <oklopol> with three levels, taking the cuberoot and brute forcing different values for abase and bbase while changing a, b and c near the cuberoot might do the trick
04:45:47 <oklopol> for numbers smaller than 256 you don't get much profit from 3 levels
04:46:10 <RodgerTheGreat> in most cases, we'll be dealing with relatively large numbers
04:46:28 <oklopol> you can take the easy way out of course
04:46:38 <oklopol> just split the numbers in 4 pieces
04:47:17 <oklopol> then just merge them by multiplying with 256
04:47:35 <RodgerTheGreat> yeah- then it just becomes a problem of generating the components, which could feasibly be done via lookup...
04:47:39 <oklopol> since the 256 takes 36 symbols again
04:48:06 <oklopol> +++>>++++++[-<++++++>]<[-<+++++++>]< is the smallest 256 i think
04:49:15 <oklopol> it has abase=3, bbase=0, c=6, b=6, a=7 3+(0+6*6)*7
04:49:32 <oklopol> 3+(0+6*6)*7 was just to help me think
04:49:39 <RodgerTheGreat> the smallest non-wrapping level 3 is one of four variants that are 32 commands
04:51:35 <oklopol> all that matters about the small differences in the final length is where you end
04:52:05 <oklopol> otherwise you have many strategies to position abase, bbase etc
04:52:24 <RodgerTheGreat> luckily, Def-BF makes memory use in programs a little less vital than most BF-derivatives, so we don't have to do something messy like hard-allocate 3 cells per constant
04:53:46 <oklopol> you do realize that even if using 4 levels allows a 32-bit number to be expressed in <60 symbols, it still takes 2^32 cycles to create? :)
04:55:57 <RodgerTheGreat> we're assuming for now that either the machine is fast enough for anything we want or that the BF-ASM compiler is infinitely deep in it's analysis and optimization of code
04:56:40 <oklopol> ++++[>++++<-]>[>++<-]> (32, 2)
04:57:06 <oklopol> i have all loops separate in the system
04:57:59 <oklopol> i'll do the complete algorithm to find the optimal way for that someday unless i see it somewhere else
04:58:41 <oklopol> 176 "smth had to be truncated to 256 characters for debug information" warnings
05:01:56 <oklopol> can i see an ork program to check the final syntax? :D
05:03:06 <oklopol> if there are accidental infinite loops in a tutorial, i'd like to check i working program to be sure
05:05:08 <CakeProphet> http://esoteric.voxelperfect.net/files/ork/src/orkfuck.ork
05:06:37 <CakeProphet> GregorR, hmmm... do you have some sort of docs on the exact specs of ORK?
05:06:57 <CakeProphet> I'm too lazy to crack open the source and read it with my shoddy C++ literacy.
05:07:17 <GregorR> I do, but the site it's all on is apparently down >_>
05:07:43 <oklopol> There is such a thing as a brainfuck interpreter.
05:07:45 <oklopol> A brainfuck interpreter can instanciate.
05:07:45 <oklopol> A brainfuck interpreter can subinstanciateData a number.
05:07:45 <oklopol> A brainfuck interpreter can subinstanciateProgram a number.
05:08:03 <oklopol> put the "There is... " line beneath the others?
05:08:39 <oklopol> and, could i declare "A brainfuck interpreter can instanciate." in say, the main
05:09:01 <oklopol> i'm making an interpreter now, tho it's a trivial conversion if needed
05:09:39 -!- RodgerTheGreat has quit.
05:10:16 <oklopol> godfuck... who wrote the bfork?
05:12:27 <oklopol> or did you just do an evil conversion?
05:15:30 <GregorR> I don't recall anything about it *shrugs*
05:16:58 <CakeProphet> hmm... the comments in the source should be enough to get all the possible syntax.
05:17:07 <CakeProphet> unless you randomly don't-comment-certain-parts
05:36:00 <pikhq> oklopol: Allow me to give you a much shorter version of 255.
05:38:01 <oklopol> true, i meant non-wrapping since i assumed bignum
05:38:50 * pikhq is generally used to having wrapping, since chars, well, wrap.
05:39:01 <oklopol> and secondly, i'm lying, i recalled wrapping much after i'd said said my thing
05:42:33 <CakeProphet> hmmm... are function definitions independent of class declarations?
05:42:46 <CakeProphet> or are they "within" the last defined function.
05:43:05 <pikhq> See the C++ code. ;)
05:43:25 <oklopol> they are in the class that is mentioned in the "When a ... is to ..."
05:44:09 <CakeProphet> pikhq, See makes my eyes hurt when I try to understand it.
05:53:03 -!- digital_me has quit (Read error: 54 (Connection reset by peer)).
06:28:00 <CakeProphet> GregorR, haha... you could introduce metaclasses into ORK
06:28:49 <pikhq> There is such a mammal as a dog.
06:29:13 <GregorR> There is such a thing as a <class>, which is a type of <metaclass>
06:29:31 <pikhq> I prefer Cake's idea. . .
06:31:01 <CakeProphet> No clue how metaclasses would work in ORK though.
06:31:38 * CakeProphet sometimes wishes there was a simpler version of regex that used that kind of syntax
06:31:49 <CakeProphet> This <variable> is a <blank> that likes to <blank>
06:39:27 <Sukoshi> The future of OOP: An abstract framework of abstract metaclasses.
06:45:35 <Sukoshi> That about sums up all of theoretical OOP.
06:45:36 <CakeProphet> only a few specific things that need a little funky class-based magic.
06:45:52 <CakeProphet> OOP can at times be redundent... and it's a little weird.
06:47:43 <pikhq> Sukoshi: The future of OOP:
06:48:04 <pikhq> There is an object which does everything I want.
06:48:58 <pikhq> The stdlib always has every object that does everything you want.
06:49:10 <CakeProphet> factory functions that produce classes are strangely powerful....
06:49:21 <pikhq> And it's an abstraction ontop of 500 different layers. . . ;)
06:49:42 <CakeProphet> you can box a few generalized patterns about certain class designs into a single word.
06:52:44 <Sukoshi> You remind me of the wackiest abstraction I made/used.
06:54:09 <pikhq> (that abstraction is?)
06:54:50 <Sukoshi> I wanted to generalize binary classes in a user-made package that had the same named slots but different names under one generic class so I could save myself the typing, so I made an alist with the keys as the symbols for the generic class names and what was assoc'd with the key was an anonymous function produced by a macro for the metaclass definition. This function then defined a new class according to another macro, and generated an
06:54:50 <Sukoshi> instance of it if desired.
06:59:54 <pikhq> That's almost like writing an OS to implement dc.
07:03:25 <Sukoshi> I wanted to save 40 lines of typing.
07:04:53 <Sukoshi> I did -- I did the thing in like 10 lines.
07:06:48 <Sukoshi> What? I saved my hand from OCD.
07:17:30 <CakeProphet> when you use regex to substitute things into regex.
07:18:03 <Sukoshi> I can't think why if you use your macros correctly.
07:18:12 <Sukoshi> Oh wait -- this is Python.
07:18:31 * Sukoshi pities the stringent syntax.
07:19:08 <CakeProphet> No semicolons and braces and all that jazz.
07:19:28 <CakeProphet> C looks gawd-awful to type... but I guess you'd get used to all the symbols after a while.
07:19:51 <Sukoshi> Plus, it makes for fun formatting tricks.
07:20:11 <Sukoshi> I, personally, abhor overreliance on whitespace.
07:20:32 <CakeProphet> meh... small rewards for the task of typing all that crap out.
07:20:57 <CakeProphet> semicolons and braces... not to mention it looks ugly.
07:21:27 <Sukoshi> What if you were working on a very small resolution display, and indendation would look horrible?
07:21:50 -!- MM2 has joined.
07:22:45 <Sukoshi> Also, think about using regexps to go through Python code and change stuff around -- annoying.
07:23:22 <CakeProphet> It's like saying "You'd care more about how slow Python is if you were on a 1980s IBM"
07:23:55 <Sukoshi> More like "You'd care more about how slow Python is if you did anything system critical."
07:24:31 <CakeProphet> I remember some implementation of Python written in Python, with the very ambitious goal of becoming faster than C. :P
07:24:50 <Sukoshi> There's Jython, and that's scary.
07:25:16 <Sukoshi> Python being compiled by Java. Whoo.
07:26:02 <CakeProphet> I've never encounted any slowness with Python so far... but I haven't really worried about it
07:27:07 <Sukoshi> My box is on the older side, so.
07:27:45 <Sukoshi> Take a look at the Computer Language Shootout results.
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
09:26:14 -!- anonfunc has quit.
10:25:58 -!- xpika has joined.
10:26:19 -!- xpika has left (?).
11:53:48 -!- tgwizard has joined.
13:19:30 -!- tgwizard has quit (Read error: 110 (Connection timed out)).
13:48:39 <MM2> please tell me 8 first fibonacci numbers
14:27:39 -!- tgwizard has joined.
15:01:29 -!- jix has joined.
15:04:21 -!- Asztal has joined.
15:07:29 -!- Asztal has quit (Client Quit).
15:21:30 -!- oklopol has quit (Read error: 110 (Connection timed out)).
15:41:22 -!- oklopol has joined.
16:11:36 -!- oerjan has joined.
16:32:41 -!- CakeProphet has quit ("haaaaaaaaaa").
16:55:36 -!- digital_me has joined.
17:15:06 -!- CakeProphet has joined.
17:21:55 -!- CakeProphet has quit (Read error: 104 (Connection reset by peer)).
17:35:49 -!- digital_me has quit (Read error: 104 (Connection reset by peer)).
17:41:00 -!- digital_me has joined.
17:57:00 -!- digital_me_ has joined.
18:04:10 * SimonRC goes ooh: http://www.coolopticalillusions.com/optical_illusions_pictures_3/candy_stripes.htm
18:07:00 <SimonRC> There seems to be a battle going on in the high-tech language world.
18:07:37 <SimonRC> On one side, there is Lisp, with its ability to perform arbitrary transformations on program source code.
18:08:10 <SimonRC> On another side, there is Haskell, with its power of manipulating actual programs and computations.
18:08:35 * oerjan is at the moment programming Brainfuck in Haskell
18:08:40 <SimonRC> On a third side, there are the OO languages with high-powered reflection.
18:08:59 <SimonRC> oerjan: define "programming Brainfuck in Haskell"
18:09:18 <pikhq> On the fourth side, there are low-level languages saying "we can do it, too!"
18:09:28 -!- digital_me has quit (Read error: 110 (Connection timed out)).
18:10:10 <oerjan> I wanted to make a brainfuck interpreter that is completely customizable as to tape size, cell value sizes and wrapping.
18:10:28 <SimonRC> LOOKIT ME I ARE USING THE VISITX0rZ-PATTEN LOLZ
18:10:51 -!- digital_me has joined.
18:11:57 <SimonRC> at my URL, not what oerjan said I hope
18:12:06 <SimonRC> unless you forgot to turn your ESP off again
18:13:21 * SimonRC is reading _Thud_ by PTerry. Very good book, especially page 290.
18:28:44 -!- digital_me_ has quit (Connection timed out).
18:40:59 -!- sebbu has joined.
18:41:47 -!- CakeProphet has joined.
19:07:15 -!- oerjan has quit ("leaving").
19:18:40 * SimonRC wonders what MS Keg would be if it existed.
20:23:12 -!- RodgerTheGreat has joined.
20:56:18 * CakeProphet is toying with new ideas on how to turn common parts of programming languages into unconvential data types.
20:56:39 <CakeProphet> Everything should be data... if it isn't, you can't manipulate it to its full potential.
20:58:05 <CakeProphet> So thinks like variable names, call stacks, evaluation stack, parse trees, and language syntax should all be expressable by data of some sort.
21:02:00 <CakeProphet> a weird example... but I'm sure with some tweaking to how it works you could make some interesting applications with it.
21:02:58 <CakeProphet> That would requite some interesting runtime parsing mechanics. :P
21:03:28 <CakeProphet> Better yet... you could do it like Lisp with the quote operator.
21:03:52 <CakeProphet> and have the quote operator represent a "suspended" sytax... that isn't evaluated till later.
21:09:25 -!- Keymaker has joined.
21:09:53 <Keymaker> hello. 99 bottles of beer in underload: http://koti.mbnet.fi/~yiap/programs/underload/99.ul
21:10:14 <Keymaker> finally got around finishing this one. i'm happy about it, as it's my first program in this kind of language
21:10:32 <Keymaker> first that does something logic, that is
21:10:52 <Keymaker> my two others in underload are a quine and something that prints natural numbers in unary
21:11:57 <SimonRC> Thou shalt not fuck around with the parser at runtime.
21:13:49 * SimonRC wonders where Underload is defined
21:18:27 <CakeProphet> You could assign expressions to any generic set of symbols...
21:19:15 <SimonRC> I feel that changing suck things at runtime would make the language a little slow.
21:20:00 <SimonRC> In fact, you are almost screwing with the lexer at run-time.
21:20:19 <CakeProphet> If the language is designed for it's purposes... rather than implementing it as a bolt-on later in life... it'll be more well-suited for it.
21:20:31 <SimonRC> plus you would end up leaving large holes all over your language spec.
21:21:15 <CakeProphet> ...it's an esolang idea... it's supposed to be weird. :P
21:21:19 <SimonRC> Lisp only gets away with it because it restricts lexer-around-with-screwing to read-time.
21:21:45 <SimonRC> You know about the lifecycle of Lisp source code, right/
21:22:15 <SimonRC> the compiler reads a series of "forms" from each input file.
21:22:51 <SimonRC> any of those forms may change the lexer.
21:22:59 -!- Keymaker has quit.
21:23:16 <SimonRC> ah, they may only change the lexer for following forms
21:24:07 <CakeProphet> The if the lexer holds a series of states... and plugs in the proper values from these malleable state values... it would be trivial to have a lexer that can change how it parses mid-runtime.
21:24:16 <SimonRC> once the forms are read it, there is compile time, which IIRC starts with macro-expansion, which allows you to pass parts of parse trees (s-expressions) through arbitrary functions, which it handy.
21:24:28 <CakeProphet> it would most likely be an interpreted language though.
21:24:37 <SimonRC> CakeProphet: yeah, but that reduces your ability to optimise
21:24:58 <SimonRC> it prevents such fundamental optimisations as, say, *compiling* the program.
21:25:03 <CakeProphet> ...no use optimizing a interpreter/compiler that doesn't exist yet.
21:43:57 -!- RodgerTheGreat_ has joined.
21:44:00 -!- RodgerTheGreat has quit (Read error: 104 (Connection reset by peer)).
21:44:13 -!- RodgerTheGreat_ has changed nick to RodgerTheGreat.
21:56:55 -!- RodgerTheGreat_ has joined.
22:00:05 -!- ihope_ has joined.
22:00:15 <ihope_> Any idea how much bandwidth the esowiki uses?
22:02:42 -!- oerjan has joined.
22:06:11 <ihope_> Per how many seconds? :-P
22:09:08 -!- RodgerTheGreat has quit (Read error: 110 (Connection timed out)).
22:12:28 -!- RodgerTheGreat_ has quit (Remote closed the connection).
22:12:47 -!- RodgerTheGreat has joined.
22:15:07 <RodgerTheGreat> http://youtube.com/watch?v=WwylBRucU7w&mode=related&search <- lol
22:31:13 <ihope_> Is that that blender thing?
22:41:00 -!- digital_me has quit ("Lost terminal").
22:51:29 -!- RodgerTheGreat_ has joined.
22:51:46 -!- RodgerTheGreat_ has quit (Remote closed the connection).
22:52:26 -!- RodgerTheGreat has quit (Read error: 104 (Connection reset by peer)).
22:52:26 -!- RodgerTheGreat_ has joined.
23:31:08 -!- digital_me has joined.