< 1099785619 0 :heatsink!~heatsink@1106-wstoughton.halo.soltec.net JOIN :#esoteric < 1099796298 0 :deltab!unknown@unknown.invalid QUIT :"BitchX-1.0c19 -- just do it." < 1099797653 0 :deltab!~deltab@espians.com JOIN :#esoteric < 1099798284 0 :jDoctor!~rex@pcp0010699030pcs.manass01.va.comcast.net JOIN :#esoteric < 1099798287 0 :slava!~slava@CPE00096ba44261-CM000e5cdfda14.cpe.net.cable.rogers.com JOIN :#esoteric < 1099798290 0 :jDoctor!unknown@unknown.invalid PRIVMSG #esoteric :woos < 1099798297 0 :jDoctor!unknown@unknown.invalid PRIVMSG #esoteric :this place EXISTs < 1099798307 0 :heatsink!unknown@unknown.invalid PRIVMSG #esoteric :ssh, don't tell anyone! < 1099798316 0 :jDoctor!unknown@unknown.invalid PRIVMSG #esoteric :wont. < 1099798348 0 :jDoctor!unknown@unknown.invalid PRIVMSG #esoteric :but if everyone came here -- you know -- to keep the secret, would it still be a secret? < 1099798414 0 :heatsink!unknown@unknown.invalid PRIVMSG #esoteric :No. Everyone would have to leave here to keep the secret. < 1099798433 0 :jDoctor!unknown@unknown.invalid PRIVMSG #esoteric :so uh whats the norm discussion here? < 1099798446 0 :heatsink!unknown@unknown.invalid PRIVMSG #esoteric :nothin' < 1099798462 0 :heatsink!unknown@unknown.invalid PRIVMSG #esoteric :This channel isn't active most of the time < 1099798473 0 :slava!unknown@unknown.invalid PRIVMSG #esoteric :lets make it active! < 1099798478 0 :heatsink!unknown@unknown.invalid PRIVMSG #esoteric :A while ago, someone wrote a C -> brainfuck compiler < 1099798481 0 :slava!unknown@unknown.invalid PRIVMSG #esoteric :wow < 1099798494 0 :heatsink!unknown@unknown.invalid PRIVMSG #esoteric :And before that, I wrote an unlambda -> scheme compiler < 1099798517 0 :heatsink!unknown@unknown.invalid PRIVMSG #esoteric :The conversation about implementing such things can get interesting < 1099798533 0 :slava!unknown@unknown.invalid PRIVMSG #esoteric :i'm working on stack effect inference for postfix languages < 1099798548 0 :heatsink!unknown@unknown.invalid PRIVMSG #esoteric :ACTION has no idea what that is < 1099798565 0 :heatsink!unknown@unknown.invalid PRIVMSG #esoteric :what is that? < 1099798581 0 :slava!unknown@unknown.invalid PRIVMSG #esoteric :eg, the stack effect of 2 2 + is [ 0 | 1 ] because it takes no values from the stack, but leaves one < 1099798598 0 :slava!unknown@unknown.invalid PRIVMSG #esoteric :the stack effect of dup * is [ 1 | 1 ], because it takes one value, duplicates it, multiplies the two duplicates, to yield one value < 1099798622 0 :slava!unknown@unknown.invalid PRIVMSG #esoteric :it gets more complicated when you have conditionals and recursion, but i have the theory worked out, as well as an algorithm < 1099798627 0 :heatsink!unknown@unknown.invalid PRIVMSG #esoteric :Doesn't 2 2 + take two values from the stack and then add one? < 1099798640 0 :slava!unknown@unknown.invalid PRIVMSG #esoteric :+ by itself has effect [ 2 | 1 ] < 1099798649 0 :heatsink!unknown@unknown.invalid PRIVMSG #esoteric :oh I see < 1099798650 0 :slava!unknown@unknown.invalid PRIVMSG #esoteric :but 2 2 + has effect [ 0 | 1 ] since the input parameters to + are provided already < 1099798668 0 :heatsink!unknown@unknown.invalid PRIVMSG #esoteric :so what is the stack effect of printf? < 1099798676 0 :deltab!unknown@unknown.invalid PRIVMSG #esoteric :2 has effect [ 0 | 1 ] < 1099798689 0 :jDoctor!unknown@unknown.invalid PRIVMSG #esoteric :printf is 0 | 1 < 1099798693 0 :jDoctor!unknown@unknown.invalid PRIVMSG #esoteric :I mean < 1099798696 0 :jDoctor!unknown@unknown.invalid PRIVMSG #esoteric :1 | 0 < 1099798697 0 :slava!unknown@unknown.invalid PRIVMSG #esoteric :heatsink, no, variadic functions are not handled < 1099798702 0 :heatsink!unknown@unknown.invalid PRIVMSG #esoteric :ok < 1099798721 0 :slava!unknown@unknown.invalid PRIVMSG #esoteric :there is an algebra < 1099798737 0 :slava!unknown@unknown.invalid PRIVMSG #esoteric :[ a | b ] * [ c | d ] = [ a + max(0,c-b) | d + max(0,b-c) ] < 1099798756 0 :heatsink!unknown@unknown.invalid PRIVMSG #esoteric :os that composition? < 1099798757 0 :slava!unknown@unknown.invalid PRIVMSG #esoteric :so the stack effect of 2 2 + is [ 0 | 1 ] * [ 0 | 1 ] * [ 2 | 1 ] < 1099798768 0 :slava!unknown@unknown.invalid PRIVMSG #esoteric :and you can calculate this using the above formula as [ 0 | 1 ] < 1099798812 0 :jDoctor!unknown@unknown.invalid PRIVMSG #esoteric :thats some cool stuff < 1099798818 0 :heatsink!unknown@unknown.invalid PRIVMSG #esoteric :This looks useful < 1099798827 0 :jDoctor!unknown@unknown.invalid PRIVMSG #esoteric :it should lead to computer-generated stack effects, right? < 1099798844 0 :heatsink!unknown@unknown.invalid PRIVMSG #esoteric :You could type-check postfix languages, and express them in prefix or infix form < 1099798876 0 :slava!unknown@unknown.invalid PRIVMSG #esoteric :i'm working on type inference next. < 1099798889 0 :heatsink!unknown@unknown.invalid PRIVMSG #esoteric :do both branches of an if-then-else have to have the same stack effect to be legal? < 1099798914 0 :jDoctor!unknown@unknown.invalid PRIVMSG #esoteric :you cant inference an ifte, can you.. < 1099798914 0 :slava!unknown@unknown.invalid PRIVMSG #esoteric :they don't have to be equal, but balanced. the balance of [ a | b ] is b-a < 1099798953 0 :heatsink!unknown@unknown.invalid PRIVMSG #esoteric :oic < 1099798954 0 :slava!unknown@unknown.invalid PRIVMSG #esoteric :so [ dup * ] [ ] ifte is valid < 1099798964 0 :slava!unknown@unknown.invalid PRIVMSG #esoteric :since after the ifte, the stack height is constant, sonce the two branches are balanced < 1099798976 0 :slava!unknown@unknown.invalid PRIVMSG #esoteric :effect of dup * is [ 1 | 1 ], effect of [ ] is [ 0 | 0 ] < 1099798978 0 :slava!unknown@unknown.invalid PRIVMSG #esoteric :and 0-0 = 1-1 < 1099798991 0 :slava!unknown@unknown.invalid PRIVMSG #esoteric :so the effect of [ dup * ] [ ] ifte is the maximum element of the two < 1099798996 0 :slava!unknown@unknown.invalid PRIVMSG #esoteric :which is [ 1 | 1 ] in this case < 1099799019 0 :heatsink!unknown@unknown.invalid PRIVMSG #esoteric :ok < 1099799034 0 :slava!unknown@unknown.invalid PRIVMSG #esoteric :this is valid, since i have proofs that balanced sets of stack effects behave just like the maximimal element under pairwise composition < 1099799050 0 :heatsink!unknown@unknown.invalid PRIVMSG #esoteric :Do you have problems with algorithms that use a sentinel value to terminate recursion? < 1099799066 0 :slava!unknown@unknown.invalid PRIVMSG #esoteric :words that take variable numbers of arguments off the stack? < 1099799080 0 :heatsink!unknown@unknown.invalid PRIVMSG #esoteric :yes, and then put the same number of arguments back on < 1099799087 0 :slava!unknown@unknown.invalid PRIVMSG #esoteric :i don't support these. < 1099799117 0 :heatsink!unknown@unknown.invalid PRIVMSG #esoteric :ok < 1099799207 0 :heatsink!unknown@unknown.invalid PRIVMSG #esoteric :What language syntax do you use? Is it taken from an existing language? < 1099799222 0 :slava!unknown@unknown.invalid PRIVMSG #esoteric :factor < 1099799271 0 :heatsink!unknown@unknown.invalid PRIVMSG #esoteric :Hey, the inventor of factor is named slava too! what a coincidence! < 1099799277 0 :heatsink!unknown@unknown.invalid PRIVMSG #esoteric :;) < 1099799277 0 :jDoctor!unknown@unknown.invalid PRIVMSG #esoteric :hehe.. < 1099799286 0 :jDoctor!unknown@unknown.invalid PRIVMSG #esoteric :sssh... secret < 1099799306 0 :heatsink!unknown@unknown.invalid PRIVMSG #esoteric :ooh... sorry. < 1099799313 0 :slava!unknown@unknown.invalid PRIVMSG #esoteric :no secret < 1099799324 0 :slava!unknown@unknown.invalid PRIVMSG #esoteric :heatsink, the algorithm and algebra is applicable to any postfix language though < 1099799330 0 :jDoctor!unknown@unknown.invalid PRIVMSG #esoteric :is that the secret? that these is no secret? < 1099799342 0 :jDoctor!unknown@unknown.invalid PRIVMSG #esoteric :s/these/there < 1099799389 0 :heatsink!unknown@unknown.invalid PRIVMSG #esoteric :I'm trying to learn type inference. Can you recommend any references? < 1099799466 0 :heatsink!unknown@unknown.invalid PRIVMSG #esoteric :ooh, you do continuations too! < 1099799500 0 :slava!unknown@unknown.invalid PRIVMSG #esoteric :yes, but I don't infer stack effects of code involving them. < 1099799511 0 :heatsink!unknown@unknown.invalid PRIVMSG #esoteric :oh. < 1099800204 0 :slava!unknown@unknown.invalid PART #esoteric :? < 1099805368 0 :jDoctor!unknown@unknown.invalid QUIT :"leaving" < 1099814399 0 :clog!unknown@unknown.invalid QUIT :ended < 1099814400 0 :clog!unknown@unknown.invalid JOIN :#esoteric < 1099816114 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :why do you have those discussions at 05-06am? < 1099816768 0 :heatsink!unknown@unknown.invalid PRIVMSG #esoteric :I don't < 1099817069 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :05:50:44 < heatsink> ooh, you do continuations too! < 1099817072 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :see, with proof. < 1099819801 0 :heatsink!unknown@unknown.invalid PRIVMSG #esoteric :11:50:44 < heatsink> ooh, you do continuations too! < 1099819803 0 :heatsink!unknown@unknown.invalid PRIVMSG #esoteric :12:50:44 < heatsink> ooh, you do continuations too! < 1099819807 0 :heatsink!unknown@unknown.invalid PRIVMSG #esoteric :01:50:44 < heatsink> ooh, you do continuations too! < 1099819812 0 :heatsink!unknown@unknown.invalid PRIVMSG #esoteric ::p < 1099819823 0 :heatsink!unknown@unknown.invalid PRIVMSG #esoteric :Well, I'm sure it was 5:50 _somewhere_. < 1099822409 0 :heatsink!unknown@unknown.invalid QUIT :"Leaving" < 1099843787 0 :lindi-!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1099844016 0 :lindi-!~lindi@kulho150.adsl.netsonic.fi JOIN :#esoteric < 1099844915 0 :lindi-!unknown@unknown.invalid QUIT :tolkien.freenode.net irc.freenode.net < 1099844915 0 :deltab!unknown@unknown.invalid QUIT :tolkien.freenode.net irc.freenode.net < 1099844915 0 :ZeroOne!unknown@unknown.invalid QUIT :tolkien.freenode.net irc.freenode.net < 1099845048 0 :ZeroOne!~vsaalo@kekkonen.cs.hut.fi JOIN :#esoteric < 1099845264 0 :lindi-!~lindi@kulho150.adsl.netsonic.fi JOIN :#esoteric < 1099845264 0 :deltab!~deltab@espians.com JOIN :#esoteric < 1099845560 0 :lindi-_!~lindi@kulho150.adsl.netsonic.fi JOIN :#esoteric < 1099845871 0 :lindi-!unknown@unknown.invalid QUIT :Read error: 110 (Connection timed out) < 1099846614 0 :lindi-_!unknown@unknown.invalid NICK :lindi- < 1099850839 0 :andreou!~peace@195.130.98.213 JOIN :#esoteric < 1099850881 0 :andreou!unknown@unknown.invalid PRIVMSG #esoteric :hm < 1099850886 0 :andreou!unknown@unknown.invalid PRIVMSG #esoteric :heads up < 1099851045 0 :andreou!unknown@unknown.invalid QUIT :Client Quit < 1099863974 0 :calamari_!Jeffry@dialup-4.240.111.156.Dial1.Phoenix1.Level3.net JOIN :#esoteric < 1099864330 0 :calamari_!unknown@unknown.invalid QUIT :"Leaving" < 1099866124 0 :lindi-!unknown@unknown.invalid PRIVMSG #esoteric :anybody thought about building a smart compiler that could optimize by replacing poor algorithms with better ones? < 1099866164 0 :lindi-!unknown@unknown.invalid PRIVMSG #esoteric :so if the programmer has used e.g. bubble sort the compiler would detect that and actually use quick sort < 1099866379 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :well: algorithm detection is non-trivial, and it's pretty hard to make sure there are no unexpected effects. "normal" optimizations are hard enough. haven't heard of any compiler that'd do something like that. < 1099866493 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :methinks it's at least much simpler to provide general algorithms as libraries, and have the programmer use those. why would anyone use bubble sort when the c standard library has a relatively working qsort? < 1099866538 0 :lindi-!unknown@unknown.invalid PRIVMSG #esoteric :no idea < 1099866571 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :of course implementing something like that might be an interesting exercise, I don't deny that. < 1099866617 0 :lindi-!unknown@unknown.invalid PRIVMSG #esoteric :indeed, i think i should start by defining some really simple language and experiment with it < 1099866678 0 :lindi-!unknown@unknown.invalid PRIVMSG #esoteric :ok, but if you ever hear anything like this please let me know :) < 1099866680 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :not related, but mooz could perhaps say something here about his "random programs" experiments. < 1099866697 0 :lindi-!unknown@unknown.invalid PRIVMSG #esoteric :hmm < 1099866700 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :it's esoteric enough. < 1099866734 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :apparently he keeps finding composite-number-factoring algorithms at a surprisingly high rate. :p < 1099866736 0 :lindi-!unknown@unknown.invalid PRIVMSG #esoteric :i thought that if you could express e.g. quick sort in 6 bytes then it would be possible to simply brute force all possible algorithms that fit in 6 bytes < 1099866852 0 :lindi-!unknown@unknown.invalid PRIVMSG #esoteric :it should prove that the new algorithm 1) does the same as the original algorithm and 2) is faster in all/some/average case/s < 1099866937 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :me will probably try to sleep some now, have that mat-1.403 exam tomorrow. infinite-dimensional vector spaces, path integrals of complex functions using residues, QR factorizations of matrices. yay! < 1099866952 0 :lindi-!unknown@unknown.invalid PRIVMSG #esoteric :and i have mat-1.411 :P < 1099866961 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :is that C1? < 1099866964 0 :lindi-!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1099866985 0 :lindi-!unknown@unknown.invalid PRIVMSG #esoteric :discrete math this time < 1099866994 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :seems like it's the standard 'second mid-term of maths courses' day tomorrow. < 1099867031 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :besides, I have to demo my scheme-exercise (11 months past the original due date) tomorrow. :p < 1099867033 0 :lindi-!unknown@unknown.invalid PRIVMSG #esoteric :yep. and indeed, it's probably wise to sleep now < 1099867053 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :hey, where did my ircnet connection go. < 1099867066 0 :lindi-!unknown@unknown.invalid PRIVMSG #esoteric :anybody else on the channel: feel free to comment < 1099867159 0 :lindi-!unknown@unknown.invalid PRIVMSG #esoteric :so, good night < 1099867255 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :night. < 1099867710 0 :ZeroOne!unknown@unknown.invalid QUIT :Connection timed out