< 1265500834 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :I just put Eliezer in charge < 1265500837 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :dependent types are so sexy < 1265500863 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :ACTION returns to reality < 1265500879 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :intuitionalistic type theory? o.O < 1265500925 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :what about it?? < 1265500981 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :Since when is intuition valid in math? (note: I haven't actually read the article) < 1265500988 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :haha < 1265500991 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :intuition leads to valid math < 1265501002 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :well you can apply lots of common sense arguments < 1265501170 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :intuitionism is more about rejecting the parts of math that are _not_ intuitive, like the axiom of choice < 1265501176 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :afaiu < 1265501243 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :and the law of excluded middle < 1265501308 0 :MigoMipo!unknown@unknown.invalid QUIT :Remote host closed the connection < 1265501395 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :[00:00] intuitionalistic type theory? o.O [00:02] Since when is intuition valid in math? (note: I haven't actually read the article) < 1265501397 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ACTION facepalms < 1265501508 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :The law of the excluded middle is usually intuitively correct < 1265501570 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :excluded middle seems incredibly intuitive to me < 1265501574 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :yeah you can prove it for anything that has decidibility < 1265501575 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :either something's right, or it isn't < 1265501577 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :lol < 1265501583 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :in our brains there isn't any < 1265501590 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :"god doesn't exist, but god doesn't not exist!" < 1265501606 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: I think it's just axiom of choice that gets people. < 1265501794 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :P \/ ~P is consistent but it's not really true < 1265501977 0 :coppro!unknown@unknown.invalid QUIT :Quit: I am leaving. You are about to explode. < 1265501981 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :MissPiggy: why not? < 1265501989 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :what is neither true nor false? < 1265502001 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :any independent axiom < 1265502046 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :what do you mean by that? < 1265502057 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :they're false if you don't include them < 1265502072 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :They're true if you do include them. < 1265502084 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :(defined to be true, in fact) < 1265502145 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :of course < 1265502147 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :if you don't include an (independent) axiom it's not provable but neither is it's negation < 1265502158 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :MissPiggy: well yes, but provable != true < 1265502172 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :the axiom is one of either true or false, you just can't know which < 1265502182 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :and so it doesn't matter < 1265502183 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :I agree that provability is a subset of truth < 1265502207 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :but if you cannot prove something, then it is not acceptable to conclude that it is false < 1265502220 0 :coppro!~coppro@unaffiliated/coppro JOIN :#esoteric < 1265502252 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :yes, I wasn't thinking properly < 1265502266 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :an idependent axiom is not necessarily true or false, because you can negate some of them -- such as the continuum hypothesis < 1265502272 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :anyway, the axiom is either true or false; however, it is literally unknowable which it is, and since it never matters if it's true or false, it can be ignored entirely < 1265502276 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :or even that well founded set one (I think) < 1265502281 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :which gives you infinitely deep sets < 1265502292 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :which axiom? < 1265502307 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :any non-included independent one < 1265502315 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :anyway i'm just arguing that excluded middle is intuitive < 1265502316 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :not that it's true < 1265502323 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i <3 constructivism < 1265502338 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :and good look with forall a. Either a (a -> Void) < 1265502339 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :if we work in a theory T and there is an independent axiom A, then T+A and T+~A are both stronger than T < 1265502341 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :*luck < 1265502372 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :ehird: Yeah, it is quite intuitive. < 1265502380 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :axiomatic :: a; axiomatic = error "Axioms are unquestionable" < 1265502397 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :excludedMiddle :: forall a. Either a (a -> Void) < 1265502399 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :excludedMiddle = axiomatic < 1265502413 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :To the point that it's such an obvious axiom for mathematic discussion that it's almost forgotten. :P < 1265502443 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :ACTION still doesn't follow what ehird was saying < 1265502481 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :statements low on the arithmetic heirachy can be independent but /actually/ true < 1265502493 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :let A be an independent axiom not in system S < 1265502513 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :in S, either A or ~A; however, in S, one cannot know which it is, and it never matters < 1265502520 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :therefore, the excluded middle stands < 1265502531 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :I don't know how you conclude this "in S, either A or ~A"? < 1265502537 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :(in reality *whispers* you couldn't prove it to be either because it isn't, but it never ends up contradicting the excluded middle) < 1265502545 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :(so it's effectively either in a nebulous way) < 1265502547 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :what if both S+A and S+~A are (equally) consistent? < 1265502549 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :MissPiggy: given excluded middle < 1265502558 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :S+A and S+~A are irrelevant in S < 1265502565 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :oh you're basicalyl arguing that assuming excluded middle then excluded middle? I agree with this < 1265502571 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :well, no < 1265502579 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :you said excluded middle is consistent but not really true < 1265502584 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :yes < 1265502592 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i'm arguing that it is "true" even from outside the system, when considering that system < 1265502676 0 :ehird!unknown@unknown.invalid NICK :alise < 1265502685 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :forgot to change nick on reconnect :P < 1265502713 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :ACTION tries modelling the dependent lambda calculus; she's helping me. < 1265502832 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :first person in an ACTION? < 1265502854 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :lol < 1265502861 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :She is a haskell enhancement < 1265502877 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :She's lovely. < 1265502899 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :She does all the work for you, and makes it just like you've got dependent types - almost. < 1265502905 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :She really does well to Haskell. < 1265502938 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :MissPiggy: isn't it awful that basically syntactic parts are holding up the representation of this? :( < 1265502948 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :we need some sort of awesome semanticity in the language of semanticity. < 1265502968 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :now /me is really confused < 1265502978 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :alise everything is syntax :P < 1265502982 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :everything you write down anyway < 1265502997 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :it's utterly confusing when you start to think about everything as syntax.. < 1265503006 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :coppro: She would help you not be confused. She is the one you should accept; she'd help. < 1265503024 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :who is the 'she'? < 1265503027 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :She's the Strathclyde Haskell Enhancement, don't you know? < 1265503037 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :She has a homepage at http://personal.cis.strath.ac.uk/~conor/pub/she/. < 1265503054 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :MissPiggy: yeah, but I mean things like representing forall a. b < 1265503055 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :ah < 1265503072 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :that's the thing that fucks up nice GADT representations of things < 1265503076 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :having to bind things to names then use them < 1265503087 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :new rule: lower-case acronyms spelled the same as a pronoun should be banned < 1265503088 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :oh I'm not sure what you mean < 1265503106 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :not having lambda in haskell is quite awful < 1265503115 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :lambda *in the type level* in haskell < 1265503144 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :coppro: She hates you for saying that. < 1265503148 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :MissPiggy: That's simple enough to fix. < 1265503154 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :is it? < 1265503155 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :I should name something "and". < 1265503161 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Write a Template Haskell compiler from lambda to SK. < 1265503165 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :And define type-level SK. < 1265503169 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Voila. < 1265503170 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :hmm < 1265503176 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :We should use the best tool, and... And: it's the best way to get things done. < 1265503187 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :MissPiggy: yeah i *really* want type-level lambda < 1265503191 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :it'd be so easy to do this < 1265503192 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :The power of compile-time execution. < 1265503197 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :she should just let me do {\x -> ...} :( < 1265503230 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :alise do it! based on pikhqs idea < 1265503244 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :oh < 1265503253 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :we also need higher order unification though... < 1265503269 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :lol < 1265503412 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :a unified world order < 1265503423 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :MissPiggy: basically what I want to write is < 1265503432 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Forall :: (Type -> Type) -> Type < 1265503436 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :which works at the value-level < 1265503439 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :but at type-level? nope. < 1265503467 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :ACTION wonders what she lifts that to < 1265503514 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :data SheSingType :: * -> * where{-# LINE 0 "Dunno.lhs" #-} SheWitForAll :: forall sha0. (SheChecks ((Type -> Type) ) sha0) => SheSingleton ((Type -> Type) ) sha0 -> SheSingType (SheTyForAll sha0){-# LINE 0 "Dunno.lhs" #-} < 1265503515 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :yikes < 1265503522 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :but uh < 1265503524 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :data SheTyArrow x1 x2 = SheTyArrow x1 x2{-# LINE 4 "foo.hs" #-} < 1265503526 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :pretty benign that < 1265503533 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :(shitty arrow) < 1265503690 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :ACTION is watching Early Edition < 1265503755 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :MissPiggy: alas, she does not transmogrify (a -> b) into (* -> *) < 1265503826 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :a dependently-typed lambda calculus with names and some small sugar + optimisations for numbers and tuples and extracting the latter would make an excellent language to compile to < 1265503836 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :since you could just translate your types into its types, rather than check them yourself < 1265503955 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1265503962 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :a bit difficult to get good error messages though < 1265503979 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :oh I bet you could have some fun with Ziggeraut and that idea < 1265504061 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :MissPiggy: well it would have a feature where you would tag arbitrary expressions with strings < 1265504091 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :So you'd tag each atomic type in your lang to the composite type in the underlang, and if you have fancy composites that you compile away tag those too < 1265504100 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :(it'd give error reports in a convenient format to extract this stuff from) < 1265504105 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :some sexp-like thing < 1265504124 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :ugh, if I can't get this working very soon I'm doing it in agda < 1265504160 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :she doesn't really let you say (foo::Bar) < 1265504167 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :you can do pi (foo::Bar). but I think that's different in some way < 1265504168 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :why the fuck doesn't zsh read .profiele < 1265504177 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :it does but not if you have .zsh_profile < 1265504363 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :ACTION writes what she wants to write then tries to coerce it so that she likes it (i'm going to call myself she because one, it'll result in even more being-named-she ambiguity and two, fuck you english language, I'll do what I want) < 1265504377 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :i'm fighting sexism in language or something < 1265504387 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :linguistics! < 1265504389 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :MissPiggy: speeling? < 1265504401 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :http://www.cs.virginia.edu/~evans/cs655/readings/purity.html is genius btw < 1265504447 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :I hate you, gedit. I WANT A NEW WINDOW, NOT A TAB < 1265504449 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :I HAVE A WINDOWING SYSTEM! < 1265504588 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :data Type where ForAll :: (Type -> Type) -> Type Arrow :: (a::Type) -> ID a -> ID TyTy -> Type -> Type TyVar :: ID a -> a TyTy :: Type < 1265504592 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :I want to write that. < 1265504602 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :data Term :: {Type} -> * where ID :: Term {Forall (\a -> Arrow a a)} < 1265504604 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :I want to be able to write that. < 1265504654 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :the problem with ForAll is that you can't unify it against anything nontrivial < 1265504661 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :because of haskell being very careful... < 1265504675 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric : TyVar :: ID {a} -> {a} < 1265504679 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :is that actually valid in a GADT, I wonder? < 1265504683 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :(I've tried to do a non-She version of this before) < 1265504683 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :(desugars to just ID a -> a) < 1265504690 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :er, wait < 1265504693 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :same thing as ID Type -> Type, heh < 1265504716 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :wow I have Coq Epigram and urweb installed < 1265504722 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :QUICK INSTALL AGDA < 1265504731 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :heh I should do < 1265504738 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :hmm maybe cabal will install agda for me < 1265504816 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :it does < 1265504818 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :you actually do your type checking and evaluating and filling in and everything from inside emacs, feels very alive < 1265504825 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :http://pastie.org/812913.txt?key=7bkzz7vxkuiclztxsdof9q < 1265504827 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :note that you need to set it up with emacs < 1265504829 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Here's what I want to be able to write. < 1265504830 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :it depends entirely on it < 1265504844 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :*ID {TyTy} -> Type < 1265504866 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :To do this with she, I need to figure out how to say (a::T). < 1265504897 0 :SimonRC!unknown@unknown.invalid QUIT :Ping timeout: 246 seconds < 1265504945 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :I don't think she lets you do pi (a :: T) from inside T :( < 1265504960 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :instance (SheChecks (pi (a :: Type). ID {a} ) sha0, SheChecks ( ID {TyTy} ) sha1, SheChecks ( Type ) sha2) => SheChecks (Type ) (SheTyArrow sha0 sha1 sha2) where sheTypes _ = SheWitArrow (sheTypes (SheProxy :: SheProxy (pi (a :: Type). ID {a} ) (sha0))) (sheTypes (SheProxy :: SheProxy ( ID {TyTy} ) (sha1))) (sheTypes (SheProxy :: SheProxy ( Type ) (sha2))){-# LINE 4 "foo.hs" #-} < 1265504961 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :sigh < 1265504985 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric : Arrow :: forall a . SheSingleton ( Type) a -> ID (a) -> ID (SheTyTyTy) -> Type -> Type{-# LINE 16 "foo.hs" #-} < 1265504987 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :the problem is < 1265504998 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :I want a bona-fide Type value at the value level < 1265505004 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :but I want it reflected in the type system too < 1265505008 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :and this is crossing the colon < 1265505009 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :which isn't allowed < 1265505096 0 :SimonRC!~sc@fof.durge.org JOIN :#esoteric < 1265505122 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :cross-colonization is dangerous < 1265505148 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric ::D < 1265505150 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :I think oerjan just renamed dependent types to a far more awesome name < 1265505180 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :it's apparently a medical term < 1265505226 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :is that when your colon gets angry < 1265505232 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :>_< < 1265505238 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Maybe I should name my language Alise, it's a nice name < 1265505289 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :MissPiggy: is conor mcbride on irc? < 1265505374 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :SheTyTyTy < 1265505376 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :shitty titty < 1265505552 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :alise no < 1265505584 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :which is good because he'd probably not get much done if he was < 1265505586 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :heh < 1265505593 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :okay, I've decided that it's totally fruitless using haskell for this < 1265505598 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :agda time???? < 1265505603 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :he reads the dependent_types reddit though < 1265505632 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :ACTION doesn't have agda installed yet because of an error < 1265505726 0 :cheater3!~cheater@ip-80-226-27-93.vodafone-net.de JOIN :#esoteric < 1265505761 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :what error? < 1265505779 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :now calling my language alise leads to the problem that the channel would be #alise but that's my nick and that would be strange,. < 1265505782 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :*strange. < 1265505811 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :the solution is to stop pretending to be a girl < 1265505824 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :who said i'm doing that now eh < 1265505831 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :PERHAPS MY MOTIVATION CHANGED, perhaps i just like this name < 1265505835 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :also stop pretending to be Canadian < 1265505862 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :oooooooooooooo < 1265505875 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :?? < 1265505882 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :oh < 1265505882 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :eh < 1265505883 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :har har < 1265505906 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :http://en.wikipedia.org/wiki/Alice_(programming_language) ok, alise would not be a good name for the language < 1265505907 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i don't get it < 1265505919 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :oklopol: canadians say eh, eh < 1265505924 0 :cheater2!unknown@unknown.invalid QUIT :Ping timeout: 276 seconds < 1265505928 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :oh. < 1265505939 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :MissPiggy: what error did you get? < 1265505953 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :cabal: cannot configure QuickCheck-2.1.0.3. It requires ghc -any < 1265505953 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :There is no available version of ghc that satisfies -any < 1265506008 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :pigworker = conor right? < 1265506012 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1265506017 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :MissPiggy: just checking. you have ghc right :D < 1265506022 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :yes I have ghc lol < 1265506035 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :ehh, ask #haskell < 1265506182 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :cabal: cannot configure Agda-2.2.6. It requires base ==4.2.* && ==4.2.* For the dependency on base ==4.2.* && ==4.2.* there are these packages: base-4.2.0.0. However none of them are available. base-4.2.0.0 was excluded because of the top level dependency base -any < 1265506183 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :asdfghjkl; < 1265506292 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :huh < 1265506296 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :that's odd < 1265506380 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :maybe i'll upgrade cabal-install < 1265506422 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :ACTION needs an ST monad tutorial < 1265506430 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :it's like io but only has iorefs < 1265506431 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :fin < 1265506440 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :Or something along the lines of how to hold onto state in Haskell < 1265506463 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :dude ST is awesome < 1265506478 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :what do you mean hold onto State though? < 1265506480 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :ST is about mutation < 1265506487 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :mutable reference with O(1) update < 1265506497 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :so might be the wrong thing < 1265506595 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :Sgeo: ST is for temporarily using (real) mutable state inside a theoretically pure computation < 1265506679 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :if you want permanent mutable state you must use IO with IORef, MVar (thread safe) or maybe that TVar thing which i'm not sure about < 1265506683 0 :alise!unknown@unknown.invalid QUIT :Ping timeout: 248 seconds < 1265506697 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :iirc < 1265506721 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :and if you just want to _simulate_ state using pure computations, use State / StateT < 1265506762 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :I want a nice tutorial on all of these < 1265506768 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :hm < 1265506784 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :haskell is learned by word-of-IRC < 1265506825 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :indeed, never seen a tutorial in my life < 1265506934 0 :alise!~5b697d23@gateway/web/freenode/x-tafzlqcobodtwqjh JOIN :#esoteric < 1265506957 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :Tutorials are just lies that the MAN uses to keep us down. < 1265506968 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :yeah! < 1265506971 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :seems this one only has State of those, but it has many other monads: http://www.haskell.org/all_about_monads/html/index.html < 1265507031 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Antecedent < 1265507053 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :huh? < 1265507177 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :ACTION bookmarks < 1265507232 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :ACTION <3 LaTeX < 1265507837 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :MissPiggy: instead of a partial monad, would it be possible to have just an "infinite computation" monad? < 1265507845 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :dunno < 1265507846 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :just a thought < 1265507867 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :what's the difference < 1265507872 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :same thing no? < 1265507900 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :well, partial lets you have things in-between < 1265507904 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :few-steps-delayed < 1265507943 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :data Inf a = Further a (Inf a); bottom = Further bottom bottom -- I think < 1265507953 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :MissPiggy! < 1265507987 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :an infinite computation monad is just a partial monad where you cannot distinguish Further . Further from Further < 1265507992 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :i think < 1265508006 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: it's a partial monad where Later has some not-fully-computed value, and there is no Now < 1265508024 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :oh right no Now either < 1265508027 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :hey augur :) < 1265508056 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :it's essentially opaque outside of runtime, then, like IO... < 1265508059 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :have you clarified your sex and/or gender to ehird? < 1265508073 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :clarified butter < 1265508078 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :melted and seived < 1265508094 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :i'd clarify your butter < 1265508098 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :lol < 1265508100 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :until you clarify we shall have to refer to you by the generic pronoun (s)h/it < 1265508117 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric ::D < 1265508131 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: not opaque < 1265508138 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :with a definition of the naturals you'd get < 1265508149 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Further [] $ Further [1] $ Further [1,2] $ Futher [1,2,3] etc < 1265508157 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Bottom would be Further ? $ Further ? $ Further ? < 1265508159 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :for some ? < 1265508183 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Length of an infinite list would be Further 0 $ Further 1 $ Further 2 $ ... < 1265508189 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :argh the question mark, my old nemesis < 1265508199 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :aka fake unicode < 1265508206 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :It's an actual question mark. < 1265508214 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :i know, i checked the logs < 1265508217 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :You *could* designate one value as the end valuie and leave the rest as placeholders to emulate Now/Later, so it's definitely equivalent. < 1265508229 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :With IO, for instance, you'd have an EndProgram event, and then just Nop, Nop, Nop forever, < 1265508231 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :*forever. < 1265508235 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :(they'd never be looked at) < 1265508247 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :i.e. main_ = main >> exitSuccess < 1265508250 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :erm < 1265508256 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :main_ = main >> exitSuccess >> main_ < 1265508349 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :as alise I am getting speedier help in #haskell! < 1265508415 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :alise: hm this is possibly isomorphic to Reader Natural < 1265508441 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :right but not in a total language < 1265508461 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :MissPiggy: btw does agda allow something like foo :: Void -> a; foo _ = bottom? < 1265508467 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :yes < 1265508469 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :if you have a Void you have bottom anyway, so you're not making anything worse < 1265508491 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :you can do < 1265508493 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :foo :: Void < 1265508495 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :foo = foo < 1265508499 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :if you turn off the termination checker < 1265508555 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :data Void where bottom :: Void -> a < 1265508571 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :oh wait < 1265508572 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :no, data Void < 1265508605 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :foo :: Void -> a < 1265508607 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :foo () < 1265508613 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :alise: foo x = case x of { } < 1265508624 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :that's the syntax to define it by "pattern match" on an empty type < 1265508667 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :that's intuitively correct, at least < 1265508698 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :MissPiggy: um you mean that foo () means the same thing? < 1265508706 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Fun with the list monad: (| return ({[1..2]}, {[3..4]}) |) < 1265508713 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :oerjan same as what? < 1265508721 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :MissPiggy: as my case < 1265508738 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :oerjan, yeah (except that agda doesn't have case) < 1265508743 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ok < 1265508752 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :oh wait this isn't agda is it? < 1265508756 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :oh it is.. < 1265508757 0 :Asztal!unknown@unknown.invalid QUIT :Ping timeout: 265 seconds < 1265508971 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :hmm... (| f {x} |) -> f <$> x, (| f {x} y |) -> join (f <$> x <*> return y) < 1265509081 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :(| f {g x} y {foo (| mab {z} |)} |) -> join (return f <*> g x <*> return y <*> foo (join (return mab <*> z))) < 1265509181 0 :SimonRC!unknown@unknown.invalid QUIT :Ping timeout: 246 seconds < 1265509206 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :oh, and (| x; y |) -> do (| x |); (| y |) < 1265509413 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :cat = (| putStr {getContents} |) < 1265509430 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :catLines = (| putStrLn {getLine}; catLines |) < 1265509459 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :MissPiggy: I wonder if you could make that table thing into the actual data type system of a functional lang < 1265509474 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :a gadt is shorthand for creating a table and adding some rows < 1265509483 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :functions are automatically turned into columns < 1265509504 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :(if they pattern match on the constructors; otherwise, they must be compositions of existing functions that do) < 1265509510 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :(and so don't need to be columns) < 1265509527 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :add some syntax for adding rows and voila < 1265509622 0 :SimonRC!~sc@fof.durge.org JOIN :#esoteric < 1265509624 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :yeah it could work < 1265509626 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :I think! < 1265509640 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :but well it only defines a small class of functions < 1265509646 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :(one that are folds) < 1265509655 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :I don't see what you mean < 1265509681 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :also, it's ridiculous how much low hanging fruit there is in abstraction design < 1265509701 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :dependent types. a powerful module system ala ML. these tables. etc. < 1265509711 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Yet nobody is putting them into their languages. < 1265509753 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :about time to start doing it I think :) < 1265509763 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :i'm on it < 1265509796 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :i'm so gonna have to hire some phds to write the compiler, though < 1265509818 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :proving the type system sound with all this stuff will be *way* out of my league for one :P < 1265509867 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :why not make a really simple dependent type core that has already been proved, and implement all your high language constructs in terms of it? < 1265509874 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :then you don't have to worry about consistency < 1265509892 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :this is the approach Coq takes (And the one Agda doesn't) < 1265509899 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :well, that's my plan, but some of the features would be really, really convoluted to compile < 1265509903 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :so need to be in the base language < 1265509906 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :and thus complicate things < 1265509913 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :ah I see what you mean < 1265509918 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :also, because all the existing core systems suck, so i'd need to make a new one anyway :) :D < 1265509969 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :ACTION gets another feature idea < 1265509971 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :literal brackets < 1265509981 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :a pair of brackets whose contents is interpreted according to a separate, extensible syntax < 1265509983 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :why? < 1265510009 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Well, you could have [[ /...regexp.../options ]], you could have [[ foo@bar.com ]], etc. etc. without polluting and worrying about clashes with the main syntax. < 1265510022 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :template haskell comes close to that, but not quite < 1265510145 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :(in one of its features) < 1265510204 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :(| email {fileContents <~/message.txt>} |) < 1265510531 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :It'd be nice if there was a way to do symbolic computation without writing a parser in the lang < 1265510608 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :just have a Symbolic type < 1265510614 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :and use expression templates < 1265510632 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :whatever that is, it's probably a C++ abomination. < 1265510668 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :Expression templates are when overloading is used to build up expressions in data < 1265510697 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :e.g. x^2 might give some value which represents "x^2", which is exactly what you want in symbolic computation. < 1265510702 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :It's more the "any undefined value just sits there" thing. < 1265510746 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :what about transcendental constants? For accurate math, they must be treated very much like unknowns < 1265510891 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :What I mean is, you need to coerce the language into, upon seeing "ilikebigbuttsandicannotlieyouothercreaturescantdeny", give it some value instead of barfing that it's not bound. < 1265511594 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :Time for GREGOR'S LANGUAGE CHALLENGE < 1265511607 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :Write a language with the following name: < 1265511611 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :ATTACK OF THE FLYING MONADS < 1265511670 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :alise: That seems like a pretty easy feature to add < 1265511836 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Adding arbitrary features is bad. Adding general constructs is good./ < 1265511837 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :*good. < 1265512479 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :MissPiggy: would you believe i'm still at the "install agda" step in my dependent lc plan... >_< < 1265512480 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :i hate software < 1265512493 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :me too it sucks < 1265512519 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :and _this_ is why i have a grand os vision >:| < 1265512590 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :how to get agda in my lovely dream world: on their website, click a fancy link. it traces all the dependencies across the web, using things that basically amount to a set of type signatures to find dependencies that can be satisfied by multiple packages, and automatically integrating the latest versions, from decentralised sources, updatable, into the current value ecosystem. < 1265512680 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :it's called Debian < 1265512706 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :yeah everything's called something else if you ignore pertinent words like decentralised, type signatures, and value ecosystem < 1265512729 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :Debian supports decentralisation < 1265512743 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :if you believe your statement, you are not using the word i meant. < 1265512747 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :don't even know what you mean by type signatures and value ecosystem < 1265512775 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :then perhaps you shouldn't make snarky comments about debian < 1265512784 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :no, I just assume you're insane < 1265512791 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric ::P < 1265512797 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :actually, you know what? I retract that < 1265512798 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :it wasn't funny < 1265512810 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :bitbucket :: a -> () < 1265512813 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :bitbucket _ = () < 1265512815 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :> bitbucket coppro < 1265512835 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :coppro: perhaps slightly inappropriate given my current situation :P < 1265512843 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :retraction accepted, but i don't really mind < 1265512847 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :wait, we cannot claim we're all mad here any more? damn doctors. < 1265512859 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :alise: "value ecosystem" turns up 0 relevant hits < 1265512873 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :so does your face. < 1265512881 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :as for type signatures, I have no clue how that relates to packages < 1265512925 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :if you understood "value ecosystem" it would make more sense :P < 1265512945 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :then explain it, because apparently you're the only one who does < 1265512980 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Gregor: Attack of the Flying Monads, eh? < 1265512983 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :i'm sure others could infer it based on the component words, but imagine a smalltalk system; a living environment of objects, and that is all there is; there is no "running a file" < 1265512995 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :like that, but with functional-programming values instead of objects. < 1265512998 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :ah < 1265513001 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: No, ATTACK OF THE FLYING MONADS < 1265513007 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Gregor: Definitely needs to use the function instance for monads as the only way to be Turing-complete. < 1265513016 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :alise: I retract my retraction :P < 1265513019 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :That (except for the functional bits) sounds like Unununium < 1265513028 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :(>>= is S, return is K) < 1265513029 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :coppro: yeah my system isn't unusable, i must be crazy < 1265513043 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :(... Erm, no. >>= is not S. XD.) < 1265513048 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Grog XD. < 1265513056 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :S is ap < 1265513062 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :Sgeo: Roentgenium < 1265513064 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Yes. < 1265513079 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :And ap is defined in terms of return and >>=... < 1265513090 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :hm lessee < 1265513098 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :So, >>= and return suffice for combinator calculus. < 1265513100 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :alise: It's a pipe dream. < 1265513106 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :coppro: the os is called unununium < 1265513109 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :also, it's very much not < 1265513117 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :these techniques are actually simpler to implement than a traditional unix system < 1265513119 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :(f >>= g) x = g (f x) x < 1265513124 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :it's not one additional layer, it's one _less_ layer of separation < 1265513129 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Yes, I know. < 1265513143 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :I just had a bit of a thinko. < 1265513149 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :the labelling of anything that is substantially different from the norm as a "pipe dream" is a very common technique to dismiss ideas for no reason whatsoever < 1265513152 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :But it's one layer trying to abstract toom uch < 1265513156 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :*too much < 1265513159 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :you are wrong, and do not understand it < 1265513164 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :occasionally pipe dreams work out < 1265513167 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :for one, smalltalk has existed since the 70s, and its implementation was _very_ simple < 1265513170 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :for two, run Squeak right now < 1265513173 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :sure < 1265513175 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :you're using the exact thing I'm describing < 1265513182 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :but as an OS? < 1265513183 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :for three, see Oberon OS. it fits on a floppy and does just this. < 1265513186 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Squeak is an OS in a box < 1265513187 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :smalltalk is an os < 1265513189 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :it was an os < 1265513191 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :it booted up the computer < 1265513194 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :squeak is descended from it < 1265513198 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :it's just in a window now < 1265513202 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Smalltalk is one of the simpler OSes. < 1265513225 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Since all that the "OS" is is a language runtime... < 1265513231 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :ACTION searches for Smalltalk.NET < 1265513236 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :ah, I think I am misunderstanding < 1265513239 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Everything else is just your library. < 1265513247 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :coppro: How did you interpret it? < 1265513289 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :eh, I'm not really sure < 1265513298 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :ACTION tries to think it through < 1265513343 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Believe me, I've thought about this at length; the bits you need to get an automatically persistent, typed, living ecosystem of values is actually incredibly minimal. < 1265513370 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: >>= and return won't give you everything if you use haskell's type system though... no way to type the Y combinator < 1265513373 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :A living ecosystem of values is just a running program (ok, with the type information, etc. retained). Persistence? Orthogonal persistence takes a few hundred lines for a dumb version. A version ready for regular OS use? A few thousand lines. < 1265513382 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :And... well, that's it. < 1265513393 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :ACTION needs sleep, he thinks < 1265513402 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :The computer's memory becomes a disk cache, and the disk is full of values. < 1265513405 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :With types. < 1265513461 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :okay, pretend I wasn't a part of this conversation. I think I was insane. < 1265513468 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :A lot of insanity. < 1265513473 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :what were you thinking? :P < 1265513493 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: Just discussing ideas for ATTACK OF THE FLYING MONADS. < 1265513501 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: Don't necessarily need Haskell's type system. < 1265513511 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :alise: I'm not sure what I was thinking. Which is why I think I was insane. < 1265513545 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: note that it says MONAD_S_. you cannot use just one ;D < 1265513556 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: Yes, I know. < 1265513569 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: I'm just saying the function instance should be the only thing making it TC. :P < 1265513605 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :there's no reason we have to use the programming concept < 1265513609 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :hm maybe that reverse state monad would be something for getting fix-points... < 1265513639 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :then it can still be well-typed < 1265513653 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :i <3 the reverse state monad < 1265513678 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :clearly we should be designing this off of music without resorting to chords < 1265513803 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :ACTION votes for Bach's rendition of the Ode to Joy < 1265513842 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :bach did that? < 1265513848 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :err < 1265513850 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :Beethoven < 1265513852 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :ACTION whistles < 1265513864 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Bachovenzart < 1265513933 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :that would require some reverse state indeed, bach died before schiller was born (1750 vs. 1759) < 1265514042 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :hm a language based on time travelling anachronisms... < 1265514083 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :to quit the program, you need to get hitler eaten by a dinosaur. < 1265514110 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :without causing an alternate world war to take its pace < 1265514111 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :*place < 1265514136 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :_may be_ < 1265514142 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :yes! < 1265514144 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :wikihistory esolang < 1265514167 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :you have to do something in germany way back when to compute, but if anything stops hitler becoming an ebil nazi, the program is invalid < 1265514171 0 :cheater3!unknown@unknown.invalid PRIVMSG #esoteric :is anyone here on vista? < 1265514174 0 :cheater3!unknown@unknown.invalid PRIVMSG #esoteric ::x < 1265514179 0 :cheater3!unknown@unknown.invalid PRIVMSG #esoteric :or win 7? < 1265514188 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :No, but I do have erectile dysfunction. < 1265514189 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :ACTION is on WinXP < 1265514194 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :We all have our issues. < 1265514310 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :Me: My email address is ********@gmail.com < 1265514316 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :Other person: thats yahoo? < 1265514351 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :alise: you're pulling off the female thing really badly < 1265514411 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Sgeo: Just send the $500,000 so we can complete the transaction. < 1265514416 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :coppro: i know rite < 1265514424 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :coppro: well everyone knows i'm male in here so there's hardly any point < 1265514428 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :and the only other place i dwell is #haskell! < 1265514429 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :true < 1265514433 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :but that's your own fault! < 1265514439 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :Talking to someone who randomly came to a nearly dead chat < 1265514447 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :so the only affect of this is that i'm referring to myself as "she". well, when i remember. < 1265514466 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :alise: no wait, erectile dysfunction means you cannot be male, right < 1265514484 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :ACTION scratches head < 1265514485 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :o.O < 1265514490 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :The person invited me to private chat < 1265514499 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :I was in another tab, but I accepted < 1265514499 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :SEXY TIME < 1265514504 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :THat meant I couldn't see the main chat < 1265514533 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :Just closed out of private chat... and apparently before I went into private chat, e said "Let's have sex" < 1265514559 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Ha! I was RIGHT! < 1265514703 0 :madbr!unknown@unknown.invalid PRIVMSG #esoteric :sex chat... usually that's hard because there's not many girls on IRC < 1265514722 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :it was probably in one of sgeo's endless obsessions^Wshitty 3d virtual-reality games from years ago. < 1265514733 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :alise, you're psychic < 1265514760 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :actually the universe has shown a disturbing tendency to shape what i experience according to me recently < 1265514834 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :madbr: Though, if you're gay you shouldn't have *too* much trouble. < 1265514861 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :At least insofar as I can tell, there's more gay men than there are females on IRC. (in general) < 1265514861 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Or botsexual. < 1265514877 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :If you're botsexual, then it's trivial. < 1265514906 0 :madbr!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: yes < 1265514916 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Or silensexual. < 1265514926 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :/ignore *@* < 1265514949 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :coppro: i'm not ready for that kind of commitment. < 1265514956 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric ::P < 1265514961 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :coppro: /join #brainfuck < 1265514975 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :why? < 1265514986 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Silent. < 1265514996 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :ah < 1265515110 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :Sex chat is easy so long as you're not so damn picky :P < 1265515148 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :He knows this from extensive ... research,. < 1265515150 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :*research. < 1265515179 0 :Sgeo!unknown@unknown.invalid QUIT :Ping timeout: 256 seconds < 1265515197 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :If you can get off to chatting with what you assume is a sexy woman online, and some guy in Alabama can get off to pretending to be a sexy woman and chatting with you, then who's really harmed? :P < 1265515203 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Clearly, everyone should only have sex chat with Egobot. < 1265515220 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :`echo I put on my robe and wizard's hat. < 1265515221 0 :HackEgo!unknown@unknown.invalid PRIVMSG #esoteric :I put on my robe and wizard's hat. < 1265515223 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Gregor: THE IRC SERVER INBETWEEN < 1265515226 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :It knows everything < 1265515227 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :EVERYTHING < 1265515229 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :OH GOD THE HORROR < 1265515249 0 :madbr!unknown@unknown.invalid PRIVMSG #esoteric :ah, it has probably seen much worse < 1265515280 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :"I fling my dung-covered vomit into your urethra." < 1265515288 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :HOT < 1265515304 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :Urinal tract infections are SO SEXY. < 1265515366 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :urinalot of trouble < 1265515494 0 :madbr!unknown@unknown.invalid PRIVMSG #esoteric :seen worse < 1265515579 0 :madbr!unknown@unknown.invalid PRIVMSG #esoteric :there was some guy in whatever other channel that had, like, all the fetishes < 1265515661 0 :alise_!~5b697d23@gateway/web/freenode/x-isduzhrxfjasrkxw JOIN :#esoteric < 1265515670 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :ACTION picks up the channel and sets it back on the rails < 1265515672 0 :alise_!unknown@unknown.invalid PRIVMSG #esoteric :I have a fetish... < 1265515673 0 :alise_!unknown@unknown.invalid PRIVMSG #esoteric :for LOVE < 1265515675 0 :alise!unknown@unknown.invalid QUIT :Ping timeout: 248 seconds < 1265515678 0 :alise_!unknown@unknown.invalid NICK :alise < 1265515683 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :'tis a good thing < 1265515691 0 :Sgeo!~Sgeo@ool-18bf618a.dyn.optonline.net JOIN :#esoteric < 1265515724 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :That was screwed ip < 1265515740 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :ip ip ip < 1265515746 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :SCREWED, ey? < 1265515775 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :look, I already told you to stop being Canadian. Switching to a y doesn't count. < 1265515858 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :uhh < 1265515860 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :maple syrup < 1265515860 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :eh < 1265515861 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :eh < 1265515862 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :eh < 1265515862 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :eh < 1265515863 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :eh < 1265515863 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :eh < 1265515863 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :eh < 1265515864 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :eh < 1265515864 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :eh < 1265515864 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :eh < 1265515869 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :^ canadians < 1265515897 0 :madbr!unknown@unknown.invalid PRIVMSG #esoteric :There's no canada like french canada < 1265515972 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :maple syrup is indeed delicious < 1265516001 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :So is chapstick >.> < 1265516061 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :I'm beginning to suspect that chapstick is an euphemism for something else < 1265516078 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :I'm going to assume it isn't < 1265516083 0 :madbr!unknown@unknown.invalid PRIVMSG #esoteric :everything in english is an euphemism for sex < 1265516176 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :i'm afreud so < 1265516186 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :madbr: including "english"? < 1265516194 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Or how about ... discombobulated < 1265516203 0 :madbr!unknown@unknown.invalid PRIVMSG #esoteric :I'll give you english lessons < 1265516208 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ooh, look at those bobules < 1265516223 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :madbr: No, just everything written by Shakespeare. < 1265516282 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Country matters. < 1265516329 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :http://tvtropes.org/pmwiki/pmwiki.php/Main/CountryMatters < 1265516387 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :I love that Ulysses quote. < 1265516527 0 :madbr!unknown@unknown.invalid PRIVMSG #esoteric :sgeo: heh, eventually we'll wear out "fuck" and have to switch to "cunt < 1265516528 0 :madbr!unknown@unknown.invalid PRIVMSG #esoteric :" < 1265516864 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :g < 1265516879 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :i keep reading my name as aisle < 1265516897 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :Pick up the phone booth and aisle? < 1265516924 0 :madbr!unknown@unknown.invalid PRIVMSG #esoteric :actually that might be a plan if you're a rapper that sells disks to 11 year olds by saying obscenities < 1265518039 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :amasses of obulence < 1265518169 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :I just want to pop open that stick of chapstick, pull out its fleshy inner core and rub it all over my lips. < 1265518174 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :Chapstick, folks. Chapstick. < 1265518266 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :My chapstick is tingling. < 1265518509 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :freud was wrong. all those people talking about penises are secretly thinking about chapsticks. < 1265521083 0 :Pthing!~pthing@cpc11-pres4-0-0-cust168.pres.cable.virginmedia.com JOIN :#esoteric < 1265521441 0 :jcp!unknown@unknown.invalid QUIT :Ping timeout: 264 seconds < 1265521519 0 :jcp!~jw@bzflag/contributor/javawizard2539 JOIN :#esoteric < 1265523310 0 :oerjan!unknown@unknown.invalid QUIT :Quit: Good night < 1265523838 0 :madbr!unknown@unknown.invalid QUIT :Quit: Radiateur < 1265524767 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :HM < 1265524781 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :Most examples of using this particular SDK are C. This example is C++ < 1265524806 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :Wait, no < 1265524808 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :Wait, yes < 1265524883 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :O_o < 1265524887 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :link? < 1265524894 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :http://wiki.activeworlds.com/index.php?title=Aw_laser_beam < 1265524960 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :which is C++? < 1265524963 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :oh < 1265524965 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :yeah, I see < 1265524966 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :hah < 1265525017 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :At first, I forgot that C had structs, so I thought the whole Line thing wouldn't make sense < 1265525036 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :Then I realized it does.. but it doesn't have the & pass-by-reference thing.. I think < 1265525078 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1265525081 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Only pointers. < 1265525114 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :The & stuff is somewhat confusing, tbh < 1265525132 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :I don't know why people think pointers are complicated. IMO, they make more sense < 1265525252 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :References are used because operator overloading doesn't work with pointers < 1265526522 0 :coppro!unknown@unknown.invalid QUIT :Ping timeout: 240 seconds < 1265526674 0 :coppro!~coppro@unaffiliated/coppro JOIN :#esoteric < 1265527970 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :alise: neat fact: I just discovered that a large portion of another online community thought I was female. No noticeable difference from my side. < 1265529599 0 :clog!unknown@unknown.invalid QUIT :ended < 1265529600 0 :clog!unknown@unknown.invalid JOIN :#esoteric < 1265531550 0 :jcp!unknown@unknown.invalid QUIT :Remote host closed the connection < 1265531673 0 :jcp!~jw@bzflag/contributor/javawizard2539 JOIN :#esoteric < 1265533047 0 :MigoMipo!~migomipo@84-217-0-36.tn.glocalnet.net JOIN :#esoteric < 1265533651 0 :gm|lap!unknown@unknown.invalid QUIT :Quit: 2 hour UPS expired. Shutting down laptop. < 1265534286 0 :MissPiggy!unknown@unknown.invalid QUIT :Quit: Lost terminal < 1265534499 0 :kar8nga!~kar8nga@jol13-1-82-66-176-74.fbx.proxad.net JOIN :#esoteric < 1265534902 0 :BeholdMyGlory!~behold@unaffiliated/beholdmyglory JOIN :#esoteric < 1265534943 0 :tombom!tombom@wikipedia/Tombomp JOIN :#esoteric < 1265536147 0 :jcp!unknown@unknown.invalid QUIT :Remote host closed the connection < 1265536477 0 :cheater3!unknown@unknown.invalid PRIVMSG #esoteric :sup guys < 1265538902 0 :MigoMipo!unknown@unknown.invalid QUIT :Remote host closed the connection < 1265539039 0 :tombom_!tombom@wikipedia/Tombomp JOIN :#esoteric < 1265539150 0 :tombom!unknown@unknown.invalid QUIT :Ping timeout: 272 seconds < 1265541049 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :ACTION just got a rather good fortune: < 1265541053 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :To converse at the distance of the Indes by means of sympathetic contrivances < 1265541053 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :may be as natural to future times as to us is a literary correspondence. -- Joseph Glanvill, 1661 < 1265541870 0 :FireFly!~firefly@unaffiliated/firefly JOIN :#esoteric < 1265543888 0 :MizardX!~MizardX@unaffiliated/mizardx JOIN :#esoteric < 1265545231 0 :MigoMipo!~migomipo@84-217-0-36.tn.glocalnet.net JOIN :#esoteric < 1265549704 0 :Pthing!unknown@unknown.invalid QUIT :Remote host closed the connection < 1265550523 0 :pax!~SOLEIL@a213-22-137-230.cpe.netcabo.pt JOIN :#esoteric < 1265550782 0 :pax!unknown@unknown.invalid QUIT :Ping timeout: 246 seconds < 1265551049 0 :MizardX-!~MizardX@unaffiliated/mizardx JOIN :#esoteric < 1265551185 0 :MizardX!unknown@unknown.invalid QUIT :Ping timeout: 256 seconds < 1265551198 0 :MizardX-!unknown@unknown.invalid NICK :MizardX < 1265551722 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :[07:32] alise: neat fact: I just discovered that a large portion of another online community thought I was female. No noticeable difference from my side. < 1265551732 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :coppro: remember what I said about me seeming to shape the universe? < 1265551736 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :it's getting ridiculous lately. < 1265551770 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :i'm *almost* a multiverse solipsist (everyone has their own universe... except, I guess other people in it are "alive" just not the main alive guy for that person) < 1265552029 0 :kar8nga!unknown@unknown.invalid QUIT :Remote host closed the connection < 1265552303 0 :oerjan!~oerjan@hagbart.nvg.ntnu.no JOIN :#esoteric < 1265552402 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: whatever curse you've put on me, stop it < 1265552458 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :wait, what? i was trying to put a curse on your doctors, not you. must have missed slightly. < 1265552617 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :also i was pondering more scientific plans. unfortunately they all involve first inventing a working teleport device. < 1265552893 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :the universe has been freaking me out since before that :p < 1265552928 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :also, synchronicities are supposed to increase drastically for _everyone_ as we approach 2012. don't you read the relevant new age literature, sheesh. < 1265553014 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :yes, but there's simply not enough space in the non-synchronicitious day for other people to have all theirs, too < 1265553036 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :if everyone was having these (I mean, assuming they're not just my imagination), mine wouldn't be so important as to affect the actual TV news < 1265553054 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :wait, you are affecting the TV news? < 1265553109 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :unless the TV news are mentioning you, note that the same news could easily be part of several people's synchronicities. < 1265553142 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :ACTION is curious as to what the news is < 1265553144 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :well, not as much recently but they *did* have a tendency to talk about things i'd recently thought about (not necessarily heard about; that would be Baader-Meinhof, but thought) < 1265553162 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ACTION has pondered this before, when _he_ felt the news were eerily coincident < 1265553210 0 :cheater3!unknown@unknown.invalid QUIT :Ping timeout: 248 seconds < 1265553220 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :I'm pretty sure it's just the Baader-Meinhof phenomenon and a handful of everyday coincidences (it's not as if they're synchronicities about really obscure stuff) < 1265553389 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :well in my experience there are only a very few "big" synchronicities, and a tremendous onslaught of small ones, the frequency of which is affected by my personal mood. < 1265553440 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :In my experience, you're experiencing a rationality failure due to the tendency of the human mind to notice things that it has recently noticed and ignore those things it hasn't. :) < 1265553668 0 :Pthing!~pthing@cpc11-pres4-0-0-cust168.pres.cable.virginmedia.com JOIN :#esoteric < 1265553863 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :btw may i recommend the book "The Luck Factor"? it's investigating some of these things from a more scientific point of view. < 1265553895 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :from a 1-second google it's actually postulating that luck exists and some have it more than others? < 1265553908 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :so much for "scientific" < 1265553914 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :(well it's more in a popular science form) < 1265553932 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :"In this book Richard Wiseman, former magician turned" < 1265553942 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :james randi is the only one who can pull off that :P < 1265554014 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :it actually is not anywhere as non-scientific as it sounds. in fact it basically has your kind of outlook, but then notices (through scientific investigations) that you can _still_ affect your luck. < 1265554044 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :i.e. even _if_ it's all about perception, you can still affect your luck by changing it. < 1265554084 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Only through working harder to do better (in ways that minutely change seemingly "random" outcomes) because you think you will... < 1265554104 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Which isn't really changing your luck at all, luck would be affecting things you have no control over. < 1265554151 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :perhaps. this book is about the part you can control though, and why it's still important. < 1265554187 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Well, I don't call things like that chance. < 1265554235 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :_i_ think there's more than that, of course. < 1265554263 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :but that book imho goes as far as you can _without_ leaving the scientific worldview < 1265554266 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Many mathematicians seem to believe in the orbiting teapots, though I can't fathom why them specifically. < 1265554274 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :it was sort of gateway drug for me really < 1265554281 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Maybe because their rational system doesn't say anything about the world. < 1265554288 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :So they don't make the connection... < 1265554378 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :whatever. i'll just have to wait for you to change your opinion ;D < 1265554539 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :That's unlikely; I've spent so much time - and in my formative years, too - thinking about this. I never was religious or superstitious - I identified as Christian but only because everyone else did, and *never* thought about it. Then I became an agnostic when I stopped telling people that, then, after much thought, a complete atheist. Then, a few years later, I took a long, hard look at it and concluded that rationality was the b < 1265554550 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Although I'm a lazy slob and don't tend to follow my utilitarian aspirations. < 1265554616 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :i do not mean that you will change your opinion because you change your basic rationality. i don't think _i_ did, after all. < 1265554629 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :You believe in something entirely unfalsifiable. < 1265554642 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :That is irrational by definition. < 1265554660 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ACTION sets fire to alise's strawman < 1265554675 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Then what do you believe? < 1265554717 0 :Pthing!unknown@unknown.invalid PRIVMSG #esoteric :godchat < 1265554750 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :i believe in synchronicities, the biggest of which have a strange tendency to show up when it is _really_ important that they do so. < 1265554786 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Define synchronicities. < 1265554787 0 :Pthing!unknown@unknown.invalid PRIVMSG #esoteric :how do you spot a time when it's important to happen < 1265554796 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Pthing: because it happened, obviously! :P < 1265554797 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :i guess _you_ have never been followed home by a three-legged black kitten when in a particularly self-destructive mood. < 1265554808 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :a kitten deciding to follow you < 1265554815 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :and it lost a leg because of some happening? < 1265554821 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :man, that's spoooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooky < 1265554886 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :whatever. < 1265554893 0 :Pthing!unknown@unknown.invalid PRIVMSG #esoteric :i mean it < 1265554896 0 :Pthing!unknown@unknown.invalid PRIVMSG #esoteric :how do you tell < 1265554912 0 :Pthing!unknown@unknown.invalid PRIVMSG #esoteric :surely there are instances where it could be really important one happens but it doesn't < 1265554912 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :if you say "whatever" as a response to something that's a pretty good indicator you're not able to make a rational argument about it < 1265554923 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :yes, yes. < 1265554930 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ok so i'm not rational. < 1265554962 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :That sure was easier to convince you of thaan it is for most. Are you sure you didn't already believe that? < 1265554966 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :*than < 1265554978 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :heh < 1265554981 0 :Pthing!unknown@unknown.invalid PRIVMSG #esoteric :jesus christ, you weren't convincing < 1265554994 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :i am not _intending_ to be convincing. < 1265555000 0 :Pthing!unknown@unknown.invalid PRIVMSG #esoteric :i meant alise < 1265555023 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :a second ago he was claiming he was rational. < 1265555029 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :anyway i didn't say i was convincing < 1265555033 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :that was not the word i used < 1265555046 0 :Pthing!unknown@unknown.invalid PRIVMSG #esoteric :"convince" is the word < 1265555255 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ok i'm uncomfortable continuing this conversation. if it's because i'm irrational, so be it. < 1265555293 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :now iwc. < 1265555490 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :don't worry martians, the froghurt is cursed anyhow < 1265555622 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :anyone know of a tool (for *nix) that renders a pdf (or ps file) and outputs it as one image per page < 1265555674 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :alternative: anyone know of a tool to split up a multipage pdf into one file per page (I think ps2eps can be used then, and after that it would be easy to convert to a bitmap format) < 1265555994 0 :cheater2!~cheater@ip-80-226-28-76.vodafone-net.de JOIN :#esoteric < 1265556014 0 :oerjan!unknown@unknown.invalid QUIT :Quit: Later < 1265556611 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hm played with ghostscript's image backends < 1265556616 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :they give ugly results < 1265556621 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :non-antialiased < 1265556789 0 :MissPiggy!~quantum@unaffiliated/fax JOIN :#esoteric < 1265556802 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :hi MissPiggy! < 1265556847 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :hey < 1265556856 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :what's happening < 1265556864 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :stuffs < 1265557097 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oh hm you don't need to convert to ps for ghostscript it seems. Not that it is documented in man page that it accepts pdf (at least in the version I have here) < 1265557104 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and that gives antialiased output < 1265557456 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :MissPiggy: is the function Set -> Set reasonable that means "the set of all values not in the argument"? seems straying close to russell somehow, but it would be a cool function < 1265557541 0 :Ilari!unknown@unknown.invalid PRIVMSG #esoteric :alise: Either such function is relative to some universe (and then it would equivalent to set complement) or AFAIK the output will not be a set. < 1265557578 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: Well, it's a GNU thing; those aren't known for sensible man pages. The actual official documentation is pretty clear on PDF files. < 1265557587 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Ilari: Well, it's relative to the type (∃a.a). < 1265557590 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :alise that sonuds insane < 1265557598 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :can you even compute that? < 1265557621 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :MissPiggy: well for the typechecker it's easy < 1265557632 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :if the value is in the set we complemented, go all beepy like < 1265557634 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :otherwise, smile < 1265557647 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :you could construct a type of "everything you cannot `show` (as in Haskell show)" :D < 1265557660 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :hah < 1265557678 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :ACTION is learning the joy of watching TED talks < 1265557679 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: And in general you have to say something like "-dTextAlphaBits=4 -dGraphicsAlphaBits=4" to get subsample antialiasing. (Can't say offhand why it'd happen by default if you pass in a PDF file.) < 1265557732 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :MissPiggy: i guess it's more useful to have complements < 1265557747 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :then you can just do (∃a.a) - foo < 1265557750 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: (And incidentally, my version of the man page does mention the PDF support; starts with "-- Ghostscript, an interpreter of Adobe Systems' PostScript(tm) and Portable Document Format (PDF) languages." < 1265557753 0 :Ilari!unknown@unknown.invalid PRIVMSG #esoteric :alise: Any value not in set when invoked on empty set is truly everything. And that's proper class, not a set. < 1265557761 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :hmm, what uber-general concept can we apply to - to let us define it on sets? :-) < 1265557764 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :sounds a bit SET THEORY to me < 1265557767 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :hmm... maybe sets are haskell-ish Nums < 1265557767 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :ACTION pitchforks < 1265557774 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :(+) :: Set -> Set -> Set, yes < 1265557789 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :Hm < 1265557792 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :(-) :: Set -> Set -> Set, yar < 1265557803 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :In my Data Structures class, we made a fraction calculator in C++ < 1265557805 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :(*) :: Set -> Set -> Set, that'd be a tuple < 1265557812 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :Maybe I should make a similar calculator in Haskell < 1265557825 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :MissPiggy: Quick, what's set `div` set?! < 1265557827 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric ::P < 1265557834 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :(Not required for Num, but amusing to think about anyway.) < 1265557878 0 :Ilari!unknown@unknown.invalid PRIVMSG #esoteric :One property of sets is that for any set, there is strictly larger set. < 1265557983 0 :Ilari!unknown@unknown.invalid PRIVMSG #esoteric :More construcively: All sets have powerset, and that powerset is always strictly larger than the set itself. < 1265558028 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :There's no bigger set than (∃a.a). < 1265558030 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :is that a property of sets hm < 1265558037 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :After all, it contains every single value... < 1265558073 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :ACTION guesses that the character he can't see is forall [inverted A] < 1265558079 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :it's exists :P < 1265558084 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Sgeo: It's flipped E. < 1265558086 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :(exists) < 1265558092 0 :Ilari!unknown@unknown.invalid PRIVMSG #esoteric :alise: If there isn't anything bigger than it, it can't be a set, it is proper class. < 1265558094 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :oh < 1265558107 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :In haskell, you would write it (forall a. a) because it overloads forall for existential quantification. < 1265558117 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Ilari: Yes, but type theorists poop on set theory for breakfast. < 1265558229 0 :Ilari!unknown@unknown.invalid PRIVMSG #esoteric :Another funky feature: Sets with cardinality above Aleph-0 include undescribable elements. < 1265558277 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Such is the strange world of the Curry-Howard isomorphism. < 1265558362 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Hmm. < 1265558384 0 :kar8nga!~kar8nga@jol13-1-82-66-176-74.fbx.proxad.net JOIN :#esoteric < 1265558387 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :(\(x::T). ...) -> (\x. (\x'. ...) (x::T)) if you have ::. < 1265558417 0 :Asztal!~asztal@host86-169-6-12.range86-169.btcentralplus.com JOIN :#esoteric < 1265558448 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :OTOH, (x::T) -> (\(x'::T). x') x if you have that. :P < 1265558702 0 :MissPigg1!~quantum@amcant.demon.co.uk JOIN :#esoteric < 1265558727 0 :MissPiggy!unknown@unknown.invalid QUIT :Disconnected by services < 1265558730 0 :MissPigg1!unknown@unknown.invalid NICK :MissPiggy < 1265558744 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :*Main> L (TyTy :-> (\(T a) -> a :-> (\_ -> a))) :1:0: No instance for (Show (ID -> Term -> Term)) < 1265558753 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Woot < 1265558776 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :(That's (\...) :: (a::Set) -> a -> a) < 1265558894 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Hmm. < 1265558899 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :I don't actually need to have separate Term and Set types. < 1265558929 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric : L :: Term -> (Term -> Term) -> Term < 1265558931 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric : (:->) :: Term -> (Term -> Term) -> Term < 1265558941 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Whenever I see two things of the same type, I feel this intense urge to unify them. < 1265558951 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :But they're not the same :p < 1265558952 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :*:P < 1265559026 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Starting to think that that function idea isn't so great, though, because then I can't, you know, show lambdas. < 1265559168 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :idL = L (A SetSet (A (N Top) (N (Dip Top)))) (N Top) < 1265559169 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :That's better. < 1265559296 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :ACTION drinks a Red Bull shot < 1265559302 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :ACTION drinks a horse < 1265559318 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :It came free with a few hundred dollars worth of books < 1265559342 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Let me guess, it's awful and terrible for you. < 1265559355 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :My dad says that I better not buy this, because it's exactly the same as a cup of coffe, but more expensive < 1265559362 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Don't let Ilari hear about this or you'll never stop hearing about sugar :-) < 1265559367 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :*coffee, also. < 1265559412 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :He says if I want something convenient, there are pills < 1265559453 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Or how about sleeping better and not needing things like that. < 1265559456 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :*Main> idL \((*) -> (t) -> dt). t < 1265559457 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Woot < 1265559545 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :If sugar's main issue is that it causes obesity or something, I don't see a problem < 1265559569 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Destroys your liver < 1265559589 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :Oh < 1265559680 0 :jcp!~jw@bzflag/contributor/javawizard2539 JOIN :#esoteric < 1265559997 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Uh oh, my dependently-typed lambda calculus seems to require an infinite loop in typechecking. < 1265560158 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :ACTION does like the taste < 1265560164 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :And I hate the taste of coffee < 1265560178 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Drink tea. It has more caffeine. < 1265560214 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :Drinking tea takes time < 1265560276 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :MissPiggy: HALP http://pastie.org/813531.txt?key=ahcwvmgdprki24beyw5gq < 1265560284 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Sgeo: So does coffee < 1265560295 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :alise, indeed < 1265560305 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Anyway if you want a cheap boost the expense of your health feel free. < 1265560306 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :whatos :.? < 1265560310 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :Drinking this Red Bull shot took maybe a few seconds < 1265560310 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :, he said, while drinking cola. < 1265560315 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :MissPiggy: application < 1265560323 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :I would call it :$ but it's left-associative As God Intended < 1265560343 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :rT is < 1265560343 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :uh < 1265560344 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :in < 1265560347 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :(x::T) -> ... < 1265560352 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :rT is the ... < 1265560358 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :f : (a : A) -> B[a], < 1265560363 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :x : a |- < 1265560365 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :wait, rT isn't actually a function < 1265560366 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :f x : B[x] < 1265560372 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :so i can't do that < 1265560380 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric : L :: Term -> Term -> Term A :: Term -> Term -> Term < 1265560388 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :maybe the second Term _should_ be a lambda < 1265560393 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :so that it's expressed as T -> (\x -> ...) < 1265560399 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :yeah you could try that < 1265560404 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :is that haskell though? < 1265560416 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :yeah but it'd actually be written as < 1265560418 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :not with a real lambda < 1265560420 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :but with an L term < 1265560421 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :you can't do HOAS in agda < 1265560424 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :oh oky < 1265560435 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :like < 1265560439 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :idL = L (A SetSet (A (N Top) (N (Dip Top)))) (N Top) < 1265560443 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :(N is the variable stuff) < 1265560458 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :A, arrow, pushes a new variable and runs the code < 1265560466 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :so does L, so maybe A's second argument should be an L < 1265560634 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :In fact, I think I meant it to be an L. < 1265560659 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :MissPiggy: but the problem is, when I check the L in the A to make sure that it takes the right type of argument, and to make sure its result type is a Set, we run into the exact same code path < 1265560772 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :hmm < 1265560831 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :i was thinking i could rely on glorious laziness to bottom out in the end but i don't think so < 1265560882 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :for a well typed program you don't need to worry about evaluation order < 1265560957 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :yeah but my typechecker is sequential not lazy < 1265560960 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :maybe monad < 1265560985 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :the problem is that every type is, I think, infinite < 1265560991 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :every type has a type of the type and the typey type type < 1265561139 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :infinite O_O < 1265561146 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :well you can just stop at Set < 1265561148 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :INFINITE DIMENSIONS OF THE COSMIC SOUL < 1265561150 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :Set is well formed < 1265561154 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :yeah but < 1265561157 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :ok lemme give you an example < 1265561200 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :note: a->b pushes the value of the a-typed value on the variable stack; top of var stack is t, second is dt, third ddt, etc < 1265561210 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :(\(* -> t -> dt) -> t) whatever < 1265561214 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :erm < 1265561217 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :right < 1265561217 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :so < 1265561225 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :first we get the function's type < 1265561227 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :simple enough < 1265561232 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :then whatever's typef < 1265561234 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :*type < 1265561241 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :then we check the types match < 1265561242 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :but now < 1265561247 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :we have to pass whatever to the (t -> dt) bit < 1265561256 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :which is a function, it needs to be typeofwhatever -> set < 1265561261 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :so we need to check it < 1265561265 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :check (that bit :. whatever) < 1265561270 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :...but we're in the clause for (f :. x) < 1265561272 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :so we go forever < 1265561274 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :get it? < 1265561280 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :no < 1265561305 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :why not < 1265561315 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :oh wait < 1265561319 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :A's argument can't be an L < 1265561325 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :because that would cause an infinite nestingness < 1265561325 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :okay < 1265561328 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :i may be able to solve this with my genius < 1265561332 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :i'm terribly clever < 1265561335 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :lol < 1265561349 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :heh, to write my typechecker i need to write eval :/ < 1265561365 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :yes you do < 1265561371 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :yep. < 1265561376 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :that's expectet < 1265561384 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :yeah, still :P < 1265561385 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :fuck, at the end of this I'm going to write Term -> String < 1265561388 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :its name? < 1265561389 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :by the way < 1265561389 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :toC < 1265561398 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :if there's one thing i'm getting out of this hellhole of coding < 1265561398 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :eval is pretty easy to write < 1265561403 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :i'm gonna get some half-efficient code < 1265561405 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :yeah i know < 1265561413 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :http://sneezy.cs.nott.ac.uk/fplunch/weblog/?p=95 < 1265561416 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :this technique < 1265561417 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :using `data ID = Top | Dip ID` for my names will make renaming and shit really terribly easy < 1265561418 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :NbE < 1265561439 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :well, that type is just de bruijn < 1265561443 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :it's just nat < 1265561447 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :maybe i should just use ints < 1265561453 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :MissPiggy: i can't use that technique, can't use haskell funcs < 1265561457 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :want to be able to `show` things nicely < 1265561458 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :why not? < 1265561468 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :you can quote it and show the quoted form < 1265561474 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :ro you could implement show on the functions < 1265561477 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :? < 1265561481 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :just apply them to a gensym < 1265561485 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :hmm < 1265561486 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :good idea, maybe < 1265561491 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :yeah ok < 1265561498 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :so wait. < 1265561504 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :why do i need de bruijn stuff < 1265561507 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :if i have it as functions < 1265561526 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :or the syntax :P < 1265561533 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :? < 1265561549 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :i'm confused < 1265561570 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :well the syntax should be de bruijn, and the semantics is haskell functions < 1265561591 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :hmmm, does it even need to be de bruijn < 1265561598 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :maybe you are right and it doesn't matter < 1265561616 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :i'm not sure anymore < 1265561640 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :well < 1265561644 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :I need some sort of name to do the "pass the gensym" < 1265561661 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :so i guess it's best to keep it like that < 1265561683 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :you know what, I'm gonna write my evaluator first < 1265561685 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :then my typechecker < 1265561896 0 :MigoMipo!unknown@unknown.invalid QUIT :Remote host closed the connection < 1265561998 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :MissPiggy: that post confuses me < 1265562005 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :why does it have a separate type for evaluation? < 1265562058 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :let me explain a simpler version < 1265562083 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :suppose you have a syntax like: data Exp = Num Int | Var Ref | Add Exp Exp, < 1265562103 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :ya < 1265562111 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :hmmmmmm that was a bad example < 1265562117 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :no variable binding :P < 1265562153 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :well the point is this, you have a type Syntax and another type Semantics, < 1265562164 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :eval :: Syntax -> Semantics, quote :: Semantics -> Syntax < 1265562171 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :now normalize = quote . eval :: Syntax -> Syntax, < 1265562200 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :the reason it gives you a normal form is because factoring through Semantics quotients out anything you don't care about < 1265562214 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :tell you what i'll just do it how the article says < 1265562225 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :for example if you have an associative binary operator (i.e. trees of a), you can use [a] as semantics, to quotient out associativity < 1265562226 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :but as far as i can tell Syntax = Semantics if I use haskell functions in the actual data types < 1265562248 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :then normalize ((p * q) * x * (y * z)) = p * (q * (x * (y * z))) < 1265562270 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :now if we use the semantic domain Sem = Sem -> Sem, we have a model of lambda calculus < 1265562281 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :and thats why it does beta normalization < 1265562322 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :(it's actually omre like data Sem = Sem (Sem -> Sem), oh and you need to be able to quote back out of it, so Sem = Sem (Sem -> Sem) | Var Ref) < 1265562354 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :if you use HOAS, syntax might be: data Syn = F (Syn -> Syn) | App Syn Syn | ..., < 1265562359 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :Sem doesn't have App < 1265562432 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :ok, so Sem is the untyped lambdas < 1265562439 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :and Syn is my dependently-typed language in its entirety < 1265562451 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :why Var Ref < 1265562456 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :why not just keep track of vars with haskell arguments < 1265562475 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :well you could I dunno < 1265562499 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :the reason that I like ints for bound variables is you can do eval context (Var ref) = context ! ref < 1265562514 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :oh that should be !! < 1265562560 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :what i mean is < 1265562563 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :you don't need variable bindings < 1265562565 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :because Sem -> Sem < 1265562567 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :the first Sem gets a name < 1265562568 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :voila < 1265562686 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :no? < 1265563197 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :MissPiggy: :/ < 1265563200 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :this is confusing < 1265563257 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :eyeah it < 1265563258 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :is < 1265563263 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :I'll help < 1265563306 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :yaay<3 < 1265563541 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :look at this trivial example < 1265563553 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :data Syn = N Int | Add Syn Syn < 1265563557 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :data Sem = Sem Int < 1265563576 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :eval (N i) = Sem i ; eval (Add x y) = eval x <+> eval y < 1265563581 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :quote (Sem i) = N i < 1265563611 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :yah < 1265563619 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :nf = quote . eval, now if x, y :: Syn are equal (like 1 + 4 is equal to 2 + 2 + 1 for example), so the property is: < 1265563638 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :x === y --> nf x == nf y < 1265563647 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :=== is extensional equality, and == is syntactic < 1265563677 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :so you can also do something like monoid simplification, < 1265563696 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :data Syn = Id | Var V | Op Syn Syn < 1265563706 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :data Sem = Sem [V] < 1265563717 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :ok, can i tell you the "issue" i'm having in code? < 1265563722 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :eval (Id) = [] ; eval (Var v) = [v] ; eval (Op x y) = eval x ++ eval y < 1265563727 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :oops < 1265563731 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :should be <++> < 1265563748 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :data Syn = Lam (Syn -> Syn) | App Syn Syn < 1265563753 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :quote (Sem []) = Id ; quote (Sem (x:xs)) = Op x (quote (Sem xs)) < 1265563756 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :one, what's the Sem for this? and two, when I quote it, how would I stringify it? < 1265563761 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :there's no "dummy gensyms" to pass < 1265563774 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :and you have nf = quote . eval, and nf normalizes out identity and associativity < 1265563777 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :!!!!!!!!!! < 1265563808 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :yes Syn is a bit harder, we can build it up in two stages < 1265563824 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :data Sem = Sem (Sem -> Sem) < 1265563838 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :eval (Lam f) = Sem (\x -> eval (f x)) < 1265563847 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :eval (App f x) = eval f <$> eval x < 1265563859 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :Sem f <$> x = f x < 1265563867 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :now of course you can't quote this yet, < 1265563895 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :so we can add < 1265563902 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :data Sem = ... | Neutral N < 1265563916 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :data N = NVar Var | NApp N Sem < 1265563924 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :ACTION looks at some old Haskell code he wrote to try to get a taste for Haskell again < 1265563939 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :MissPiggy: that confuses me < 1265563979 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :I can't believe I actually wrote < 1265563979 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :What exactly happened here is that we generalized the problem - in order to make recursion work on it < 1265563979 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :show $ uncurry quad $ (\(x:y:[]) -> (x,y)) $ map read $ words line < 1265563986 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :ACTION should attempt to understand that < 1265563997 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :this is pretty much always a magic step, but it'll becme obvious in retrospect < 1265563999 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :MissPiggy: I'll have to think about this < 1265564004 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :maybe I should write the typechecker first :P < 1265564007 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :(same with induction proofs, when you do a magic generalization) < 1265564016 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :typechecker is Syn -> Maybe Syn (Syn includes types), not Sem right? < 1265564021 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :even though it involves evaluation at some point < 1265564025 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :anyway, the idea is that we generalized from CLOSED terms, to OPEN terms with N free vars, < 1265564029 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :clearly CLOSE = OPEN 0 < 1265564037 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :but now we have OPEN n (any n) < 1265564043 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :i must be really dumb today :) < 1265564078 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :so if we have an term like OPEN 3, suppose the context is [oa, ob, oc] < 1265564079 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :Ok, I understand what it does now :D < 1265564087 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :I don't know if I could ever write it again though < 1265564093 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :Plus, there's probably a more elegant way < 1265564102 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :and the term is maybe Sem (\x -> oa <$> x <$> ob) < 1265564154 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :well < 1265564202 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :the term is Sem (\x -> Neutral (NVar oa) <$> x <$> Neutral (NVar ob)) < 1265564202 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :anyway, < 1265564202 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :the recursion steps inside the binder and operates on "Neutral (NVar oa) <$> x <$> Neutral (NVar ob)" which is an open term with N+1 variables < 1265564208 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :of course you substitute x into say Neutral (NVar od) < 1265564249 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :once the lambda body is quoted you abstract it back out to get a syntax lambda term < 1265564305 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :^ this is one bit where de bruijn syntax is slightly easier/nicer than HOAS I guess < 1265564473 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :You can also make quote type directed, so that it eta-expands < 1265564481 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :but that's just more tricky details :D < 1265564538 0 :MissPiggy!unknown@unknown.invalid QUIT :Changing host < 1265564538 0 :MissPiggy!~quantum@unaffiliated/fax JOIN :#esoteric < 1265564633 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :ACTION attempts to read Sgeo's code. < 1265564642 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :Kind of annoying how you have to read it from right to left. < 1265564659 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :Probably I should paste the whole thing < 1265564666 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :Well, what does quad do? < 1265564689 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :http://hpaste.org/fastcgi/hpaste.fcgi/view?id=17242 < 1265564698 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :MissPiggy: isn't this more complicated than a syn->syn reductor :P < 1265564724 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :hm I don't know < 1265564761 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :i've always wrote reducers like that and they seem "simple enough", perhaps slightly longer code but less semantic overhead i think < 1265564785 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :I guess that looks pretty simple. < 1265564827 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :I think the semantic domain way has better theoretical properties < 1265564879 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :but if you don't need them... < 1265564900 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :`translate Suomen kieli eli suomi kuuluu uralilaiseen kielikuntaan ja sen suomalais-ugrilaisen haaran itämerensuomalaisiin kieliin. < 1265564903 0 :HackEgo!unknown@unknown.invalid PRIVMSG #esoteric :The Finnish language, ie Finnish belongs to Uralic language family, and the Finno-Ugric branch of the Baltic-Finnish languages. < 1265564915 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :That's a very good automatic translation! < 1265564928 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :`translatefromto fi en eli < 1265564929 0 :HackEgo!unknown@unknown.invalid PRIVMSG #esoteric :ie < 1265564942 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :I guess ie is an English word now. :) < 1265564968 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :Yeah, I think that translation is pretty much perfect. < 1265564996 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :`translate kielikuntaan < 1265564998 0 :HackEgo!unknown@unknown.invalid PRIVMSG #esoteric :var sl_select, tl_select, web_sl_select, web_tl_select;var ctr, web_ctr, h;var tld = ".com";var sug_lab = "";var sug_thk = "";var sug_exp = "";var dhead = "Dictionary";var dmore = "View detailed dictionary";var tr_in = "Translating...";var isurl = "";var show_roman = "Show romanization";var < 1265565012 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :`translatefromto fi en kielikuntaan < 1265565013 0 :HackEgo!unknown@unknown.invalid PRIVMSG #esoteric :language family < 1265565051 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :`translatefromto fi en haaran < 1265565053 0 :HackEgo!unknown@unknown.invalid PRIVMSG #esoteric :branch < 1265565158 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :Okay, now that I mostly know what the individual words mean, I just have to re-read that sentence until it makes sense. < 1265565161 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :It would seem that my SKI interpreter, though much slower, does not have the severe memory leaks of the Lazy K interpreter. < 1265565175 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :thats's good!! < 1265565200 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :In lazyk.cpp, rot13 takes gobs of memory. < 1265565208 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :`translatefromto fi en kielikuntaankin < 1265565209 0 :HackEgo!unknown@unknown.invalid PRIVMSG #esoteric :Language Board in < 1265565214 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :In my SKI interpreter, rot13 runs in constant space. < 1265565225 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :The power of garbage collection. < 1265565234 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :`translatefromto fi en haarankin < 1265565236 0 :HackEgo!unknown@unknown.invalid PRIVMSG #esoteric :branch in < 1265565257 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :`translate haarankin < 1265565259 0 :HackEgo!unknown@unknown.invalid PRIVMSG #esoteric :var sl_select, tl_select, web_sl_select, web_tl_select;var ctr, web_ctr, h;var tld = ".com";var sug_lab = "";var sug_thk = "";var sug_exp = "";var dhead = "Dictionary";var dmore = "View detailed dictionary";var tr_in = "Translating...";var isurl = "";var show_roman = "Show romanization";var < 1265565263 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :Sweet :P < 1265565299 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :`translateto he Oy, this has a lovely bunch of coconuts in it! < 1265565301 0 :HackEgo!unknown@unknown.invalid PRIVMSG #esoteric :אוי, זו חבורה מקסימה של קוקוסים בו! < 1265565308 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :`translateto he in it < 1265565310 0 :HackEgo!unknown@unknown.invalid PRIVMSG #esoteric :αδ < 1265565323 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :That looks like 'ad' in Greek. < 1265565344 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric ::D < 1265565393 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :`translateto he in it in it in it in it in it < 1265565394 0 :HackEgo!unknown@unknown.invalid PRIVMSG #esoteric :αδ αδ αδ αδ αδ < 1265565446 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :`translatefromto fi en puhujia < 1265565447 0 :HackEgo!unknown@unknown.invalid PRIVMSG #esoteric :speakers < 1265565459 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :`translatefromto fi en miljoonaa < 1265565459 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :That was accurate < 1265565461 0 :HackEgo!unknown@unknown.invalid PRIVMSG #esoteric :million < 1265565480 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :`translatefromto fi en on noin viisi miljoonaa < 1265565482 0 :HackEgo!unknown@unknown.invalid PRIVMSG #esoteric :is around five million < 1265565554 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :`translatefromto fi en ei ole noin viittä miljoonaakaan < 1265565555 0 :HackEgo!unknown@unknown.invalid PRIVMSG #esoteric :not even about five million < 1265565607 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :Does "Suomen kielen puhujia on noin viisi miljoonaa" literally mean "Finnish speakers are around five million"? < 1265565644 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :The way that you might say "We outnumber you: we are five, and you are only two", in a language other than English. < 1265565647 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :As a literal translation, something like that, yeah. < 1265565653 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :"There are around five million Finnish speakers" < 1265565682 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :But no, it's not like that < 1265565711 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :If you want the nonsense "Finnish speakers are around five million" literally translated: "Suomen kielen puhujat ovat noin viisi miljoonaa" < 1265565767 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :"Puhujia on" and "puhujat ovat" seem to be too many words for what they mean. < 1265565800 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :Not that I knew any Finnish at all before coming into this. < 1265565819 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :`translatefromto fi en puhujia on < 1265565821 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :"Puhujia on x" == "there are x speakers"; "puhujat ovat x" == "[the?] speakers are x" < 1265565821 0 :HackEgo!unknown@unknown.invalid PRIVMSG #esoteric :speakers < 1265565833 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :That's not too helpful :-P < 1265565836 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :`translatefromto fi en puhujia < 1265565838 0 :HackEgo!unknown@unknown.invalid PRIVMSG #esoteric :speakers < 1265565839 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :`translatefromto fi en puhujat < 1265565840 0 :HackEgo!unknown@unknown.invalid PRIVMSG #esoteric :speakers < 1265565841 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :`translatefromto fi en puhujia on < 1265565843 0 :HackEgo!unknown@unknown.invalid PRIVMSG #esoteric :speakers < 1265565843 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :Quite. < 1265565844 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :`translatefromto fi en puhujat ovat < 1265565845 0 :HackEgo!unknown@unknown.invalid PRIVMSG #esoteric :speakers < 1265565849 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :`translatefromto fi en kaiuttimet < 1265565850 0 :HackEgo!unknown@unknown.invalid PRIVMSG #esoteric :Speakers < 1265565853 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :heh < 1265565871 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :Are those the electric kind? < 1265565875 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :Yep < 1265565901 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :Anyway, yeah, I was forgetting that "puhuj-" is "speakers". < 1265565911 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :What's the citation form of that? < 1265565916 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :Citation form? < 1265565932 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :The form you would find in a dictionary. < 1265565954 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :You'd probably find the singular, "puhuja". < 1265565959 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :ACTION nods. < 1265565961 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :I'm still not quite sure what you're after. < 1265565972 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :Probably that. < 1265565978 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :You might not even find that, you'd only find "to speak", "puhua". < 1265565989 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :I'm not sure how dictionaries deal with this kind of thing. < 1265566000 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :"Puhuja" is probably common enough by itself that you'd find it as well. < 1265566004 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :What case is "puhuja"? Nominative? < 1265566024 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :Yeah, nominative < 1265566030 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :You might like http://www.ling.helsinki.fi/~fkarlsso/genkau2.html < 1265566119 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :ACTION looks up each of those words in a dictionary and memorizes their meanings individually. :P < 1265566177 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :See, you'd only find the first in a dictionary :-P < 1265566225 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :A verb equivalent, though the body text here is in Finnish as well: http://koti.mbnet.fi/henrihe/tiede/verbikaava.html < 1265566281 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :`translate Heistä suurin osa asuu Suomessa, mutta vanhoja suomenkielisiä väestöryhmiä on Pohjois-Ruotsissa (meänkielen puhujat eli tornionlaaksolaiset), Norjassa (kveenit) sekä Inkerissä, jossa suomen kieli on 1900-luvun mittaan suurimmaksi osaksi hävinnyt. < 1265566282 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :"Why learning Haskell/Python makes you a worse programmer" < 1265566283 0 :HackEgo!unknown@unknown.invalid PRIVMSG #esoteric :The majority of them live in Finland, but the old Finnish-speaking population groups in northern Sweden (ie speakers Meänkieli Torne Valley people), Norway (Kvens) and Ingria, where the Finnish language is over the 1900s for the most part disappeared. < 1265566306 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Sgeo: "Oh no it lets you write things more easily!" < 1265566307 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :Well, that translation doesn't really make sense. < 1265566328 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :pikhq, it seems to be more that you get spoiled < 1265566330 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :http://lukeplant.me.uk/blog/posts/why-learning-haskell-python-makes-you-a-worse-programmer/ < 1265566349 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :Seems fairly understandable to me < 1265566389 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :haskell-python? < 1265566392 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :is that the new C/C++? < 1265566400 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :"The majority of them live in Finland, but the old groups where the Finnish language is over the 1900s for the most part disappeared." < 1265566407 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :Doesn't make much sense to me. < 1265566431 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :You need to insert an "are" after "groups" < 1265566469 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :And the thing at the end is trying to say that they have disappeared over the 1900s < 1265566478 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :ACTION nods. < 1265566488 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Sgeo: So... < 1265566495 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :It's mostly the former issue that's confusing, IMO. < 1265566507 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :"Oh no it lets the computer focus on the trivial stuff" < 1265566575 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :pikhq, it's "Oh no, I love Python and Haskell so much that I can't write C# code without getting depressed" < 1265566585 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :`translatefromto fi en vanhoja < 1265566587 0 :HackEgo!unknown@unknown.invalid PRIVMSG #esoteric :old < 1265566614 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Sgeo: So, he sucks at programming, and languages aren't going to change that. < 1265566614 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Got it. < 1265566617 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :Finnish->English is so non-injective :-) < 1265566813 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :It's so convenient how no matter what channel I'm in, there are always suomen puhujia close at hand. :P < 1265566987 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :Yeah, Finland's population is actually 5.5 billion, not million; we just like to stay undercover that way < 1265568038 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :back < 1265568054 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : AnMaster: Well, it's a GNU thing; those aren't known for sensible man pages. The actual official documentation is pretty clear on PDF files. <-- well yes, that was how I found out about it < 1265568063 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Sgeo: Ah yes, Luke Plant. < 1265568081 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : AnMaster: And in general you have to say something like "-dTextAlphaBits=4 -dGraphicsAlphaBits=4" to get subsample antialiasing. (Can't say offhand why it'd happen by default if you pass in a PDF file.) <-- "not mentioned in man page" ;) < 1265568084 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :A creationist Christian. < 1265568093 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Not someone to rely on to be anything other than a blithering moron. < 1265568117 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :I've read some of the drivel on his blog occasionally, and it's all that. < 1265568134 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :I've found myself demotivated when writing C# >.> < 1265568143 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :So don't use shitty languages < 1265568261 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :C# is good at that. < 1265568274 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :It's not all that unique. < 1265568287 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :It's just an imperative language with objects. < 1265568359 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :And we've got plenty of those < 1265568374 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Too many. < 1265568379 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :0 < 1265568380 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :woops < 1265568397 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :sorry guys I didn't mean to!!!! < 1265568401 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :In this case, alise is probably right < 1265568402 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :The Expression Problem may have solutions handling both rows and columns, but adding columns is far more valuable than rows. < 1265568409 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :So to hell with OOP. < 1265568416 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :oh still on the expression problem?? < 1265568427 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :alise you know you can do BOTH in haskell? < 1265568429 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :errr < 1265568431 0 :jcp!unknown@unknown.invalid QUIT :Read error: Connection reset by peer < 1265568435 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :EITHER* < 1265568449 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :like, data Exp = Num Int | Add Exp Exp | ..., then write functions on it < 1265568463 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Okay: I WILL finish this dependent typer. < 1265568472 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :At least, before tomorrow; then I won't be able to. < 1265568474 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :or data Exp = Exp { eval :: Exp -> Int ; show :: Exp -> String, ... }, then write constructors for it < 1265568480 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :hmm < 1265568496 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :I got my record syntax wrong but just delete the "Exp ->"'s < 1265568503 0 :jcp!~jw@bzflag/contributor/javawizard2539 JOIN :#esoteric < 1265568537 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :alise won't be happy until he can make functional circuitry < 1265568647 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :alise I wrote a dependent type checkr once but the type system was inconsistent < 1265568663 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :well not inconsisent < 1265568671 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :but it didn't have subject reduction < 1265568680 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :anyway I realized that eventually, so that was fine < 1265568731 0 :alise!unknown@unknown.invalid QUIT :Ping timeout: 248 seconds < 1265569033 0 :alise!~5b697d23@gateway/web/freenode/x-azeezpkhqoxdzgwy JOIN :#esoteric < 1265569038 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :[18:56] * alise realises that infer x == specifiedType won't work if he has dependent types < 1265569048 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :ACTION realises she has no idea how else to do this < 1265569058 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :i'm wayyy out of my league :D < 1265569068 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :at least you got the pronoun right < 1265569093 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :10:48:57 alise won't be happy until he can make functional circuitry < 1265569099 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :no, the reduceron is fine :P < 1265569108 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :circuitry is functional < 1265569109 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :event based < 1265569113 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :this sparks -> other thing < 1265569153 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :check' vs (L t _) = return t < 1265569154 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :it'll do for now < 1265569161 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :after all, you wouldn't lie to me, would you? < 1265569163 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :Hm < 1265569171 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :Why were my Chrome extensions all uninstalled? < 1265569178 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Because you touch yourself at night. < 1265569323 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Oh, dear. < 1265569332 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Inferring variables will be hard, as in I haven't accounted for this. < 1265569343 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :don't infer anything :P < 1265569345 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :it's too difficult < 1265569355 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Well, not infer. < 1265569359 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :But I have to keep track of variable's types. < 1265569372 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :yes that's the type context < 1265569379 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Yes, and I'm not doing that, you see. < 1265569384 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Wait, yes I am. < 1265569387 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Uh. < 1265569388 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Sort of. < 1265569406 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric : (A aT rT) <- check' vs f < 1265569411 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :okay, so I need to do it in the lambda-checking clause < 1265569440 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :check' vs (N x) = Nothing < 1265569442 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :shouldn't matter for now! < 1265569461 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :*Main> check SetSet < 1265569462 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Just * < 1265569463 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :^_^ < 1265569468 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :*_* < 1265569528 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :*Main> check idL Just (*) -> (t) -> dt *Main> check (idL :. idL) Nothing < 1265569530 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Spot why I can't do that < 1265569637 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :fff < 1265569639 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :so many interdependencies < 1265569673 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :(idL :. (* --> *)) :. idL ? < 1265569692 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :no, idL :. typeofidL :. idL < 1265569695 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :what's dt? < 1265569709 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :de bruijn; t = 0, dt = 1, ddt = 2, etc < 1265569710 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :t = top < 1265569710 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :oh hehe you are right < 1265569712 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :d = dip < 1265569724 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :the value of the argument of that type is pushed for the RHS of -> < 1265569738 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :which incidentally means that evaluating your whole program in the typechecker is trivial :) < 1265569750 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :there's no IO so it doesn't matter < 1265569953 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :10:47:29 like, data Exp = Num Int | Add Exp Exp | ..., then write functions on it < 1265569954 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :10:47:54 or data Exp = Exp { eval :: Exp -> Int ; show :: Exp -> String, ... }, then write constructors for it < 1265569960 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :this + typeclasses might allow for both? < 1265570084 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :alise I don't want to say no but I dont see it < 1265570097 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :yeah i was just thinking that typeclasses solve... most problems < 1265570102 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :anyway your dependent solution doesn't require dependentness < 1265570107 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :type families = type-level functions, i bet you could do it with those < 1265570124 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :I am sure that my way make essential use of full spectrum dependent types < 1265570133 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :what was Snoc again? < 1265570147 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :Snoc was just an explanative device < 1265570166 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :you don't have to implement it that way, infact I think I realized a slightly better form < 1265570186 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :but it's all the same idea < 1265570204 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :what was the better form? < 1265570207 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :also, I just meant the definition :P < 1265570228 0 :tombom__!tombom@82.14.59.239 JOIN :#esoteric < 1265570291 0 :Pthing!unknown@unknown.invalid QUIT :Remote host closed the connection < 1265570298 0 :tombom_!unknown@unknown.invalid QUIT :Ping timeout: 248 seconds < 1265570391 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :MissPiggy: you know how the f gets the rest of the list? < 1265570397 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :f?? < 1265570397 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :what information does it need to make the ROW/COL decision? < 1265570401 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :the number of rows and the number of cols, right? < 1265570403 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :f in Snoc f < 1265570425 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :plus the types of the cols < 1265570430 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :and the rows < 1265570432 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :well if you just have a matrix n m, then functions row : matrix n m -> vector n -> matrix n (S m) < 1265570442 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :and col : matrix n m -> vector m -> matrix (S n) m < 1265570450 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :I wonder if I got my n/m row/col right way around < 1265570459 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :I've forgotten the definition of snoc :( < 1265570462 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :meh < 1265570467 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :yeah you can forget about snow < 1265570479 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Snow! < 1265570480 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :snoc* < 1265570551 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :PIGGEHHHHH < 1265570611 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :"matrix : nat -> nat -> *" is a simplification though.. the real thing would be a bit more involved < 1265570625 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :so what would a table tarpit be, I wonder < 1265570627 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :hmm < 1265570630 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :do nested tables make sense? < 1265570667 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :if so, then obviously the whole program is one table, and there are columns that operate on the rows, which are tables; and the only atomic value is the empty table < 1265570730 0 :adam_d!~Adam@cpc2-acto6-0-0-cust48.brnt.cable.ntl.com JOIN :#esoteric < 1265570800 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :well < 1265570808 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :nested table doesn't really mean anything < 1265570816 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :the only reason you'd need to think about multiple tables is: < 1265570823 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :either you have more than a 2D programming problems < 1265570824 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :MissPiggy: how been < 1265570840 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :or you have some kind of mututally recursive system of 2D programming problems < 1265570844 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :(or both!) < 1265570858 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :mutualy recursive infinite dimensional progarmming sounds hard thuogh < 1265570869 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :hey augur I was listening to the space flight remix < 1265570880 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :WOSSAT :O < 1265570880 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :live mission was on soma < 1265570891 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :hows it going with ? < 1265570893 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :you < 1265570895 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :oooh right! the launch this morning < 1265570907 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :is good with me < 1265570957 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric ::) < 1265570982 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :augur me and ehird solved the exeprssion problem using deptypes < 1265570988 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :once and forall! < 1265570993 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :been reading a bunch of some interesting grammar formalisms. improved the wikipages http://en.wikipedia.org/wiki/Indexed_grammar http://en.wikipedia.org/wiki/Combinatory_categorial_grammar http://en.wikipedia.org/wiki/Tree-adjoining_grammar and http://en.wikipedia.org/wiki/Weak_equivalence < 1265571005 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :AND i created the page http://en.wikipedia.org/wiki/Head_grammar < 1265571011 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :augur, I still need to get back to CCGs... < 1265571026 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :oh you edited them < 1265571036 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :whats the expression problem? < 1265571038 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :cool I will reread < 1265571065 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :augur you've done really good with these!! < 1265571085 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :well for all but the CCG one all i did was add the equivalency note, and some examples for LIG < 1265571090 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :the head grammar page is all new tho < 1265571193 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :Wait, there's a new version of Haskell? < 1265571241 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :Sgeo: what < 1265571247 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :Haskell 2010 < 1265571263 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :oh, yeah. < 1265571268 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :new spec < 1265571317 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :MissPiggy: link augur to my pastie about the expression problem < 1265571318 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :OR I WILL < 1265571331 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :D: < 1265571334 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :http://pastie.org/812459.txt?key=cadkhg4ho0qiceepz1a7w < 1265571359 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :lol < 1265571476 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Yeah; GHC doesn't implement it yet, though. < 1265571487 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :(won't be too long -- most of what's not done is syntax tweaks) < 1265571547 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :alise: interesting problem! < 1265571566 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :yeah MissPiggy came up with a nice solution < 1265571597 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :my solution would be, do like haskell does, but allow discontinuous definitions of function alternatives. < 1265571615 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :preprocess it to all be continuous, if desired. < 1265571668 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :She does that. < 1265571684 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :augur: Anyway, that still doesn't let you add constructors to a data type. < 1265571695 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :true < 1265571727 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :but your link doesnt specify that as necessary, does it? < 1265571736 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Yes, it does. < 1265571738 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :That's what adding a row is. < 1265571748 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :oh, right, because for haskell you'd have to have them all the same datatype < 1265571752 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Anyway, here's the syntax I came up with: http://pastie.org/812720.txt?key=p9mayakdi0z2wka3vzwtq It would be implemented at compile-time; MissPiggy's solution is runtime. < 1265571753 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :union types! < 1265571764 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :The whole point is that they're the same type < 1265571779 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :type classes! < 1265572084 0 :znerc!~user@dslb-094-222-127-241.pools.arcor-ip.net JOIN :#esoteric < 1265572158 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :btw, guys, if anyone wants papers from JSTOR or ACM let me know < 1265572369 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :im also off to target. BYE < 1265572535 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :bye < 1265572963 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :asd < 1265573011 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :MissPiggy: you'd think that typechecking and evaluating the dependently-typed lambda calculus would be really simple... < 1265573025 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :it seems like one of those "inherent" concepts that should be really simple to express < 1265573030 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :no I wouldn't < 1265573034 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :well < 1265573034 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :i would < 1265573054 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :there is a simple (dependently typed) lambda calculus, and that's quite easy to implement < 1265573060 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :but it's not quite good enough < 1265573075 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :howso < 1265573141 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :well you know how types are equal if they are definitionally equal < 1265573155 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :like: Vector (1 + 1) = Vector 2 < 1265573173 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :one annoying thing is if you don't have eta conversion, then stuff like < 1265573189 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :exists Nat (\x -> P x) is not convertible with exists Nat P < 1265573194 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1265573197 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :x :: Set(x) < 1265573198 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :f x :: Set(f) = (y::T) -> S, Set(x) = T, y = x, S < 1265573198 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :now that's just a minor annoyance, < 1265573202 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :\(x::T) -> ... :: S :: (x::T) -> S < 1265573203 0 :gm|lap!~gm@unaffiliated/greasemonkey JOIN :#esoteric < 1265573204 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :(x::T) -> T :: * < 1265573207 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :* :: * < 1265573213 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :^ the dependent lambda calculus i'm trying to implement < 1265573247 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :but there's more to be said about this which is sort of detailed < 1265573264 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :I assume < 1265573265 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :(x::T) -> T :: * < 1265573267 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :actually means, < 1265573276 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :it's syntax :: type < 1265573278 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :T :: *, T' :: * |- (x::T) -> T' :: * < 1265573302 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :well that's nto quite right still < 1265573305 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :but it's closer :P < 1265573318 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :(x::T) -> S :: Set(T) = *, Set(x) = T, Set(S) = *, * < 1265573371 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :Gamma |- x :: T <=> Gamma(x) = T < 1265573411 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :yeh i was just writing it quickly in the form it came into my head < 1265573473 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :data Syntax = Var Integer | App Syntax Syntax | Lambda Syntax Syntax | Arrow Syntax Syntax | Set < 1265573483 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :the semantics is just (Semantics -> Semantics), right? < 1265573489 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :or does it have Var Integer too < 1265573576 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :hmm < 1265573580 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :can my thingy type \x->x x? < 1265573585 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :i don't think so < 1265573587 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :there's no a = a -> b < 1265573611 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :Semantics = Semantics -> Semantics is a good first approximation < 1265573622 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :but to implement quote it needs to be fudged around a bit, nothing major < 1265573803 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :cons ∈ (α ∈ ★) → (β ∈ ★) → (γ ∈ ★) → (α → β → γ) → γ < 1265573837 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :cons ∷ (α∷★) → (β∷★) → (γ∷★) → (α → β → γ) → γ < 1265573841 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Still think the latter looks nicer < 1265573855 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :cons : (α:★) → (β:★) → (γ:★) → (α → β → γ) → γ < 1265573857 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :looks good too, though < 1265573860 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :I think the last is best < 1265573865 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :brb < 1265574002 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :lol those stars look awful in irssi < 1265574181 0 :oklopol!unknown@unknown.invalid QUIT :Ping timeout: 264 seconds < 1265574729 0 :MigoMipo!~MigoMipo@84-217-0-36.tn.glocalnet.net JOIN :#esoteric < 1265574971 0 :gm|lap!unknown@unknown.invalid PRIVMSG #esoteric :eww. eww. eww. what kind of language is that < 1265574983 0 :gm|lap!unknown@unknown.invalid PRIVMSG #esoteric :GREEKS DID NOT MAKE THE MODERN COMPUTER < 1265575024 0 :MissPiggy!unknown@unknown.invalid QUIT :Quit: Lost terminal < 1265575267 0 :oerjan!~oerjan@hagbart.nvg.ntnu.no JOIN :#esoteric < 1265575543 0 :oklopol!~oklopol@a91-153-117-63.elisa-laajakaista.fi JOIN :#esoteric < 1265575556 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :it's oklo the pol! < 1265575581 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :almost no relation to prozac the bear < 1265575692 0 :MissPiggy!~quantum@unaffiliated/fax JOIN :#esoteric < 1265576109 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :gm|lap: functional, bitch < 1265576134 0 :gm|lap!unknown@unknown.invalid PRIVMSG #esoteric :not very functional when you don't have loonycode < 1265576144 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :also, some mathematicians definitely were involved. < 1265576149 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :gm|lap: the 90s called < 1265576156 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :they want you to stop using windows < 1265576202 0 :gm|lap!unknown@unknown.invalid PRIVMSG #esoteric :it really depends on the situation as to whether using unicode is a good idea or not. < 1265576231 0 :gm|lap!unknown@unknown.invalid PRIVMSG #esoteric :here... uh, you'd have to whip up some special functions to deal with unicode chars like they were bytes or something < 1265576245 0 :gm|lap!unknown@unknown.invalid PRIVMSG #esoteric :as in, an fread of some sort. < 1265576246 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :gm|lap: Ah, you still think a string is a char *. < 1265576253 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :You still think C defines the world. < 1265576257 0 :gm|lap!unknown@unknown.invalid PRIVMSG #esoteric :here you'd use an int * < 1265576263 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :You still think stone-age computing rules over mathematics. < 1265576271 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :if C was good enough for the romans... < 1265576276 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :In short, you're the computer-science equivalent of a dinosaur. < 1265576292 0 :gm|lap!unknown@unknown.invalid PRIVMSG #esoteric :hey, at least i know how to code stuff which runs fast < 1265576300 0 :gm|lap!unknown@unknown.invalid PRIVMSG #esoteric :i usually don't, but nevertheless i can. < 1265576305 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Except considering how fast computing changes, you're especially Ludditish. < 1265576309 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Surely you've noticed the change? < 1265576311 0 :gm|lap!unknown@unknown.invalid PRIVMSG #esoteric :ACTION opens up a can of ASM and spills it on your shirt < 1265576319 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :as in wildly successful, and survived for > 200 million years < 1265576334 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Ha! You think hand-written asm written by _anyone_ other than a genius can beat modern C compilers? < 1265576337 0 :gm|lap!unknown@unknown.invalid PRIVMSG #esoteric :ASM will always be "potentially faster", by the way. < 1265576341 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :I thought you'd at least stop at C, a vaguely defensible position. < 1265576368 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :And apparently you think all the world's an imperative R/CISC architecture of the usual sort. Pay no attention to the Lisp Machines and Reducerons behind the curtain. < 1265576384 0 :gm|lap!unknown@unknown.invalid PRIVMSG #esoteric :i haven't seen ASM from many "modern C compilers" but usually they're bashing at memory < 1265576388 0 :gm|lap!unknown@unknown.invalid PRIVMSG #esoteric :well < 1265576392 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :This may in fact end up being the most tedious two-way about computing I've ever seen. < 1265576394 0 :gm|lap!unknown@unknown.invalid PRIVMSG #esoteric :from the code I've seen < 1265576398 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :gm|lap: you are clearly ignorant of modern optimisation techniques < 1265576416 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Good luck manually performing intense intraprocedural optimisation < 1265576454 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :what!!!!!!!!!!!!!!! < 1265576462 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :I might be more polite if I didn't know there were so many like you. < 1265576466 0 :gm|lap!unknown@unknown.invalid PRIVMSG #esoteric :technically i'm someone who's kinda pissed at the fact that everyone's using 3D hardware in their demos, not because it's 3D hardware but because it's all closed and requires the use of specific libraries and stuff < 1265576482 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Did I just miss some conversation or was that a non-sequitur? < 1265576490 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :MissPiggy: All your base is cool again? < 1265576494 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :EXCELLENT < 1265576497 0 :gm|lap!unknown@unknown.invalid PRIVMSG #esoteric :well, it may help you understand my thinking < 1265576510 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :No, not really. < 1265576517 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :I like open things too. < 1265576538 0 :gm|lap!unknown@unknown.invalid PRIVMSG #esoteric :a 4KB demo using libraries to run itself is technically cheating < 1265576543 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: should I read Triangle and Robert? < 1265576555 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :but of course! < 1265576559 0 :gm|lap!unknown@unknown.invalid PRIVMSG #esoteric :although if you want to be pedantic, i could whip up some code to turn 80x25 into mode 13 < 1265576565 0 :gm|lap!unknown@unknown.invalid PRIVMSG #esoteric :w/o INT 0x10 < 1265576573 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: but. so many comics < 1265576594 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :sure, but you're planning to live forever, aren't you < 1265576630 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :i'd like to, that doesn't mean i think it's going to happen :P < 1265576647 0 :gm|lap!unknown@unknown.invalid PRIVMSG #esoteric :you seem to be "oh yeah well this is futuristic so we'll just use it because it's the future". well, you wonder why people refer to "the good old days". < 1265576648 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :my base < 1265576673 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :gm|lap: HA! You think functional programming, which is literally identical to mathematics and logic, is some new-fangled thing? < 1265576683 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :It's imperative programming that was the unfortunate blip in the history of calculation. < 1265576715 0 :gm|lap!unknown@unknown.invalid PRIVMSG #esoteric :i know that functional programming isn't insanely recent at all < 1265576732 0 :gm|lap!unknown@unknown.invalid PRIVMSG #esoteric :UTF-8 is definitely more recent than functional programming, though < 1265576739 0 :gm|lap!unknown@unknown.invalid PRIVMSG #esoteric :heck, you can even do OOP in ASM < 1265576748 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :But the symbols I am using are ancient. < 1265576750 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :can functional programming be liberated from the von noymann parradime? < 1265576756 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Ugh, you know what, this really is the most tedious conversation I've had. < 1265576775 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :imperatives aren't new-fangled either, see kant < 1265576780 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Especially as I'm returning to hell tomorrow, I don't feel the need to continue to perpetrate irritated boredom on myself. < 1265576784 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: Har. < 1265576823 0 :gm|lap!unknown@unknown.invalid PRIVMSG #esoteric :i know that the greek alphabet is ancient, but the current usual implementation requires you to either work on unicode chars or use a weird encoding < 1265576853 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :[21:07] == IGNORE Unknown command < 1265576856 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Damn you, webchat.freenode.net. < 1265576926 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :So, I guess the answer to "will this ordeal soften me or harden me" is the latter, at least while it's still going on. < 1265576934 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :I'm being a wonderful asshole. < 1265576945 0 :gm|lap!unknown@unknown.invalid PRIVMSG #esoteric :yes, and my ignore list is wonderfully persistent. < 1265576962 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :who is gm?? < 1265576965 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :are you new < 1265576967 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :GreaseMonkey. < 1265576967 0 :gm|lap!unknown@unknown.invalid PRIVMSG #esoteric :ACTION == Greasemonkey < 1265576969 0 :gm|lap!unknown@unknown.invalid PRIVMSG #esoteric :erm < 1265576969 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :ohh < 1265576971 0 :gm|lap!unknown@unknown.invalid PRIVMSG #esoteric :GreaseMonkey < 1265576972 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :He's been irritating for a few years now. < 1265576983 0 :gm|lap!unknown@unknown.invalid PRIVMSG #esoteric :alise: i don't remember you < 1265576987 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :it does feel like years, doesn't it? < 1265576990 0 :gm|lap!unknown@unknown.invalid PRIVMSG #esoteric :except from, ooh, a few days ago < 1265576991 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :always greasing up the place < 1265576991 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :lol < 1265576999 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :gm|lap: i've been here a long while. < 1265577018 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :MissPiggy: it has been years; 2006, according to the wiki < 1265577032 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: why did you fuck with it! < 1265577054 0 :gm|lap!unknown@unknown.invalid PRIVMSG #esoteric :what other names would you have used? < 1265577071 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :alise: wait, what? < 1265577076 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Johnathan, Omaha, Harpsichord, Robotic Overloard #3.9, Bob. < 1265577133 0 :gm|lap!unknown@unknown.invalid PRIVMSG #esoteric :... don't really ring a bell < 1265577166 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :alise: see history < 1265577171 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Also ᚠᚡᚢᚣᚤᚥᚦᚧᚨ. < 1265577310 0 :gm|lap!unknown@unknown.invalid PRIVMSG #esoteric :when i have a piece of paper, i deal with numbers. < 1265577317 0 :gm|lap!unknown@unknown.invalid PRIVMSG #esoteric :when i have a piece of code, i deal with bytes. < 1265577338 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :I thought you were using your wonderful ignore list. < 1265577350 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Please do, I'm uninterested in your drivel and if it would stop you talking to me that would be great. < 1265577355 0 :gm|lap!unknown@unknown.invalid PRIVMSG #esoteric :yes, even though i code in languages which deal with all sorts of numbers, with and without decimal points < 1265577368 0 :gm|lap!unknown@unknown.invalid PRIVMSG #esoteric :hmm, i actually have some power here... < 1265577443 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :In a world... where one man... must face his demons... < 1265577445 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :For he has... < 1265577450 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :THE POWER TO ANNOY < 1265577456 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :In cinemas feb 14 < 1265577511 0 :gm|lap!unknown@unknown.invalid PRIVMSG #esoteric :on the other hand you have the power to be condescending < 1265577521 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Wait, you deal with *bytes* in your programs? < 1265577526 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :I deal with *values*. < 1265577532 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Maybe if my life was any better and you were any less idiotic I would not be trolling you. :) < 1265577532 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :I deal with *stars* < 1265577546 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Oh, and morphisms in the category Hask. < 1265577560 0 :gm|lap!unknown@unknown.invalid PRIVMSG #esoteric :i do actually deal with values, but when it comes to files, i have to deal with bytes < 1265577573 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Files! Another wonderfully retarded blip in history. < 1265577588 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :what's wrong with files? < 1265577595 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :I want to try plan 9 < 1265577602 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :a bunch; maybe i'll explain sometime when I'm not having fun with an idiot < 1265577603 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :MissPiggy: Made perfect sense when C was unusually high-level. < 1265577607 0 :gm|lap!unknown@unknown.invalid PRIVMSG #esoteric :i tried it, it's easy to break the GUI < 1265577611 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :That's been a few decades now. < 1265577613 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :MissPiggy: plan 9 is the closest to making files bearable < 1265577621 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :it basically makes them universal identifiers in tuple-space < 1265577633 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Review of Plan 9 < 1265577636 0 :gm|lap!unknown@unknown.invalid PRIVMSG #esoteric :don't you mean plan 9 is the closes to making all bearables files? < 1265577636 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :It's easy to break the GUI. < 1265577636 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :- < 1265577641 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :LOL < 1265577646 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Hey, now that was actually funny. < 1265577692 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :The thing is, files have no structure other than being a series of bytes. Implementing data structures in them is like manually implementing C semantics with an array and indices < 1265577701 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :That is to say, tedious and pointless. < 1265577717 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :oh okay < 1265577726 0 :gm|lap!unknown@unknown.invalid PRIVMSG #esoteric :there's quite a difference between english and japanese, so to speak. < 1265577727 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :so like < 1265577747 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :you want a "filesystem" that's actually storing data structures instead of just files in a tree < 1265577763 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :so it would be like a tree of trees instead of a tree of files? < 1265577765 0 :gm|lap!unknown@unknown.invalid PRIVMSG #esoteric :something like that < 1265577766 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :even if files had no negatives I would oppose them for the simple fact that an orthogonally-persisted ecosystem of values is simply superior < 1265577771 0 :gm|lap!unknown@unknown.invalid PRIVMSG #esoteric :well... < 1265577777 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :I want a "filesystem" to just mean data structures that are persistent. < 1265577780 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :and allows you hierarchical, non-hierarchical, tagged, searched and everything organisation simply through creating data structures < 1265577799 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :I'd love for my IO to consist of "persist(foo)". < 1265577799 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: Persistent data structures? Why, what redundancy! < 1265577807 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :it sounds very difficult to organize < 1265577812 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :alise: what happened to amend? < 1265577821 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :MissPiggy: If you want a tree structure, like a symlinkless filesystem, just create it. < 1265577822 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :No harder. < 1265577829 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :If you want symlinks, use references. < 1265577835 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :If you want a searchable pool, do it. < 1265577838 0 :gm|lap!unknown@unknown.invalid PRIVMSG #esoteric :alise: it's not going to make itself < 1265577851 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :gm|lap: That's why my main field of study is focused on making it. < 1265577856 0 :gm|lap!unknown@unknown.invalid PRIVMSG #esoteric :right. < 1265577876 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :MissPiggy: Are you familiar with Smalltalk? < 1265577886 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :An apology for the rather harsh bluntness, by the way; I'm grumpy right now. < 1265577984 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :I tend to confuse ignorance with wilful stupidity because I forget that not everyone really knows how possible, easy and flexible the superior system is, or even knows of the superior system. < 1265578033 0 :gm|lap!unknown@unknown.invalid PRIVMSG #esoteric :the question is, what am i confusing arrogance with? < 1265578046 0 :gm|lap!unknown@unknown.invalid PRIVMSG #esoteric :ugh < 1265578077 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Someone trying to distract himself. < 1265578080 0 :tombom_!tombom@wikipedia/Tombomp JOIN :#esoteric < 1265578174 0 :MissPiggy!unknown@unknown.invalid QUIT :Remote host closed the connection < 1265578245 0 :alise!unknown@unknown.invalid QUIT :Quit: Page closed < 1265578265 0 :gm|lap!unknown@unknown.invalid PRIVMSG #esoteric :hmm... i think ruby 1.9.1 is comparable in speed with python 2.6.4 < 1265578273 0 :tombom__!unknown@unknown.invalid QUIT :Ping timeout: 258 seconds < 1265578274 0 :gm|lap!unknown@unknown.invalid PRIVMSG #esoteric :wait... silly me < 1265578281 0 :gm|lap!unknown@unknown.invalid PRIVMSG #esoteric :roughly half-speed ._> < 1265578287 0 :gm|lap!unknown@unknown.invalid PRIVMSG #esoteric :didn't notice the mixing rate < 1265578307 0 :gm|lap!unknown@unknown.invalid PRIVMSG #esoteric :1.9.0 is pretty slow though < 1265578530 0 :MissPiggy!~quantum@unaffiliated/fax JOIN :#esoteric < 1265578838 0 :gm|lap!unknown@unknown.invalid PRIVMSG #esoteric :there's a package in ubuntu called "sl" < 1265578852 0 :gm|lap!unknown@unknown.invalid PRIVMSG #esoteric :if you type sl accidentally, it suggests that you install it < 1265578863 0 :gm|lap!unknown@unknown.invalid PRIVMSG #esoteric :apt-cache search sl | grep ^sl gives us this: < 1265578864 0 :gm|lap!unknown@unknown.invalid PRIVMSG #esoteric :sl - Correct you if you type `sl' by mistake < 1265578882 0 :gm|lap!unknown@unknown.invalid PRIVMSG #esoteric :25.3kB apparently < 1265578886 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :*facepalm* < 1265578910 0 :gm|lap!unknown@unknown.invalid PRIVMSG #esoteric :dude you should totally install it, it's awesome < 1265578920 0 :gm|lap!unknown@unknown.invalid PRIVMSG #esoteric :it makes an ascii train go across the screen < 1265579051 0 :alise!~alise@91.105.125.35 JOIN :#esoteric < 1265579064 0 :adam_d!unknown@unknown.invalid QUIT :Ping timeout: 256 seconds < 1265579162 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Testing, testing, one two three. < 1265579194 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :sl is just annoying IMO. < 1265579197 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :I never make that typo anyway. < 1265579220 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :The fact that there's no way to kill it without opening a new terminal makes it more of a life-ruiner rather than a stick. < 1265579238 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Maybe there should be a carrot, getting ls right speeds up your system for a few minutes or something. < 1265579289 0 :gm|lap!unknown@unknown.invalid PRIVMSG #esoteric :apparently sl is short for "steam locomotive" < 1265579323 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Yes; it's a rather terrible pun. < 1265579339 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Damn, my XChat looks civilised. < 1265579472 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :http://imgur.com/CQv7v.png < 1265579480 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :I'd show the window borders, but apparently gnome-screenshot and scrot fail at compiz. < 1265579533 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :DejaVu Serif is actually a pretty nice serif. < 1265579795 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :well dejavu is nice but we've seen it all before < 1265579843 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :Tabs?? < 1265579851 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :Erm, button-tabs? < 1265579905 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Beats a huge tree with only two lines. < 1265579969 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :URW Palladio L is also a nice font. < 1265580259 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :So, value-level (∀a.b) is (λa.b). What's value-level (∃a.b)? < 1265580277 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :a*b < 1265580287 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :(a,b) < 1265580289 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :anything like that < 1265580310 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Really? < 1265580321 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Hmm. < 1265580323 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :I guess you are right. < 1265580354 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :MissPiggy: What about the literal (∃a.a)? < 1265580379 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :what about it?? < 1265580395 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :What does that translate to as a value? < 1265580400 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :If you replace exists with forall, that's id in value-land. < 1265580427 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :(a,a) sholud work, but also (a,a') < 1265580442 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :it doesn't have to be the same a < 1265580462 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Right, but those would be specific as. < 1265580491 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Perhaps my question simply makes no sense :P < 1265580704 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :well i understand that ghc implements exists a. TypeClass a => Whatever a as a tuple containing the typeclass instance and the value < 1265580748 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :or something close to that < 1265580778 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :but if there is no typeclass, only the value is necessary < 1265580794 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Actually, (exists a. a) is 0 bits... < 1265580808 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :really? < 1265580808 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :You don't need to store the value because the only information you can extract from it is that it exists. < 1265580826 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :um no < 1265580830 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :No? < 1265580830 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :seq, remember < 1265580834 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Oh. < 1265580843 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Well, seq and unsafePerformIO are not "really Haskell". :) < 1265580850 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :"Really Haskell" is defined as the subset of Haskell that makes sense. < 1265580851 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :seq is official < 1265580860 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :The committee is wrong. < 1265580890 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :alise: unsafePerformIO, FWIW, only exists as part of the FFI. < 1265580945 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :i think the new 2010 revision modifies that though < 1265580947 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :http://bennyhillifier.com/?id=mwDKMiAfxFE < 1265580960 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Top of the two bots in the Google Tron AI competition, fighting. < 1265580961 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :Where can I see the changes in 2010? < 1265580962 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :To Benny Hill. < 1265580977 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :http://hackage.haskell.org/trac/haskell-prime/ < 1265581017 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :*Two of the top < 1265581032 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :The link on that page seems broken < 1265581034 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :data Exists (T : *) (P : T -> *) where < 1265581043 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric : Witness : (t : T) -> P t -> Exists T P < 1265581053 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :MissPiggy: Ah, dependent typists. Always writing everything in the language. < 1265581066 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :dependent typists :D < 1265581068 0 :tombom_!unknown@unknown.invalid QUIT :Quit: Leaving < 1265581091 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :The Cult of Dependent Typists & their Honourable Languages Thereof, est. 1980 < 1265581099 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :(I don't really know how old dependent types are.) < 1265581100 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric ::P < 1265581108 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :I wonder if dependent types have a nicer solution to the typeclass problem than typeclasses. < 1265581144 0 :MigoMipo!unknown@unknown.invalid QUIT :Ping timeout: 240 seconds < 1265581150 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :doesn't Agda supposedly have both? < 1265581169 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :I don't think there's any issue with having both. < 1265581173 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :I just don't really like typeclasses all that much. < 1265581189 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :agda doesn't have typeclasses < 1265581190 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :I know that Ur does it with implicit module parameters matching a certain signature. < 1265581195 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :That's a nice solution. < 1265581203 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :it's sort of weird because I'm not sure if you can actually add typeclasses < 1265581225 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :I mean you can pass them explicitly but that probably doesn't count < 1265581226 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :oh right didn't oleg do something proving the equivalence of modules and type classes. < 1265581231 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :_+_ : {a:Set} -> {Num a} -> a -> a -> a < 1265581244 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Num : Set -> ModuleSignatureThingy < 1265581251 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Or something like that. < 1265581253 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :ACTION has been playing with Ur today < 1265581258 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :(functorial modules, presumably) < 1265581259 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :And the implementation: < 1265581285 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :_+_ {_} {n} x y = n._+_ x y < 1265581287 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Or something. < 1265581289 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :You get the idea. < 1265581309 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :alise, working link please? < 1265581317 0 :kar8nga!unknown@unknown.invalid QUIT :Remote host closed the connection < 1265581317 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :the problem with that is you still need the compiler to choose (ARBITRARITLY!!) a Num instance for a < 1265581319 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :To what? http://bennyhillifier.com/?id=mwDKMiAfxFE? < 1265581335 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :MissPiggy: same with values that belong to multiple sets in foralls! < 1265581338 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :It has to pick one! < 1265581346 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Sgeo: http://bennyhillifier.com/?id=mwDKMiAfxFE < 1265581349 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :the final ? breaks it < 1265581353 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric : yeah < 1265581355 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :I do not consider "ou can see the list of [query:?status=new&status=assigned&status=reopened&state=accepted&milestone=Haskell+2010&order=priority changes in Haskell 2010]." to be helpful < 1265581358 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :it's scary stuff < 1265581369 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Sgeo: oh. < 1265581372 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :just google haskell prime or w/e < 1265581388 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :MissPiggy: Well, it picks the most specific type it can infer, right? < 1265581394 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Most specific set. < 1265581394 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Of a value. < 1265581396 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :For a forall. < 1265581413 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :So all we need to define is how a Num-implementing module can be "more specific" than another and we're set. < 1265581428 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Perhaps more functions explicitly implemented. < 1265581438 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Or more concrete types. < 1265581446 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :If there are two equally-specific ones, you must manually specify one. < 1265581518 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :basically < 1265581521 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ACTION finds a picture of oleg. i never thought of him as that old! < 1265581524 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :the whole thing about typeclasses is SYNTAx < 1265581534 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: link < 1265581536 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :and you can't add them without hacking the compiler < 1265581537 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :I imagine him as a 30-something guy < 1265581541 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :just being so fucking cool < 1265581549 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :no employer, he just has money, buys stuff, you know < 1265581550 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :and what's so good about them anyway, modules are probably better < 1265581553 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :but mostly just sits around, publishing < 1265581570 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :oh wait, that's another guy with the same! < 1265581570 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :MissPiggy: cayenne has no modules because its products (records) are powerful enough to serve as it < 1265581572 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :as one < 1265581574 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: :) < 1265581577 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: I think he's a private fello < 1265581580 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :s/$/w/ < 1265581587 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :("Oleg Kiselyov, director of Influenza Research Institute") < 1265581594 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :MissPiggy: so if modules are better than typeclasses < 1265581600 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :maybe we just need cayenne records and that's it! < 1265581622 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :hehe < 1265581632 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :so how you implement records? :) < 1265581642 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :ohh < 1265581642 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :ACTION is now an Early Edition addict < 1265581651 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :I like that idea < 1265581655 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :http://www.cs.chalmers.se/~augustss/cayenne/ < 1265581656 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :ask them < 1265581660 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :hey, it's augustss < 1265581665 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :didn't know he did cayenne!! < 1265581669 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :Oleg works for the navy < 1265581680 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :doesn't he ? some kind of waterry thing < 1265581708 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :http://www.cs.chalmers.se/~augustss/cayenne/examples.html < 1265581712 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :cayenne's printf implementation is slick < 1265581714 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :heck wikipedia? "Oleg Kiselyov (born 11 January 1967) is a Russian handball player." < 1265581721 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :HAND EGG < 1265581762 0 :olsner!unknown@unknown.invalid PRIVMSG #esoteric :egghand? < 1265581840 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :MissPiggy: I think cayenne records are basically haskell records < 1265581842 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :except automatically typed < 1265581857 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :like the type of {foo=3,bar=\a->a} is {foo::Int,bar::a->a} or whatever < 1265581870 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :also I realised something < 1265581876 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :my dependent LC doesn't have any way to extract an arrow < 1265581879 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :(the only composite type) < 1265581934 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :think I should add it? Maybe it could be a built-in function < 1265581956 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :destarr : * -> c -> (a -> b -> c) -> c < 1265581971 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :what does extract an arrow mean though? < 1265581982 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :(a -> b) => (a,b) < 1265582007 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :I could add pattern matching, but that'd be the only thing it'd be useful for < 1265582093 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :hm this _might_ be him, http://www.flickr.com/photos/eelcovisser/283343950/ (it is in a computer scientists set) < 1265582121 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Personal home page: Paul Kelly < 1265582121 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Paul H J Kelly. Professor of Software Technology, Group Leader, Software Performance Optimisation Department of Computing (map); Imperial College London ... < 1265582122 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :same guy? < 1265582130 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :oleg is the one in blue < 1265582133 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :btw < 1265582174 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ok so you're sure? it was the only plausible picture on the first page of google hits for "oleg kiselyov" < 1265582179 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :it's his only t-shirt http://video.google.com/videoplay?docid=-7990603720514207956&ei=OkBvS7SkMovL-AbZwtHjBg&q=oleg+# :) < 1265582187 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :(picture search) < 1265582253 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :i guess that crushes my theory he is trying to keep his real appearance secret < 1265582292 0 :olsner!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: do keep in mind that the pictures and videos are not necessarily of the actual oleg < 1265582305 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :olsner hah it's just a puppet! < 1265582305 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :hm? < 1265582317 0 :olsner!unknown@unknown.invalid PRIVMSG #esoteric :MissPiggy: indeed, just a puppet < 1265582323 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ah < 1265582366 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :((λ:(★ → 0 → 1). 0) (λ:(★ → 0 → 1). 0)) (λ:(★ → 0 → 1). 0) < 1265582371 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :there's another picture of Oleg on this http://www.angelfire.com/tx4/cus/people/index.html < 1265582390 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :xD < 1265582411 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Guy Steele < 1265582412 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Scheme / CL / Fortress < 1265582415 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :yeah, just ignore the whole Java thing < 1265582421 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :hehee < 1265582441 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :MissPiggy: i already knew about that one < 1265582442 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :MissPiggy: < 1265582443 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :((λ:(★ → 0 → 1). 0) (λ:(★ → 0 → 1). 0)) (λ:(★ → 0 → 1). 0) < 1265582446 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :does that make sense to you? < 1265582472 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :it was part of what started my conspiracy theory, after all < 1265582477 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :it's id id id? < 1265582480 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1265582481 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :but it wouldn't typecheck < 1265582484 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :why not < 1265582490 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :oh < 1265582491 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :the types < 1265582491 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1265582510 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :i can't do implicit arguments without full inferring can i :( < 1265582519 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :there is no 'full inferring' < 1265582527 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :it's undecidible < 1265582532 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :i know < 1265582533 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :but i mean < 1265582537 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :"lots" of work inferring < 1265582544 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :as opposed to some cheap trick < 1265582545 0 :adam_d!~Adam@cpc2-acto6-0-0-cust48.brnt.cable.ntl.com JOIN :#esoteric < 1265582546 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :the best you can do is make a powerful algorithm that works well in normal situations < 1265582555 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :well, check does return the type < 1265582556 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :but ehhh < 1265582562 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :well there are some small classes of inference you can do in a principled way < 1265582576 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :all i care about is inferring type arguments :) < 1265582577 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :but it's very hard work.. and I think you probably need HOU to even get started < 1265582584 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :maybe that's easier still < 1265582591 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :I think I could fake that since my typechecker returns a type it knows it is < 1265582594 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :but eh < 1265582616 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :((((λ:(★ → 0 → 1). 0) (★ → 0 → 1)) (λ:(★ → 0 → 1). 0)) (★ → 0 → 1)) (λ:(★ → 0 → 1). 0) < 1265582616 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :There. < 1265582618 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :id id id < 1265582643 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :ACTION writes cons out of sheer insanity < 1265582672 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :a:* -> b:* -> a -> b -> c:* -> (a -> b -> c) -> c < 1265582750 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :consL :: Syntax < 1265582750 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :consL = < 1265582750 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric : Lambda (Arrow Set (Arrow Set (Arrow (Var 1) (Arrow (Var 1) ...)))) $ < 1265582750 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric : Lambda (Arrow Set (Arrow (Var 1) (Arrow (Var 1) ...))) $ < 1265582751 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric : Lambda (Arrow (Var 1) (Arrow (Var 1) ...)) $ < 1265582752 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric : Lambda (Arrow (Var 1) ...) $ < 1265582754 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :this is getting boring fast :P < 1265582777 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :not to mention confusing < 1265582777 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :hm < 1265582783 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :yeah it's pretty confusing < 1265582804 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :okay so after c:*... what the fuck number is a < 1265582808 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :4 < 1265582812 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :b is 3 < 1265582813 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :c is 0 < 1265582822 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :of course that'll change with the arguments of the function :D < 1265582825 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :(just add one) < 1265583006 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :foo3.hs:29:132: parse error on input `)' < 1265583007 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :AIEEEEEEEEEEEEe < 1265583042 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :λ:(★ → ★ → 1 → 1 → ★ → 4 → 4 → 2 → 2). λ:(★ → 1 → 1 → ★ → 4 → 4 → 2 → 2). λ:(1 → 1 → ★ → 4 → 4 → 2 → 2). λ:(1 → ★ → 4 → 4 → 2 → 2). λ:(★ → 4 → 4 → 2 → 2). λ:(4 → 4 → 2 → 2). ((0) (3)) (2) < 1265583043 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :MissPiggy: ^ < 1265583055 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :im not debugging that :P < 1265583061 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :i need more parens < 1265583068 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :write a function called --> that turns names into indices < 1265583078 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :and the opposite way, too < 1265583079 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :Stupid broken A/V sync on this YouTube video < 1265583082 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :so I can see what the fuck will happen < 1265583086 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :so you can write ("x", T) --> "x" instead of T -> #0 < 1265583092 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :λ:((★) → (★) → (1) → (1) → (★) → ((4) → (4) → 2) → 2). λ:((★) → (1) → (1) → (★) → ((4) → (4) → 2) → 2). λ:((1) → (1) → (★) → ((4) → (4) → 2) → 2). λ:((1) → (★) → ((4) → (4) → 2) → 2). λ:((★) → ((4) → (4) → 2) → 2). λ:(((4) → (4) → 2) → 2). ((0) (3)) (2) < 1265583100 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :that's cons < 1265583108 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :now in the sugar language I wrote over this, here's what it'll look like < 1265583183 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :cons : (α:★) → (β:★) → α → β → (γ:★) → (α → β → γ) → γ < 1265583192 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :cons _ _ x y _ f = f x y < 1265583212 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :MissPiggy: actually, if I define some standard representation for a tuple < 1265583227 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :then I can trivially infer an ((α:★),α) given an α < 1265583236 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :simply because I must know the type already, since I'm doing typechecking < 1265583290 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :no? < 1265583327 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :http://pastie.org/813947.txt?key=s3kxmqh9xb0pvxoycdqzpw < 1265583331 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :May I never have to write such a thing again < 1265583352 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :cons ?? < 1265583377 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :\x y f. f x y < 1265583382 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :The pair-creator. < 1265583384 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :yikes O_O < 1265583389 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Dependently typed! < 1265583393 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :why is it so typed < 1265583398 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Pretty-printed (ha), it's < 1265583398 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :jusst make it simple :P < 1265583399 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :λ:((★) → (★) → (1) → (1) → (★) → ((4) → (4) → 2) → 2). λ:((★) → (1) → (1) → (★) → ((4) → (4) → 2) → 2). λ:((1) → (1) → (★) → ((4) → (4) → 2) → 2). λ:((1) → (★) → ((4) → (4) → 2) → 2). λ:((★) → ((4) → (4) → 2) → 2). λ:(((4) → (4) → 2) → 2). ((0) (3)) (2) < 1265583403 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :MissPiggy: Because I have no other choice. < 1265583407 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :I have to curry because this is the LC. < 1265583410 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :ACTION almost spat tea out < 1265583420 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :But I have to specify the type of every function, because this is no-inferring, typed LC. < 1265583422 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :through whoms nose < 1265583433 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :And I have to have additional Set arguments because this is the dependently-typed LC. < 1265583584 0 :adam_d_!~Adam@cpc2-acto6-0-0-cust48.brnt.cable.ntl.com JOIN :#esoteric < 1265583756 0 :adam_d!unknown@unknown.invalid QUIT :Ping timeout: 256 seconds < 1265583926 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :My variable names: αβγδεζηθικμνξοπρστυφχψω < 1265583940 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :they are hot < 1265583950 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :I love the Greek alphabet. It's beautiful. < 1265583960 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :I should set it up so that alt-shift types greek < 1265584012 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :IMAL (In My Awesome Language), typing abcdefg... will automatically convert. :-) < 1265584064 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :alise: You and your derived-from-Egyptian scripts. < 1265584087 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Unicode has up to quadruple prime :D < 1265584128 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :they don't compose together well, though < 1265584132 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :different numbers of primes < 1265584303 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :ACTION thinks unicode is a bit stupid < 1265584374 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Why? < 1265584388 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :It has some stupidities, like the super/subscripts; it shouldn't be trying for a formatting vehicle. < 1265584393 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Anyway, behold: < 1265584394 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :*Main> System.IO.UTF8.putStrLn $ pretty idL < 1265584394 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :(λ:((α:★) → (β:α) → α))) α. α) < 1265584413 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :*Main> System.IO.UTF8.putStrLn $ pretty consL < 1265584413 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :(λ:((α:★) → (β:★) → (γ:α) → (δ:β) → (ε:★) → (ζ:(ζ:α) → (η:β) → ε))) → δ))))))) α. (λ:((β:★) → (γ:α) → (δ:β) → (ε:★) → (ζ:(ζ:α) → (η:β) → ε))) → δ)))))) β. (λ:((γ:α) → (δ:β) → (ε:★) → (ζ:(ζ:α) → (η:β) → ε))) → δ))))) γ. (λ:((δ:β) → (ε:★) → (ζ:(ζ:α) → (η:β) → ε))) → δ)))) δ. (λ:((ε:★) → (ζ:(ζ:α) → (η:β) → ε))) → δ))) ε < 1265584414 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :. (λ:((ζ:(ζ:α) → (η:β) → ε))) → δ)) ζ. ζ γ δ)))))) < 1265584418 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :MissPiggy: I hope that clears things up for you. < 1265584443 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :"(ζ:(ζ:α)" - bug or just plain awesomeness? < 1265584448 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :I'll go with bug. < 1265584452 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :PLAIN AWESOME < 1265584464 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :ζ:ζζζζζζζζ < 1265584466 0 :SimonRC!unknown@unknown.invalid QUIT :Ping timeout: 246 seconds < 1265584478 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :It's because since you can't technically reference it from inside itself, it's free. :-) < 1265584564 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :MissPiggy: think I should change the type signatures to (λ(var:type):(result type). )? Not sure if that's actually any better :P < 1265584596 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :ACTION wonders why < 1265584601 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric : let v = ident vs < 1265584602 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric : vs' = v:vs < 1265584605 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :complains about v not being defined < 1265584663 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :*Main> System.IO.UTF8.putStrLn $ pretty consL < 1265584663 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :(λ:((β:★) → (γ:★) → (δ:γ) → (ε:δ) → (ζ:★) → (η:(θ:δ) → (ι:ε) → η))) → ε))))))) α. (λ:((γ:★) → (δ:γ) → (ε:δ) → (ζ:★) → (η:(θ:δ) → (ι:ε) → η))) → ε)))))) β. (λ:((δ:γ) → (ε:δ) → (ζ:★) → (η:(θ:δ) → (ι:ε) → η))) → ε))))) γ. (λ:((ε:δ) → (ζ:★) → (η:(θ:δ) → (ι:ε) → η))) → ε)))) δ. (λ:((ζ:★) → (η:(θ:δ) → (ι:ε) → η))) → ε))) ε < 1265584663 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :. (λ:((η:(θ:δ) → (ι:ε) → η))) → ε)) ζ. ζ γ δ)))))) < 1265584668 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :MissPiggy: It's simple, really. < 1265584679 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :I pity the foo that has to debug their code generator for this < 1265584752 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :MissPiggy: it would probably help if I didn't try and avoid types and variables clashing (same list) :) < 1265584865 0 :MizardX-!~MizardX@unaffiliated/mizardx JOIN :#esoteric < 1265584904 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :*Main> System.IO.UTF8.putStrLn $ pretty (Arrow (Arrow Set Set) (Arrow Set Set)) < 1265584905 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :(α : (β : ★) → ★) → (β : ★) → ★ < 1265584909 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :I should probably retain used variables < 1265584934 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :hmm < 1265584938 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :this could do with becoming monadic < 1265584990 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :you mean to make it even more incomprehensible? < 1265584999 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ACTION ducks < 1265585077 0 :MizardX!unknown@unknown.invalid QUIT :Ping timeout: 260 seconds < 1265585078 0 :SimonRC!~sc@fof.durge.org JOIN :#esoteric < 1265585104 0 :MizardX-!unknown@unknown.invalid NICK :MizardX < 1265585116 0 :znerc!unknown@unknown.invalid QUIT :Remote host closed the connection < 1265585338 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :alise < 1265585350 0 :MissPiggy!unknown@unknown.invalid PRIVMSG #esoteric :have you raed peter morris' work on universe of strictly positive typs < 1265585661 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :back < 1265585667 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :no < 1265585686 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :ACTION will implement a new feature in the prettifier < 1265585696 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :arguments whose values are ignored in the type will be just shown as their type < 1265585792 0 :jcp!unknown@unknown.invalid QUIT :Quit: I will do anything (almost) for a new router. < 1265586319 0 :FireFly!unknown@unknown.invalid QUIT :Quit: Leaving < 1265586714 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :*Main> System.IO.UTF8.putStrLn $ pretty idL < 1265586714 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :(λ(α:★) : (α : α) → *** Exception: List.genericIndex: index too large. < 1265586773 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric ::/ < 1265587077 0 :jcp!~jw@bzflag/contributor/javawizard2539 JOIN :#esoteric