< 1271894472 0 :coppro!unknown@unknown.invalid QUIT :Remote host closed the connection < 1271894516 0 :Gracenotes!unknown@unknown.invalid QUIT :Quit: Leaving < 1271895009 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :actually [A] seems useful if you want to set an unknown S to empty - [r] would do that i think < 1271895110 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :and i cannot see any way to achieve that without [ ] < 1271895152 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i believe all of those are correct < 1271895162 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :p was actually added after writing the program < 1271895174 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :or at least i implemented it after trying the program < 1271895182 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :mhm < 1271895235 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :and yes [] can basically just make S empty, unless it's the last loop < 1271895262 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :plus it can do io and other things not relevant to computational class < 1271895284 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :u(A{B}r seems like the way to do if-then < 1271895293 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i thought i could change the semantics of [] to something like {} and {E} ending a loop < 1271895330 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :you're not specifying how E works with the rest of the commands, anyway < 1271895332 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :but changes can be made once someone makes some sense out of what currently exists < 1271895338 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :yeah i'm not < 1271895345 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :it's just useful for err < 1271895408 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i mean it's just another set, so -(!-<>{B} will do B for exactly the set {{}} < 1271895425 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :not sure that's very useful < 1271895450 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :you can't currently remove it, so it's a bit special that way < 1271895466 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :oh, i assumed you could remove it explicitly... < 1271895467 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :but i could just add -E, -!E etc < 1271895475 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :well there isn't a command for that is there < 1271895490 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :hm i guess not, if E is not included in the <<<>>> syntax < 1271895502 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :it's not. i guess it should be < 1271895512 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :in fact i should definitely add it < 1271895531 0 :uorygl!unknown@unknown.invalid QUIT :Ping timeout: 252 seconds < 1271895567 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :otoh it's still interesting to see what can be achieved without E < 1271895623 0 :uorygl!~Warrigal@rrcs-70-63-156-144.midsouth.biz.rr.com JOIN :#esoteric < 1271895624 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :the reason i didn't start fixing the language was i could only see it's nontrivial to show it's TC, but couldn't see any reason why it couldn't be < 1271895675 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :if that needs fixing < 1271895781 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :{^n }^n might be better numbers than ordinals btw < 1271895794 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i haven't actually given that any thought either < 1271895818 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :well i suppose ordinals are nice because you can map over a number to do something that many times... sort of < 1271895928 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :there needs to be a way to do some other datastructures though < 1271895963 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :sure, but i have a hunch it'd be easier to encode them in integers... < 1271895983 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :i'm not sure you can actually do arithmetic, however < 1271895996 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :that's very possible < 1271896013 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :at least without a surrounding [ ] < 1271896026 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i've been trying to find the parity of a number < 1271896037 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :but that seems impossible < 1271896047 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :basically without a [ ] there is no way to inspect arbitrarily deep within a set, i think < 1271896100 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :well ({} goes one deep, so you'll just get finitely deep if you use those nested < 1271896101 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :you can use [r] to "cut it off" at any level, however < 1271896173 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i'm not sure i see what you mean < 1271896183 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :or maybe i do < 1271896191 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :replacing elements at some depth with empty sets < 1271896195 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1271896259 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :anyway [r-Er] would check parity if you had {} and {E} end a loop < 1271896273 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ah < 1271896295 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :um no < 1271896305 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :oh it wouldn't? < 1271896307 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :err hmm < 1271896313 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :r never errors < 1271896319 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :oh err lol right < 1271896335 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :but assuming ordinals, we could do... < 1271896339 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :[r-!<>r] perhaps? < 1271896352 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :let's see < 1271896391 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :so umm < 1271896403 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :the r's will get the number to 0 anyways < 1271896412 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :the error set doesn't matter for that < 1271896420 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :hm < 1271896422 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :so you get it iff the first r gets you to 0 < 1271896431 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :try [rr-!<>] < 1271896447 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :that's the same because {E}r = {E} < 1271896456 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :if you get my notation < 1271896469 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :that's also not specified :P < 1271896483 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :well i meant the last doesn't need specification < 1271896496 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :yes true < 1271896511 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :okay so yeah cool that'd work < 1271896547 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :but sort of a hack, i could just add a set called blerror set to get mod 3... < 1271896574 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i mean < 1271896587 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :consider some (A{B} where [] occurs in B < 1271896644 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :hm that's the same as mapping all elements matching A to a constant, essentially < 1271896656 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :then the code after [] will have one of two sets, so the (A{B} can result in at most 2 different sets that replace the sets B is run on < 1271896673 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :er right with E stuff < 1271896674 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :yeah but two constants if you add the E thing < 1271896682 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i'm just wondering if that changes anything < 1271896721 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :you basically filter with A, plus you can do something extra with some extra condition on the elems of A < 1271896724 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :you get one bit of information from a [ ] < 1271896735 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :yes < 1271896782 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :one thing that'd probably change things a lot is the following construct which i was thinking (once i'm convinced this thing doesn't have potential) < 1271896790 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :err and it goes < 1271896835 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :/A|B\ is like (A{B} but each B is run on the context S, in any random order < 1271896886 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :um you need the information of what element it is run for somehow... < 1271896895 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :*about < 1271896897 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :oh umm < 1271896909 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :actually i think i dropped that idea when i realized that < 1271896912 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :but forgot i dropped it < 1271896915 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric ::P < 1271896916 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ah < 1271896944 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :but anyway, something like that would be nice, because right now you just of a broken loop and map + filters. < 1271896954 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :then you'd have a reduce < 1271897002 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :hm what about just having a general loop with test < 1271897013 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :so /A|B\ is like while (A) B < 1271897014 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :oh umm < 1271897024 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :that's not a bad idea... < 1271897034 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :let's tell everyone it was mine < 1271897042 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :except B doesn't see the result of A, obviously < 1271897044 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric ::D < 1271897054 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :hmm < 1271897092 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :S has some state, then A is run, and iff it results in nonempty, B is run on S... is there a problem with B not seeing the result? < 1271897095 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :or rather, the effect of A is always reverted apart from testing < 1271897136 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :no, that's what i mean, but B is run on the original S, not the one after A < 1271897141 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i was thinking A runs with S, then if empty, S is returned, otherwise B is run on S, S is updated, and we repeat < 1271897144 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1271897153 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :right < 1271897182 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :so now you could return any amt of info < 1271897184 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric : < 1271897203 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric : < 1271897300 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :actually ([] could replace [] if there isn't a problem with that thing < 1271897325 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :you call this ([] ? < 1271897332 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i could, then < 1271897340 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :i think empty A would be equivalent to [] < 1271897353 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :yes, so also literally ([A] could replace [A] < 1271897398 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :and maybe []) for do while ;P < 1271897414 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :except that syntax is ambiguous, because (..[]..{...} is already legal < 1271897434 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :well it's not ambiguous if you drop [] altogether < 1271897440 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :(or hard to parse) < 1271897447 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :true < 1271897501 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :so anyway let's see if parity is a piece of cake with that thing < 1271897502 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :([] and []) still seems ambiguous together < 1271897549 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :(r[r]), isn't it? < 1271897555 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :er, (r[r] < 1271897575 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :umm < 1271897576 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :er < 1271897583 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :no not with those semantics < 1271897586 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :(r[rr] < 1271897588 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :because A's result is just ignored < 1271897631 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :or possibly (rr[rr], if there is a difference < 1271897631 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :so while(n>=2){n-=2} < 1271897643 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ACTION reads up on Toi on the wiki < 1271897649 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :looks correct to me < 1271897651 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :for some reason I find it easier to follow there than IRC < 1271897666 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :well the article is exceptionally well written < 1271897684 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :yes, I like it when esolang articles do that < 1271897691 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and try to aspire to the same quality with mine < 1271897695 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :one is while(n>=2) the other is while(n>=3) < 1271897704 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i was actually joking, but glad if you like it :P < 1271897709 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :or is that while(n>=1) < 1271897724 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i just copypasted a page of keymaker's and changed everything to toi stuff :P < 1271897735 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: who knows... < 1271897739 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :okay err < 1271897776 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :the loop ends if A gives you an empty set, so rr ends if n is of depth less than 3 < 1271897790 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :because r decrements depth < 1271897798 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :by exactly one < 1271897800 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :3 -> r -> 2 -> r -> 1 -> 0 < 1271897808 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :argh < 1271897811 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :3 -> r -> 2 -> r -> 1 -> r -> 0 < 1271897843 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :(r[rr] will not halt on 2, while (rr[rr] will < 1271897859 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :'will not halt on 2'? < 1271897862 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :so (rr[rr] could give 2,1 or 0 as result < 1271897867 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :oih < 1271897868 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :oh < 1271897890 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :so (r[rr] seems "correct" < 1271897901 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :(rr[rr] ~ while(depth>2){depth-=2} < 1271897910 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :err < 1271897919 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :so yeah < 1271897924 0 :ais523!unknown@unknown.invalid QUIT :Remote host closed the connection < 1271897935 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :0->0, and otherwise parity with 1/2 as output < 1271897954 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :hm, since there is only one set <<>> of depth 1, it will always return an ordinal even for non-ordinal input < 1271897969 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :a nice way to think about it is the loop ends iff S's depth is 0, and r will always decrement depth by exactly one < 1271897984 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :this will not hold for higher moduli < 1271897989 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :true < 1271898028 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :okay so how about addition < 1271898032 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric ::P < 1271898036 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :argh < 1271898047 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :we need a tuple... < 1271898056 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :yes < 1271898096 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :there are probably standard ways to store this stuff in sets < 1271898108 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :'probably' < 1271898119 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :yes, (x,y) = {x,{x,y}} but i don't think that is useable here < 1271898130 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :um < 1271898145 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :or (x,y) = {{x},{x,y}} < 1271898147 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :yes, i just realized there are relatively well-known formalisms based on sets. < 1271898157 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :i think one of them requires foundation, the other not < 1271898184 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :foundation = set has finite depth or something? < 1271898196 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :err < 1271898218 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :but neither can be used for our purposes, because we cannot detect which is {x} and which is {x,y} easily < 1271898227 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ordinal depth < 1271898240 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :no infinitely descending chains of elements < 1271898257 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :so... set has finite depth? < 1271898261 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :oh < 1271898261 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :of course we do have finite depth < 1271898278 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :um < 1271898287 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :that was not an answer to your question < 1271898291 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :yeah those aren't the same thing < 1271898293 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i know < 1271898298 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :but a comment on toi specifically < 1271898302 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :yes < 1271898347 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :but what about {^n }^n, then we could do {<>^n, {<>^m, <>^(m+1)}} and use the size of the sets to see which one is m < 1271898360 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :<>^n = {^n }^n < 1271898373 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :we cannot detect the size of a set < 1271898375 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :*do something like < 1271898380 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :well... no < 1271898392 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :but i mean err < 1271898401 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :in A, we can check if <> is in S, i think < 1271898403 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :at least not directly enough, we might be able to _after_ we solve this problem < 1271898417 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :so we just need to decrement the set that has two elems, and increment the other < 1271898430 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :this would be done with foreach < 1271898439 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :OR NOT < 1271898449 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :i was hoping for a pair construction that could contain more than just numbers < 1271898456 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :so it could be repeated < 1271898478 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :that would be nice, sure. < 1271898517 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :my idea is something like (x,y) = {{a,{x}}, {b,{x}}} where a and b are sets chosen specifically so we _can_ test for them < 1271898527 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :er < 1271898545 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :{{a,{x}}, {b,{y}}} < 1271898551 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :before i go along, can we solve the problem of checking if <> is in S for fun < 1271898565 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i mean i don't see how to < 1271898574 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :except we may need to put more {} around x and y to distinguish them from a and b easily < 1271898580 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ok < 1271898596 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :-!<> gives us the error set iff it's there, but currently E has no special properties that actually make that helpful < 1271898610 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :yeah so try without E < 1271898624 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :first step: turn every element _other_ than <> into <<>> < 1271898632 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :i think we can do that < 1271898667 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :([([r]<>] < 1271898679 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :for every element: change to <> < 1271898681 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :? < 1271898691 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :um you want { not [ somewhere there < 1271898700 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :oh whoops < 1271898706 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :({([r]<>} < 1271898717 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i love the unnested parens <3 < 1271898760 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :um i think you miss one [ < 1271898761 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :or umm am i confusing levels of depth there < 1271898774 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :also <> could be u instead < 1271898784 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :but i think both work < 1271898811 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :er wait < 1271898819 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :scratch that < 1271898831 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :if you run ([r] for some set, it will be emptied < 1271898838 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ok i now official hate the unnested parend ;D < 1271898842 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :*ly < 1271898845 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :*parens < 1271898855 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :so ({ ([r] } gives you <<>> for all except <> < 1271898861 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :because it empties every element < 1271898863 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :of your set < 1271898878 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :hate is such a strong word < 1271898881 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :right < 1271898897 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :okay so now it should be trivial < 1271898901 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :we just remove <<>> first < 1271898903 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :-<<>> < 1271898908 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :and then we check for <> < 1271898913 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :with say -!<> < 1271898925 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :no, we don't want to use E :( < 1271898945 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :well that's what it's meant for, so ! makes sense < 1271898948 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :but hmm < 1271898962 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i guess < 1271898963 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :there could be < 1271898965 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :<> < 1271898969 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :and -<> < 1271898972 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :and TOGGLE <> < 1271898977 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :that would serve the same purpose < 1271898979 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :maybe < 1271898990 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :i don't think we need that < 1271898996 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :...which makes me realize we don't need to do *anything* < 1271899008 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :whether <> is there or not already makes A either say yes or no < 1271899032 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :so ({([r]}-<<>> should check for <> < 1271899035 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :i think you did miss one level of depth above, btw < 1271899073 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :it empties if <> is not in S, so we'd need to converse < 1271899075 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i did? < 1271899082 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :in ({([r]}? < 1271899095 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :we are trying to check whether S _contains_ <>, not whether it _is_ <> < 1271899102 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :sure < 1271899123 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :({([r]} maps ([r] over each element of S, so it turns every element of S to <> < 1271899123 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :that one changes every element of S to <> < 1271899135 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :which means if S is empty, then nothing happens, otherwise we get <<>> < 1271899136 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :oh < 1271899156 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :so what want to do is to apply that to every element of S < 1271899158 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :*we < 1271899183 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :({({([r]}} < 1271899190 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :hehe < 1271899215 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :so ({({([r]}}-<<>> < 1271899219 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :yep < 1271899228 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :but... < 1271899231 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :and now we are left with either <> or <<>> as S itself < 1271899234 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :that's the negation of what we need < 1271899268 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i mean i could add -([] tho, would fit the pattern < 1271899283 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :it shouldn't be hard to do a not though < 1271899311 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :okay so {<>} => {}, {} => {<>} < 1271899353 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :u({([r]}r < 1271899366 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :er wait < 1271899408 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :that's S => {S} => {<>} => {}, i think < 1271899429 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :u(-{([r]}r but not quite either < 1271899458 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :hm < 1271899461 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :(-{ is -({ ? < 1271899470 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :u(-{([r]u}rr maybe? < 1271899480 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :er right < 1271899487 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :u-({([r]u}rr < 1271899567 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :er < 1271899572 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :u-({([r]u}rr is... <> => <<>> => <<>> => <> => <> i think < 1271899587 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :u-({([r]uu}rr < 1271899590 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :-({} is for each nonempty < 1271899605 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :no, for each empty < 1271899609 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :argh yes < 1271899640 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :um wait < 1271899648 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :the [r] is redundant < 1271899648 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :<>, <<>>, <<<<>>>>, <<>> < 1271899652 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :yes < 1271899658 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :for each empty, and then you empty < 1271899662 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :*([r] < 1271899669 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :<<>>, <<<>>>, <> < 1271899674 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :nice < 1271899687 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :does this work now? :D < 1271899692 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :yes < 1271899694 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i think so < 1271899698 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :u-({uu}rr < 1271899730 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :u-({uu}rr... inc depth, then if depth is exactly 2, inc depth by 2, dec depth by 2 < 1271899747 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :so 1, 2, 4, 2 < 1271899748 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :*exactly 1 < 1271899749 0 :augur!~augur@216-164-33-76.c3-0.slvr-ubr1.lnh-slvr.md.cable.rcn.com JOIN :#esoteric < 1271899757 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :2, 3, 1 < 1271899773 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :right i meant <> having depth 1 < 1271899789 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :0 is the usual i think < 1271899795 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :let's go with that < 1271899798 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :means ordinal has its own depth < 1271899803 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :right < 1271899833 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :so okay maybe back to the actual problem? < 1271899858 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :well if we append that not to what we had, we can test for element <> < 1271899859 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :or i'll collect the algo first < 1271899877 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :({({([r]}} -<<>> u-({uu}rr < 1271899907 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :checks if <> is in S < 1271899915 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :although i have a hunch we might combine it more somehow < 1271899949 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :probably < 1271900046 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :so about this {{a,{x}}, {b,{y}}} you mentioned < 1271900059 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :({([r]} is the equivalent of >0 in C it seems < 1271900068 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :umm < 1271900088 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :(as an anything -> 0,1 function) < 1271900112 0 :Tritonio_GR!~Tritonio@193.92.236.91.dsl.dyn.forthnet.gr JOIN :#esoteric < 1271900124 0 :oklofok!~oklopol@a91-153-122-35.elisa-laajakaista.fi JOIN :#esoteric < 1271900152 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :02:33 oerjan> ({([r]} is the equivalent of >0 in C it seems < 1271900152 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :02:34 oklopol> umm < 1271900152 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :02:34 oerjan> (as an anything -> 0,1 function) < 1271900159 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :damn < 1271900166 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :you missed my yes before you explained it < 1271900176 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :what yes < 1271900180 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :i said < 1271900180 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :umm < 1271900181 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :ys < 1271900184 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :*yes < 1271900187 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :heh < 1271900215 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :but yeah anyway are you sure you need to optimize that thing before we have a use for it? < 1271900240 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :er i'm not optimizing, just pointing out what that subroutine is < 1271900246 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :rrrright okay < 1271900285 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :i meant " although i have a hunch we might combine it more somehow", see it's starting to look like there's something to this thing, so tuples would be cooool. < 1271900348 0 :oklopol!unknown@unknown.invalid QUIT :Ping timeout: 258 seconds < 1271900355 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :let's say we make a = <>, b = <<>>, and add an extra {} around x and y so they are clearly of greater depth than either < 1271900380 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :then i think we should have a fighting chance of extracting x and y from it < 1271900455 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :so let's see, first of all is the idea {{<>, {x}},{<<>>, {y}}} and then ( end if x is zero [ decrement x, increment y ] < 1271900475 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :an _extra_ {} to x and y < 1271900484 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :so < 1271900499 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :{{<>, {{x}}}, {<<>>, {{y}}}} < 1271900508 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1271900526 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :okay actually this doesn't look all that hard < 1271900536 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :but let's see if the details are hard... < 1271900579 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :or wait < 1271900588 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :to decrement x, ( "check if contains <>" { rr and then you have x here } < 1271900605 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :{{<>, {{x}}}, {{y}}} might be enough < 1271900633 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :we don't need that <<>>, we can just reverse the test < 1271900649 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :erm < 1271900656 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :{{<>, {x}}, {{y}}} might be enough < 1271900671 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :(without <<>> that extra depth is one more than we need) < 1271900678 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :so to decrement x, how about ( "contains <>" { rr <> u } < 1271900702 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :sounds reasonable < 1271900739 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :so only {<>, {{x}}} triggers it and then it goes => {{x}} => {x} => {<>, x} => {{<>, x}} < 1271900740 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :so almost' < 1271900759 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :err < 1271900818 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :{<>, {{x}}} => r => {{x}} => <> => {<>, {x}} < 1271900832 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :where every second is an instruction < 1271900840 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1271900846 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :so to decrement x, ( "contains <>" { r <> } < 1271900878 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :inc y = ( "ain't contains <>" { u }?? < 1271900881 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :can it be that easy < 1271900893 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :um < 1271900913 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :only if we use {{{{{...}}}} for numbers < 1271900920 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :oh right < 1271900924 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :but then yes < 1271900939 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :otherwise ua is succ, but you need to rr out the y first < 1271900949 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1271900978 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :anyway we are optimizing here using ur = nop < 1271900995 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :let's do an _arbitrary_ A on each < 1271901009 0 :augur!unknown@unknown.invalid QUIT :Ping timeout: 252 seconds < 1271901022 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :ah < 1271901053 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :for x, "contains <>" { rrr A uu <> } < 1271901074 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :the whole thing for this special case would be ( "remove sets not containing <>" "get x out" "check length" [ ( "contains <>" { r <> } ( "ain't contains <>" { u } ] < 1271901077 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :? < 1271901095 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :erm what < 1271901111 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :well i just tried to get the addition algo out < 1271901135 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :the condition removes y, then gets x out of its tuple, and checks its length < 1271901144 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :all of which i believe we can do < 1271901177 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :what is that? < 1271901188 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :*out of its set < 1271901193 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :well it's sort of a tuple < 1271901201 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :you mean for calculating (x,y) -> x+y ? < 1271901204 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :yes < 1271901224 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :then we'd have the result in y < 1271901232 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :nooga: " = say -( "contains <>" {([r]} -<<>> < 1271901413 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :if it doesn't contain <>, then we make all its elements <> < 1271901414 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :err < 1271901435 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :not perfect but anyway it's clearly possible, i'm currently convinced anything trivial can be done < 1271901468 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :maybe if you add -<> it works < 1271901475 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :food -> < 1271901535 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :i fear ([] is not a one line parser change because of ({}... :< < 1271901565 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :maybe )[]! < 1271901568 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric ::D < 1271901587 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :(A {B} C) [D] < 1271901609 0 :Asztal!unknown@unknown.invalid QUIT :Ping timeout: 264 seconds < 1271901619 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :i actually originally considered -- behold -- <{} for for each :D < 1271901761 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :( "contains <>" { rrr A uu <> } runs X on {x} to get {y}, then uu => {{{y}}} => <> => {<>, {{y}}} < 1271901779 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :my other computer just bluescreened < 1271901786 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :i should probably consider doing some backups soon < 1271901843 0 :olsner!unknown@unknown.invalid QUIT :Ping timeout: 258 seconds < 1271902265 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :i am thinking this is probably TC now, even without the ([] extension < 1271902281 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :(we didn't actually use it for manipulating the pairs afaict < 1271902287 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :) < 1271902332 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :well it was used for the addition < 1271902339 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :without what extension? < 1271902355 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :(A[B] rather than just [B] < 1271902399 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :but we don't need addition for say a minsky machine, dec/inc is sufficient < 1271902409 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :and a minsky machine is just one large loop < 1271902445 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :so what's the rules exactly < 1271902476 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :finite amt of integers, and you have a finite amount of repeated rules like dec this inc this inc this if this is zero < 1271902520 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :it's a transition table of states like for a TM, technically < 1271902540 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :each transition a rule like you say < 1271902555 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :hmm alright < 1271902561 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :and two integers are enough, plus the state < 1271902577 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :the loop might be nice anyway < 1271902603 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :http://esoteric.voxelperfect.net/wiki/Minsky_machine < 1271902626 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :yeah if we want to do anything "practical" < 1271902641 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :and a loop would probably allow a more direct compilation of brainfuck into it < 1271902675 0 :olsner!~salparot@c83-252-161-133.bredband.comhem.se JOIN :#esoteric < 1271902678 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :yes < 1271902681 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :that'd be sweet < 1271902710 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :well ignoring IO as at present < 1271902729 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :i thought i'd add the optimization to the interp that every set ever used is actually cached, this will make ordinals usable < 1271902759 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :like you just have any given set in one place < 1271902765 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ah < 1271902772 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :hash consing < 1271902850 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :i... think so < 1271902892 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :anyway for IO do you have better ideas? i don't really like p < 1271902956 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :bf-complete IO more or less requires byte representations < 1271902987 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :for binary IO < 1271903094 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :for hello world, you'd need 64 which requires a million universes to represent as an ordinal < 1271903119 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :errr 64? < 1271903153 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :anyway < 1271903162 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :O_o < 1271903210 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :hm without sharing you mean... < 1271903210 0 :augur!~augur@c-68-54-80-152.hsd1.md.comcast.net JOIN :#esoteric < 1271903287 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :yes < 1271903306 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :redheads or brunettes < 1271903396 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :!haskell let sizes = scanl (+) 2 sizes in take 10 sizes < 1271903400 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :he < 1271903409 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :? < 1271903424 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :now what < 1271903425 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :[2,4,8,16,32,64,128,256,512,1024] < 1271903429 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :i was looking for a good optical raytracer that wouldn't cost $$$$$$$$$$$$$$$$$$$$$ < 1271903435 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ah just powers of 2 < 1271903448 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :and i realised that my only option is to write one < 1271903458 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :nooga: i could whip you one up in toi < 1271903473 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :toi? < 1271903487 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :oklofok: 2^65 isn't _that_ big ;D < 1271903522 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :2^65! < 1271903525 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :*? < 1271903530 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :i thought it'd be more like factorial < 1271903533 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :hm well H is 64+8 so 73 < 1271903549 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :nah it seems it's powers of 2 < 1271903560 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :huh. < 1271903561 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :<> <<>> <<><<>>> etc. < 1271903571 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :what's toi? < 1271903579 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :nooga: the language < 1271903590 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :which? < 1271903601 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :the one called toi! < 1271903605 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :All of them. < 1271903636 0 :olsner!unknown@unknown.invalid QUIT :Ping timeout: 276 seconds < 1271903655 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :nooga: oklofok is just joking, or possibly insane < 1271903670 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :yea, i've noticed :D < 1271903674 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :(given what i've seen of toi so far) < 1271903689 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :but i'm just curious about that toi < 1271903742 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :http://esoteric.voxelperfect.net/wiki/Toi < 1271903767 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :except the [A] command seems destined to be replaced with a more flexible (A[B] command < 1271903797 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :basically it's a language with finite sets < 1271903875 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :lol < 1271903939 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :we suspect it is turing complete < 1271904205 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :(we can encode a pair of sets as <<<>><>>, giving basic data structures to work with) < 1271904269 0 :Mathnerd314!unknown@unknown.invalid PRIVMSG #esoteric :just encode some other turing-complete language in it < 1271904300 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :we actually thought of that already < 1271904488 0 :olsner!~salparot@c83-252-161-133.bredband.comhem.se JOIN :#esoteric < 1271904535 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :okay so < 1271904571 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: ([] and -([] or just ([]? < 1271904586 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :if we don't have -([] then -({} feels impure < 1271904599 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :hmm < 1271904601 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :-([] is probably convenient < 1271904654 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :and it fits with the rest < 1271904673 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :i'll add it, it's convenient and it's basically impossible it'd be TC with it and not TC without it. < 1271904685 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :yes < 1271904700 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :given that we already _know_ how to do a not, indeed < 1271904701 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :the interpreter change will have to wait till weekend because of my exam < 1271904707 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :well yes < 1271904813 0 :Mathnerd314!unknown@unknown.invalid TOPIC #esoteric :#esoteric, the international hub for esoteric programming language design and deployment - #esoteric is not associated with the joke language Perl, please visit www.perl.org - logs: http://tunes.org/~nef/logs/esoteric/?C=M;O=D < 1271904848 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric ::) < 1271904879 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :should i just completely drop the error set? < 1271904886 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :doesn't really seem useful anymore < 1271904895 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :oklofok: actually we used -({} to construct not, so the same cannot be said for that one < 1271904915 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :yes, i did notice that < 1271904925 0 :Mathnerd314!unknown@unknown.invalid PRIVMSG #esoteric :oklofok: well, you haven't defined anything special for how the error set behaves < 1271904937 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :indeed i haven't < 1271904950 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :it's sort of a wart < 1271904953 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :i was going for the toggle behavior. < 1271904973 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :that you could remove <> or add it depending on whether it's there < 1271904978 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :or any other set < 1271904996 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :because that made it easy to check for some specific set < 1271905000 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :well it may still be awkward to test for sets other than <> < 1271905028 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :we should probably look into that < 1271905035 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :but i'll remove the error set for now < 1271905045 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :err < 1271905050 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :*for good < 1271905051 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :<.p < 1271905054 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric ::P < 1271905079 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :down with evil errors! < 1271905168 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :http://esoteric.voxelperfect.net/wiki/Toi < 1271905179 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :the error set has been removed... sort of < 1271905207 0 :Mathnerd314!unknown@unknown.invalid PRIVMSG #esoteric :what happened to []? < 1271905217 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :it's been changed for convenience < 1271905222 0 :Mathnerd314!unknown@unknown.invalid PRIVMSG #esoteric :your example is no longer valid... < 1271905225 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :because addition was implemented with the new version < 1271905228 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :ah, true, thanks < 1271905259 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :fixd < 1271905261 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :i think < 1271905276 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :subtle, oklofok < 1271905312 0 :Mathnerd314!unknown@unknown.invalid PRIVMSG #esoteric :now I'm not following... ([ runs with the empty set? < 1271905326 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :okay i admit the explanation wasn't very good < 1271905327 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :Mathnerd314: basically the old [] could not be used to get much of any information _out_ of the loop < 1271905352 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :so it was hard to use it nested for anything other than clearing S < 1271905396 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :yes, so the conversation of ours invented a way to get something out of it < 1271905401 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :Mathnerd314: <> doesn't make S the empty set, it _adds_ the empty set as an element < 1271905415 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :(it is empty at the start) < 1271905422 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :oh was he confused about the example < 1271905435 0 :Mathnerd314!unknown@unknown.invalid PRIVMSG #esoteric :then why does <<>> add the set {{}}? < 1271905445 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :as an element, yes < 1271905462 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :<<>> adds {{}} to S, <> adds {} to S < 1271905477 0 :Mathnerd314!unknown@unknown.invalid PRIVMSG #esoteric :So, S={}, running <<>> gives S={{{}}}? < 1271905482 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1271905483 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :yes < 1271905489 0 :Mathnerd314!unknown@unknown.invalid PRIVMSG #esoteric :and S={}, running <> gives S={{}} < 1271905493 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :yes < 1271905495 0 :Mathnerd314!unknown@unknown.invalid PRIVMSG #esoteric :ok < 1271905519 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: did we use all of rua up there btw? < 1271905525 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :are they all actually necessary < 1271905531 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :i don't think a is < 1271905535 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :i just took three random operations that seemed pretty < 1271905563 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :it's only necessary if you want to use von neumann ordinals < 1271905564 0 :Mathnerd314!unknown@unknown.invalid PRIVMSG #esoteric :oklofok == oklopol? < 1271905572 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :i'm oklo < 1271905575 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :yes < 1271905583 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :hmm right < 1271905606 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :it was actually a coincidence rua was exactly the successor and the precursor or whateversor < 1271905622 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :because i hadn't even thought of von neumanns at that point < 1271905624 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :oh < 1271905636 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :they just really were pretty operations. < 1271905651 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :there's one thing about a though - it's the only thing which copies information < 1271905663 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :but i'm not sure it does so in a useful way < 1271905693 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :like say you have x < 1271905698 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :and you want the tuple (x, x) < 1271905703 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :is that possible < 1271905719 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :i'm not sure and actually doubt it < 1271905721 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :hmm < 1271905726 0 :Mathnerd314!unknown@unknown.invalid PRIVMSG #esoteric :so, in Von Neumann, 0=<>, 1=<0>, 2=<0,1>, 3=<0,1,2>, etc.? < 1271905732 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :Mathnerd314: yes < 1271905762 0 :Mathnerd314!unknown@unknown.invalid PRIVMSG #esoteric :you might, instead of e, just have 0 1 2 etc. < 1271905777 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :i considered that < 1271905777 0 :olsner!unknown@unknown.invalid QUIT :Read error: Operation timed out < 1271905792 0 :Mathnerd314!unknown@unknown.invalid PRIVMSG #esoteric :or just remove e < 1271905807 0 :Mathnerd314!unknown@unknown.invalid PRIVMSG #esoteric :(since by definition it's just <>) < 1271905812 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :it's just a shorthand that accompanied the error set for fun. < 1271905819 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :eEeEEe < 1271905821 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :anyway < 1271905823 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :i think we actually forgot we had e in the above discussion < 1271905825 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :yes, it's useless < 1271905828 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1271905869 0 :Mathnerd314!unknown@unknown.invalid PRIVMSG #esoteric :maybe define error set = ? < 1271905878 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :heh < 1271905903 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :that would make ([r] an infinite loop, though < 1271905938 0 :Mathnerd314!unknown@unknown.invalid PRIVMSG #esoteric :that's the point of turing-completeness :-) < 1271905947 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :although we could do ([-Er] instead < 1271905962 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :(assuming E was made set notation) < 1271905984 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :Mathnerd314: not particularly, it's a trivial loop < 1271905998 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :turing-completeness requires undetectable ones < 1271906008 0 :Mathnerd314!unknown@unknown.invalid PRIVMSG #esoteric :ok, see you later < 1271906019 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :x >> u >> {x} >> <> >> {x} <> >> u >> {x <>} >> a >> {x <>} x <> >> -<> >> {x <>}, x >> u >> {{x <>} x} < 1271906039 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :bye Mathnerd314 < 1271906057 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :so doesn't that get you from x to the tuple (x, x) < 1271906064 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :given some extra wrapping in the beginning < 1271906068 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :wait what < 1271906078 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :notation may be a bit confusing < 1271906081 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :at least < 1271906099 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :you mean wrong ;D < 1271906119 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :i don't think so, but do explain < 1271906127 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :x means S = {x} < 1271906137 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :every second is S, every second is an operation < 1271906147 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :oh well < 1271906176 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :i believe that works < 1271906196 0 :nooga!unknown@unknown.invalid QUIT :Ping timeout: 264 seconds < 1271906199 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :you should too < 1271906209 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :please believe :< < 1271906223 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :if i can wrap my head around that {x <>} >> a >> {x <>} x < 1271906228 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :oh and bye mathnerd < 1271906242 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :there's a <> in the end < 1271906248 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :{x <>} >> a >> {x <>} x <> < 1271906252 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :oh < 1271906273 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :>> is not the best notation maybe. < 1271906298 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :that's not the hard part < 1271906305 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :oh than what is < 1271906320 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :your weird set notation with contatenation < 1271906321 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :*then < 1271906329 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :let me untranslate it < 1271906335 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :i just drop <> around S... < 1271906377 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :{{x,{}}} >> a >> {{x,{}},x,{}} < 1271906383 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :yes < 1271906389 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ok it seems correct there < 1271906390 0 :MizardX!unknown@unknown.invalid QUIT :Ping timeout: 260 seconds < 1271906400 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :my notation was prettier :) < 1271906440 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :heh < 1271906450 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :i just realized by accident that changing [] to ([] might actually make my parser *shorter* < 1271906458 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :i < 1271906466 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :i'm still not gonna do it now but anyway < 1271906504 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :? < 1271906511 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :nevermind that < 1271906537 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :actually < 1271906561 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :having {} around S is nice because you can't confuse S with instructions < 1271906562 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ok i believe you can get (x,x) that way < 1271906567 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :thanx < 1271906578 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :if you use {} for S and <> for instrs < 1271906579 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :although some wrapping care is needed < 1271906589 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :as you said < 1271906604 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :yeah! < 1271906607 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :we got chris barker! < 1271906720 0 :olsner!~salparot@c83-252-161-133.bredband.comhem.se JOIN :#esoteric < 1271906949 0 :coppro!~coppro@unaffiliated/coppro JOIN :#esoteric < 1271907100 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :augur: i'm happy for you people < 1271907119 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :you should be! < 1271907123 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :semanticist AND esolanger! < 1271907128 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :right here are our university! < 1271907168 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :a guy at uni is an esolanger as well < 1271907177 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :sort of < 1271907256 0 :Tritonio_GR!unknown@unknown.invalid QUIT :Read error: Connection reset by peer < 1271907430 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :yes well < 1271907433 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :barker invented Iota < 1271907435 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :and is a prof < 1271907436 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :so < 1271907461 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :he invented the combinator itself? < 1271907690 0 :Mathnerd314!unknown@unknown.invalid PRIVMSG #esoteric :oklofok: idea: add variables/functions to the language with = < 1271907704 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :no! < 1271907712 0 :Mathnerd314!unknown@unknown.invalid PRIVMSG #esoteric :like e=<> < 1271907714 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :the whole idea is that you can only do stuff to the global set S < 1271907730 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :well how exactly? < 1271907747 0 :Mathnerd314!unknown@unknown.invalid PRIVMSG #esoteric :well, it's just textual substitution < 1271907803 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :the whole beauty is the you can't access any individual object directly, you can just do an operation on all objects individually < 1271907826 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :well if it's done in such a way that it's convenient but essentially useless, then i might consider it < 1271907842 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :like numbers would be < 1271907853 0 :Mathnerd314!unknown@unknown.invalid PRIVMSG #esoteric :yeah; that's all I'm thinking of < 1271907871 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :if you can actually use letters as storage, sort of as another S, then noo < 1271907905 0 :Mathnerd314!unknown@unknown.invalid PRIVMSG #esoteric :maybe it's more like program-abbreviation < 1271907943 0 :Mathnerd314!unknown@unknown.invalid PRIVMSG #esoteric :but yeah, shouldn't change anything about turing-completeness or whatever < 1271907999 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :hmm umm i'm not convinced < 1271908010 0 :Mathnerd314!unknown@unknown.invalid PRIVMSG #esoteric :I'm guessing you should be able to define some of r, a, or u in terms of the others < 1271908041 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :with or without loops? < 1271908065 0 :Mathnerd314!unknown@unknown.invalid PRIVMSG #esoteric :with loops < 1271908071 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :then i believe oyu < 1271908073 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :*you < 1271908081 0 :Mathnerd314!unknown@unknown.invalid PRIVMSG #esoteric :your language has no meaning for , right? < 1271908088 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :nnope < 1271908136 0 :Mathnerd314!unknown@unknown.invalid PRIVMSG #esoteric :that - is weird, then < 1271908155 0 :Mathnerd314!unknown@unknown.invalid PRIVMSG #esoteric :no real semantics < 1271908166 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :huh? < 1271908168 0 :Mathnerd314!unknown@unknown.invalid PRIVMSG #esoteric :pay no attention to me ;-) < 1271908170 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :- what < 1271908197 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :well i'll pay no attention to that last suggestion < 1271908203 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :compromise < 1271908238 0 :Mathnerd314!unknown@unknown.invalid PRIVMSG #esoteric :as an example: tuple=u<>ua-<>u < 1271908247 0 :Mathnerd314!unknown@unknown.invalid PRIVMSG #esoteric :you can write <> tuple < 1271908260 0 :coppro!unknown@unknown.invalid QUIT :Remote host closed the connection < 1271908283 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :oh you meant subroutines < 1271908291 0 :Mathnerd314!unknown@unknown.invalid PRIVMSG #esoteric :well, they aren't < 1271908317 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :well macros whatever, what i meant is oh not variables that contain sets < 1271908317 0 :Mathnerd314!unknown@unknown.invalid PRIVMSG #esoteric :because you just run it as <> u<>ua-<>u < 1271908327 0 :Mathnerd314!unknown@unknown.invalid PRIVMSG #esoteric :well, they do contain sets < 1271908334 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :but variables that contain programs < 1271908340 0 :Mathnerd314!unknown@unknown.invalid PRIVMSG #esoteric :like foo=<<<<>>>> < 1271908350 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :they can contain sets if they can contain programs, yes < 1271908358 0 :Mathnerd314!unknown@unknown.invalid PRIVMSG #esoteric :but yeah, it's not a real set, it's a program meaning "add this set to S" < 1271908389 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :that sounds like a better idea than having variables that contain sets. < 1271908390 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :but < 1271908423 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :this is always a bit of a subtle issue < 1271908430 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :macros make the language less pure < 1271908433 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :but programs nicer < 1271908454 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :the thing is you could easily just have the macros from some other preprocessor < 1271908491 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :but then you could only actually show the obfuscated substituted in programs as toi programs, because the macros aren't part of the lang < 1271908517 0 :Mathnerd314!unknown@unknown.invalid PRIVMSG #esoteric :yeah, it's a definite choice < 1271908519 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :i'll probably not add macros, and someone can make a derivative with macros WHEN it becomes popular. < 1271908526 0 :Mathnerd314!unknown@unknown.invalid PRIVMSG #esoteric :heh :-) < 1271908848 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :! < 1271908881 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :i should put clue on the wiki too given all this ATTENTION. except there's no mystery in clue so at least oerjan won't be interested < 1271908912 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :indeed, completely obvious < 1271908972 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :u-<<>>r < 1271908982 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :not without -({} < 1271909002 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :oh wait < 1271909006 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :u-<<>> < 1271909066 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :what are you doing < 1271909081 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :writing not... < 1271909103 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :to show that -({} is actually redundant < 1271909149 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :now more generally < 1271909222 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :u({([r]<>}-<<>> < 1271909264 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :u({...} ~ ...u? < 1271909288 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :no < 1271909301 0 :Gracenotes!~person@wikipedia/Gracenotes JOIN :#esoteric < 1271909304 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :({...} runs on non-empty elements < 1271909318 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :right, we did this already < 1271909324 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :i don't learn that fast. < 1271909382 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :it turns every non-empty element into <<>>, so they can be removed < 1271909385 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :but yeah i think that's a correct not < 1271909471 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :S => {S} => {{{}}} => {} if S was nonempty < 1271909846 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :your FACE is nonempty < 1271909860 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :xDSSA < 1271909904 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :that's one reverse-ass smiley < 1271910062 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :stop mooning bsmntbombdood, oklofok < 1271910112 0 :bsmntbombdood!unknown@unknown.invalid QUIT :Ping timeout: 246 seconds < 1271910460 0 :Oranjer!unknown@unknown.invalid PART #esoteric :? < 1271911642 0 :zzo38!~zzo38@h24-207-48-53.dlt.dccnet.com JOIN :#esoteric < 1271911656 0 :Gracenotes!unknown@unknown.invalid QUIT :Read error: Connection reset by peer < 1271911730 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :I have idea more to add to GCC __builtin_ functions/commands, including: < 1271911744 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :(all starting with __builtin_ prefix (or a different prefix)) < 1271911765 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :_fastest { code } else { code } optimizer selects faster code. < 1271911776 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :_smallest same as _fastest but selects smallest code. < 1271911788 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :_assume(expr) makes optimizer assume expr is true even if it isn't. < 1271911796 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Optimizer does not know what's fastest. < 1271911831 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :but maybe it could compile into a program that runs both and returns the result of the one that ran faster < 1271911853 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: No, it would guess what's fastest < 1271911864 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Yeah, that's feasible if it's possible to run the relevant snippets independently. < 1271911866 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :But either way, _smallest would still work < 1271911881 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Yeah, _smallest is pretty easy. < 1271911886 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Compile both, compare code size. < 1271911950 0 :coppro!~coppro@unaffiliated/coppro JOIN :#esoteric < 1271911955 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :And if you wrote, _assume(x==5); x+=1; then, it would compile x=6; instead if and only if x=6; is considered better in the current optimizer mode. < 1271912069 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :I don't know how well that would work, or if you would instead need multiple kind of _assume commands such as _assume_equal and so on. < 1271912085 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :_assume would work pretty well. < 1271912098 0 :Gracenotes!~person@wikipedia/Gracenotes JOIN :#esoteric < 1271912111 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :The optimisers already have a bunch of assumptions that they do that sort of thing with. < 1271912135 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :For instance, GCC assumes that a pointer cannot be NULL if it was previously dereferenced. < 1271912150 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :You can write: __builtin_assume(x==5); y=__builtin_constant_p(x); y will now be 1 if the optimizer is turned on. < 1271912343 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :Also a way to remove assumptions, with codes such as: __builtin_fake { p=__builtin_anything(); } < 1271912374 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :And now it will get rid of assumptions about "p" because it now assumes p could be anything. < 1271912479 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :pikhq, wasn't there a security hole related to that? < 1271912629 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Sgeo: In Linux. < 1271912634 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Where that assumption is false. < 1271912636 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :What security hole do you mean? Probably it might be possible that there is such security holes. But I would like to know what security hole < 1271912655 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :How did that assumption manage to be false? < 1271912675 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Sgeo: In kernel-space, NULL might be a valid address. < 1271912682 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Meaning that it is entirely valid to dereference it. < 1271912687 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :Ah < 1271912709 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :(this is actually true in user-space with mmap, but *you will be shot* for doing so.) < 1271912736 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :linux execution squad < 1271912757 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :Going to go eat now < 1271912816 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :Yes, of course it very well could be a valid address, but if that is the case you would probably not use functions such as strlen() with it, anyways. You might do *(char*)0=0xFE; < 1271912934 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :The exploit resulted from mmaping some space at NULL, then passing it to a system call that had a minor bug that *could* cause it to jump to arbitrary space. < 1271912977 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :mmap? < 1271912978 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :Also, how do you figure out what the numeric type of a same size as a pointer address is? < 1271912982 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :*Normally*, it could only cause a jump into other bits of kernel space, but because a NULL check was being ignored, it managed to instead jump into a bit of user space. < 1271912992 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :zzo38: uintptr_t < 1271913000 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: OK < 1271913017 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Sgeo: mmap is a slightly odd and very flexible system call. < 1271913038 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :It allows you to lazily allocate memory, map a file into memory, and do a few other oddball things. < 1271913047 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: Perhaps that is why you need to have such a command as __builtin_fake { p=__builtin_anything(); } so that you can stop ignoring such checks even in optimizer mode < 1271913047 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :You can request an address for it to map to. < 1271913068 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :zzo38: Command line option, actually. < 1271913074 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Linux now builds with it. < 1271913129 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :mmap is awesome < 1271913136 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :But what if you want to change all of the optimizer modes on each individual line of a code? < 1271913287 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :I beat you to death with a baseball bat. < 1271913329 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :My idea is that, the instruction __builtin_anything() the optimizer would assume that its return value could be anything, but it is an error for the __builtin_anything() instruction to actually be compiled into the executable (unless the optimizer can determine that the part of the code referencing __builtin_anything() can never actually get executed, such as: {return; __builtin_anything();} ) < 1271913769 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :If GCC assumes a pointer cannot be NULL if it was previously dereferenced, can you check that with the __builtin_constant_p function? < 1271913787 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :(such as: __builtin_constant_p(!ptr)) < 1271913919 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :I dunno. < 1271913961 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :Perhaps I can check what the compiler does (I do have GCC on this computer) < 1271914181 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :No, that doesn't seem to work. But this does work: x=1; __builtin_constant_p(x); < 1271914241 0 :sebbu2!~sebbu@ADijon-152-1-49-122.w83-194.abo.wanadoo.fr JOIN :#esoteric < 1271914273 0 :sebbu!unknown@unknown.invalid QUIT :Ping timeout: 260 seconds < 1271914273 0 :sebbu2!unknown@unknown.invalid NICK :sebbu < 1271914481 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :Can this work: #define lengthof(_1) (sizeof(_1)/sizeof(typeof(*_1))) < 1271914490 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :And this: #define FORCE_CONSTANT(_1) __builtin_choose_expr((_1),(_1),(_1)) < 1271914506 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Yes and WTF? < 1271914524 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :(that's two answers, BTW) < 1271914569 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Also, (sizeof(_1)/(sizeof(*_1)) should work. < 1271914580 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Also, only (obviously) works right for actual arrays. < 1271914586 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :No pointers to chunks of memory. < 1271914603 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :Well, yes, obviously. It is meant for arrays, of course. < 1271914609 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :zzo38: Is this C or C++? < 1271914614 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :C < 1271914621 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :And it is GNU C, to be specific < 1271915521 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :#define RANGE_X3(_1,_2,_3) (_1(_3 0)_2),(_1(_3 1)_2),(_1(_3 2)_2) < 1271915530 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :#define RANGE_X6(_1,_2,_3) RANGE_X3(_1,_2,_3),RANGE_X3(_1,_2,3+_3) < 1271915579 0 :augur!unknown@unknown.invalid QUIT :Ping timeout: 245 seconds < 1271915711 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :Is there a way to make pipes loop in Linux, so that the output of the last command in a pipeline sent to the input of the first command? < 1271915728 0 :augur!~augur@pool-74-96-22-71.washdc.east.verizon.net JOIN :#esoteric < 1271915812 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Yes, but it's a pain. < 1271915820 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :I suggest named pipes. < 1271915978 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :Does any shell support the following way of doing it like: |nc example.org 1323|tr A-Z a-z| < 1271915995 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :Perhaps if I get computer I can put Linux, I can write the shell like that < 1271916020 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :So if you put | at the beginning and another at the end of the command-line it will do loop like that < 1271916022 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Could add it to zsh. < 1271916040 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :(it's the Emacs of shells already. Would fit nicely.) < 1271916139 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :I do know a few things about Zsh, it seems better for code-golf than bash is < 1271916182 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :I'd suggest Perl, but IO is actually a pain in Perl < 1271916188 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :one of the few things it's bad at < 1271916232 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: hmm... couldn't you do it with while true; do < 1271916253 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :*while true; do foo=$(really <<<"$foo" | long | pipe | here); done < 1271916273 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :coppro: No, because shell is not lazy. < 1271916280 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :that's what I'm relying on < 1271916304 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Well, you're relying on nonexistent semantics. < 1271916309 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Stop doing it. < 1271916321 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :why are they nonexistent? < 1271916329 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Because they are. < 1271916352 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :the variable is substituted into the command, then the command is executed, then the output from the command is assigned to the variable < 1271916360 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :if you are really afraid of that, you could always use two variables < 1271916393 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :And then you'd see how wrong you are about how this is working. < 1271916402 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :uh < 1271916409 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :why? < 1271916415 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :(namely, it isn't) < 1271916433 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :You set foo to the result of a command depending on foo. < 1271916444 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :yes. And I just said you could use two variables < 1271916446 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :In order to get the result of that command, you must know the value of foo. < 1271916464 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :In order to get the value of foo you must get the result of that command. < 1271916476 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :while true; do foo="$(<<<"$bar" pipe | line | goes | here)"; bar="$foo"; done < 1271916498 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Technically works, but I hate you. < 1271916505 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :you're welcome < 1271916513 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :testing on dash < 1271916518 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :And has quite different semantics from a proper pipe. < 1271916528 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :that much is true < 1271916608 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :eh, dash can't handle the syntax < 1271916612 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :so no way to test < 1271916652 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :wait, got it. It works there too < 1271916667 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :In Anarchy Golf there is only one file in a current directory, which is the program itself, which means you can write a (cheating) quine 2-bytes in Zsh < 1271916873 0 :jcp!unknown@unknown.invalid QUIT :Quit: I will do anything (almost) for a new router. < 1271916921 0 :jcp1!~jw@bzflag/contributor/javawizard2539 JOIN :#esoteric < 1271916924 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :http://golf.shinh.org/reveal.rb?Quine/zzo38%28cheat%29_1269737774&zsh < 1271916951 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric ::) < 1271917344 0 :jcp1!unknown@unknown.invalid NICK :jcp < 1271917957 0 :augur!unknown@unknown.invalid QUIT :Ping timeout: 265 seconds < 1271918350 0 :oerjan!unknown@unknown.invalid QUIT :Quit: Good night < 1271918629 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :Do you like to invent spells in D&D game? < 1271918655 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :what? < 1271918697 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :No, tend to come up with very inventive ways of using spells in D&D instead. < 1271918699 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :Like, invent new spells for use in D&D game. < 1271918714 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :(presuming you mean D20 system) < 1271918722 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :Here are some of the ones I have done, if you are interested: http://zzo38computer.cjb.net/dnd/options/ (I cannot figure out what name I should give the _1 spell) < 1271918732 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :(_1 is just a temporary name) < 1271918768 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :I especially like the Object_Mirrored.s spell that I invented. < 1271918769 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :ah, no, I do not < 1271918811 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :Do you know what name I should give to _1.p < 1271918816 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :zzo38: where are you from? < 1271918848 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :coppro: Is that relevant? Check my IP address < 1271918967 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :Also, which D&D characters have you played (race/class/spells/etc) < 1271918987 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :I have never really played :/ < 1271918990 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :only DMed < 1271919007 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :also kept a book collection far larger than it should be < 1271919024 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Most recently I played a barbarian bard cleric druid fighter monk paladin wizard warlock gestalted with soulblade. < 1271919033 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :coppro: OK, what campaigns, then? And what players have been < 1271919038 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :It was a very, very silly run through Tomb of Horrors. < 1271919046 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Oh. And level 9. < 1271919056 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: OK, what race and what spells? < 1271919071 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :zzo38: Human, and I actually didn't bother with a spelllist. < 1271919093 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: Then how do you know what spells if you don't spells? < 1271919093 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :zzo38: Is that relevant? Check my IP address < 1271919109 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :zzo38: Level 1 spells at level 9? < 1271919125 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :coppro: How am I supposed to figure out that from your IP address, and of course it is relevant, isn't it? < 1271919132 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Screw that shit. Scrolls of level 9 spells. < 1271919133 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :well, it might be < 1271919133 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: Any level spells, whatever level spells you have < 1271919136 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :(there went *all* his cash) < 1271919189 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Uh. Magic missile? < 1271919207 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :That's a common one. I never selected that spell, however. < 1271919216 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :It' < 1271919223 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :s probably the best level 1 spell. < 1271919237 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :I note that it is very, very, *very* hard to avoid damage from it. < 1271919262 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :No save, no AC, and almost nothing has DR against force. < 1271919284 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :zzo38: use Swap Eye on itself < 1271919285 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :Maybe it is, but I don't like it much. I nearly always select spells that do not do any damage < 1271919303 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :You, sir, are probably playing very poor casters. < 1271919304 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :coppro: You can't, that's a feat and it can not be applied to feats < 1271919309 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :zzo38: OH < 1271919313 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :I get it now < 1271919315 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :c s f < 1271919317 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :If you get clever you can do 1-shot nukes. :P < 1271919321 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :hmm... the mirroring spell is a great way to kill someone < 1271919342 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :It gets... Much, much, *much* scarier with a good psion/wizard build. < 1271919374 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: Actually I try never to do damage I try to win without damage or kill, whenever possible because I play good-aligned characters, that's why < 1271919400 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :zzo38: "Good-aligned" does not mean "cannot damage or kill" you know. < 1271919421 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :BTW, might I suggest looking into non-lethal damage? :P < 1271919437 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: I know that, but that is one way to be good-aligned even if not the only way, and of course there are a few exceptions < 1271919443 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :And yes, I do understand non-lethal damage < 1271919470 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :zzo38: the _1 sounds like a confession? < 1271919506 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :But what I like to do is to trick the opponent in different ways sometimes < 1271919534 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :coppro: The _1 is almost likea confession, I guess. Not quite, but still, I don't know the name? < 1271919543 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :ACTION is still proud of geasing the drow race. < 1271919560 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :zzo38: I think 'confession' or something similar should be in the name < 1271919570 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :coppro: OK, that's an idea < 1271919693 0 :augur!~augur@216-164-33-76.c3-0.slvr-ubr1.lnh-slvr.md.cable.rcn.com JOIN :#esoteric < 1271919732 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :My character has no magic items except for harp (the magic gives it +2 Perform) (we are members of Harper, this is the campaign) < 1271919747 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :My brother's character doesn't have many either, but he has no harp < 1271919787 0 :Gracenotes!unknown@unknown.invalid QUIT :Read error: Connection reset by peer < 1271919889 0 :Gracenotes!~person@wikipedia/Gracenotes JOIN :#esoteric < 1271920000 0 :tombom!tombom@wikipedia/Tombomp JOIN :#esoteric < 1271920050 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :The kind of trick I do is, one of them is as follows: Metamorphosis into human of the size to wear the unform so we can disguised as the army, steal the scroll, hide behind the tent, dismiss metamorphosis, dark, web, wait for wizard to attempt to dispel darkness (my brother's character helped to tell when), just before was doing, teleport away, leaving a crystal and the clothes in the area. < 1271920123 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :This really confused everyone. Everyone now believes lies... Someone thought the wizard did it but the wizard said they did nothing. And the tent teleported into turned out to be the toilet tent and the people inside thought my character was a big cockroach. After they get out to tell someone, I hide and then they look and see there is nothing in there! < 1271920153 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :Someone thought the soldier must be crazy, someone thought they must be running around naked, someone thought they must have turned into a crystal... See, it works. < 1271920266 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Ah, the *other* useful half of a wizard's spell list. < 1271920268 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Being fucking Batman. < 1271920269 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric ::P < 1271920343 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :(The soldier they were talking about was actually in jail by then, but the other soldiers did not know that.) < 1271920380 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :What does it have to do with Batman? (I don't know about Batman very well, actually) < 1271920467 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Batman, much like a wizard, can quite reasonably defeat anyone given prep time. < 1271920538 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Ready for *everything*. < 1271920564 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :Now we need to send a forged note to the army. However, I have a different idea: Write a forged note to the emperor of the army (the note I stole was to send to emperor), that will make the emperor send a note to the army of the way I want. (No magic needed here.) < 1271920722 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :In fact, about half the time we need no magic, just paper or speech or even just a wood box might just do < 1271920813 0 :tombom!unknown@unknown.invalid PRIVMSG #esoteric :this doesn't sound like the world i know < 1271920816 0 :tombom!unknown@unknown.invalid PRIVMSG #esoteric :i'm scared < 1271920968 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :If I actually *do* need to damage someone, I suppose I can just bite (and poison) them, but that is hardly ever needed. Usually we can win without harming anyone. In fact, at least one time we won by *healing* the opponents instead. < 1271921039 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :Mostly the bite is just used as a threat of eating them if they do not comply. < 1271921075 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :(I don't actually have a high enough attack bonus to effectively use it most of the time anyways.) < 1271921078 0 :jcp!unknown@unknown.invalid QUIT :Quit: I will do anything (almost) for a new router. < 1271921109 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :tombom: 魔法がある世界。なぜ知らないか。(も、人々は日本語で話す世界。) < 1271921111 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :(And I don't care; because I don't need a high attack bonus. It is OK if this misses 80% of the time) < 1271921346 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :Or, of course, my brother's character, he is a ninja and can use sudden strike. He prefers to fight a lot < 1271921395 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :GAH < 1271921403 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :MAGIC THE GATHERING HAS RACE CONDITIONs < 1271921421 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: There are rules how to resolve them < 1271921448 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :zzo38: No, the Grand Melee variant introduces actual race conditions. < 1271921463 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: OK. Sorry I thought you meant standard rules < 1271921467 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :What's relevant is the existence of multiple stacks. < 1271921473 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Which function concurrently. < 1271921491 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :The Grand Melee variant does have actual race conditions < 1271921614 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Fun fact: spell resolution is not atomic. < 1271921717 0 :zzo38!unknown@unknown.invalid QUIT :Remote host closed the connection < 1271922621 0 :tombom!unknown@unknown.invalid QUIT :Quit: Leaving < 1271923199 0 :clog!unknown@unknown.invalid QUIT :ended < 1271923200 0 :clog!unknown@unknown.invalid JOIN :#esoteric < 1271924015 0 :Sgeo_!~Sgeo@ool-18bf618a.dyn.optonline.net JOIN :#esoteric < 1271924129 0 :Sgeo!unknown@unknown.invalid QUIT :Ping timeout: 245 seconds < 1271924521 0 :augur!unknown@unknown.invalid QUIT :Remote host closed the connection < 1271924531 0 :augur!~augur@216-164-33-76.c3-0.slvr-ubr1.lnh-slvr.md.cable.rcn.com JOIN :#esoteric < 1271924665 0 :Sgeo!~Sgeo@ool-18bf618a.dyn.optonline.net JOIN :#esoteric < 1271924801 0 :Sgeo_!unknown@unknown.invalid QUIT :Ping timeout: 265 seconds < 1271925012 0 :lament!~lament@S0106002312fa554a.vc.shawcable.net JOIN :#esoteric < 1271925297 0 :Gracenotes!unknown@unknown.invalid QUIT :Read error: Operation timed out < 1271925352 0 :augur!unknown@unknown.invalid QUIT :Remote host closed the connection < 1271925357 0 :augur!~augur@216-164-33-76.c3-0.slvr-ubr1.lnh-slvr.md.cable.rcn.com JOIN :#esoteric < 1271925358 0 :Slereah!unknown@unknown.invalid QUIT :Ping timeout: 246 seconds < 1271925695 0 :Slereah!~nigger@ANantes-259-1-73-174.w92-135.abo.wanadoo.fr JOIN :#esoteric < 1271926425 0 :Gracenotes!~person@wikipedia/Gracenotes JOIN :#esoteric < 1271926448 0 :lament!unknown@unknown.invalid QUIT :Quit: lament < 1271927005 0 :Gracenotes!unknown@unknown.invalid QUIT :Ping timeout: 258 seconds < 1271927736 0 :Gracenotes!~person@wikipedia/Gracenotes JOIN :#esoteric < 1271932440 0 :FireFly!~firefly@unaffiliated/firefly JOIN :#esoteric < 1271934270 0 :Slereah!unknown@unknown.invalid QUIT :*.net *.split < 1271934271 0 :dbc!unknown@unknown.invalid QUIT :*.net *.split < 1271934271 0 :fizzie!unknown@unknown.invalid QUIT :*.net *.split < 1271934271 0 :AnMaster!unknown@unknown.invalid QUIT :*.net *.split < 1271934272 0 :augur!unknown@unknown.invalid QUIT :*.net *.split < 1271934272 0 :Mathnerd314!unknown@unknown.invalid QUIT :*.net *.split < 1271934272 0 :pineapple!unknown@unknown.invalid QUIT :*.net *.split < 1271934272 0 :fungot!unknown@unknown.invalid QUIT :*.net *.split < 1271934273 0 :myndzi\!unknown@unknown.invalid QUIT :*.net *.split < 1271934274 0 :oklofok!unknown@unknown.invalid QUIT :*.net *.split < 1271934274 0 :iamcal!unknown@unknown.invalid QUIT :*.net *.split < 1271934274 0 :comex!unknown@unknown.invalid QUIT :*.net *.split < 1271934274 0 :jix!unknown@unknown.invalid QUIT :*.net *.split < 1271934274 0 :Leonidas!unknown@unknown.invalid QUIT :*.net *.split < 1271934275 0 :coppro!unknown@unknown.invalid QUIT :*.net *.split < 1271934275 0 :uorygl!unknown@unknown.invalid QUIT :*.net *.split < 1271934275 0 :ineiros!unknown@unknown.invalid QUIT :*.net *.split < 1271934275 0 :Sgeo!unknown@unknown.invalid QUIT :*.net *.split < 1271934275 0 :Quadrescence!unknown@unknown.invalid QUIT :*.net *.split < 1271934275 0 :olsner!unknown@unknown.invalid QUIT :*.net *.split < 1271934276 0 :rodgort!unknown@unknown.invalid QUIT :*.net *.split < 1271934276 0 :SimonRC!unknown@unknown.invalid QUIT :*.net *.split < 1271934276 0 :mtve!unknown@unknown.invalid QUIT :*.net *.split < 1271934276 0 :lifthrasiir!unknown@unknown.invalid QUIT :*.net *.split < 1271934276 0 :cheater2!unknown@unknown.invalid QUIT :*.net *.split < 1271934276 0 :mycroftiv!unknown@unknown.invalid QUIT :*.net *.split < 1271934276 0 :sshc!unknown@unknown.invalid QUIT :*.net *.split < 1271934276 0 :Gregor!unknown@unknown.invalid QUIT :*.net *.split < 1271934277 0 :yiyus!unknown@unknown.invalid QUIT :*.net *.split < 1271934278 0 :Deewiant!unknown@unknown.invalid QUIT :*.net *.split < 1271934278 0 :FireFly!unknown@unknown.invalid QUIT :*.net *.split < 1271934279 0 :HackEgo!unknown@unknown.invalid QUIT :*.net *.split < 1271934279 0 :EgoBot!unknown@unknown.invalid QUIT :*.net *.split < 1271934279 0 :Geekthras!unknown@unknown.invalid QUIT :*.net *.split < 1271934279 0 :wareya!unknown@unknown.invalid QUIT :*.net *.split < 1271934279 0 :chickenzilla!unknown@unknown.invalid QUIT :*.net *.split < 1271934280 0 :Ilari!unknown@unknown.invalid QUIT :*.net *.split < 1271934345 0 :Adrian^L!unknown@unknown.invalid QUIT :Read error: Connection reset by peer < 1271934402 0 :sebbu!unknown@unknown.invalid NICK :94SAAF2AN < 1271934402 0 :pikhq!unknown@unknown.invalid NICK :94SAAEFTX < 1271934406 0 :Adrian^L!adrian@phalse.2600.COM JOIN :#esoteric < 1271934406 0 :pikhq!~pikhq@75-106-123-198.cust.wildblue.net JOIN :#esoteric < 1271934406 0 :sebbu!~sebbu@ADijon-152-1-49-122.w83-194.abo.wanadoo.fr JOIN :#esoteric < 1271934406 0 :FireFly!~firefly@unaffiliated/firefly JOIN :#esoteric < 1271934406 0 :Slereah!~nigger@ANantes-259-1-73-174.w92-135.abo.wanadoo.fr JOIN :#esoteric < 1271934406 0 :augur!~augur@216-164-33-76.c3-0.slvr-ubr1.lnh-slvr.md.cable.rcn.com JOIN :#esoteric < 1271934406 0 :Sgeo!~Sgeo@ool-18bf618a.dyn.optonline.net JOIN :#esoteric < 1271934406 0 :coppro!~coppro@unaffiliated/coppro JOIN :#esoteric < 1271934406 0 :olsner!~salparot@c83-252-161-133.bredband.comhem.se JOIN :#esoteric < 1271934406 0 :oklofok!~oklopol@a91-153-122-35.elisa-laajakaista.fi JOIN :#esoteric < 1271934406 0 :uorygl!~Warrigal@rrcs-70-63-156-144.midsouth.biz.rr.com JOIN :#esoteric < 1271934406 0 :Deewiant!~deewiant@kekkonen.cs.hut.fi JOIN :#esoteric < 1271934406 0 :cheater2!~cheater@ip-80-226-203-201.vodafone-net.de JOIN :#esoteric < 1271934406 0 :Mathnerd314!~mathnerd3@dsl.6.28.53.206.cos.dyn.pcisys.net JOIN :#esoteric < 1271934406 0 :Quadrescence!~Quad@unaffiliated/quadrescence JOIN :#esoteric < 1271934406 0 :myndzi\!myndzi@tengototen.net JOIN :#esoteric < 1271934406 0 :HackEgo!~HackEgo@codu.xen.prgmr.com JOIN :#esoteric < 1271934406 0 :EgoBot!~EgoBot@codu.xen.prgmr.com JOIN :#esoteric < 1271934406 0 :iamcal!~cal@c-69-181-46-213.hsd1.ca.comcast.net JOIN :#esoteric < 1271934406 0 :comex!comex@c-98-210-192-54.hsd1.ca.comcast.net JOIN :#esoteric < 1271934406 0 :dbc!~daniel@130-94-161-238-dsl.hevanet.com JOIN :#esoteric < 1271934406 0 :mycroftiv!~ircguy@h69-128-47-242.mdsnwi.dedicated.static.tds.net JOIN :#esoteric < 1271934406 0 :fizzie!fis@iris.zem.fi JOIN :#esoteric < 1271934406 0 :rodgort!~rodgort@li14-39.members.linode.com JOIN :#esoteric < 1271934406 0 :Geekthras!~geekthras@adsl-99-39-2-249.dsl.pltn13.sbcglobal.net JOIN :#esoteric < 1271934406 0 :sshc!~sshc@unaffiliated/sshc JOIN :#esoteric < 1271934406 0 :fungot!~fungot@momus.zem.fi JOIN :#esoteric < 1271934406 0 :pineapple!~pineapple@cpc3-aztw11-0-0-cust24.aztw.cable.virginmedia.com JOIN :#esoteric < 1271934406 0 :AnMaster!~AnMaster@unaffiliated/anmaster JOIN :#esoteric < 1271934406 0 :Leonidas!~Leonidas@unaffiliated/leonidas JOIN :#esoteric < 1271934406 0 :lifthrasiir!M58WNbag@haje12.kaist.ac.kr JOIN :#esoteric < 1271934406 0 :mtve!~mtve@65.98.99.53 JOIN :#esoteric < 1271934406 0 :ineiros!~itniemin@james.ics.hut.fi JOIN :#esoteric < 1271934406 0 :SimonRC!~sc@fof.durge.org JOIN :#esoteric < 1271934406 0 :jix!~jix@tomakin.h-ix.net JOIN :#esoteric < 1271934406 0 :wareya!~wareya@cpe-74-70-140-214.nycap.res.rr.com JOIN :#esoteric < 1271934406 0 :chickenzilla!~chicken@olol.eu JOIN :#esoteric < 1271934406 0 :Gregor!~gregor@65.183.185.22 JOIN :#esoteric < 1271934406 0 :Ilari!~user@2002:5870:32ae::1 JOIN :#esoteric < 1271934406 0 :yiyus!1242712427@je.je.je JOIN :#esoteric < 1271934411 0 :94SAAF2AN!unknown@unknown.invalid QUIT :Ping timeout: 280 seconds < 1271934411 0 :94SAAEFTX!unknown@unknown.invalid QUIT :Ping timeout: 241 seconds < 1271934611 0 :augur!unknown@unknown.invalid QUIT :Remote host closed the connection < 1271934620 0 :augur!~augur@216-164-33-76.c3-0.slvr-ubr1.lnh-slvr.md.cable.rcn.com JOIN :#esoteric < 1271935476 0 :BeholdMyGlory!~behold@unaffiliated/beholdmyglory JOIN :#esoteric < 1271941054 0 :kar8nga!~kar8nga@jol13-1-82-66-176-74.fbx.proxad.net JOIN :#esoteric < 1271941591 0 :ais523!~ais523@unaffiliated/ais523 JOIN :#esoteric < 1271941824 0 :lereah_!~lereah@nanpc301.in2p3.fr JOIN :#esoteric < 1271943932 0 :nooga!~nooga@188.74.72.61 JOIN :#esoteric < 1271944114 0 :ais523!unknown@unknown.invalid QUIT : < 1271944186 0 :ais523!~ais523@unaffiliated/ais523 JOIN :#esoteric < 1271944228 0 :aschueler!~alec@host86-167-40-196.range86-167.btcentralplus.com JOIN :#esoteric < 1271945288 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :ll < 1271946049 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :fizzie, there? Which llvm version are you using for jitfunge? < 1271946075 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: Some 2.7 prerelease < 1271946078 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :reading 2.7 release notes (note: 2.7 is at beta2 or something like that atm iirc): "The JIT now supports generating debug information, which is compatible with the new GDB 7.0 (and later) interfaces for registering debug info for dynamically generated code." < 1271946107 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Whatever's in lucid; currently it seems to be "2.7~svn20100418-0ubuntu1". < 1271946118 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :I'll have to read about that later. < 1271946130 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :fizzie, that dynamic debug info thing might help with that bug in generated code you mentioned < 1271946479 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :interesting line from that same release notes: < 1271946481 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :"# The ARM and Thumb code generators now using register scavenging for stack object address materialization.(FIXME: WHAT BENEFIT DOES THIS PROVIDE?)" < 1271946529 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hm that # seems to be a bug in firefox copy and paste < 1271946591 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :"# The X86-64 backend does not yet support the LLVM IR instruction va_arg. Currently, front-ends support variadic argument constructs on X86-64 by lowering them manually." <-- that has been there since ages. I wonder when they will fix it finally < 1271946674 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Doesn't it do that for
  • nodes deliberately? In which case it's a feature, not a bug. < 1271946685 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :a weird feature < 1271946701 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :mapping it to * or the middot char would make more sense < 1271946715 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :Why does * make more sense than # < 1271946738 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, for a dot list. It isn't a numbered list < 1271946746 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :Why does * make more sense than # < 1271946767 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :there is a dot on my screen for it. And * is closer to the same shape. Plus the usual way to render such lists in plain text files < 1271946791 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :* or - are amongst the more common ones. # I never seen in any README or such for this purpose < 1271946792 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :What the bullet is can be controlled by CSS anyway < 1271946810 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, yes, and? < 1271946822 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, now instead tell me why # makes more sense than * for this < 1271946831 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :So "there is a dot on my screen for it. And * is closer to the same shape." is not a sound argument < 1271946839 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :Because what is on the screen can vary. < 1271946843 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, so why # < 1271946846 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :Why not? < 1271946874 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, See above. * is more common in plain text for such lists < 1271946895 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :Maybe this dates to before * became common < 1271946898 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ever heard of "principle of least surprise to the user"? < 1271946915 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :I am completely uninterested in the bullet < 1271946917 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, you mean back to netscape 0.0.1 or such? < 1271946924 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :It could be ~»÷—–, whatever < 1271946930 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :any of* < 1271946944 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: Probably not that far :-P < 1271946991 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, well I think I have seen * for bulleted lists in really old text files. Older than the web certainly. < 1271947019 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :(heirloom toolkit age kind of things) < 1271947025 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :I've seen # for bulleted lists in text files < 1271947034 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, and that I have never seen < 1271947055 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :I've also seen - and § and others < 1271947074 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :well § is "paragraph". And yes "-" is quite common too < 1271947362 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :actually, some quick googling indicates that § is closer to "section". However the Swedish word "paragraf" is closer to this meaning. en:paragraph = sv:stycke. iirc sv:paragraf is mostly used in the context of law texts and similar < 1271947704 0 :nooga!unknown@unknown.invalid QUIT :Ping timeout: 252 seconds < 1271948778 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, btw the GCC 4.5 miscompliation seems to be a gcc bug. Unless you tell me (size_t)(-count) is not allowed by the standards. Here count is a int64_t < 1271948801 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :just printing the value out makes it not miscompile it btw < 1271948852 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: can you cut it down to a minimal testcase? < 1271948861 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, yes during the weekend I will do so < 1271948865 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :don't have time today < 1271948884 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, basically it miscompiles it so that: size_t stack_size = 6; stack_size -= (size_t)(-5); makes stack_size == 2 < 1271948895 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :wait < 1271948897 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :not -5 there < 1271948901 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :it is -(-5) < 1271948901 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :even < 1271948912 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :so 6-5 = 2 according to GCC :D < 1271948929 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :only at -O3 though < 1271949016 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: undefined behaivour < 1271949018 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :*behaviour < 1271949047 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :aren't you trying to subtract a very large number from a signed number? < 1271949054 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :that causes signed overflow, which is undefined < 1271949078 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, no < 1271949084 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, < 1271949085 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : } else if (count < 0) { < 1271949085 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : stack_discard(SOSS, (size_t)(-count)); < 1271949085 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : } < 1271949094 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :that will be a *positive* number < 1271949105 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ok, what type's the second argument to stack_discard? < 1271949106 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :-(-x) = x < 1271949115 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, size_t < 1271949121 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and count is a int64_t < 1271949144 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and the values that produce the bug are in the range "would fit in a signed char" < 1271949154 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :why are you casting explicitly then? that's normally asking to suppress warnings < 1271949205 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, iirc icc gave a spurious warning there otherwise. < 1271949213 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :or maybe some older gcc version did < 1271949263 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, point is however that there seems to be nothing undefined in that. Oh and just storing it to a size_t variable first and then passing that as argument hide the bug. So does printf("%zu\n",(size_t)(-count)) inside that block... < 1271949293 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :(as in: on the line before or the line after the call to stack_discard()) < 1271949311 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ok, that only seems to have undefined behaviour if count happens to be holding INT_MIN < 1271949313 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :which presumably it isn't < 1271949338 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, indeed it didn't. Also why would it be undefined at INT_MIN? Don't you mean SIZET_MIN or whatever it is called < 1271949349 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :um, INT64_T_MIN or whatever it's called < 1271949349 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :size_t is unsigned 64-bit after all < 1271949351 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1271949360 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :because the unary minus overflows before the cast happnes < 1271949361 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :*happens < 1271949408 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :anyway, it is hard to make a minimal test case. It seems to optimise differently with just trivial changes < 1271949813 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, for example -fno-inline removes this bug < 1271949846 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :hmm, it's a bug with the way stack_discard is inlined? < 1271949877 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, hm removing restrict on stack pointer to stack_discard "hides" the bug too < 1271949888 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :but I'm pretty sure restrict *is* valid there < 1271949903 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :hmm, messing with restrict you always have to be careful < 1271949925 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, so perhaps some combination of restrict and inlineing triggers a gcc bug < 1271949986 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, yes but restrict should be valid here. It can't alias anything else in the scope of that function. However in the caller it could, but those vars are not visible in stack_discard. < 1271950020 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :perhaps restrict is being inlined incorrectly? as in, it's inlining the restricts to refer to the wrong scope? < 1271950028 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :on the other hand I think restrict is fairly pointless there nowdays since there should be no other variable of that type visible at all nowdays < 1271950034 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, yes perhaps < 1271950039 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :but then that is the compiler bug < 1271950075 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :however I'm a bit unsure about how it can result in a one-off error like this... < 1271950105 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :off-by-one* < 1271950314 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, okay from checking the code it is doing 7-5 instead of 6-5 < 1271950320 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :which is even stranger < 1271950362 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :have you at least got a test case minimal enough to dump the compiler internals to see what's going on? < 1271950365 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :err, code as in asm and dumping registers < 1271950367 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :say, a couple of functions or so < 1271950367 0 :coppro!unknown@unknown.invalid QUIT :Remote host closed the connection < 1271950411 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, well that is what I'm not able to produce, I tried doing it and I had to have all the ip and funge stack logic needed to reach that point for it to happen. Oh and if you want to test this you need gcc 4.5.0 < 1271950446 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :also I don't know if it is x86_64 only or such, will test -m32 later < 1271950475 0 :Asztal!~asztal@host86-155-77-41.range86-155.btcentralplus.com JOIN :#esoteric < 1271950505 0 :Mathnerd314!unknown@unknown.invalid QUIT :Ping timeout: 260 seconds < 1271950521 0 :MizardX!~MizardX@unaffiliated/mizardx JOIN :#esoteric < 1271950605 0 :samosa!~Miranda@unaffiliated/samosa JOIN :#esoteric < 1271951065 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ACTION diffs the asm for good/bad code < 1271951110 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :okay that is strange < 1271951186 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :it seems to load it from memory without restrict, with restrict it reuses it from a register < 1271951192 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :but I think it reuses the wrong value < 1271951289 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, http://sprunge.us/IhiB < 1271951294 0 :Mathnerd314!~mathnerd3@dsl.6.28.53.206.cos.dyn.pcisys.net JOIN :#esoteric < 1271951341 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :basically %rsi is what it thinks contains the top of the stack value, but for some reason it doesn't contain that. < 1271951342 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ah, ok; the restrict's saying that the value can't have changed in the meantime, which is fine < 1271951353 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but the register itself has been clobbered without gcc noticing? < 1271951375 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, if so it did it. There is nothing else that could have clobbered it < 1271951379 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :yep < 1271951383 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and there is no inline asm anywhere near here. < 1271951393 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :unless assert() or something like that has inline asm < 1271951401 0 :lereah_!unknown@unknown.invalid QUIT :Quit: Leaving < 1271951430 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :what does that nopl statement do? it's an opcode I haven't seen before < 1271951436 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, I'm not sure either < 1271951441 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ACTION looks for the docs < 1271951451 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :it almost implies a no-op operation with an unusually large bitwidth, but that surely doesn't make sense < 1271951487 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, how so? For code alignment purposes perhaps? < 1271951499 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :if you need more than 1 byte < 1271951502 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :brb phone < 1271951619 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :bacl < 1271951621 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :back* < 1271951661 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, anyway I don't know what it is named in intel syntax, which while a lot harder to read, have names matching the AMD and Intel docs < 1271951683 0 :samosa!unknown@unknown.invalid QUIT :Quit: samosa < 1271951717 0 :oerjan!~oerjan@hagbart.nvg.ntnu.no JOIN :#esoteric < 1271951745 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, anyway, considering that it seems to use different nopl variants there I do think it is a wide nop < 1271951763 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :that takes an argument that does nothing? < 1271951784 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, the classical xchg %eax,%eax nop is iirc 1 byte and it takes an argument < 1271951799 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :heck it takes 2 of them < 1271951805 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :fair enough < 1271951843 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, and iirc intel docs mentions special-casing that one as a nop in modern CPUs, so it doesn't block other things depending on that register < 1271951927 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, anyway, from what I can tell yeah the restrict should be allowed there. And I can't find any place at all in the code where %rsi actually held the value gcc think it held < 1271951942 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I don't know what it is holding instead... < 1271951978 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, do you remember how lea worked? < 1271952003 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :it basically just uses the addressing system of the processor to do arithmetic < 1271952025 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, so what about: lea -0x1(%rcx),%rsi < 1271952074 0 :Gracenotes!unknown@unknown.invalid QUIT :Ping timeout: 276 seconds < 1271952079 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :that sets %rsi equal to %rcx minus 1 < 1271952106 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :huh < 1271952110 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :also huh @ "test %rsi,%rsi" < 1271952341 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oh it probably tests if it is zero. I forgot the rFLAGS register stuff < 1271952661 0 :cheater2!unknown@unknown.invalid QUIT :Read error: Connection reset by peer < 1271952714 0 :cheater2!~cheater@ip-80-226-44-157.vodafone-net.de JOIN :#esoteric < 1271953144 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :actually... hm < 1271953243 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :wth, if I remove the restrict on the argument to stack_pop_vector it give me *yet* another result < 1271953256 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I think restrict + inlining is completely broken in gcc 4.5 < 1271953306 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :except, if I remove all restrict it also gives me the wrong result < 1271953582 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ah wait there was still restrict on another called function. Well removing that too then it gives the right resylt < 1271953584 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :result* < 1271953593 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :but restrict *should* be valild there < 1271953595 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :valid* < 1271954075 0 :Gracenotes!~person@wikipedia/Gracenotes JOIN :#esoteric < 1271954205 0 :lament!~lament@S0106002312fa554a.vc.shawcable.net JOIN :#esoteric < 1271954395 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, possibly relevant from gcc 4.5 release notes: "The infrastructure for optimizing based on restrict qualified pointers has been rewritten and should result in code generation improvements. Optimizations based on restrict qualified pointers are now also available when using -fno-strict-aliasing." < 1271954636 0 :ais523!unknown@unknown.invalid QUIT :Remote host closed the connection < 1271955123 0 :Gracenotes!unknown@unknown.invalid QUIT :Read error: Connection reset by peer < 1271955243 0 :Gracenotes!~person@wikipedia/Gracenotes JOIN :#esoteric < 1271955359 0 :lament!unknown@unknown.invalid QUIT :Quit: lament < 1271956559 0 :tombom!tombom@wikipedia/Tombomp JOIN :#esoteric < 1271956678 0 :Gracenotes!unknown@unknown.invalid QUIT :Ping timeout: 260 seconds < 1271957265 0 :oerjan!unknown@unknown.invalid QUIT :Quit: leaving < 1271958524 0 :jcp!~jw@bzflag/contributor/javawizard2539 JOIN :#esoteric < 1271958779 0 :Mathnerd314!unknown@unknown.invalid QUIT :Ping timeout: 245 seconds < 1271958875 0 :Mathnerd314!~mathnerd3@dsl.6.28.53.206.cos.dyn.pcisys.net JOIN :#esoteric < 1271959852 0 :nooga!~nooga@188.74.79.101 JOIN :#esoteric < 1271960064 0 :augur!unknown@unknown.invalid QUIT :Ping timeout: 265 seconds < 1271960374 0 :Gracenotes!~person@wikipedia/Gracenotes JOIN :#esoteric < 1271961269 0 :pikhq!unknown@unknown.invalid QUIT :Read error: Connection reset by peer < 1271962200 0 :augur!~augur@129-2-175-79.wireless.umd.edu JOIN :#esoteric < 1271962445 0 :augur!unknown@unknown.invalid QUIT :Remote host closed the connection < 1271962602 0 :Slereah!unknown@unknown.invalid QUIT : < 1271962616 0 :Slereah!~nigger@ANantes-259-1-73-174.w92-135.abo.wanadoo.fr JOIN :#esoteric < 1271962898 0 :augur!~augur@129-2-175-79.wireless.umd.edu JOIN :#esoteric < 1271962924 0 :BeholdMyGlory!unknown@unknown.invalid NICK :BeholdMyGlory_ < 1271962942 0 :BeholdMyGlory_!unknown@unknown.invalid NICK :BeholdMyGlory < 1271963011 0 :nooga!unknown@unknown.invalid QUIT :*.net *.split < 1271963011 0 :MizardX!unknown@unknown.invalid QUIT :*.net *.split < 1271963011 0 :Deewiant!unknown@unknown.invalid QUIT :*.net *.split < 1271963353 0 :nooga!~nooga@188.74.79.101 JOIN :#esoteric < 1271963353 0 :MizardX!~MizardX@unaffiliated/mizardx JOIN :#esoteric < 1271963353 0 :Deewiant!~deewiant@kekkonen.cs.hut.fi JOIN :#esoteric < 1271966647 0 :pikhq!~pikhq@75-106-123-198.cust.wildblue.net JOIN :#esoteric < 1271966658 0 :augur!unknown@unknown.invalid QUIT :Remote host closed the connection < 1271966670 0 :tombom_!tombom@wikipedia/Tombomp JOIN :#esoteric < 1271966748 0 :tombom!unknown@unknown.invalid QUIT :Ping timeout: 264 seconds < 1271967875 0 :jcp!unknown@unknown.invalid QUIT :Quit: I will do anything (almost) for a new router. < 1271968613 0 :nooga!unknown@unknown.invalid QUIT :Ping timeout: 276 seconds < 1271968791 0 :oklofok!unknown@unknown.invalid QUIT :Ping timeout: 252 seconds < 1271971215 0 :nooga!~nooga@188.74.72.61 JOIN :#esoteric < 1271972959 0 :Mathnerd314!unknown@unknown.invalid QUIT :Ping timeout: 258 seconds < 1271973261 0 :Mathnerd314!~mathnerd3@dsl.6.28.53.206.cos.dyn.pcisys.net JOIN :#esoteric < 1271974503 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :fizzie, there? < 1271974507 0 :Phantom_Hoover!~chatzilla@cpc5-sgyl29-2-0-cust220.sgyl.cable.virginmedia.com JOIN :#esoteric < 1271974521 0 :BeholdMyGlory!unknown@unknown.invalid QUIT :Read error: Connection reset by peer < 1271974626 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I had an idea for how to figure out FOV of my phone, since it doesn't export that info in EXIF. What you do is you find an outdoor landscape (so the parallax we will get is insignificant) then you take a panorama with a "known good" camera, and _from the same spot_ you then take photos using the unknown camera. Then you include both in the panorama and let hugin estimate the fov from that. < 1271974650 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :of other there are other ways, from a 360° pano it should be possible to estimate it as well < 1271974697 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :What is the fov? < 1271974806 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :field of view. Well, what you really want is angle of view but no one seems to use the term "aov" for it < 1271974854 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Phantom_Hoover, don't know if you noticed it but both fizzie and me likes to make panorams and HDR images and such. < 1271974866 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :for panoramas, you need to know the angle of view really < 1271974939 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :I would think you'd get some sort of FOV estimate simply by taking a pile of shots, adding control points and letting the optimizer optimize one fov for all the images. Might not be quite as accurate, but still. < 1271974963 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :fizzie, how would that work? < 1271975002 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :is there a reason that you can't do it with some pins and a protractor? < 1271975063 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Phantom_Hoover, huh? < 1271975109 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Phantom_Hoover, I want to estimate that on my mobile phone camera. Which, unlike my rather large and bulky "real" camera, I have handy everywhere. < 1271975144 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :Well, if you're trying to work out the angle the pictures encompass, you could stick a couple of pins at the edge of the picture, keep the camera in a marked position, and then measure the angle. < 1271975156 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Phantom_Hoover, I tried with a protractor before (had to google what it was, didn't know the English word) but how does pins come into it? < 1271975167 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ah hm < 1271975171 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :For marking points < 1271975186 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Phantom_Hoover, well I tried moving myself to use some fixed points in that case < 1271975207 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :but the measurement error was too large to give any usable results < 1271975211 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :when I tried to measure the angle < 1271975214 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: I would think the correct FOV should lead to best control-point fit, since it's a different sort of image transformation (basically the image "size") than the yaw/pitch/roll positioning; so if you optimize positions and view, I think you should end up with some sort of view estimate. < 1271975224 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :more than 20° variation commonly < 1271975241 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :fizzie, hm. < 1271975275 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :fizzie, and then suddenly it rushes off to way wrong values (that commonly happens) < 1271975293 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :like from around 40° it jumps to 230° or such < 1271975364 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Yes, it can do that. But if you start with a reasonable guess and have good points, I'm thinking it should converge sensibly. Assuming the images are short with different enough directions. < 1271975383 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Doing the whole 360 degrees would probably help in that too. < 1271975396 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :fizzie, well yes but that is tricky with no tripod and so on < 1271975410 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I mean, not just tricky, near impossible < 1271975444 0 :kar8nga!unknown@unknown.invalid QUIT :Remote host closed the connection < 1271975502 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :I've done a couple of full-circle shots freehand, I wouldn't call it impossible. At least as long as there's nothing nearby so that parallax movement is minimized. < 1271975560 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :The Sun-Earth L4 Lagrange point would be one suitable place, for example. < 1271975673 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :I leave the conversation for like 5 minutes and you've gone from photography to Lagrange points? < 1271976005 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :GCC is refusing to accept __asm__("jmp %eax" < 1271976006 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric : : < 1271976008 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric : : "A" (bin)); as valid code. Any ideas? < 1271976032 0 :tombom_!unknown@unknown.invalid QUIT :Quit: Leaving < 1271976044 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Isn't that jmp *%eax (if you want an indirect jump) in the AT&T syntax? < 1271976045 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : I've done a couple of full-circle shots freehand, I wouldn't call it impossible. At least as long as there's nothing nearby so that parallax movement is minimized. <-- yes quite < 1271976050 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :Ah. < 1271976058 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :but I know no such huge open areas nearby < 1271976069 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :I don't know much about gas syntax in general. < 1271976084 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : The Sun-Earth L4 Lagrange point would be one suitable place, for example. <-- for what? < 1271976100 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: For a huge open area, with no parallax movement problems. < 1271976110 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hah < 1271976110 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Phantom_Hoover: goto **bin < 1271976117 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Erm. < 1271976119 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :goto *bin < 1271976129 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :Thanks. < 1271976132 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Right, it has that computed-goto extension too. < 1271976134 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :pikhq, depends on what he is doing < 1271976144 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :pikhq, it needs to be a label for that doesn't it? < 1271976148 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :well < 1271976152 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :a pointer to a label < 1271976167 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: No, it needs to be a void* that points to an address to jump to. < 1271976169 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :It's not. < 1271976185 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :pikhq, wrong, I read about this on the llvm blog today. < 1271976194 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :It's from some code I scrounged which is meant to jump to an address in memory that was mallocced. < 1271976198 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :*As documented* it needs to be a "pointer to a label", but it is treated as an indirect jump. < 1271976209 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :pikhq, older (pre-2.7) llvm versions used to handle it by turning it into a switch case < 1271976210 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: LLVM handles it differently from GCC. ;) < 1271976217 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :since that was the only way to represent it in the IR < 1271976223 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :2.7 can do a lot more < 1271976232 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :pikhq, and yes "as documented" < 1271976254 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :pikhq, please do not use undefined behaviour. It makes me said < 1271976255 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :sad* < 1271976274 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :It's documented with the typical sort of warnings; "You may not use this mechanism to jump to code in a different function. If you do that, totally unpredictable things will happen." < 1271976274 0 :BeholdMyGlory!~behold@unaffiliated/beholdmyglory JOIN :#esoteric < 1271976285 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Note: not "may happen", but "will happen". < 1271976322 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Still, I don't think they've quite managed to make absolutely sure that something unpredictable happens. < 1271976322 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :fizzie, yes and also you may not do anything except jump to that label pointer < 1271976323 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :But if one reads some raw machine code straight into memory how would one then execute it. < 1271976326 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :? < 1271976327 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :you may not try to covert the value to an int to print what it is with printf or such < 1271976338 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Phantom_Hoover, by doing what you did < 1271976347 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :not by computed goto < 1271976350 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :goto *bin or the inline asm? < 1271976352 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :OK. < 1271976356 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Phantom_Hoover, inline asm yeah < 1271976377 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Alternatively, you could make the machine code correspond to the platform's calling conventions and then use a function pointer. < 1271976412 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :That would be the *cleanest* thing to do. < 1271976422 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :And work on any compiler, not just a particular version of GCC. < 1271976435 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :Difficult. < 1271976449 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :Need to go anyway. < 1271976452 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :Bye. < 1271976453 0 :Phantom_Hoover!unknown@unknown.invalid QUIT :Quit: ChatZilla 0.9.86 [Firefox 3.5.9/20100401213457] < 1271976467 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :fizzie, yeah < 1271976475 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :fizzie, how does jitfunge with llvm do it? < 1271976482 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and how did the old backend do it? < 1271976492 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: Actually, the result of unary "&&" may be used whenever a constant void* would be valid. It's just the actual goto *foo that can break shit. < 1271976516 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :(erm. Constant of type void*, not a const void*.) < 1271976547 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :pikhq, not according to the same llvm blog post < 1271976562 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :which claimed llvm 2.6 was implementing this to the letter < 1271976571 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :(giving us a DS9K implementation) < 1271976577 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: I'm looking at the GCC documentation. < 1271976595 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :"This value is a constant and can be used wherever a constant of that type is valid." < 1271976601 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :On the result of unary &&. < 1271976620 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :for which gcc version? < 1271976623 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :try an older one < 1271976626 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :around 4.0 or so < 1271976628 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Looking at 4.4 ATM. < 1271976639 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: LLVM mostly handles the ugly details; calling ExecutionEngine's getPointerToFunction(Function*) method -- where Function is LLVM's function type that has the LLVM IR body and whatnot -- gives you a "void *" that you have to (a bit messily) cast to a function pointer. < 1271976686 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :"The value has type void *. This value is a constant and can be used wherever a constant of that type is valid." < 1271976693 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :4.0.4 documentation. < 1271976718 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :"The value has type void *. This value is a constant and can be used wherever a constant of that type is valid." < 1271976724 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :3.4.6 documentation. < 1271976746 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :"The value has type void *. This value is a constant and can be used wherever a constant of that type is valid." < 1271976752 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :3.3.6 documentation. < 1271976775 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hm < 1271976776 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :I'll let you know if I find a change in the documentation of that this side of the EGCS merge. < 1271976785 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :pikhq, strange then I guess I was wrong < 1271976790 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :(The old jitfunge code generator also made the necessary function bits so that it was callable via a function pointer.) < 1271976812 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :pikhq, but see http://blog.llvm.org/2010/01/address-of-label-and-indirect-branches.html < 1271976832 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :"An interesting aspect about this extension is that the only thing you are allowed to do with an address taken label is to jump to it. While it is widely misused for other things (e.g. the BUG macro in the linux kernel, which prints the address of a label on error), you are really really only allowed jump to it. You are not allowed to use it in an inline asm, inspect the value, or do anything else." < 1271976836 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :which is then wrong I guess < 1271976846 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :pikhq, you should contact the person who wrote it < 1271976855 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: I should. < 1271976877 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Though LLVM's implementation was, in fact, entirely correct. < 1271976894 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :GCC makes no guarantee that the address in question is an *actual* address. < 1271976910 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Just that when you dereference it for an indirect goto, it jumps to the correct address. < 1271976931 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :pikhq, yeah I guess llvm could do 1,2,3,4,... < 1271976935 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :(in 2.6) < 1271976942 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Which is what it does. < 1271976951 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :pikhq, what? 1-indexed? ;P < 1271976960 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :it should do zero-indexed of course ;P < 1271976963 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Yes. < 1271976969 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :I've looked at the resulting assembly. ;) < 1271976975 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hah < 1271976984 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :1-indexed would be pretty strange though < 1271977035 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :fizzie, why did you do it as a function pointer btw? < 1271977051 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :surely using a custom calling convention would have had less overhead? < 1271977070 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :well I guess less messing with storing registers in other ways... < 1271977125 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Though it'd be the cleanest way to interface with the C code. There might have been some calls inside the generated code that used a non-standard convention, though. < 1271977189 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ah < 1271977236 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: C calling conventions have very low overhead. < 1271977252 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Particularly in x86_64, where passing in the registers is the norm. < 1271977277 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :The Scheme compiler I wrote for a course recently didn't use the C calling conventions, but that's perhaps more reasonable. < 1271977327 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :x86 tends to handle all the stack-handling stuff quickly. ;) < 1271977327 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :heh < 1271977327 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :fizzie, oh, how comes? < 1271977335 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :fizzie, and did you implement call/cc? < 1271977346 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: C calling conventions clash with most Scheme implementation methods. < 1271977359 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :right < 1271977383 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Yes, it did continuations; there's not much point otherwise. < 1271977420 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Used the ridiculously trivial way of just putting the "stack" under garbage collection, I think. < 1271977431 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hah < 1271977449 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :fizzie, own gc? < 1271977486 0 :jcp!~jw@bzflag/contributor/javawizard2539 JOIN :#esoteric < 1271977619 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Yes, a very simple one. I think it was a copying/compacting one. Didn't have much time to twiddle with that. < 1271977664 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :fizzie, why not reuse an existing one? < 1271977669 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :NIH NIH < 1271977690 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :call/cc implementation: http://pastebin.com/fsT5KaRn < 1271977703 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :That's not very many instructions. < 1271977779 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :heh < 1271977788 0 :oerjan!~oerjan@hagbart.nvg.ntnu.no JOIN :#esoteric < 1271977792 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oerjan, hi < 1271977797 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :hi AnMaster < 1271977817 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :bah oklopol isn't here < 1271977861 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :i had another comment on defining tuples in toi < 1271977903 0 :augur!~augur@129-2-175-79.wireless.umd.edu JOIN :#esoteric < 1271977991 0 :Mathnerd314!unknown@unknown.invalid QUIT :Quit: ChatZilla 0.9.86-rdmsoft [XULRunner 1.9.2.2/20100316074819] < 1271978070 0 :BeholdMyGlory!unknown@unknown.invalid QUIT :Remote host closed the connection < 1271978293 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric : It's documented with the typical sort of warnings; "You may not use this mechanism to jump to code in a different function. If you do that, totally unpredictable things will happen." < 1271978310 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :can you use it in a different invocation of the same function? < 1271978382 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :probably it will work, but imagine this is in a dlopen()ed library. then you unload and reload the library < 1271978388 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :using it then would be stupid < 1271978406 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :well i was really asking whether it was guaranteed to work < 1271978418 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :no idea < 1271978426 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :probably not < 1271978443 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: It doesn't seem to say, explicitly, but the example there is: "One way of using these constants is in initializing a static array that will serve as a jump table: static void *array[] = { &&foo, &&bar, &&hack };" < 1271978460 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :fizzie, yes but that is quite different < 1271978475 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :since it would be re-initialised on dlopen() < 1271978490 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :as opposed to saving it in a variable outside the library < 1271978508 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :There's also the "alternate way": < 1271978523 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :"An alternate way to write the above example is < 1271978523 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric : static const int array[] = { &&foo - &&foo, &&bar - &&foo, < 1271978523 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric : &&hack - &&foo }; < 1271978523 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric : goto *(&&foo + array[i]);" < 1271978542 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :"This is more friendly to code living in shared libraries, as it reduces the number of dynamic relocations that are needed, and by consequence, allows the data to be read-only." < 1271978566 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ah < 1271978588 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :&&foo - &&foo would be 0? < 1271978602 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :this seems to imply you can use pointer arithmetic on labels in the same function, then < 1271978629 0 :FireFly!unknown@unknown.invalid QUIT :Quit: Hey! Listen! < 1271978761 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hm < 1271978807 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: Yes, it is in fact a valid void*. < 1271978843 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :The only thing that will break is going to a label in a different function. < 1271978843 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :http://www.google.com/search?rlz=1C1CHNR_enUS321US321&sourceid=chrome&ie=UTF-8&q=BF-RLE < 1271978852 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :would dlopen()ing libpthreads instead of linking to it result in mayhem do you think? < 1271978859 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :same question goes for libm and libc < 1271978863 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric ::( at people pirating my bf-isomorphic esolang :( < 1271978865 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :lol < 1271978882 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Also, the pointer in question is not necessarily an actual numerical address. But, this is never guaranteed by C *ever*. < 1271978883 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Sgeo, ? < 1271978891 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster, my link < 1271978895 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :Look at the first result < 1271978901 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: well from the discussion so far it seems like saving a label outside the function is dubious if it can be reloaded < 1271978914 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :"Fmin.v ((Rle min r) /\ ((f:float) (Fbounded b f) -> (Rle f r) ->(Rle f min))). (* Min is a projector *) Theorem ProjectMin: (ProjectorP isMin). ... www-sop.inria.fr/lemme/AOC/coq/Fmin.html - Cached - Filter"? < 1271978917 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Sgeo, that one? < 1271978922 0 :BeholdMyGlory!~behold@unaffiliated/beholdmyglory JOIN :#esoteric < 1271978928 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster, no < 1271978930 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: Only dubious because you might be able to jump to the label from outside the function. < 1271978930 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :or do you mean the second one? which seems to fit better with what you said < 1271978937 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Sgeo, the second one is kazaa < 1271978941 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Which will *usually* break the stack frame. < 1271978941 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :which seems pretty strange < 1271978945 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :That's what I was referring to < 1271978948 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :In very unusual ways, no less. < 1271978954 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :For me, it's the top result *shrug* < 1271978958 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Sgeo, yeah, do no assume the results are in the same order for everyone < 1271978961 0 :BeholdMyGlory!unknown@unknown.invalid QUIT :Remote host closed the connection < 1271978973 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :And of course, in pre-2.7 LLVM, it'll just have the compiler kick you in the balls. < 1271978976 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: hm this means the label _cannot_ be implemented as the actual code address pointer < 1271978984 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :The Fmin one is the 7th down for me < 1271978986 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Yes it can. < 1271978997 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Sgeo, well I'm logged in for gmail < 1271979002 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :that would probably affect stuff < 1271979010 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :ACTION is also logged in < 1271979013 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :It's just undefined behavior if you jump to it when you're not in the function. < 1271979014 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: if the function can be reloaded, that would break it < 1271979020 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and that would also personalise the results < 1271979022 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :differently < 1271979023 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :"Can be reloaded" wha? < 1271979041 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :When I'm not logged in, Kazaa does NOT appear in the first page of results < 1271979046 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :You mean... Uh... Linked in at a different address? < 1271979046 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: AnMaster was pointing out functions from shared libraries < 1271979048 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :Does Google think I'm a pirate? lol < 1271979050 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :yes < 1271979052 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Oh, yes. < 1271979063 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oerjan, that only applies if you reload the shared library < 1271979074 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :since most likely the library will end up elsewhere < 1271979085 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :Just logged back in, but it's not appearing anymore < 1271979087 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :the DS9K llvm-2.6 implementation *would* have worked there < 1271979093 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :mhm < 1271979109 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Sgeo, see, it is unreliable to depend on the order < 1271979123 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :If you are reloading a shared library into the same program's address space, but a different address, you are doing nasty things with the shared linker and deserve all the breaking you get. < 1271979145 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : If you are reloading a shared library into the same program's address space, but a different address, you are doing nasty things with the shared linker and deserve all the breaking you get. <-- eh? < 1271979153 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :pikhq, I meant *unloading* and *reloading* < 1271979157 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :Was GrainFimple ever implemented? < 1271979159 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Yes. < 1271979181 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :pikhq, due to ASLR it will most likely end up elsewhere < 1271979184 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :If you retain a pointer to *anything* in the shared library, you get to keep both pieces. < 1271979275 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :hm i guess it's unreasonable to consider a reloaded library function to _be_ the same function in all respects < 1271979322 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: Any stored pointers to anything in a reloaded library will break, this is just fact. :) < 1271979329 0 :Asztal!unknown@unknown.invalid QUIT :Ping timeout: 245 seconds < 1271979353 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :indeed < 1271979355 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :It's not just the stored labels, it's any global or static variable. < 1271979372 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: although fizzie's "alternative method" quote seems to imply it could be safe to save _differences_ of label pointers. or maybe that's just an implementation convenience. < 1271979372 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :(including function pointers) < 1271979373 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :or function pointer < 1271979384 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: Yes, that is. < 1271979402 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oerjan, only difference in the same function < 1271979410 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Because then, you're just encoding the offset from a different label. < 1271979415 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: well duh < 1271979431 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :So long as the actual *data* isn't changing, you're good. < 1271979465 0 :Asztal!~asztal@host86-159-108-184.range86-159.btcentralplus.com JOIN :#esoteric < 1271979469 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :mhm < 1271979481 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :If the dynamic library has changed between loads, well, you still geet to keep both pieces. < 1271979485 0 :Mathnerd314!~mathnerd3@128.198.96.213 JOIN :#esoteric < 1271979540 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I wonder if with PIE it would be possible to do a "user space kexec()" basically? < 1271979551 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :loading a new binary and jumping to it < 1271979562 0 :coppro!~coppro@unaffiliated/coppro JOIN :#esoteric < 1271979570 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :i don't think that's legal proto-indoeuropean < 1271979571 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :That's... What exec does. And you can actually do it in userspace. < 1271979580 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oerjan, ? < 1271979593 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :You just need to implement the ELF loading manually. < 1271979595 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :pikhq, no exec() would free the old address space < 1271979597 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ACTION swats AnMaster's pun detector into place -----### < 1271979604 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: Ah, yes. < 1271979605 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: http://codu.org/projects/gelfload/ :P < 1271979605 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I want to keep the values in static variables and such < 1271979611 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and all malloc()ed data < 1271979614 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Still. You can do it without PIE just fine. < 1271979619 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Erm. < 1271979623 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :pikhq, well then you need to load it in the same place < 1271979630 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :with PIE you can load it anywhere you want < 1271979643 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :You actually can relocate ELF files without it being PIE. < 1271979646 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Gregor, g for gnome or g for gnu? < 1271979659 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: No. < 1271979665 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :pikhq, yes but that is a PITA < 1271979669 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Gregor, well what then? < 1271979682 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: Read that line again. < 1271979686 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :PIE is actually only used so the relocation can be done without modifying any memory. < 1271979687 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: Your own line that is. < 1271979693 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Same for PIC. < 1271979711 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :"4 months Gregor Richards Initial import.default tip" <-- 1) didn't use vcs from the start? 2) no longer working on it? < 1271979729 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Gregor, which one of them? < 1271979749 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: You're... Dense. < 1271979760 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :pikhq, I'm sleep deprived < 1271979760 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: EVERY SINGLE ONE in which you asked one _G_regor Richards what the GEE in gelfload stands for. < 1271979761 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :practically a black hole, there < 1271979770 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Gregor, oh thanks < 1271979772 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :right < 1271979790 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oerjan, I still don't get your pun < 1271979792 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: I developed it as part of a defunct project called crosslibc, then split it out a while ago. < 1271979793 0 :Oranjer!~HP_Admini@adsl-34-17-217.cae.bellsouth.net JOIN :#esoteric < 1271979804 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Gregor, I know what it does < 1271979811 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: PIE = proto-indoeuropean, common linguist abbreviation < 1271979812 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :you told us before < 1271979831 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: That was my answer to your question about VCS X_X < 1271979832 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oerjan, oh, never heard that. to me PIE = position independent executable < 1271979849 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oerjan, alternatively (but that is seldom all caps) it is something you can eat < 1271979859 0 :Asztal!unknown@unknown.invalid QUIT :Ping timeout: 258 seconds < 1271979860 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Gregor, oh right thanks < 1271979890 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: still, all the pieces for the pun were right there in the channel < 1271979898 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oerjan, mhm < 1271979970 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA < 1271979972 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: with that and the gelfload i think we can conclude you are acronymically challenged :) < 1271979974 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :I MUST CODE < 1271979981 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oerjan, okay < 1271979997 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oerjan, OPASFF < 1271980008 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :(disclosure: i didn't get g = Gregor either) < 1271980013 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oerjan, :D < 1271980015 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Gregor, ^ < 1271980015 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :argh! < 1271980028 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oerjan, why "argh"? < 1271980035 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :OPASFF < 1271980058 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oerjan, oh but MPAAFFS, WALITC < 1271980080 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: can we just agree to forget this ever happened < 1271980090 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oerjan, forget what happened? < 1271980096 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :i dunno < 1271980100 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :nooga: THOU SHALT CODE A FUNGE < 1271980122 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :0"EGNUF A EDOC TLAHS OUHT" < 1271980132 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oerjan, anyway, I don't think I should explain what it was due to YWGMAMFMSABP < 1271980135 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :parallel, supercomputer funge < 1271980159 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :you realize i'm not even trying to decode you at this point? < 1271980164 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oerjan, hah < 1271980190 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oerjan, well it was "Oerjan's Puns Are Sometimes FarFetched" in the first one ;P < 1271980212 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :oh, but that was obvious < 1271980218 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ACTION ducks < 1271980221 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric ::P < 1271980250 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :"my puns are also far-fetched sometimes" < 1271980268 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oerjan, yes < 1271980296 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oerjan, but when you say it you can remove the "also" < 1271980297 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric ::P < 1271980311 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :since you *are* oerjan < 1271980321 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :the one and almost only < 1271980335 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :what? < 1271980339 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :TOAAOO < 1271980347 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :yes you said that < 1271980369 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :"the one and only" is a cliche phrase < 1271980377 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ah < 1271980379 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :right < 1271980402 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :WALITC == "well, at least in this case" < 1271980430 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I keep reading that as "waltic" < 1271980435 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :rather than "walitc" < 1271980660 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :" This specifies the alignment for an integer type of a given bit size. The value of size must be in the range [1,2^23)." < 1271980667 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :what a strange range < 1271980710 0 :coppro!unknown@unknown.invalid QUIT :Ping timeout: 258 seconds < 1271980741 0 :Asztal!~asztal@host86-156-193-216.range86-156.btcentralplus.com JOIN :#esoteric