< 1262651023 0 :jpc!n=jw@unaffiliated/javawizard2539 JOIN :#esoteric < 1262651938 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :http://i47.tinypic.com/6puxi1.jpg < 1262652126 0 :Pthing!unknown@unknown.invalid QUIT :Remote closed the connection < 1262652364 0 :poiuy_qwert!n=poiuy_qw@CPE001b115db0ae-CM0018c0c24ffc.cpe.net.cable.rogers.com JOIN :#esoteric < 1262652412 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :augur: heh < 1262652831 0 :adam_d!unknown@unknown.invalid QUIT :Read error: 110 (Connection timed out) < 1262653010 0 :BeholdMyGlory!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1262653346 0 :MizardX-!n=MizardX@unaffiliated/mizardx JOIN :#esoteric < 1262653503 0 :MizardX!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1262653582 0 :gfour!n=george@91.140.96.44 JOIN :#esoteric < 1262653742 0 :MizardX-!unknown@unknown.invalid QUIT :farmer.freenode.net irc.freenode.net < 1262653742 0 :Cerise!unknown@unknown.invalid QUIT :farmer.freenode.net irc.freenode.net < 1262653742 0 :Deewiant!unknown@unknown.invalid QUIT :farmer.freenode.net irc.freenode.net < 1262653742 0 :Asztal!unknown@unknown.invalid QUIT :farmer.freenode.net irc.freenode.net < 1262653742 0 :comex!unknown@unknown.invalid QUIT :farmer.freenode.net irc.freenode.net < 1262653742 0 :uorygl!unknown@unknown.invalid QUIT :farmer.freenode.net irc.freenode.net < 1262653742 0 :rodgort!unknown@unknown.invalid QUIT :farmer.freenode.net irc.freenode.net < 1262653743 0 :mycroftiv!unknown@unknown.invalid QUIT :farmer.freenode.net irc.freenode.net < 1262653743 0 :sebbu!unknown@unknown.invalid QUIT :farmer.freenode.net irc.freenode.net < 1262653743 0 :fizzie!unknown@unknown.invalid QUIT :farmer.freenode.net irc.freenode.net < 1262653744 0 :Gracenotes!unknown@unknown.invalid QUIT :farmer.freenode.net irc.freenode.net < 1262653744 0 :cheater!unknown@unknown.invalid QUIT :farmer.freenode.net irc.freenode.net < 1262653804 0 :gfour!unknown@unknown.invalid QUIT :"Leaving." < 1262654169 0 :poiuy_qwert!unknown@unknown.invalid QUIT :"This computer has gone to sleep" < 1262654248 0 :fizzie!i=fis@iris.zem.fi JOIN :#esoteric < 1262654248 0 :sebbu!n=sebbu@ADijon-152-1-59-226.w83-194.abo.wanadoo.fr JOIN :#esoteric < 1262654248 0 :mycroftiv!n=infernus@h69-128-47-243.mdsnwi.dedicated.static.tds.net JOIN :#esoteric < 1262654248 0 :rodgort!n=rodgort@li14-39.members.linode.com JOIN :#esoteric < 1262654248 0 :uorygl!n=warrie@lunch.normish.org JOIN :#esoteric < 1262654248 0 :comex!i=comex@98.210.192.54 JOIN :#esoteric < 1262654248 0 :Asztal!n=asztal@host86-160-121-207.range86-160.btcentralplus.com JOIN :#esoteric < 1262654248 0 :Deewiant!n=deewiant@kosh.hut.fi JOIN :#esoteric < 1262654248 0 :Cerise!i=jerry@unaffiliated/cerise JOIN :#esoteric < 1262654248 0 :MizardX!n=MizardX@unaffiliated/mizardx JOIN :#esoteric < 1262654248 0 :Gracenotes!n=person@wikipedia/Gracenotes JOIN :#esoteric < 1262654248 0 :cheater!n=gast@62.176.155.187 JOIN :#esoteric < 1262654331 0 :Gracenotes!unknown@unknown.invalid QUIT :SendQ exceeded < 1262655384 0 :Gracenotes!n=person@wikipedia/Gracenotes JOIN :#esoteric < 1262655711 0 :MizardX!unknown@unknown.invalid QUIT :"zzz" < 1262656528 0 :coppro!unknown@unknown.invalid QUIT :Remote closed the connection < 1262656552 0 :coppro!n=coppro@unaffiliated/coppro JOIN :#esoteric < 1262657229 0 :coppro!unknown@unknown.invalid QUIT :Remote closed the connection < 1262657253 0 :coppro!n=coppro@unaffiliated/coppro JOIN :#esoteric < 1262660566 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster < 1262661908 0 :Asztal!unknown@unknown.invalid QUIT :Read error: 60 (Operation timed out) < 1262663233 0 :poiuy_qwert!n=poiuy_qw@CPE001b115db0ae-CM0018c0c24ffc.cpe.net.cable.rogers.com JOIN :#esoteric < 1262663852 0 :poiuy_qwert!unknown@unknown.invalid QUIT :"Leaving" < 1262666091 0 :soupdragon!n=somebody@unaffiliated/fax JOIN :#esoteric < 1262667334 0 :Slereah_!n=Slereah@ANantes-259-1-77-44.w92-135.abo.wanadoo.fr JOIN :#esoteric < 1262667783 0 :zzo38!n=zzo38@h24-207-48-53.dlt.dccnet.com JOIN :#esoteric < 1262667808 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :I think I fixed the license. http://zzo38computer.cjb.net/icosahedral/icoruma/license.irm < 1262667853 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :Note: The <#> is a formatting code for blockquotes < 1262667997 0 :Slereah!unknown@unknown.invalid QUIT :Read error: 110 (Connection timed out) < 1262668140 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :zzo38: I'd suggest explicitly clarifying the GPL rule as to what you mean < 1262668144 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :Is it better now? < 1262668159 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :coppro: How should I clarify it? < 1262668170 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :zzo38: well, I'm not exactly sure what you mean < 1262668201 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :do you mean you can incorporate the work or derivations there of into GPLed works, as long as attribution is given? < 1262668258 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :I don't really care that much about attribution, but the GPL and CC-BY-SA both require attribution anyways, so it might as well. But what I mean is basically as you said < 1262669245 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :What would be the best way to re-word it? < 1262669779 0 :Warriphone!unknown@unknown.invalid QUIT :Read error: 110 (Connection timed out) < 1262670411 0 :zzo38!unknown@unknown.invalid QUIT :Remote closed the connection < 1262672648 0 :SimonRC!unknown@unknown.invalid QUIT :Read error: 60 (Operation timed out) < 1262673017 0 :coppro!unknown@unknown.invalid QUIT :"I am leaving. You are about to explode." < 1262674164 0 :oerjan!n=oerjan@hagbart.nvg.ntnu.no JOIN :#esoteric < 1262677628 0 :oerjan!unknown@unknown.invalid QUIT :"leaving" < 1262677800 0 :lament!n=lament@S0106002312fa554a.vc.shawcable.net JOIN :#esoteric < 1262678399 0 :clog!unknown@unknown.invalid QUIT :ended < 1262678400 0 :clog!unknown@unknown.invalid JOIN :#esoteric < 1262678400 0 :Warriphone!n=warripho@c-98-209-136-197.hsd1.mi.comcast.net JOIN :#esoteric < 1262678615 0 :augur_!n=augur@c-71-196-120-234.hsd1.fl.comcast.net JOIN :#esoteric < 1262678751 0 :Warriphone!unknown@unknown.invalid QUIT :Remote closed the connection < 1262678774 0 :Warriphone!n=warripho@c-98-209-136-197.hsd1.mi.comcast.net JOIN :#esoteric < 1262678996 0 :augur!unknown@unknown.invalid QUIT :Read error: 110 (Connection timed out) < 1262679656 0 :augur_!unknown@unknown.invalid QUIT :Read error: 110 (Connection timed out) < 1262679973 0 :Warriphone_!n=warripho@c-98-209-136-197.hsd1.mi.comcast.net JOIN :#esoteric < 1262679974 0 :Warriphone!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1262679975 0 :Warriphone_!unknown@unknown.invalid NICK :Warriphone < 1262681636 0 :FarOut!n=FarOut@bas1-toronto04-1176309225.dsl.bell.ca JOIN :#esoteric < 1262682122 0 :FarOut!unknown@unknown.invalid QUIT :Remote closed the connection < 1262682837 0 :jpc!unknown@unknown.invalid QUIT :Read error: 60 (Operation timed out) < 1262683426 0 :SimonRC!n=sc@fof.durge.org JOIN :#esoteric < 1262684007 0 :ehird!n=ehird@91.105.68.74 JOIN :#esoteric < 1262684024 0 :lament!unknown@unknown.invalid QUIT : < 1262684026 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Spot the difference! < 1262684039 0 :Slereah_!unknown@unknown.invalid PRIVMSG #esoteric :You are lamer < 1262684219 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :16:38:58 http://i47.tinypic.com/6puxi1.jpg < 1262684219 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :"In film you will find four basic story lines. Man versus man, man versus nature , nature versus nature, and dog versus vampire." —Steven Spielberg < 1262684224 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :*nature, < 1262684412 0 :Slereah_!unknown@unknown.invalid PRIVMSG #esoteric :ehird : Avatar mostly reminded me of Fern Gully : < 1262684569 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ACTION writes a code snippet to show why DYNAMIC-WIND is a pain, now that he's on da computaah < 1262684629 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :...after downloading Emacs < 1262684649 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :git build from yesterday, I'm so cutting edge < 1262684959 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :"The application Emacs quit unexpectedly." < 1262684964 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ok, then—not a nightly build < 1262685205 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Fathomic o-toodled < 1262685321 0 :Asztal!n=asztal@host86-160-121-207.range86-160.btcentralplus.com JOIN :#esoteric < 1262685676 0 :anmaster_l!n=AnMaster@unaffiliated/anmaster JOIN :#esoteric < 1262686083 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :this code is bugging in ways I'm pretty sure it's impossible to bug... < 1262686206 0 :MigoMipo!i=kvirc@95.209.104.239.bredband.tre.se JOIN :#esoteric < 1262686469 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ACTION debugs it with SISC < 1262686490 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ahh < 1262686642 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :wait, no; that's a different issue < 1262686653 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :aargh, this is driving me insane! < 1262686785 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Eh, I'll break my mind with the twisty interaction between CALL-WITH-CURRENT-CONTINUATION and DYNAMIC-WIND some other time. < 1262686877 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ACTION downloads the six disks of Slackware 13.0 < 1262686888 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :On the first day of Christmas my browser sent to me < 1262686891 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Slackware thirteen oh < 1262686898 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Install d1 issoh < 1262686912 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :And five hundred and ninety one megabytes in a file tree < 1262686929 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :*Install dee one issoh < 1262686946 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :I could, of course, just download the DVD file... < 1262686976 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Amusing that one of the most barebones distro has really large ISOs. < 1262687002 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Sigh. Fuck my slow internet connection. It's gonna take eight hours to download Slackware. < 1262687183 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Ah. < 1262687190 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :The last three CDs are just sources. < 1262688226 0 :adam_d!n=Adam@cpc2-acto6-0-0-cust48.brnt.cable.ntl.com JOIN :#esoteric < 1262688354 0 :Gracenotes!unknown@unknown.invalid QUIT :"Leaving" < 1262688688 0 :Pthing!n=pthing@cpc11-pres4-0-0-cust168.pres.cable.virginmedia.com JOIN :#esoteric < 1262688722 0 :Gracenotes!n=person@wikipedia/Gracenotes JOIN :#esoteric < 1262689157 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : AnMaster <-- ? < 1262689383 0 :adam_d_!n=Adam@cpc2-acto6-0-0-cust48.brnt.cable.ntl.com JOIN :#esoteric < 1262689447 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :lota < 1262689457 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, hm? < 1262689465 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Intwitch ark. < 1262689479 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Hey; I'm computerised now. I can hack Haskell < 1262689482 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, do you remember if 0.-2.0.29 for ick was same as 29.0.-2.0 in normal sense < 1262689488 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :LIFE IS JOYOUS < 1262689494 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ACTION is updating the ick package for arch < 1262689508 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: ick to regular: reverse >> s/-/pre/ < 1262689535 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, just I'm having a headache here with a) versioning not increasing always b) pax < 1262689549 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: Just use the release date internally < 1262689560 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, for the package version. Hm maybe < 1262689571 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: Does Arch let you do < 1262689580 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ver~somethingelse, where somethingelse is ignored? Or similar < 1262689581 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :PKGBUILD (c-intercal) W: Description should not contain the package name. < 1262689586 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :If so, just do releasedate~cintercalversionunmangled < 1262689605 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : ver~somethingelse, where somethingelse is ignored? Or similar <-- possibly, not that I know of though < 1262689608 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: Clearly they forgot to make it case-sensitive. < 1262689616 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :==> ERROR: pkgver is not allowed to contain hyphens. < 1262689622 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Try _ < 1262689634 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: Or . < 1262689643 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, there is already . in it < 1262689645 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :20100104.0.-2.0.29 < 1262689655 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :As long as you increase the major version to the release date every time, the rest won't matter < 1262689707 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, well that - caused issues ;P < 1262689723 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :s/-/pre/ < 1262690084 0 :adam_d__!n=Adam@cpc2-acto6-0-0-cust48.brnt.cable.ntl.com JOIN :#esoteric < 1262690132 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :grrrrr < 1262690149 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :I dont know wthe semantics are for a bunch of words I just use the identity function but that hardly makes sense < 1262690411 0 :adam_d!unknown@unknown.invalid QUIT :Read error: 110 (Connection timed out) < 1262690478 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :soupdragon: wat < 1262690483 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :wat < 1262690486 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :wut < 1262690493 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ACTION does fun dependent-ish programming in haskell's type system < 1262690510 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :ehard < 1262690512 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :*Main> nonZero (undefined :: S Z) Full < 1262690512 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :() < 1262690513 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :*Main> nonZero (undefined :: Z) Full < 1262690513 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric ::1:25: < 1262690513 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric : Couldn't match expected type `NonZero Z' < 1262690513 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric : against inferred type `Full' < 1262690535 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :im codin this article augur showed me using dependent types < 1262690538 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :admittedly that's basically the same as using a typeclass, but i liiiike it < 1262690571 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : -> Extracting ick-0.-2.0.29.pax.gz with bsdtar <-- why bsdtar I wonder < 1262690577 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :why not gnu tar or pax < 1262690591 0 :adam_d!n=Adam@cpc2-acto6-0-0-cust48.brnt.cable.ntl.com JOIN :#esoteric < 1262690598 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :soupdragon: http://hpaste.org/fastcgi/hpaste.fcgi/view?id=15624#a15624 < 1262690602 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ch-ch-ch-check it out < 1262690618 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :next step: a safe vector < 1262690626 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :well < 1262690627 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :safe list first < 1262690668 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :cool < 1262690688 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :the snippet there can be done with typeclasses, but I like the agda-ish passing-the-condition < 1262690690 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :I think you can do this with a GADT too? < 1262690710 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :most likely < 1262690721 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :the nice thing about type families is... they're basically type functions < 1262690725 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :if you ignore the class/instance lines < 1262690731 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :it's just like a function definition in the type system < 1262690733 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :want a GADT challenge < 1262690739 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :shure < 1262690756 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :write the variadic function sum (I 3) (I 2) (I 7) X = 3+2+7 < 1262690759 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :as many I as needed < 1262690760 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :bye < 1262690761 0 :soupdragon!unknown@unknown.invalid QUIT :"Leaving" < 1262690772 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :uh, bye < 1262691056 0 :adam_d_!unknown@unknown.invalid QUIT :Read error: 110 (Connection timed out) < 1262691082 0 :adam_d_!n=Adam@cpc2-acto6-0-0-cust48.brnt.cable.ntl.com JOIN :#esoteric < 1262691083 0 :BeholdMyGlory!n=behold@d83-183-183-70.cust.tele2.se JOIN :#esoteric < 1262691228 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :To enable textual disambiguation of overlapping instances, we declare the equalities together (by transferring GADT syntax to type synonyms): < 1262691228 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :type TypeEq s t where < 1262691228 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric : TypeEq s s = TTrue < 1262691229 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric : TypeEq s t = TFalse < 1262691232 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :haha fucking sweet < 1262691478 0 :adam_d__!unknown@unknown.invalid QUIT :Read error: 110 (Connection timed out) < 1262691791 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, that suggestion with release date won't work < 1262691802 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :packaging standards: < 1262691804 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :"Package versions should be the same as the version released by the author." < 1262691817 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :it's either that or it doesn't work < 1262691818 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :your choice < 1262691841 0 :adam_d!unknown@unknown.invalid QUIT :Read error: 110 (Connection timed out) < 1262691847 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, they suggested that minor "schema changes" might be okay. Which in this case would mean a boring 29.0pre2 < 1262691858 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :except doesn't pre1 come after pre2 there < 1262691862 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :as in -2 followed by -1 < 1262691912 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :yes < 1262691917 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :do pre(1/n) :P < 1262691951 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, nice idea < 1262691961 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :except would have to be written as decimal < 1262691965 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :yep! < 1262691986 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :29.0.pre0.5.0 < 1262691994 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :YMMV :P < 1262691994 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, which might not always be exact. < 1262692008 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ACTION points to -3 for example < 1262692023 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :then put the base in the version number! < 1262692030 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :say, as the last component < 1262692044 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :uh. how do you mean < 1262692060 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :well, 1/3 in base 3 is 0.1 right? < 1262692061 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :um, i think < 1262692074 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :so 29.0.-3 → 29.0.pre0.1.3 < 1262692082 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, but it won't sort correctly if different bases are used for different versions, right? < 1262692083 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :where the .3 means "in base 3" < 1262692084 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric ::-D < 1262692091 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: shush you < 1262692093 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :*shush you < 1262692099 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :anyway < 1262692101 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :just do what debian does < 1262692112 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, ~ isn't allowed it seems. < 1262692191 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, anyway the arch dev I was speaking with gave up at the information that pre2 came before pre1. " what the hell :D" < 1262692230 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :just do what debian does, google to see how they mangle it < 1262692232 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :they manage fine < 1262692359 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :class N n where toNum :: (Num m) => n -> m < 1262692359 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :instance N Z where toNum _ = 0 < 1262692359 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :instance (N n) => N (S n) where toNum _ = 1 + toNum undefined < 1262692359 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :need to fill out a type for the toNum call in N (S n) :( < 1262692417 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric : Could not deduce (N n1) from the context (Num m1) < 1262692418 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :sigh < 1262692506 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :technically -fglasgow-exts makes the type system tc < 1262692509 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :(can interpret lc) < 1262692510 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i believe < 1262692789 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i remember i used to know how to write this funcn < 1262692790 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :*func < 1262694198 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :*Main> undefined :: Fib (Fact (S (S (S Z)))) < 1262694199 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :type 8 < 1262694203 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :More jawsome than a speeding astronaut! < 1262694207 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: Represent ↑ < 1262694215 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, ? < 1262694229 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: Haskell, there, is computing fib(fact(3)) ... in the type system. < 1262694234 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :As part of type checking. < 1262694240 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, do it in C++ templates ;P < 1262694261 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Naw. Too easy. < 1262695054 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hm isn't && and || non-original in C? as in, were added sometime after it become widespread but before C90 < 1262695056 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, ^ < 1262695074 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i think they were added before it became widespread < 1262695078 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :it used to be just & and | < 1262695080 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ah < 1262695085 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :but && and || were added for associativity < 1262695090 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, I'm just considering why & won't work very well < 1262695093 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :| sure < 1262695095 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :a == b & c == d < 1262695120 0 :augur!n=augur@c-71-196-120-234.hsd1.fl.comcast.net JOIN :#esoteric < 1262695134 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :for any values if(a | b) will take the same branch as if (a || b) (excluding possible side effects of evaluating a and b < 1262695141 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :but for & that won't work < 1262695151 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :as in 2 & 1 won't be the same as 2 && 1 < 1262695155 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, ^ < 1262695175 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :no < 1262695179 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :it was purely for associativity < 1262695196 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, so how did they solve the issue with 2 & 1 not being a logical and < 1262695203 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :using !! ? < 1262695218 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :no < 1262695220 0 :soupdragon!n=somebody@unaffiliated/fax JOIN :#esoteric < 1262695222 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :by only doing bool & bool < 1262695224 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :hi soupdragon < 1262695240 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i didn't solve your gadt thing, but I did make the type system execute fib(3!) < 1262695247 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, there are some functions in C that can return non-1/0 boolean values < 1262695256 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: don't use them in ifs < 1262695256 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, the stuff in ctypes.h comes to mind as a prime example < 1262695264 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :if(foo() > 0 & ...) < 1262695267 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :isalpha() or such < 1262695277 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: those are post-the-change < 1262695286 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, oh right < 1262695354 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :hey < 1262695378 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :type family Fact n < 1262695378 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :type instance Fact Z = S Z < 1262695378 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :type instance Fact (S n) = S n :* Fact n < 1262695378 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :type family Fib n < 1262695379 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :type instance Fib Z = Z < 1262695379 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :type instance Fib (S Z) = S Z < 1262695380 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :type instance Fib (S (S n)) = Fib (S n) :+ Fib n < 1262695382 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :pretty cosy in type land < 1262695403 0 :FireFly!n=firefly@1-1-3-36a.tul.sth.bostream.se JOIN :#esoteric < 1262695450 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :you didn't solve the puzzle :P < 1262695454 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :indeed < 1262695475 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :what puzzle < 1262695482 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :gadt puzzle < 1262695484 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i might solve it next < 1262695494 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ACTION googles < 1262695512 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :no luck < 1262695519 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, ^ < 1262695525 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster; write the variadic function sum (I 3) (I 2) (I 7) X = 3+2+7 < 1262695526 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :maybe if we wanted to define the terms so you could understand we would have < 1262695529 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :using a GADT < 1262695542 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :no typeclasses or typefamilies or anything < 1262695556 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :terms AnMaster does not understand there: < 1262695557 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :- gadt < 1262695559 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :- typeclasses < 1262695561 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :- typefamilies < 1262695637 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :well if you don't know haskell this puzzle wont be fun < 1262695646 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :exactly :P < 1262695654 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i think i've done basically the same thing before < 1262695658 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :lemme finish playing with this first < 1262695665 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :ehird, lemme get your opinion on something < 1262695719 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :shoot < 1262695737 0 :Asztal!unknown@unknown.invalid QUIT :Remote closed the connection < 1262695773 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :augur, is eat : (S\NP_sg)/NP the single correct category, and eat : (S\NP)\NP is just a hack that makes 'what does John eat' parse? (and so eat : (S\NP)\NP should be discarded) < 1262695783 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :i want to be able to draw diagrams in a webpage while having the HTML contain what seems to be some sort of code that describes the image < 1262695800 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :e.g. how wikipedia handles MathML or whatever < 1262695805 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :how do you think i should do this?? < 1262695846 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :soupdragon: both are correct in the little shitty model of questions, they're just different words 'eat' < 1262695855 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :one for statements, one for direct object questions < 1262695877 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :augur: wikipedia does TeX, not mathml < 1262695878 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :define diagram < 1262695889 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :ok TeX, whatever < 1262695900 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :and you want the unprocessed code to be valid HTML? < 1262695910 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :yes < 1262695911 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :is it being rendered before publishing or will some js magic transform it < 1262695922 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :thats part of the question i suppose < 1262695942 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :well if you want the latter and don't care about the "theory" jsmath does that for latex < 1262695950 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, fun thing: arch's clang package does not depend on llvm < 1262695952 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :let's say you want to embed http://ditaa.sourceforge.net/ diagrams < 1262695960 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I haven't tried it without llvm installed. So not sure if it works or not < 1262695961 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :and process it before publication < 1262695963 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :I'd do this < 1262695978 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :
< 1262695978 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :...ditaa source... < 1262695978 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :
< 1262695981 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :augur, so can you unify them into something else using bluebird? < 1262695985 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :transformed by some program to < 1262696000 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :
< 1262696000 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :or eat just has to have two different categories? < 1262696001 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric : < 1262696001 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric : ...ditaa source... < 1262696001 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :
< 1262696001 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :with < 1262696006 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :.diagram * {display:none} < 1262696015 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :.diagram img {display:inline} < 1262696033 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :is that an answer? < 1262696035 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :ehird: i was actually thinking about doing something from scratch as the kinds of diagrams i need are sort of custom < 1262696041 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :http://ditaa.sourceforge.net/ < 1262696046 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ditaa can handle anything you throw at it < 1262696077 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :including colours, curves, every box style in existence, many types of lines, weird point things, overlapping diagrams, ... < 1262696116 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :augur: if you have a stylesheet for non-graphical agents too that hides the img and shows the ditaa source, then the only unhandled case in my way is if the image doesn't load < 1262696119 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :but that's pretty edge-case < 1262696122 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :can it handle automatically calculated tree diagrams, symmetry-preseving graph diagrams, and attribute-value matrices? :) < 1262696144 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i don't know < 1262696145 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :anyway < 1262696148 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ditaa was just an example < 1262696150 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :you get the idea < 1262696151 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1262696178 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric : Overlapping instances for Show () < 1262696178 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric : arising from a use of `print' at :1:0-29 < 1262696179 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric : Matching instances: < 1262696179 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric : instance Show () -- Defined in GHC.Show < 1262696179 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric : instance (ToNum n) => Show n < 1262696179 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :whoopsy. < 1262696179 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :i just want an idea of what sort of thing you think i should do -- JS rendered, JS calling out to a server-side lib, or server-side preprocessing < 1262696184 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :soupdragon: restate your gadt problem again? < 1262696197 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :ehird what's not clear about it? < 1262696205 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :soupdragon: theyre just two different types < 1262696209 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :augur: well you can avoid js in this case and that'd support non-js agents, speed up page loading, etc < 1262696215 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :you dont use bluebird on them, you just do it like normal < 1262696216 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :like i showed < 1262696220 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :so i wouldn't go for js, i'd go for a tool that preprocesses the html < 1262696227 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :ok < 1262696229 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :augur how does it motivate going from CG to CCG then? < 1262696251 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :augur: i wouldn't do anything server-side either really < 1262696254 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :are these pages otherwise static? < 1262696265 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :soupdragon: because you'd need to expand your lexical inventory for _every_ kind of extraction site < 1262696277 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :ehird: yes < 1262696282 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :just do % diagrender < foo.html > upload/foo.html < 1262696287 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :on your local machine < 1262696293 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :wha < 1262696303 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :what do you mean, wha < 1262696304 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :oh you mean preprocess locally < 1262696308 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :yes. < 1262696318 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :no need to cause server/client side load when it's a trivial preprocessing step < 1262696337 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :i dont want to have to be at my machine to fix a mistake or something tho < 1262696353 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :i want it to just be transparent, as if the browser supports it < 1262696353 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :put the program on a usb stick :p < 1262696354 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :or ssh! < 1262696374 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :the extraction site in that example is the word "does"? < 1262696378 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :then do it with server side processing < 1262696384 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :cache it or w/e < 1262696394 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :soupdragon: restate gadt prob plz < 1262696399 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :ehird what's not clear about it? < 1262696404 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :nothing < 1262696407 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :soupdragon: no, the extraction site is the direct object "john eat ___" -> "did john eat ___" -> "what did john eat ___" < 1262696410 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i just refuse to scroll up :) < 1262696424 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :write the variadic function sum (I 3) (I 2) (I 7) X = 3+2+7 < 1262696466 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :soupdragon: its actually significantly worse that that tho: because extraction can happen in a wide range of places, you would actually have to have to change the types in an insanely convoluted fashion, possibly even having an infinite number of types for _every single word_ < 1262696472 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :soupdragon: can I just support Integer? < 1262696475 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :or do I have to use Num < 1262696495 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :Integer < 1262696523 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :and can I define other auxiliary types? < 1262696531 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :augur okay thanks! < 1262696533 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :yes ehird < 1262696552 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :the rule is just that you don't use typeclasses or any of those things < 1262696553 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :ehird, so i take it that you would prefer server-side preprocessing to anything else < 1262696597 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :soupdragon: i've done this before iirc, it involves a continuation argument I believe < 1262696613 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :augur: well js is entirely superfluous here and isn't always available/introduces page loading lag/etc < 1262696618 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :so server-side processing seems reasonable < 1262696619 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :true < 1262696639 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :but if JS is more convenient to implement that's fine too < 1262696643 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :now i have another question < 1262696650 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :your mom has another question < 1262696656 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :im basically going to be creating a custom graphics engine here, right < 1262696666 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :augur: you don't need to do that < 1262696672 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :no, i do, trust me. < 1262696674 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :soupdragon: also I can name it something other than sum can't I < 1262696682 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :augur: no, I won't trust you, because you're wrong < 1262696682 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :of cours... < 1262696684 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :soupdragon: (prelude clash) < 1262696715 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :by custom graphics engine i mean basically something that lets me define custom drawing constructs that unfold recursively, etc. < 1262696727 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :*Main> sumT (I 3) (I 2) (I 7) X < 1262696727 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :0 < 1262696729 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :close < 1262696754 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :what i want to know is what sort of syntax i should give it < 1262696891 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :im confused :( < 1262696892 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :augur: is there something wrong with using data structures instead of strings? < 1262696895 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :that would be easier to manipulate < 1262696903 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :soupdragon: < 1262696904 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :*Main> sumT (I 3) (I 2) (I 7) X < 1262696905 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :12 < 1262696911 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :how did you do it? < 1262696915 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :ehird: well, data structures cant be encoded into HTML. < 1262696928 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :or written in page's source code, rather < 1262696934 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :augur: put the diagram code into the html, and have a processor diagram→graphicsengine < 1262696935 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :presumably < 1262696947 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :soupdragon: http://hpaste.org/fastcgi/hpaste.fcgi/view?id=15627#a15627 < 1262696948 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :well thats what i was going to do, ehird :P < 1262696963 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :augur: so you want syntax for the diagram stuff, not the underlying drawing engine, presmuably < 1262696963 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :nice work that's exactly the solution I got < 1262696966 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :*presumably < 1262696967 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :the question is what do you think the diagram code should look like < 1262696975 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :soupdragon: i think it's pretty much the only solution < 1262696982 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :unless you allow the use of things other than gadts < 1262697002 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :because its going to need to permit custom definitions of functions, etc. < 1262697014 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :oh well I used an integer instead of continuation < 1262697021 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :but that's not a real difference < 1262697022 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :d'oh < 1262697035 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i just did continuations cuz i always did in my vararg stuff, to allow for more generic uses < 1262697046 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :soupdragon: a challenge for you — implement: < 1262697060 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :foo 0 == 0 < 1262697061 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :foo 1 3 == 3 < 1262697061 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :foo 2 3 4 == 7 < 1262697061 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :... < 1262697072 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :you may define types and typeclass instances < 1262697076 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :but not define any typeclasses yourself < 1262697083 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :you can use GADTs too if you want < 1262697092 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :any opinions, ehird? < 1262697097 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ACTION writes down his solution < 1262697102 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :augur: make it look functional-esque < 1262697108 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric ::P < 1262697109 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :since it's essentially a functional program < 1262697119 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :of type drawing instructions, right? < 1262697123 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :your server side code is < 1262697132 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :draw :: diagram → drawing < 1262697138 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :pretty much < 1262697139 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :ehird but that's impossible unless you typeclasses isn't i t < 1262697142 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :so your input is of type diagram < 1262697150 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :soupdragon: you can define typeclass instances but not typeclasses < 1262697158 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :hm < 1262697163 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :augur: well < 1262697168 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :gimme an example you want to express, including a function < 1262697172 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :and i'll show you what syntax i'd use < 1262697175 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :you can use english < 1262697179 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :but as far as the syntax is concerned -- haskellish, rubyish, lisp-ish? < 1262697196 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :ok lets say i want to do a tree diagram, right < 1262697197 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :well is ease of parsing a concern? < 1262697203 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :if so, go for lisp, job done < 1262697222 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :no, i want it to be vaguely possible for others to use it tho < 1262697260 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :so suppose that [a b c] is a simply tree with "a" as the root node, and "b" and "c" as the two daughter nodes < 1262697277 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :soupdragon: oh, and you may use FlexibleInstances < 1262697288 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :augur: right < 1262697302 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :or where, lets say, [(a\nfoo) b c] is a tree where the root node has the two lines a, and foo, as the contents < 1262697303 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :etc. < 1262697332 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :soupdragon: although, hmm, I think an ideal implementation might not < 1262697338 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :also, you are allowed to use undefined < 1262697345 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :but if you don't need FlexibleInstances you don't need to use undefined < 1262697363 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :hmm, maybe < 1262697365 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :not sure < 1262697391 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :ehird I got for newtype Foo = Foo Integer < 1262697393 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :foo = Foo 0 < 1262697399 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :maybe... < 1262697408 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :the code should be able to define a tree drawing algorithm so that drawing the tree [a [b c d] [e f g]] is done recursively < 1262697411 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :perhaps that doesn't work < 1262697476 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :e.g. equivalent to like branch("a", [branch("b", [leaf("c"), leaf("d")]), branch("e", [leaf("f"), leaf("g")])]) < 1262697491 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :augur: okay < 1262697503 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :augur: erm, describe the drawing algorithm to me < 1262697506 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :so that i can write the code for it < 1262697544 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :soupdragon: ugh, my solution has run into an overlapping instances problem :) < 1262697546 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i know this is possib— ah! < 1262697548 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ACTION has an idea < 1262697552 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :I can't do it because of flexible instance < 1262697559 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :lemme try something < 1262697561 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :I believe it is possible < 1262697658 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :ehird, i dont know. the point is that in this graphics language it should be possible to define something like leaf(_) or branch(_,_) that will be recursive functions that return little image objects that get composited together into larger units and so forth < 1262697678 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :i just need to know the general sort of syntax you think would make this clean and understandable < 1262697707 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :well gimme an example drawing instruction < 1262697714 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :its going to need to be vaguely powerful, unfortunately, but < 1262697716 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :your information is far too vague atm to give a good syntax < 1262697743 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :er. well ok, lets suppose we're doing a ruby-esque syntax for now, and we're defining some sort of tree algorithm < 1262697756 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :let me do this in a pastie < 1262697865 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :I can't do it! < 1262697928 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :soupdragon: maybe we should help each other, I keep honing on the solution but can't quite get to it < 1262698081 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :soupdragon: I have: < 1262698082 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :*Main> foo Zero < 1262698083 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :0 < 1262698083 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :*Main> foo (Succ Zero) 1 < 1262698083 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :1 < 1262698084 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :*Main> foo (Succ (Succ Zero)) 1 2 < 1262698084 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :3 < 1262698089 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :so it's just a matter of somehow hacking this into a Num instance < 1262698092 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :so we can have fromInteger < 1262698105 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :hey that seems like it culd work < 1262698145 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :http://hpaste.org/fastcgi/hpaste.fcgi/view?id=15628#a15628 < 1262698152 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :if we can fill in fromInteger, it'll work < 1262698173 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :note that that Eq instance is technically correct; as different N numbers have different types, and (==) takes two things of the same type, it's always true :) < 1262698184 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :of course the other Num functions are blatantly undefined < 1262698245 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :I have got < 1262698245 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :*Main> foo (1::Integer) (3::Integer) (6::Integer) :: Integer < 1262698245 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :10 < 1262698253 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :but I can't omit any of the annotations < 1262698258 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :and it uses flexible instances < 1262698268 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :yeah that's just standard variadic stuff < 1262698278 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :instance Num n => Num (Integer -> n) where fromInteger x y = fromInteger x + fromInteger y < 1262698284 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :basing it on my thing is more likely to work, as it encodes the function type in the type < 1262698286 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :(and empty show/eq instances) < 1262698310 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :http://hpaste.org/fastcgi/hpaste.fcgi/view?id=15628#a15628 ;; can you think of a definition for fromInteger? < 1262698332 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :actually < 1262698335 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :maybe if you split it into two instances < 1262698337 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i think you'll need separate num instances < 1262698338 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1262698340 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :lemme try < 1262698341 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :one for each constuctor of the GADT < 1262698376 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :*Main> fromInteger 0 :: N Integer < 1262698377 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :(freezes) < 1262698378 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :how peculiar < 1262698413 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :OH < 1262698418 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric : fromInteger _ = 0 < 1262698419 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :spot the stupid < 1262698467 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :augur cn you tell me some intro stuff for CCGs ? http://groups.inf.ed.ac.uk/ccg/publications.html is half dead < 1262698478 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :something that will explain what's going on with eat ... < 1262698480 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :whats to tell you beyond what i wrote? :| < 1262698543 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :I'm just confused about the step from CG to CCG, it seems to be motivated by some uglyness with eat - but even in CCG you still have two categories for eat? < 1262698555 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :no, you just have one < 1262698559 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :(S\NP)/NP < 1262698566 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :ah! okay that seems to fit better < 1262698571 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :where did you get two from? < 1262698577 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :augur: you haven't posted that pastie yet < 1262698582 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :'This solution is tremendously inelegant, however, because we’d have to posit a whole slew of different versions for the verb eat, just to handle the different kinds of sentences we get in English.' < 1262698583 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :ehird: i know :D < 1262698597 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :soupdragon: that wasnt in CCG! that was just in CG! thats the point! < 1262698602 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :okay :))) < 1262698608 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :let me try and parse it in CCG < 1262698669 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :class Nish a < 1262698670 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :instance Nish Integer < 1262698670 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :instance Nish a => Nish (Integer->a) < 1262698670 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :instance (Nish a) => Num (N (Integer -> a)) where < 1262698673 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :this instance is proving difficult < 1262698682 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :ehird: http://pastie.org/767377 < 1262698693 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :incidentally Emacs is a lot nicer if you maximise it < 1262698703 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :woops < 1262698708 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :whoops what < 1262698714 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :ok sorry now < 1262698720 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :? < 1262698727 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :the pastie < 1262698731 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :i misstyped something < 1262698734 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ah < 1262698739 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :fix it then? < 1262698742 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :yes < 1262698759 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, oh? is it? both ways seems nice to me. Though I often use it in terminal, not X < 1262698761 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ok, so I'm just gonna write something and maybe fiddle with it and the like < 1262698764 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :see if I can get something nice < 1262698774 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :where "maximised" doesn't make any sense < 1262698784 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :ehird: im trying to use a sort of SICP graphics language y feel to it < 1262698798 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: well for instance it splits vertically by default when maximised (assuming sane screen dimensions), and if you create three window thingies it splits like that < 1262698802 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :with functions like above, below, beside, etc, you know? < 1262698805 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :instead of just sticking to two < 1262698809 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :it feels more dynamic < 1262698816 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :augur: elaborate < 1262698817 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :you mean like < 1262698819 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :constraint solving? < 1262698824 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :no no just < 1262698825 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :you say < 1262698828 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :x is above y < 1262698831 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :z is next to x < 1262698833 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :well you remember how in SICP they have an imaginary image language where if you did < 1262698836 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :and the engine figures out the positions < 1262698838 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :(beside a b) < 1262698839 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :based on that < 1262698843 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :augur: i haven't read sicp, gotta be honest. < 1262698847 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :ah well < 1262698871 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :it took two images a and b and just sort of image-concatenated them so that the resulting image was just b immediately below a < 1262698885 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, hm okay < 1262698954 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :augur: so in your tree model a branch can have N>0 children right? < 1262698981 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :sure lets pretend that trees must have non-zero children otherwise its a leaf < 1262698984 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :what about the value in the branch, can that be any type? < 1262698993 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :or just a string? < 1262698994 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :sure < 1262699000 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :anything thats drawable < 1262699004 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :string, number, another image < 1262699005 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :i dont care < 1262699008 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ah < 1262699013 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :but not every type is drawable, presumably < 1262699016 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :for instance, functions < 1262699022 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :good luck drawing a function < 1262699028 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :well thats up to the language < 1262699035 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :maybe if you tried to draw the function you'd get the source < 1262699035 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :right, but the point is < 1262699038 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :using haskell terminology < 1262699039 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :it isn't like < 1262699041 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :or !proc < 1262699042 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :or something < 1262699043 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :forall a. a -> < 1262699044 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :it's < 1262699044 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :i dont know < 1262699048 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Drawable a => a -> ... < 1262699054 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :sure whatever < 1262699070 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : good luck drawing a function <-- generate a flow diagram ;P < 1262699078 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :an infinite flow diagram! < 1262699088 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :leaf is Drawable a => a -> Image < 1262699093 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, yes quite :D < 1262699100 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :branch is Drawable a => a -> [a] -> Image < 1262699117 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :technically, we could represent this as "everything is a branch" < 1262699128 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :where branch=list of 1+ elems < 1262699130 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :sure but i dont wanna ;) < 1262699132 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :leaf = ["abc"] < 1262699138 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :branch = ["abc","def","blah"] < 1262699149 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :whatever < 1262699153 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :augur: the reason I said this is < 1262699154 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :I was writing < 1262699156 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :type Tree < 1262699157 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric : Leaf :: Drawable -> Tree < 1262699157 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric : Branch :: Drawable -> List Tree -> Tree < 1262699157 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :end < 1262699162 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :but then I realised, this is the same as just having Branch < 1262699168 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :if the list is empty, it's a leaf < 1262699177 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :i mean, ideally < 1262699204 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :what i'd like is for this language to allow TeX esque library functions that can accept custom syntax < 1262699222 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :custom syntax is rarely needed if your syntax is good enough < 1262699245 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :eg. in qtree you can just do \Tree [.a [.b c d] [.e f g]] < 1262699247 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :augur: so, trees should be drawable, obviously, right? < 1262699257 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :(amusing consequence: you can have leaves that are trees) < 1262699271 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :you can have NODES that are trees! :) < 1262699274 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :tree() is the function that draws a tree, in yours < 1262699276 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :amirite < 1262699285 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :yep < 1262699289 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :so you can, in principle, do like < 1262699305 0 :soupdragon!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1262699305 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :also, you don't mind me slightly changing the semantics to try and get a nice syntax right ;) < 1262699313 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :as in, same results < 1262699317 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :but different in-language semantics < 1262699318 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :tree [tree([a,b,c]), tree([1,2,3)], tree([:x,:y:,z:])] < 1262699326 0 :soupdragon!n=somebody@unaffiliated/fax JOIN :#esoteric < 1262699326 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :change the semantics how you want < 1262699344 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :im just thinking the easiest way to do it is to have functions like above/below/beside/etc. < 1262699352 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :sure, not changing that part < 1262699360 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :just flexing my awesome language designer muscles to MAKE CODE BETTER < 1262699363 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :really, what i guess these would really be, is magic data structures < 1262699383 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :where like, text_cell(text, width=:auto, height=:auto) < 1262699406 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :is really just a constructor for something like, say, { :text => text, :width => width, :height => height } < 1262699441 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :below(a,b) is really just a constructor for say { :type => :below, :top => a, :bottom => b } < 1262699451 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :augur I can't find a CCG parse of "What does John eat" :( < 1262699472 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :I must have the categories of these words wrong. < 1262699482 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :and so forth, and the engine knows what it means to Show these things < 1262699496 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :ACTION looks for some kind of lexicon < 1262699531 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :soupdragon: lets do PMs so we dont flood the channel < 1262699671 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric : width = subtrees.inject(0) { |c,x| c + x.width } < 1262699683 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :imo this is a flaw of your drawing system; with a constraint-based system this would be worked out automatically < 1262699725 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :sure, that really wasnt necessary actually :p < 1262699739 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :well no maybe not actually < 1262699754 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :my crazy inner language designer is adding features never seen before to your language btw :P < 1262699756 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :well, one feature < 1262699756 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :for this particular example maybe < 1262699763 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :awesome :D < 1262699764 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :that happens to serve the purpose of two features in other languages! < 1262699782 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :specifically, it handles both haskell-typeclasses and haskell-data-declarations < 1262699803 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :: < 1262699804 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric ::P < 1262699818 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :so in your thingy below takes a bunch of images and puts them one after another vertically < 1262699819 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :right? < 1262699859 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :yep < 1262699868 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :you'd have options for left aligned, centered, right aligned < 1262699875 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :what's after, like below but horizontally? < 1262699875 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :justified < 1262699880 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1262699888 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :mind if I name that "beside" < 1262699895 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :no i dont care < 1262699920 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :im also thinking that the images, as composite data structures, should permit two things < 1262699923 0 :Asztal!n=asztal@host86-160-121-207.range86-160.btcentralplus.com JOIN :#esoteric < 1262699947 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :general bounding boxes as well as n-recursive bounding rects < 1262699969 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :as well as path-level bounding shapes < 1262699981 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :so just to check are you sure you don't want a constraint system :) < 1262700009 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :well maybe i do! i dont really know < 1262700035 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :good, you do, i will incorporate that in my snippet < 1262700040 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric ::p < 1262700044 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :whatever you want < 1262700055 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :im going to start a github for this < 1262700059 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :augur: basically all it means is that instead of working diirectly with images and each function like below laying them out itself, < 1262700072 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :below actually just generates a list of constraints like this: < 1262700082 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :for below(x,y,z): < 1262700102 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :it should be arbitrarily many items, mind you < 1262700109 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :yes < 1262700110 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :{ y.top >= x.bottom, < 1262700110 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric : z.top >= y.bottom } < 1262700112 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :tho i guess that can preprocess out < 1262700116 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :see how that works? < 1262700123 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :sure < 1262700128 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :maybe it should be = instead of >= tho < 1262700140 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :well, "below" would simply mean < 1262700141 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :"is below" < 1262700148 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :if you didn't put anything in between later < 1262700152 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :it'd be == < 1262700156 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :*if you < 1262700161 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :oh i suppose < 1262700161 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :but the composability of constraints is the cool part, so. < 1262700167 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :anyway, the constraint engine is basically like prolog except a lot simpler < 1262700179 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :howre the constraints composable now? < 1262700182 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :it handles a bunch of constraints and works out what arrangements satisfy it < 1262700182 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :well how about this < 1262700187 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :and picks the "best" one, per some metric < 1262700190 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :you come up with some ideas, and show why its cool < 1262700191 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :and all other constraints just reduce to that < 1262700201 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :augur: no i'm just going to assume you want it and code as if you do :) < 1262700210 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :lol < 1262700217 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :right but show me why its nifty like that < 1262700239 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :because im not entirely sure im following your reasoning about why this is useful < 1262700271 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i can't really show an example off the top of my head, but when it's useful it is :P < 1262700283 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i mean < 1262700290 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :you never have to futz with widths or manual placement or anything < 1262700308 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :well, in some cases you might need to tho i think < 1262700311 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :you just have to know, this has to be above this, this should be at the left edge of this, this should overlap this and this < 1262700316 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :but show me cases that eliminate this < 1262700317 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :and the computaah figures it out for you < 1262700323 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :no, i'm translating your pastie < 1262700327 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :and if you keep talking i won't be able to < 1262700331 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric ::P < 1262700352 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :what exactly is the point of your triangle call in branch() < 1262700355 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :does it actually display anything < 1262700496 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :a triangle instead of branch lines, because im too lazy to figure out how the branchlines should be calculated :p < 1262700516 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :http://ironcreek.net/phpsyntaxtree/ < 1262700518 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :draw that tree < 1262700518 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :okay so this is tree drawing, psychedelia edition < 1262700524 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :where you can't tell which branches are which :D < 1262700526 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :and notice the triangle under NP_2 < 1262700530 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :sure :d < 1262700531 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric ::D < 1262700543 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :oh i see < 1262700547 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :the triangle stops just before the children < 1262700603 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :actually, (0,50) is kinda arbitrary, I think this will break if you have a nested tree... like any decent tree < 1262700666 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :it is indeed arbitrary < 1262700669 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :i just wanted a number < 1262700674 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :yes but < 1262700682 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :let's say you have < 1262700708 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :["foo",["abc","def","blah"],["fff","ggg","zzz"]] < 1262700718 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :the triangles under abc and fff will overlaap < 1262700722 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :*overlap < 1262700725 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :instead of being side by side < 1262700726 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :no? < 1262700741 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :right < 1262700748 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :oh, no sorry < 1262700754 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :well < 1262700760 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :yes over the abc nodes right < 1262700765 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :one bit triangle < 1262700769 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ok wait lemme draw < 1262700779 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :that is as wide as the whole image, with those two things just below it < 1262700791 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :(using the definition i gave for this, anyway) < 1262700937 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :http://pastie.org/767427 < 1262701119 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :no? < 1262701146 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :actually, given how i defined it, it'd be more eh < 1262701212 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :http://pastie.org/767431 < 1262701218 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :just by how i defined it < 1262701225 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ok, so it does handle that < 1262701228 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :because the upper triangle fully spans the lower images < 1262701231 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :yes, it does < 1262701247 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i need to look at your code more carefully, then translate it to constraints ;) < 1262701301 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :augur: so the triangles are always 50 high? < 1262701308 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :50px? or does it scale < 1262701324 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :sure, always 50 < 1262701327 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :in this one < 1262701413 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :whatevers easiest < 1262701415 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :it doesnt matter < 1262701420 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :this is an unrealistic definition anyway < 1262701449 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :ideally the triangles should only be as wide as necessary to cover all the root nodes of the subtrees and no wider < 1262701689 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :http://pastie.org/private/pzgtz8nyegfgpsbn1lcdq < 1262701689 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :First attempt. Note something interesting here: width(subtrees) doesn't return a number, since it isn't known until draw time. Instead it returns an abstract object, so that in the end it turns into constraints like { triangle.p1.x == subtrees.width }. < 1262701753 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Er, *subtrees.width/2 < 1262701786 0 :FireFly!unknown@unknown.invalid QUIT :"Leaving" < 1262701799 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1262701839 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Also note the interesting below[] call. Since most function arguments are tuples, i.e. f(x,y) is f (x,y), we do variadic functions by instead passing a list. < 1262701852 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Cute syntax ensues. < 1262701946 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :The syntax is a bit too (())ish for me. < 1262701949 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :But it's a start. < 1262701957 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :And it has my Mystical New Feature. < 1262701961 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :(groups) < 1262701993 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :ill look it over < 1262702005 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :i cant do anything significant right now tho, im about to leave for the airport < 1262702014 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :YOUR MOTHER is about to leave for the airport. < 1262702039 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :no shes not < 1262702044 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :OR IS SHE < 1262702048 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :she isnt. < 1262702090 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :OR IS SHE < 1262702164 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :I fail making semantics for "and" :( < 1262702505 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :soupdragon: any progress on the foo function? < 1262702560 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :byeee < 1262702565 0 :somebody_!n=somebody@amcant.demon.co.uk JOIN :#esoteric < 1262702585 0 :somebody_!unknown@unknown.invalid PRIVMSG #esoteric :grrrrrrrr < 1262702597 0 :soupdragon!unknown@unknown.invalid QUIT :Nick collision from services. < 1262702600 0 :somebody_!unknown@unknown.invalid QUIT :Remote closed the connection < 1262702612 0 :soupdragon!n=somebody@unaffiliated/fax JOIN :#esoteric < 1262702730 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :soupdragon: any progress on the foo function? < 1262702806 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :I gave up ehird it's too hard < 1262702814 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric ::( < 1262702816 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :you should just allow type annotations :) < 1262702879 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :I cannot build a semantic domain without modelling untyped lambda calculus :[ < 1262702888 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :semantics of "and" is givin me problems < 1262703193 0 :MigoMipo!unknown@unknown.invalid QUIT :"co'o rodo" < 1262703205 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :soupdragon: fine, i allow type annotations, but your function didn't do what i asked < 1262703212 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :the first parameter to foo is the *number of arguments it will take* < 1262703542 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :oh really < 1262703547 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :I didn't get that < 1262703589 0 :augur!unknown@unknown.invalid QUIT :Read error: 110 (Connection timed out) < 1262703635 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :I think there is a way to compute types from values like this using typeclasses < 1262703649 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :not totally sure about the details but I saw some odd trick in #haskell one time < 1262703793 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :as I said < 1262703796 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :well < 1262703798 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :I guess it wasn't clear < 1262703802 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :but yeah, that's the idea < 1262703815 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :you need to have some Num that you defined that lets the first argument be one of your types < 1262703823 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :so you can encode what you need into the type < 1262704129 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :http://plasmasturm.org/log/542/ < 1262704130 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :I wonder what a language based around caching would look like. < 1262704309 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :"During the summer of 1981, my work on TeX began to consume so much time that I had to stop answering mail about The Art of Computer Programming. I began to set all such incoming mail aside and to send form-letter replies: ``Thanks, I'll get back to you soon.'' < 1262704309 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Finally I was able to go through all the letters accumulated during a 15-year hiatus[…]" —Knuth < 1262704510 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :im totally stumped wrt semantics of "and" < 1262704525 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :it seems like the only way to tackle this is to use untyped lambda calculus < 1262704534 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :but simple types are so much simpler.... < 1262705289 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :soupdragon: is it strongly typed LC? < 1262705296 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :that's not TC, you need fix < 1262705303 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :I don't want TC± < 1262705304 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :I don't want TC! < 1262705307 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :alrighty then < 1262705309 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :what's the issue < 1262705314 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :but I think I have to have it < 1262705314 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :I wish http://arcanesentiment.blogspot.com/ posted more < 1262705324 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :soupdragon: have you considered LC+dependent types < 1262705332 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :(let's traverse the lambda cube until we find something that'll work :P) < 1262705353 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :it was going really well with simple types, until AND came along and ruined it < 1262705413 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :the problem is this, < 1262705420 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :if AND : Sem -> Sem -> Sem, < 1262705426 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :define Sem < 1262705435 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :data Sem : Set where < 1262705441 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric : CAT, DOG, MARY, JOHN : Sem < 1262705450 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric : RUN : Sem -> Sem < 1262705464 0 :augur!n=augur@74.174.236.120 JOIN :#esoteric < 1262705466 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric : SEE, EAT, LOVE : Sem -> Sem -> Sem < 1262705473 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :p hai < 1262705485 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :o hai* < 1262705486 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :hi < 1262705492 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :å hai < 1262705492 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :soupdragon: whatve you been up to? :) < 1262705496 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric ::D < 1262705509 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :im puzzling over semantics < 1262705510 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :btw, for NP conjunction < 1262705533 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :you dont conjoin NPs directly but rather their lifted counterparts < 1262705546 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :ehird, so the problem is you can do stuff like AND CAT DOG, but you can't have AND (\x -> LOVE x) (\x -> EAT x) < 1262705550 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :let NP' = S\(S/NP) < 1262705588 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :soupdragon: so the basic issue is, x is like < 1262705589 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :"I love it" < 1262705590 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :right? < 1262705591 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :ehird, but if I set Sem ~ Sem -> Sem, then I model untyped lambda calculus and that means I don't know if anything terminates < 1262705592 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :it=x there < 1262705600 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :"I love it and I eat it" < 1262705600 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :and : (NP'\NP')/NP' = \q.\p.\r.p(r) & q(r) < 1262705605 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :Mary loves and eats dogs < 1262705608 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :what was the command to explain a C type. It slipped my mind < 1262705609 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :→ AND (\x -> LOVE x) (\x -> EAT x) < 1262705611 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :soupdragon: ah, I see < 1262705614 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: cdecl < 1262705618 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, thanks < 1262705623 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :soupdragon: (disturbing example) < 1262705627 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :soupdragon: is make sense? < 1262705628 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ffs, not in arch < 1262705632 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ACTION looks in aur < 1262705639 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: http://cdecl.org/ < 1262705640 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :enable js < 1262705641 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :you're welcome < 1262705648 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ah it is in aur < 1262705655 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :augur: well my and is (X\X)/X, and that's just one instantiation right? < 1262705659 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :soupdragon: so, are you averse to introducing typeclasses? < 1262705666 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, someone ported it to js? < 1262705672 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: it's ajax i think < 1262705675 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :soupdragon: indeed, thus we have a big of a tricky thing dont we! < 1262705677 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ah < 1262705685 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :YES < 1262705688 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :oops < 1262705690 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :soupdragon: i'd model this as < 1262705690 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :class AND a < 1262705690 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :instance AND Sem where AND = ... < 1262705690 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :atleast if you want consistent semantics < 1262705691 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :instance AND a => AND (Sem -> a) where AND = ... < 1262705702 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :soupdragon: or, if you want to introduce dependent types... < 1262705713 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :you can let it be what it is, and force conjunction to be, semantically, (a -> b) -> (a -> b) -> (a -> b) < 1262705720 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :you could have IsSemType < 1262705720 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :this would _force_ NPs to type-lift < 1262705721 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :and the like < 1262705723 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :and take a type < 1262705757 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :augur, so the semantics of Mary loves cats and dogs would be and(love(mary,cat),love(mary,dog)) ? < 1262705765 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :yes < 1262705766 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :rather than love(mary,and(cat,dog)) < 1262705773 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :right < 1262705777 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :that sounds good < 1262705781 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :why didn't I think of that :( < 1262705782 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :soupdragon: or, here's an idea < 1262705784 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :instead of < 1262705787 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :what you said < 1262705787 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :do < 1262705797 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :(\x -> AND (LOVE x) (EAT x)) < 1262705806 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :exactly < 1262705814 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :for verbs you'd just conjoin the verbs by forking over & < 1262705818 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :you could do that programmatically and the like really < 1262705830 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :with cats and dogs, you turn the nouns into functions that you can fork over & < 1262705837 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :in applications, take all functions and replace them with their bodies, then add their parameters to the whole expression < 1262705878 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :soupdragon: if you want to make a single system that will uniformly handle a large chunk of a language, tho, it becomes _INCREDIBLY_ tricky < 1262705890 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :I bet :) < 1262705920 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :hmm < 1262705927 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :I wonder if you could make a language based on functions bubbling up like that < 1262705927 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :Paul Pietroski has whats called a conjunctivist model < 1262705934 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :so what we're using right now is a functionist model < 1262705942 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :as in, f (\x -> ...) turns into (\x -> f (...)), always < 1262705943 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :where everything is function application < 1262705971 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :ehird -- ive thought of things roughly like that < 1262705985 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :only slightly reverse < 1262706029 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :so < 1262706033 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :soupdragon: pietroski's approach is one in which the only semantic composition rules are conjunction of predicates < 1262706041 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :and conjunction-over-closure of predicates < 1262706043 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :plus = \m,n. m SUCC n < 1262706046 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :augur I just bookmarked a search for it < 1262706047 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :expand SUCC < 1262706051 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :e.g. < 1262706056 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :plus = \m,n. m (\n,f,x. f (n f x)) n < 1262706058 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :bubble up < 1262706060 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :eat = \x.eating(x) < 1262706070 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :john = \y.john(y) < 1262706077 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :plus = \m,n,n',f,x. m (f (n' f x)) n < 1262706087 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :dance = \x.dancing(x) < 1262706088 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :god knows what that does < 1262706100 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :'eating and dancing' ~ \x.eating(x) & dancing(x) < 1262706113 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :well, eat and dance* < 1262706147 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :John eats and dances = \x.eating(x) & dancing(x) & Ey[actor(x,y) & John(y)] < 1262706153 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :the model soupdragon said < 1262706153 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :thatt is < 1262706160 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :AND (\x.LOVE x) (\x.EAT x) < 1262706162 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :doesn't even make sense < 1262706167 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :because the two arguments could differ < 1262706171 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :*that is < 1262706186 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :ehird, actually you can make it work like in a pietroskian system < 1262706199 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :where the _participants_ of actions are not expressed as in eat(John,pizza) < 1262706217 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :but rather as in eat(e) & eater(e,John) & eaten(e,pizza) < 1262706224 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :where e is 'the event of eating' < 1262706266 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :Donald Davidson proposed this account so that statements like "John ate the pizza quickly" can make some amount of sense < 1262706269 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :if semantically this was just < 1262706275 0 :MigoMipo!n=migomipo@84-217-2-72.tn.glocalnet.net JOIN :#esoteric < 1262706277 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :quickly(ate(John,pizza)) < 1262706284 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :and if ate(John,pizza) == true < 1262706287 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :then this is quick(true) < 1262706289 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :which is nonsensical < 1262706310 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :because it "means" the same thing as quickly(danced(Susan)) if danced(susan) == true < 1262706328 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :so davidson said, lets just use variables that denote the event or action < 1262706350 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :and you get quickly(e) & eating(e) & eater(e,John) & eaten(e,pizza) < 1262706357 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :but can't quickly(ate(John,pizza)) make sense? < 1262706367 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :not if you have referential transparency < 1262706375 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :imagine this haskell < 1262706387 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :suppose ate(John,pizza) = a video of john eating pizza < 1262706387 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :and ate(John,pizza) is of type Thing -> Thing -> Bool < 1262706399 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :then quicky(a video of john eating pizza) = a video of john eating pizza played at 2x speed < 1262706419 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :sure, but then you'd need it to be of type Thing -> Thing -> Thing < 1262706429 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :and in normal logic, everything is taken to be ... -> Bool < 1262706435 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :okay < 1262706445 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :but thats ok right < 1262706458 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :because if ate(John,pizza) is Thing -> Thing -> Event < 1262706460 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :lets say < 1262706468 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :we can make it logicy < 1262706471 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :the thing with quicky(e) & eating(e) ... is sort of like a constraint program, at least superficially < 1262706491 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :by doing ate`(John,pizza,e) :: Thing -> Thing -> Event -> Bool < 1262706493 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :soupdragon, it seems slightly similar to predicate logic to me < 1262706502 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: it IS predicate logic :p < 1262706510 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :augur, oh why didn't you say that < 1262706518 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :ate`(John,pizza,e) :: Thing -> Thing -> Event -> Bool -- aha!!! < 1262706519 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :soupdragon: and ofcourse this just makes it obvious that you've got this extra event variable < 1262706524 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :augur, I thought that no one would discuss something as trivial as that in here ;P < 1262706531 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :right I see that's cool < 1262706535 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :with ate :: Thing -> Thing -> Event, you'd end up doing stuff like < 1262706545 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :what is Thing? < 1262706549 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :let e = ate(John,pizza) in quickly(e) & in_the_kitchen(e) < 1262706556 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: the type for things, people, stuff, etc. < 1262706556 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :John and Pizza and such? < 1262706560 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ah < 1262706571 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :but notice, soupdragon, that you're still, ultimately, predicating of the event < 1262706581 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :yes < 1262706589 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :augur, but what is the type of quickly? < 1262706594 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :or ate < 1262706597 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: Event -> Bool < 1262706613 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :augur, can you describe those in a "meta"-way < 1262706613 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :ate` with the davidsonian account is Thing -> Thing -> Event -> Bool < 1262706647 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: you can make quickly() a special-form of your logic, in the same way that cond is a special form of lisp < 1262706657 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :you could make _Everything_ special forms < 1262706680 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :but its nicer if we can bring our knowledge of pred-calc to bear on this < 1262706686 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :augur, I haven't followed the entire convo here, so not sure of the scope of what you try to describe. But I was considering something like "ate is the past tense of eat" < 1262706690 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :i mean, if you have special forms, you have to define a whole new logic < 1262706694 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :its much nicer to just use what we have < 1262706705 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :of course I guess they are then thinks < 1262706723 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :ate-is-the-past-tense-of-eat can actually be seen as like < 1262706732 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :"ate" is really two things < 1262706739 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :eat and -ed < 1262706748 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :eat = \e.eating(e) < 1262706752 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :-ed = \e.past(e) < 1262706764 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :conjoining them, eat-ed = \e.eating(e) & past(e) < 1262706776 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :and thenw e just say that the morphology of english turns eat-ed into ate < 1262706781 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :ok im off for the flight guys < 1262706781 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :see ya < 1262706786 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: It's not predicate logic, it's linguistics. < 1262706788 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :They're just isomorphic. < 1262706792 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :augur, eating implies "right now" iirc. What about "I often eat pasta but right now I'm eating spinach" < 1262706795 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :bye augur!! < 1262706805 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :that's awesome putting morphology into it < 1262706837 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :augur, feel free to add in "ate" there as well ("and yesterday I ate nothing") < 1262706847 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :He's gone. < 1262706848 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :-ing = \e.currently(e) < 1262706854 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ah right missed that < 1262706863 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :I just made that a rule < 1262706866 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :since it's plausible < 1262706878 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :-s = \e.pluraly(e) < 1262706883 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :soupdragon, what about "eating fruit is good for you", not "currently" there < 1262706887 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :stuff like that I guess < 1262706887 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :fuck < 1262706890 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :of course English is a mess < 1262706891 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :I wanted to ask augur anothing thing < 1262706901 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :hm that's true < 1262706904 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :(most natural languages are) < 1262706911 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :I am not sure what ing should be < 1262706936 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :soupdragon, English is ambiguous. This would probably have worked better with lojban or something < 1262706971 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :so what I wanted to ask about was.. backtracking a bit < 1262706994 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :I have the rule and : (X\X)/X (X is a variable) < 1262707022 0 :oerjan!n=oerjan@hagbart.nvg.ntnu.no JOIN :#esoteric < 1262707040 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oerjan, hi < 1262707053 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :hi AnMaster < 1262707060 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :this idea about bubbling in the semantics, AND f g being written as \x.AND (f x) (g x) could be done by restricting the variable X to a ground type {N,NP,PP,S}? < 1262707089 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ACTION is wondering why these two programs listing almost right after each other render with different letter spacing < 1262707095 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :everything whos interpretation is typed Sem < 1262707102 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :both have same settings < 1262707110 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ACTION prods LaTeX < 1262707450 0 :MigoMipo!unknown@unknown.invalid QUIT :Remote closed the connection < 1262707656 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :you know it's pretty hard to build these derivation trees by hand < 1262707737 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :derivation bonsai < 1262707795 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: lol@"this would have worked better with lojban" < 1262707799 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :this is standard linguistics, dude < 1262707804 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :it works perfectly well for english < 1262707841 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :this is the best < 1262707985 0 :augur!unknown@unknown.invalid QUIT :Read error: 113 (No route to host) < 1262708028 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, so what type or whatever is the -ing ending? < 1262708036 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :(wrong terminology probably) < 1262708038 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :why are you asking me < 1262708039 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :yeah what are semantics of -ing < 1262708046 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ask augur, he's the linguist < 1262708049 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :or soupdragon < 1262708133 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :liftA2 = S combinator? < 1262708138 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :no < 1262708143 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, since you indicated it worked quite well in English < 1262708145 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :just above < 1262708149 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : AnMaster: lol@"this would have worked better with lojban" < 1262708149 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : this is standard linguistics, dude < 1262708149 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : it works perfectly well for english < 1262708164 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, so I assume you know how it works, or can't you back up your claim? < 1262708174 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :what bird is Q? Qafgx = a(fx)(gx) < 1262708178 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :you were saying that formally representing english is unreasonable, and lojban would be a better choicee < 1262708181 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :*choice < 1262708185 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :no < 1262708188 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i provided a counterargument, being: < 1262708191 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :the ENTIRE FIELD OF LINGUISTICS < 1262708191 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :not exactly < 1262708223 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :ufff this is way too complex lol < 1262708232 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :I thought it clear that formally representing natural languages (such as English) was effing hard, but not too unreasonable. < 1262708240 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :(as demonstrated by it having been done) < 1262708249 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :It's not effing hard < 1262708251 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :It's basic linguistics < 1262708256 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :I'm trying to get a derivation of John loves and Mary hates pizza < 1262708265 0 :Slereah_!unknown@unknown.invalid PRIVMSG #esoteric :soupdragon : It is a queer bird < 1262708265 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :such that and is used only with ground cats < 1262708272 0 :poiuy_qwert!n=poiuy_qw@67-208-6-119.ip.tor.radiant.net JOIN :#esoteric < 1262708275 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :I just picked Q at random < 1262708286 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :ehird: ... I may be calling linguistics effing hard. :P < 1262708295 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :your mom is effing hard < 1262708296 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :what am I even asking this here I have the mockingbird book next to me :( < 1262708300 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i suppose that implies she's a hermaphrodite < 1262708301 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :soupdragon: S combinator is ap < 1262708320 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :or <*> < 1262708332 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Or liftM. < 1262708340 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :no! < 1262708347 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :? < 1262708355 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :liftM is not the same as ap < 1262708379 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Sure enough: ap = liftM2 id < 1262708381 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :it's the same as fmap or <$> < 1262708409 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :I was... Not thinking straight. < 1262708422 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :liftM2 id is not = liftM < 1262708434 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :on fig. 28 and is used with X := S/NP < 1262708441 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :ACTION nods < 1262708447 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :but I need to re-derive it such that X is one of {N,NP,PP,S} < 1262708583 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :soupdragon: otoh, your Q is liftM2, i think < 1262708595 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :(or liftA2) < 1262708617 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :or was that how you got it in the first place < 1262708732 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :well the thing is might be on the wrong track all together < 1262708758 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :I was thinking of Qafg, but maybe it's better to find some < and > such that Qafg = fg < 1262708769 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :but f and g might need lifted < 1262708802 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :f and g are John loves and Mary hates < 1262708825 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :(John loves and Mary hates) $ pizza = John loves pizza and Mary hates pizza < 1262708847 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :well > could be <*> < 1262708908 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :< is flip (<$>) i think < 1262708927 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :i don't recall that having a name < 1262708987 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :there is also the on function < 1262709037 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :(op `on` f) x y = f x `op` f y < 1262709451 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :maybe I should implement the parser then run it on this... and I won't have to work so hard trying to figure it out < 1262710822 0 :ehird!unknown@unknown.invalid QUIT : < 1262710914 0 :lament!n=lament@S0106002312fa554a.vc.shawcable.net JOIN :#esoteric < 1262711414 0 :ehird!n=ehird@91.105.68.74 JOIN :#esoteric < 1262711423 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :acquire ten dubloons < 1262711456 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :John loves and Mary hates → (\x. AND (LOVES JOHN x) (LOVES MARY x)) < 1262711456 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :imo < 1262711468 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :or LOVES x JOHN/MARY, w/e < 1262711494 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :hard to actually find a derivation that parses John loves and Mary hates < 1262711506 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :unless you allow AND (LOVES JOHN) (LOVES MARY) < 1262711536 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :I might need some generalized bluebird or something < 1262711547 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :apparently there's an algorithm for this < 1262711620 0 :lament!unknown@unknown.invalid QUIT : < 1262711859 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :soupdragon: well < 1262711860 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :just do < 1262711873 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :if you have a function where a non-function is expected in an expression < 1262711878 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :extract the function to the expression < 1262711894 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :so AND (LOVES JOHN) (LOVES MARY) would turn into (\x -> AND (LOVES JOHN x) (LOVES MARY x)) < 1262711898 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :simple < 1262711916 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :that doesn't typecheck though < 1262711927 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :do it before typechecking < 1262711936 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :there's no such thing as before typechecking :P < 1262711944 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :your mom < 1262711977 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :want to see my code < 1262711980 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :? < 1262712035 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :so AND needs to be applicatively overloaded? :) < 1262712121 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :hm wait that won't work, the base case doesn't fit < 1262712156 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :im not even sure really I understand what hmmm < 1262712170 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :maybe and : (X\X)/X works just fine < 1262712224 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :hm yes < 1262712243 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :the thing is... and = \pq.(p,q) : (X\X)/X only makes sense when X is ground < 1262712273 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :and = \pq.\x.(px,qx) : ((X/A)\(X/A))/(X/A) < 1262712288 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :and = \pq.\xy.(pxy,qxy) : ((X/A/B)\(X/A/B))/(X/A/B) ...etc < 1262712300 0 :soupdragon!unknown@unknown.invalid PRIVMSG #esoteric :dammit this just doesn't fit in with the rest of the framework < 1262712491 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hm does anyone know if openmp is just suited to number-crunching style workloads. Rather than, say, different threads doing different things, sometimes idling (think a server with threads, or a GUI program with backend threads and GUI threads) < 1262712499 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ACTION suspects ehird is most likely to know < 1262712566 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :OpenMP seems number-crunching oriented to me. Use pthreads to clone Plan 9/Go's thread API; that'd keep you sane. < 1262712587 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :(Using pthreads directly is on my list of Ten Ways to Torture Your Mortal Enemies In Hell.) < 1262712727 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, pthreads seems quite a pain yeah < 1262712752 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, also what about *implementing pthreads* < 1262712755 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :wouldn't that be worse? < 1262712758 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Ouch. < 1262712760 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Well, not really. < 1262712764 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :pthreads is very low level. < 1262712770 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Anyway, Plan 9/Go's thread API is *really* nice. < 1262712956 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :anything worse than "use pthreads" < 1262712960 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :on that list < 1262712961 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, ^ < 1262712970 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Not sure. < 1262713026 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, is the list even specified in full ;P < 1262713034 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Abstract operations of Plan 9/Go's threading API: spawn { code } — run code in a new thread. make_chan(type[, bufsize]) — return a new channel containing values of type. send(chan, val) — send val to chan. If the channel has a bufsize, and the buffer of that size is not full, append to that buffer; otherwise, block until a recv() happens. recv(chan) — receive a value from chan. < 1262713050 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, no shared memory? < 1262713062 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Well, if you have a global you can mutate it in two threads at once. < 1262713066 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :while dirty, in some specialised workloads it performs much better < 1262713068 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :But that would be dumb. < 1262713073 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :You can do it if you want, though. < 1262713080 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, I'm thinking merge sort with multiple threads < 1262713087 0 :virtue!n=virtue@216-207-126-66.dia.static.qwest.net JOIN :#esoteric < 1262713095 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :So we can use channels as completion signals: < 1262713095 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :c = make_chan(bool); spawn foo(c); recv(c); /* assuming the value doesn't matter */ < 1262713102 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Or to return the results of computation (obvious) < 1262713111 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :We can have multiple channels per thread < 1262713114 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :And multiple threads per channel < 1262713116 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, as for those globals, could you store a pointer to a malloced block in there? < 1262713124 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: Sure; they're regular threads. < 1262713127 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Same memory space and everything. < 1262713207 0 :virtue!unknown@unknown.invalid PART #esoteric :? < 1262713276 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :int pixels[x][y]; < 1262713277 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :chan(int) workers[x][y]; < 1262713277 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :for(x=0;x Depends on if your libc's malloc is thread safe, doesn't it? <-- well the plan9 one I meant < 1262713741 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :knowing c's retarded array handling, probably the latter *sigh* < 1262713744 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: sure < 1262713764 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, as for returning array. Is that allowed? < 1262713776 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :well, for fixed size it might be < 1262713779 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :ehird: That concurrency model is quite nicely simple. < 1262713830 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, isn't a struct returned as a pointer to a caller allocated space on stack for it. As in a pointer to it is passed as a hidden extra argument in %rax or somewhere (forgot where) < 1262713837 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ACTION looks for his AMD64 abi pdf < 1262713845 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :struct is returned on the stack i believe < 1262713857 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i.e. returning struct{int a,b;} is like returning two values (int,int) < 1262713884 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ACTION wonders how to declare returning an array < 1262713888 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :int[width][height] foo()? < 1262713897 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :int foo()[width][height]? < 1262713901 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :is it even possible? < 1262713950 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ACTION just requires the caller to pass in a pointer :P < 1262713996 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :In C? No, you can only return a pointer or a struct < 1262714010 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, or a scalar < 1262714028 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :hmm... is it possible, given a [][], to turn that into a ** reasonably? &ary doesn't work, it would produce *** i think < 1262714037 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :just passing it to a func will copy it < 1262714063 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: I meant, in place of an array < 1262714200 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ACTION comes up with an evil hack to do parameterised types in c < 1262714216 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :right < 1262714272 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :hmm... foo##__typeof__(3) won't produce fooint, will it; darn < 1262714273 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :oh well < 1262714282 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Behold: < 1262714285 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :#define TUPLE(t) struct _tuple_##t {t a; t b;} < 1262714286 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :#define NEW_TUPLE(t,a,b) ((struct _tuple_##t){a,b}) < 1262714287 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Usage: < 1262714298 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :TUPLE(int) foo = NEW_TUPLE(int, 1, 2); < 1262714300 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :foo.a < 1262714321 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :that's a two-tuple < 1262714326 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Fail. < 1262714328 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Tuple means two. < 1262714334 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Tuple, triple. < 1262714387 0 :lifthrasiir!unknown@unknown.invalid PRIVMSG #esoteric :ehird: isn't it a pair, or equivalently, 2-tuple? < 1262714399 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :I'm just using the Haskell terminology /shrug < 1262714532 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :lol @ plan 9 thread function: proccreate < 1262714621 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :ehird: its BDSM too, first you bind, then you mount, then you proccreate < 1262714657 0 :adam_d_!unknown@unknown.invalid QUIT :Read error: 110 (Connection timed out) < 1262714690 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :BSDM < 1262714716 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :mycroftiv: annoying that plan 9 does it letting you only pass a single void * as the functions arg < 1262714780 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :ehird: nah remember that C often doesnt even try to deal with your fancy 'types' < 1262714787 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :yes, but if you want to pass two values < 1262714791 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :it's a bitch < 1262714800 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :no its not < 1262714805 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :yes it is < 1262714809 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :#define SPAWN(x) ({ void _spawned_proc(void) { (x); }; spawn_proc(_spawned_proc); }) < 1262714810 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :↑ inelegant and bloody convenient < 1262714848 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :you make your struct with as many vars as you want to pass, malloc it, fill it up, cast it to void, send it to your proccreate, then cast it back to its real form < 1262714863 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :yeah, see, that's less convenient than f(x,y) < 1262714891 0 :mycroftiv!unknown@unknown.invalid PRIVMSG #esoteric :i almost could see going the other way in a language < 1262714900 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :oh, and take this < 1262714902 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric : SPAWN(send(workers[x][y], calc_pixel(x, y))); < 1262714909 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :try that with your dumb function! < 1262715051 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ehird: i don't think the tu- in tuple has anything to do with two. it's a generalization from quintuple, sextuple (possibly more?) to n-tuple < 1262715078 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :and triple is just the original case for 3 < 1262715111 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :eh, alrighht < 1262715115 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :*alright < 1262715122 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :tuple, triple, quadruple always seemed reasonable to me < 1262715131 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :i think it's formed in latin like quintus (5th) + -plex < 1262715168 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :writing this mandelbrot is fun < 1262715612 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : you make your struct with as many vars as you want to pass, malloc it, fill it up, cast it to void, send it to your proccreate, then cast it back to its real form <-- not allocate it on the stack? XD < 1262715633 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, so make a varargs wrapper for spawn < 1262715633 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :That would cause a wasteful copy. < 1262715637 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :with LOTS of macro magic < 1262715647 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :OTOH, overhead(copy) < overhead(malloc). < 1262715660 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: #define SPAWN(x) ({ void _spawned_proc(void) { (x); }; spawn_proc(_spawned_proc); }) < 1262715662 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Way ahead of you. < 1262715682 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, is that legal C? < 1262715687 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :{} inside a () I mean < 1262715689 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :It's legal GNU C . < 1262715694 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :It's a statement expression. < 1262715697 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :s/C \./C./ < 1262715699 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, oh I never used those < 1262715702 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :forgot how they work < 1262715711 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :({ a; b }) is like do { a; b } while (0), except it's usable as an expression. < 1262715715 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :The return value is the last statement. < 1262715731 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :({ ... }) also introduces a new variable scope, I believe. < 1262715743 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Which is why I used it: to avoid _spawned_proc name-clashing with a later use of SPAWN. < 1262715748 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, since I do intend to be reasonably portable I used the extensions that could easily be optional (__attribute__ for error checking mostly) and avoided the other stuff < 1262715768 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :What program are you writing? And will you use my implementation of Plan 9's threading model if I write it? :P < 1262715771 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, wait, does that nest a function inside another? < 1262715783 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Yes... < 1262715785 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, I meant in general < 1262715787 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :GNU C lets you do that, too. < 1262715789 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :not a specific program < 1262715795 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, it breaks badly iirc < 1262715801 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :No. It doesn't. It's a feature. < 1262715810 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, with a non-executable stack it does iirc < 1262715813 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :http://gcc.gnu.org/onlinedocs/gcc/Nested-Functions.html < 1262715840 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, it uses a trampoline and what not < 1262715846 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Yes. http://gcc.gnu.org/onlinedocs/gccint/Trampolines.html < 1262715853 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :"normally resides on the stack" < 1262715855 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Keyword normaally. < 1262715858 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :*normally < 1262715864 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ah they added support for it to be elsewhere? < 1262715873 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :dunno < 1262715883 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :The operating system may also require the stack to be made executable before calling the trampoline. To implement this requirement, define the following macro. < 1262715883 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :— Macro: ENABLE_EXECUTE_STACK < 1262715884 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Define this macro if certain operations must be performed before executing code located on the stack. The macro should expand to a series of C file-scope constructs (e.g. functions) and provide a unique entry point named __enable_execute_stack. The target is responsible for emitting calls to the entry point in the code, for example from the TARGET_TRAMPOLINE_INIT hook. < 1262715885 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Tada. < 1262716020 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :"Do not attempt to disprove the four-colour theorem on your flag!" < 1262716022 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :— http://www.otago.ac.nz/philosophy/Staff/JoshParsons/flags/ratings-c.html < 1262716042 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :eh < 1262716058 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, issues with executable stack exists. There are a few < 1262716062 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :quite a few < 1262716068 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Nobody uses OpenBSD. < 1262716072 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric ::P < 1262716087 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, executable stack makes baby Bruce Schneier cry < 1262716088 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :or something < 1262716095 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :horrible badly mangled meme < 1262716158 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, also I do see uses for executable stack. Just that I think it makes more sense to put it elsewhere. Somewhere away from those char buf[MAXBUF]; and such < 1262716327 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Common Lisp's type system is weird. < 1262716408 0 :soupdragon!unknown@unknown.invalid QUIT :"Leaving" < 1262716460 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :The symbol (atom, if you're not familiar with the terminology) T is a symbol. It is also a boolean, meaning "true". Every value in Common Lisp is of the type T — not a different thing to the symbol T sharing the same name, but an actual symbol being used as a type. It is the superclass, so to speak, of every other type. < 1262716463 0 :Sgeo!n=Sgeo@ool-18bf618a.dyn.optonline.net JOIN :#esoteric < 1262716504 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :NIL is: a symbol; a list (the terminator of a list, to be precise); a null. < 1262716524 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :However, NIL is not of type NIL. < 1262716532 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, what type is it < 1262716541 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :A symbol; a list (the terminator of a list, to be precise); a null. < 1262716555 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :(type-of nil) is NULL, so null is its "main" type. < 1262716558 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, as for it being a list and a null, makes as much sense as 0 being 0 and NULL in C (sure it might have another value) < 1262716581 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :But it's strange how T is a type as well as a value, and they're the same thing. < 1262716592 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, T? < 1262716592 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :And everything else is of type T, too. < 1262716598 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oh right not a T < 1262716599 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :[18:33] ehird: The symbol (atom, if you're not familiar with the terminology) T is a symbol. It is also a boolean, meaning "true". Every value in Common Lisp is of the type T — not a different thing to the symbol T sharing the same name, but an actual symbol being used as a type. It is the superclass, so to speak, of every other type. < 1262716599 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :top < 1262716608 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :That was TWO LINES above "NIL is:". < 1262716610 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Sheesh. < 1262716614 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, I just couldn < 1262716621 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :couldn't* see at this distance < 1262716628 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :...what? < 1262716628 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I'm holding a boot in front of me < 1262716631 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and multi tasking < 1262716641 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ACTION is both chatting on irc and writing a report < 1262716666 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, and the monitor with irc is pushed back, to make room for laptop in front < 1262716677 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :long live synergy < 1262716703 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, I need a bit of help with an English term < 1262716728 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, what do you call it when a DB becomes inconsistent, Not as in corrupted db file but as in "oops, forgot the foreign key" < 1262716740 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I know the Swedish word for it, but I can't find the English term < 1262716743 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :need it for the report < 1262716769 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Um, inconsistent? < 1262716770 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric ::P < 1262716783 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, doesn't that refer to a database file sort of level < 1262716794 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :What's the Swedish word < 1262716795 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :I'm not a relational DB person, sorry. < 1262716800 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :I try and avoid them wherever possible. < 1262716832 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, meh now it slipped my mind X| < 1262716872 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :brott mot databasintegritet. not quite... < 1262717035 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ACTION decides to formulate it another way < 1262717043 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :err that is a Swedishism probably < 1262717044 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :asdfgjkl;/ < 1262717091 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :arsnteoi < 1262717117 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Arse no teoi. < 1262717167 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Duck legged. < 1262717502 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :must be irish, i take < 1262717595 0 :FireyFly!n=firefly@1-1-3-36a.tul.sth.bostream.se JOIN :#esoteric < 1262717753 0 :FireyFly!unknown@unknown.invalid NICK :FireFly < 1262720903 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hm what was that about? < 1262720937 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :heck if i know < 1262720954 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :heh < 1262721167 0 :sebbu2!n=sebbu@ADijon-152-1-44-152.w83-194.abo.wanadoo.fr JOIN :#esoteric < 1262721542 0 :sebbu!unknown@unknown.invalid QUIT :Read error: 60 (Operation timed out) < 1262721998 0 :jpc!n=jw@unaffiliated/javawizard2539 JOIN :#esoteric < 1262722367 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :so why does my konsole window say "xterm" in the title bar... < 1262722371 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :that's very strange < 1262722375 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :it didn't a moment ago < 1262722403 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :it's been taken over by daleks < 1262722409 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :i suggest running < 1262722639 0 :poiuy_qwert!unknown@unknown.invalid QUIT :"Leaving" < 1262722857 0 :Warriphone!unknown@unknown.invalid QUIT :Read error: 110 (Connection timed out) < 1262723160 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oerjan, ... I never seen Dr Who, so while I know what it references I don't know why < 1262723165 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :why* it is funny < 1262723186 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ACTION barely knows himself < 1262723197 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :but hint: EX-TERM-IN-ATE < 1262723206 0 :BeholdMyGlory!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1262723216 0 :augur!n=augur@216-164-33-76.c3-0.slvr-ubr2.lnh-slvr.md.cable.rcn.com JOIN :#esoteric < 1262723225 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :hey < 1262723295 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :hey in the hay < 1262723850 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: xterm-inate xD < 1262723875 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: Watch Doctor Who. < 1262723875 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ACTION completes the final piece minus one of his org-mode blogging horrific hack^W^Wsystem < 1262723878 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :It is imperative. < 1262723887 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :No, it's functional! < 1262723889 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :And logical. < 1262723964 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :ehird: Shush you. < 1262724003 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :categorically so < 1262724028 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :who would have guessed that an outliner could export to html with syntax highlighting of any language, embedded latex, and rendered diagrams? < 1262724028 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :anyone who knew that it was an emacs mode, that's who. < 1262724116 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Emacs: it does everything. < 1262724191 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :say, there's an elisp thingy that implements the common xml-rpc blogging api, isn't there? < 1262724201 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i could plug that into this and get a complete in-emacs blogging system XD < 1262724870 0 :BeholdMyGlory!n=behold@d83-183-181-73.cust.tele2.se JOIN :#esoteric < 1262725351 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: < 1262725351 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :#+begin_src literate-haskell < 1262725352 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :> main :: IO () < 1262725352 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :> main = putStrLn "Hello, world!" < 1262725352 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :#+end_src < 1262725352 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :This actually syntax highlights when exported to HTML or LaTeX, and it works for ANY language Emacs can highlight. < 1262725368 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :org-mode is sweeeeeet. < 1262725443 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :ehird: That's beautiful. < 1262726072 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :And what kind of HTML does it generate? < 1262726102 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :html of DOOM! < 1262726138 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant: Define "what kind". < 1262726160 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :How does it implement the syntax highlighting < 1262726191 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Either s with color:s, or you can get it to generate a big ol' hunk of CSS for every syntax possibility; that's 12k, but you can use a css compression tool to get it down to 3k. < 1262726252 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :It can't generate a hunk only for the ones used? (Assuming that would save practically any space) < 1262726269 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant: I lied; that stylesheet is just some org-mode stylesheet. < 1262726275 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :It seems that yes, it does only generate the ones used. < 1262726296 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :Alright, handy. < 1262726339 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :No, wait. < 1262726348 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :I tell another lie: that CSS does include the syntax highlighting. < 1262726362 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :It seems that it can highlight org-mode code, and dired output. XD < 1262726386 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :>_< < 1262726410 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Hey, it does work with *every font-lock mode in Emacs*. < 1262726474 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Personally, I'm just going to leave it generating inline colours. < 1262726490 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :It's not like Blogger's added markup isn't spewtastic anyway. < 1262726521 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : i could plug that into this and get a complete in-emacs blogging system XD <-- pretty sure I read about that somewhere already < 1262726549 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Yes, people use org-mode for blogging and also the XML-RPC stuff. < 1262726558 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :But I don't know if they're combined so that I could do M-x publish-org-blog-post. < 1262726617 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, that was what I meant I read about iirc < 1262726621 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :can't find it again though < 1262726682 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : It's not like Blogger's added markup isn't spewtastic anyway. <-- who is "Blogger" with a capital B ;P < 1262726691 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :http://www.blogger.com/ < 1262726715 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Now-Google's-ex-Pyra's ye internette cornerstone blogging system. < 1262726730 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oh right. I have it mentally filed as "the orange/white squiggle icon blog site" < 1262726746 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :That squiggle is also known as "B". < 1262726756 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, very stylised one < 1262726792 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, I thought it was a child drawing of a boat < 1262726798 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :it looks closer to that IMO < 1262726834 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :blog, blog, blog your, er < 1262726844 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Sweet, org-mode lets me use TeX style ^ and _ in plain html. < 1262726858 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :That's nice for when the actual LaTeX embedding is too much. < 1262726866 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, "blog, blog blog your blog! < 1262726868 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :err < 1262726869 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oerjan, ^ < 1262726877 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :s/"// < 1262726903 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :feels inelegant. spammy, even. < 1262726919 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :blog, blog, blog your spam < 1262726927 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :gently down the tubes < 1262726934 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :I had to spend a while looking for how to disable that feature in org-mode, because it kept messing up the _-rich filenames in html export. < 1262726934 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :marry me marry me marry me marry me < 1262726936 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :russian brides for cheap < 1262726956 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :fizzie: ^:{} or ^:nil < 1262726959 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :"Both beg and end are both pointer expressions." <-- GCC manual. Approved by The redundantly Redundant Committee for Redundancy < 1262726962 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :former for just allowing foo_{bar} etc < 1262727010 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric : pri: turn on/off priority cookies < 1262727010 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :What. < 1262727018 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :omg org-mode does footnotes < 1262727053 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :F_{2^{n-1}}[1] < 1262727055 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :my life is complete < 1262727056 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :ehird: Yes, I know that *now*. < 1262727059 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, at the end of the document? Rather than the end of the page < 1262727064 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and aren't those called end notes < 1262727071 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: They're footnotes. < 1262727080 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, oh? < 1262727093 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, also that latex. Does it render equations to unicode, or to images? < 1262727100 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Images. < 1262727104 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :meh < 1262727104 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :It's real LaTeX. < 1262727112 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :well good < 1262727115 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Apparently I did "#+OPTIONS: num:nil ^:nil" but now I don't remember what num:nil does. < 1262727127 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, how is wikipedia's latex implemented? < 1262727130 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :If you want Unicode you can just do latex:nil and use jsMath instead. < 1262727145 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: Images, or a very basic →html thingy that only works for a very small subset. < 1262727150 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Or →mathml which does I don't know. < 1262727158 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :fizzie: Disables TOC numbers in headings < 1262727175 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Ah, right. < 1262727188 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, does it only do latex equations, or the full thing < 1262727199 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :"In particular, note that you can place commonly-used (export) options in a separate file which can be included using #+SETUPFILE." < 1262727200 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Sweeeeeeet < 1262727205 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: Equations. < 1262727210 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, meh < 1262727218 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :ehird: I've never gotten the ->mathml thing to work. < 1262727227 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, I was looking forward to pstricks in html :( < 1262727361 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :#+OPTIONS: toc:nil num:nil author:nil creator:nil timestamp:nil < 1262727374 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :↑ aka "No, I don't want any of that crap" mode < 1262727388 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Are you also going to use MobileOrg on your iDevice? < 1262727401 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :That would be impractical for writing blog posts on! < 1262727417 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :And I don't need todo lists; I never forget to do things. < 1262727431 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Or at least, I never remember that I've forgotten to do something. < 1262727438 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Which, if you don't really have any worldly responsibilities, is the same thing. < 1262727501 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :that sounds reassuring :D < 1262727621 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :#(...) is a vector in elisp right? < 1262727625 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :How do you access the first elem? < 1262727714 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Ugh, one part of this whole ordeal is going to be a pain. < 1262727731 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Using mmm-mode so that stuff inside #+begin_src LANG ... #+end_src is displayed with that mode. < 1262727750 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :That way, I can edit blog posts as Literate Haskell with all the haskell-mode conveniences while still using org-mode outside. < 1262728330 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :ehird, how did your semantics discussion earlier go? < 1262728345 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :which discussion in particular < 1262728351 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :the one with soupdragon < 1262728391 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :the one i was participating in before having to get on my flight < 1262728416 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :define "go"; I pretty much told him that I thought he should handle things like AND (LOVES JOHN) (LOVES MARY) by the rule: if there is a function that, given enough arguments, produces a value of type T, and this function is in a place where we need a type T, make the whole expression a function with its arguments < 1262728450 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :that produces (\x -> (\y -> AND (LOVES JOHN x) (LOVES MARY y))) but I guess with an amendment "if there are two such expressions and they take the same type, combine their arguments" it would work < 1262728472 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :so you mean < 1262728489 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :given some functions f, g :: a -> Bool < 1262728505 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :you can combine them to get \x -> f(x) & g(x) < 1262728510 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :no < 1262728515 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :what i mean is < 1262728519 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :no? but you said combine their arguments D: < 1262728571 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :f :: ...->T->... < 1262728571 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :rewrite (f ...(expr::a->b->...->T)...) < 1262728571 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :to (\a,b,... -> f ...(expr's function body)...) < 1262728598 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :if there are multiple such occurrences of this in the same expression, take all the argument types they share and combine them into a single argument < 1262728614 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :ok < 1262728623 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :so AND (LOVES JOHN) (LOVES MARY) becomes (\x -> AND (LOVES JOHN x) (LOVES MARY x)), not (\x -> (\y -> AND (LOVES JOHN x) (LOVES MARY y))) < 1262728631 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :john loves mary and mary john < 1262728641 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :john loves marrying mary < 1262728650 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :well it sounds like you've discovered cojunctivism to some degree < 1262728651 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric ::) < 1262728724 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :http://emacspeak.googlecode.com/svn/trunk/lisp/g-client/gblogger.el < 1262728724 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :sssso ssssweet < 1262728732 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i'll be blahhging the intertubes in no time w/ this < 1262728742 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :blogs like diabetes < 1262728752 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :diabeetus blahhging < 1262728798 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i'm personally just amazed i managed to coerce blogger into outputting something...nice < 1262728813 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i was not of the awareness of the possibility of this. < 1262728902 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :ehird, i was thinking about the graphics engine thing < 1262728902 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :hey i just realised http://emacspeak.googlecode.com/svn/trunk/lisp/g-client/gblogger.el was written by the blind guy who makes emacsspeak :) < 1262728909 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :*emacspeak < 1262728939 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :and im really interested in this constraint stuff, im just not sure if i understand precisely what it would mean < 1262729032 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :augur: well it's basically like prolog < 1262729037 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :you give prolog a bunch of constraints on values < 1262729040 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :and it outputs all the possibilities < 1262729046 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :sure sure < 1262729048 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :it's the same for a layout engine, where the values are things like < 1262729050 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :width of foo < 1262729052 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :height of foo < 1262729056 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :coords of bottom of foo < 1262729060 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :and the engine is less... well, TC < 1262729070 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :plus, it picks one single possibility via some metric for picking the best layout < 1262729074 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :tightest packed, or whatever < 1262729082 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :im just trying to imagine how the syntax then expresses these constraints < 1262729098 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :well it's just an abstract data structure < 1262729101 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :List Constraint < 1262729124 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :i mean in the language being designed < 1262729147 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :how is, say, "a square 50 px on a size" expressed < 1262729276 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :less say, filled with red < 1262729286 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :night < 1262729308 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :night < 1262729460 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :ehird? < 1262729475 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :augur: i meant in the language being designed too < 1262729483 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :the constraint engine is an internal thing, mostly it's exposed via user defined functions < 1262729489 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :like, you know, square(). :P < 1262729588 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :ok, and what does the constraint for such a square look like < 1262729635 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :what square < 1262729648 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :the square 50px on a side with red fill! < 1262729676 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :define on a side < 1262729677 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :any side? < 1262729736 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :i just want to know what the constraint looks like, in some sense < 1262729790 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :Square [Fill Red] 50px < 1262729791 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :? < 1262729855 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :for ... data Shape = Square [Attribute] Size | ...; data Attribute = Fill Color | Stroke Color | ... < 1262729855 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :? < 1262730144 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :you're thinking about this all wrong. < 1262730152 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :ok < 1262730155 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :then explain < 1262730156 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :constraints, not objects < 1262730157 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :like i asked. < 1262730158 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :so: < 1262730163 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :yes, but what DEFINES the constraint < 1262730177 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :your question does not make sense. < 1262730181 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :ehird < 1262730188 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :the constraint-solver has to look at these constraints, right? < 1262730192 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Yes. < 1262730199 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :so what does it see when it looks at them < 1262730221 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :i mean, is square(50px) the constraint itself < 1262730230 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :or is that just some magic function that constructs the constraint in the background < 1262730232 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :The constraint data structure is something like this: < 1262730236 0 :anmaster_l!unknown@unknown.invalid QUIT :Read error: 110 (Connection timed out) < 1262730264 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :{ x = Square, side x == 50px, (dunno about the fill stuff) } < 1262730279 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Square itself desugars to more constraints < 1262730285 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :ok < 1262730289 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :brb < 1262730291 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :my machine is overheating < 1262730301 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :or, wait, no < 1262730313 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :ok < 1262730317 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :i see what you're going for < 1262730320 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i can't tell if it is < 1262730332 0 :ehird!unknown@unknown.invalid QUIT : < 1262730438 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :looks like it was < 1262730449 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :maybe he restarted out of caution < 1262730582 0 :ehird!n=ehird@91.105.68.74 JOIN :#esoteric < 1262730589 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :ehird! hello. < 1262730589 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :indeed; caution < 1262730597 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :my fans just spun up to full, you see < 1262730599 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :they occasionally do that < 1262730605 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :worrying but seemingly just a glitch < 1262730611 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :but it's noisy and i don't want to take any chances < 1262730617 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :do you have iState menus? < 1262730621 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :iStat* < 1262730630 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :does top give you anything useful? < 1262730634 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i'm a minimalist. things like that are mere distractions to me < 1262730637 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :SimonRC: too late, i rebooted < 1262730641 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :but activity monitor said cpu was like 1% < 1262730645 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric ::-S < 1262730647 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :so clearly not cpu load < 1262730650 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :perhaps a heatsink issue < 1262730655 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :well, iStat menus has a temp indicator < 1262730658 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :or, as i suspect, a fan control issue < 1262730682 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :anyway < 1262730694 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :well, my laptop liked to do jet impressions when suspending < 1262730699 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :i like the idea, im just not sure if its absolutely necessary, ehird. ill consider it. < 1262730724 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :however, last time I suspended it it decided to power off the external USB HD... < 1262730729 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :everyone should preemptively add http://ehird.blogspot.com/ to their feed readers because i am awesome < 1262730752 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :which is reasonable except the kernel knows damn well that / is on that HD, so unsuspend kinda didn't happen < 1262730782 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :that blog will be the new revolution! or possibly, just revolting. < 1262730802 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :D: < 1262730826 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :ehird: if you start posting interesting things, ill totally link you on my blog < 1262730827 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric ::X < 1262730852 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :augur: like does type system hackery, programming language and OS musings count as interesting????? < 1262730858 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :or just BORING ASS LINGUISTICS < 1262730865 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :ehird, no thats totally interesting < 1262730873 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :my blog isnt all linguistics you know < 1262730879 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ps you should totally dig my minimalist design because it is RAD and i spent five years fighting against blogger to makek it work < 1262730885 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :*make < 1262730963 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :http://www.wellnowwhat.net/blog/?p=353 << see? not linguisticy! < 1262730976 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :my next series of posts is going to be on this thing we're discussing < 1262730988 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :and then one on building a simple prolog-ish engine < 1262730993 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :"I’ve got a need for a product of this sort. Please send me an email because I’d love to talk about it." < 1262730997 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :blog comments are so crappy < 1262731003 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :yeah :( < 1262731011 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :"Hey you posted an interesting post about stuff! I NEED YOU TO CODE THIS EMAIL ME" < 1262731042 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :i figured i'd leave that one tho because he was sincere. i emailed him and he seemed to be interested in more complex knowledge engines and i said i wasnt familiar with any of them < 1262731070 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :the gblogger functions are oriented around interactive use and this makes me sad < 1262731079 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :? < 1262731087 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :emacs Blogger interface < 1262731107 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :wat < 1262731108 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :lol < 1262731122 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i'm trying to wire up org-mode (an outliner/markup/diagram-renderer/LaTeX-embedder/syntax-highlighter/you name it) to gblogger < 1262731137 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :so as to be able to write an org file, run an emacs command, and have it appear on http://ehird.blogspot.com/ < 1262731148 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :and thus never have to interact with blogspot's rubbish admin ui! < 1262731233 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :ehird, ive decided on some basic functions < 1262731242 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :for the graphics engine < 1262731285 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :namly, below[left|right|center|just|nothing] ... < 1262731306 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :beside[top|middle|bottom|just|nothing] ... < 1262731334 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :pad[t r b l | tr bl | trbl] X < 1262731343 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i don't get your syntax < 1262731360 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :brackets enclose options < 1262731381 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :so: < 1262731384 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :e.g. below[left] A B means "put B below A, and align them left" < 1262731402 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :below ... == below[] ... == below[center] ... < 1262731402 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :group BelowOpt < 1262731403 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric : struct Left :: BelowOpt; struct Right :: BelowOpt < 1262731403 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :...etc... < 1262731403 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :end < 1262731417 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :sure, whatever you want < 1262731433 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :below :: [BelowOpt] -> [Drawable] -> Below < 1262731446 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :below[][a,b,c] == below[center][a,b,c] (that [] is a bit ugly tho) < 1262731455 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :(the below[][...] thing) < 1262731464 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :well, i dont know what the options syntax should be < 1262731470 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :i wanted to avoid {} < 1262731470 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ACTION decides to leave the postiing automation for later < 1262731491 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :augur: ah! we can build optional arguments into the language < 1262731500 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :? < 1262731502 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :no need to have actual options like i said, a list of a data structure works for them < 1262731506 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :all we need is optional arguments < 1262731520 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :{} is the punctuation i haven't used yet so sorry but I'm gonna take it :D < 1262731534 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :im not sure what you mean < 1262731539 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :example of what you have in mind? < 1262731555 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :below :: ({BelowOpt}, List Drawable) -> Below < 1262731558 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :in the definition: < 1262731575 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :below(opts{Center}, things) = ... < 1262731579 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :(Center is the default) < 1262731584 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :usage: < 1262731587 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :wait < 1262731591 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :I wrote that slightly wrong < 1262731597 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :below {align => left} [a,b,c] < 1262731598 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :below :: {BelowOpt} -> List Drawable -> Below < 1262731599 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :then? < 1262731611 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :below{opts=Center}(things) = ... < 1262731618 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :augur: in the BelowOpt group, have < 1262731626 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :struct Align :: Direction -> BelowOpt < 1262731628 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :usage: < 1262731636 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :def below(ops = { :align => :center }, items) < 1262731637 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :below{Align Left}[a,b,c] < 1262731645 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :ok < 1262731650 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :can you have multiple opts in this case < 1262731651 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :or just one < 1262731656 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :multiple < 1262731670 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :for instance, you'd have another option space < 1262731681 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :which specifies the separation between the items when belowing them < 1262731685 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :below :: {[BelowOpt]} -> List Drawable -> Below < 1262731686 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :below{opts=[Align Center]}(things) = ... < 1262731686 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :usage: < 1262731692 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :below{Align Left, Poop Blah}[a,b,c] < 1262731709 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :soooo latex :( < 1262731710 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :basically, {...} means optional argument; if you omit it in a call, it just assumes the default value < 1262731716 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :and {a,b} desugars to {[a,b]} < 1262731718 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :for convenient options < 1262731732 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :\below{align=left,space=5px}{a}{b}{c} < 1262731733 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :D: < 1262731765 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i would argue that latex has pretty nice syntax :P < 1262731775 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :i dont like it < 1262731781 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :{} should never enclose args, in my opinion < 1262731790 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :well it's not enclosing anything else in my syntax < 1262731798 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :whatever :P < 1262731811 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :i prever a haskellish syntax < 1262731823 0 :jpc!unknown@unknown.invalid QUIT :"I will do freaking anything for a new router." < 1262731856 0 :jpc!n=jw@unaffiliated/javawizard2539 JOIN :#esoteric < 1262731858 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :What ehird's been discussing is essentially Haskell + default arguments. < 1262731867 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :(... Well, because he's not mentioned the other divergences from Haskell) < 1262731874 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :but haskell doesnt allow arbitrary args < 1262731880 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :i really want it to just look like < 1262731885 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :below a b c < 1262731891 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :... Whereas what he's discussing does. < 1262731921 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :i can sort of accept the list tho. thats fine. < 1262731933 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :augur: well we could do the obvious thing < 1262731935 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :what is {} denoting for you, ehird? < 1262731936 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :and introduce map syntax < 1262731942 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :augur: {} = optional argument < 1262731943 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :?? < 1262731943 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :anyway < 1262731946 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :augur: So, is that passing default arguments to the function or arguments to the result of the function? < 1262731947 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :oh ok < 1262731948 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :map syntax would be just < 1262731952 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :{ key: val, ... } < 1262731953 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :wait < 1262731960 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :but we still use data structures < 1262731972 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :below { Align: Left } [a,b,c] < 1262732009 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: f ... is sugar for f[] ..., and f defaults on its respective options < 1262732020 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :ok so {} is a hash then < 1262732027 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :foo :: {a} -> b -> (a->b) -> (a->c) < 1262732028 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :but that has issues < 1262732034 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Hey, look, it's ambiguity! < 1262732034 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :it means you can do { Align: 3 } < 1262732043 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: 'snot < 1262732056 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :foo aB :: (a->b)->(a->c) < 1262732057 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :ehird: ... As you do it, yes. < 1262732063 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :foo anA :: b->(a->b)->(a->c) < 1262732075 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :beside[left] a b c looks best to me < 1262732089 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :augur: i don't think this needs to be a heavyweight language, so just go syntax made < 1262732090 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :*mad < 1262732094 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :ehird: Except that the function is polymorphic. < 1262732094 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :make it convenient < 1262732100 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :anyway < 1262732106 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: yes, and? you know by the time you get a function argument < 1262732114 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :besides, wait < 1262732120 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :you specify optional args with {} < 1262732121 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :the other function i was considering was over < 1262732122 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :wherein < 1262732126 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :foo x is always using the default < 1262732130 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :foo {x} is always overriding it < 1262732131 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :if A is a triangle, and B is a circle < 1262732132 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :ehird: That's what disambiguates it. < 1262732159 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :over A B is the image with the circle positioned above the triangle, both conconcentric < 1262732180 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :http://ehird.blogspot.com/2010/01/hello-world.html < 1262732180 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :iiiiiiiiii posted this with org-mode < 1262732188 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :and you could have params that specify which points are con-ed < 1262732194 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :e.g. over A B == over[center] A B < 1262732203 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :todo: make one css tweak, that funky mmm-mode thing, automate the actual posting < 1262732204 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :but you could do over[topleft] A B < 1262732212 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :which is where A.topleft == B.topleft < 1262732225 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :or you could do over[x y] A B < 1262732232 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :foo bar -- Has two valid types. b->(a->b)->(a->c) and (a->b)->(a->c). In the first, a is the same type as bar, and in the second, b is the same type as bar. < 1262732238 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :which is equivalent to over[bottomleft x y] < 1262732259 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :(if you don't do the "wrap default args in brackets" bit) < 1262732275 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :where B.bottomleft = A.bottomleft + < 1262732395 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :as it turns out, over[topleft A.width 0] A B produces the same image as beside A B < 1262732413 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :which suggests that over should be the function that beside and below are defined in terms of < 1262732617 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :http://ehird.blogspot.com/2010/01/hello-world.html < 1262732618 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :someone leave a message of complete admiration for me kthxbai < 1262732629 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :doing this in terms of actual objects, tho, ehird, seems to be relatively simple < 1262732638 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: have you used literate-haskell-mode? < 1262732657 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :augur: To hell with objects! Long live data structures! < 1262732664 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :you has error < 1262732671 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :ehird: No, should I? < 1262732672 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :ehird: well, data structures, whatever. same thing to me. < 1262732679 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :but whats cool is < 1262732691 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :augur: They're quite different in concept. < 1262732692 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :http://www.youtube.com/watch?v=YiYBRgsxQUc < 1262732693 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: nope, just wondering how to have mah bird tracks auto-added < 1262732700 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :if A is some data structure consisting of paths, basically < 1262732714 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :what you'd have is two parts to it < 1262732717 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :it'd be like < 1262732726 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :Shape Size Path < 1262732736 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :where Path has points in the range [0,1] < 1262732762 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :An object is a thing that possesses members and methods. These can be public and private. An object can inherit its methods and members from another object, and override them. < 1262732776 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :A data structure is a thing that contains things. < 1262732795 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :scale p (Shape (w,h) s) = Shape (p*w, p*h) s < 1262732827 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :That an object can be used for data structures is merely an interesting property. < 1262732847 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :scale (wp,hp) (Shape (w,h) s) = Shape (wp*w, hp*h) s < 1262732885 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :To ram the point in further: compare C structs and C++ classes. < 1262732893 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :actually, it'd be more, data Shape Shape AffMatrix Path < 1262732898 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :data Shape = ... < 1262733053 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :and then when you draw this, all you do is apply the affine transform matrix to the path points to calculate the actual look of the shape, and stroke/fill < 1262733124 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :http://ehird.blogspot.com/2010/01/hello-world.html < 1262733124 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :BEHOLD THE SYNTACTICALLY HIGHLIGHTED CODE < 1262733149 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :ehird, i tried to comment as anonymous but it gave me an error < 1262733155 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :What error? < 1262733173 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric : /!\ Your request could not be processed. Please try again. < 1262733177 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Beats me. < 1262733196 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :It supports Google accounts and OpenIDs, if those are okay for you. < 1262733255 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Perhaps name/URL will work? < 1262733260 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :augur: Also, perhaps some sort of spam filter got you. < 1262733408 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :o ok < 1262733411 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :maybe it was too short < 1262733417 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :man < 1262733430 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :"Posted by Anonymous on January 05, 2010." < 1262733432 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :2010 < 1262733435 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :its 2010 < 1262733437 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :its fucking 2010 < 1262733446 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :yes < 1262733450 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :shouldnt we be going to jupiter? :| < 1262733459 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Why yes, it's been 2010 for 5 days now. < 1262733462 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i think we make contact this year or something < 1262733466 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i saw it in a documenntary < 1262733469 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :*documentary < 1262733473 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :those movies are all documentaries right < 1262733489 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :yes < 1262733491 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :ofcourse < 1262733493 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :yes, according to many-world's interpretation < 1262733501 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: <3 < 1262733504 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :Well, at least we don't have that alliance with the Aschen trying to sterilize Earth < 1262733605 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :oh man sgeo true < 1262733609 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :fucking aschen < 1262733630 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :all we wanna do is explore the galaxy and fuck green chicks/dudes < 1262733635 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :is that such a crime? < 1262733649 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :i hear blue is all the rage these days < 1262733654 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Only if you're not Kirk. < 1262733667 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: but we all want to be kirk so its cool right < 1262733672 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Not-Kirks have to content themselves with other colors. < 1262733693 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :lame < 1262733705 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :augur: That's why the punishment for the crime is exploring the galaxy and fucking green chicks. < 1262733727 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :wut < 1262733768 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :so the punishment is, essentially, that you cannot be gay? < 1262733783 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :oh i see what he means < 1262733789 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Yes. < 1262733789 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :the punishment is fucking people you dont want to fuck < 1262733790 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :gotcha < 1262733793 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Cruelest thing ever. < 1262733802 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :EVEN FOR STRAIGHT PEOPLE < 1262733812 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Cue T-Rex: "I feel like a possibility has been taken away from me that I never knew I had!" < 1262733816 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :"This is OPPRESSION!!" < 1262733824 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :ehird: Nobody's straight. Don't you ever read ship fanfiction? < 1262733824 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric ::P < 1262733840 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :ehird, tell me if this makes sense < 1262733934 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :if you rotate a shape by some angle, after rotating, the rotated shape is fit so that its bounding rect is always the unit square, and the resulting things size is smaller than the initial things size < 1262733939 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ACTION ponders on a topic for his first opst < 1262733940 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :or larger < 1262733941 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :*post < 1262733942 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :whichever it turns out to be < 1262734006 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :e.g. if you rotate a 1x1 square you get back a 1x1 diamond, with its points at the <0,0.5>, <0.5,0>, <1,0.5>, <0.5,1> < 1262734052 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :and its size reduced from, lets say, 10x10 as a square, to 5root2 x 5root2 as a diamond < 1262734057 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :er < 1262734063 0 :dbc!unknown@unknown.invalid QUIT :Read error: 60 (Operation timed out) < 1262734063 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :sorry, 10root2 x 10root2 < 1262734094 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :(rotating by 45* obviously) < 1262734171 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :My first post will be "Computing fib(3!) in Haskell's type system", which is really about type families being cool and such. < 1262734173 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :does that make sense? or should shapes exist in a full euclidean plane? because that i think would ruin the use of things like beside() < 1262734193 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :elliot! types are not for computing! :| < 1262734200 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :you're a bad bad boy < 1262734267 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :stop hangin' 'round with that dons kid; he's neva' up to no good! < 1262735052 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :ehird: Mmm, undecidable instances... < 1262735153 0 :dbc!n=daniel@130-94-161-238-dsl.hevanet.com JOIN :#esoteric < 1262735914 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :http://ehird.blogspot.com/2010/01/computing-fib3-in-haskells-type-system.html < 1262735916 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :First post! < 1262735999 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :ehird: BTW, GHC Haskell has a TC type system.