< 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