< 1171756850 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :weird < 1171759343 0 :sebbu!unknown@unknown.invalid QUIT :"@+" < 1171760199 0 :Sukoshi!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1171760934 0 :CakeProphet!unknown@unknown.invalid NICK :SevenInchBread < 1171760957 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :foo < 1171762119 0 :anonfunc!n=dholman@adsl-67-117-26-22.dsl.chic01.pacbell.net JOIN :#esoteric < 1171762479 0 :anonfunc!unknown@unknown.invalid QUIT : < 1171762560 0 :anonfunc!n=dholman@adsl-67-117-26-22.dsl.chic01.pacbell.net JOIN :#esoteric < 1171765903 0 :digital_me!unknown@unknown.invalid QUIT :"leaving" < 1171768134 0 :crathman!unknown@unknown.invalid PRIVMSG #esoteric :pipes in that SII is the mockingbird < 1171768155 0 :crathman!unknown@unknown.invalid PRIVMSG #esoteric :I put together the Smullyan birds a while back: http://www.angelfire.com/tx4/cus/combinator/birds.html < 1171768188 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :? < 1171768194 0 :crathman!unknown@unknown.invalid PRIVMSG #esoteric :wishes for a simple esoteric language that would allow combinators to be named and composed < 1171768207 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :what's a bird? < 1171768224 0 :crathman!unknown@unknown.invalid PRIVMSG #esoteric :Y combinator is known as the Why bird. < 1171768252 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :... < 1171768258 0 :crathman!unknown@unknown.invalid PRIVMSG #esoteric :birds are kind of a trick for naming combinators - from one of Raymond Smulyan's book < 1171768281 0 :crathman!unknown@unknown.invalid PRIVMSG #esoteric :a mockingbird repeats whatever it hears: SIIx = xx < 1171768304 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :ok < 1171768336 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :and... < 1171768372 0 :crathman!unknown@unknown.invalid PRIVMSG #esoteric :no particular point... just scrolling up on some of the earlier conversation,,, < 1171768450 0 :crathman!unknown@unknown.invalid PRIVMSG #esoteric :realizes that I might be missing the point of this channel... < 1171768498 0 :crathman!unknown@unknown.invalid PRIVMSG #esoteric :but playing around with unlambda, I've been wondering if there's a similar language that actually allows you to name and combine combinator definitions < 1171768583 0 :oerjan!n=oerjan@hagbart.nvg.ntnu.no JOIN :#esoteric < 1171768680 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :crathman: well, Scheme would be one ;) < 1171768682 0 :wooby!n=alan@ny-lancastercadent4g1-3a-236.buf.adelphia.net JOIN :#esoteric < 1171768729 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :haskell too < 1171768732 0 :crathman!unknown@unknown.invalid PRIVMSG #esoteric :tis true Scheme can be used. just looking for a language that's bare bones like unlambda or K < 1171768800 0 :crathman!unknown@unknown.invalid PRIVMSG #esoteric :but unlambda and k doesn't go above the level of actually letting you write long chains of combinators < 1171768804 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :bsmntbombdood: V in Unlambda becomes usable because of C, the call-with-continuation operator. In fact you have to use them because the I/O is based on it. < 1171768829 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :The impure C allows you to escape from a V. < 1171768844 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :what? < 1171768866 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :Your command some hours ago, you wondered why Unlambda had V. < 1171768880 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :oh < 1171768900 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :*comment < 1171768920 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ACTION must be in IRP-mode :) < 1171768981 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :Of course the real reason to tangle V,C and I/O in this way is to make Unlambda weirder than pure combinatory logic. < 1171768998 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :ACTION notices that crathman's "Crossed Konstant Mocker" SKI expansion is way longer than it needs to be < 1171769063 0 :anonfunc!unknown@unknown.invalid QUIT : < 1171769132 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :can be just S(KK)(SII) < 1171769148 0 :crathman!unknown@unknown.invalid PRIVMSG #esoteric :I was sloppy with some of the sk chains < 1171769153 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :Another weirdness: Using C you can detect whether a function is D without actually applying it. I noticed this but I don < 1171769163 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :'t know if anyone has used it. < 1171769209 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :It could allow for a different way of list termination. < 1171769266 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :I considered using it in my Unlambda interpreter but settled on using Church numerals to build lists instead, since you have to count `'s anyhow. < 1171769542 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :but we used laminated punch cards! < 1171769552 0 :crathman_!n=chatzill@cpe-76-185-186-143.tx.res.rr.com JOIN :#esoteric < 1171769570 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :SimonRC: the SKI logic is "the implicational fragment of intuitionistic logic" < 1171769646 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :oerjan.logread_amount > 100 < 1171769692 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :And SKI corresponds to doing that logic Hilbert style, while lambda calculus corresponds to doing it natural deduction style. < 1171769716 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :See Wikipedia, I think. < 1171769736 0 :crathman_!unknown@unknown.invalid PRIVMSG #esoteric :whoops. get's disconnected in the middle of conversation. < 1171769826 0 :crathman!unknown@unknown.invalid QUIT :Read error: 60 (Operation timed out) < 1171769838 0 :crathman_!unknown@unknown.invalid NICK :crathman < 1171770122 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :crathman: I found an interpreter for such a language the other day. < 1171770170 0 :crathman!unknown@unknown.invalid PRIVMSG #esoteric :I'm not proficient enough to write esoteric languages... but very much enjoys playing with them < 1171770206 0 :crathman!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: got a link? < 1171770214 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :i don't think it is considered esoteric, even, more like a computational model like combinatory logic itself. < 1171770243 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :I'm trying to look through my browser logs. Although I posted it here, too. < 1171770247 0 :crathman!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: there is a fine line between tarpit and minimalist PL. :-) < 1171770371 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :btw here is a weird one that i couldn't make any sense of: http://cstein.kings.cam.ac.uk/~chris/combinators.html < 1171770395 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :definitely something to play with, though. < 1171770495 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :Darn, I didn't know it was that many days ago, but I found it: http://www.dina.dk/~sestoft/lamreduce/index.html < 1171770532 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :actually it is lambda calculus, but it is still pretty bare-bones < 1171770743 0 :crathman!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: thanks! < 1171770975 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :calculation by hand ftw! < 1171771131 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :ha ha! < 1171771152 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :I is XXX < 1171771168 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :hot combinators naked! < 1171771202 0 :ShadowHntr!i=sentinel@wikipedia/Shadowhntr JOIN :#esoteric < 1171771254 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :actually no, but ok < 1171771922 0 :anonfunc!n=dholman@adsl-67-117-26-22.dsl.chic01.pacbell.net JOIN :#esoteric < 1171772242 0 :ShadowHntr!unknown@unknown.invalid QUIT :Client Quit < 1171779269 0 :crathman_!n=chatzill@cpe-76-185-186-143.tx.res.rr.com JOIN :#esoteric < 1171779614 0 :crathman_!unknown@unknown.invalid QUIT :Read error: 54 (Connection reset by peer) < 1171779636 0 :crathman_!n=chatzill@cpe-76-185-186-143.tx.res.rr.com JOIN :#esoteric < 1171780111 0 :crathman_!unknown@unknown.invalid QUIT :"Chatzilla 0.9.77 [Firefox 2.0.0.1/2006120418]" < 1171780362 0 :crathman!unknown@unknown.invalid QUIT :Read error: 110 (Connection timed out) < 1171782519 0 :calamari!unknown@unknown.invalid QUIT :"Leaving" < 1171785169 0 :helios24!i=helios@item.n1.helzilla.de JOIN :#esoteric < 1171785599 0 :clog!unknown@unknown.invalid QUIT :ended < 1171785600 0 :clog!unknown@unknown.invalid JOIN :#esoteric < 1171785654 0 :sebbu!n=sebbu@ADijon-152-1-106-69.w86-218.abo.wanadoo.fr JOIN :#esoteric < 1171786894 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :G'night all! < 1171787067 0 :Sgeo!unknown@unknown.invalid QUIT :Client Quit < 1171789381 0 :helios24!unknown@unknown.invalid QUIT :Read error: 54 (Connection reset by peer) < 1171789383 0 :helios24!i=helios@item.n1.helzilla.de JOIN :#esoteric < 1171789756 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :oerjan, was it an unlambda interpreter you made with unlambda or a brainfuck interpreter? :P < 1171789856 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :unlambda < 1171789872 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i thought so < 1171789877 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :can i have the link? < 1171789934 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :ACTION has fun with GUI programming? < 1171789956 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :I never thought I'd say that. < 1171789966 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :http://oerjan.nvg.org/esoteric/interpreter.unl but I don't seem to get through at the moment. < 1171789996 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :thank you < 1171790020 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :ACTION should get his own hostname one of these days... < 1171790054 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :I didn't even know I had one until they mentioned it during a recent crash at NVG < 1171790080 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :I'm actually not too familiar with how DNS works... < 1171790126 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :you need a static IP address right? Either that or change the registration each time your IP changes... < 1171790159 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :well my webpage is on the NVG server so others take care of the mess... < 1171790179 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :what does C do in unlambda? < 1171790193 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :if you change the registration you have to be careful about expiration dates, I think. < 1171790216 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :Tkinter (Tk in Python) is oddly fun to play with. < 1171790236 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :if you make those too long you _cannot_ change the registration reliably until it expires. < 1171790244 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :C is call-with-current-continuation < 1171790265 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :hmm... what's that mean? :D < 1171790295 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :`Cf turns into `f, where is a continuation, a special function. < 1171790309 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :yeah... changing the registration will create a period of time where your website is inaccessible... because of caching. < 1171790365 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :Now `g would cause the call `Cf to return with g as its result < 1171790436 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :If `Cf hasn't already returned you can think of as a local break or return function < 1171790522 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :But if `Cf has already returned you can mysteriously use to make it return _again_. < 1171790676 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :The latter can make for even more than usually hard to understand programs. The Unlambda distribution comes with this program: ``r`cd`.*`cd < 1171790712 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :When you can understand what it does, you have a good grasp on continuations. < 1171790793 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :so... it has something to do with side-effects? :D < 1171790796 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :However, I believe my interpreter only uses continuations for escape. Not that it isn't hard enough. < 1171790856 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :Sort of. C itself is still sort of pure, it just makes for strange program logic. < 1171790891 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i'll try to understand them later < 1171790896 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :*C, not them < 1171790917 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :unlambda is goddamn simple now that i read about it yesterday < 1171790941 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i didn't understand it when i saw it like half a year ago < 1171790965 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :a few substitution rules < 1171791292 0 :voodooattack!n=voodooat@217.54.5.55 JOIN :#esoteric < 1171791297 0 :voodooattack!unknown@unknown.invalid QUIT :Remote closed the connection < 1171791325 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :maybe it was because i thought there is something super special in there < 1171791333 0 :voodooattack!n=voodooat@217.54.5.55 JOIN :#esoteric < 1171792646 0 :nazgjunk!n=htitan@wikipedia/Nazgjunk JOIN :#esoteric < 1171792691 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :hmm... i still have a hard time understanding how to do loops < 1171792702 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :can i get an s expression reduce to itself? < 1171792707 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i mean < 1171792709 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i can't < 1171792713 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :can you? < 1171792760 0 :voodooattack!unknown@unknown.invalid PRIVMSG #esoteric :what do you mean? :p < 1171792789 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ahem < 1171792842 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :loops -> recursion -> clever use of self-application < 1171792911 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :let's say you want to make a function f = `g f < 1171792930 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :actually... < 1171792945 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :since unlambda has strict evaluation we need to be a bit careful. < 1171792997 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :okay < 1171793009 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :how would i make f ? `gf < 1171793012 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric := < 1171793013 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :Let's say we want f x = ``g f x, where g is given. < 1171793013 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :*= < 1171793039 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1171793052 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :the first version will only work in a lazy language. < 1171793076 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i think i follow < 1171793091 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :the trick is to make something that becomes f when applied to itself. < 1171793106 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :say h h = f < 1171793115 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :exactly what i want, yes < 1171793127 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :hmm okay < 1171793143 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :so ``h h x = ``g f x = ``g `hh x < 1171793168 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :so it won't evaluate them too early? or? < 1171793182 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :whoops. < 1171793237 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :To avoid early evaluation, the first step is to modify g. < 1171793285 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :Make a g' such that ``g' h x = ``g `hh x < 1171793333 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :but such that g' only applies h to itself when really needed. < 1171793349 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :okay, this gets too hard for me < 1171793351 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric ::) < 1171793362 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :```SIXS < 1171793363 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :``IS`XS < 1171793363 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :`S`XS < 1171793377 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i just wanted `XS -> `I`XS < 1171793382 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :hmm < 1171793386 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :it's not the same thoug < 1171793387 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :*H < 1171793398 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :that's not overly hard since I is the identity. < 1171793408 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i would need an interpreter to learn this < 1171793431 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :it's not overtly hard maybe, too hard for me though < 1171793453 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :i mean, `XS is _always_ `I`XS :D < 1171793459 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :overt :PP < 1171793474 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :well, true < 1171793509 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :but i'm having a hard time convincing myself about turing completeness < 1171793519 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :since all expressions seem to die right away < 1171793527 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ho hum. < 1171793531 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :so i wanted to make an S expression evaluate to itself < 1171793542 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :``sii is your friend. < 1171793563 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :` ``sii ``sii will not die. < 1171793607 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :let me explain it a different way. < 1171793628 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :mocking bird < 1171793653 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :to make a function recursive, give it an extra parameter which is itself. Then to recurse, apply that parameter to itself. < 1171793696 0 :nazgjunk!unknown@unknown.invalid QUIT :Read error: 54 (Connection reset by peer) < 1171793705 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :yeah, that i figured, i just needed to see one simple example of S reducing into itself < 1171793709 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :an s expression < 1171793743 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :well I just gave you one, ```sii``sii < 1171793766 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :simplest there is. < 1171793778 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i did this language once where you needed to pass everything around to be able to use them... but unlambda indeed is already like that < 1171793790 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1171793790 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i wish this world was smaller < 1171793798 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i might do something original sometime < 1171793817 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i'll play with cheese for a while then < 1171793822 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i'm very slow in this < 1171793829 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :*``sii`sii < 1171793874 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :Eh, right < 1171793883 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :it's actually trivial < 1171793886 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :eh, wrong < 1171793891 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :oh < 1171793896 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :what is? < 1171793911 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :It should be ```sii``sii < 1171793937 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :indeed, but i understood it < 1171793942 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i'm a clever interpreter < 1171793965 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :Another one: ```sii``s`kk``sii < 1171793985 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :but, it basically just... sii doubles it's argument and applies it to itself, so it's trivial < 1171794009 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :but it needs lazy evaluation, hm... < 1171794015 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :but i learned these yesterday so they are not so clear yet i could write these things myself < 1171794023 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i have to convert the big one to python :D < 1171794040 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :lambda a,b,c : (a(c))(b(c)) < 1171794044 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :*ones < 1171794094 0 :nazgjunk!n=htitan@wikipedia/Nazgjunk JOIN :#esoteric < 1171794115 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :is there a nice command line kind of unlambda interpreter? < 1171794133 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i'd make one fast in python though if just s and k and i < 1171794134 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :They are all command line aren't they? < 1171794139 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :probably < 1171794142 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :The ones in the distribution. < 1171794146 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i don't know < 1171794160 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :because i've not seen one, i'll search if there are many then < 1171794161 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :And a few more on my web page < 1171794190 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :this is a language i'll prolly start making interpreters when learning languages, since it's so simple < 1171794212 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :Essentially what I did < 1171794226 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :hmm < 1171794232 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :can i see your web page? :D < 1171794249 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :Although getting C right requires some understanding. < 1171794254 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :oerjan.nvg.org/esoteric < 1171794265 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :yes, that's why i'll leave that until later < 1171794311 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :oh yeah, my thue < 1171794315 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i'll finish it today < 1171794321 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i might bug you later that is :D < 1171794350 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :I'm afraid I'll be leaving the house in 5 minutes < 1171794376 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :but feel free to ask me later < 1171794408 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :your haskell interpreter < 1171794412 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :it takes files < 1171794414 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :only < 1171794417 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :seems < 1171794428 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :Let me see < 1171794435 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :later tonight, i'll play with unlambda first < 1171794497 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :No, you can use stdin by giving no argument < 1171794577 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric ::main? < 1171794581 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i'll try.. < 1171794582 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric ::D < 1171794610 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :hmm < 1171794627 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :I wrote it in a pretty old version of Haskell, no hierarchical libraries - NVG isn't quite up to date on Haskell < 1171794639 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :anyhow, gotta go < 1171794643 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :bye < 1171794651 0 :oerjan!unknown@unknown.invalid QUIT :"Bye" < 1171794690 0 :jix!n=jix@L63fd.l.strato-dslnet.de JOIN :#esoteric < 1171795680 0 :anonfunc_!n=dholman@ppp-67-121-238-228.dsl.chic01.pacbell.net JOIN :#esoteric < 1171796197 0 :voodooattack!unknown@unknown.invalid QUIT :Nick collision from services. < 1171796211 0 :voodooattack!n=voodooat@217.54.5.55 JOIN :#esoteric < 1171796571 0 :anonfunc!unknown@unknown.invalid QUIT :Read error: 110 (Connection timed out) < 1171796813 0 :jix!unknown@unknown.invalid QUIT :"Bitte waehlen Sie eine Beerdigungnachricht" < 1171798175 0 :nazgjunk!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1171798184 0 :UpTheDownstair!n=htitan@wikipedia/Nazgjunk JOIN :#esoteric < 1171798421 0 :UpTheDownstair!unknown@unknown.invalid NICK :nazgjunk < 1171799323 0 :jix__!n=jix@L63fd.l.strato-dslnet.de JOIN :#esoteric < 1171799617 0 :jix__!unknown@unknown.invalid QUIT :"Bitte waehlen Sie eine Beerdigungnachricht" < 1171801976 0 :voodooattack!unknown@unknown.invalid QUIT :Nick collision from services. < 1171801990 0 :voodooattack!n=voodooat@217.54.5.55 JOIN :#esoteric < 1171803110 0 :jix__!n=jix@L63fd.l.strato-dslnet.de JOIN :#esoteric < 1171803164 0 :voodooattack!unknown@unknown.invalid QUIT :Read error: 54 (Connection reset by peer) < 1171803216 0 :voodooattack!n=voodooat@217.54.5.55 JOIN :#esoteric < 1171803363 0 :nazgjunk!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1171803417 0 :nazgjunk!n=htitan@wikipedia/Nazgjunk JOIN :#esoteric < 1171803932 0 :nazgjunk!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1171803978 0 :nazgjunk!n=htitan@wikipedia/Nazgjunk JOIN :#esoteric < 1171804064 0 :helios24!unknown@unknown.invalid QUIT :Remote closed the connection < 1171804131 0 :helios24!i=helios@item.n1.helzilla.de JOIN :#esoteric < 1171805202 0 :cz_jc!n=jc@88.146.126.102 JOIN :#esoteric < 1171807196 0 :crathman!n=chatzill@cpe-76-185-186-143.tx.res.rr.com JOIN :#esoteric < 1171808436 0 :oerjan!n=oerjan@hagbart.nvg.ntnu.no JOIN :#esoteric < 1171809686 0 :sebbu2!n=sebbu@ADijon-152-1-84-54.w81-49.abo.wanadoo.fr JOIN :#esoteric < 1171810044 0 :crathman!unknown@unknown.invalid QUIT :Read error: 110 (Connection timed out) < 1171810087 0 :cz_jc!unknown@unknown.invalid PART #esoteric :? < 1171810507 0 :oerjan!unknown@unknown.invalid QUIT :"leaving" < 1171810868 0 :sebbu!unknown@unknown.invalid QUIT :Read error: 110 (Connection timed out) < 1171810868 0 :sebbu2!unknown@unknown.invalid NICK :sebbu < 1171812031 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :whoooo... < 1171812035 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :ACTION is making..... paint. < 1171812055 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :my thue is almost ready! < 1171812065 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i'm making output by passing a list around xD < 1171812092 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :dirty cheater? < 1171812099 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :ya < 1171812117 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i want to get that working before actually learning haskell io < 1171812147 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :ACTION shall make the best paint program ever. < 1171812153 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric ::P < 1171812168 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i made a vector drawing thingie the other day < 1171812176 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :it was fun < 1171812254 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :Actually... I might rig up a CLI to a programming language specifically for drawing pretty pictures. < 1171812265 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :Programming art! < 1171813545 0 :crathman!n=chatzill@cpe-76-185-186-143.tx.res.rr.com JOIN :#esoteric < 1171813798 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :ready < 1171813807 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :goddamn that took long :\ < 1171813873 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :yeah, i don't understand why there aren't programming command lines on the bottom of every program < 1171814290 0 :tgwizard!n=tgwizard@c-9b3ee155.178-1-64736c10.cust.bredbandsbolaget.se JOIN :#esoteric < 1171814592 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :haha once again my interpreter was perfect but i couldn't use it xD < 1171814610 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :well, not perfect but worked as i'd intended it to < 1171814619 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i should leave testing for others.. < 1171815443 0 :crathman_!n=chatzill@cpe-76-185-186-143.tx.res.rr.com JOIN :#esoteric < 1171815829 0 :crathman!unknown@unknown.invalid QUIT :Read error: 60 (Operation timed out) < 1171816610 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :Anyone want to make a nifty paint program with me? < 1171816678 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :...I need to figure out how to make Python play nice with C... so I can make little helper functions in C to do all the massive byte-crunching while still nestled in the comfort of my The Best Language Ever(tm). < 1171816684 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :OMG < 1171816701 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :this actually worked http://fvdp.homestead.com/files/eso_bfi.t.txt :P < 1171816826 0 :crathman_!unknown@unknown.invalid QUIT :Read error: 110 (Connection timed out) < 1171816841 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :hmm... not that fast though xD < 1171816869 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :*::=,>,[-<+>]<.:101_11_ < 1171816872 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :ran quite fast < 1171816878 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :*::=++++++++[>++++++++<-]>+.+.+.+.+.+.+.: < 1171816889 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :has been running for 2 minutes now < 1171816924 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :write an unlambda in brainfuck < 1171816951 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric ::P < 1171816969 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i will try when i know it better < 1171816988 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :ski shouldn't be hard < 1171816992 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :imean < 1171816995 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :impossible < 1171817215 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :now that the interpreter is ready i could make it again from scratch, since it's prolly the crappiest piece of code i've ever written/seen < 1171817705 0 :goban!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1171817720 0 :goban!n=whyso@ip68-229-102-1.hr.hr.cox.net JOIN :#esoteric < 1171817842 0 :jix__!unknown@unknown.invalid NICK :jix < 1171818145 0 :goban!unknown@unknown.invalid QUIT :Remote closed the connection < 1171818160 0 :goban!n=whyso@ip68-229-102-1.hr.hr.cox.net JOIN :#esoteric < 1171820031 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :haha < 1171820046 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :made a thue interpreter in python in 25 min :P < 1171820072 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :a little learning with haskell is needed... < 1171820076 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :------------> < 1171820104 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i was actually just starting to eat... but had to write it... my food's cold maybe :\ < 1171820834 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :Yeah... Thue is fun to make :) < 1171820840 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :because it's.... super easy to parse. < 1171820886 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :well, bf is easier < 1171820914 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :okay, might be i just used bad techniques < 1171820938 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :since i didn't really reason what the best way to do it would be < 1171820949 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :just wrote a quick thing < 1171821018 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :basically... split and partition. ;) < 1171821251 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :for old,type,new in ((left, right[0], right[:2]) for left, right in (x.partition("=")[::2] for x in split("\n") if "=" in x))): < 1171821260 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :you can parse the replacement rules in one line. :) < 1171822024 0 :goban!unknown@unknown.invalid QUIT :Read error: 54 (Connection reset by peer) < 1171822039 0 :goban!n=whyso@ip68-229-102-1.hr.hr.cox.net JOIN :#esoteric < 1171822041 0 :voodooattack!unknown@unknown.invalid QUIT :Read error: 113 (No route to host) < 1171822240 0 :nazgjunk!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1171822264 0 :nazgjunk!n=htitan@wikipedia/Nazgjunk JOIN :#esoteric < 1171822317 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :def thue(str): < 1171822317 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric : rules=filter(lambda a:a!=['']and a!=['',''], map(lambda a:a.split("::="),filter(lambda a:a!=' ',str).split("\n"))) < 1171822317 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric : return rules < 1171822335 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :formatting < 1171822348 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :that's not the optimal way though :PP < 1171822635 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :http://www.pastebin.ca/362275 this is quite sucky :P < 1171822749 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :eh... maps and filters get kind of weird. < 1171822757 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :ACTION likes list comprehensions. :) < 1171822793 0 :ShadowHntr!i=sentinel@wikipedia/Shadowhntr JOIN :#esoteric < 1171822819 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i don't know how to parse that with them < 1171822839 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :maybe you did it there, that will not compile in my python 2.2 < 1171822846 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :so i have no idea what it does :D < 1171822871 0 :goban!unknown@unknown.invalid QUIT :Operation timed out < 1171822892 0 :goban!n=whyso@ip68-229-102-1.hr.hr.cox.net JOIN :#esoteric < 1171822897 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :it's basically the same thing as map and filter. < 1171822908 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :ACTION has the latest version of Python... so yeah... probably isn't compatable. < 1171822915 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :prolly, i just have [.. for .. in ... if ...] < 1171822924 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :and no other list comprehensions < 1171822938 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :oh... well that was a generator expression... same thing in iterator form < 1171822947 0 :nazgjunk!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1171823003 0 :nazgjunk!n=htitan@wikipedia/Nazgjunk JOIN :#esoteric < 1171823027 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :okay, i don't know what that means < 1171823047 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :know how list comprehensions work? < 1171823060 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :yes < 1171823104 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :a generator is the same thing... except instead of constructing a list.. it just creates an iterator (which lazily evaluates the items as it iterates over them..) < 1171823118 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :list comprehensions are eager... generator expressions are lazy. < 1171823149 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i know that < 1171823155 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :but how do they work? < 1171823162 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :show me an easy example < 1171823203 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :oh < 1171823215 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i got it now that i read your code thoroughly < 1171823239 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :except.. what is (x.partition("=")[::2] ? < 1171823253 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :the [::2] thingie < 1171823267 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :hmmm.. it's hard to explain exactly... < 1171823277 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :it has something to do with modulo. < 1171823277 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :tell me what it does there < 1171823284 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i'll try and induce < 1171823285 0 :UpTheDownstair!n=htitan@wikipedia/Nazgjunk JOIN :#esoteric < 1171823304 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :it takes the 0th and 2nd slice from a 3-tuple < 1171823350 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :>>> x = (x ** 2 for x in xrange(100)) < 1171823352 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :>>> print x < 1171823353 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric : < 1171823355 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :>>> print x.next() < 1171823357 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :0 < 1171823358 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :>>> print x.next() < 1171823359 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :1 < 1171823361 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :>>> print x.next() < 1171823363 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :4 < 1171823364 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :>>> print x.next() < 1171823365 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :9 < 1171823367 0 :nazgjunk!unknown@unknown.invalid QUIT :Connection reset by peer < 1171823367 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :>>> print x.next() < 1171823369 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :16 < 1171823370 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :>>> print x.next() < 1171823372 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :25 < 1171823374 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :>>> print x.next() < 1171823376 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :36 < 1171823378 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :>>> for num in x: print num < 1171823379 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :49 < 1171823381 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :64 < 1171823382 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :81 < 1171823384 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :100 < 1171823385 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :(...truncated...) < 1171823387 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :mmm... floddy. < 1171823463 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :yeah, i thought it's like that, but now partition returns left, mid, right, mid being the thing by which it was partitioned? < 1171823487 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1171823503 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :so [::2]] effectively rmeoves the mid < 1171823522 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1171823530 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :(It's a common technique I use with partition... :) ) < 1171823541 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :can i do [:1:2] or something to get 1,3,5 etc < 1171823565 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :that would just return 0 < 1171823570 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :and btw i think it's brilliant they have these [stuff here] things for easy sublists etc < 1171823583 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :but, how would i get them? < 1171823585 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :you mean... list literals? :) < 1171823589 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :is there a way? < 1171823590 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :maybe < 1171823601 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i don't know python's terminology that well < 1171823610 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :the brackets < 1171823614 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :[stuff, here] < 1171823625 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1171823642 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :is that python's own? < 1171823643 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :ACTION ...thought that was common... < 1171823667 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :yeah... comma-delimited list of expressions surrounded by brackets... makes a list. < 1171823678 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :no no nono < 1171823693 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :list literal, i didn't parse that in my head it seems :P < 1171823701 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :ooooh < 1171823704 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i mean (list here)[stuff here] < 1171823705 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :the slices < 1171823708 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :ye < 1171823715 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :>>> range(100)[::2] < 1171823716 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :[0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98] < 1171823724 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :I'm guessing it uses modulo... < 1171823727 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :can you have 1, 3 etc? < 1171823738 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :yeah, from:to:filter-mod < 1171823745 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i'd say < 1171823746 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :ACTION has never really figured out step... he just knows that setting it to 2 skips all the even indices. < 1171823757 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :oh < 1171823762 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i'm a goddamn idiot :P < 1171823767 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :list[1::2] < 1171823779 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :...yup :) < 1171823786 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :that would give you..... < 1171823796 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :1, 3, etc? < 1171823798 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i hope < 1171823802 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :>>> range(100)[1::2] < 1171823804 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :[1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63, 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95, 97, 99] < 1171823879 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :heh... you can do all sorts of nifty stuff with slices if you make your subclasses of list. :) < 1171823924 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :hey... range(100)[1::2:3] would that be something? < 1171823938 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :nah. < 1171823949 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :there's only three parts. < 1171823953 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :start:end:step < 1171823954 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :would've been a fun way to slice < 1171823956 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1171823972 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :ACTION brings up numpy... which uses some kickass multidimensional slicing. < 1171824793 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :numpy-dumpy < 1171825045 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :here we go... < 1171825050 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :ACTION had to figure out how to use it again. < 1171825125 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :>>> import numpy < 1171825126 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :>>> x = numpy.array([range(10), range(10,20), range(30,40), range(40,50)]) < 1171825128 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :>>> print x < 1171825129 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :[[ 0 1 2 3 4 5 6 7 8 9] < 1171825131 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric : [10 11 12 13 14 15 16 17 18 19] < 1171825132 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric : [30 31 32 33 34 35 36 37 38 39] < 1171825134 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric : [40 41 42 43 44 45 46 47 48 49]] < 1171825135 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :>>> x[1,3] < 1171825137 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :13 < 1171825139 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :>>> x[1,(3,4,5,6,7)] < 1171825140 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :array([13, 14, 15, 16, 17]) < 1171825142 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :>>> x[(1,2),(3,4)] < 1171825143 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :array([13, 34]) < 1171825145 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :>>> x[(1,2,3),(3,4,5)] < 1171825146 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :array([13, 34, 45]) < 1171825174 0 :maverickbna!i=sentinel@wikipedia/Shadowhntr JOIN :#esoteric < 1171825195 0 :ShadowHntr!unknown@unknown.invalid QUIT :Nick collision from services. < 1171825205 0 :maverickbna!unknown@unknown.invalid NICK :ShadowHntr < 1171825293 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :can you take sub-squares from a 2d-array? < 1171825310 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :I think you can... I'm just trying to figure out how. :P < 1171825335 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :it's also pretty damn efficient... most of NumPy's array stuff is in C. < 1171825403 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :yeah, clever trick < 1171825420 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :I don't even think it uses multiple arrays actually.. < 1171825435 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :as long as you maintain a solid shape you can just use multiplication. < 1171825457 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :yeah, asm does that faster than it does actualy multiplication < 1171825461 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :so yeah, it's fast < 1171825466 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :*actualy < 1171825469 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :*actual < 1171825476 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :(wh the y) < 1171825483 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :*(why the typos :\) < 1171825540 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :heh... there's a function for initializing an arbitrary array to nothing but zeros... perfect for a BFer :) < 1171825582 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :well, it's kind of obvious there's one :P < 1171825614 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :hmmm? < 1171825630 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i think it is... maybe not :\ < 1171825727 0 :Sgeo!n=sgeo@ool-18bf61f7.dyn.optonline.net JOIN :#esoteric < 1171825810 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :oklopol, do you have it installed? < 1171825850 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i don't... i'll get a newer python too if i get it < 1171825856 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :hmm < 1171825860 0 :UpTheDownstair!unknown@unknown.invalid NICK :nazgjunk < 1171825873 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :Numpy is incredibly fast O.o < 1171825882 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i'll do it now, gotta see < 1171825926 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :it initialized a 100 by 100 by 100 array of zeros in about the same time any other normal Python list would initialize. < 1171825981 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :hmm < 1171826008 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :100 x 100 is pretty much an empty array :) < 1171826020 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :10000 ~ 0 < 1171826040 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :well... using Python lists it would have taken up a signifigant amount of memory. < 1171826060 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :probably < 1171826077 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i'm used to python being unbelievably slow < 1171826104 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :I haven't experience much of anything else... as far as for actual use. < 1171826145 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i know at least c++, java, python and vb thoroughly < 1171826157 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :it usually works fine for what I need it to do... and there's usually some insane library out there that can accommodate those weird high-performance situations. < 1171826166 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :thoroughly being i know pretty much all the things normal people use with them :) < 1171826237 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :2.5 is the newest? < 1171826295 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :well, it's newer at least < 1171826485 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1171826488 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :that's the newest. < 1171826513 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :hmmm... alright... so a 100 by 100 by 100 by 100 matrix of zeroes made my computer bog down for a minute. < 1171826549 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :but it could allocate it? < 1171826555 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :eventually. < 1171826566 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :100 megabytes < 1171826578 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :...hmmm, oh yeah. < 1171826581 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :ACTION didn't consider that. < 1171826619 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :yeah... if I try to go 5 dimensions of 100 each... numpy spits out a "dimensions too large" error... for good reason I imagine. :P < 1171826626 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :it's not the time that's the issue there :) < 1171826648 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :hmm < 1171826653 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :dimensions too large? < 1171826658 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :it can have 5 dim though? < 1171826663 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1171826671 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :it can have arbitrary length dimensions. < 1171826704 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :good, c had a restriction of 12 dimensions at some point :P < 1171826705 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :but... since that would be well over a gigabyte... it sorta... preemptively stopped me. < 1171826716 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :(might be a lower lever restriction though) < 1171826728 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :well... I haven't checked the actual max... < 1171826731 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :ACTION does so. < 1171826740 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :well, 10 gigabytes < 1171826756 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :a bit more if you consider the idiotic 1024==1000 thing < 1171826760 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :10 gigabytes.... of zeros... talk about useful memory. < 1171826763 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :eh < 1171826765 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :a little less < 1171826826 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :typ... the dimensions look arbitrary... just however much memory we can hold. < 1171826852 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :typ? < 1171826886 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :er... that was a "yep"/ < 1171826923 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :ah okay < 1171826968 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :ah.... 32 < 1171827007 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :>>> y = numpy.zeros((1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1)) < 1171827009 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :ValueError: sequence too large; must be smaller than 32 < 1171827025 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric ::\ < 1171827029 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :that's stupid < 1171827040 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :Still... that should be plenty of dimensions for most scenarios... unless you're doing some freaky theoretical physics shit < 1171827059 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :yeah, but it wouldn't make it harder to code to make it n dimensions... < 1171827075 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :Python lists are arbitrary dimension... I believe. < 1171827085 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i know they are < 1171827160 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :>>> x = [] < 1171827161 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :>>> for num in xrange(1000): < 1171827163 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric : x = [x] < 1171827165 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric : < 1171827166 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :>>>print x < 1171827168 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :(...I'll spare you the spam...) < 1171827169 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :ACTION is feeling copy-pasty. < 1171827185 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i hate you < 1171827261 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :well... I tried to make a bigger dimension... but xrange() gave out on me before the trust list could. < 1171827340 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :oh ho! but itertools and its trusty count function save the day. < 1171827356 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i was just about to press paste on the same pieceeh < 1171827446 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :mmmm.... this is going to take a while. < 1171827615 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :my computer should learn some manners... when i tell someone i hate them it's not the right time to freeze up just before i can explain what i meant... < 1171827630 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :yeah... so.. < 1171827639 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :10000000000000000000000000000000-d list took too long... < 1171827655 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :fucking python installation .... < 1171827657 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric ::\ < 1171827659 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :hurray KeyboardInterupt. < 1171827666 0 :GregorR!unknown@unknown.invalid NICK :GreggorR < 1171827701 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :Python's list/iterative-stuff is probably one its stronger features... < 1171827717 0 :GreggorR!unknown@unknown.invalid NICK :GregorR < 1171827778 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :theoeretically speaking... Python can have infinitity-d lists. < 1171827795 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :just... not with all unique values. < 1171827829 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :...but that's not really anything amazing. :P < 1171827842 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :well, any list can have any-dimension lists :) < 1171827845 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :*language < 1171827848 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :lol xD < 1171827882 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :hmm... I actually don't think Python can create infinite-length lists... < 1171827916 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :Lisp can... simply because they're linked. < 1171828029 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :heh... you can -simulate- an infinite list.. < 1171828046 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :but I guess that's all Lisp is doing also. < 1171828138 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :you can't have an infinite length list because of the implementation < 1171828151 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i don't think python has but memory limits on length < 1171828155 0 :sebbu2!n=sebbu@ADijon-152-1-84-85.w81-49.abo.wanadoo.fr JOIN :#esoteric < 1171828157 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :I can have a set that contains everything though. :) < 1171828177 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :oklopol, well... with linked lists you can simply reference the pairs beforehand... < 1171828178 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i hate windows < 1171828187 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i'd like a brainfuck os better < 1171828204 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :what do you mean? < 1171828227 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :why the fuck does the taskbar not hide?!?!?!?!?!?!? < 1171828249 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :why did they put a randomizer on every fucking task < 1171828266 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i closed about 40 programs just now to get it down < 1171828272 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i only have mirc open < 1171828387 0 :digital_me!n=digital@wikipedia/Digitalme JOIN :#esoteric < 1171828392 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :okay, i'll throw this piece of shit out the window. < 1171828411 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :ACTION made an infite list in Python... cheating a little bit. < 1171828424 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :elaborate < 1171828447 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :>>> x = [1,[2,[3,[]]]] < 1171828448 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :>>> x[1][1][1] = x < 1171828450 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :>>> x < 1171828451 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :[1, [2, [3, [...]]]] < 1171828456 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :ah < 1171828457 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1171828472 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i forgot python had pointers < 1171828473 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i mean < 1171828475 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :you know what i mean < 1171828483 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :heh... yeah... lists are mutables. < 1171828506 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :mutable is different, i mean addressable < 1171828509 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :... < 1171828534 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :maybe in the implementation... but it's transparent at the top. < 1171828554 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :? < 1171828566 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :no it isn't < 1171828567 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :the pointing and addressing and all that is automatic. < 1171828580 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :well, mathematically yes < 1171828587 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :in other words... there is no & :) < 1171828589 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :you don't see the pointers as numbers < 1171828595 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :that's the only difference < 1171828624 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :yeah well... by that logic... there's no much difference in assembly and Python. < 1171828638 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :I'm just not seeing the assembly. < 1171828678 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :all you don't see is the numerical addresses... otherwise you only have pointers and calcs are with values, moving around with pointers < 1171828691 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :it's a lot of convenience < 1171828704 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :BUT you don't have a real difference like in functional langs you would < 1171828713 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :where you can't know where something is < 1171828714 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :totally... I'd rip my hair out if I had to mess around with pointers. < 1171828721 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :and it isn't really anywhere < 1171828742 0 :goban!unknown@unknown.invalid QUIT :Read error: 54 (Connection reset by peer) < 1171828747 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :but i forgot python is any-style programming... there's a nice term for it < 1171828754 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :somewhere out there < 1171828754 0 :goban!n=whyso@ip68-229-102-1.hr.hr.cox.net JOIN :#esoteric < 1171828758 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :pointers are nice < 1171828776 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :usually they can be simulated in part... they are nice though. < 1171828802 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :I've got a fairly interesting language in my head... that resembles Smalltalk... but fairly different. < 1171828824 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :that's a bit too vague to be interesting tbh :D < 1171828869 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :it's looking pretty neat in my head... it uses Smalltalks message-passing (except there are no multi-argument messages) mixed with Lisp's idea of symbols.... < 1171828901 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i don't know smalltalk :< < 1171828922 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :smalltalk was one of the pionerrs of OO. < 1171828926 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :before it got all... weird. < 1171828974 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :you mean OO features or attitude < 1171828982 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :with weird < 1171828997 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :and yes, i know that much about smalltalk < 1171829013 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :It was one of the first to do "everything is an object"... < 1171829019 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :yeah yeah < 1171829031 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i know all the trivia stuff, just not anything real :) < 1171829034 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :It doesn't really remind me of other OO languages though. < 1171829068 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :it has a metaclass everything is derived from, the metaclass being derived from itself, that's how much i know :P < 1171829081 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :because everything HAD TO be derived from something < 1171829206 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :yeah... it's like Lisp for OO... there's only three syntax forms... and no keywords (aside from a few reservered booleans, self, and super)... conditionals are implemented as methods of booleans... etc. < 1171829221 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :http://users.ipa.net/~dwighth/smalltalk/byte_aug81/design_principles_behind_smalltalk.html <--- < 1171829312 0 :sebbu!unknown@unknown.invalid QUIT :Connection timed out < 1171829312 0 :sebbu2!unknown@unknown.invalid NICK :sebbu < 1171829338 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :more flowery than implementation-specific... but eh... it's the best description I could find. :P < 1171829372 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i like technical descriptions better.. but i'll read that if it's not long < 1171829396 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :it does go into what it considers a hinderance to program design. < 1171829981 0 :Rugxulo!i=icechat5@adsl-065-013-115-246.sip.mob.bellsouth.net JOIN :#esoteric < 1171830055 0 :Rugxulo!unknown@unknown.invalid PART #esoteric :? < 1171830926 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i finally managed to read it :) < 1171830933 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :there was nothing i didn't know < 1171830977 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :...yeah < 1171830981 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :erm... < 1171830994 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :so... other languages don't have something similar to list[x:y]? < 1171831010 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i haven't seen < 1171831021 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :that does not mean there isn't one < 1171831027 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :yeah... < 1171831031 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :since i know mostly esoteric alngs < 1171831033 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :*langs < 1171831045 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :Some Python-like languages probably do it... I'd guess Ruby and maybe Perl. < 1171831049 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :maybe 15-20 non-esoteric < 1171831078 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :yeah, i don't know those languages... i should learn the languages everyone knows... < 1171831080 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :Hmm... I think in Smalltalk slicing is like list from: x to: y < 1171831120 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :that kind of sublisting syntax can of course be implemented in c++ in 10 min < 1171831150 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :but i won't do that :\ so it has to be in the language itself < 1171831162 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :I'm surprised C(++) doesn't have... Python's for loop. < 1171831180 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :it is considered to be added < 1171831188 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :it's way too common a procedure to always repeat. < 1171831194 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :but c++ is slow to change nowadays < 1171831202 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :it will take the java syntax < 1171831208 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :well... maybe not in C.... arrays aren't quite as versatile as lists. < 1171831210 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :java just evolves faster < 1171831240 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :for (int i : integer_list) {} < 1171831252 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :java is like that, c++ too if they add it < 1171831272 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :ACTION tries to think of some more Smalltalk idioms he knows... < 1171831272 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :but you have iterators in c++, it's the same thing but no nice syntax for it < 1171831278 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :I've never actually used that language... just read about it. < 1171831299 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :conditionals are like.... bool ifTrue: function ifFalse: function < 1171831329 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :and it has literal syntax for lambda blocks in []'s < 1171831474 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :math looks like any other math... because of the binary syntax form... 2 + 2 2 / 2 < 1171831548 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :the if thing i don't understand < 1171831553 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :but i know math is like that < 1171831570 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :booleans are equipped with an ifTrue and an ifFalse method. < 1171831576 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :that take lambdas as arguments. < 1171831612 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :so.... < 1171831650 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :2 > 3 ifTrue: ["Hello, World!" print] < 1171831669 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :okay < 1171831846 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :so yeah... the idea I had for my own language... would eliminate that annoying colon, make all functions one-argument, remove classes entirely (prototype OO), and have some nifty ways to mess around with the evaluation of amessage < 1171832066 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i still don't know anything about smalltalk :) < 1171832089 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :...well I don't really know what else to explain. < 1171832135 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :"..." print outputs a string < 1171832136 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :it's a fairly straightforeward design... there's some objects... and some messages... and everything about the implementation can be changed in some way. < 1171832142 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :that much i know < 1171832142 0 :UpTheDownstair!n=htitan@wikipedia/Nazgjunk JOIN :#esoteric < 1171832148 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :do you know... why? < 1171832149 0 :nazgjunk!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1171832153 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :plus basi arithmetics < 1171832168 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :*basic < 1171832193 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i don't know syntax, i don't know the language < 1171832206 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :oh... well syntax is a snap. < 1171832224 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :there's basically thee kinds of expressions... and a few literals. < 1171832235 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i know, the text said < 1171832237 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :or you < 1171832288 0 :goban!unknown@unknown.invalid QUIT :Read error: 54 (Connection reset by peer) < 1171832291 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :messages... how i see it is that functions are rather sent messages to objects that contain instructions < 1171832294 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :or lambdas < 1171832295 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :functions < 1171832297 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :w/e < 1171832311 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :but it's just my guess < 1171832316 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :unary... which goes object message binary... which goes object message arg1 and keyword object message1: arg1 message2: arg2 message3: arg3 ... ... .. < 1171832319 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :it's basicallty a method call. < 1171832323 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i don't know what is referred to by a "message" < 1171832325 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :message-passing. < 1171832329 0 :tgwizard!unknown@unknown.invalid QUIT :Remote closed the connection < 1171832334 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :like in erlang? < 1171832345 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :it's like "Hello".split("e") < 1171832349 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :the "split" is the message. < 1171832355 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :to "Hello"... the object. < 1171832365 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :it's just a method call... pretty much. < 1171832367 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :yeah, so exactly how i guessed, but it wasn't clearly said there < 1171832371 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :so i didn't know < 1171832384 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :by "message" i assumed an erlang-type message < 1171832388 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :you know erlang? < 1171832390 0 :UpTheDownstair!unknown@unknown.invalid NICK :nazgjunk < 1171832391 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :nope. < 1171832471 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :it's functional.. but process id's that are somewhat like continuations can be stored and you can do prodess-id ! message < 1171832509 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :the in the function that the process-id points to there can be "on receive this and this message" < 1171832521 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :on receive... anyway < 1171832527 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :oh... kinda like coroutines? < 1171832532 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :kinda < 1171832538 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :you should read about erlang < 1171832545 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :I've heard erland is good for threads. < 1171832545 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :it's pretty neat < 1171832549 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1171832560 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :I'm assuming is uses a lot of coroutine-like stuff < 1171832560 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :runs 25 million threads smoothly i hear < 1171832582 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :yeah, functions can stop to wait for messages from other functions < 1171832592 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :and when you call a function you store it's process id < 1171832595 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :so you can send it data < 1171832605 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :that's the basic thing you do in erlang < 1171832606 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :so it's like... a mini-OS? < 1171832619 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :that sounds pretty cool actually... < 1171832627 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :ericssons language < 1171832650 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :(though the name actually comes from a guy named erlang, quite a coincidence) < 1171832652 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :you could easily fork real OS subprocesses and wrap them as erland functions. < 1171832668 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1171832709 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i like the idea there's only data in functions and no objects etc but you can send messages... i don't know why though :P < 1171832725 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :hmm.... ah... that's interesting... so it stores processes as memory... that's usually not done. < 1171832738 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i haven't even seen an implementation for erlang, i just read a book about it... i think < 1171832743 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i have no ideaw when < 1171832745 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :*-w < 1171832756 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :yeah, a running function is kinda like an object < 1171832763 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :and it dies after it's executed < 1171832770 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :ACTION was going to ID-ify the objects in his language... he might also steal a few ideas from erland while he's at it. :) < 1171832782 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :...erlang < 1171832787 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :but long executions don't matter since they are in a stabilized state when waiting for messages < 1171832823 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :actually... a function waiting for a message is kinda like an object with a state < 1171832825 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :Id-ified responses... sounds like a step-up in human-like communication... since communication is rarely linear. < 1171832832 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :...only a lot sexier if you ask me < 1171832838 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1171832843 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :ah... all the local variables are held like an object's state? < 1171832848 0 :goban!n=whyso@ip68-229-102-1.hr.hr.cox.net JOIN :#esoteric < 1171832851 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :yes < 1171832863 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :you have pattern-matching and vars < 1171832868 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :ints, lists, strings < 1171832874 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :and of course atoms < 1171832879 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :for pattern-matching < 1171832886 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :...I've actually had an idea like that before... frozen functions with object-like state. < 1171832894 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :has all the nice functional list convenience < 1171832905 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :yep, i just realized it now actually < 1171832915 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :and started to like erlang a lot more :) < 1171832939 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :hmmm... < 1171832963 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :because they can have vars, calling is an object constructor, vars are the stored state, receiving messages is waiting for function calls < 1171832975 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :kinda like < 1171832992 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :the main reason I've never used threading is because it's too much of a hassle... but processes with IDs and a state (which basically mimics OS processes... except you have way more access to the memory inside)... is kind of natural. < 1171833007 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :yeah.. I've noticed you can use coroutines to make objects.. < 1171833030 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :yeah, well, in java threads are easy, but erlang beats it < 1171833040 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :and with most langs threads are shitty < 1171833091 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :ACTION incorporates some of that into his smalltalk/lisp mix. < 1171833105 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i actually never realized what you saw in coroutines until i realized erlang has that, basically, and it's a very sweet concept < 1171833129 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :mix'm up < 1171833129 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :the coroutines I've seen though are far more limited than that though. < 1171833144 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :just single-input, single-output type stuff. < 1171833186 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :I guess with some hackish alterations of some low-level Python stuff you could change the local state... but it's definetely not meant to happen conviently. < 1171833242 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1171833249 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :erlang doesn't have return values < 1171833300 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :actually < 1171833302 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i'm lying < 1171833305 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :*wrong < 1171833336 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :hmm.. basically I stole Lisps idea of a universal syntax and symbols (kind of like pointers but in reverse)... and then I stole Smalltalks idea of everything-about-an-object-is-handled-by-itself... and from erland I'll take the idea of continued processes with changable state. :) < 1171833351 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :in erlang you can call functions in a different thread with one syntax and the function returns it's id right away, or you can call it "normally", and it then returns whatever it returns when it's ready < 1171833389 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :"universal syntax and symbols" what does this mean? < 1171833391 0 :jix!unknown@unknown.invalid QUIT :"Bitte waehlen Sie eine Beerdigungnachricht" < 1171833400 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i don't know lisp that well < 1171833403 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric ::D < 1171833405 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :maybe < 1171833412 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :well... Lisp just has one and only one syntax.... (func arg1 arg2 ...) < 1171833426 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :ah < 1171833427 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1171833433 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :that's it... with some minor exceptions. < 1171833439 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :yep < 1171833486 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :so... Lisp can directly access its variables as a data type... a symbol data type. < 1171833516 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :so... to assign a symbol to a value in Lisp... you do (set 'symbol value) < 1171833531 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1171833544 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :' being a special literal that keeps an expression from evaluating... and returns it as a symbol. < 1171833546 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :so yeah < 1171833580 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :if you have it so that every object understands the "becomes" message. < 1171833582 0 :ShadowHntr!unknown@unknown.invalid QUIT :"End of line." < 1171833606 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :you can change reference to objects... or you can change objects themselves. < 1171833610 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :in common lisp ´ is not used with defun, set and such specialties... or? < 1171833648 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i read this book from the seventies... < 1171833655 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :well... common lisp has setq... which is a macro that basically boils down to set. (it stands for "set quote"... because the ' is called the quote operation) < 1171833676 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :and defune is a macro too... < 1171833691 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1171833700 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :set and defun they were in the book < 1171833743 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :and let and something to make functions and vars in functions... < 1171833744 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :but in my language... there won't be macros... and thus no special way to make variable assignment. < 1171833752 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :and lambda separately < 1171833760 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :3 different ways to make functions < 1171833770 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :you just have to send a becomes message to a symbol object.. < 1171833786 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1171833790 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i see what you mean < 1171833878 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :`foo becomes bar would change the foo symbol so that it pointed to bar... but foo becomes bar (without the backquote) would change foo the object to bar... < 1171833892 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :so in the second one... -all- references to foo would be pointing to bar now. < 1171833902 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :it's like the reverse of pointers. :) < 1171833939 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :kinda < 1171833942 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :and instead of tiny little memory blocks... you have entire objects. < 1171834039 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :it'll probably work using an id system... each object would have a unique ID on an list represented the global memory of the program... it sounds very much like a high-level version of pointers. < 1171834111 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :yeah, somewhat < 1171834232 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :it's just the opposite of how C does it... in C the variables are implicitly references... while in this the variables evaluate to objects... and you have to "catch" them with a backquote to evaluate the reference itself. < 1171834264 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :well... no < 1171834270 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :catch? < 1171834283 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :actually... variable assignation copies the memory into the new block. < 1171834298 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :...er... I think? < 1171834306 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric ::P < 1171834686 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :well... the benefits are basically what you get with pointers... except less complicated (I think). < 1171834722 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :or maybe just less tedious... you don't have to type out 4 billion *'s ...just 1 ` whenever you want to alter a variable. < 1171834796 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :well... the syntactical inconvenience of c pointers can easily be circumvented in c++ < 1171834870 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :with ->? < 1171834931 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :the symbol design works really nice for prototype-oriented OO... familiar with it? < 1171835017 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :prolly < 1171835021 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :not the name though < 1171835028 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :sounds familiar < 1171835046 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :no, with references < 1171835130 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :basically... prototype OO is OO without classes. < 1171835147 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :you make new objects by spawning copies of previous objects and altering their contents. < 1171835147 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :okay < 1171835154 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :ah < 1171835156 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :like nopol < 1171835163 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric ::) < 1171835171 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :which is really all classes do... make copies of themselves... < 1171835181 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :now we just remove the distinction of class and object altogether. < 1171835194 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :nopol does that... but it's classes and functions are the same thing < 1171835202 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :so... it's a bit different < 1171835234 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :Self, Moo, and JavaScript are all prototpe. < 1171835257 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i don't know any of them:< < 1171835279 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :the copies objects all have a reference to their "parent".. and usually there's some normal OO concepts thrown in to make things convient. < 1171835288 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :like delegation... which is basically arbitrary inheritance. < 1171835316 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :but... I'm not going to use any sort of inheritance... because you don't need it. < 1171835332 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :yeah... modularity is for wimps < 1171835585 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :nah... you just copy everything over... you've still got modularity.. < 1171835614 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :if you have duckish typing < 1171835617 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :and you prolly do < 1171835630 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :and since you have the ability to change both symbols and objects... you can easily override a function shared by a wide number of objects. < 1171835671 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :oh definetely... I'd have trouble even conceiving of a language that can't duck type.... Python has spoiled me. < 1171835735 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :well, duck typing circumvents inheritance < 1171835740 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :not entirely < 1171835747 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :but the modularity part < 1171835769 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :because you can have similar interfaces with similar objects < 1171835785 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :with duck typing you jsut don't tell that to the compiler until at run-time < 1171835815 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :a bit slower if bad implementation, maybe a bit less clear for someone who reads the code < 1171835818 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :but it works < 1171835825 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :and makes a lot of things less verbose < 1171835858 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :heh... compiler? < 1171835894 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :yeah, badly rephrased < 1171835896 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i mean < 1171835908 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :ACTION usually follows a fairly straightforeward model for interpreting... scan for tokens... and then interpret the tokens to do shit. < 1171835917 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :you don't have to specify in the code which things do what < 1171835946 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :but you just hope they abide by the interface that is needed < 1171835957 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i don't know if you follow what i'm trying to say < 1171835969 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :The idea of "telling the compiler how to work" is literally completely alien to me... and doesn't even seem necessicary or that beneficial. < 1171836003 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :yeah, but it reduces run-time errors < 1171836017 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :because if you don't tell it it can't tell you you did an error < 1171836030 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :well... the entire idea behind OO is that the details of the implementation are hidden behind a name...if everybody assumes that the procedures behind the names all do what they're supposed to do... then everything works fine. < 1171836062 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :yes, but with non-duck typing you also know what kind of things do what kind of stuff < 1171836094 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :with duck-typing you use everything as you wish and sometimes it works, sometimes not, because it can't be checked at compile-time < 1171836099 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :(in most cases) < 1171836157 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :it's pretty useful in my experience... replacing the standard output stream with a class wrapper that implements the same methods as a file object often saves a lot of time. < 1171836178 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :it makes it easy to hack things. :) < 1171836185 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :make it do what you want. < 1171836196 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :yeah... that can be done with or without duck-typing < 1171836208 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :but without it you do it with inheritance < 1171836252 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :and then it's more "agreed" that it does what it's required to do < 1171836264 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :with duck-typing it's run-time checked < 1171836336 0 :anonfunc_!unknown@unknown.invalid QUIT : < 1171836489 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :oklopol, hmmm? < 1171836494 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :ACTION is confused now. :P < 1171836513 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :why would inheritance make a method work or not work? < 1171836551 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :if something is inherited from something else it has the method the parent has < 1171836567 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :so if a function need some methods a, b and c < 1171836571 0 :nazgjunk!unknown@unknown.invalid QUIT :"mrahaha" < 1171836571 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :it makes a class < 1171836577 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :and then that class is derived from < 1171836578 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :but < 1171836588 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :with duck-typing you don't need that < 1171836596 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :because you can send ANY object to it < 1171836612 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :doesn't have to be derived from the class that has the methods that function needs < 1171836628 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :and the function then fails if the object it got doesn't have the methods < 1171836635 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :and this is a runtime error < 1171836655 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :without ducking it would've been a compile time type error < 1171836698 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :in my first sentence method -> methods < 1171836713 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :second, need -> needs < 1171836790 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i think if you do the duck you oughtta have direct string manipulation for method names... which python incidentally does :P < 1171836918 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :well.. hmm... < 1171836925 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :what is causing this to occur? < 1171836930 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :the error-at-compule-time. < 1171836969 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :because if it didn't have the method the function uses, it wasn't derived from the class the function takes as argument < 1171836990 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :because a function can only use a method it's argument has < 1171837005 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :(casting can be done of course but considered bad in most cases) < 1171837256 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :oh yeah.... darn static typing < 1171837330 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :it does add a layer of security to a procedure... but usually one that isn't needed... < 1171837388 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :Actually... I think a nice way to do typing is by category. < 1171837424 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :well, that's interfaces for you < 1171837550 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :I've never liked excessive type-checking. < 1171837570 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :if something doesn't work... let it explode on its own... < 1171837594 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :yeah :D < 1171837764 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :in a purely OO language... the worst that could happen is the object doesn't implement the method. < 1171837791 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :actually no < 1171837821 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :in for example java the WORST that could happen is that someone who read the code would not understand the logic at some point < 1171837836 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :that's the oo of today < 1171837888 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :meh... Java is for corporate monkeys. < 1171838011 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :oh... another thing I like about the smalltalk-like syntax I'll be using. < 1171838030 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :there's absolutely no distinction between function calls or attribute reading. < 1171838050 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :because all attributes are messages... which are function-like-things. < 1171838051 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i don't know if it's like that with other langs, but from what i hear, it is towards that direction < 1171838062 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i mean < 1171838072 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :the corporate-monkey-ness < 1171838115 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :yeah... everybody's trying to make languages that are good for shelling out programs quickly and efficiently... < 1171838125 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :I mean... whatever happend to having fun whilst programming? < 1171838130 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1171838157 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i idle on this java chan... there was an hour long discussion about how to get sort() work with the swedish alphabet < 1171838196 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :fully automatic unicode support... that's another thing I'll put in this language. :) < 1171838203 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i said it's a 15 min job to make one yourself, which lead into a half an hour discussion about how much faster it is to use other's tools than to make oneäs own < 1171838208 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :one's < 1171838235 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :...if everyone followed that logic... no one would be making tools. < 1171838243 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :sometimes it's just -fun- to make shit. < 1171838259 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :you can look at it and say "I fucking made that" < 1171838301 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :yeah... i said something like that, they said you don't get money if you do stuff yourself < 1171838303 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric ::\ < 1171838317 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :ACTION is 15... totally doesn't get paid anyways. :P < 1171838341 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i thought you must be young with your constant ideas < 1171838356 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :but yeah... automatic unicode support... < 1171838365 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :I don't know why people don't do it to begin with. < 1171838382 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :c++ has it, java has it, python has it, what doesn't? < 1171838397 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :ASCII when you're using ASCII characters... and then when you add some unicode to the string... boom, it automatically changes encodings for you. < 1171838401 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :not Python. < 1171838421 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :oh < 1171838428 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :ah, yeah, indeed it doesn't < 1171838452 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :but unicode codepoints are kind of weird. < 1171838462 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :but I don't it's impossible to have automatic management of encodings. < 1171838484 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :oh.. and just one number type... < 1171838500 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :? < 1171838502 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :called... number. < 1171838522 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :it'll convert to long, short, floating-point whatever. < 1171838551 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :hmm < 1171838585 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :well... maybe an imaginary type... like Python has. < 1171838598 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :yes, exactly what i thought < 1171838607 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :actually < 1171838610 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :simply because it, mathematically, operates differently. < 1171838615 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :exactly what python has, right? < 1171838622 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :nope. < 1171838628 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :what is different? < 1171838634 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :Python still distinguishes between integer and floating point. < 1171838646 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :long and short are automatically converted... but they're still separate data types. < 1171838661 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :python has auto-bignum < 1171838672 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :you don't see the data-types really < 1171838680 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :well, rarely < 1171838681 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :floating point. < 1171838696 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :with true division being implemented though... it's getting close to that. < 1171838703 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :well < 1171838714 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :but... there's still distinguishments in the type hierarchy... which is what I was talking about removing. < 1171838731 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :the data would be represented internally in multiple ways... but abstractly it's just a "number". < 1171838732 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :you wanna get floating points perfect, you make a lazy system that NEVER calculates a function unless for output < 1171838745 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :and still maintains the actualy functional representation < 1171838768 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :and makes it nicer when it finds rules like + - x 1 1 = x etc < 1171838834 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :*actual < 1171838841 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :why the y?!? < 1171838846 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :maybe a rational data type... but that's mainly only useful for algebraic solver applications. < 1171838871 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i thought about making this math lang < 1171838890 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :since i could easily do better than matlab with basic mathematics < 1171838900 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :not the neural networks etc of course :P < 1171838912 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :I like how math can be implemented without using special syntax... < 1171838939 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :the only difference is that there are no precedence rules... which is fine... it's easier to remove "method calls go left to right" < 1171838951 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :remove = remember < 1171838988 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :what do you mean? < 1171839008 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :2 + 2 isn't special syntax in the language I'm thinking of. < 1171839052 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :what's special syntax? < 1171839070 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :well like... special rules < 1171839073 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :for mathematical operators. < 1171839076 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :aren't necessary. < 1171839087 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :like 5(4 + 5 ) < 1171839089 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :-... < 1171839092 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :like 5(4 + 5 * 2) < 1171839094 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :it just fits into the existing syntax < 1171839099 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :er... well that won't work. < 1171839108 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :which is 5 * (4 + (5 * 2)) < 1171839110 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :I mean... basic (non-implicit) rules. < 1171839118 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :hmm < 1171839119 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :? < 1171839138 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :5 x (4 + (5 x 2)) < 1171839152 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :x is better than * ? < 1171839158 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :the operators don't need special syntax... it's not exactly like math. < 1171839164 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :well... I've always liked it... < 1171839180 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :over *... but they can both be included and mean the same thing. < 1171839229 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :well, if you have vectors, you can have '*', '.' and 'x' be different multiplications :) < 1171839246 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :on vector objects. ;) < 1171839260 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :see... that's the thing... all the objects define what all the operators mean < 1171839276 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :yeah, operator overloading < 1171839283 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :not even that. < 1171839291 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :the operators are just... defined on the objects anyways. < 1171839294 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :there's nothing to overload. < 1171839300 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :mmmmmkay < 1171839300 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :. < 1171839312 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :you make a new datatype, it has everything already? < 1171839334 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :depends on where you copied from... remember there aren't really any "typeS" here... just objects. < 1171839379 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :hmm.. i still don't see where exactly you tell the computer what the multiplications mean... < 1171839386 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :in 5 * 5 * is the name of a method on 5 < 1171839389 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :unles you... tell it < 1171839393 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1171839395 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :*unless < 1171839411 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i'm pretty sure there's something wrong with my s < 1171839429 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :it'll be builtin code defining what multiplication does... but it can be overriden... < 1171839450 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :it doesn't matter -how- the method is defined... simply that it is associated with the right name. < 1171839486 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :mm kay < 1171839488 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :.. < 1171839517 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :if you wanted to... you could do something like < 1171839523 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :True becomes False < 1171839543 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :thus making all references to the True object now point to False instead. < 1171839564 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :yeah, you told that before < 1171839577 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :that's fun for esoteric purposes < 1171839583 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :eh... well... boleans are kind of singletonish anyways... so `True becomes False would have much of the same effect. < 1171839610 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :but you should never have ANYTHING have any side-effect upwards without declaring it clearly in an upper lever < 1171839613 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :except other symbols point to True would still be pointing to True. < 1171839636 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :hmmm? < 1171839659 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :nope... no restrictions. < 1171839660 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i have a thing called infinite nesting theory < 1171839662 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :but < 1171839671 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i'm not going to try and explain here < 1171839686 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :restricting possibilities just because someone might use them stupidly is a bad idea. < 1171839687 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :hmm < 1171839708 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :in most cases, yes < 1171839711 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :The Python developers do that a lot... much to my chagrin < 1171839726 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :make evyerthing child proof. < 1171839767 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :yeah... it kind of takes the point of wanting things high-level if you can do low-level fuck-ups :P < 1171839933 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :+ - x * ^ / mod = != base inc dec ! < 1171839941 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :that's exactly why c++ will become one of the slowest languages in the future, computers can do th simple mathematical algorithm reductions better than humans... actually, i realize this is basic and there's no need in explaining it :D < 1171839949 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :*the < 1171839964 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :inc and dec? :P < 1171839980 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :++ and -- are too Cish for my tastes < 1171839989 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :how about... up and down? < 1171840016 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :no, reserve that for your two-dimension pointer needs < 1171840039 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :these are just integer methods. < 1171840045 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :anything can redefine any of those. < 1171840056 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :yeah yeah, i wasn't serious. < 1171840065 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :base? < 1171840067 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :....what is a 2d pointer? < 1171840075 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :yeah... log wouldn't make any sense. < 1171840080 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :you don't wanna know what i meant < 1171840100 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :base is for what? < 1171840105 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :log < 1171840110 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :but why? < 1171840116 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :10 base 2 would be log 10 base 2 < 1171840132 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :because everything is inherently infix notation? < 1171840147 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :10 log 2 wouldn't make any sense < 1171840202 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :10 base 2 would be [1,0,1,0] if you ask me < 1171840204 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric ::) < 1171840212 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :K has that for example < 1171840214 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :yeah... < 1171840218 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :it's called base there < 1171840221 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :or __base < 1171840255 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :I want to use like... base 50 represented by sequences of base 5 < 1171840256 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :K has everything < 1171840273 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :? < 1171840359 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :eh... difference bases will simply different objects. < 1171840387 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :try once more please :) < 1171840399 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :different bases will simply be represented by different objects. < 1171840423 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :mmm okay, what did "base 50 represented by sequences of base 5" < 1171840425 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :mean? < 1171840433 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :not sure. < 1171840439 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric ::D < 1171840446 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :it's possible to do freaky mixes of bases though < 1171840469 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i hope you don't see a connection between the numbers 50 and 5 < 1171840489 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :5 and 55? < 1171840497 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :ACTION wants to adhere to the law of fives. < 1171840502 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :not that much either < 1171840520 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :11 only has special properties in 10-base < 1171840523 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :and i hate it < 1171840530 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :that's the reason for all the hoping < 1171840537 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :hopedy-pop < 1171840538 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i should sleep < 1171840581 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :oh oh < 1171840587 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :balanced 5-base < 1171840599 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :represented by -2,-1,0,1,2 < 1171840602 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :beautiful no? < 1171840610 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :sure :P < 1171840830 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :phinary? < 1171840845 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :http://en.wikipedia.org/wiki/Golden_ratio_base < 1171840910 0 :oerjan!n=oerjan@hagbart.nvg.ntnu.no JOIN :#esoteric < 1171840965 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :oh oh oh < 1171840967 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :unary base < 1171840974 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :11111 11 < 1171840976 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :would be seven < 1171840992 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1171840997 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :hm... or it could be a list [5,2] < 1171841019 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :oerjan i got the thue working :P < 1171841027 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :great :) < 1171841029 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :ACTION likes the idea of a base based off of the golden ratio... but not as confusing as using the actual irrational number. < 1171841033 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :maybe 5 and 3. < 1171841057 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :SevenInchBread: Have you heard of the Fibonacci base? < 1171841077 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :ACTION just now landed on the Wikipedai article < 1171841094 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :link < 1171841142 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :I think he means http://en.wikipedia.org/wiki/Fibonacci_coding < 1171841153 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1171841243 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :hmm... maybe a mixed radix notation that alternates between 3-base and 5-base < 1171841250 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :both balances < 1171841269 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :-2,-1,-0,1,2 and -1,0,1 < 1171841317 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :alternating means essentially using 15-base, I think < 1171841353 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :unless you use a weird alternating scheme - like one based on Fibonacci numbers :) < 1171841380 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :mixed-radix < 1171841532 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :http://en.wikipedia.org/wiki/Zeckendorf%27s_theorem < 1171841537 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :rofl < 1171841557 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :i understand that. but if the mix is strictly alternating, it will be just base 15. < 1171841558 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :ai auto-proved that in a second when i heard fibonacci base < 1171841571 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :*I < 1171841573 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :ai :P < 1171841592 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :hmmm < 1171841609 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :I had this urge to reedit that article to say "slightly" before the "more difficult" < 1171841612 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :heh.... base 0.1 is pretty cool... it's base-10 backwards. < 1171841615 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :well, for any alternation n1, n2, ... nN it will essentially be || nX base < 1171841638 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :where || is sigma for multiplication... < 1171841643 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :where sigma is sum < 1171841649 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i'm not good with terms :) < 1171841653 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :you mean Pi < 1171841659 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :maybe. < 1171841668 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :no, certainly :) < 1171841673 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :multiplication of a list... < 1171841692 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :sum has the E thing, multiplication a || thin with a lin on top < 1171841694 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :or smth < 1171841712 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :list.. math doesn't call them lists < 1171841723 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :like, the minutes/seconds notation is essentially itself mixing base 6 and 10 to make 60... < 1171841733 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :sequence. < 1171841751 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :really? < 1171841752 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric ::o < 1171841752 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :right... but you right it differently. < 1171841765 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :huh? < 1171841767 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :it's essentially base 15... but you get to write it in a confusing manner. < 1171841770 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric ::) < 1171841771 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i don't see 6 anywhere :\ < 1171841778 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :in the clock < 1171841782 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :they are capital greek Sigma and Pi. < 1171841790 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :prolly < 1171841802 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :looks like capital pi, didn't know it was though < 1171841811 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :and i don't have the letter on this keyboard < 1171841813 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric ::) < 1171841813 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :in 3:10:15, the digits after the colons can only be 0-5 < 1171841828 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :ah < 1171841830 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :okay < 1171841833 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :indeed < 1171841864 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i just think it's 60-base but there is no way to print 60-base so it's represented as 10-base < 1171841897 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :that may be true but I think the ancient babylonians wrote their base 60 in two parts as well < 1171841911 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :oh < 1171841911 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :otherwise, just too many digits < 1171841916 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :hmm < 1171841919 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :maybe < 1171841922 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :i'm not completely sure of it. < 1171841922 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :why 60 then? < 1171841924 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric ::\ < 1171841928 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :fractions maybe < 1171841954 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :they invented fractions actually i think... i think i read about this exact thing somewhere < 1171841966 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :the length of the year is close to 360 days. < 1171841966 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :a million years ago < 1171841993 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :yeah... 6 * 60, plus 10 for the history of finger calculation < 1171841997 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :actually fractions are frequently base 60 because the babylonians invented them, and had a base 60 system < 1171842019 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :60 factorizes nicely < 1171842019 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :i vaguely recall it merging from a base 6 and base 10 system. < 1171842029 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :yeah, would make sence < 1171842069 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :it was base 60... but the didn;t represent it with 60 individual symbols < 1171842227 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :heh, the mixed base article says the Mayans used 20 except for second place, where they used 18 < 1171842236 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric ::D < 1171842239 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :because 18*20 = 360 < 1171842256 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i read martians first < 1171842266 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :hmm < 1171842274 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :20,18,20,20... < 1171842275 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :? < 1171842286 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :the other way around of course < 1171842287 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :why, they would use base 14 of course, having that many digits... < 1171842298 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric ::D < 1171842352 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :I bet base-10 would have made no sense < 1171842396 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i wish my parent would've taught me hex only :\ < 1171842404 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :btw: (S)igma for (S)um, (P)i for (P)roduct. < 1171842413 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :oh < 1171842421 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :indeed < 1171842529 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :hmmm... base-11 is cool. < 1171842541 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :why? < 1171842552 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :It's like base-10... except there's a tiny offset as you go up. < 1171842560 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :and that part i said about using a weird mixing, i meant using what is called Fibonacci substitution. < 1171842563 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :...it's easier to think in. :P < 1171842596 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :fibonacci substitution? < 1171842642 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :0 -> 01, 1 -> 0, repeat indefinitely to form infinite sequences. < 1171842693 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :Then use such a sequence to decide which base to use at which position. < 1171842825 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :In Haskell: fibseq = '0' : concatMap s fibseq; s '0' = "01"; s '1' = "0" < 1171842876 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :eh, wait < 1171842930 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :Make that fibseq = '0' : tail (concatMap s fibseq) where s '0' = "01"; s '1' = "0" < 1171843063 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :OH < 1171843070 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :base-7... with musical notes < 1171843080 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :nah < 1171843088 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :7 makes no sence < 1171843099 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :The first 50 digits: 01001010010010100101001001010010010100101001001010 < 1171843145 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :with half-notes you need base 12, plus notation for octave