< 1123200089 0 :{^Raven^}!unknown@unknown.invalid PRIVMSG #esoteric :hullo peeps and peepettes < 1123200227 0 :jix!unknown@unknown.invalid PART #esoteric :? < 1123204663 0 :yrz\werk!unknown@unknown.invalid QUIT :Read error: 110 (Connection timed out) < 1123204934 0 :int-e!unknown@unknown.invalid PART #esoteric :? < 1123210172 0 :calamari!~calamari@dialup-4.240.246.199.Dial1.Phoenix1.Level3.net JOIN :#esoteric < 1123211177 0 :calamari_!unknown@unknown.invalid QUIT :Read error: 110 (Connection timed out) < 1123212409 0 :calamari!unknown@unknown.invalid QUIT :"Leaving" < 1123215244 0 :heatsink!~heatsink@c-24-61-94-111.hsd1.nh.comcast.net JOIN :#esoteric < 1123215702 0 :calamari!~calamari@dialup-4.240.246.199.Dial1.Phoenix1.Level3.net JOIN :#esoteric < 1123216181 0 :lament!unknown@unknown.invalid QUIT :kornbluth.freenode.net irc.freenode.net < 1123217101 0 :lament!~lament@S010600110999ad06.vc.shawcable.net JOIN :#esoteric < 1123219385 0 :heatsink!unknown@unknown.invalid QUIT :kornbluth.freenode.net irc.freenode.net < 1123219385 0 :tokigun!unknown@unknown.invalid QUIT :kornbluth.freenode.net irc.freenode.net < 1123219385 0 :cmeme!unknown@unknown.invalid QUIT :kornbluth.freenode.net irc.freenode.net < 1123219386 0 :ZeroOne!unknown@unknown.invalid QUIT :kornbluth.freenode.net irc.freenode.net < 1123219386 0 :puzzlet!unknown@unknown.invalid QUIT :kornbluth.freenode.net irc.freenode.net < 1123219386 0 :cpressey!unknown@unknown.invalid QUIT :kornbluth.freenode.net irc.freenode.net < 1123219469 0 :heatsink!~heatsink@c-24-61-94-111.hsd1.nh.comcast.net JOIN :#esoteric < 1123219469 0 :tokigun!tokigun@sparcs45.kaist.ac.kr JOIN :#esoteric < 1123219469 0 :cmeme!~cmeme@216.184.11.2 JOIN :#esoteric < 1123219469 0 :cpressey!nobody@d154-20-76-195.bchsia.telus.net JOIN :#esoteric < 1123219469 0 :ZeroOne!~vsaalo@kekkonen.cs.hut.fi JOIN :#esoteric < 1123219469 0 :puzzlet!~puzzlet@61.247.147.84 JOIN :#esoteric < 1123219688 0 :cpressey_!nobody@d154-20-76-195.bchsia.telus.net JOIN :#esoteric < 1123219708 0 :heatsink!unknown@unknown.invalid QUIT :kornbluth.freenode.net irc.freenode.net < 1123219708 0 :cmeme!unknown@unknown.invalid QUIT :kornbluth.freenode.net irc.freenode.net < 1123219708 0 :puzzlet!unknown@unknown.invalid QUIT :kornbluth.freenode.net irc.freenode.net < 1123219708 0 :cpressey!unknown@unknown.invalid QUIT :kornbluth.freenode.net irc.freenode.net < 1123219708 0 :tokigun!unknown@unknown.invalid QUIT :kornbluth.freenode.net irc.freenode.net < 1123219708 0 :ZeroOne!unknown@unknown.invalid QUIT :kornbluth.freenode.net irc.freenode.net < 1123219789 0 :cmeme!~cmeme@216.184.11.2 JOIN :#esoteric < 1123219789 0 :heatsink!~heatsink@c-24-61-94-111.hsd1.nh.comcast.net JOIN :#esoteric < 1123219789 0 :tokigun!tokigun@sparcs45.kaist.ac.kr JOIN :#esoteric < 1123219789 0 :cpressey!nobody@d154-20-76-195.bchsia.telus.net JOIN :#esoteric < 1123219789 0 :ZeroOne!~vsaalo@kekkonen.cs.hut.fi JOIN :#esoteric < 1123219789 0 :puzzlet!~puzzlet@61.247.147.84 JOIN :#esoteric < 1123220104 0 :cpressey!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1123223200 0 :cmeme!unknown@unknown.invalid QUIT :Remote closed the connection < 1123223248 0 :cmeme!~cmeme@216.184.11.2 JOIN :#esoteric < 1123223269 0 :cmeme!unknown@unknown.invalid QUIT :Remote closed the connection < 1123223313 0 :cmeme!~cmeme@216.184.11.2 JOIN :#esoteric < 1123225299 0 :heatsink!unknown@unknown.invalid QUIT :"Leaving" < 1123225749 0 :calamari!unknown@unknown.invalid QUIT :Read error: 110 (Connection timed out) < 1123228799 0 :clog!unknown@unknown.invalid QUIT :ended < 1123228800 0 :clog!unknown@unknown.invalid JOIN :#esoteric < 1123240303 0 :jix!jix@p5489DD72.dip.t-dialin.net JOIN :#esoteric < 1123248968 0 :int-e!~noone@td9091b0d.pool.terralink.de JOIN :#esoteric < 1123255777 0 :cmeme!unknown@unknown.invalid QUIT :"Client terminated by server" < 1123255819 0 :cmeme!~cmeme@216.184.11.2 JOIN :#esoteric < 1123257982 0 :{^Raven^}!unknown@unknown.invalid PRIVMSG #esoteric :is it just me or have there been a *lot* of netsplits recently? < 1123259432 0 :Gs30ng!unknown@unknown.invalid PRIVMSG #esoteric :well i haven't seen anything like that < 1123259451 0 :Gs30ng!unknown@unknown.invalid PRIVMSG #esoteric :maybe you can check the chat log < 1123261436 0 :calamari!~Kid@cb03.cs.arizona.edu JOIN :#esoteric < 1123262405 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :hi < 1123262412 0 :Gs30ng!unknown@unknown.invalid PRIVMSG #esoteric :hi < 1123264818 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :hmm.. so if I understand it correctly, the basis for lambda calculus is just f(x)=M(x), where x=N, so M(x)=M(x=N)=M(N) < 1123267366 0 :speedboy!~socket@85.138.195.158 JOIN :#esoteric < 1123268515 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :S = lxyz.xz(yz) =? (lxyz.xz)yz =? xz[xyz=yz] =? xz[yz] < 1123268546 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :l = lambda < 1123268624 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :no. < 1123268667 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :S = lxyz.xz(yz) is an abbreviation for (lx.(ly.(lz.((xz)(yz))))) < 1123268739 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :ahh... thanks < 1123268791 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :Sabc = (((Sa)b)c) = ((((lx.(ly.(lz.((xz)(yz)))))a)b)c) = (((ly.(lz.((az)(yz))))b)c) = ((lz.((az)(bz)))c) = ((ac)(bc)) < 1123268805 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :for arbitrary terms a, b, c. < 1123268808 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :+r < 1123269255 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :K = lxy.z = (lx.(ly.x)y), Kab = (lx.(ly.x)a)b = (ly.a)b = ly.b ? < 1123269294 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :no, the ly disappears in the last step < 1123269301 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :ahh right < 1123269306 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :so = b < 1123269308 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :and the b with it, leaving a < 1123269331 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :hmm,.. don't think I follow that < 1123269333 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :Ka is a constant function taking one argument and giving a. < 1123269370 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :(ly.a)b means that you take the term a and replace every y in it by b. as it turns out, there is no y in the term so the b is just eaten. < 1123269529 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :(ly.a)b = a[y=b] = a[b] = ??? = a < 1123269540 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :a[y=b] is just a. < 1123269550 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :not a[b] ? < 1123269554 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :no. < 1123269586 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :a[y=b] is just a notation that denotes the term a, with every occurence of y replaced by b. < 1123269590 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :hmm.. I don't understand the definition then.. I have (lx.M)N = M[x:=N] < 1123269615 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric ::= doesn't mean = I take it < 1123269648 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :hmm. well, it's (ly.a)b = a[y:=b] = a then. < 1123269692 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :interesting.. I need to see if I can figure out how that works < 1123270382 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :it seems like there is a situation like this with regular functions, but I can't remember how to write it < 1123270466 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :thanks for your explanations and corrections < 1123270485 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :f(x,y) = x. < 1123270577 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :lambda calculus was originally a notation for functions without having to invent a name for each. instead of 'the function f, where f(x) = ' you could write 'the function \lambda x.'. < 1123270647 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :function notation has been ingrained in me all my life.. it's hard to let go. :) trying tho! < 1123270687 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :so f(x,y,z)=xz(yz) seems to make sense now :) < 1123270899 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :xy(yz) = x*y*z^2 ? I'm assuming it was just chosen to be written that way < 1123270909 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :no < 1123270918 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :oops < 1123270925 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :sorry. let's build this from bottom up < 1123270932 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :I messed that up anyways < 1123270938 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :it would have been y^2 < 1123270964 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :you have a set of symbols that serve as variables and you define terms in the following way: < 1123270983 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :1. every variable is a term. in our case, x, y, and z are terms. < 1123271007 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :2. if t is a term and x is a variable, lx.t is a term. < 1123271022 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :3. it t and r are terms then (tr) is a term. < 1123271035 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :2. is called lambda abstraction. 3 is called (function) application. < 1123271070 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :for convenience we write xyz instead of ((xy)z), that is, function application is left associative. < 1123271094 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :what is (tr), is that (t*r) ? < 1123271111 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :or t(r) ? < 1123271123 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :actually, left, so (t)r < 1123271130 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :t(r), in the usual notation. < 1123271172 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :that is, the idea is that t is a function and r is substituted for the first argument of that function < 1123271220 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :as can be seen in the eta-reduction rule, (lx.t)r = t[x:=r]. (lx.t)r is a function application built of the function (lx.t) and the argument r. < 1123271998 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :Ka => lb.a ? < 1123272005 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :yes < 1123272010 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :ok < 1123272231 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :there's an additional complication - (lxy.xy)y is not ly.yy. instead you have to rename the variable in the lambda first (that's called a bound variable), for example to z - (lxz.xz)y and then apply alpha-reduction, to obtain lz.yz. This renaming of bound variables is called beta-conversion. < 1123272250 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :forget all I said about eta-reduction, I don't know where my head was then - it's alpha-reduction. < 1123272267 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :SKKa => Ka(Ka) => a? < 1123272270 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :eta-reduction is the rule lx.tx = t. < 1123272289 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :yes. < 1123272293 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :so, SKK=I < 1123272298 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :oh < 1123272304 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :s/oh/ok/ < 1123272307 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :because SKKa = Ia = a < 1123272360 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :what letter is η ? < 1123272387 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :I is lx.x < 1123272441 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :hmm. maybe we should use \ for lambda like the Haskell folks. < 1123272461 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :what about λ? < 1123272466 0 :cpressey_!unknown@unknown.invalid PRIVMSG #esoteric :or ^ < 1123272475 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :λ works :) < 1123272483 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :no it doesn't < 1123272493 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :int-e: /charset utf8 (in xchat) < 1123272498 0 :cpressey_!unknown@unknown.invalid NICK :cpressey < 1123272516 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :then I won't understand the other half of my chat partners < 1123272518 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :;) < 1123272537 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :hi Chris < 1123272555 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :\ is fine < 1123272567 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :int-e: you are from germany? < 1123272572 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :jix, yes < 1123272576 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :ACTION too < 1123272601 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :but do you speak german on freenode? < 1123272614 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :because in xchat charsets are network-lokal < 1123272623 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :hmm. no I don't < 1123272631 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :but \ is easier to type < 1123272655 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :äöü < 1123272657 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :ACTION thinks < 1123272672 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :ü => ü < 1123272694 0 :Wrrrtbt!~noone@td9091b0d.pool.terralink.de JOIN :#esoteric < 1123272706 0 :Wrrrtbt!unknown@unknown.invalid PRIVMSG #esoteric :äöü < 1123272718 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :äöü < 1123272725 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :äöü < 1123272741 0 :int-e!unknown@unknown.invalid QUIT :"Bye!" < 1123272744 0 :Wrrrtbt!unknown@unknown.invalid NICK :int-e < 1123272767 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :seems to be better now < 1123272804 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :thanks jix < 1123272823 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :äöü < 1123272829 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :ß < 1123272847 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :äöü = ß ? < 1123272851 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :no < 1123272852 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :no < 1123272861 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :I didn't change my term until after you guys did < 1123272866 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :ß is the s-z ligature < 1123272868 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric : λ < 1123272872 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :ß < 1123272881 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :fl fl < 1123272886 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric ::p < 1123272894 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :scary < 1123272909 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :Å“ œ ? < 1123272910 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :ffl ? < 1123272916 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :hah oelig => ölig *g* < 1123272919 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :how about fi ? < 1123272935 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :hmm < 1123272942 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :ACTION wonders which font xchat took that fl ligature from < 1123272963 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :there is no fi in html < 1123272967 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :how did you produce it ? < 1123272971 0 :lindi-!unknown@unknown.invalid QUIT :Remote closed the connection < 1123272972 0 :lindi-!~lindi@kulho150.adsl.netsonic.fi JOIN :#esoteric < 1123272976 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :fllig? < 1123272977 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :is there an ffllig? < 1123272981 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :alt-shift-l < 1123272989 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :int-e: not in html < 1123272999 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :alt-shift-l on a mac-de keyboard is fllig < 1123273002 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :oic < 1123273017 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :ok back to λ < 1123273021 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :heheh < 1123273029 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :church integers... < 1123273047 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :zero is λsz.z ? < 1123273056 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :that lambda looks awful, too. < 1123273057 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :yes < 1123273061 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :barendregt numbers < 1123273072 0 :speedboy!unknown@unknown.invalid PART #esoteric :? < 1123273072 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :although I prefer \fx.x < 1123273084 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :f for function, x for argument < 1123273093 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :\x.x < 1123273107 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :and one is one is *LAMBDA!!!!OMG!!!*sz.sz ? < 1123273136 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :yes < 1123273140 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :hmm ' ' as lambda *g* < 1123273146 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :and two is \fx.f(fx) < 1123273162 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :and succ is \afx.f(afx) < 1123273165 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :ACTION needs to ignore and understand that first stuff first .. hehe < 1123273192 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :and add is \abfx.af(bfx) < 1123273193 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :ok need to understand succ < 1123273194 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :and so on < 1123273367 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :SUCC ONE => (\afx.f(afx))(\sz.sz) => \fx.f((\sz.sz)fx) => \fx.f(fx) ... ok works < 1123273388 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :hmm. mul is \abf.a(bf) < 1123273418 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :mul is replacing the f of one number with the other number right? < 1123273427 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :basically < 1123273452 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :i thought i'd never understand lambda-calculus... < 1123273675 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :int-e: so in your Sabc example WAY up there you are going left to right? I assume this means parethesis are ignored in favor of left associative? < 1123273680 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :booleans are funny, too. true is \xy.x, false is \xy.y. if is \xyz.xyz (or just \x.x). a test for zero is \n.n(\x.false)true = \n.n(\xyz.z)(\xy.x) < 1123273738 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :no, the parentheses are not ignored at all < 1123273746 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :otherwise, I'd think the \z would be converted first rather than \x < 1123273758 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :since it is more deeply nested in parenthesis < 1123273767 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :I need to find a subterm of the form (\x.t)r to apply alpha-reduction. < 1123273793 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :does alpha reduction actually reduce anything? seems like it just rewrites < 1123273819 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :well, that depends < 1123273821 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :(\abc.acb)(\xy.x) => (\bc.(\xy.x)cb) => (\bc.c) so \abc.acb is NOT? < 1123273830 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :in its simple form it reduces the number of lambdas left < 1123273848 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :yes < 1123273852 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :hah cool < 1123273862 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :because I wouldn't know what to do with t[x:=r].. seems useless < 1123273874 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :hmm ok i'm trying to write a xor < 1123273908 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :perhaps I should ignore alpha reduction and just use beta and eta? < 1123273945 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :calamari no < 1123273961 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :alpha reduction is the core of the lambda calculus < 1123274006 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :it wouldn't be interesting without it - you wouldn't be able to do all those computations with it that make it turing complete. < 1123274012 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :hmm is \abtf.a(bft)b xor? < 1123274043 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :hmm. no, you need (btf) at the end < 1123274068 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :yes? < 1123274081 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :\abtf.a(bft)(btf) < 1123274088 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :oh yes... < 1123274095 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :((((lx.(ly.(lz.((xz)(yz)))))a)b)c) = (((ly.(lz.((az)(yz))))b)c), why is lx removed and not lz? that's what's confusing me < 1123274108 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :alternatively, you can use \a.a(not)(id) = \a.a(\xyz.xzy)(\x.x) < 1123274132 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :I reduce the subterm ((lx.(ly.(lz.((xz)(yz)))))a) < 1123274155 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :which is of the form ((lx.some term)a) < 1123274186 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :there is no subterm of the form ((lz.some term)some other term), so I can't reduce the lz at that point < 1123274243 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :the line starting with 'alternatively' was for jix < 1123274263 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :yeah :) < 1123274321 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :and: (\a.a ID (K FALSE))? < 1123274346 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :is and < 1123274356 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :yes i said 'and:' ;) < 1123274360 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :oh < 1123274368 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :hah that's cool < 1123274387 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :hmm what about digital church like numbers < 1123274437 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :maybe I need to start simpler < 1123274438 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :church numbers are base 1 (all "digits" count 1)... what about base 2.. < 1123274492 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :there are a few ways to build lists ... < 1123274688 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :nil = \f.f false. cons = \a l.\f.f true a l would work, for example. [nilp = \l.l(\t.t(\xy.false)true), etc] < 1123274736 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :(lx.x)a = a < 1123274752 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :calamari: yes < 1123274754 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :or I should get used to (\x.x)a = a < 1123274778 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :yay.. getting things started then :) < 1123274978 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :(\x.(\y.xy)a)b = (\x.xa)b ? < 1123275126 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :yes < 1123275156 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric := ((\y.by)a) (two different alpha-reductions possible) < 1123275203 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :so it is ambiguous? < 1123275388 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :well yes < 1123275426 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :but it's confluent - if a term reduces to two different terms, it's possible to reduce those terms to the same term again. < 1123275459 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :(\y.by)a = b (by eta) ? < 1123275488 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :and (\x.xa)b = b by that eating rule < 1123275503 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :no, (\y.by)=b (by eta), so (\y.by)a = ba < 1123275524 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :and (\x.xa)b = ba by alpha-reduction < 1123275545 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :hmmm < 1123275556 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :\x.tx=t ? < 1123275561 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :yes < 1123275576 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :as long as t does not contain x. obviously < 1123275608 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :oh.. I see my error < 1123275730 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :is there a simpler case of alpha reduction? I do not understand (\x.xa)b = ba < 1123275763 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :or is that just the simplest case? < 1123275768 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :it's simple < 1123275832 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :ACTION adds it to his list of rules < 1123275835 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :the simplest case is (\x.x)a = a. < 1123275894 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :but what you actually do there is that you take the term 'x' (the right side of \x.x) and replace every occurence of x (that's the letter on the left side of \x.x) by a (that's the term following the (\x.x)) < 1123275912 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :lambda rules! < 1123275965 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :int-e: ahh, cool < 1123275968 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :thanks < 1123276191 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :hmm i'll try to do a -1 < 1123276212 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :that's not as easy as +1/SUCC < 1123276233 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :you can make a function that maps 0 to 0 and every other number n to n-1 < 1123276249 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :and it is an interesting task indeed. < 1123276382 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :Ka = (\xy.x)a = (\x.(\y.x))a = \y.a < 1123276438 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :yes < 1123276478 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :just to make sure \abcdef.g=g? < 1123276489 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :no < 1123276491 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :ok < 1123276514 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :(\abcdef.g)xxxxxx = g < 1123276566 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :oh right.. need some inputs there :) < 1123277208 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :KK = (\xy.x)(\xy.x) = (\x.(\y.x))(\x.(\y.x)) = \y.(\x.(\y.x)), as above no prob < 1123277427 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :SS = (\xyz.xz(yz))(\xyz.xz(yz)) = (\x.(\y.(\z.xz(yz))))(\x.(\y.(\z.xz(yz)))) = \y.(\z.(\x.(\y.(\z.xz(yz))))z(yz)) < 1123277468 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :coolness. I think I have alpha reduction down.. took me long enough :) < 1123277582 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :that \xy expansion comes in very handy.. thanks for that < 1123277721 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :KK is wrong... < 1123277724 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :KK = (\xy.x)(\xy.x) = (\x.(\y.x))(\x.(\y.x)) now you have to rename one of the K terms (\x.(\y.x))(\a.(\b.a)) = \b.(\x.(\y.x)) < 1123277742 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :no KK is right. < 1123277767 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :you can reuse y? < 1123277771 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :in one term? < 1123277776 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :yes < 1123277787 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :oh you can use it because it isn't used inside... < 1123277795 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :you just have to be careful with unbound occurences of a variable < 1123277980 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :basically \x.t introduces its own scope for the variable x - namely the term t. you have to be careful when alpha reduction would change the scope of a variable as in (\xy.xy)y where a globally scoped y would become locally scoped in \y.yy. < 1123277991 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :in that case you need to rename the inner variable. < 1123277996 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :k < 1123278002 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :none of that happens in the KK example < 1123278047 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :if i have a x and a (\x. bla) in the same scope.. i can't use the outer x in the bla code right? < 1123278070 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :right, that would be shadowed < 1123278074 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :and if i want to use it i have to rename the inner x to something different < 1123278089 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :to reuse programming language vocabulary (as I did with scoped) < 1123278097 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :right < 1123278514 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :(\x.x(\x.y))a = x(\a.y) ? < 1123278539 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :a(\x.y) < 1123278573 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :maybe thinking of (\x.x(\x.y))a => (\.a(\x.y))a => a(\x.y) helps < 1123278648 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :\.a? < 1123278680 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :yes you remove the x from the left side of the . and replace it on the right side < 1123278705 0 :Keymaker!~Not@wire74.adsl.netsonic.fi JOIN :#esoteric < 1123278720 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :then the left side is empty.. well if it's empty there is no lambda so you can remove it < 1123278722 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :greetings. < 1123278727 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :if it confuses you just ignore it < 1123278728 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :moin Keymaker < 1123278735 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :moin < 1123278747 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :i've got couple of interesting ideas < 1123278771 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :(note: they'll be revealed if ever ready) < 1123278874 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :hmm yeah it'd be a(\a.y) in my original anyways < 1123278897 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :but I guess \x stays unchanged < 1123279057 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :does that seem right ? < 1123279088 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :\var is not modified by alpha ? < 1123279189 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :if so, Iota i = \x.xSK = \x.x(\xyz.xz(yz))(\xy.x) = \x.x(\x.(\y.(\z.xz(yz))))(\x.(\y.x)) = (\x.(\y.x))(\x.(\y.(\z.(\x.(\y.x))z(yz)))) < 1123279226 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :yes the \x stays unchanged < 1123279230 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :don't want to go on if that is wrong tho :) < 1123279233 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :oh, cool < 1123279235 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :and also all x inside the \x < 1123279258 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :can you give an example of that last thing? < 1123279276 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :but I don't know what you did to that i < 1123279299 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :(\xx.xx)a = \x.xx < 1123279301 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :(\x.x(\x.xy))a => a(\x.xy) but (\x.x(\y.xy))a => a(\y.ay) right? < 1123279302 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :it's an Iota i, defined as \x.xSK < 1123279330 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :what did you do in the last step? < 1123279347 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :int-e: I replaced x by (\x.(\y.x)) < 1123279359 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :you can't do that < 1123279381 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :thats saying I == K < 1123279397 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :\x.xSK is \x.(xSK) < 1123279398 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :int-e: it seems like a valid alpha < 1123279420 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :not (\x.xS)K as you interpreted it < 1123279428 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :oh i thought x == (\x.(\y.x)).. < 1123279436 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :i thought you said... < 1123279438 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :nah < 1123279441 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :stupid me < 1123279450 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :oic.. I thought it was left associative.. < 1123279453 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :(\nxy.n (\abc.b(a c c)) (\ab.y) i x) << is this a PREV ? < 1123279466 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :and is there a lambda calculator? < 1123279511 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :what's i? < 1123279518 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :oh should be I < 1123279518 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :ID < 1123279521 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :ok < 1123279543 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :the PREV i saw was much longer and complicated < 1123279548 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :so i think i'm wrong < 1123279715 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :I think it will fail on 2; you'll need to deal with real pairs < 1123279750 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :pairs can be represented as pair := \abx.xab; with first = \a.a true and second = \a.a false. < 1123279860 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :hmm for me it works with 3 < 1123279874 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :maybe I'm missing something < 1123279910 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :but manual reduction isn't always 100% correct.. i need a program to reduce lambda expressions < 1123279936 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :Iota i = \x.xSK = \x.(xSK) = \x.((xS)K) = \x.((x(\xyz.xz(yz)))(\xy.x)) < 1123279964 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :http://homepages.cwi.nl/~tromp/cl/cl.html < 1123279966 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :but then I'm not sure I can reduce anything.. can I ? < 1123279978 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :calamari, no you can't < 1123280129 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :int-e: the interpreter has only combinatory logic terms no way to enter lambda terms.. do i miss something? < 1123280179 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :I missed that the Lambda calculus interpreter link on that page is broken :( < 1123280213 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :http://ling.ucsd.edu/~barker/Lambda/ < 1123280224 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :seems to do < 1123280266 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :ACTION has his alphas and betas mixed up, too, apparently < 1123280268 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :ACTION sighs < 1123280273 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :it's been too long. < 1123280279 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :ACTION shouldn't trust his memory < 1123280309 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :ACTION makes a quick eraser mark.. there fixed! < 1123280323 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :thanks a lot for explaining this in detail < 1123280360 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :http://www.phost.de/~stefan/Files/ has a lambda interpreter, too < 1123280389 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :i'm sure there are others < 1123280418 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :jix, I think you're leaving out parentheses in your reductions for that PREV. < 1123280435 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :hmm < 1123280463 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :the first lambda interpreter has needs parantheses for every application < 1123280564 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :and the 2nd one refuses to compile.. redefines getchar... < 1123280569 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :oh? < 1123280587 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :scanner.cc:67: error: new declaration 'char getchar()' < 1123280588 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :/usr/include/stdio.h:270: error: ambiguates old declaration 'int getchar()' < 1123280638 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :yes I see that. interesting. < 1123280734 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :predates namespaces, too. < 1123280943 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :http://www.inf.tu-dresden.de/~bf3/lambda-2.8-my.zip < 1123281000 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :hmm, your PREV works. < 1123281015 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :funny < 1123281026 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :don't know what I did wrong when I tried it. < 1123281106 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :cool < 1123281148 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :there wasn't much to update in that program - I renamed getchar and ungetchar and added a bunch of using namespace std. < 1123281163 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :hmm i think if i show this to my friends they will think i'm crazy < 1123281177 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :I'm still surprised Stefan used C library function's names there. < 1123281204 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :(I know him personally) < 1123281209 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :ah < 1123281226 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :but this was 1999 < 1123281227 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :hehe < 1123281257 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :is it possible to hack readline into the app? < 1123281271 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :you might enjoy the standard library, it has an even shorter version of a predecessor function < 1123281273 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :i hate command lines without working cursor keys... < 1123281279 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :(not much shorter though) < 1123281294 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :I'm sure it's possible. I won't do it though. < 1123281313 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :and i don't know c++ < 1123281334 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :err actually < 1123281338 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :it uses readline here < 1123281360 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :actually it doesn't find my readline... :( < 1123281452 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :ok it compiles with readline now < 1123281617 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :ok but i understand how the stdlib pred works < 1123281633 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :same idea as mine but nicer implementation < 1123281921 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :some of these macros were created by me actually, we worked on them together. < 1123282149 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :bbl.. < 1123282158 0 :calamari!unknown@unknown.invalid QUIT :"Leaving" < 1123282319 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :hmm the c++ lambda app is usefull for generating lazy-k code too < 1123282341 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :and it's even better for debugging it < 1123282399 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :hehe < 1123282421 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :hey, apparently that predecessor thingy was created by me, I even got credit :) < 1123282461 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :but it uses bruteforce for generating numbers... lazier uses < 1123282587 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :Segmentation fault < 1123282588 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :our favourite at the time was the power operator ... \x y.y x < 1123282617 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :oh fun < 1123282673 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :maybe ski tries to expand the recursion.. < 1123282679 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :stack overflow < 1123282685 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :if it does it's useless for lazy-k < 1123282699 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :lazier has no problems with recursion < 1123282761 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :lambda> ski (\x.x x x)(\x.x x x) < 1123282761 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :(S (S I I) I (S (S I I) I)) < 1123282761 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :lambda> (\x.x x x)(\x.x x x) < 1123282761 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :Auswertung abgebrochen nach 2733 Schritten. < 1123282764 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :hmm < 1123282824 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :quicksort is cheating < 1123282840 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :it's working with recursive macro expansion < 1123282841 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :hm? < 1123282849 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :ah < 1123282860 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :that is cheating < 1123283037 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :greater than 0 test: (?n t f. n (?x.t) f) < 1123283085 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :and iszero if you swap t and f < 1123283122 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :and its shorter than the stdlib iszero < 1123283185 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :ah, nice idea < 1123283656 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :i've an idea for a fast div by 2 < 1123283674 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :oh and the stdlib div is cheating too... < 1123283703 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :I know < 1123283711 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :the list div in listop.la isn't though < 1123284044 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :it's slower than ndiv but it's shorter (only for div by 2 < 1123284049 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :(?n x y.n (?a b c.b(a c b)) (?a b.y) (?x.x) x) < 1123284059 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :and it floors < 1123284091 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :ndiv floors too < 1123284097 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :yes < 1123284115 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :(?n x y.n (?a b c.b(a c b)) (?a b.y) x (?x.x)) ceils < 1123284253 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :ah. thanks, I know why I had trouble with understanding the PREV code now < 1123284274 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :I was somehow thinking of numbers as fffffffx instead of f(f(f(f(fx))))) ... < 1123284286 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :which makes no sense at all < 1123284297 0 :heatsink!~heatsink@c-24-61-94-111.hsd1.nh.comcast.net JOIN :#esoteric < 1123284340 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :and that's slower than ndiv? < 1123284349 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :interesting. < 1123284352 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :yes.. < 1123284356 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :but it's shorter < 1123284369 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :I'd exepect it to be faster actually < 1123284374 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :ACTION too < 1123284453 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :it'll be hard to create a generic div using that scheme though < 1123284483 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :you'll probably end up with creating an infinite list of some sort, too - probably made of id and succ elements. < 1123284521 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :(?n x y.n (?a b.b(a (?z. b (x z)))) (?a.y) x) is sum of [0..n] < 1123284555 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :hmm i'm unnormal... < 1123284606 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :i don't now any other 14 years old person who has fun writing lambda terms.... < 1123284694 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :(?n x y.n (?a b.b(a (?z. b (b z)))) (?a.y) x) is sum of [0,2^0..2^(n-1)] < 1123284723 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :which is 2^n-1 < 1123284752 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :hmm, ndiv is slower for me < 1123284779 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :i'm on ppc.. < 1123284844 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :your div2 needs fewer reductions < 1123284874 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :ppc function calls are faster than x86 ones... < 1123284883 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :jix: \n. (n 2) < 1123284903 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :shorter-pipelines and intensive use of register-argument-passing < 1123284919 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :right < 1123284919 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :(? x. ( 2 x)) is faster than (?n x y.n (?a b.b(a (?z. b (b z)))) (?a.y) x) < 1123285005 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :is there a faster solution for (?n x y.n (?a b.b(a (?z. b (x z)))) (?a.y) x)? < 1123285163 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :hmm, the formula would be n(n+1)/2 but the division by two kills it < 1123285340 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :(?n. ( n ( n)) 2) is slower even on ppc! < 1123285392 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :why is not (?x.x (?x y.y) (?x y.x)) < 1123285409 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :and not (?x t f.x f t) < 1123285446 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :because we didn't optimize that for some reason < 1123285451 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :hehe < 1123285543 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric : is unoptimal too < 1123285556 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :lamba's xor: (?x y.x (y (?x y.y) (?x y.x)) y) < 1123285566 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :my xor: (?x.x (?x t f.x f t) (?x.x)) < 1123285603 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :I know. < 1123285695 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :is-dividable-by-two: (?n.n (?x t f.x f t) (?x y.x)) < 1123285733 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :yep < 1123285749 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :and replace last x by y to get a check for odd numbers < 1123285755 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :hmm i need signed fractions... < 1123285762 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :;) < 1123285912 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :would (?c x y.c sign nominator denominator) be possible? < 1123285930 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :that's a triplet, yes < 1123285934 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :ok < 1123285941 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :hmm < 1123285943 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :actually < 1123285957 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :i'll start with multiplication.. < 1123285959 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :why not just (?s.s sign nominator denominator) < 1123285973 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :hmmm yes why not.. < 1123285978 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :with a selector s: \xyz.x for first, \xyz.y for second, \xyz.z for third component. < 1123286043 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :rational.la i'm ready < 1123286059 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :fear! < 1123286361 0 :int-e!unknown@unknown.invalid PRIVMSG #esoteric :btw, lambda does understand \x for ?x if you prefer that. the ? was the original symbol though.