< 1314835205 807700 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :out of existing languages, Feather is most visually similar to Smalltalk, but that's mostly because one of its design goals is "the syntax should look similar to Smalltalk's, regardless of whether it means the same thing or not" < 1314835241 120124 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :and something I haven't seen anywhere else: nested one-line comments < 1314835264 409322 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :how does that work? < 1314835268 29145 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :mauke: as in, # abc # def < 1314835272 162188 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :and they're two different comments? < 1314835279 345070 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :I don't see how that's different from one-line comments that don't nest < 1314835279 678667 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :easy. REM starts a comment < 1314835282 754761 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :newline ends a comment < 1314835286 532865 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :comments may be nested < 1314835328 359975 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :ah < 1314835331 493517 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :REM foo REM bar < 1314835332 291309 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :quux < 1314835332 619238 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :? < 1314835347 631843 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :yep < 1314835364 699301 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :heh < 1314835384 79040 :CakeProphet!~adam@c-24-126-235-176.hsd1.ga.comcast.net JOIN :#esoteric < 1314835384 451483 :CakeProphet!~adam@c-24-126-235-176.hsd1.ga.comcast.net QUIT :Changing host < 1314835384 616408 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake JOIN :#esoteric < 1314835384 616487 :adam__!~adam@c-24-126-235-176.hsd1.ga.comcast.net JOIN :#esoteric < 1314835402 971004 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :if you look at the documentation, it doesn't bother to mention all the interesting stuff < 1314835412 758793 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :heh < 1314835425 817459 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :like how it's rather non-trivial to just parse a sequence of statements < 1314835443 838521 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :I'm not even sure you can write a grammar for ploki < 1314835472 421284 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :some non-eso languages have that property too, like perl 5 < 1314835479 574022 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :perl has a yacc grammar < 1314835484 52129 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :boring < 1314835496 674180 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :yacc is TC < 1314835503 739060 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :so that says nothing other than "you can run perl" < 1314835545 437527 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :mauke: note that it has to run part of the program at compile time to manage that < 1314835553 511645 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :ais523: yes, just like lisp < 1314835557 369190 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :thus, parsing perl requires running arbitrary code, which might contain an infinite loop < 1314835560 567554 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :oldest trick in the book < 1314835562 864186 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :lisp doesn't have a grammar either < 1314835564 173599 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :(readtable) < 1314835574 491205 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :you'd think parsing Lisp would be easy < 1314835580 672929 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :ploki could (theoretically) be compiled, though < 1314835585 269706 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :it has no eval or anything < 1314835588 758928 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :then it has a grammar :P < 1314835596 419771 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :"Wiki Loves Monuments: Photograph a monument, help Wikipedia and win!" <-- umm, what < 1314835614 178592 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :elliott: you can try to write one and I will tell you how it's broken :-) < 1314835624 948051 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :mauke: if you can compile it, it has a grammar < 1314835630 381333 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :it might not have a grammar with very many nice properties, but it has one < 1314835711 2375 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :??/ looks like a trigraph < 1314835715 751188 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :what you're saying sounds mathematically true but I still don't know how to write it down < 1314835737 938579 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :yeah, I put that in because trigraphs are a great eso feature < 1314835771 470494 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :mauke: well, if you want to compile it, you have to transform it; it's not much of a compiler if it can fail to halt (barring obscure bugs like GHC has), therefore you can make enough sense of the code to compile it down to a fixed number of operations that don't cheat (i.e. embedding an interpreter) in finite time, so you can parse it < 1314835783 190432 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :cheating is kind of a subjective notion so I'm not sure there is a reasonable mathematical statement of it < 1314835861 620649 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :as far as I know ploki doesn't fit in any parsing frameworks/generators/combinators < 1314835873 55327 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :so that's going to be fun < 1314835928 984556 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :those are usually fairly limited < 1314835933 343939 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :beyond embedding your own parser in a code block < 1314835943 241118 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :like i said, it might not have good properties, but it's certainly parseable :P < 1314836090 55992 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :general chomsky grammars are TC < 1314836106 41187 :augur!~augur@129.2.129.34 PRIVMSG #esoteric :oerjan: what is a "general chomsky grammar" < 1314836121 425108 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :annd I think I found a bug < 1314836152 412831 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :augur: type-0 < 1314836169 287316 :augur!~augur@129.2.129.34 PRIVMSG #esoteric :oerjan: and why is that a "general chomsky grammar" < 1314836195 997564 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :chomsky opinions for a chomsky era < 1314836220 136297 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :because it's called the "chomsky hierarchy", and it's a grammar by chomsky's definition without additional restrictions < 1314836256 232687 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :and yes, it wasn't the technical term, that is type-0 grammar < 1314836268 553973 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :which i had to look up to recall < 1314836276 756740 :augur!~augur@129.2.129.34 PRIVMSG #esoteric :oerjan: sure, but any grammar is type-0 < 1314836283 638226 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :great, a bug in the optimizer < 1314836307 963904 :augur!~augur@129.2.129.34 PRIVMSG #esoteric :and even within the strictly type-0 grammars, only a subset of them are TC < 1314836311 848730 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :augur: thus "general", you stupid git < 1314836323 191452 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :er < 1314836343 996790 :augur!~augur@129.2.129.34 PRIVMSG #esoteric :further, why "general" and "chomsky" are used makes no sense to me < 1314836351 603688 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :augur: type-0 grammars as a _whole_ is a TC formalism < 1314836375 73523 :augur!~augur@129.2.129.34 PRIVMSG #esoteric :its the class that you need for giving TC grammars in, sure < 1314836394 643660 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :augur: because i didn't remember the correct term, and you lack sufficient reading comprehension to understand a simple phrase < 1314836396 86947 :augur!~augur@129.2.129.34 PRIVMSG #esoteric :but thue and post preceeded chomsky in the matter < 1314836397 919184 :Sgeo!~Sgeo@ool-ad034d00.dyn.optonline.net PRIVMSG #esoteric :if (x >= 0) then '0' else 1 // this expression can be given a type! < 1314836401 204746 :Sgeo!~Sgeo@ool-ad034d00.dyn.optonline.net PRIVMSG #esoteric ::? < 1314836408 539590 :augur!~augur@129.2.129.34 PRIVMSG #esoteric :chomsky just gave a hierarchy of such systems < 1314836441 395565 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :Sgeo: :1:5: Not in scope: `x' < 1314836467 656104 :Sgeo!~Sgeo@ool-ad034d00.dyn.optonline.net PRIVMSG #esoteric :ACTION isn't talking about Haskell < 1314836469 246139 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :augur: afaik he _invented_ these formal grammars < 1314836481 861670 :augur!~augur@129.2.129.34 PRIVMSG #esoteric :oerjan: when your knowing is wrong < 1314836482 147245 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :ACTION is < 1314836482 667333 :Sgeo!~Sgeo@ool-ad034d00.dyn.optonline.net PRIVMSG #esoteric :http://www.ats-lang.org/DOCUMENT/INTPROGINATS/HTML/x322.html < 1314836488 930079 :adam__!~adam@c-24-126-235-176.hsd1.ga.comcast.net QUIT :Quit: leaving < 1314836494 859079 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric : but thue and post preceeded chomsky in the matter < 1314836495 194895 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric : chomsky just gave a hierarchy of such systems < 1314836497 661468 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric ::t curry < 1314836497 825901 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :"When Noam Chomsky first formalized generative grammars in 1956,[1] he classified them into types now known as the Chomsky hierarchy." < 1314836498 322133 :lambdabot!~lambdabot@li85-105.members.linode.com PRIVMSG #esoteric :forall a b c. ((a, b) -> c) -> a -> b -> c < 1314836501 628204 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric ::t schönfinkel < 1314836502 109211 :lambdabot!~lambdabot@li85-105.members.linode.com PRIVMSG #esoteric :Not in scope: `sch' < 1314836503 753970 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :augur: ? < 1314836510 348059 :augur!~augur@129.2.129.34 PRIVMSG #esoteric :elliott: O_O < 1314836511 415541 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :augur: very well, go and correct wikipedia for me < 1314836522 230629 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :augur: well? < 1314836533 528626 :augur!~augur@129.2.129.34 PRIVMSG #esoteric :oerjan: generative grammars for describing languages < 1314836559 220860 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :augur: oh well < 1314836559 401743 :augur!~augur@129.2.129.34 PRIVMSG #esoteric :rewrite systems of the same sort were used prior in the context of logic/math/cs for a while before chomsky < 1314836567 645259 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :Sgeo: does it have subtyping? < 1314836594 912040 :augur!~augur@129.2.129.34 PRIVMSG #esoteric :chomsky might have also given the first meta-analysis. < 1314836597 379423 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :augur: i assume you know what i'm talking about? < 1314836602 153734 :augur!~augur@129.2.129.34 PRIVMSG #esoteric :elliott: well what < 1314836602 754736 :Sgeo!~Sgeo@ool-ad034d00.dyn.optonline.net PRIVMSG #esoteric :I have no idea, but ATS is type-obsessed, so I'm going to go with "probably" < 1314836616 680414 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :augur: < 1314836619 138627 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric : :t curry < 1314836619 303419 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric : forall a b c. ((a, b) -> c) -> a -> b -> c < 1314836620 952146 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric : :t schönfinkel < 1314836622 114213 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric : Not in scope: `sch' < 1314836628 745512 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :augur: why aren't you complaining to the haskell committee? < 1314836629 733778 :augur!~augur@129.2.129.34 PRIVMSG #esoteric :elliott: what about it < 1314836684 705730 :augur!~augur@129.2.129.34 PRIVMSG #esoteric :elliott: well for one, a name is not the same as an attribution, and for two, a false attribution is not the same as a real attribution < 1314836703 537805 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :"general chomsky grammar" sounds like a name to me < 1314836706 343717 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :not an attribution < 1314836719 627335 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :and currying is more rightly attributed to Schönfinkel < 1314836760 956301 :augur!~augur@129.2.129.34 PRIVMSG #esoteric :elliott: except chomsky's name isn't even remotely established as a name for a class of grammars < 1314836766 587061 :augur!~augur@129.2.129.34 PRIVMSG #esoteric :unless you mean in a linguistic context < 1314836782 689075 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :augur: you realise this is insufferable, right? < 1314836794 271951 :augur!~augur@129.2.129.34 PRIVMSG #esoteric ::) < 1314836797 717642 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :elliott: yeah dammit he managed to get _me_ angry < 1314836820 941678 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :ice coffee --> < 1314836835 768633 :augur!~augur@129.2.129.34 PRIVMSG #esoteric :plausibly, a chomsky grammar could be used to refer to a grammar in chomsky normal form < 1314836859 762773 :kmc!~keegan@c-98-216-51-47.hsd1.ma.comcast.net PRIVMSG #esoteric :@let schönfinkel = curry < 1314836860 983330 :lambdabot!~lambdabot@li85-105.members.linode.com PRIVMSG #esoteric : Defined. < 1314836873 978798 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric ::t schönfinkel < 1314836875 124280 :lambdabot!~lambdabot@li85-105.members.linode.com PRIVMSG #esoteric :Not in scope: `sch' < 1314836882 510595 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :> schönfinkel < 1314836883 552585 :lambdabot!~lambdabot@li85-105.members.linode.com PRIVMSG #esoteric : Overlapping instances for GHC.Show.Show < 1314836883 717253 :lambdabot!~lambdabot@li85-105.members.linode.com PRIVMSG #esoteric : (((a, ... < 1314836883 885093 :kmc!~keegan@c-98-216-51-47.hsd1.ma.comcast.net PRIVMSG #esoteric :for some reason :t does not like non-ASCII characters < 1314836886 719812 :augur!~augur@129.2.129.34 PRIVMSG #esoteric :but its hard to see how it makes any sense to call string rewriting systems "chomsky grammars" < 1314836897 565774 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :ACTION wonders how that is parsed < 1314836902 821778 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric ::t (ö) < 1314836903 943922 :lambdabot!~lambdabot@li85-105.members.linode.com PRIVMSG #esoteric :parse error (possibly incorrect indentation) < 1314836912 270037 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :> (ö) < 1314836913 417473 :lambdabot!~lambdabot@li85-105.members.linode.com PRIVMSG #esoteric : Not in scope: ` < 1314836916 775977 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric ::t is broken < 1314836917 412609 :lambdabot!~lambdabot@li85-105.members.linode.com PRIVMSG #esoteric :Not in scope: `is' < 1314836917 577126 :lambdabot!~lambdabot@li85-105.members.linode.com PRIVMSG #esoteric :Not in scope: `broken' < 1314836918 548815 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :as far as unicode goes < 1314836923 650421 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :oh kmc said that < 1314836941 776945 :augur!~augur@129.2.129.34 PRIVMSG #esoteric ::t schoenfinkel < 1314836942 269825 :lambdabot!~lambdabot@li85-105.members.linode.com PRIVMSG #esoteric :Not in scope: `schoenfinkel' < 1314836946 720953 :kmc!~keegan@c-98-216-51-47.hsd1.ma.comcast.net PRIVMSG #esoteric :> schönfinkel snd 2 3 < 1314836947 434820 :augur!~augur@129.2.129.34 PRIVMSG #esoteric :oh if only it were smart like that! < 1314836948 599332 :lambdabot!~lambdabot@li85-105.members.linode.com PRIVMSG #esoteric : 3 < 1314836967 379385 :augur!~augur@129.2.129.34 PRIVMSG #esoteric :curry fst = const :o < 1314836979 980379 :kmc!~keegan@c-98-216-51-47.hsd1.ma.comcast.net PRIVMSG #esoteric :mmy, currywurst < 1314836986 870389 :augur!~augur@129.2.129.34 PRIVMSG #esoteric :i agree < 1314837016 902021 :cheater!~ubuntu@ip-80-226-24-5.vodafone-net.de PRIVMSG #esoteric :i see my domination plan is running as expected < 1314837022 454487 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric ::t "ö" < 1314837023 564257 :lambdabot!~lambdabot@li85-105.members.linode.com PRIVMSG #esoteric : lexical error in string/character literal at end of input < 1314837031 947116 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric ::t "\ö" < 1314837032 836383 :lambdabot!~lambdabot@li85-105.members.linode.com PRIVMSG #esoteric : unexpected end-of-file in string/character literal at end of input < 1314837034 751448 :Rotaerk!~Rotaerk@c-174-54-255-117.hsd1.pa.comcast.net JOIN :#esoteric < 1314837041 654848 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :worse and worse < 1314837052 402603 :Rotaerk!~Rotaerk@c-174-54-255-117.hsd1.pa.comcast.net PART #esoteric :"Leaving" < 1314837087 39507 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :cheater: your plan will be foiled when everyone on haskell-blah ends up talking about their esolang interpreters < 1314837116 947810 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :using more notation < 1314837279 219010 :cheater!~ubuntu@ip-80-226-24-5.vodafone-net.de QUIT :Ping timeout: 245 seconds < 1314837344 950898 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :oh dear, I actually rely on fromInteger for tuples < 1314837371 856496 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :does anyone know a good way to track down the source of "error" calls in Haskell? :P < 1314837616 508023 :Guest8904!foobar@codu.org NICK :Gregor < 1314837777 348585 :kmc!~keegan@c-98-216-51-47.hsd1.ma.comcast.net PRIVMSG #esoteric :http://haskell.org/haskellwiki/FAQ#How_can_I_get_a_stack_backtrace_when_my_program_throws_an_exception.3F < 1314837811 441377 :kmc!~keegan@c-98-216-51-47.hsd1.ma.comcast.net PRIVMSG #esoteric :also http://hackage.haskell.org/package/spoon < 1314837813 169487 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :yeah, that's cheating though :P < 1314837820 179171 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :isn't something fancy coming up in the next release? < 1314837825 214770 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :or was that the release that came out < 1314837825 379526 :kmc!~keegan@c-98-216-51-47.hsd1.ma.comcast.net PRIVMSG #esoteric :i hadn't heard < 1314837832 399678 :kmc!~keegan@c-98-216-51-47.hsd1.ma.comcast.net PRIVMSG #esoteric :of GHC? < 1314837845 455009 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :something simon marlow on google+ that was linked on /r/haskell about solving the stack trace problem < 1314837871 341258 :kmc!~keegan@c-98-216-51-47.hsd1.ma.comcast.net PRIVMSG #esoteric :i like how in Haskell, hard things are easy and easy things are hard < 1314837872 473230 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :I don't think spoon helps me, since this is an erroneous call to fromIntegral < 1314837906 215999 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :kmc: https://plus.google.com/107890464054636586545/posts/XE4T6hHm3tK < 1314837915 2945 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :I guess it might be a while before that hits mainline GHC < 1314837938 558335 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :Well, I did make esolang interpreter in Haskell once (actually it is the first Haskell program I wrote) < 1314838051 483000 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :shiro: fromInteger on tuple < 1314838054 115366 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :that's one user-friendly backtrace < 1314838155 497641 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :especially since coreIns has, like, a hundred pattern cases with completely orthogonal behaviour < 1314838233 776872 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :fromInteger on tuple, i assume that's your error message since haskell is statically typed :P < 1314838301 771553 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :yep :P < 1314838318 524768 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :I should probably just define my own names for the two tuple operations I use < 1314838329 742747 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :oh < 1314838331 395160 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :I bet I know why oerjan < 1314838340 603990 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :instance (Num a, Num b) => Num (a,b) where < 1314838340 769019 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric : (a,b) + (c,d) = (a+c, b+d) < 1314838340 933715 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric : (a,b) - (c,d) = (a-c, b-d) < 1314838340 933821 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric : -- These don't really make any sense < 1314838340 933864 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric : (*) = error "(*) on tuple" < 1314838342 927700 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric : abs = error "abs on tuple" < 1314838344 789899 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric : signum = error "signum on tuple" < 1314838346 763682 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric : fromInteger = error "fromInteger on tuple" < 1314838350 924120 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :oerjan: I use "negate" on tuples to do pointwise negation < 1314838357 609367 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :oerjan: previously, fromInteger a = (fromInteger a, fromInteger a) < 1314838362 711417 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :can you spot the problem? :P < 1314838374 836805 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :yes, you actually need fromInteger to work then < 1314838386 430363 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :yep < 1314838389 549781 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :so I just need to define my own negate < 1314838435 730491 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :@src negate < 1314838436 187027 :lambdabot!~lambdabot@li85-105.members.linode.com PRIVMSG #esoteric :negate x = 0 - x < 1314838441 888840 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :oh hm no < 1314838447 422329 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :oh wait yes < 1314839029 253901 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :"ddarius: isJust :: Maybe a -> Bool; isJust = unsafeCoerce < 1314839031 888097 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :" < 1314839060 92189 :Gregor!foobar@codu.org PRIVMSG #esoteric :Maybe a bool IS just unsafe coerce! < 1314839115 358999 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :!haskell import Unsafe.Coerce; main = print (map unsafeCoerce [Just "so", Nothing, Just "hm..."] :: [Bool]) < 1314839120 494988 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :oerjan: it works < 1314839123 91773 :EgoBot!foobar@codu.org PRIVMSG #esoteric :​[True,False,True] < 1314839123 867486 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :we tested it when it happened recently < 1314839175 704941 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :!haskell import Unsafe.Coerce; main = print (map unsafeCoerce [Left "what", Right "about", Left "this?"] :: [Bool]) < 1314839180 489685 :EgoBot!foobar@codu.org PRIVMSG #esoteric :​[False,True,False] < 1314839190 341753 :MDude!~fyrc@or-67-238-31-252.dhcp.embarqhsd.net JOIN :#esoteric < 1314839197 411077 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :ooh and what about... < 1314839203 965366 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :!haskell import Unsafe.Coerce; main = print (map unsafeCoerce [Left "what", Right "about", Left "this?"] :: [Maybe String]) < 1314839207 189902 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :oerjan: he expanded on it more < 1314839208 912203 :EgoBot!foobar@codu.org PRIVMSG #esoteric :​[Nothing,Just "about",Nothing] < 1314839210 332928 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :anything with under four constructors works < 1314839210 844050 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :iirc < 1314839218 176150 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :aha < 1314839227 909180 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :because of pointer tagging and bits and blah, presumably < 1314839234 488698 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :or was it <= four < 1314839265 725177 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :oh you mean when the number of constructors are not the same < 1314839298 463964 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :haha, the FQA author proves that he isn't a troll by explaining that writing an entire FQA doesn't have a good cost/benefit response when it comes to trolling < 1314839336 592869 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :"Cale: the units of the monoids in the algebras for the monoid monad < 1314839337 817604 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :" < 1314839349 437836 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :i'm not sure if i should want to understand that or not < 1314839360 1203 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Shiro/FungeSpace.hs:85:22: Error: Use elem < 1314839360 172415 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Found < 1314839360 337010 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :w == cr || w == lf < 1314839360 337102 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Why not < 1314839360 337147 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :w `elem` [cr, lf] < 1314839362 828534 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :but hlint < 1314839364 968198 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :that could be slower :( < 1314839368 891037 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :"the monoid monad" is [], i know < 1314839371 588653 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :monoids form a monad? < 1314839374 722515 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :ah, hmm < 1314839381 647067 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :that's a crazy terminology for it < 1314839394 475665 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :[] is more like a sort of ordered threading < 1314839397 603399 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :oerjan: Cale was just demonstrating how monads are like monoids in some way < 1314839398 195783 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :I think < 1314839399 525467 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :I forget how < 1314839444 477105 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :ais523: every algebraic variety (such as monoids) gives a monad in the Set category of math. some of them (iiuc, those that don't require comparing terms for equality) also work in Hask. < 1314839448 369275 :azaq23!~derivecto@unaffiliated/azaq23 JOIN :#esoteric < 1314839475 454872 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :just seeing the word "Hask" fills me with horror < 1314839492 818190 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :ais523: well by that i mean that they correspond to haskell Monads. < 1314839497 776557 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :because it implies that a) Haskell forms a category (not surprising if you take an idealized version of it), and b) people use it enough to actually use it < 1314839502 54883 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :*to actually name it < 1314839506 996087 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Haskell forms many categories < 1314839517 693924 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :no idealisation required < 1314839519 342058 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :umm, Haskell expressions form a category < 1314839531 698634 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :probably a cartesian closed one with symmetrical braiding < 1314839556 979956 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :if a programming language doesn't do that, computer scientists typically don't consider it worth thinking about < 1314839601 638669 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :(I tried to do that for Burro, and was a little disappointed that I couldn't find a decent tensor operator, which corresponds to tuple formation in most languages; interleaving tapes almost works except that it isn't associative) < 1314839602 503285 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :it's close to cartesian closed, but i have a vague recall or hunch that bottoms maybe mess up the exact definition < 1314839638 800523 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :in fact, I actually hear computer scientists say "that doesn't form a cartesian closed category, you must have made a mistake" < 1314839656 861608 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :istr something going wrong about products or coproducts/sums < 1314839672 89513 :copumpkin!~pumpkin@unaffiliated/pumpkingod PRIVMSG #esoteric :ais523: any cartesian monoidal category is symmetric < 1314839678 23803 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :copumpkin: I thought that might be the case < 1314839683 842360 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :but wasn't 100% sure I remembered the definition right < 1314839694 540476 :copumpkin!~pumpkin@unaffiliated/pumpkingod PRIVMSG #esoteric :oerjan: CPO\_\bot works pretty well for haskell < 1314839698 497127 :copumpkin!~pumpkin@unaffiliated/pumpkingod PRIVMSG #esoteric :including the bottoms < 1314839711 480302 :copumpkin!~pumpkin@unaffiliated/pumpkingod PRIVMSG #esoteric :and the composition of folds and unfolds < 1314839724 507278 :copumpkin!~pumpkin@unaffiliated/pumpkingod PRIVMSG #esoteric :in something like set, that doesn't work < 1314839726 956576 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :copumpkin: you are over my head now, anyway :P < 1314839749 435768 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :copumpkin: get a ph.d., then you'll be down to oerjan's level < 1314839754 427480 :copumpkin!~pumpkin@unaffiliated/pumpkingod PRIVMSG #esoteric :lol < 1314839760 349146 :copumpkin!~pumpkin@unaffiliated/pumpkingod PRIVMSG #esoteric :I already quit one < 1314839768 170081 :copumpkin!~pumpkin@unaffiliated/pumpkingod PRIVMSG #esoteric :quitting two would be too much < 1314839773 413880 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :my ph.d. didn't go that deep into category theory :P < 1314839800 10365 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :there were some natural transformations and K-theory < 1314839875 309161 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :this code is so imperative :-( < 1314839925 23687 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :imperative is not necessarily bad < 1314839945 132608 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :I know that in the only ICFP contest I actually entered, I decided as soon as I saw the problem that an imperative solution would work best < 1314839956 89134 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :and wondered why on earth that was done in a contest attached to a functional programming conference < 1314840021 449986 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric : oerjan: CPO\_\bot works pretty well for haskell <-- * me vaguely wonders if that's an actual math term based on complete partial orders (probably), or if there's an actual bot lurking on freenode somewhere < 1314840037 307402 :copumpkin!~pumpkin@unaffiliated/pumpkingod PRIVMSG #esoteric :lol no < 1314840040 611768 :Nisstyre!~yours@infocalypse-net.info PRIVMSG #esoteric :I would tend to disagree with that viewpoint < 1314840042 373406 :copumpkin!~pumpkin@unaffiliated/pumpkingod PRIVMSG #esoteric :it's a category of complete partial orders < 1314840072 91142 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :lollercoaster notation < 1314840147 403586 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :oerjan: I assumed it was a Freenode bot, and was wondering what the \_\ was for < 1314840159 421266 :elliott!~elliott@unaffiliated/elliott NICK :CPO\_\bot < 1314840160 253150 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :what does \_ mean in (presumably LaTeX) anyway? < 1314840160 419136 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :ais523: hi five < 1314840162 886514 :CPO\_\bot!~elliott@unaffiliated/elliott PRIVMSG #esoteric :YESSSSSS < 1314840163 51215 :CPO\_\bot!~elliott@unaffiliated/elliott PRIVMSG #esoteric :S < 1314840173 91900 :CPO\_\bot!~elliott@unaffiliated/elliott PRIVMSG #esoteric :ok I am going to make this into the best haskell evaluation bot EVER < 1314840184 728906 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :ais523: i _suspect_ the first \ may be a typo < 1314840190 843175 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :it needs to do stuff with complete partial orders, too < 1314840194 794276 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :oerjan: oh, right, that would make sense < 1314840201 56464 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :and \_ would presumably be literal underscore? < 1314840213 269851 :kmc!~keegan@c-98-216-51-47.hsd1.ma.comcast.net PRIVMSG #esoteric :so what's CPO⊥ ? < 1314840214 39994 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :i don't recall < 1314840219 509340 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :kmc: complete partial order < 1314840226 720631 :kmc!~keegan@c-98-216-51-47.hsd1.ma.comcast.net PRIVMSG #esoteric :unfortunately Unicode lacks a "subscript ⊥" character < 1314840231 727512 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :or wait < 1314840234 105049 :kmc!~keegan@c-98-216-51-47.hsd1.ma.comcast.net PRIVMSG #esoteric :i will write an angry letter to the Committee < 1314840237 630813 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :and adding bottom on there presumably means a complete partial order with bottom included? < 1314840245 259880 :Gregor!foobar@codu.org PRIVMSG #esoteric :kmc: They'll get it in right after Goat. < 1314840248 698962 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :clearly, Unicode needs combining superscript and subscript < 1314840251 500058 :copumpkin!~pumpkin@unaffiliated/pumpkingod PRIVMSG #esoteric :kmc: read http://www.cs.ox.ac.uk/ralf.hinze/SSGIP10/AdjointFolds.pdf < 1314840255 795033 :CPO\_\bot!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Deewiant: Actually, the new Fungespace might not be that far away :-) < 1314840271 47337 :copumpkin!~pumpkin@unaffiliated/pumpkingod PRIVMSG #esoteric :kmc: ignore the shitty fraktur :P < 1314840274 998993 :CPO\_\bot!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Sorry, I mean sparse discrete finite lahey-space. < 1314840276 293916 :kmc!~keegan@c-98-216-51-47.hsd1.ma.comcast.net PRIVMSG #esoteric :cool thanks < 1314840290 518753 :CPO\_\bot!~elliott@unaffiliated/elliott PRIVMSG #esoteric :You haskellers have to promise to not say anything if a package meeting that description shows up on Hackage one day. < 1314840292 963882 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :kmc: sorry my putty fonts acting up again (of all possible representations of an unknown character, why does it have to use a _blank space_?) < 1314840295 118427 :copumpkin!~pumpkin@unaffiliated/pumpkingod PRIVMSG #esoteric :who the fuck thought http://snapplr.com/aznr was a good idea? < 1314840321 65250 :CPO\_\bot!~elliott@unaffiliated/elliott PRIVMSG #esoteric :copumpkin: GOTHIK HASKEL < 1314840329 483871 :kmc!~keegan@c-98-216-51-47.hsd1.ma.comcast.net PRIVMSG #esoteric :makes it look more metal < 1314840329 648511 :CPO\_\bot!~elliott@unaffiliated/elliott PRIVMSG #esoteric :\m/ < 1314840341 238909 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :I love the way "Lahey-space" sounds like a proper mathematical term < 1314840348 299353 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :when as far as I know, it's something that cpressey just made up one day < 1314840353 866943 :CPO\_\bot!~elliott@unaffiliated/elliott PRIVMSG #esoteric :ais523: it's something Lahey made up one day < 1314840356 242211 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :CPO\_\bot: the \m/ \m/ version requires two neighboring ones < 1314840356 456852 :myndzi!myndzi@c-67-168-184-168.hsd1.wa.comcast.net PRIVMSG #esoteric :                `\o/´ < 1314840356 692320 :myndzi!myndzi@c-67-168-184-168.hsd1.wa.comcast.net PRIVMSG #esoteric :                  | < 1314840356 857082 :myndzi!myndzi@c-67-168-184-168.hsd1.wa.comcast.net PRIVMSG #esoteric :                 /`\ < 1314840356 857270 :myndzi!myndzi@c-67-168-184-168.hsd1.wa.comcast.net PRIVMSG #esoteric :               (_| |_) < 1314840358 918196 :kmc!~keegan@c-98-216-51-47.hsd1.ma.comcast.net PRIVMSG #esoteric :instead of something that Gauss made up one day < 1314840363 334293 :kmc!~keegan@c-98-216-51-47.hsd1.ma.comcast.net PRIVMSG #esoteric :like the rest of maths < 1314840364 85127 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :ah, right < 1314840370 427688 :CPO\_\bot!~elliott@unaffiliated/elliott PRIVMSG #esoteric :ais523: i was going to release my new fungespace on hackage as lahey-space, but Deewiant pointed out that there are tons of other lahey spaces than just fungespaces < 1314840378 179178 :CPO\_\bot!~elliott@unaffiliated/elliott PRIVMSG #esoteric :so I need to come up with a sufficiently snappy but mathematical-sounding term for fungespace < 1314840380 152205 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :oerjan: was that /meant/ to set off myndzi's script? < 1314840381 799974 :CPO\_\bot!~elliott@unaffiliated/elliott PRIVMSG #esoteric :that mentions lahey-spaces < 1314840383 694143 :kmc!~keegan@c-98-216-51-47.hsd1.ma.comcast.net PRIVMSG #esoteric :wow < 1314840395 994164 :CPO\_\bot!~elliott@unaffiliated/elliott PRIVMSG #esoteric :\m/ \m/ \o/ ,o/ < 1314840396 247453 :myndzi!myndzi@c-67-168-184-168.hsd1.wa.comcast.net PRIVMSG #esoteric :    `\o/´   | < 1314840396 498913 :myndzi!myndzi@c-67-168-184-168.hsd1.wa.comcast.net PRIVMSG #esoteric :      |     >\ < 1314840396 662972 :myndzi!myndzi@c-67-168-184-168.hsd1.wa.comcast.net PRIVMSG #esoteric :  (_|¯`¯|_) < 1314840402 743144 :CPO\_\bot!~elliott@unaffiliated/elliott PRIVMSG #esoteric :myndzi truly is a work of art. < 1314840408 141866 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric : ok I am going to make this into the best haskell evaluation bot EVER <-- i was hoping for something that did genuine category theory < 1314840410 415765 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :CPO\_\bot: it's also euclidean, isn't it? < 1314840417 482304 :CPO\_\bot!~elliott@unaffiliated/elliott PRIVMSG #esoteric :ais523: heh < 1314840424 441706 :CPO\_\bot!~elliott@unaffiliated/elliott PRIVMSG #esoteric :ais523: no, taxicab < 1314840424 773755 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :as in, there's nothing about Lahey-spaces that intrinsically makes them work like that < 1314840446 460341 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :well, it follows the normal rules for making a lattice as a subset of euclidean space < 1314840456 829188 :CPO\_\bot!~elliott@unaffiliated/elliott PRIVMSG #esoteric :well sure < 1314840479 566395 :Zuu!~zuu@unaffiliated/zuu QUIT :Read error: Connection reset by peer < 1314840482 713298 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :ais523: all cpo's have bottom included i think, because that's the infimum of the whole set < 1314840503 795486 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :oerjan: all cpos /on a set that includes bottom/ < 1314840512 247865 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :(yes, I know the apostrophe is technically correct, it still looks wrong) < 1314840533 558696 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :most of my dealing with preorders has been on finite sets < 1314840541 702060 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :also, I can never remember which of a partial order and a preorder is which < 1314840621 394940 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric : oerjan: was that /meant/ to set off myndzi's script? <-- um yes. < 1314840638 925186 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :oh, I see < 1314840647 818520 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :I'd mentally placed your line in the wrong conversation < 1314840652 101550 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :and was having issues parsing it as a result < 1314840664 708572 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :I've been doing that more and more nowadays < 1314840675 646184 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :but it's not that common that the parsing of a sentence is as context-dependent as that, it's as bad as C++ < 1314840722 742193 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :ais523: bottom afaik is a term that applies inside a cpo :P < 1314840733 178659 :Zuu!~zuu@unaffiliated/zuu JOIN :#esoteric < 1314840741 999123 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :hmm, obviously CPO means something that isn't complete + partial order < 1314840750 285237 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :it wouldn't be the first time that had happened in maths < 1314840757 46033 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :i suspect the _\bot is a restriction on the _arrows_, not the objects < 1314840768 179217 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :namely that they send bottoms to bottoms < 1314840778 547514 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :(is my guess) < 1314840792 457801 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :although that excludes non-strict functions, hm < 1314840793 238289 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :oh, there can be more than one bottom? I assumed it was meant to be a terminal object < 1314840813 759346 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :no, just one bottom in each object. < 1314840833 394352 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :categories as applied to programming languages normally consider objects as types and arrows as functions between those types, and actual values don't get involved at all < 1314840838 265685 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :each haskell type is represented by one set with a CPO structure, afaik < 1314840840 303327 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :except as degenerate functions < 1314840848 127405 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :so each set has a bottom element < 1314840921 942447 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :of course the Void data type may be such a terminal element which has only bottom in it < 1314840968 562659 :CPO\_\bot!~elliott@unaffiliated/elliott PRIVMSG #esoteric :hmm, I should try out haskell-emacs I guess < 1314841066 542665 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :and also because of haskell < 1314841097 907791 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :'s nonstrictness, functions from Void to T are 1-1 with values in T < 1314841141 140281 :CPO\_\bot!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Hmm, is there any portable way to get the number of existing environment variables? < 1314841145 994567 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :for a strict language you'd want functions from () to T instead, i assume < 1314841171 482727 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :@hoogle getEnv < 1314841172 107291 :lambdabot!~lambdabot@li85-105.members.linode.com PRIVMSG #esoteric :System.Environment getEnv :: String -> IO String < 1314841172 271887 :lambdabot!~lambdabot@li85-105.members.linode.com PRIVMSG #esoteric :System.Environment getEnvironment :: IO [(String, String)] < 1314841176 909214 :CPO\_\bot!~elliott@unaffiliated/elliott PRIVMSG #esoteric :oerjan: in C < 1314841182 423657 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :oh < 1314841186 823545 :CPO\_\bot!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Or, I guess: How do you get the whole environment in Windows? < 1314841191 634501 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :ACTION slinks away < 1314841208 348071 :CPO\_\bot!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Deewiant? :-P < 1314841212 462793 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :You use the SET command < 1314841224 232749 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :I do not know how to do it in C or other programming languages. < 1314841300 190798 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :!haskell length `fmap` System.Environment.getEnvironment < 1314841303 48767 :EgoBot!foobar@codu.org PRIVMSG #esoteric :35 < 1314841358 353333 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :I found out I have a file on my computer about the rules for "Uncyclopedian Poker". The deck contains 172 cards, 32 of which are Wilde cards. The game involves the "toilet" and the "tax collection". < 1314841405 423800 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :Apparently an ace of spades is called a "half-motor" in this game. < 1314841481 463006 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric : If it works for him, that's great, but I would happily drop cinder blocks on my feet to get away from this architecture. Does that work? < 1314841499 632393 :CPO\_\bot!~elliott@unaffiliated/elliott PRIVMSG #esoteric :ais523: here, do you know how to access the environment from Windows C? < 1314841528 976081 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :CPO\_\bot: it depends on what version of Windows C you're using; I've even seen some where it was "third arg to main" < 1314841541 943680 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :but at least in Windows 3.1, I think they provided a getenv with moderately posixy semantics < 1314841557 253648 :CPO\_\bot!~elliott@unaffiliated/elliott PRIVMSG #esoteric :ais523: yes, but I want more than getenv/putenv give < 1314841579 615752 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :also, here's a fun one: did you know that the fourth arg to main is a struct, one of whose elements contains random numbers? < 1314841583 602828 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :I haven't figured out what it's for yet < 1314841586 894547 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :also, this seems specific to ELF < 1314841606 484538 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :which gives a bit of a mental disconnect to me, "why should the fourth arg to main depend on what format the executable has" < 1314841625 519978 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :either that, or I misread kernel source, as I don't think it's documented anywhere I've read < 1314841628 659067 :CPO\_\bot!~elliott@unaffiliated/elliott PRIVMSG #esoteric :it's not random < 1314841631 957549 :CPO\_\bot!~elliott@unaffiliated/elliott PRIVMSG #esoteric :they're the ELF header, I think < 1314841672 191257 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :oh, here we go: http://articles.manugarg.com/aboutelfauxiliaryvectors.html < 1314841675 528158 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :CPO\_\bot: not the header, exactly < 1314841683 651701 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :they're info from the header filled into a struct by the ELF loader < 1314841687 275601 :CPO\_\bot!~elliott@unaffiliated/elliott PRIVMSG #esoteric :same thing :P < 1314841697 42488 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :but not all the info is from the header, one of the slots is just a bunch of random numbers < 1314841709 138982 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :not random as in unclear what they're for, random as in reading from /dev/urandom < 1314841723 809401 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :I'm wondering if I should try to stabilise them in the Secret Project, or whether nobody ever uses them anyway < 1314841745 90215 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :there are other ways to fool the Secret Project, so worrying about that one seems like overkill < 1314841752 441630 :CPO\_\bot!~elliott@unaffiliated/elliott PRIVMSG #esoteric :ooh, what's one way < 1314841760 885056 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :getting gdb involved, in any way at all < 1314841766 648055 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :the Secret Project actively resists being debugged < 1314841771 265459 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :or running on debuggers < 1314841780 86383 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :in fact, I haven't even managed to get it to coredump < 1314841791 972247 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :as a bonus, it also causes valgrind to crash with an internal error < 1314841812 433209 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :(in valgrind, that is) < 1314841828 626555 :CPO\_\bot!~elliott@unaffiliated/elliott PRIVMSG #esoteric :ais523: hmm, as in, it has actual code to thwart debuggers? < 1314841834 192457 :CPO\_\bot!~elliott@unaffiliated/elliott PRIVMSG #esoteric :now I'm thinking there must be some kind of untrusted element to it < 1314841844 571155 :CPO\_\bot!~elliott@unaffiliated/elliott PRIVMSG #esoteric :reproducibly running student code in a sandbox? < 1314841845 238275 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :CPO\_\bot: not deliberately < 1314841848 850289 :CPO\_\bot!~elliott@unaffiliated/elliott PRIVMSG #esoteric :aw < 1314841852 951973 :CPO\_\bot!~elliott@unaffiliated/elliott PRIVMSG #esoteric :I thought I was on to something there < 1314841859 864561 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :or, in, it does have code to thwart debuggers, but that code is not there for the purpose of thwarting debuggers < 1314841873 129949 :CPO\_\bot!~elliott@unaffiliated/elliott PRIVMSG #esoteric :right < 1314841884 177435 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :just code that does things that only a debugger would do < 1314841917 341812 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :and it's thwarting those things because they contend for access to tracepids with the secret project itsel < 1314841919 622103 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :*itself < 1314841957 348990 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :(I still don't get how I ended up with a process that wasn't a zombie, had apparently no parent, couldn't be killed with any signal at all (not even -9 as root) and was apparently being debugged by the real init, though...) < 1314841974 472407 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :(possibly a kernel bug, the secret project's probably going to expose a bunch of those as a side-effect) < 1314841993 404970 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :and it's not like I could just tell init to stop debugging it < 1314842073 421242 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :I fixed it by rebooting, in the end < 1314842085 260318 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :although not immediately, the situation wasn't doing any /harm/ other than being massively confusing < 1314842102 764125 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :!haskell filter Unsafe.Coerce.unsafeCoerce [Left 1, Right 2, Left 3, Right 4] < 1314842105 552805 :EgoBot!foobar@codu.org PRIVMSG #esoteric :​[Right 2,Right 4] < 1314842120 935874 :CPO\_\bot!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Shiro/Types.hs:19:10: Warning: orphan instance: instance Show Any < 1314842121 107020 :CPO\_\bot!~elliott@unaffiliated/elliott PRIVMSG #esoteric :: < 1314842121 271659 :CPO\_\bot!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Failing due to -Werror. < 1314842122 473280 :CPO\_\bot!~elliott@unaffiliated/elliott PRIVMSG #esoteric :oh /come on/ < 1314842125 80291 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :oerjan: wait what? < 1314842132 330118 :CPO\_\bot!~elliott@unaffiliated/elliott PRIVMSG #esoteric :ais523: < 1314842135 307217 :CPO\_\bot!~elliott@unaffiliated/elliott PRIVMSG #esoteric :?quote ddarius unsafeCoerce < 1314842135 472049 :lambdabot!~lambdabot@li85-105.members.linode.com PRIVMSG #esoteric :ddarius says: isJust :: Maybe a -> Bool; isJust = unsafeCoerce < 1314842139 625859 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :is this something to do with Either's definition of a monad? < 1314842157 136464 :CPO\_\bot!~elliott@unaffiliated/elliott PRIVMSG #esoteric :what? < 1314842159 488355 :CPO\_\bot!~elliott@unaffiliated/elliott PRIVMSG #esoteric :no < 1314842161 630603 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :Does that work? < 1314842166 990343 :CPO\_\bot!~elliott@unaffiliated/elliott PRIVMSG #esoteric :it's to do with GHC's pointer representation < 1314842168 103107 :CPO\_\bot!~elliott@unaffiliated/elliott PRIVMSG #esoteric :zzo38: yes < 1314842170 417896 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :ah, I see < 1314842175 544126 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :@src isJust < 1314842175 708769 :lambdabot!~lambdabot@li85-105.members.linode.com PRIVMSG #esoteric :isJust Nothing = False < 1314842175 873522 :lambdabot!~lambdabot@li85-105.members.linode.com PRIVMSG #esoteric :isJust _ = True < 1314842184 389362 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :bleh, I was hoping it would be defined /as/ unsafeCoerce < 1314842187 44544 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :I don't think you should write it that way except possibly in an optimization rule < 1314842208 424906 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :!haskell Data.Maybe.catMaybes $ Unsafe.Coerce.unsafeCoerce [Left 1, Right 2, Left 3, Right 4] < 1314842211 182805 :EgoBot!foobar@codu.org PRIVMSG #esoteric :​[(),()] < 1314842213 876645 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :As an optimization rule, write it that way but leave a note in case it stops working in a different version or on different computers < 1314842219 545816 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :ah hm < 1314842228 279464 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :!haskell Data.Maybe.catMaybes $ Unsafe.Coerce.unsafeCoerce [Left 1, Right 2, Left 3, Right 4] :: [Integer] < 1314842231 251086 :EgoBot!foobar@codu.org PRIVMSG #esoteric :​[2,4] < 1314842238 143795 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric ::t Unsafe.Coerce.unsafeCoerce < 1314842238 802604 :lambdabot!~lambdabot@li85-105.members.linode.com PRIVMSG #esoteric :forall a b. a -> b < 1314842242 94410 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :I thought os < 1314842243 574854 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :*so < 1314842248 227312 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :hmm, this is reminding me of Ursala < 1314842250 35116 :CPO\_\bot!~elliott@unaffiliated/elliott PRIVMSG #esoteric : As an optimization rule, write it that way but leave a note in case it stops working in a different version or on different computers < 1314842254 521625 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :which did that sort of thing to /everything/ < 1314842255 59436 :CPO\_\bot!~elliott@unaffiliated/elliott PRIVMSG #esoteric :zzo38: it already optimises down to that at runtime, almost certainly < 1314842257 331739 :CPO\_\bot!~elliott@unaffiliated/elliott PRIVMSG #esoteric :this is just a silly trick < 1314842266 917368 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :Overload did too, I suppose < 1314842267 81963 :CPO\_\bot!~elliott@unaffiliated/elliott PRIVMSG #esoteric :ais523: I still think Ursala was actually really interesting < 1314842279 760163 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :CPO\_\bot: it had interesting ideas there, they were just assembled in an insane way < 1314842286 742021 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :it reminds me quite a bit of Overload, actually < 1314842299 580757 :CPO\_\bot!~elliott@unaffiliated/elliott PRIVMSG #esoteric :hmm, what's the standard operator for vector+vector again? < 1314842302 216742 :CPO\_\bot!~elliott@unaffiliated/elliott PRIVMSG #esoteric :.+.? < 1314842307 815384 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :Describe more about Overload? < 1314842326 5485 :CPO\_\bot!~elliott@unaffiliated/elliott PRIVMSG #esoteric : @quote ddarius isJust < 1314842326 170285 :CPO\_\bot!~elliott@unaffiliated/elliott PRIVMSG #esoteric : ddarius says: isJust :: Maybe a -> Bool; isJust = unsafeCoerce < 1314842326 170515 :CPO\_\bot!~elliott@unaffiliated/elliott PRIVMSG #esoteric : ddarius wins! < 1314842330 199485 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :zzo38: the language that Underload is a tarpit of, it has things like equivalences between characters and lists of strings, and pointers < 1314842330 575509 :CPO\_\bot!~elliott@unaffiliated/elliott PRIVMSG #esoteric :ok, who's the spy :D < 1314842360 4290 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :and is possibly internally consistent, but large and sprawling and unmaintainable < 1314842362 481430 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :ais523: You told me that before. Write more about Overload in the [[Talk:Underload]] page in Esolang wiki < 1314842379 836472 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :there isn't much more to write < 1314842380 493194 :CPO\_\bot!~elliott@unaffiliated/elliott PRIVMSG #esoteric :ais523: or ELSE < 1314842384 13526 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :I have some unfinished interps you can look at < 1314842390 492774 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :if you want to get an idea of what the lang is like < 1314842400 185070 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :ais523: OK, post those to the [[Talk:Underload]]. < 1314842407 619263 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :nah, it's an entirely unrelated language < 1314842414 200128 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :that Underload is a tarpit of Overload is mostly just coincidence < 1314842420 346552 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :or, umm, historical etymology, or something < 1314842423 480230 :CPO\_\bot!~elliott@unaffiliated/elliott PRIVMSG #esoteric :!haskell print (Unsafe.Coerce.unsafeCoerce False :: Maybe Int) < 1314842424 795502 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :Then post it on your user page. < 1314842425 292078 :CPO\_\bot!~elliott@unaffiliated/elliott PRIVMSG #esoteric :!haskell print (Unsafe.Coerce.unsafeCoerce True :: Maybe Int) < 1314842426 194462 :EgoBot!foobar@codu.org PRIVMSG #esoteric :Nothing < 1314842430 598377 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :the only real evidence is that <>[] are reserved in Underload for no apparent reason < 1314842432 572519 :CPO\_\bot!~elliott@unaffiliated/elliott PRIVMSG #esoteric :!haskell print (Unsafe.Coerce.unsafeCoerce True :: Maybe Int) < 1314842434 859836 :EgoBot!foobar@codu.org PRIVMSG #esoteric :​./interps/ghc/runghc: line 7: 30354 Segmentation fault ghc -O2 -e "`cat $1`" 2> /dev/null < 1314842435 623255 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :I'll just post it in-channel, seems simplest < 1314842440 489530 :CPO\_\bot!~elliott@unaffiliated/elliott NICK :elliott < 1314842447 185950 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :!haskell print (Unsafe.Coerce.unsafeCoerce False :: Maybe ()) < 1314842449 517791 :EgoBot!foobar@codu.org PRIVMSG #esoteric :Nothing < 1314842451 141443 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :!haskell print (Unsafe.Coerce.unsafeCoerce True :: Maybe ()) < 1314842453 660521 :EgoBot!foobar@codu.org PRIVMSG #esoteric :​./interps/ghc/runghc: line 7: 30718 Segmentation fault ghc -O2 -e "`cat $1`" 2> /dev/null < 1314842468 964779 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :oh wow, this code is /old/ < 1314842476 56586 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :anyone here recognise pre-standard C++? < 1314842484 26749 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric : ok, who's the spy :D <-- it was in today's haskell weekly news < 1314842485 600168 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :yikes < 1314842490 865814 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :oerjan: heh < 1314842497 30873 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :at least, it appears to be ifdeffed between pre-standard C++ and nonidiomatic standard C++ < 1314842497 650639 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :Obviuosly the constructor for True takes no parameters while Just does take some, so it would try to access unallocated memory, I think. < 1314842508 251414 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :oh no, my mouse is doing that thing again < 1314842518 485919 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :I liked pre-standard C++, it was not yet insane < 1314842530 766361 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :also, < 1314842531 262491 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric : hmm, what's the standard operator for vector+vector again? < 1314842531 427404 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric : .+.? < 1314842603 868223 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :Do you know how to play Pasur or Scope? I know how to play these card games. I also know how to play (two variants of) Scopone Scientifico, maybe I can invent Scopone Frobozzica. < 1314842613 229924 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :oh, real wow, this code uses macros that use stringisation just so their arguments don't need to be double-quoted < 1314842625 956517 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :meanwhile, attempting to pastebin it has frozen Firefox < 1314842634 131603 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :I'm waiting for Firefox to unfreeze so I can show you < 1314842637 917431 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :or maybe I'll just use Sprunge < 1314842639 564041 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :Then use sprunge < 1314842651 917343 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :I always use sprunge. < 1314842666 99107 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :Sprunge does not require a web browser to work properly. < 1314842667 254021 :edwardk!~edwardk@pdpc/supporter/professional/edwardk JOIN :#esoteric < 1314842685 186433 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :ANOTHER ONE < 1314842692 406046 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :Which means it can be accessed without requiring loading the web browser program. < 1314842697 995751 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :wow, pastie has also doubled all the newlines < 1314842707 981795 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :I think because it's so old it uses \r\n line-endings < 1314842710 615874 :edwardk!~edwardk@pdpc/supporter/professional/edwardk PRIVMSG #esoteric :i haven't wandered out of my native #haskell in a while, but i'm not THAT much of a stranger =P < 1314842712 784975 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :edwardk: ok, who is responsible :D < 1314842730 526333 :edwardk!~edwardk@pdpc/supporter/professional/edwardk PRIVMSG #esoteric :elliott: kmc talking about currywurst < 1314842731 181946 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :(it also has a "C/C++" highlighting option, which is an appropriate description of the language the interp is actually written in) < 1314842743 132111 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :zzo38 (and other people interested in Overload): http://pastie.org/private/9a3ws8d7h71xdadmv4aqfg < 1314842745 703477 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :wtf is currywurst < 1314842764 4564 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :Now I have to load the web browser program, but, OK < 1314842767 460880 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :ais523: I don't read double-spaced code < 1314842780 468372 :edwardk!~edwardk@pdpc/supporter/professional/edwardk PRIVMSG #esoteric :apparently something that kmc likes to eat < 1314842787 770659 :augur!~augur@129.2.129.34 QUIT :Ping timeout: 258 seconds < 1314842789 412236 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :Why is it double spaced? < 1314842795 350728 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :because it uses \r\n newlines < 1314842830 304653 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :Oops it got cut off < 1314842843 645636 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :http://sprunge.us/hMUA?cpp seems to be singlespaced < 1314842849 405135 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :so you can read that instead < 1314842959 183857 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :I have a file of poker variants including: Draw-Stud Poker, Crap Poker, Bug Poker, Janken Poker, Baccarat Poker, Leg Poker, Dynamic Poker, Pokemon Card Poker, Pokino, Uncyclopedian Poker, Dungeon Poker, Steamship Poker, etc < 1314843120 692048 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :wow, my computer ran out of memory at 32K of heap? that program must be old < 1314843128 149809 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :To play Scope: You need a deck of forty cards, consisting of numbers one to ten of each of four suits. One suit is money. Give three cards to each player and four cards on the floor. < 1314843170 754372 :augur!~augur@129.2.129.34 JOIN :#esoteric < 1314843256 743033 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :On your turn, select one card from your hand and play that card. If it is the same rank as one of the cards on the floor, you *must* take that one, and you put both cards in your score pile. (If there are multiples of that rank, you can select which one you want.) Otherwise, you can either leave it on the floor, or take that card together with any number of cards from the floor that add up to the card in your hand (for example, if you play 7 yo < 1314843283 686991 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :If you played the card resulting in no cards on the floor, you make a scope and immediately earn one point. < 1314843286 651019 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :zzo38: the line was cut off, at "play 7 yo" < 1314843304 329900 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :u can get 4 and 3) < 1314843335 362111 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :If both players have no cards in hand, deal three cards to each player again. The last card played in the entire game does not make a scope even if it picks up everything. < 1314843336 691112 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :elliott: zzo38: for a hint of what Underload is like, look at "EnsureUncar", its purpose is to ensure that a particular list is the first element of another list < 1314843343 327184 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :as in, of some other list < 1314843348 605615 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :"Underload" < 1314843352 224131 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :or, actually, I think any element of some other list < 1314843354 247061 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :and, right, Overload < 1314843364 527673 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :I don't type Overload's name much, my fingers were confused < 1314843375 352855 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :After all cards are played, if any cards remain on the floor, whoever took cards into their scoring pile last takes all the remaining cards on the floor. < 1314843408 823645 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :And then you count points. If you have more cards than opponent you get 1 point. If you have more money than opponent you get 1 point. If you have the seven of money then you get 1 point. If you make premere you get 1 point. < 1314843409 318679 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :hmm, the data structure Overload uses doesn't have a name < 1314843410 468809 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :oh my god, -Wall is complaining about the horrific function < 1314843415 287102 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :I think I'll call it "the quadruply linked list" < 1314843422 548672 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :elliott: in Overload? or in your code? < 1314843429 792087 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :my code < 1314843450 852389 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :I hate to think what -Wall's reaction would be to that code < 1314843456 388560 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :To figure out the premere, each player reveals one card of each suit, of the highest ranking card. For the purpose of premere, the cards rank in this order (from highest to lowest): 7, 6, 1, 5, 4, 3, 2, 10, 9, 8. < 1314843457 893205 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :although at least it /compiles/ with an old version of g++ < 1314843461 395078 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :it's really horribly written < 1314843485 459247 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :(I don't know why the cards are ranked like this; I did not invent this game.) < 1314843488 972082 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :oh, I just figured out what // wmw-dependent means < 1314843492 608147 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :I think it means "what means what" < 1314843508 302615 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :Match is played up to eleven points. < 1314843508 790465 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :#define OVCMD(a) InsBefore(&ITOS, new TListEl("(" #a ")",1),1); goto eval < 1314843529 37355 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :Now do you know how to play this game? < 1314843547 936829 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :oh good, for a moment I thought that code was literally replacing abbreviations with their expansions in the actual code, but it's saner than that < 1314843570 533366 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :(in Underload, if you do this you don't notice, as it happens only as they're executing; in Overload you can go and look back at previously executed code using pointers) < 1314843634 108585 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :and , is possibly the most Overloady instruction of all; it returns a pointer to itself < 1314843640 964386 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :as in, to the , operation < 1314843675 813660 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :I suppose gnu C has the equivalent "a: void* p = &&a;", which is as close as you can get in any other lang < 1314843731 96924 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :I think LLVM can point to labels, although they can only be used for indirect branch instructions, and only in the same function < 1314843777 533160 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :in Overload, you used that sort of trick to, say, get a pointer to the IP, then move it to the end of the current function to get the return address, and follow that < 1314843921 468902 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :I invented an instruction set and computer system on a sheet of paper. < 1314843995 375388 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :It does have an instruction which can save a pointer to the immediately following instruction into a register: MOV A P < 1314844119 74625 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :!haskell map Unsafe.Coerce.unsafeCoerce [[1,2],[3,4,5],[6,7,8,9]] :: [Maybe Integer] < 1314844121 994025 :EgoBot!foobar@codu.org PRIVMSG #esoteric :​[Just 1,Just 3,Just 6] < 1314844198 633259 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :!haskell map Unsafe.Coerce.unsafeCoerce [[1,2],[3,4,5],[6,7,8,9],[]] :: [Maybe Integer] < 1314844201 728183 :EgoBot!foobar@codu.org PRIVMSG #esoteric :​[Just 1,Just 3,Just 6,Nothing] < 1314844231 876393 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :oerjan: Can you guess that? I think it is probably possible to do so. In fact that seems a possible usefulness. It should be written as a function not using unsafeCoerce and then optimized into unsafeCoerce (use a RULES pragma if the compiler cannot do it by itself) < 1314844270 467602 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake QUIT :Quit: Reconnecting < 1314844275 214908 :CakeProphet!~adam@c-24-126-235-176.hsd1.ga.comcast.net JOIN :#esoteric < 1314844275 708617 :CakeProphet!~adam@c-24-126-235-176.hsd1.ga.comcast.net QUIT :Changing host < 1314844275 873694 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake JOIN :#esoteric < 1314844289 25695 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric ::t toJust < 1314844290 71120 :lambdabot!~lambdabot@li85-105.members.linode.com PRIVMSG #esoteric :Not in scope: `toJust' < 1314844294 38397 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :lulz < 1314844304 899707 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :@hoogle [a] -> Maybe a < 1314844305 680354 :lambdabot!~lambdabot@li85-105.members.linode.com PRIVMSG #esoteric :Data.Maybe listToMaybe :: [a] -> Maybe a < 1314844305 845186 :lambdabot!~lambdabot@li85-105.members.linode.com PRIVMSG #esoteric :Data.List find :: (a -> Bool) -> [a] -> Maybe a < 1314844305 845363 :lambdabot!~lambdabot@li85-105.members.linode.com PRIVMSG #esoteric :Prelude head :: [a] -> a < 1314844330 678811 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :> map listToMaybe [[1,2],[3,4,5],[6,7,8,9],[]] < 1314844331 714304 :lambdabot!~lambdabot@li85-105.members.linode.com PRIVMSG #esoteric : [Just 1,Just 3,Just 6,Nothing] < 1314844346 672261 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :I think I can understand why unsafeCoerce does that on those operations. < 1314844349 443075 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :@src listToMaybe < 1314844350 5778 :lambdabot!~lambdabot@li85-105.members.linode.com PRIVMSG #esoteric :listToMaybe [] = Nothing < 1314844350 170430 :lambdabot!~lambdabot@li85-105.members.linode.com PRIVMSG #esoteric :listToMaybe (a:_) = Just a < 1314844360 22298 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :zzo38: yes, think of it as a C-style cast. < 1314844370 506169 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :CakeProphet: Yes it is what I thought of. < 1314844373 626686 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :thinking of it as a C-style cast does not fully explain why it works for isJust. < 1314844373 857531 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :and then imagine what the internal representations of those data types might look like. < 1314844379 268103 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :you have to understand the pointer tagging GHC does. < 1314844381 407790 :kmc!~keegan@c-98-216-51-47.hsd1.ma.comcast.net PRIVMSG #esoteric :it's more like a C++ reinterpret_cast than a C cast < 1314844382 400949 :preflex!~preflex@unaffiliated/mauke/bot/preflex QUIT :Ping timeout: 264 seconds < 1314844390 51639 :kmc!~keegan@c-98-216-51-47.hsd1.ma.comcast.net PRIVMSG #esoteric :because C's casts can alter bitwise representation too < 1314844394 43166 :kmc!~keegan@c-98-216-51-47.hsd1.ma.comcast.net PRIVMSG #esoteric :e.g. casting int to double < 1314844407 924276 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :kmc: But it is a pointer cast. < 1314844414 765008 :kmc!~keegan@c-98-216-51-47.hsd1.ma.comcast.net PRIVMSG #esoteric :sure you can think of it that way < 1314844420 544174 :kmc!~keegan@c-98-216-51-47.hsd1.ma.comcast.net PRIVMSG #esoteric :GHC's unsafeCoerce is always a no-op at runtime < 1314844434 962483 :kmc!~keegan@c-98-216-51-47.hsd1.ma.comcast.net PRIVMSG #esoteric :it just tells the typechecker to fuck off in the most unsubtle way possible < 1314844463 331290 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :Can GHC optimize other operations into unsafeCoerce if you wrote them in a way which it can do so? < 1314844492 893001 :kmc!~keegan@c-98-216-51-47.hsd1.ma.comcast.net PRIVMSG #esoteric :wrapping/unwrapping a newtype is also a no-op at runtime < 1314844511 638355 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :Yes, I know that too. < 1314844543 997923 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :zzo38: you could write such optimizations via RULE, of course. < 1314844575 168631 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :CakeProphet: Yes, it is what I am thinking of; you could do that. What I mean is if it can do it by itself. If it cannot, then you should use rule pragmas. < 1314844589 288729 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :right, I understood, my response just wasn't helpful. heh < 1314844633 53000 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :Other than rule pragmas, the only other thing I think you should ever use unsafeCoerce for is when using FFI codes. < 1314844669 130864 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :!haskell Control.Monad.filterM Unsafe.Coerce.unsafeCoerce [[1,2],[3,4],[5,6]] :: [[Integer]] < 1314844700 305827 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :forgot to print. ;) < 1314844714 25009 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :no it does that < 1314844719 835684 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :ah. < 1314844725 722413 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :but it was an error < 1314844752 185578 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric ::t unsafeCoerce < 1314844753 179894 :lambdabot!~lambdabot@li85-105.members.linode.com PRIVMSG #esoteric :Not in scope: `unsafeCoerce' < 1314844756 174660 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :!haskell !import Control.Monad; import Unsafe.Coerce; main = print (filterM unsafeCoerce [[1,2],[3,4],[5,6]] :: [[Integer]]) < 1314844759 210848 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :er < 1314844760 254582 :edwardk!~edwardk@pdpc/supporter/professional/edwardk PRIVMSG #esoteric :zzo38: i occasionally use it to add observable sharing < 1314844764 84782 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :!haskell import Control.Monad; import Unsafe.Coerce; main = print (filterM unsafeCoerce [[1,2],[3,4],[5,6]] :: [[Integer]]) < 1314844767 531037 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :well b = m Bool here < 1314844775 389637 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :in unsafeCoerce :: a -> b < 1314844775 554355 :edwardk!~edwardk@pdpc/supporter/professional/edwardk PRIVMSG #esoteric :zzo38: where the type being discarded is provably irrelevant < 1314844788 785686 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :!haskell import Control.Monad; import Unsafe.Coerce; main = print (filterM unsafeCoerce [[1,2],[3,4],[5,6]] :: [[Integer]]) < 1314844805 578107 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :oops < 1314844824 142028 :edwardk!~edwardk@pdpc/supporter/professional/edwardk PRIVMSG #esoteric :foo (Left a) = Left a -- this case can be rewritten using an unsafeCoerce for instance < 1314844881 487334 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :hmm, is it (*+*) or (.+.)... < 1314844885 570983 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :> filterM (const [True]) [1,2,3] < 1314844886 593325 :lambdabot!~lambdabot@li85-105.members.linode.com PRIVMSG #esoteric : [[1,2,3]] < 1314844911 299922 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :oh hm < 1314844930 97033 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :!haskell import Control.Monad; import Unsafe.Coerce; main = print (filterM (const . unsafeCoerce) [[1,2],[3,4],[5,6]] :: [[Integer]]) < 1314844959 506297 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :04:43 =EgoBot> Execution of /tmp/input.24301 aborted due to compilation errors. < 1314845010 511742 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :helpful < 1314845039 829052 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :@hoogle .+. < 1314845040 439289 :lambdabot!~lambdabot@li85-105.members.linode.com PRIVMSG #esoteric :No results found < 1314845043 997975 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :@hoogle *+* < 1314845044 518441 :lambdabot!~lambdabot@li85-105.members.linode.com PRIVMSG #esoteric :No results found < 1314845109 470866 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :oh wait @hoogle has only a few packages < 1314845114 148266 :Lymee!~moe@unaffiliated/cirno-chan PRIVMSG #esoteric :@hoogle fix < 1314845114 314077 :lambdabot!~lambdabot@li85-105.members.linode.com PRIVMSG #esoteric :Data.Function fix :: (a -> a) -> a < 1314845114 478606 :lambdabot!~lambdabot@li85-105.members.linode.com PRIVMSG #esoteric :Control.Monad.Fix fix :: (a -> a) -> a < 1314845114 478711 :lambdabot!~lambdabot@li85-105.members.linode.com PRIVMSG #esoteric :module Control.Monad.Fix < 1314845120 771920 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :ACTION tries hayoo < 1314845134 868940 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :nothing found for (.+.) :-( < 1314845151 175536 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :why don't you look up a vector package < 1314845174 732597 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :Do you know about the BLISS programming language? It also has some stuff including macros that you do not find in others, maybe it can be combined with LLVM somehow to make something < 1314845204 972533 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :oerjan: I tried < 1314845211 946936 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :they all had alphabetical operations :( < 1314845217 805308 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :huh < 1314845229 840082 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :like mxm, mxv or whatever < 1314845231 818948 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :ugly < 1314845248 623402 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :haskellers who don't make up new operators whenever possible? impossible! < 1314845302 409738 :kmc!~keegan@c-98-216-51-47.hsd1.ma.comcast.net PRIVMSG #esoteric :i love that y'all have a bot with unsafeCoerce < 1314845303 483128 :Lymee!~moe@unaffiliated/cirno-chan PRIVMSG #esoteric :@define unsafeCoerce = fix ($) < 1314845308 750959 :kmc!~keegan@c-98-216-51-47.hsd1.ma.comcast.net PRIVMSG #esoteric :i assume it's heavily sandboxed < 1314845310 996385 :Lymee!~moe@unaffiliated/cirno-chan PRIVMSG #esoteric :@def unsafeCoerce = fix ($) < 1314845311 202919 :lambdabot!~lambdabot@li85-105.members.linode.com PRIVMSG #esoteric :Maybe you meant: bf do let < 1314845317 120500 :Lymee!~moe@unaffiliated/cirno-chan PRIVMSG #esoteric :@let unsafeCoerce = fix ($) < 1314845317 610329 :lambdabot!~lambdabot@li85-105.members.linode.com PRIVMSG #esoteric : Defined. < 1314845333 643341 :Lymee!~moe@unaffiliated/cirno-chan PRIVMSG #esoteric :> unsafeCoerce 1 :: Maybe Int < 1314845338 90773 :Lymee!~moe@unaffiliated/cirno-chan PRIVMSG #esoteric :Fake unsafeCoerce! < 1314845339 245086 :edwardk!~edwardk@pdpc/supporter/professional/edwardk PRIVMSG #esoteric :@type fix id < 1314845339 741074 :Lymee!~moe@unaffiliated/cirno-chan PRIVMSG #esoteric :ACTION hides < 1314845340 66780 :lambdabot!~lambdabot@li85-105.members.linode.com PRIVMSG #esoteric :forall a. a < 1314845348 727498 :lambdabot!~lambdabot@li85-105.members.linode.com PRIVMSG #esoteric : thread killed < 1314845352 431934 :edwardk!~edwardk@pdpc/supporter/professional/edwardk PRIVMSG #esoteric :just assume the hypothesis and be done < 1314845360 171793 :GreaseMonkey!~gm@121-73-176-100.dsl.telstraclear.net JOIN :#esoteric < 1314845360 599900 :GreaseMonkey!~gm@121-73-176-100.dsl.telstraclear.net QUIT :Changing host < 1314845360 764372 :GreaseMonkey!~gm@unaffiliated/greasemonkey JOIN :#esoteric < 1314845364 603112 :Lymee!~moe@unaffiliated/cirno-chan PRIVMSG #esoteric :@type fix ($) < 1314845370 569826 :Sgeo!~Sgeo@ool-ad034d00.dyn.optonline.net PRIVMSG #esoteric :kmc, it's just the same lambdabot that's in #haskell < 1314845380 440544 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Sgeo: no... < 1314845386 2927 :Sgeo!~Sgeo@ool-ad034d00.dyn.optonline.net PRIVMSG #esoteric :Can you use unsafeCoerce for nefarious purposes? < 1314845388 53231 :Sgeo!~Sgeo@ool-ad034d00.dyn.optonline.net PRIVMSG #esoteric :elliott, wait what? < 1314845389 264598 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :kmc: yeah Gregor worked hard on the sandboxing < 1314845392 53758 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :it's EgoBot < 1314845393 377473 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :kmc: It's heavily sandboxed, but HackEgo is more permissive < 1314845395 663861 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :`run echo hi >q < 1314845399 789496 :HackEgo!Gregor@codu.org PRIVMSG #esoteric :No output. < 1314845400 608053 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :`run cat q < 1314845402 581397 :HackEgo!Gregor@codu.org PRIVMSG #esoteric :cat: q: No such file or directory < 1314845404 583574 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :`run cat q < 1314845405 80945 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :argh < 1314845406 562723 :HackEgo!Gregor@codu.org PRIVMSG #esoteric :hi < 1314845408 540405 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :(sometimes it has sync issues) < 1314845409 367813 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :`rm q < 1314845410 849414 :HackEgo!Gregor@codu.org PRIVMSG #esoteric :No output. < 1314845412 171564 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :`l < 1314845412 830720 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :`ls < 1314845414 715886 :HackEgo!Gregor@codu.org PRIVMSG #esoteric :​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: l: not found < 1314845415 359268 :HackEgo!Gregor@codu.org PRIVMSG #esoteric :babies \ bin \ bluhbluh \ canary \ env \ foo \ paste \ ps \ quine.pl \ quine2.pl \ quine3.pl \ quotes \ quotese \ tekst \ test.c \ tmp.tmp < 1314845418 849206 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :`help < 1314845419 853600 :HackEgo!Gregor@codu.org PRIVMSG #esoteric :Runs arbitrary code in GNU/Linux. Type "`", or "`run " for full shell commands. "`fetch " downloads files. Files saved to $PWD are persistent, and $PWD/bin is in $PATH. $PWD is a mercurial repository, "`revert " can be used to revert to a revision. See http://codu.org/projects/hackbot/fshg/ < 1314845473 128149 :kmc!~keegan@c-98-216-51-47.hsd1.ma.comcast.net PRIVMSG #esoteric :quotse? < 1314845483 877019 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :`quote < 1314845486 4790 :HackEgo!Gregor@codu.org PRIVMSG #esoteric :483) btw i saw my first prostitute about a week ago < 1314845489 626369 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :good quotes < 1314845495 437202 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :(quote database is of questionable quality) < 1314845496 306280 :kmc!~keegan@c-98-216-51-47.hsd1.ma.comcast.net PRIVMSG #esoteric :does it respond to PM? < 1314845506 433313 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :yes, but it logs anything that changes the filesystem < 1314845510 825555 :kmc!~keegan@c-98-216-51-47.hsd1.ma.comcast.net PRIVMSG #esoteric :hehe < 1314845515 962335 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :and those can be reverted < 1314845522 871515 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :the quote system is rather advanced: < 1314845526 711838 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :`run ls bin/*quote* < 1314845529 360995 :HackEgo!Gregor@codu.org PRIVMSG #esoteric :bin/addquote \ bin/allquotes \ bin/delquote \ bin/pastenquotes \ bin/pastequotes \ bin/quote \ bin/quotes < 1314845541 548443 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :`perl -v < 1314845544 199375 :HackEgo!Gregor@codu.org PRIVMSG #esoteric :​\ This is perl, v5.10.0 built for x86_64-linux-gnu-thread-multi \ \ Copyright 1987-2007, Larry Wall \ \ Perl may be copied only under the terms of either the Artistic License or the \ GNU General Public License, which may be found in the Perl 5 source kit. \ \ Complete documentation for Perl, including FAQ lists, should be < 1314845554 139120 :Lymee!~moe@unaffiliated/cirno-chan PRIVMSG #esoteric :`run cat /dev/urandom | perl < 1314845556 137684 :HackEgo!Gregor@codu.org PRIVMSG #esoteric :Unrecognized character \xC7 in column 1 at - line 1. < 1314845559 290470 :Lymee!~moe@unaffiliated/cirno-chan PRIVMSG #esoteric :ACTION hides < 1314845568 514504 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :`cat /dev/urandom < 1314845570 819261 :HackEgo!Gregor@codu.org PRIVMSG #esoteric :​.݀Bgo-:h6ڵsU.b..7.R.܄.l..򋦋gmTdv+dlR5RPsWwiyԼN..l;BrjA_.^.y9Y<(-.Ñu{p.gJ*..a#-n\Y@鹜pP6e.U.vV.5|P9.?++~W>`ҌoL.ZI\m..qǎ\3e.d3.,..zs-h.. < 1314845580 208631 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :kmc: mauke: it's based on UMLBox, fwiw: https://bitbucket.org/GregorR/umlbox/overview; previously it was based on the (Debian-specific) plash < 1314845591 937625 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :(it's Gregor's) < 1314845601 9516 :kmc!~keegan@c-98-216-51-47.hsd1.ma.comcast.net PRIVMSG #esoteric :cool < 1314845616 534056 :lambdabot!~lambdabot@li85-105.members.linode.com QUIT :Ping timeout: 258 seconds < 1314845618 992582 :Lymee!~moe@unaffiliated/cirno-chan PRIVMSG #esoteric :`cat /dev/random < 1314845628 865478 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :`translateto no also, it has limited internet access < 1314845631 55360 :kmc!~keegan@c-98-216-51-47.hsd1.ma.comcast.net PRIVMSG #esoteric :`hexdump -C /dev/urandom < 1314845633 618796 :HackEgo!Gregor@codu.org PRIVMSG #esoteric :hexdump: invalid option -- \ usage: hexdump [-bcCdovx] [-e fmt] [-f fmt_file] [-n length] \ [-s skip] [file ...] \ hd [-bcdovx] [-e fmt] [-f fmt_file] [-n length] \ [-s skip] [file ...] < 1314845635 56580 :HackEgo!Gregor@codu.org PRIVMSG #esoteric :Traceback (most recent call last): \ File "/hackenv/bin/json", line 4, in \ data = json.loads(sys.stdin.read().decode('utf-8')) \ File "/opt/python27/lib/python2.7/json/__init__.py", line 310, in loads \ return _default_decoder.decode(s) \ File "/opt/python27/lib/python2.7/json/decoder.py", line 346, < 1314845637 344709 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :kmc: you need `run for multiple arugments < 1314845639 523409 :kmc!~keegan@c-98-216-51-47.hsd1.ma.comcast.net PRIVMSG #esoteric :`run hexdump -C /dev/urandom < 1314845641 9516 :kmc!~keegan@c-98-216-51-47.hsd1.ma.comcast.net PRIVMSG #esoteric :*nod* < 1314845641 646183 :HackEgo!Gregor@codu.org PRIVMSG #esoteric :00000000 5c 50 2b 17 29 6c be e8 d0 15 1e 99 26 a6 e0 a1 |\P+.)l......&...| \ 00000010 7c 54 c2 93 eb a1 59 b2 ea 62 50 27 e1 99 63 d2 ||T....Y..bP'..c.| \ 00000020 03 82 5a 43 8b dc 0c 61 ec 10 ba 82 ff 85 15 28 |..ZC...a.......(| \ 00000030 44 89 38 a4 ac 20 25 fd c0 13 7f 20 80 f4 86 0b |D.8.. %.... ....| \ 00000040 < 1314845647 74246 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Gregor: translation is broken again :P < 1314845650 230573 :HackEgo!Gregor@codu.org PRIVMSG #esoteric :No output. < 1314845652 141593 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :fixed a bug in ploki's halting detector :-) < 1314845652 535627 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :`translateto sv also, it has limited internet access < 1314845655 542271 :HackEgo!Gregor@codu.org PRIVMSG #esoteric :Traceback (most recent call last): \ File "/hackenv/bin/json", line 4, in \ data = json.loads(sys.stdin.read().decode('utf-8')) \ File "/opt/python27/lib/python2.7/json/__init__.py", line 310, in loads \ return _default_decoder.decode(s) \ File "/opt/python27/lib/python2.7/json/decoder.py", line 346, < 1314845697 826777 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :`translateto hu also, it has limited internet access < 1314845700 833555 :HackEgo!Gregor@codu.org PRIVMSG #esoteric :Traceback (most recent call last): \ File "/hackenv/bin/json", line 4, in \ data = json.loads(sys.stdin.read().decode('utf-8')) \ File "/opt/python27/lib/python2.7/json/__init__.py", line 310, in loads \ return _default_decoder.decode(s) \ File "/opt/python27/lib/python2.7/json/decoder.py", line 346, < 1314845703 310843 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric ::| < 1314845706 357469 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :`translateto la also, it has limited internet access < 1314845709 495047 :HackEgo!Gregor@codu.org PRIVMSG #esoteric :Traceback (most recent call last): \ File "/hackenv/bin/json", line 5, in \ print eval(sys.argv[1]).encode('utf-8') \ File "", line 1, in \ TypeError: 'NoneType' object is not subscriptable < 1314845714 664196 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :fuck you < 1314846001 391342 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :...wait, Python sets argv to None ? < 1314846006 683133 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :WHY < 1314846041 416934 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :oh wait eval. < 1314846048 619050 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :could be something else then. < 1314846270 5869 :kmc!~keegan@c-98-216-51-47.hsd1.ma.comcast.net QUIT :Quit: Leaving < 1314846286 343781 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :hmm, synonyms of go as in "go west"? < 1314846289 465613 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :that aren't head < 1314846291 114276 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :face? < 1314846291 939460 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :travel? < 1314846300 678727 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :move? < 1314846306 119163 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :there's no movement involved < 1314846310 417929 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :it's about which direction you're facing < 1314846314 537492 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :oh, right, "go" is ambiguous, there < 1314846316 212523 :Sgeo!~Sgeo@ool-ad034d00.dyn.optonline.net PRIVMSG #esoteric :turn < 1314846316 599226 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :"aim" in that case < 1314846328 713535 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Sgeo: no, you turn < 1314846334 329816 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :you don't turn < 1314846341 456250 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :ais523: hmm, I think I prefer face < 1314846350 192852 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :actually, aim is nicer < 1314846354 620352 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :setDelta works, but is boring :) < 1314846363 11445 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :depends what this is for, and you hadn't explained until that line < 1314846365 317131 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :*depends on < 1314846393 933091 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :right < 1314846396 551898 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :it's go as in funge < 1314846433 138860 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :elliott: what are we talking about exactly? < 1314846435 154663 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :sounds interesting. < 1314846439 59993 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :funge < 1314846476 37712 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :-98 particularly? -108? < 1314846487 565889 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :I have make up new operator in Haskell when it seems useful to do so, but not always. < 1314846498 777476 :monqy!~swell@pool-71-102-215-70.snloca.dsl-w.verizon.net PRIVMSG #esoteric :ok < 1314846517 364976 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :Such as the (.::) operator < 1314846526 544881 :monqy!~swell@pool-71-102-215-70.snloca.dsl-w.verizon.net PRIVMSG #esoteric :what does (.::) do < 1314846542 405771 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :Defined as: (.::) = (.) . (.) . (.); infixr 9 .::; < 1314846571 863014 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :I needed it once in my implementation of Constantinople. < 1314846593 192781 :Sgeo!~Sgeo@ool-ad034d00.dyn.optonline.net PRIVMSG #esoteric ::t (.) . (.) . (.) < 1314846601 91821 :Sgeo!~Sgeo@ool-ad034d00.dyn.optonline.net PRIVMSG #esoteric :Grah < 1314846607 456038 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :"infixr 9 .::;" took me a while to mentally parse < 1314846616 465370 :azaq23!~derivecto@unaffiliated/azaq23 QUIT :Ping timeout: 240 seconds < 1314846621 806345 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :now I'm trying to work out what .:: even does < 1314846635 455646 :Sgeo!~Sgeo@ool-ad034d00.dyn.optonline.net PRIVMSG #esoteric :argh, it'll type differently due to the infixr, won't it :/ < 1314846637 593024 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric : -98 particularly? -108? < 1314846639 894958 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :latter is not a real language < 1314846641 378503 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :@unpl (.) . (.) . (.) < 1314846644 858275 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Sgeo: no? < 1314846655 444189 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :elliott: you might be trying to interpret it in an attempt to make it into a real language < 1314846656 538680 :monqy!~swell@pool-71-102-215-70.snloca.dsl-w.verizon.net PRIVMSG #esoteric :it looks like composition but the second operand takes three arguments < 1314846664 484226 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :hey, where'd lambdabot go? < 1314846673 107749 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :Does infixr cause it to type differently? < 1314846679 201159 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :[Error] lambdabot: No such nick/channel. < 1314846681 136040 :Sgeo!~Sgeo@ool-ad034d00.dyn.optonline.net PRIVMSG #esoteric :Is there a difference between (.) . ((.) . (.)) and ((.) . (.)) . (.) < 1314846688 777962 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :monqy: Yes that is what I used it for < 1314846693 714055 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :I don't think so, composing is associative < 1314846701 647721 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :ais523: I wish cpressey finished his revision to Funges but Vorpal ruined everything :( < 1314846703 407634 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :monqy: that was incredibly well worked out < 1314846715 395800 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :elliott: if ESO was still going, we could fix it < 1314846735 142827 :monqy!~swell@pool-71-102-215-70.snloca.dsl-w.verizon.net PRIVMSG #esoteric :I didn't feel like figuring it out myself so I politely asked ghci to give me its type signature < 1314846735 591101 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :but it didn't seem to work, as I was interested in standardising languages, and you and Vorpal were interested in how to best format the specs < 1314846741 947514 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :heh < 1314846744 979668 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :I put infixr 9 to make it the same fixity as the normal composition operator < 1314846758 97202 :Lymee!~moe@unaffiliated/cirno-chan PRIVMSG #esoteric :@unpl (.) . ((.) . (.)) < 1314846763 362698 :Lymee!~moe@unaffiliated/cirno-chan PRIVMSG #esoteric :@unpl ((.) . (.)) . (.) < 1314846768 29348 :monqy!~swell@pool-71-102-215-70.snloca.dsl-w.verizon.net PRIVMSG #esoteric :but if I stared at it long enough I think I could have done it < 1314846775 436643 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :(.) . (.) . (.) :: (b -> c) -> (a -> a1 -> a2 -> b) -> a -> a1 -> a2 -> c < 1314846783 706081 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :yep, that's a giveaway < 1314846807 317749 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :now I'm trying to work out why it does that < 1314846807 977215 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :Yes, . is an associative operator it is one of the category laws. The other one is id < 1314846844 508910 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :The monad laws are the same if you use <=< and return in place of . and id < 1314847203 231811 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric : foldl' (\m' ins -> Map.alter (maybe Nothing (\(_:xs) -> if null xs then Nothing else Just xs)) < 1314847203 411412 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric : ins m') < 1314847203 576166 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric : m (fpHandles ident) < 1314847203 576348 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :wha. < 1314847203 886962 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :t < 1314847291 491023 :monqy!~swell@pool-71-102-215-70.snloca.dsl-w.verizon.net PRIVMSG #esoteric :what is that < 1314847404 825422 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :a loop that modifies a map m < 1314847423 553801 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :for each key in fpHandles ident it drops the first element of the corresponding list < 1314847519 72639 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :!haskell :t maybe Nothing < 1314847521 772923 :EgoBot!foobar@codu.org PRIVMSG #esoteric :maybe Nothing :: (a1 -> Maybe a) -> Maybe a1 -> Maybe a < 1314847550 762682 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :aka =<< < 1314847605 899859 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric : padTake _ 0 _ = [] < 1314847606 107041 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric : padTake fill n [] = fill : padTake fill (n-1) [] < 1314847606 107208 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric : padTake fill n (x:xs) = x : padTake fill (n-1) xs < 1314847606 107314 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :I don't even know what some of this is < 1314847606 888278 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :oerjan: oh thanks < 1314847615 109637 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :omg maybe Nothing is a really nice =<< < 1314847618 396866 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :implementation I mean < 1314847623 602865 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric ::t M.alter (\mvs -> do _ : vs <- mvs; return vs) < 1314847627 472274 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :but um < 1314847634 747043 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :!haskell :t M.alter (\mvs -> do _ : vs <- mvs; return vs) < 1314847639 70171 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :oerjan: (>>= f) sure is a weird way to write that :D < 1314847684 629621 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :mauke: EgoBot doesn't have predefined imports < 1314847696 7013 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :!haskell :t Data.Map.alter (\mvs -> do _ : vs <- mvs; return vs) < 1314847698 800041 :EgoBot!foobar@codu.org PRIVMSG #esoteric :Data.Map.alter (\mvs -> do _ : vs <- mvs; return vs) :: (Ord k) => < 1314847709 917462 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :"good" job < 1314847717 541289 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :mauke: the rest is sent in DCC < 1314847723 66778 :monqy!~swell@pool-71-102-215-70.snloca.dsl-w.verizon.net PRIVMSG #esoteric :padTake? so if it reaches the end of the victim list it fills the rest of the result with fill rather than cutting off? < 1314847725 912451 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :hahaha, wtf < 1314847748 977117 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :egobot's line-breaking is... not universally liked < 1314847758 383459 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :did you mean: fucking stupid < 1314847809 677839 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :if null xs then Nothing else Just xs = guard (null xs) >> Just xs, i think < 1314847816 200929 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :er wait < 1314847829 46112 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :backwards test < 1314847836 396567 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :mauke: well it lets you receive the output of programs that output a lot, and in clients that automatically accept dcc chats it works ok < 1314847842 511996 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :better than rate-limiting, at least, in that case < 1314847851 771485 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :mauke: egobot can take urls too, so it's possible to run complex stuff with it < 1314847864 310727 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :`which ghci < 1314847866 535926 :HackEgo!Gregor@codu.org PRIVMSG #esoteric :​/opt/ghc/bin/ghci < 1314847876 74731 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :elliott: how is that better than rate limiting? < 1314847882 586348 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :given that you have to do rate limiting anyway < 1314847886 304606 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :`run ghci -e ':t Data.Map.alter (\mvs -> do _ : vs <- mvs; return vs) < 1314847888 588154 :HackEgo!Gregor@codu.org PRIVMSG #esoteric :sh: -c: line 0: unexpected EOF while looking for matching `'' \ sh: -c: line 1: syntax error: unexpected end of file < 1314847888 797056 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :mauke: no you don't, not for dcc chat < 1314847894 444858 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :`run ghci -e ':t Data.Map.alter (\mvs -> do _ : vs <- mvs; return vs)' < 1314847897 450598 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :elliott: no, but for the rest of the bot < 1314847897 721379 :HackEgo!Gregor@codu.org PRIVMSG #esoteric :ghc: on the commandline: cannot use `--interactive' with `-e' \ Usage: For basic information, try the `--help' option. < 1314847899 858201 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :waiting minutes to get fifty lines of output or errors is annoying < 1314847911 504561 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :`run ghc -e ':t Data.Map.alter (\mvs -> do _ : vs <- mvs; return vs)' < 1314847915 448417 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :i don't like EgoBot's solution, i'm just devil's avocadoing :) < 1314847916 282381 :HackEgo!Gregor@codu.org PRIVMSG #esoteric :​: can't load .so/.DLL for: libgmp.so (libgmp.so: cannot open shared object file: No such file or directory) < 1314847922 933362 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :oerjan: hackego ghc doesn't work yet < 1314847923 941946 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :gah < 1314847927 241742 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :oh < 1314847986 785576 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :hmm, making my fingerprint scheme work with -Werror will be rather tricky < 1314848017 859138 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :why do they generate warnings? and can you fix them with insane workarounds? < 1314848032 222258 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Shiro/Fingerprints/MODU.hs:17:1: < 1314848032 550485 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric : Warning: Pattern match(es) are non-exhaustive < 1314848032 715107 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric : In an equation for `run': < 1314848032 715285 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric : Patterns not matched: < 1314848032 715388 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric : _ A < 1314848034 32834 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric : _ B < 1314848035 994897 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :an IOCCC entry I've been sitting on waiting for the IOCCC to actually happen generates only three warnings in gcc and they're all incorrect < 1314848036 159727 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric : _ C < 1314848037 960076 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric : _ D < 1314848039 932804 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :even though it /should/ generate a lot more < 1314848040 102362 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric : ... < 1314848042 81500 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :the whole point is that you specify what instructions you handle so that you never get called with an instruction you can't handle :) < 1314848051 534026 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :adding an extra line to just fail boringly to each fingerprint is really annoying < 1314848062 489286 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :what i really want is some kind of type-level restriction of the fingerprint instructions but aargh < 1314848068 166080 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :like < 1314848074 926891 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :elliott: this sounds like the sort of thing Anarchy is designed for (will be designed for, when I get round to designing it) < 1314848083 511099 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :run :: (IsInstructions ins (A :+: B :+: C :+: Nil)) => ins -> Shiro () < 1314848085 866740 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :but um < 1314848087 183487 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :that's horrific < 1314848090 104490 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :btw padTake fill n l = take n $ l ++ repeat fill < 1314848090 382015 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :my solution to that problem was to invent a language :) < 1314848092 835440 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :and I'm not sure it'd work anyway < 1314848101 722532 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :oerjan: thanks < 1314848145 672717 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :hmmm < 1314848153 997182 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :I guess I could use a gadt < 1314848334 971581 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :class Elem x xs < 1314848335 136372 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :instance Elem x (x :- xs) < 1314848335 136583 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :instance (Elem x xs) => Elem x (y :- xs) < 1314848338 439981 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :turns out, this _isn't_ a good instance :) < 1314848351 555788 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :I think I need a ~/~ < 1314848356 531075 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :or, hmm < 1314848364 901226 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :I suppose HList has solved this < 1314848581 601296 :Sgeo!~Sgeo@ool-ad034d00.dyn.optonline.net PRIVMSG #esoteric :Heterogeneous List? < 1314848588 689378 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :yes. < 1314848589 914862 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :oerjan: halp < 1314848612 996973 :Sgeo!~Sgeo@ool-ad034d00.dyn.optonline.net PRIVMSG #esoteric :elliott, is Active Oberon a good language < 1314848614 392066 :Sgeo!~Sgeo@ool-ad034d00.dyn.optonline.net PRIVMSG #esoteric :? < 1314848625 74186 :Sgeo!~Sgeo@ool-ad034d00.dyn.optonline.net PRIVMSG #esoteric :ACTION feels like he's going to be shot < 1314848644 499704 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Oberon is a bad language but an interesting one. < 1314848664 302517 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :wat < 1314848711 623388 :Sgeo!~Sgeo@ool-ad034d00.dyn.optonline.net PRIVMSG #esoteric :Hmm. What's bad about it, and what's interesting about it? < 1314848723 254273 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :oerjan: i'm trying to define this FPIns type but I can't manage it :( < 1314848738 437017 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :what type < 1314848749 201774 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :basically, I want, for letter=A,B,C, letter :: FPIns xs iff xs contains the type letter < 1314848756 294368 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :where xs is a list of the form (a :- b :- ... :- xs) < 1314848757 287400 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :i.e. < 1314848764 923238 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :A :: FPIns (A :- B :- Nil) < 1314848770 548509 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :A :: FPIns (B :- A :- Nil) < 1314848772 237493 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :A :: FPIns (A :- Nil) < 1314848773 696494 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :etc. < 1314848783 110055 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :but A :/: FPIns (B :- Nil) < 1314848801 586185 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :ah. well i suspect the problem is you need to check for two types _not_ being equal in that. < 1314848805 880716 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :indeed < 1314848813 77037 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :iirc someone did that on stack overflow... < 1314848821 505557 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :oerjan: what if I required the list to be in order? < 1314848825 958251 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :i.e., (B :- A :- Nil) is not ok < 1314848828 352479 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :where A < B < C < 1314848835 644037 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :oerjan: not equal as in cannot be equal, or as in aren't known to be identical? < 1314848841 181237 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :hmm, I think I could easily do that, with a _lot_ of boilerplate code < 1314848847 458163 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :in fact, I could do it out of order too < 1314848852 229186 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :with a _lot_ of boilerplate < 1314848857 465656 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :ais523: ghc does not give a way to distinguish those, i think < 1314848875 912470 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :ah, OK, even though they're distinguishable concepts < 1314848898 988187 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :as in, the basic type class lookup contains _no_ not-equal checks < 1314848924 934077 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :oerjan: http://sprunge.us/UaaA behold my solution that will scale perfectly to the real A-Z situation < 1314848925 98621 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :...well, there _are_ overlapping instances. < 1314848956 211788 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :omg it works :D < 1314848964 441015 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :oerjan: not there, there aren't? < 1314848969 122848 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :or are you talking to ais523 < 1314848992 269455 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :oerjan: oh my god < 1314848993 748189 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :guess what < 1314848996 244317 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :i defined all this infrastructure < 1314848998 924701 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :test :: FPIns (C :- A :- Nil) -> IO () < 1314848999 89568 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :test A = return () < 1314848999 89754 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :test C = return () < 1314849003 225410 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :will warns about a non-exhaustive pattern match < 1314849011 760509 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :IM GOING TO RIP OUT GHC'S GUTS AND REPLACE THEM WITH DEATH < 1314849040 24099 :Gregor!foobar@codu.org PRIVMSG #esoteric :... what the flying eff is Intel AppUp? < 1314849057 84251 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :elliott: well yes. but i also had that method in mind, the point is that it requires you to check for equality with whatever it is to prove it is not any of the other options < 1314849077 104979 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Gregor: an app store, it looks like < 1314849079 106145 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :for WINDOZE < 1314849087 254677 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :Gregor: a Google search gives no conclusive results, but implies that it's some sort of application store < 1314849098 690412 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :dear Intel: stop making things that aren't processors; love, everyone < 1314849105 790236 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :elliott: How would that help? How can you replace it with death it does not seem you would write a program < 1314849113 254359 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :New Legends Announced \ Five new developers have become Legends of the Intel AppUp developer program. Read their inspiring stories! < 1314849143 970386 :Gregor!foobar@codu.org PRIVMSG #esoteric :elliott: s/ that aren't.*// < 1314849146 423460 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :looking at it, it appears to be an appstore combined with a cross-platform framework for writing mobile/tablet apps, that can also end up on non-mobile platforms < 1314849152 880219 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :elliott: you might be able to define IsEq t1 t2 typeBool and use it as a subroutine < 1314849160 477731 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :it has an SDK with C and C++ bindings < 1314849170 927824 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Gregor: Mr. Ex Intel Employee < 1314849171 998469 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :then only that one needs to contain all the matches < 1314849175 834478 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :"I SAW THE HORRORS" < 1314849178 953537 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :"OH, GOD, I SAW THE HORRORS" < 1314849189 449957 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :hm wait does that actually help < 1314849197 971575 :Gregor!foobar@codu.org PRIVMSG #esoteric :elliott: All my systems are still Intel too :P < 1314849201 76587 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :oerjan: um there is a more important problem, i.e. this strategy _does not work_ < 1314849209 732536 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :well, that too :P < 1314849210 86712 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :oerjan: because GHC's exhaustive pattern detector is too fucking stupid < 1314849227 952913 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Gregor: Well, AMD don't exactly make the most amazing processors :P < 1314849257 772468 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :Gregor: http://appdeveloper.intel.com/en-us/article/frequently-asked-questions is their FAQ, it seems to explain what they're doing, at least < 1314849278 156219 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :the funny thing is, it appears to be run by the sort of managers who use the word "rockstar" < 1314849292 581418 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :"Developers who participate in the Intel AppUp Developer Program earn reputation. Developers earn points and advance in degrees of the Intel® Black Belt Software Developer Program. For more information on the reputation and Intel Black Belt Software Developer Program, see the Intel Black Belt Software Developer Program FAQs." < 1314849308 68324 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :ais523: nice < 1314849312 706806 :Gregor!foobar@codu.org PRIVMSG #esoteric :Ohhhh, I see, it's some retarded pseudopromotion for netbooks and such made byt hem. < 1314849322 359239 :Gregor!foobar@codu.org PRIVMSG #esoteric :s/byt hem/with their processors/ < 1314849328 759812 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric : dear Intel: stop making things that aren't processors; love, everyone <-- what if those were microcode apps. < 1314849334 699194 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :Gregor: an SDK for developing applications for them, too, I think < 1314849341 974166 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :the SDK seems to be the only actual product there < 1314849348 796943 :Gregor!foobar@codu.org PRIVMSG #esoteric :ais523: Which consists, I assume, of ICC :P < 1314849349 769148 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :oerjan: brilliant < 1314849351 668049 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :I wish everyone responsible for this "trendy epic rockstar lolcode FAIL ruby on rails" trend would just go into some field that isn't already as terrible as it can get < 1314849364 520765 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :oerjan: so fast < 1314849393 758531 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :atm it only seems to work on MeeGo and Windows < 1314849397 732996 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :that's a fun choice of platforms < 1314849422 819523 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :only available for QNX and RiscOS < 1314849440 818574 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :wow, it has an incredibly short API < 1314849443 683638 :MDude!~fyrc@or-67-238-31-252.dhcp.embarqhsd.net NICK :MSleep < 1314849452 702405 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :which entirely consists of determining whether the application is authorized to run < 1314849468 3244 :azaq23!~derivecto@unaffiliated/azaq23 JOIN :#esoteric < 1314849470 634593 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :therefore, it's /actually/ some sort of DRM scheme that only works on closed platforms where you can't just patch the checks out < 1314849505 49408 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :this just makes me even more confused as to what it is < 1314849522 328178 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric : I wish [...] would just go into some field that isn't already as terrible as it can get <-- wait why, then they'd be able to do _more_ damage < 1314849531 832680 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :"In-app advertising, subscriptions, and links to external marketplaces for in-app purchases are permitted for a limited time. We understand that these features are important to you and are not yet available in the SDK. Until they become available, you are free to implement them on your own. As we roll these features into the SDK, we will then require that they be implemented through the SDK." < 1314849556 723329 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :oerjan: yes, but it wouldn't affect _me_ < 1314849563 961904 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :I don't keep up on the latest blacksmith news < 1314849577 982901 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :Gregor: so it's /actually/ an app store that has its own DRM scheme < 1314849582 622158 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :I think, at least < 1314849599 252640 :GreaseMonkey!~gm@unaffiliated/greasemonkey QUIT :Ping timeout: 276 seconds < 1314849672 25424 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :Do you know about the Underhanded C Contest? < 1314849679 145472 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :zzo38: yes, and have even submitted to it < 1314849699 832644 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :my submission was a bit too obvious, though, touching every page of the memory it allocated "to check that it works" < 1314849721 655360 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :turns out that implementing 4GiB of memory on Linux is insufficiently slow unless you do that < 1314849755 953203 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :(I was doing the OS benchmarking thing, trying to exploit the fact that allocating the entire addressible memory space and then pagefaulting it all is reasonably quick on a 16-bit system but not on a 32-bit system) < 1314850002 734926 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :did the contest just die 2 years ago? < 1314850021 545902 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :the IOCCC died a while ago < 1314850028 131153 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :at least, it went into NetHack devteam mode < 1314850037 588381 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :doing nothing but the occasional news entry about how they were doing something, and replying to queries < 1314850039 817505 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :I mean the underhanded C contest < 1314850063 40816 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :because I sent them an entry, and then nothing happened and the site stopped updating < 1314850071 602784 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :the most recent news entry in the IOCCC is from 30 april 2010, saying that there would be something new on 15 may 2010, but there wasn't < 1314850078 38018 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :mauke: possibly Xcott's just got a job, or something < 1314850084 694705 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :that's the issue with a competition run by one person < 1314850099 466697 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :Some of their codes I tried to notice what is wrong, I noticed what is wrong not too difficulty. The third place in 2008 I noticed very easily. The first place (John Meacham) I looked and found easily, the data that is supposed to be deleted it looks like it will write 000 if it was originally 255. < 1314850105 619826 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :oh, I know what I could do! I could map FPInses to functions instead < 1314850112 550806 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :in fact, that would work perfectly, and let me give nice names to each fp instruction < 1314850115 675684 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :Now I looked at the answer and in fact that is correct. < 1314850121 121552 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :now to add these lines to a comment in a file and promptly forget about them < 1314850145 55832 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :These codes are not difficult to understand if you can understand C programming. < 1314850290 185664 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :BAD: } doesn't reset storage offset < 1314850291 838552 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :ummm < 1314850294 536817 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :my style fixes broke my program < 1314850309 184503 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :zzo38: I think the idea is just to make it look like a mistake < 1314850327 762929 :GreaseMonkey!~gm@unaffiliated/greasemonkey JOIN :#esoteric < 1314850340 20635 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :"current" task: http://underhanded.xcott.com/?p=18 < 1314850343 461347 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :my solution: http://mauke.dyndns.org/stuff/c/underhanded/lug.c < 1314850378 748228 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :ok this is utterly bizarre < 1314850549 107347 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :mauke: there's a lot of code there to look through < 1314850586 504154 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :I blame it on the complexity of the task < 1314850588 776936 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :ACTION is immediately sceptical of COUNTOF and DEFSTRUCT < 1314850599 958184 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :those are "standard" macros in my code < 1314850600 318647 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :also of xmalloc, what is that even about :) < 1314850611 702944 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :mauke: sure, you say that :P < 1314850614 546011 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :a malloc wrapper that checks for errors < 1314850629 105849 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :it's not a malloc wrapper, it has a different signature < 1314850630 586520 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :it's more like calloc < 1314850641 900464 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :yes, because calloc's interface is superior < 1314850646 744234 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :it still wraps malloc < 1314850651 231145 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :OR MORE EXPLOITABLE???? < 1314850660 410130 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :no < 1314850664 163966 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :admittedly, I can't actually find any bugs :) < 1314850670 556461 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :all paths that don't abort() lead to return malloc(n * m) < 1314850689 961249 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :in a UCC entry, if I had no malicious code in a malloc wrapper, I'd just use malloc directly < 1314850691 768180 :edwardk!~edwardk@pdpc/supporter/professional/edwardk PART #esoteric :"Leaving..." < 1314850727 935869 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :there's an obvious = vs. == mixup in the for loop in insert() < 1314850743 722827 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :I haven't figured out its effects yet, but I suspect that's the malicious part < 1314850754 736048 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :you mean (p = *pp)? < 1314850777 162279 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :that's obviously deliberate < 1314850777 913089 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :yep < 1314850785 619470 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :well yes, the paren indicates that < 1314850790 423875 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :why is that in the test part of a for loop? < 1314850791 145477 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :p isn't initialized otherwise, and ... yeah < 1314850810 998574 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :perhaps it should be before the first semicolon, rather than after, in correct code < 1314850825 52963 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :no, pp is updated in the loop < 1314850831 827385 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :I just want a shorter name for *pp < 1314850868 930332 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :I don't know all the functions that are used in that lug.c program < 1314850873 578793 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :at least, if that's a crazy synonym for "for (;p;pp = &p->next,p=*pp)" and it's /not/ malicious, why are you writing crazy code like that? < 1314850902 932469 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric : ip <- gets currentIP < 1314850903 100373 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric : let Ray pos delta = ray ip < 1314850903 265097 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric : let (ox,oy) = storageOffset ip < 1314850903 265285 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric : modifySOSS $ (oy:) . (ox:) < 1314850903 265393 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric : modifyCurrentIP $ const ip{ storageOffset = pos .+. delta } < 1314850903 429792 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :ais523: in your version p is uninitialized < 1314850903 760592 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :heh, what a subtle bug < 1314850908 750527 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :ais523: I'd call that crazy < 1314850916 19182 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :(hint: the stack-stack is part of the IP) < 1314850917 336437 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :mauke: well, initialize it at the start < 1314850918 398718 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :zzo38: what don't you know? < 1314850921 815220 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :as well < 1314850928 94615 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :the use of p at all there is a little suspect < 1314850929 851652 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :ais523: that duplicates p = *pp for no reason < 1314850948 939766 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :for the reason of not putting the assignment in the test part of a for loop? < 1314850958 445318 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :actually, p=*pp would be best used in the loop body < 1314850958 610039 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :ais523: yes, how is that a good thing? < 1314850961 75082 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :and *pp as the condition < 1314850970 585795 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :It has functions (defined externally) that I have never used or seen before < 1314850970 872181 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :ais523: that would duplicate *pp for no good reason < 1314850977 141675 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :zzo38: which ones? < 1314850978 933084 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :mauke: side effects on the test part of a for loop is a mad thing to do < 1314850982 481632 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :ais523: wrong < 1314850989 814367 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :saving two characters is not a good reason to do it < 1314850998 429901 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :K&R disagree < 1314851021 863015 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :they did it in while loops, but in for loops there are perfectly good other places to put it < 1314851028 527656 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :wrong < 1314851044 616707 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :mauke: you realise the goal is to write code that nobody can fault you about? :P < 1314851047 517663 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :what I really want is "load variables; test condition; loop body; repeat" < 1314851060 583136 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :elliott: I didn't realize people had such crazy ideas about "good" code < 1314851063 443030 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :mauke: and that's what a for loop has? < 1314851077 158383 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :mauke: reading code with side-effects in the test of a for loop makes me stare at it for minutes working out exactly when it runs < 1314851083 679796 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :ais523: it's almost what a while loop has if you merge the load/test parts < 1314851084 622122 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :that's not the mark of good code, because it isn't easy to read < 1314851087 593176 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :mauke: it's not exactly controversial that repeating a tiny statement is better than making a complicated for loop head < 1314851098 810306 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :ais523: in this case I also need a "step" part, so that's where the for loop comes in < 1314851102 792417 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :it's the sort of thing I'd expect in the IOCCC, not the UCC if meant to be non-deliberately-incorrect code! < 1314851113 822200 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :elliott: p = *pp isn't complicated < 1314851123 554584 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :mauke: no, it isn't; that's why repeating it doesn't matter < 1314851127 226159 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :vs. complicating the for loop head < 1314851141 548887 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :seriously, I don't see how this "complicates" anything < 1314851143 100642 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :you use a similar idiom in drop_superseded < 1314851150 384477 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :yeah < 1314851164 451991 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :and I'm wondering if there's a shorter /and/ clearer way to write it < 1314851186 241512 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :you have while ((p = *pp)) { /* ... */ *pp = p->next; free(p); } < 1314851288 320868 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :I'd probably write it as p=*pp; while (p) { /* ... */ p2 = p->next; free(p); p = p2; } *pp = p; < 1314851298 342410 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :actually, *pp = 0 at the end < 1314851312 212185 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :ais523's is less clear than mauke's there < 1314851331 629437 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :elliott: well, back in the days of K&R idiomatic would have been free(p); p = p->next; < 1314851334 748703 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :but that's incorrect nowadays < 1314851340 410911 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :heh < 1314851340 575481 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :I tried to keep this as short and concise as possible < 1314851343 825035 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :so you need a helper variable < 1314851347 436718 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :where every part is simple and obviously correct < 1314851354 262545 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :Such as ferror and regcomp, which I have not used, although I can guess what their function is. < 1314851373 441793 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :mauke: we've been discussing it for 11 minutes, is that "simple and obviously correct"? < 1314851374 940435 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :zzo38: ferror is standard C < 1314851379 167602 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :zzo38: ferror is standard C < 1314851391 322391 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :mauke: Yes I know it is, I have just simply not used it before. < 1314851393 702338 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :ais523: maybe you're just not a very experienced C programmer < 1314851394 770167 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :heh, and our nicks are the same number of pixels in this font so it even lined up < 1314851413 137189 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :mauke: I actually taught C for a while; and I teach people not to pull tricks like that < 1314851427 505473 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :actually, I fear it's the API of your function that's making it confusing < 1314851439 113943 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :yeah, I have a bit of a history with C teachers < 1314851448 750634 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :so does ais523 < 1314851451 291362 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :you take a pointer to a pointer, and what you do with it is to iterate on the pointed-to pointer itself, and then set the pointed-to pointer to NULL < 1314851454 497095 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :I do not pay a lot of attention to security unless I am writing a program meant to be run suid or accessed remotely < 1314851456 680188 :Sgeo!~Sgeo@ool-ad034d00.dyn.optonline.net PRIVMSG #esoteric :tricks? < 1314851499 355984 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :ais523: I'm destructively modifying a linked list < 1314851502 757762 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :at least you're using C not C++ so the side-effect is marked, but it's a side effect that I don't get why it's necessary at all; nulling pointers when you free them isn't going to save you from bugs because if the code was buggy before, it'll /still/ crash < 1314851512 313096 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :ais523: the alternative to taking a pointer-to-pointer is to take and return a pointer < 1314851516 154708 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :and that's just evil < 1314851523 969567 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :that's evil? < 1314851524 135607 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :mauke: no, because you always set it to NUL < 1314851525 476686 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :*NULL < 1314851532 586883 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :But the John Meacham's code (and Linus Akesson's code) for the 2008 contest has something that is very obviously wrong to me even though I did not know what the contest was; I could tell it was dealing with PPM files just from reading the code. < 1314851536 112071 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :so the caller knows that the value should become NULL < 1314851538 13170 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :ais523: wait, where? < 1314851548 126626 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :drop_superseded < 1314851561 217297 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :*pp is always set to NULL when it exits, as it's the only way to drop out of the loop < 1314851574 484022 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :and if that isn't obvious, then perhaps even you were confused by your own code < 1314851580 289171 :lambdabot!~lambdabot@li85-105.members.linode.com JOIN :#esoteric < 1314851591 362266 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :ais523: pp is modified in the loop < 1314851601 30397 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :it may reach NULL naturally < 1314851611 866624 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :mauke: but that doesn't matter, all that matters is the value at the end of the loop, which is always NULL < 1314851622 636650 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :yes, because it has reached the end of the list < 1314851630 188875 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :that doesn't mean the list was completely destroyed < 1314851633 377833 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :so the fact that pp is modified in the loop is irrelevant < 1314851637 85010 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :what < 1314851641 853720 :coppro!~scshunt@denardo.csclub.uwaterloo.ca PRIVMSG #esoteric :.wub 16 < 1314851643 498733 :coppro!~scshunt@denardo.csclub.uwaterloo.ca PRIVMSG #esoteric :.wub 16 < 1314851643 663303 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :you could just set it to NULL afterwards and have the same effect < 1314851643 827793 :Sgeo!~Sgeo@ool-ad034d00.dyn.optonline.net PRIVMSG #esoteric :ais523, I think the point of nulling pointers before free is in case you accidentally use it again, at least it will _always_ be a crash, instead of sometimes by chance something bizarre < 1314851653 497497 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :ais523: where am I setting *pp to NULL? < 1314851659 288286 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :coppro: ... < 1314851670 989429 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Sgeo: glibc detects that kind of crap nowadays, IIRC < 1314851672 9299 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :mauke: while((p = *pp)) { /* ... */ } is either an infinite loop or it sets *pp to NULL < 1314851684 746568 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :elliott: it can't do so with a 100% success rate without leaking memory, that's provable < 1314851685 568610 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :ais523: wrong < 1314851692 409303 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :mauke: how is it not wrong < 1314851697 742414 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :there are no break instructions in the /* ... */ < 1314851705 974145 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :and no longjmps out of it either < 1314851710 302937 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :Some people have told me my C codes were of the kind suitable for IOCCC but I don't think so. < 1314851712 959042 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :so, the /only/ way the loop can end is if *pp is NULL < 1314851716 537853 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :ais523 is obviously right here, without even looking at the code < 1314851718 832165 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :ais523: correct < 1314851724 644357 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :so, the loop sets *pp to NULL < 1314851725 636537 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :ais523: that doesn't mean it's setting *pp to NULL < 1314851731 352947 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :NO < 1314851742 740391 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :either *pp is initially NULL or is set to NULL during the loop < 1314851746 287376 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :wrong < 1314851751 477634 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :yes, the loop only ends with *pp as NULL, and the loop is the last thing in the function < 1314851753 115182 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :is everyone crazy now? < 1314851759 607755 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :so the function sets *pp to NULL, always < 1314851762 514134 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :no, but you might be if you keep insisting one is two < 1314851775 715290 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :elliott: let me try to convince you first, you seem more sane < 1314851780 430750 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :the value of *pp during the loop changes, but that only matters if it's inspected during the loop, and it doesn't < 1314851783 246468 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :*and it isn't < 1314851803 707496 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :oh, aha, there's an assignment to pp during the loop < 1314851809 966570 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :which is even mindboggling < 1314851811 940959 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :mauke: OK, but I'm not going to bother looking at the code; how can that loop terminate, under those conditions about the body that you agreed to, without *pp either initially being NULL or being set to NULL during the loop? < 1314851814 726305 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :elliott: the loop condition is *pp. pp is modified in the loop. thus the loop may hit a point where *pp is already NULL without modifying *pp < 1314851815 320115 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :so you're calling two different things pp < 1314851823 612194 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :mauke: setting pp sets *pp < 1314851827 438127 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :elliott: bullshit < 1314851839 422374 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :and that's why you can make apparently self-contradictory statements, because you don't distinguish between the multiple possibilities for pp < 1314851842 473227 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :your code sounds quite confusing, I'd have locked you up by now :) < 1314851852 902380 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :Do *you* think my C codes are of the kind suitable for IOCCC???? I don't think so.... < 1314851867 516844 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :ais523: I'm calling N different things pp < 1314851868 870217 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :zzo38: probably not, good IOCCC code has to be written specifically for the IOCCC < 1314851871 741147 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :ais523: I AM ITERATING OVER A LIST < 1314851894 261921 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Programmer suspected of espionage yells at FBI interviewer; jailed for life < 1314851900 456298 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :also, ais523: pp is modified in the loop < 1314851907 244117 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :OK, so you're iterating over a list and mutating it while iterating over it < 1314851918 902067 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric : ais523: I'm destructively modifying a linked list < 1314851919 558410 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :and you're using pp as a pointer to the previous next, or the first element otherwise < 1314851934 881530 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :I'm using pp as the address of the pointer to the current element < 1314851949 741958 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :ais523: Well, yes. But I don't think my codes are obfuscated or anything, it seems clearly to me. There are sometimes a few strange things but I usually describe it if I think it is too strange < 1314851950 374585 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :this is like linked list manipulation 101 < 1314851974 34365 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :mauke: it's a trick that I /occasionally/ see when mutating a linked list, in order to avoid specialcasing its start < 1314851980 286834 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :and it's normally written more obviously in such cases < 1314851993 352122 :fungot!~fungot@momus.zem.fi QUIT :Ping timeout: 260 seconds < 1314851999 921240 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :it doesn't help that the common case is hidden inside an if statement, and the main body of the loop handles the rare case < 1314852018 522453 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :ok, that's a point < 1314852028 461620 :fizzie!fis@iris.zem.fi QUIT :Ping timeout: 260 seconds < 1314852034 995884 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :I believe I wanted to get the common case out of the way first < 1314852049 40223 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :if (whatever) ... continue; done < 1314852075 635097 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :This code has nothing wrong with it to me but some people say it is wrong to do a lot of the stuff I do in this code http://repo.or.cz/w/TeXnicard.git/blob_plain/HEAD:/texnicard.w < 1314852102 871214 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :(the alternative to using a pointer-to-pointer in the loop is two variables you have to keep in sync manually plus some code duplication) < 1314852105 213137 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :zzo38: you forgot to use more-notation < 1314852141 506433 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :elliott: For one thing, it is not a Haskell program. < 1314852149 573932 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :well yes, that's the other problem. < 1314852151 549207 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :I think I know where the bug likely is; I think there's an off-by-2 (or off-by-4) error in one of the calls to cap_equals, because the API you're using would make such errors really hard to notice < 1314852171 624446 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :I don't think so. C is still a good programming language too. < 1314852195 793377 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :LLVM would be very good (in fact, much better designed than C, I think) if there was a good macro system for it. < 1314852204 971103 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :you're taking the addresses of array elements all the time, and that's a perfect opportunity to accidentally do that "twice" and take, say, the 6th element by taking the second then taking its fourth < 1314852210 452903 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :But TeXnicard is going to continue to be a C program. < 1314852236 870656 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :that would explain how field 6 becomes relevant even if it's not referred to by name < 1314852269 946177 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :ais523: easy to disprove. I only use array indices in calls to cap_equals, and cap_equals doesn't index < 1314852273 16618 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :(Although I plan to write one of the related programs in Haskell; that is, part of the program for automating game play could be written in Haskell) < 1314852275 940134 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :ais523: therefore no double indexing occurs < 1314852286 817114 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :mauke: yes, right < 1314852294 724675 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :perhaps you should have slipped the bug in there, it'd have been well-hidden < 1314852298 347078 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :you easily could have done < 1314852336 574353 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :&m[2] in drop_superseded would have looked completely innocent < 1314852371 685472 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :hmm, true. why didn't I think of that? < 1314852446 660111 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :Are there any hidden malicious stuff in *my* program? (Unless I put it by accident I do not expect so.) < 1314852512 810146 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :(Actually I wanted to compile natural language into Haskell and/or Dangelo) < 1314852563 8170 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :mauke: as you can see, zzo38 is a gift to all of us < 1314852626 538280 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :elliott: I ignore them < 1314852634 533581 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :Don't be so sure... OF ANYTHING!!! < 1314852640 807333 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :mauke: you're missing out < 1314852652 59599 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric : Don't be so sure... OF ANYTHING!!! < 1314852653 275621 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :good advice < 1314852684 109738 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :mauke: is it deliberate that your regex doesn't quite match the one in the question, btw? you can cause the optional comment to not match by omitting the whitespace at the start of the comment whilst having it all match, but I'm not sure if that has any effect on the program flow < 1314852695 739567 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :and forgetting a space would look like a plausible error < 1314852705 110546 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :that's one of the first things I noticed, but I didn't bring it up < 1314852723 205632 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :what do you mean? < 1314852745 622216 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :([A-Z]{3})([[:space:]]+[^[:space:]].*)? is what you have < 1314852749 2075 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :oh, then a $ < 1314852762 984066 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :"any positive number of spaces, then anything that isn't a space, then any characters" is redundany < 1314852769 39307 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :*redundant < 1314852781 224770 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :or, hmm, is it? < 1314852790 280906 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :I wanted to be explicit < 1314852809 124057 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :it's definitely not what the question specified, "\s.*", which allows for a comment consisting entirely of whitespace < 1314852816 400335 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :mauke: that's a bit ironic < 1314852873 972147 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :ais523: correct. scan never checks if the regex actually succeeded, leaving old information in the capture buffers. this is triggered by trailing whitespace < 1314852877 870475 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :you've found bug #1 < 1314852887 206147 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :(what, did you think there was only one hole?) < 1314852917 715296 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :in the UCC, you should probably only have one, otherwise you give more space to find malicious behaviour < 1314852950 771861 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :if they all look like plausible mistakes, some of them may survive a code review < 1314852956 126225 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :If I fix haskell-src-exts to make some of the things I wanted to have in Haskell, including more-notation and a new kind of preprocessor with different macros (including running Haskell codes at tokenizer level), what would be called? < 1314852970 809874 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :also, I'm not sure if it's deliberate that the check on whether to succeed in insert (on fields 2 and 4) is different from the one in drop_superseded (on field 2 only) < 1314852986 592497 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :zzo38: zzo38skell-src-exts < 1314853006 528852 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :ais523: if it's a bug, it's not deliberate < 1314853007 700205 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :it looks wrong, especially because with insert removing duplicates, drop_superseded has no reason to exist at all < 1314853029 714960 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :but I don't remember the exact rules of the task anymore < 1314853032 637852 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :I'd have to reread it < 1314853091 133198 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :elliott: That does not seem best name. Anyways it will be a full program rather than a library usable by other programs. It is written using unliterate layout style, so I will keep it that way when modifying it (although it is not the way I write my own programs) < 1314853107 298538 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :ais523: I think the idea was that something like A -> B, B -> C followed by A -> X would have to override A -> B and drop B -> C < 1314853110 284675 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :maybe < 1314853121 217291 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :hmm, perhaps < 1314853134 674662 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :it doesn't help that the task's unclear on what the intended behaviour is < 1314853236 837014 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :I'll give up reading it for now, anyway, the task's too vague for me to work out whether certain bits of it are right or not < 1314853252 974554 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :pop0gnirtsAsString is definitely the best function name I've ever created < 1314853257 90957 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :apart from push0gnirtsAsString < 1314853275 173585 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :elliott: recently, I was trying to think of a word starting with 0 < 1314853280 896936 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :and "0gnirts" was the only one that came to mind < 1314853285 525902 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :"0gnirts" doesn't start with 0, it starts with '"' < 1314853292 801765 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :but, 0-day? < 1314853298 417528 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :well, the word was 0gnirts < 1314853305 14245 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :and I put quotes round it because I was quoting it < 1314853311 938721 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :and I didn't think of that one < 1314853313 748915 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :but the word is actually "0gnirts" < 1314853317 107632 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :well, OK < 1314853320 74371 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :they're not called 0gnirtses, they're called "0gnirts"es < 1314853325 705651 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :I pronounce it without the quotes < 1314853333 976823 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :how do you pronounce quotes? < 1314853334 308054 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :as o-gnerts < 1314853341 941099 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :that's /why/ I pronounce it without the quotes < 1314853344 626607 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :heh < 1314853376 601383 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :ais523: hint: all of the bugs are in scan and main < 1314853382 886666 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :(it's how you trigger a NetHack bug that only happens with over 1000 users) < 1314853391 331313 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :ais523: wat < 1314853398 298546 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :*over 9000 < 1314853398 626683 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :how does that work? < 1314853408 642153 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :basically, overflow to the fifth digit of UIDs < 1314853434 609537 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :meaning that you can confuse it between 10000gnirts parsed as 1000+0gnirts or 10000+gnirts < 1314853441 117824 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :heh < 1314853454 132648 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :the effect being that UID 1000 can mess with UID 10000's savegames < 1314853514 495133 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :?pl \f -> catchReflect $ pop0gnirtsAsString >>= ioFail . f < 1314853514 659881 :lambdabot!~lambdabot@li85-105.members.linode.com PRIVMSG #esoteric :catchReflect . (pop0gnirtsAsString >>=) . (ioFail .) < 1314853518 311641 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :no thanks < 1314853548 272178 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :What does pop0gnirtsAsString means? < 1314853564 249937 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :funge < 1314853685 173188 :copumpkin!~pumpkin@unaffiliated/pumpkingod NICK :Commodus < 1314853710 568567 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :zzo38: 0gnirts is the standard representation of strings in Befunge (and other Funges), and String is the standard representation of strings in Haskell < 1314853727 39890 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :the function pops an 0gnirts off the Funge stack and converts it to a String < 1314853727 933572 :Commodus!~pumpkin@unaffiliated/pumpkingod NICK :copumpkin < 1314853745 26818 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :I should really make it use ByteStrings instead < 1314853754 340179 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :actually, the current way might be faster because the stack is a [] < 1314853756 920043 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :but I should fix that, too < 1314853878 404778 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake QUIT :Ping timeout: 240 seconds < 1314853941 977553 :augur!~augur@129.2.129.34 QUIT :Remote host closed the connection < 1314853944 382892 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :What was the first Haskell program you wrote? < 1314853954 210835 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :umm, I don't remember < 1314853956 690948 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :I can't remember < 1314853957 360162 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :probably something very simple < 1314853968 188704 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :first real program might have been the unfinished underload compiler? dunno. < 1314853988 550873 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :the first real Haskell program I wrote was an implementation of my theories about ICA to SCC type inference < 1314854000 294251 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :ais523: What does that mean? < 1314854002 129089 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :which I've since reimplemented in OCaml < 1314854013 565942 :invariable!~thing@freebsd/developer/variable JOIN :#esoteric < 1314854023 971075 :Nisstyre!~yours@infocalypse-net.info QUIT :Ping timeout: 250 seconds < 1314854048 639357 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :zzo38: ICA and SCC are two different type systems; ICA's type system is similar to Algol's (but a mathematically idealized version that also allows for concurrent execution), and SCC requires each variable to be accessed from finitely many functions at a time (with an explicit number bounding that) < 1314854050 612277 :variable!~thing@freebsd/developer/variable QUIT :Ping timeout: 252 seconds < 1314854092 890492 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :so basically, it's counting bounds on concurrent uses of a variable < 1314854115 566816 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :OK. < 1314854127 763666 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :it boils down to simultaneous inequalities, in the end; I got a paper out of proving that those inequalities could always be solved with integers < 1314854189 755967 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :First Haskell program I wrote is a compiler of esolang, too; but not Underload. < 1314854196 427834 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :elliott: Did you use Template Haskell in that program? < 1314854208 136569 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :zzo38: no < 1314854213 601218 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :I tend to avoid TH < 1314854231 702597 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :Do you dislike TH? < 1314854239 226015 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :elliott: are Haskell templates more or less sane relative to Haskell than C++ templates are to C++? < 1314854246 159629 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :s/are to/are relative to/ < 1314854265 541658 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :zzo38: I don't dislike it so much as avoid it when it isn't absolutely necessary; it's very heavy, and functions are much nicer < 1314854274 286504 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :plus, writing TH code is very difficult (compared to using it) < 1314854278 746372 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :because of all the boilerplate < 1314854284 951311 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :ais523: I would say yes < 1314854297 64417 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :ais523: that comparison looks like a type error < 1314854304 124929 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :TH is much more like Lisp macros < 1314854306 400557 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :that wasn't intended to be a yes-or-no question, although I suppose that's one way to parse it < 1314854320 748631 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :I assume that TH is saner than C++ templates, but OTOH Haskell is saner than C++ < 1314854333 443350 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :I was wondering which comparison had a greater sanity difference < 1314854335 253262 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :I think TH is just not as powerful as some proper macros could be, that is why I want to implement new one, that can be used in addition to TH. < 1314854339 277140 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :mauke: you can compare differences in sanity < 1314854361 216079 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :I'd say the embedding is a bit awkward but at least in TH the metalanguage is Haskell < 1314854375 186222 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :that wins major sanity points over C++ templates < 1314854412 990263 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :arguably, C++ templates form a better language than C++ itself < 1314854416 163400 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :it's at least functional < 1314854426 208169 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :and reasonably self-consistent and well-behaving < 1314854429 370799 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :shame about the syntax < 1314854460 50299 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :I wonder what templates are like in SPECS < 1314854485 673500 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :Enhanced CWEB allows you to do metaprogramming in C (although it is interpreted C) < 1314854525 823750 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :Constantinople compiler in Haskell uses Template Haskell codes. < 1314854546 977971 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :@keal < 1314854547 368066 :lambdabot!~lambdabot@li85-105.members.linode.com PRIVMSG #esoteric :Cale etc already pointed out Haskell is puny to nothing to emulate using my barrage of mathematic theories < 1314854595 804213 :ive!~nn@189.179.239.6 JOIN :#esoteric < 1314854643 279734 :kmc!~keegan@c-98-216-51-47.hsd1.ma.comcast.net JOIN :#esoteric < 1314854648 449582 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :yay, all done, and things are slower than before < 1314854681 208849 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :I like how I'm optimising a program that doesn't strictly work... feels like C < 1314854694 716792 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :oh dear, has it gone over a thousand lines of code? < 1314854719 101343 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :oh, wow, my SLOC have shrinked since earlier today < 1314854904 551741 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :My program contains things that might be badly done because I have not written program in Haskell before, such as this: initialMem = MemList $ (MemList $ fix (MemZero :)) : fix (MemZero :); p_nand x y = Pointer undefined (liftA2 r_nand (mem_read x) (mem_read y)); transWrite w p x y = mem_write p (w x (mem_read p y)) y; < 1314854979 3017 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :why the undefined? < 1314855008 428022 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :Because a "nand" expression in Constantinople is read-only. The first parameter to the Pointer constructor is used for writing. < 1314855031 407167 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :then you want a ROPointer and a Pointer being ROPointer + write < 1314855034 877313 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :At least, I think it is read-only; if they want to change that, anyone can change this < 1314855047 396663 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :or at least a Maybe field in Pointer so that you can handle read-only things without undefined < 1314855172 466778 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :That is one idea. Thanks for opinion. But it seems to me that the simplest and reasonable way to do it is to simply not define the writing function for "nand" but otherwise use everything the same way. < 1314855226 488040 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :zzo38: your types, as they are, do not correctly model the situation; so you are very likely to run into bugs you wouldn't otherwise < 1314855229 268481 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :zzo38: fix (x :) = repeat x < 1314855240 923435 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :oerjan: OK, thanks. I didn't know that. < 1314855243 37279 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :zzo38: Haskell is all about defining the right types to model your situation, and then using them correctly; without that, you won't benefit much from its strengths at all < 1314855255 641349 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :hmm, "fix (x:)" is actually shorter < 1314855266 871641 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :no, same length < 1314855278 779501 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :just uses narrower characters, so shorter in a proportional font < 1314855286 875638 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :to paraquote larry, "the trick is to use haskell's strengths rather than its weaknesses" < 1314855331 938562 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :hmm, are there any interesting Haskell "conducts", like one-liner Python? < 1314855346 472260 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :"conduct"? < 1314855346 636976 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :restrictions you put on yourself so you avoid using the language's strengths and have to be more creative? < 1314855357 19318 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :oerjan: like in NetHack, a self-imposed restriction to make it more difficult < 1314855373 906108 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :ais523: point-free style... WITH NO EXCEPTIONS < 1314855381 51581 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :and no more than one level of parentheses, too < 1314855389 431645 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :and no where clauses. or completely junk definitions. < 1314855391 74229 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :beautiful < 1314855396 93835 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :elliott: that's a rather lethal combination < 1314855397 243462 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :"completely junk definitions"? < 1314855411 258730 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :ais523: as in, definitions that don't have any generalness at all, and you're just using them to subvert the parentheses and where rules < 1314855415 411667 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :obviously it's slightly subjective :P < 1314855419 105115 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :also, how do you do a where clause in a pointfree program anyway < 1314855424 797862 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :foo = f . g < 1314855426 804463 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric : where f = ... < 1314855431 454859 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :oh, I see < 1314855433 115800 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :can you even @pl everything that can be @pl'ed without nesting parentheses < 1314855446 136080 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :oerjan: with the right combinators, surely; and like I said, you can use top-level definitions < 1314855446 793748 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :you need to ban let..in too, then, unless you consider that to break pointfree and where not to < 1314855449 141305 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :just not "junk" ones < 1314855453 628170 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :ais523: well ok yes yesyes < 1314855470 843766 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :my ICA-addled mind insists on interpreting let/where as simply sugar for lambda < 1314855551 963396 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :ais523: it's not quite trivial sugar in the presence of mutually-recursive definitions < 1314855557 501237 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :I also use this, which I don't know if anyone else already made up something like this: monadify = either (fail . show) return; < 1314855559 140781 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :oerjan: did you ever find an elegant desugaring of that? < 1314855597 818833 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :elliott: in ICA, recursion has to be explicit anyway < 1314855612 2934 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :e.g. let versus let rec ... and ... in OCaml (and probably other MLs too) < 1314855645 586104 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :Do you know if anything like the "monadify" function exists? < 1314855651 265354 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :ugh, some of this program is just so, so ugly and I don't even know where to statr on fixing it < 1314855662 379411 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :I want something like hlint but that's really, really anal < 1314855672 662032 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :I can solve a list of problems in arbitrary order, I just can't make this program good < 1314855692 399138 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :oh hm Jot has bounding parentheses if you convert it to @pl-form < 1314855710 664159 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :*bounded < 1314855731 723730 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :oerjan: I've actually been wondering what the minimum nesting level is needed for TCness in BF < 1314855746 863930 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :I suspect it's either 2 or 3; 0 is obviously sub-TC, and 1 nearly as obviously < 1314855763 811674 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :[F0] = [F]SK = ($ ap const) $ [F] < 1314855782 488609 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :[F1] = \x y -> [F] (x y) < 1314855791 133313 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :@pl \x y -> f (x y) < 1314855791 568252 :lambdabot!~lambdabot@li85-105.members.linode.com PRIVMSG #esoteric :(f .) < 1314855803 107359 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :duh < 1314855811 797908 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :[F1] = (.) $ [F] < 1314855818 743726 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :and [] = id < 1314855840 525937 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :so barring typing issues, Jot needs only one level < 1314855858 98366 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :Would you have written this code differently? parseConstantinople = runIO (getEnv "Constantinople" >>= flip openFile ReadMode >>= hGetContents) >>= (monadify .:: parse) (programParser $ VarE 'return) ""; < 1314855918 750296 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :oerjan: Jot needs one level of what? And other? < 1314855926 710886 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :of parentheses < 1314855933 99598 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :OK < 1314855937 928200 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :if you convert it point-free haskell < 1314855944 682507 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :OK < 1314855978 925234 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :oh wait < 1314855993 491641 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :I know that K and I combinators correspond to (const) and (id) in Haskell. And in fact I used those as the definition of the root pointer: root = Pointer const id; < 1314855998 974620 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :*[F0] = ($ const) . ($ ap) $ [F] < 1314856035 274918 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :Is there S combinator function in Haskell? < 1314856047 102425 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :ap, <*> < 1314856048 602525 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :yes, ap in the (e ->) Monad < 1314856069 439419 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :or <*> in the (e ->) Applicative < 1314856085 135099 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :@type \f g x -> f x (g x) < 1314856086 106345 :lambdabot!~lambdabot@li85-105.members.linode.com PRIVMSG #esoteric :forall t t1 t2. (t -> t1 -> t2) -> (t -> t1) -> t -> t2 < 1314856093 584198 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :@hoogle (t -> t1 -> t2) -> (t -> t1) -> t -> t2 < 1314856094 349937 :lambdabot!~lambdabot@li85-105.members.linode.com PRIVMSG #esoteric :Data.Function on :: (b -> b -> c) -> (a -> b) -> a -> a -> c < 1314856094 514706 :lambdabot!~lambdabot@li85-105.members.linode.com PRIVMSG #esoteric :Data.Data gmapQl :: Data a => (r -> r' -> r) -> r -> (d -> r') -> a -> r < 1314856094 514890 :lambdabot!~lambdabot@li85-105.members.linode.com PRIVMSG #esoteric :Control.Parallel.Strategies parZipWith :: Strategy c -> (a -> b -> c) -> [a] -> [b] -> [c] < 1314856098 122129 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :meh < 1314856102 67517 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :@pl \f g x -> f x (g x) < 1314856102 476578 :lambdabot!~lambdabot@li85-105.members.linode.com PRIVMSG #esoteric :ap < 1314856122 549344 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :Can there be used without Monad or Applicative needed? < 1314856135 133055 :mauke!~mauke@p3m/member/mauke PRIVMSG #esoteric :what < 1314856146 712052 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :i agree < 1314856276 647442 :GreaseMonkey!~gm@unaffiliated/greasemonkey QUIT :Ping timeout: 240 seconds < 1314856355 135183 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric : I suspect it's either 2 or 3; 0 is obviously sub-TC, and 1 nearly as obviously <-- i think i monologued a proof for 1 on the channel not too long ago < 1314856374 645274 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :1 being sub-TC? < 1314856377 508275 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :it's not too hard < 1314856388 197122 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :you basically can't do any flow control within a loop < 1314856424 613934 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :zzo38: flip is readFile < 1314856426 826383 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric : openFile ReadMode >>= hGetContents < 1314856430 82364 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :argh < 1314856454 182389 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :irssi's line joining would be nice if you could actually trust it < 1314856471 620807 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :oerjan: Sorry I do not understand can you explain it better please? < 1314856483 758805 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :zzo38: it was mispasted by irssi < 1314856487 511623 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :@src readFile < 1314856487 892169 :lambdabot!~lambdabot@li85-105.members.linode.com PRIVMSG #esoteric :readFile name = openFile name ReadMode >>= hGetContents < 1314856489 369692 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :OK. < 1314856507 868871 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :that's what i meant < 1314856530 986452 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :OK, so I do not need what I wrote; readFile will do that. OK thanks < 1314856560 454100 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :So is (getEnv "Constantinople" >>= readFile) good enough? < 1314856603 806134 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :i should think so < 1314856625 90800 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :OK. Anything you have to say about the other parts of that program? < 1314856671 198233 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :(The environment variable "Constantinople" is set in a shell script. It seems the only way it works in Template Haskell due to splices running multiple times) < 1314856672 288145 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :oh dear; it looks like the next obvious thing to do to shiro is to either: < 1314856674 315184 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :- name every core instruction < 1314856674 642086 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :or < 1314856676 969101 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :- rewrite the fungespace < 1314856779 455889 :GreaseMonkey!~gm@unaffiliated/greasemonkey JOIN :#esoteric < 1314856878 416984 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :I designed a computer (including the CPU instruction set) called OMEGACOM-1. I never intend to implement it in hardware, although it is intended to be possible to do so and of an old-style. < 1314856913 232559 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :The keyboard consists of the alphabet (QWERTY), digits zero to nine, spacebar, and three more keys: RUBOUT, ALT, and SEND. < 1314856946 348582 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :ALT+Z rewinds the tape, ALT+W to play tape, ALT+X to fast forward, ALT+Y to record. < 1314856987 866552 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :ALT+0 is reset the computer, ALT+1 sends the user interrupt (interrupt 1), ALT+2 pauses the system, and ALT+3 to resume. < 1314857007 700136 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :Other keys with ALT is used to put punctuation symbols. < 1314857046 931551 :copumpkin!~pumpkin@unaffiliated/pumpkingod NICK :luke-sr < 1314857070 328766 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :(Actually, the way it is designed, ALT+SPACE happens to be the same as RUBOUT, ALT+RUBOUT the same as SPACE, and ALT+SEND generates the keycode for the ALT key (which otherwise cannot be sent to the CPU).) < 1314857124 580155 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :Bytes in this computer are 16-bits and addresses are also 16-bits. < 1314857126 881419 :luke-sr!~pumpkin@unaffiliated/pumpkingod NICK :copumpkin < 1314857170 927360 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :Memory map is 0x0000-0x3FFF for RAM, 0x4000-0x7FFF for VRAM, 0x8000-0xBFFF for SLOT-0, and 0xC000-0xFFFF for SLOT-1. < 1314857280 396985 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :The RAM initially points to internal ROM instead, and then it disables itself after it copies itself to unused space in VRAM and jumps there. It starts like this: XOR A A MOV X "4000 ?LOAD MOV .XS .A LUI "180 =LOAD MOV P "4C08 SLV '1 '2 < 1314857306 893294 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :P is the program counter register. < 1314857693 164176 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :Each instruction has a two-bit condition specifier, which can be: Always, Carry, Zero, or Nonzero. < 1314858057 604835 :myndzi\!myndzi@c-67-168-184-168.hsd1.wa.comcast.net JOIN :#esoteric < 1314858256 686070 :myndzi!myndzi@c-67-168-184-168.hsd1.wa.comcast.net QUIT :Ping timeout: 240 seconds < 1314858369 682361 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :What is your opinions and ideas about this? < 1314858392 395644 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :it's great + perfect < 1314858393 894878 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :mergeByteString Shiro.FungeSpace 30.1 27.8 < 1314858394 59355 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :!@ Shiro.FungeSpace 21.1 0.7 < 1314858394 225158 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :modifyIPList Shiro.Monad 15.4 39.1 < 1314858394 225382 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :doNextIns Shiro.Interpreter 4.9 1.1 < 1314858396 28586 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :ooh, interesting < 1314858406 532522 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :how on earth is modifyIPList taking that much time? < 1314858417 802910 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :modifyIPList :: (([IP],[IP]) -> ([IP],[IP])) -> Shiro () < 1314858418 135917 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :modifyIPList f = modify $ \st -> st{ ipList = f (ipList st) } < 1314858422 90310 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :oerjan: look at my cost centre :D < 1314858424 735404 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :(well, one of them) < 1314858451 554228 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :It is just meant to be oldstyle, actually. I did not explain everything yet. < 1314858560 597343 :copumpkin!~pumpkin@unaffiliated/pumpkingod QUIT :Ping timeout: 252 seconds < 1314858580 183342 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :i dunno < 1314858584 721261 :copumpkin!~pumpkin@unaffiliated/pumpkingod JOIN :#esoteric < 1314858643 602262 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :oerjan: dunno what < 1314858644 93630 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :? < 1314858658 397273 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :about profiling < 1314858766 926418 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :I have rules for a card game called "Mature". You use a standard deck of cards, ranking from high to low: T98765432AKQJ. Play with 4 player and something to keep track of scores. Each player plays for himself. Give 13 cards to each player. Now the dealer can call any suit for trump. The player after the dealer can now lead any card to the first trick. < 1314858768 461010 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :hmm, I can either write a new fungespace, clean up the core interpreter file (bleh), or convert everything to lenses, quite possibly seeing a speed improvement from doing so < 1314858772 967413 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :who wants to vote? < 1314858801 891780 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :After a card has been led to the trick, each player in order must now play a card to the trick. If you have anycard of the suit led you must play one of those, otherwise you can play any card you want to. If there is any trumps, the player who put the highest trump wins the trick,otherwise the player with the highest card of the leading suit wins the trick. < 1314858815 302866 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :The winner of the trick places those cards face-down in their score pile and can lead any card to the next trick. < 1314858862 90929 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :After all tricks are played. count points. Jacks and kings are collectively called "men". Make the longest sequence you can that alternates between men and queens (it doesn't matter which comes first). The number of cards in that sequence is your score. < 1314858942 455840 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :(Other cards are not used for counting score) < 1314859252 382959 :coppro!~scshunt@denardo.csclub.uwaterloo.ca PRIVMSG #esoteric :zzo38: and presumably the game is played so that everyone has an equal number of turns as dealer? < 1314859266 196556 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :coppro: Yes, I would assume so. < 1314859436 3919 :coppro!~scshunt@denardo.csclub.uwaterloo.ca PRIVMSG #esoteric :hmm... interesting < 1314859445 991428 :coppro!~scshunt@denardo.csclub.uwaterloo.ca PRIVMSG #esoteric :It seems to me that the scoring might be a little bit low < 1314859468 735843 :coppro!~scshunt@denardo.csclub.uwaterloo.ca PRIVMSG #esoteric :as likely all scores will be either one man, two man and a queen, or three men and two queens < 1314859482 36018 :coppro!~scshunt@denardo.csclub.uwaterloo.ca PRIVMSG #esoteric :but the idea that you do not control your own scoring cards is interesting < 1314859676 923469 :oerjan!oerjan@sprocket.nvg.ntnu.no QUIT :Quit: Good night < 1314859823 187707 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :I have rules for another card game called "Mate". It is played with 20 cards only, the 89TJQ of each suit (Q is high). Each player gets ten cards laid out on the floor according to suit. These are called his "hand" even though they are actually on the floor. < 1314859883 698873 :CakeProphet!~adam@h42.33.18.98.dynamic.ip.windstream.net JOIN :#esoteric < 1314859883 903333 :CakeProphet!~adam@h42.33.18.98.dynamic.ip.windstream.net QUIT :Changing host < 1314859883 903548 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake JOIN :#esoteric < 1314859899 915427 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :First player starts by leading any card to a trick. Follower must follow suit if possible. If that is not possible, they must follow rank. If they can do neither, they lose the game and the winner counts points. < 1314859902 774017 :ive!~nn@189.179.239.6 QUIT :Quit: leaving < 1314859960 263425 :coppro!~scshunt@denardo.csclub.uwaterloo.ca PRIVMSG #esoteric :that's a perfect information game :/ < 1314859986 595705 :coppro!~scshunt@denardo.csclub.uwaterloo.ca PRIVMSG #esoteric :or is once the hands are out anyway < 1314859997 877098 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :Suits rank as in bridge. Whoever played the card that is higher ranked (or higher rank suit) wins the trick and leads any card for the next trick. (Note: Keep tricks for the players who held the cards originally; do not give them to the winner of the trick.) < 1314860095 750210 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :Sacrificing: When it is your turn to play a card (leading or following), you may, if you choose, discard any of your cards before playing. (This might allow you to follow rank if you could not otherwise do so; it also adds to your score.) If this results in you having no cards on your turn, the last card played is assumed to be your only card and you must play it if possible (otherwise you lose). < 1314860152 580174 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :Queen privilege: Whenever you lead a queen of any suit, you may force the opponent to follow with another queen if they have any. It is optional decision when you lead a queen, and an opponent having multiple queens can still select which one to play. < 1314860205 342594 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :Scoring: Only the winner scores. Add together the total number of turns plus the number of sacrifices you made, and multiply this by the scoring value of the last card you played: Eight = 6, Nine = 3, Ten = 4, Jack = 9, Queen = 10. < 1314860483 93273 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :I also have rules for a game called "Rummage", which you make melds of Rummy but also make tricks. < 1314860522 6689 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :And "Chinese Euchre", which is neither Chinese nor Euchre. < 1314861039 580577 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :Here are the rules for "Janken Poker": Shuffle the cards and deal one card face-up. Do rock-paper-scissors; the winner gets to keep that card (if stalemated, do again). You may reject the card you just received if you want to, by turning it face-down. Each player may reject only up to three cards. Repeat until each player has seven cards. < 1314861069 753228 :copumpkin!~pumpkin@unaffiliated/pumpkingod QUIT :Ping timeout: 240 seconds < 1314861074 769039 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :If you have seven cards and you receive another, you are forced to reject it (even if you have already rejected three cards). After each player has seven cards, both players discard two cards and whoever has better poker hand wins. < 1314861094 552842 :copumpkin!~pumpkin@unaffiliated/pumpkingod JOIN :#esoteric < 1314861469 845466 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :I once saw the following problem in a book: First player puts any five cards they choose from the deck face-up in front of them. Second player does the same with the remaining cards. First player then discards from zero to five cards and takes replacements of their choice from the deck. Second player does the same. Rank hands as in poker. In case of tie, second player wins. < 1314861478 915740 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :What should be strategy for first player to play? < 1314861935 783501 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :In the same book was this problem: An opponent is playing crap but loaded one of the dice so that it is always 5. It is your chance to load the second dice to whatever probabilities you want. What should you do to minimize the chance of their winning? < 1314862014 568746 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :Do you know the answer of either of these two problems? < 1314862027 736560 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :the second seems easier < 1314862049 568232 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :but still pretty hard < 1314862057 831710 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :obviously you need to load it to never roll 6 < 1314862074 739465 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :and I think semi-obviously 1, 3, 4, and 5 need to have the same probability < 1314862091 963850 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :so then it's a matter of working out what the probability of 2 should be, which is just an optimisation problem < 1314862224 532905 :wth!~tianhou@2001:0:53aa:64c:285a:e567:21d5:9c1e JOIN :#esoteric < 1314862262 168498 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :ais523: the probability of 2 is certainly 1 < 1314862279 939756 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :CakeProphet: you're trying to force a loss < 1314862285 918815 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :5+2 = 7 which is a win if you get it on the first roll < 1314862289 682423 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :and a loss on other roles of a sequence < 1314862296 844397 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :in fact I am strongly compelled by the evidence of 2. < 1314862306 105767 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :oh, I see < 1314862312 899761 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :you're misinterpreting the question < 1314862320 150047 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :pssssh, you assume I read more than the bottom line of that conversation. :P < 1314862342 65910 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :taking things out of context is always great fun. < 1314862387 30754 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :5 seems to be a good number to rig a dice to if you want to increase your chance of winning at craps, anyway < 1314862412 334493 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :I'm glad I wrote Shiro in Haskell; it would be unsalvagable if I'd messed it up this badly in another language < 1314862423 934879 :wth!~tianhou@2001:0:53aa:64c:285a:e567:21d5:9c1e PART :#esoteric < 1314862449 625518 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :ACTION is quite adept at working with sloppy code. < 1314862460 910156 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :it's an important skill to have in practice. < 1314862472 289510 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :/writing/ sloppy code however, is not. < 1314862494 872246 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :working with sloppy code is just a tactic to delay the fact that you're going to have to rewrite it < 1314862530 397369 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :that's a big assumption of what is fact. < 1314862573 534636 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric : let fpState = FPState { fpGet = (\(GlobalFPState m) -> unsafeFromAny (m Map.! fpName)) <$> gets globalFPState < 1314862573 738890 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric : , fpModify = \f -> modifyGlobalFPState (\(GlobalFPState m) -> GlobalFPState $ Map.adjust (unsafeToAny . f . unsafeFromAny) fpName m) < 1314862573 903688 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric : , fpGetIP = (\(IPFPState m) -> unsafeFromAny (m Map.! fpName)) <$> gets (ipFPState . currentIP) < 1314862573 903803 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric : , fpModifyIP = \f -> modifyCurrentIP $ \ip@IP{ipFPState = IPFPState m} -> ip{ ipFPState = IPFPState $ Map.adjust (unsafeToAny . f . unsafeFromAny) fpName m } } < 1314862577 671678 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :there, now you've all felt my pain < 1314862589 373606 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :oh wait, I can just make these lenses, yaaaaaaay < 1314862598 581057 :monqy!~swell@pool-71-102-215-70.snloca.dsl-w.verizon.net PRIVMSG #esoteric :yaaay < 1314862598 785403 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :elliott: the formatting there made me bletch, I haven't looked at the actual code yet < 1314862616 311866 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :what is FP < 1314862623 607701 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :What is lenses means in that context? < 1314862640 11560 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :I think Haskell coding possibly ought to be done in a lots-of-small-functions way, just like TDD people advocate for scripting languages < 1314862648 359167 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :zzo38: basically a get function and a set function, along with a modify function defined from the two. < 1314862652 38783 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :it's what I mostly do for ML, at least, except when replicating an imperative algorithm < 1314862659 86350 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :or, is it the set that's defined from get/modify? < 1314862661 402189 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :CakeProphet: fingerprint < 1314862667 229957 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :zzo38: lenses are functional references < 1314862682 815448 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :zzo38: basically, Lens a b is (a -> (b, b -> a)) < 1314862696 788324 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :they encompass the notion of record fields as well as a ton of other stuff < 1314862703 120060 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :and they're a Control.Category < 1314862705 601201 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :so they compose really nicely < 1314862713 353279 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :they're great < 1314862721 29289 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :OK < 1314862740 398128 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :except that's lame and no good person likes a -> (b, b -> a) < 1314862744 867735 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :How does it compare to the Pointer type in my program? < 1314862749 298499 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :CakeProphet: what? < 1314862751 278676 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :but yeah, that's how they're defined. < 1314862758 687373 :Nisstyre!~yours@out-on-162.wireless.telus.com JOIN :#esoteric < 1314862764 300172 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :CakeProphet: What is wrong with that way? < 1314862766 151799 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :that definition is not only the most efficient, it's the most elegant -- it's (a -> Store b a) < 1314862769 612487 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :where Store is the Store comonad < 1314862780 678514 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :if you unbox the tuple, it's even faster :) < 1314862784 604070 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :or use CPS, apparently < 1314862791 785490 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :elliott: I prefer the two-seperate-functions definition. I suppose it's pretty much subjective and not worth arguing/persuading about. < 1314862799 8289 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :CakeProphet: it's not subjective < 1314862803 868299 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :the store comonad version is objectively faster < 1314862810 703512 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :and has better theoretical properties < 1314862835 290931 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :I see. < 1314862848 408713 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :(used by the data-lens package) < 1314862881 617424 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :CakeProphet: What is the two-seperate-functions definition? < 1314862923 979075 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :(a -> b, b -> a -> a) < 1314862924 143770 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :data Lens a b = Lens (a -> b) (a -> b -> a) < 1314862933 440337 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :er yeah < 1314862947 444795 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :it's not as performant, not as elegant, uglier to state the properties about, has fewer nice theoretical properties, and is lame :) < 1314862947 773155 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :you can do it that way as well. < 1314862961 84577 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :edwardk would be proud of me. < 1314862969 483988 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :yeah but's totally a get function and a set functon. < 1314862971 824722 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :which is way cool. < 1314862974 660233 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :>_> < 1314862990 729110 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :yeah, and now modification is really slow < 1314862991 876222 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :awesome < 1314863002 209671 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :REALLY slow. < 1314863004 194392 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :getL (Lens f) a = pos (f a) < 1314863004 358784 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :modL (Lens f) g = peeks g . f < 1314863004 358897 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :setL (Lens f) b = peek b . f < 1314863006 719998 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :ELEGANT ENOUGH FOR YOU??? < 1314863008 605780 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :CakeProphet: actually, yes < 1314863014 115389 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :the performance difference is not minor < 1314863038 994802 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :oh and < 1314863039 319507 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :lens :: (a -> b) -> (b -> a -> a) -> Lens a b < 1314863039 484081 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :lens get set = Lens $ \a -> store (\b -> set b a) (get a) < 1314863043 385307 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :WHOOOPS SO SUPERIOR < 1314863086 349165 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :I guess I'm just a tuple-hater. < 1314863107 526473 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :So, "a" is where you store in and "b" means the type of the data stored in there? Is that what "a" and "b" means there? < 1314863115 632540 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :zzo38: yep < 1314863116 122207 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :CakeProphet: they're not tuples in the data-lens implementation < 1314863122 861411 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :type Store s = StoreT s Identity < 1314863123 25844 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :data StoreT s w a = StoreT (w (s -> a)) s < 1314863141 757455 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :CakeProphet: but I think the next version coming out is going to recommend unboxed or cps instead < 1314863146 971682 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :where cps is < 1314863162 492525 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :type Lens a b = forall r. a -> (b -> (b -> a) -> r) -> r < 1314863164 469904 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :I think I defined the Pointer type in the Constantinople compiler something like that, as a read function and a write function. < 1314863170 234883 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :and unboxed is like the tuple version but with more hashes :) < 1314863246 752095 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :yeah a -> (b -> (b -> a) -> r) -> r does not look awful in any way. < 1314863264 435500 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :CakeProphet: good thing you use the abstract API instead, then, based on construction from get/set, isomorphism, or comonad, right? < 1314863279 467806 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :and reason about it that way, rather than relying on the efficient internal implementation that avoids unboxing < 1314863287 800994 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :that also gives all the efficient update advantages of the comonad store model < 1314863302 60495 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :Although in my program, it was a datatype defined using record names, and the write function came first. In addition, the type being stored in and the type of the data stored in there is the same type. < 1314863302 899516 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :no that stuff is fine. I just dislike the cps < 1314863324 628371 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :CakeProphet: you don't have to care about it, since the pure and unboxed versions are also supplied and they all act according to the basic API < 1314863336 930429 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :but I find it hard to believe you wouldn't select to use it, on account of running the exact same code faster < 1314863351 266197 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :yes I am a performance addict. < 1314863362 452970 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :that's why I use Perl on a day-to-day basis. < 1314863365 907976 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :so fast. < 1314863366 75395 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :CakeProphet: so you're saying you'd _deliberately_ select the slower version? < 1314863372 876238 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :despite it having no visible changes to your code at all? < 1314863374 528093 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :you're insane < 1314863389 588784 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :no I thought you were referring to the cps < 1314863392 541268 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :which would change my code. < 1314863399 373603 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :no, it wouldn't < 1314863410 83605 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :uh.. < 1314863419 921475 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :because it's exposed only in terms of the abstract API that all the lens implementations in the development data-lens expose < 1314863444 59465 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :right. < 1314863453 367941 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :https://github.com/ekmett/data-lens/blob/unboxed/Data/Lens/Class.hs < 1314863458 155793 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :erm, that's not the class < 1314863461 892190 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :https://github.com/ekmett/data-lens/blob/unboxed/Data/Lens/Class/Internal.hs < 1314863462 541490 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :which is me not using cps. I thought you were saying the cps iteself was faster than any API built over it. < 1314863475 517966 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :no, the advantage there is in avoided runtime overhead < 1314863516 665304 :sebbu2!~sebbu@unaffiliated/sebbu JOIN :#esoteric < 1314863527 495198 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :How does my implementation of the Pointer type in the Constantinople compiler compare with lens? < 1314863542 942879 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :zzo38: probably badly, if it's restricted to things of the form (Lens a a) < 1314863549 784093 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :okay so these are convincing points. I can't say you've convinced me to care but I know which I'll use in the future. < 1314863571 649227 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :CakeProphet: YEEES.... THE DATA-LENS MONOPOLY SHALL GROW... < 1314863582 973964 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :(you'll probably want to use data-lens-template and data-lens-fd when you do, FWIW) < 1314863595 794802 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :elliott: Well yes it is; both types are the same but otherwise it is like the (a -> b) and (b -> a -> a) stuff < 1314863599 572852 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :(former for deriving of lenses from record fields, latter is just the module that would be in data-lens if it didn't depend on fucntional dependencies) < 1314863610 930357 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :elliott: but fclabels has (!%%=)!!! < 1314863635 510393 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :CakeProphet: data-lens has (^!+=) < 1314863637 331141 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :there's NO WAY I could get that functionality from data-lens < 1314863642 128121 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :...oooooh. < 1314863647 191075 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :also (!&&=) < 1314863652 346311 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :totally useful, let me tell you :-D < 1314863671 450844 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :CakeProphet: http://hackage.haskell.org/packages/archive/data-lens-fd/2.0/doc/html/Data-Lens.html, http://hackage.haskell.org/packages/archive/data-lens/2.0.1/doc/html/Data-Lens-Common.html < 1314863676 388216 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :that's objectively better. Based on number and symbol combinations of hilarious operators I judge this to be superior. < 1314863681 358050 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :former is State monad stuff < 1314863683 238512 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :latter is functional stuff < 1314863694 379140 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :But for the Constantinople esolang, my system works, at least. type PointerWrite = Memory -> Memory -> Memory; type PointerRead = Memory -> Memory; data Pointer = Pointer { mem_write :: PointerWrite, mem_read :: PointerRead }; root :: Pointer; root = Pointer const id; < 1314863695 728741 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :CakeProphet: also, fclabels was recently ruined by switching to arrows :) < 1314863700 954267 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :wat < 1314863701 610901 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :why. < 1314863704 610085 :sebbu!~sebbu@unaffiliated/sebbu QUIT :Ping timeout: 245 seconds < 1314863706 90546 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :CakeProphet: because arrows suck < 1314863717 126175 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :yeah who uses that shit. < 1314863735 15921 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :&&& is maybe like the only thing I've found a use for. < 1314863753 744646 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :well, it provides one useful thing (partial lenses, i.e. things that act like (a -> Maybe b, b -> a -> Maybe a)), but apart from that it's just semantic gunk < 1314863766 614416 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :and those kinds of things can be built as a separate thing without some over-arching abstraction anyway < 1314863776 394523 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :oh hey that's somewhat useful. < 1314863791 639204 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :it is, but roconnor murmured something about implementing them for data-lens :) < 1314863792 959533 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :Is there any similarity? I could have done it differently if it is useful to do so but for Constantinople both are the same type and I have functions to transform Pointers < 1314863811 907158 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :zzo38: that should be fine for what you have < 1314863827 773760 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :elliott: that a boy. Tell him everything will be okay. < 1314863838 153526 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :do you mean atta boy < 1314863845 238560 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :...no < 1314863848 550040 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :but maybe I do? < 1314863850 104537 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :also? < 1314863864 670322 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :isn't that sort of the same? < 1314863893 557284 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :i don't think "that a boy" is a thing < 1314863914 10963 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :internet says so. < 1314863916 70449 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :Do the lenses have anything like transPointer and transWrite? < 1314863920 233330 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :pah < 1314863927 96458 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :zzo38: what are transPointer and transWrite < 1314863933 513849 :Patashu!~Patashu@c122-106-155-219.carlnfd1.nsw.optusnet.com.au JOIN :#esoteric < 1314863949 473891 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :any sort of abstract library in Haskell probably has no mention of "pointer" anywhere in the API. < 1314863968 217124 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :transPointer :: PointerWrite -> PointerRead -> Pointer -> Pointer; transPointer w r p = Pointer (transWrite w p) (r . (mem_read p)); < 1314863972 3988 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :unless, of course, it's an abstract pointer library. :D < 1314863976 776843 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :transWrite :: PointerWrite -> Pointer -> PointerWrite; transWrite w p x y = mem_write p (w x (mem_read p y)) y; < 1314863981 90619 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :zzo38: that's just composition, isn't it? < 1314863984 295069 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :in which case, yes < 1314863988 244709 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Lenses form a category < 1314863998 658124 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :CakeProphet: oh yeah, and with data-lens, you have to hide less than fclabels; you just have to hide id and (.) for Prelude so you can get the Control.Category versions < 1314864031 641504 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :things in Prelude should just get eaten by other things. < 1314864035 579962 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :totally a good idea. < 1314864046 994240 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Control.Category should be exported by Prelude, it's just a bug that it isn't :) < 1314864129 477521 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :elliott: Is it just composition? Well, the transPointer function is used to change a Pointer, so that it points to the head of whatever it was pointing to before, or to the tail of what it was before, etc < 1314864151 774052 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :What are Control.Category versions of id and (.) < 1314864155 285014 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :import Control.Category() --whoops < 1314864159 622493 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :zzo38: typeclass methods < 1314864162 584538 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :zzo38: hmm, well it _looks_ like composition < 1314864172 879897 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :zzo38: control.category just adds a category typeclass < 1314864180 294080 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :like you've said, return and (<=<) make the monad versions < 1314864188 331349 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :and Kleisli is an instance of Control.Category.Category < 1314864189 679197 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :as is (->) < 1314864189 843647 :Nisstyre!~yours@out-on-162.wireless.telus.com QUIT :Ping timeout: 240 seconds < 1314864194 366934 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :http://haskell.org/ghc/docs/7.0.4/html/libraries/base/Control-Category.html < 1314864214 465794 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :newtype Kleisli m a b = Kleisli { runKleisli :: a -> m b } < 1314864214 630327 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :instance Monad m => Category (Kleisli m) where < 1314864214 630493 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric : id = Kleisli return < 1314864214 630596 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric : (Kleisli f) . (Kleisli g) = Kleisli (\b -> g b >>= f) < 1314864228 190245 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :could Either be a Category maybe? < 1314864248 433436 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :I am basing this solely on the fact that it has two type parameters. :P < 1314864263 702421 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :I am too tired to do any kind of reasoning on the matter. < 1314864281 680002 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :we need < 1314864284 340829 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :id :: Either a a < 1314864285 992 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :so no. < 1314864295 826269 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :(.) :: Either b c -> Either a b -> Either a c < 1314864300 967248 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :this is also not possible. < 1314864307 84994 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :it's very much not a category :P < 1314864336 869531 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :I think id and (.) should have the same meaning as it does now, and using different names for the Control.Category. Like how monads use return and (<=<) instead of id and (.) < 1314864347 883757 :sebbu2!~sebbu@unaffiliated/sebbu NICK :sebbu < 1314864358 992046 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :category theorists and anyone who uses lenses would disagree :-P < 1314864359 318213 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :elliott: if you had something like Left a | Right b | Nothing maybe? < 1314864374 297243 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :the only reason most of Prelude is like it is is because of backwards compatibility < 1314864383 433826 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :CakeProphet: so Maybe (Either a b) < 1314864388 729043 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :id = Nothing < 1314864389 175665 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :yes < 1314864391 741068 :Sgeo!~Sgeo@ool-ad034d00.dyn.optonline.net PRIVMSG #esoteric :(Left _) . (Right _) = ? < 1314864398 696780 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Sgeo: Nothing, presumably < 1314864408 476418 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :I don't think it obeys the laws < 1314864412 779874 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :f . id = id . f = f < 1314864413 754414 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :yes if you get "b" constructor then it is Nothing < 1314864422 322421 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :if it's "a" or "c" then you get... a or c < 1314864424 718365 :Sgeo!~Sgeo@ool-ad034d00.dyn.optonline.net PRIVMSG #esoteric :Oh, wasn't paying attention to chat after elliott> (.) :: Either b c -> Either a b -> Either a c < 1314864453 830080 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :or rather TWO bs. basically b's are eaten. < 1314864468 553447 :Sgeo!~Sgeo@ool-ad034d00.dyn.optonline.net PRIVMSG #esoteric :I need to go to sleep < 1314864470 46333 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :But the monads are only for the same category as before, since it has the same objects, same morphisms, etc. The id and (.) are only for Hask category. < 1314864500 383634 :Sgeo!~Sgeo@ool-ad034d00.dyn.optonline.net PRIVMSG #esoteric :Night < 1314864517 203474 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :not sure what to do in the case where you have an a and a c. < 1314864517 744957 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Sgeo: morn < 1314864527 238249 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :I guess Nothing is always a convenient option. < 1314864541 722978 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :but it could prefer one over the other. < 1314864549 325053 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :this is probably breaking a bunch of laws I don't know about though. < 1314864576 58549 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric : f . id = id . f = f < 1314864577 642566 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :that's the one law < 1314864582 732721 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :you're breaking it. < 1314864582 898621 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :Maybe the id for Category should be called idC < 1314864625 447969 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :Nothing . a = a :P < 1314864628 322768 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :a . Nothing = a < 1314864631 946882 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :does that fix it? < 1314864650 709112 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :Other law is associativity < 1314864705 789453 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :CakeProphet: doesn't type. < 1314864711 265337 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :zzo38: oh, yes. < 1314864713 451144 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :And the (.) for Category is called (<<<) < 1314864715 586654 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :elliott: oh right. < 1314864752 932115 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :Left a | Right b | Both a b < 1314864762 988869 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :Left a | Right b | Both a b | Nothing ???? < 1314864768 729017 :monqy!~swell@pool-71-102-215-70.snloca.dsl-w.verizon.net PRIVMSG #esoteric :zzo38: no it's called (.) < 1314864778 883456 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :CakeProphet: this sure sounds terrible < 1314864780 966413 :monqy!~swell@pool-71-102-215-70.snloca.dsl-w.verizon.net PRIVMSG #esoteric :zzo38: afaik (<<<) is just an alias to match (>>>) < 1314864789 21696 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :elliott: but maybe it's a category. :P < 1314864804 80286 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :O, I looked at the codes for Control/Category.hs and in fact it does define id and (.) on the Hask category as well. < 1314864816 326992 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :hey sometimes I need one, the other, both, or neither. anywhere in every function. < 1314864819 627777 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :zzo38: yes, it's pretty much entirely backwards compatible. < 1314864821 593554 :FireFly!~firefly@unaffiliated/firefly JOIN :#esoteric < 1314864826 517366 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :It says directly in the file: (<<<) = (.) < 1314864902 295421 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :LeftLeft a | LeftRight b | RightLeft c | RightRight d | LeftLeftLeftRight a b | LeftLeftRightLeft a b | ... | All a b c d | Nothing < 1314864906 344372 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :elliott: it could always get worse < 1314864963 322105 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :: replicateM_ < 1314864964 354154 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric ::t replicateM_ < 1314864965 12380 :lambdabot!~lambdabot@li85-105.members.linode.com PRIVMSG #esoteric :forall (m :: * -> *) a. (Monad m) => Int -> m a -> m () < 1314865043 630199 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :also *LeftLeftRightLeft a c < 1314865055 880471 :Nisstyre!~yours@out-on-162.wireless.telus.com JOIN :#esoteric < 1314865105 540022 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com PRIVMSG #esoteric :O, the difference is (<<<) has different fixity than (.) < 1314865111 308188 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :elliott: truly this is a powerful type with implications both practical and theoretical. < 1314865143 244656 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :oh you could also throw in a linked list just for fun. < 1314865222 499553 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :well I guess it would be a tree actually. < 1314865554 858638 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric ::t mapM_ < 1314865555 500440 :lambdabot!~lambdabot@li85-105.members.linode.com PRIVMSG #esoteric :forall a (m :: * -> *) b. (Monad m) => (a -> m b) -> [a] -> m () < 1314865717 129708 :Nisstyre!~yours@out-on-162.wireless.telus.com QUIT :Ping timeout: 258 seconds < 1314866233 766829 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :my code somehow grew four lines during that massive simplification :-| < 1314866834 509921 :monqy!~swell@pool-71-102-215-70.snloca.dsl-w.verizon.net PRIVMSG #esoteric ::( < 1314866847 310200 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :and i don't think it got any faster too < 1314866936 432052 :monqy!~swell@pool-71-102-215-70.snloca.dsl-w.verizon.net PRIVMSG #esoteric :good thing simple is good < 1314866955 702877 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :i'm not sure it simplified much :D < 1314866960 305493 :monqy!~swell@pool-71-102-215-70.snloca.dsl-w.verizon.net PRIVMSG #esoteric ::'( < 1314866972 79980 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :must think of good reason to keep....................................... < 1314867086 538977 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :monqy: there's pretty much only three improvements left to do to the code in its current state oops... < 1314867119 836307 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :make it pass Mycology fully, give names to each of the basic instruction interpreters (maybe), implement the new fungespace, and maybe clean it up generally < 1314867308 69265 :Nisstyre!~yours@out-on-210.wireless.telus.com JOIN :#esoteric < 1314867556 431253 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com QUIT :Remote host closed the connection < 1314867625 79712 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :ais523: you're still awake? < 1314867632 71518 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :yes < 1314867636 841607 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :I'm trying to roll over sleep pattern < 1314867651 632878 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :me too! it probably won't work for me, tough < 1314867652 579793 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :though < 1314867662 166216 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :my default sleep pattern seems to be "desperately trying to get on a normal sleep pattern" < 1314867671 739514 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :it's... suboptimal < 1314867814 644151 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Shiro/Types.hs:1:1: < 1314867814 964380 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric : Dynamic linking required, but this is a non-standard build (eg. prof). < 1314867815 129161 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric : You need to build the program twice: once the normal way, and then < 1314867815 129341 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric : in the desired way using -osuf to set the object file suffix. < 1314867817 604875 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :oh my god, not this again < 1314867846 672270 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :oh, it's because of Template Haskell usage < 1314867851 562097 :Nisstyre!~yours@out-on-210.wireless.telus.com QUIT :Ping timeout: 276 seconds < 1314867856 712026 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :ais523: shake some generic fists at people for me, thanks < 1314867865 990758 :monqy!~swell@pool-71-102-215-70.snloca.dsl-w.verizon.net PRIVMSG #esoteric :what hapened... < 1314867871 478124 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :people, stop being so peoplish! < 1314867882 928701 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :monqy: building profiling builds of programs that use TH is a bit of a pain < 1314867910 248908 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :"Exclamation mark formed in space by two colliding galaxies" this is definitely new < 1314867911 77066 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :s < 1314867919 972811 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :"An awesome image that has been released by Nasa shows two galaxies colliding to resemble an enormous purple exclamation mark." are you even pretending to be news < 1314868023 247052 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :monqy: cabal-dev is good btw < 1314868031 179957 :monqy!~swell@pool-71-102-215-70.snloca.dsl-w.verizon.net PRIVMSG #esoteric :whats'e that < 1314868073 120018 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :monqy: it sandboxes cabal stuff so that each project has its package repository, which is useful because cabal loves to break < 1314868130 389217 :monqy!~swell@pool-71-102-215-70.snloca.dsl-w.verizon.net PRIVMSG #esoteric :the dependency tracking might be nice too, assuming it can does that < 1314868137 59962 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :"shiro: Most RTS options are disabled. Link with -rtsopts to enable them." i did you asshole :( < 1314868149 363429 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :monqy: define dependency tracking? obviously it makes sure that you don't epend on anything without noting it < 1314868268 454455 :monqy!~swell@pool-71-102-215-70.snloca.dsl-w.verizon.net PRIVMSG #esoteric :i mean for packaging purposes one of my nightmares is that dependencies and friends murder me in my sleep < 1314868287 592337 :monqy!~swell@pool-71-102-215-70.snloca.dsl-w.verizon.net PRIVMSG #esoteric :should I ever want to make my own packages < 1314868289 609492 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :monqy: im dont understand............. < 1314868370 37437 :monqy!~swell@pool-71-102-215-70.snloca.dsl-w.verizon.net PRIVMSG #esoteric :keeping track of what pakcages I use: a good thing < 1314868379 458389 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :monqy: you know how to use cabal files right... < 1314868387 949460 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric : build-depends: < 1314868388 114333 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric : base >= 4 && < 5, < 1314868388 327314 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric : containers >= 0.4 && < 0.5, < 1314868388 492204 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric : bytestring >= 0.9 && < 0.10, < 1314868388 492388 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric : process >= 1.0 && < 1.1, < 1314868388 829576 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric : random >= 1.0 && < 1.1, < 1314868390 467694 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric : filepath >= 1.2 && < 1.3, < 1314868392 308463 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric : time >= 1.2 && < 1.4, < 1314868394 764597 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric : directory >= 1.1 && < 1.2, < 1314868396 315087 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric : unix >= 2.4 && < 2.5, < 1314868398 418479 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric : mtl >= 2.0 && < 2.2, < 1314868400 415111 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric : data-lens >= 2.0 && < 2.1, < 1314868404 360960 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric : data-lens-template >= 2.1 && < 2.2, < 1314868406 354413 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric : hashtables >= 1.0 && < 1.1 < 1314868408 312978 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :--shiro.cabal < 1314868410 455043 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :i just started with base and then added the packages until my existing code worked < 1314868417 550282 :monqy!~swell@pool-71-102-215-70.snloca.dsl-w.verizon.net PRIVMSG #esoteric :but my nightmare is in getting that to happen < 1314868425 79674 :monqy!~swell@pool-71-102-215-70.snloca.dsl-w.verizon.net PRIVMSG #esoteric :the cabal file < 1314868431 497688 :monqy!~swell@pool-71-102-215-70.snloca.dsl-w.verizon.net PRIVMSG #esoteric :ive never done it im scared ;_; < 1314868436 719679 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :cabal init --no-comments < 1314868440 137088 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :answer its questions < 1314868442 271711 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :modify the result < 1314868462 346357 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :monqy: but it's easy: http://sprunge.us/EZLZ < 1314868489 101279 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :the only tricky part is knowing what bounds to give the dependencies, but it's pretty easy by looking at the release history of the package to see what kind of increments it goes in < 1314868502 431583 :monqy!~swell@pool-71-102-215-70.snloca.dsl-w.verizon.net PRIVMSG #esoteric :that is the scariest part :'( < 1314868507 998765 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :if the major version number increases only very rarely, you probably want the current minor release; else the current major release < 1314868513 200443 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :it's really not hard < 1314868519 772852 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :it just takes a few minutes < 1314868579 769172 :monqy!~swell@pool-71-102-215-70.snloca.dsl-w.verizon.net PRIVMSG #esoteric :i'll se what hapens when i try it < 1314868586 904331 :monqy!~swell@pool-71-102-215-70.snloca.dsl-w.verizon.net PRIVMSG #esoteric :(asusuming i try it) < 1314869002 6942 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :what's interesting < 1314869014 530514 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :is that a photograph of a photograph is a photograph of the original photograph's subject. < 1314869025 339466 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :ok < 1314869044 653524 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :monads are like cameras < 1314869049 297694 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :snap :: a -> Photo a < 1314869056 943592 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :photographs are like pointers to moments. < 1314869057 439599 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :photoshop :: (a -> b) -> Photo a -> Photo b < 1314869064 776126 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :cakeProphet :: Photo (Photo a) -> Photo a < 1314869067 282381 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :elliott: except photos auto-join < 1314869091 113801 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :...well, they auto-join and get progressively shittier in quality. < 1314869206 304358 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :snap (Photo a) = snap a < 1314869208 983121 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :or something. < 1314869245 767327 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :...but not really. I guess join is best to encapsulate (oh shit OO terminology) that behavior. < 1314869256 967030 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :autovivify :: Photo a -> a -- unimplementable < 1314869282 133908 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :...I don't see how that's autovivify in the Perl sense. < 1314869369 863230 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :more like: vivify :: Maybe a -> a < 1314869378 580417 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :or something. < 1314869388 13027 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :but not really. < 1314869406 924677 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :it's more like vivify :: weird Perl shit you probably shouldn't write in terms of Haskell < 1314869409 535040 :Nisstyre!~yours@out-on-135.wireless.telus.com JOIN :#esoteric < 1314869415 269423 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :well, autovivification is when things get created automatically. < 1314869420 565017 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :correct you are. < 1314869425 95510 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :so that's automatically creating an object from a photo of it. < 1314869427 867617 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :which you can't do. < 1314869433 2413 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :ah I see. < 1314869446 641780 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :anyway, what matters is that the terminology is colourful :) < 1314869461 38454 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :uh oh, some part of me just wondered whether that photograph metaphor is actually good < 1314869463 670710 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :self-hatred enabled < 1314869551 849213 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :elliott -- the angsty teen years < 1314869564 561101 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :nah, i went through those a few years ago < 1314869923 335754 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :monqy: nobdoybody can help me :'( < 1314869925 640478 :Nisstyre!~yours@out-on-135.wireless.telus.com QUIT :Ping timeout: 264 seconds < 1314869927 867382 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :selfhate elliott' = let elliott = ElliottWithHate elliott' hatred; hatred = join hate elliott in elliott < 1314869936 731999 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :CakeProphet: how long did that take you < 1314869945 255866 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :had to tie some knots... < 1314869946 816720 :mycroftiv!~ircguy@h69-128-47-242.mdsnwi.dedicated.static.tds.net QUIT :*.net *.split < 1314869946 821944 :Zetro!~Zetro@zetro.xen.prgmr.com QUIT :*.net *.split < 1314869946 981428 :twice11!~twice11@lenny32.physik.fu-berlin.de QUIT :*.net *.split < 1314869957 161459 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :but actually not long. < 1314869982 760472 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :within the minute. < 1314870120 563734 :mycroftiv!~ircguy@h69-128-47-242.mdsnwi.dedicated.static.tds.net JOIN :#esoteric < 1314870120 728327 :Zetro!~Zetro@zetro.xen.prgmr.com JOIN :#esoteric < 1314870120 728472 :twice11!~twice11@lenny32.physik.fu-berlin.de JOIN :#esoteric < 1314870174 441809 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Deewiant: jesus christ, man, long_.d < 1314870181 339699 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Deewiant: you're meant to be better than this < 1314870193 195087 :Deewiant!~deewiant@cs27125254.pp.htv.fi PRIVMSG #esoteric :What < 1314870202 111240 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Deewiant: Inline assembly :D < 1314870202 975041 :FireFly!~firefly@unaffiliated/firefly QUIT :Quit: FireFly < 1314870226 885460 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :heh, I like how your fallback case uses bigints < 1314870273 906250 :Deewiant!~deewiant@cs27125254.pp.htv.fi PRIVMSG #esoteric :Well, the damn compiler doesn't implement 128-bit integers < 1314870282 31414 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric : -- lol @ Deewiant (note: should be aim to next instruction, not advance... probably?) < 1314870282 196359 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric : -- (definitely in the else clause) < 1314870282 196542 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric : -- well, it kind of is now < 1314870282 196645 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :I'm really good at commenting < 1314870295 64972 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :I don't know whether half my known bugs still exist or not < 1314870299 388186 :Deewiant!~deewiant@cs27125254.pp.htv.fi PRIVMSG #esoteric :It was much easier to get the asm to work < 1314870342 305623 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :http://hackage.haskell.org/package/largeword lame, I thought this would use some fast library for it, but it's just hand-written < 1314870439 957406 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric : -- TODO: Also, if the least significant bit of the flags cell is < 1314870440 162847 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric : -- high, o treats the file as a linear text file; that is, any < 1314870440 162930 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric : -- spaces before each EOL, and any EOLs before the EOF, are not < 1314870440 162972 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric : -- written out. The resulting text file is identical in appearance < 1314870440 163014 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric : -- and takes up less storage space. < 1314870442 689964 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric : let process | flags == 0 = id < 1314870443 56719 :coppro!~scshunt@denardo.csclub.uwaterloo.ca PRIVMSG #esoteric :lol < 1314870444 400080 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric : | otherwise = textify < 1314870446 435003 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Past me, you implemented this, why did you leave the TODO < 1314870448 956919 :Deewiant!~deewiant@cs27125254.pp.htv.fi PRIVMSG #esoteric :If nobody told you about Windows yet: {Get,Free}EnvironmentStrings[AW] < 1314870457 331702 :coppro!~scshunt@denardo.csclub.uwaterloo.ca PRIVMSG #esoteric :so me and another guy managed to simultaneously start work on a several-year-dead project < 1314870465 672925 :copumpkin!~pumpkin@unaffiliated/pumpkingod QUIT :Ping timeout: 264 seconds < 1314870470 151811 :coppro!~scshunt@denardo.csclub.uwaterloo.ca PRIVMSG #esoteric :like, within days of each other < 1314870471 943930 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Deewiant: Ugh < 1314870489 681390 :copumpkin!~pumpkin@unaffiliated/pumpkingod JOIN :#esoteric < 1314870492 109477 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Deewiant: I'd rather just depend on POSIX than manually case on the platform and muck about with the FFI for Windows < 1314870497 192247 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Who needs EVAR on Windows anyway :P < 1314870505 28949 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :I suppose I could write a tiny C wrapper sometime. < 1314870522 992258 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Now to figure out why the heck cabal-dev won't build me a profiling version < 1314870560 63255 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Jesus christ, what is the point of letting me build a profiling version if you won't turn -rtsopts on < 1314870565 762859 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Oh < 1314870566 786414 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Oh < 1314870569 186344 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :I see < 1314870575 502309 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :I have been running the old version all this time < 1314870579 569394 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :I'm < 1314870580 164400 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :smart < 1314870595 508794 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :This means that all my performance measurements might be totally bullshit :D < 1314870618 59073 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Ha ha ha, the zero change in performance is actually a slowdown of about half a second :-| < 1314870622 528669 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Fuck my life :-| < 1314870632 658371 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :> let cakeprophet = Prophet cake sleep; sleep = sleep cakeprophet in sleep cakeprophet < 1314870633 299684 :lambdabot!~lambdabot@li85-105.members.linode.com PRIVMSG #esoteric : Not in scope: data constructor `Prophet' < 1314870708 236461 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :cakeskell permits infinite types... < 1314870761 72643 :coppro!~scshunt@denardo.csclub.uwaterloo.ca PRIVMSG #esoteric :I also love how the entire Erlang community is on #erlang :P < 1314870922 934796 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Ha ha ha this profiling trace is depressing. < 1314870997 380283 :Deewiant!~deewiant@cs27125254.pp.htv.fi PRIVMSG #esoteric :Everything is somewhat slow? < 1314871017 815364 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Deewiant: The non-lens record accessors somehow make an appearance as noticeable cost centres. < 1314871036 278147 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Ordinarily I'd expect this to be because everything else is just so fast, but somehow my record accessors are actually slow. < 1314871065 700787 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :OK, shaved off about a tenth of a second by strictifying EVERYTHING < 1314871100 216373 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Maybe I should try the git data-lens with those nice unboxed tuples. < 1314871294 719563 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :This is actually really disturbing... why is this so slow. < 1314872379 353358 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Looks like I'm going to have to revert these lens changes for now. < 1314872399 977300 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Deewiant: Yeah, OK, the new fungespace will be within the next few changes I make, so WATCH OUT. < 1314872455 211537 :Deewiant!~deewiant@cs27125254.pp.htv.fi PRIVMSG #esoteric :ACTION ducks < 1314872462 225233 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Deewiant: TOO LATE IT HIT YOU WITH SPEED < 1314872472 956005 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric : FUCKK I CANT HANDLE THE PSE;D < 1314872510 165719 :monqy!~swell@pool-71-102-215-70.snloca.dsl-w.verizon.net PRIVMSG #esoteric :moment of silence < 1314872515 528621 :monqy!~swell@pool-71-102-215-70.snloca.dsl-w.verizon.net PRIVMSG #esoteric :"in memory of Deewiant" < 1314872525 639607 :monqy!~swell@pool-71-102-215-70.snloca.dsl-w.verizon.net PRIVMSG #esoteric :""couldnt handle the pse;d"" < 1314872578 657496 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :nobody can handle the pse;d < 1314872593 736776 :Deewiant!~deewiant@cs27125254.pp.htv.fi PRIVMSG #esoteric :How will you code it if you can't handle it < 1314872614 975734 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :badly < 1314872630 58381 :Deewiant!~deewiant@cs27125254.pp.htv.fi PRIVMSG #esoteric :Shame < 1314875700 419695 :monqy!~swell@pool-71-102-215-70.snloca.dsl-w.verizon.net QUIT :Quit: hello < 1314876280 307010 :GreaseMonkey!~gm@unaffiliated/greasemonkey QUIT :Quit: The Other Game < 1314876816 516160 :azaq23!~derivecto@unaffiliated/azaq23 QUIT :Ping timeout: 260 seconds < 1314877484 890062 :azaq23!~derivecto@unaffiliated/azaq23 JOIN :#esoteric < 1314878093 39146 :boily!~boily@mtl.savoirfairelinux.net JOIN :#esoteric < 1314880304 587662 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Hmm < 1314880311 367570 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :I guess I'll rewrite the fungespace with the non-lens version < 1314880320 432048 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :And conservatively transform things into a more lens-based style later < 1314880331 287802 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :When I can run Mycology in under half a second :P < 1314880538 683065 :aloril!~aloril@84.249.126.153 QUIT :Ping timeout: 246 seconds < 1314881277 971118 :Nisstyre!~yours@out-on-204.wireless.telus.com JOIN :#esoteric < 1314881337 694603 :aloril!~aloril@dsl-tkubrasgw3-fe7ef900-153.dhcp.inet.fi JOIN :#esoteric < 1314881689 497766 :FireFly!~firefly@unaffiliated/firefly JOIN :#esoteric < 1314882383 427065 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Deewiant: How does the dynamically-sized array stuff work in CCBI's fungespace, anyway; it seems like you'd have to move spaces around a ton to make it work. Or do they have a maximum size, just not preallocate to that? < 1314882436 855372 :Deewiant!~deewiant@cs27125254.pp.htv.fi PRIVMSG #esoteric :The arrays are mostly static < 1314882454 817168 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :"Mostly" :-) < 1314882480 853010 :Deewiant!~deewiant@cs27125254.pp.htv.fi PRIVMSG #esoteric :When a new box gets placed, sometimes the array from an old box it subsumes is reused < 1314882487 211334 :Deewiant!~deewiant@cs27125254.pp.htv.fi PRIVMSG #esoteric :See AABB.consume < 1314882492 87415 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Heeeey, my structure is fractal. < 1314882498 848575 :Deewiant!~deewiant@cs27125254.pp.htv.fi PRIVMSG #esoteric :And yes, it involves moving stuff around a ton :-P < 1314882502 410845 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Deewiant: I was going to avoid reading your code for licensing reasons but OK. < 1314882511 948334 :Deewiant!~deewiant@cs27125254.pp.htv.fi PRIVMSG #esoteric :Well don't then < 1314882522 885298 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Nah, I will, and just ignore any created derivative status :P < 1314882526 138351 :Deewiant!~deewiant@cs27125254.pp.htv.fi PRIVMSG #esoteric :Await my write-up on the thing, which may or may not be begun and finished this year < 1314882534 125807 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Deewiant: Not sure I see the advantage over a simpler mcmap-style region layout, mind you < 1314882555 451843 :Deewiant!~deewiant@cs27125254.pp.htv.fi PRIVMSG #esoteric :What's a simpler mcmap-style region layoutt < 1314882557 585006 :Deewiant!~deewiant@cs27125254.pp.htv.fi PRIVMSG #esoteric :-t < 1314882611 810018 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Deewiant: Hash table indexed by dividing each coordinate by N, resulting in a static-sized square array indexed by moduloing each coordinate by N < 1314882624 98434 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Literally the simplest possible "square regions in a hash table" < 1314882710 716741 :Deewiant!~deewiant@cs27125254.pp.htv.fi PRIVMSG #esoteric :So a partition of the space into arrays of size N^d < 1314882736 236896 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Deewiant: Yes < 1314882753 536107 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Deewiant: I could even cheat like Vorpal and arrange it so that a convenient amount of negative space is included in the origin array :-) < 1314882772 323229 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :But I'm fully willing to believe that AABB is totally faster for some reason, I just don't know why :P < 1314882810 656573 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Obviously something even fancier is probably the ideal, but I can't think of anything that wouldn't be fast with this < 1314882818 146125 :Deewiant!~deewiant@cs27125254.pp.htv.fi PRIVMSG #esoteric :Nobody's done quite that, I don't think < 1314882823 730982 :Deewiant!~deewiant@cs27125254.pp.htv.fi PRIVMSG #esoteric :So maybe it is better, who knows < 1314882846 400667 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Really? It's the "obvious thing", at least to me. < 1314882880 199656 :Deewiant!~deewiant@cs27125254.pp.htv.fi PRIVMSG #esoteric :Well, most don't divide the space into square regions, i.e. they just use N = 1 :-P < 1314882893 865940 :Deewiant!~deewiant@cs27125254.pp.htv.fi PRIVMSG #esoteric :RC/Funge-98 does something weird < 1314882938 237754 :Deewiant!~deewiant@cs27125254.pp.htv.fi PRIVMSG #esoteric :stinkhorn uses a quadtree of square regions in some way, IIRC < 1314882950 371374 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :http://sprunge.us/cVAX ;; there HAS to be a way to exploit this redundancy :P < 1314882958 12957 :Deewiant!~deewiant@cs27125254.pp.htv.fi PRIVMSG #esoteric :And then there's CCBI < 1314882960 935583 :Deewiant!~deewiant@cs27125254.pp.htv.fi PRIVMSG #esoteric :And I think that's it < 1314882990 924286 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Deewiant: Well sure, but the field of "sparse, discrete rectangular space" surely cannot be that undersolved < 1314883009 954958 :Deewiant!~deewiant@cs27125254.pp.htv.fi PRIVMSG #esoteric :Oh, I'm sure it isn't < 1314883016 994179 :Deewiant!~deewiant@cs27125254.pp.htv.fi PRIVMSG #esoteric :I just meant in the context of Funge < 1314883081 629639 :Nisstyre!~yours@out-on-204.wireless.telus.com QUIT :Ping timeout: 260 seconds < 1314883091 164715 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Deewiant: Right :P < 1314883099 907707 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Hmm < 1314883124 841391 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :I can't think of any way to exploit the redundancy in these structures that doesn't end up creating a quadtree :D < 1314883135 59004 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :And there's no way I'm writing the essential same algorithms twie < 1314883136 619158 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :twice < 1314883368 76340 :Deewiant!~deewiant@cs27125254.pp.htv.fi PRIVMSG #esoteric :Shoppe --> < 1314883535 102558 :derrik!~xix@gprs-inet-65-44.elisa.ee JOIN :#esoteric < 1314883631 701655 :Nisstyre!~yours@out-on-164.wireless.telus.com JOIN :#esoteric < 1314883956 533967 :edwardk!~edwardk@209-6-31-98.c3-0.smr-ubr1.sbo-smr.ma.cable.rcn.com JOIN :#esoteric < 1314883956 739113 :edwardk!~edwardk@209-6-31-98.c3-0.smr-ubr1.sbo-smr.ma.cable.rcn.com QUIT :Changing host < 1314883956 739214 :edwardk!~edwardk@pdpc/supporter/professional/edwardk JOIN :#esoteric < 1314884501 732828 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :hmm, actually i probably don't need mincoords/maxcoords on the region map < 1314884509 253315 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :or the population < 1314884516 447376 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :should be sufficiently few elements to calculate that... < 1314884573 328954 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Annoying that I can't benefit from IntMap's fast minimum/maximum, though, because I need the minimum/maximum vectors... < 1314884586 918594 :Phantom_Hoover!~phantomho@unaffiliated/phantom-hoover/x-3377486 JOIN :#esoteric < 1314884607 737706 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :helo Phantom_Hoover < 1314884637 787743 :Deewiant!~deewiant@cs27125254.pp.htv.fi PRIVMSG #esoteric :You should probably think about what use case you're optimizing for first :-P < 1314884847 660508 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Deewiant: Mycology, Fungicide < 1314884854 126203 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :And preferably no pathological worst-cases < 1314884875 12035 :Deewiant!~deewiant@cs27125254.pp.htv.fi PRIVMSG #esoteric :case filename of ... < 1314885019 451735 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Deewiant: CCBI does that, I take it? < 1314885031 357869 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Anyway, this isn't the Best Fungespace, this is just something interim to get my runtime down :) < 1314885079 352016 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Hmm, how big to make regions < 1314885391 805542 :Gregor!foobar@codu.org PRIVMSG #esoteric :What are Haskell and BrainFuck's main differences? I am having trouble spotting them other than syntax, evaluation and staticly typed stuff. < 1314885515 802051 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Gregor: In brainfuck, [] is a function. But in Haskell, "import" isn't a function. < 1314885519 463089 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :So brainfuck is more flexible. < 1314885527 947716 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Also brainfuck is everywhere; Urban Müller said so. < 1314885574 576953 :Gregor!foobar@codu.org PRIVMSG #esoteric :Ahhh! < 1314885714 528514 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Stop bullying me :( < 1314885784 578752 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Apparently Shiro would cost $32,460 to develop. < 1314885794 711752 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :I'm always quite sceptical of sloccount's estimates. < 1314885967 988727 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :`addquote You mean it'd be Tau Zero but without the spaceship? < 1314885971 944180 :HackEgo!Gregor@codu.org PRIVMSG #esoteric :635) You mean it'd be Tau Zero but without the spaceship? < 1314885985 524437 :Phantom_Hoover!~phantomho@unaffiliated/phantom-hoover/x-3377486 PRIVMSG #esoteric :Um, wha? < 1314885986 221796 :lambdabot!~lambdabot@li85-105.members.linode.com PRIVMSG #esoteric :Phantom_Hoover: You have 1 new message. '/msg lambdabot @messages' to read it. < 1314885993 467461 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Phantom_Hoover: I laughed; good enough for me < 1314886506 493365 :Nisstyre!~yours@out-on-164.wireless.telus.com QUIT :Remote host closed the connection < 1314886746 571919 :Nisstyre!~yours@infocalypse-net.info JOIN :#esoteric < 1314886747 320398 :copumpkin!~pumpkin@unaffiliated/pumpkingod QUIT :Quit: Computer has gone to sleep. < 1314886850 77384 :derrik!~xix@gprs-inet-65-44.elisa.ee QUIT :Ping timeout: 258 seconds < 1314886880 821259 :derrik!~xix@62.65.215.209.cable.starman.ee JOIN :#esoteric < 1314887764 342420 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :> divmod (-999) 512 < 1314887765 167091 :lambdabot!~lambdabot@li85-105.members.linode.com PRIVMSG #esoteric : Not in scope: `divmod' < 1314887769 286334 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :> divMod (-999) 512 < 1314887770 16088 :lambdabot!~lambdabot@li85-105.members.linode.com PRIVMSG #esoteric : (-2,25) < 1314887773 606337 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :> quotRem (-999) 512 < 1314887774 392776 :lambdabot!~lambdabot@li85-105.members.linode.com PRIVMSG #esoteric : (-1,-487) < 1314887867 87312 :cheater!~ubuntu@ip-80-226-24-3.vodafone-net.de JOIN :#esoteric < 1314888068 117469 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :> 9999 `shiftL` 9 < 1314888069 102358 :lambdabot!~lambdabot@li85-105.members.linode.com PRIVMSG #esoteric : Ambiguous type variable `a' in the constraint: < 1314888069 266940 :lambdabot!~lambdabot@li85-105.members.linode.com PRIVMSG #esoteric : `Data.Bits.Bits a' < 1314888069 267045 :lambdabot!~lambdabot@li85-105.members.linode.com PRIVMSG #esoteric : a... < 1314888071 579000 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :> 9999 `shiftL` 9 :: Int < 1314888072 253370 :lambdabot!~lambdabot@li85-105.members.linode.com PRIVMSG #esoteric : 5119488 < 1314888074 56211 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :> 9999 `shiftR` 9 :: Int < 1314888074 876927 :lambdabot!~lambdabot@li85-105.members.linode.com PRIVMSG #esoteric : 19 < 1314888076 856041 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :right < 1314888181 683922 :Deewiant!~deewiant@cs27125254.pp.htv.fi PRIVMSG #esoteric :> 9999 `shiftL` 128 :: Int < 1314888182 883326 :lambdabot!~lambdabot@li85-105.members.linode.com PRIVMSG #esoteric : 0 < 1314888199 786427 :Deewiant!~deewiant@cs27125254.pp.htv.fi PRIVMSG #esoteric :That's not fast then now is it < 1314888348 650652 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Deewiant: What < 1314888419 621767 :Deewiant!~deewiant@cs27125254.pp.htv.fi PRIVMSG #esoteric :elliott: It's doing a check against the bitSize, I presume < 1314888429 884218 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Ah < 1314888437 483937 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :idx :: Vector -> (Int, Int, Int, Int) < 1314888437 691929 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :idx (x,y) = (mask x', mask y', offs x', offs y') < 1314888437 856481 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric : where x' = fromIntegral x < 1314888437 856574 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric : y' = fromIntegral y < 1314888437 856617 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric : mask :: Int -> Int < 1314888438 319488 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric : mask = (.&. regionMask) < 1314888442 423991 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric : offs :: Int -> Int < 1314888444 567595 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric : offs = (`shiftR` regionPow) < 1314888446 388040 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Patches welcome :-P < 1314888453 649958 :Deewiant!~deewiant@cs27125254.pp.htv.fi PRIVMSG #esoteric :Unless lambdabot's running on an architecture where that's the behaviour, but that seems doubtful < 1314888489 709423 :Deewiant!~deewiant@cs27125254.pp.htv.fi PRIVMSG #esoteric :elliott: x' = fromintegral x :: Int and leave out the mask/offs types? < 1314888513 613148 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Deewiant: I think they might end up more generic... but anyway, I'm talking about speed patches :-P < 1314888524 847333 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Oh god, I hope this doesn't turn out uglier than insertFS and mergeByteString. < 1314888548 146022 :Deewiant!~deewiant@cs27125254.pp.htv.fi PRIVMSG #esoteric :You can't really speed patch that without inline assembly or the like :-P < 1314888559 795003 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric : elliott: It's doing a check against the bitSize, I presume < 1314888561 680534 :Deewiant!~deewiant@cs27125254.pp.htv.fi PRIVMSG #esoteric :Or messing with the type signature < 1314888565 89707 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric ::P < 1314888574 135856 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Deewiant: I'm fine with the type changing but I suspect the tuple will be eliminated < 1314888577 600915 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :At compile-time < 1314888589 650397 :Deewiant!~deewiant@cs27125254.pp.htv.fi PRIVMSG #esoteric :idx :: Int# -> Int# -> (# Int#, Int#, Int#, Int# #) < 1314888594 354035 :Deewiant!~deewiant@cs27125254.pp.htv.fi PRIVMSG #esoteric :OKAY? < 1314888622 968556 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Deewiant: PERFECT. Except no, it has to take a Vector because them be the types I'm working with. Actually I should write specialised Value <-> Int conversion functions, I think unsafeCoerce would work. < 1314888628 336687 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Since it's probably sixty-four bit ints vs. thirty-two < 1314888642 336236 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :In which case unsafeCoerce will work for Value -> Int, and for every sane Int -> Value < 1314888664 773746 :Deewiant!~deewiant@cs27125254.pp.htv.fi PRIVMSG #esoteric :uncheckedIShiftRL# x regionPow < 1314888669 383849 :Deewiant!~deewiant@cs27125254.pp.htv.fi PRIVMSG #esoteric :import GHC.Prim < 1314888675 491639 :Deewiant!~deewiant@cs27125254.pp.htv.fi PRIVMSG #esoteric :And use Int# < 1314888695 624623 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Finally my code is beginning to become readable < 1314888698 901958 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :TIME TO THROW ALL THAT WAY < 1314888742 667245 :Deewiant!~deewiant@cs27125254.pp.htv.fi PRIVMSG #esoteric :Or do you want sign extension there < 1314888758 149478 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Deewiant: I need finding the minimum coordinates to work, at least < 1314888764 19117 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :On the mask results < 1314888764 902776 :Deewiant!~deewiant@cs27125254.pp.htv.fi PRIVMSG #esoteric :If you do, s/L#/A#/ < 1314888765 658164 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :And maximum too < 1314888773 713601 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :The offset should always be positive, too < 1314888776 522803 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :So yeah < 1314888796 997795 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :OK but no seriously I should write insertFS before getting into MICRO-OPTIMISATION TERRITORY < 1314888812 848968 :copumpkin!~pumpkin@unaffiliated/pumpkingod JOIN :#esoteric < 1314888971 627408 :hebru!~androirc@80.27.102.206 JOIN :#esoteric < 1314889092 291091 :hebru!~androirc@80.27.102.206 PRIVMSG #esoteric :hola < 1314889097 255310 :Phantom_Hoover!~phantomho@unaffiliated/phantom-hoover/x-3377486 PRIVMSG #esoteric :Hello. < 1314889122 334758 :Phantom_Hoover!~phantomho@unaffiliated/phantom-hoover/x-3377486 PRIVMSG #esoteric :Welcome to #esoteric, worldwide hub for esoterica. < 1314889138 899673 :edwardk!~edwardk@pdpc/supporter/professional/edwardk QUIT :Quit: Computer has gone to sleep. < 1314889194 560692 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :*esoteric programming languages < 1314889202 486962 :invariable!~thing@freebsd/developer/variable NICK :variable < 1314889261 458378 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :OK, insertFS is easy, it's insertSR that's hard :P < 1314889273 27682 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Maybe because it's the EXACT SAME INSERTFS AS BEFORE. < 1314889281 61941 :hebru!~androirc@80.27.102.206 QUIT :Quit: AndroIRC - Android IRC Client ( http://www.androirc.com ) < 1314889282 727020 :Deewiant!~deewiant@cs27125254.pp.htv.fi PRIVMSG #esoteric :What are these TLAs < 1314889310 606871 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Deewiant: FS = fungespace, SR = space region < 1314889311 918413 :Deewiant!~deewiant@cs27125254.pp.htv.fi PRIVMSG #esoteric :Insert into FileSystem and insert into SRAM? < 1314889317 972778 :Deewiant!~deewiant@cs27125254.pp.htv.fi PRIVMSG #esoteric :Almost < 1314889319 650514 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric ::t insert < 1314889320 324137 :lambdabot!~lambdabot@li85-105.members.linode.com PRIVMSG #esoteric :forall a. (Ord a) => a -> [a] -> [a] < 1314889328 558584 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :insertFS originally chosen for clash-avoidance :P < 1314889358 860512 :Deewiant!~deewiant@cs27125254.pp.htv.fi PRIVMSG #esoteric :import hiding, qualified, etc < 1314889412 832302 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Deewiant: My own modules? Gross < 1314889421 894336 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :I'll call it insert when it's a separate package < 1314889430 345138 :Deewiant!~deewiant@cs27125254.pp.htv.fi PRIVMSG #esoteric :No, Data.List < 1314889491 721106 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :?hoogle insert < 1314889491 887499 :lambdabot!~lambdabot@li85-105.members.linode.com PRIVMSG #esoteric :Data.HashTable insert :: HashTable key val -> key -> val -> IO () < 1314889492 52255 :lambdabot!~lambdabot@li85-105.members.linode.com PRIVMSG #esoteric :Data.IntMap insert :: Key -> a -> IntMap a -> IntMap a < 1314889492 52444 :lambdabot!~lambdabot@li85-105.members.linode.com PRIVMSG #esoteric :Data.IntSet insert :: Int -> IntSet -> IntSet < 1314889495 19240 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Meh < 1314889497 914587 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric ::t Prelude.insert < 1314889498 612483 :lambdabot!~lambdabot@li85-105.members.linode.com PRIVMSG #esoteric :Not in scope: `Prelude.insert' < 1314889499 887125 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Meh < 1314889506 677315 :Deewiant!~deewiant@cs27125254.pp.htv.fi PRIVMSG #esoteric ::t Data.List.insert < 1314889507 791841 :lambdabot!~lambdabot@li85-105.members.linode.com PRIVMSG #esoteric :forall a. (Ord a) => a -> [a] -> [a] < 1314889513 106270 :Deewiant!~deewiant@cs27125254.pp.htv.fi PRIVMSG #esoteric ::t List.insert < 1314889513 278415 :kmc!~keegan@c-98-216-51-47.hsd1.ma.comcast.net PRIVMSG #esoteric :elliott, so your idea of an esoteric language is Haskell with the type checker turned off? < 1314889514 152367 :lambdabot!~lambdabot@li85-105.members.linode.com PRIVMSG #esoteric :forall a. (Ord a) => a -> [a] -> [a] < 1314889518 601881 :augur!~augur@129.2.129.32 JOIN :#esoteric < 1314889536 908789 :copumpkin!~pumpkin@unaffiliated/pumpkingod PRIVMSG #esoteric :haskell with no typechecker doesn't work < 1314889545 613500 :copumpkin!~pumpkin@unaffiliated/pumpkingod PRIVMSG #esoteric :well, you lose typeclasses < 1314889567 51538 :kmc!~keegan@c-98-216-51-47.hsd1.ma.comcast.net PRIVMSG #esoteric :but i hate type classes so it's ok < 1314889571 955386 :copumpkin!~pumpkin@unaffiliated/pumpkingod PRIVMSG #esoteric :oh ok < 1314889576 390209 :kmc!~keegan@c-98-216-51-47.hsd1.ma.comcast.net PRIVMSG #esoteric ::D < 1314889664 827854 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :kmc: That's my idea of a fast language < 1314889670 426536 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :SOOOO FAAAAST < 1314889795 799384 :copumpkin!~pumpkin@unaffiliated/pumpkingod PRIVMSG #esoteric :elliott: fast to run or fast to compile? < 1314889798 27028 :kmc!~keegan@c-98-216-51-47.hsd1.ma.comcast.net PRIVMSG #esoteric :TURBO HASKELL < 1314889800 860131 :copumpkin!~pumpkin@unaffiliated/pumpkingod PRIVMSG #esoteric :lol < 1314889808 710348 :copumpkin!~pumpkin@unaffiliated/pumpkingod PRIVMSG #esoteric :ed's thinking resurrecting that < 1314889832 489170 :copumpkin!~pumpkin@unaffiliated/pumpkingod PRIVMSG #esoteric :thinking of < 1314889873 752323 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :copumpkin: Run :P < 1314889879 726604 :copumpkin!~pumpkin@unaffiliated/pumpkingod PRIVMSG #esoteric :why? < 1314889884 326780 :copumpkin!~pumpkin@unaffiliated/pumpkingod PRIVMSG #esoteric :it sounds kind of fun < 1314889893 147052 :copumpkin!~pumpkin@unaffiliated/pumpkingod PRIVMSG #esoteric :also, I hope he writes a haskell parser in trifecta < 1314889906 62642 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric : elliott: fast to run or fast to compile? < 1314889908 20287 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :It was in reply to that < 1314889978 591650 :copumpkin!~pumpkin@unaffiliated/pumpkingod PRIVMSG #esoteric :oh < 1314889991 409285 :MSleep!~fyrc@or-67-238-31-252.dhcp.embarqhsd.net NICK :MDude < 1314889991 923095 :copumpkin!~pumpkin@unaffiliated/pumpkingod PRIVMSG #esoteric :why would turning off types make the code faster to run? < 1314890017 776484 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :kmc was presumably referring to my use of unsafeCoerce for optimisation < 1314890027 306188 :copumpkin!~pumpkin@unaffiliated/pumpkingod PRIVMSG #esoteric :oh, like agda's? < 1314890058 34780 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Yes, except instead of Agda, it's a human doing it < 1314890069 473722 :copumpkin!~pumpkin@unaffiliated/pumpkingod PRIVMSG #esoteric :unsafeCoerce (+) (unsafeCoerce 3) (unsafeCoerce (unsafeCoerce (+) (unsafeCoerce 1) (unsafeCoerce 2))) < 1314890078 589507 :copumpkin!~pumpkin@unaffiliated/pumpkingod PRIVMSG #esoteric :except you need no typeclasses on those operations < 1314890119 228527 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Wow, everything is actually more or less compiling < 1314890140 142672 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Except for my ~optomized~ mergeByteString which makes assumptions that are now false, heh < 1314890571 922569 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Deewiant: I just realised the way I'm doing it now can't possibly do anything but hurt speed >_< < 1314890580 302664 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :I guess it'll reduce memory consumptiont hough < 1314890588 660331 :Deewiant!~deewiant@cs27125254.pp.htv.fi PRIVMSG #esoteric :Doing what, hurt compared to what < 1314890614 788579 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Hurt compared to my fungespace; and just replacing the underlying structure wihout adding any kind of caching of the current array or anything < 1314890628 465371 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Because it's still doing lookups all the time, they just happen to go to an array < 1314890640 196026 :Deewiant!~deewiant@cs27125254.pp.htv.fi PRIVMSG #esoteric :Yeah you need caching < 1314890659 983132 :Deewiant!~deewiant@cs27125254.pp.htv.fi PRIVMSG #esoteric :It might help a bit, the processor does caching :-) < 1314890672 775269 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :I guess I'll see if this works, and if it does, then leave the fungespace for now until I write something ~amazing~; I can optimise other things until then < 1314890675 743352 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Like the stack :P < 1314890683 975996 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Also more fingerprints?? < 1314891517 500595 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Hmm < 1314891529 198466 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :I wonder how much worse (Map (Int,Int) a) is at lookup than (IntMap (IntMap a)) < 1314891583 199765 :kmc!~keegan@c-98-216-51-47.hsd1.ma.comcast.net PRIVMSG #esoteric :could be better :O < 1314891618 486686 :kmc!~keegan@c-98-216-51-47.hsd1.ma.comcast.net PRIVMSG #esoteric :it's pretty easy to construct pathological cases where (Map Int) beats IntMap < 1314891637 261608 :kmc!~keegan@c-98-216-51-47.hsd1.ma.comcast.net PRIVMSG #esoteric :compare also to http://hackage.haskell.org/package/unordered-containers < 1314891790 567941 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :I should probably try unordered-containers, yeah < 1314891891 881420 :kmc!~keegan@c-98-216-51-47.hsd1.ma.comcast.net PRIVMSG #esoteric :(Map (Int,Int)) might beat (IntMap . IntMap) due to fewer cache misses, or something < 1314891978 104701 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :science < 1314892067 459756 :kmc!~keegan@c-98-216-51-47.hsd1.ma.comcast.net PRIVMSG #esoteric :indeed < 1314892509 511473 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Deewiant: You'll be pleased to know my new fungespace is completely broken < 1314892723 401380 :Deewiant!~deewiant@cs27125254.pp.htv.fi PRIVMSG #esoteric :How'd that happen < 1314892855 47883 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Deewiant: I diagnose it with the rare condition "not working" < 1314892858 975446 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Time to optimise my stack instead < 1314892872 860021 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Linked lists aren't bad but I guess localit < 1314892873 363888 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :y < 1314892875 169706 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :has an effect < 1314893158 659517 :Phantom_Hoover!~phantomho@unaffiliated/phantom-hoover/x-3377486 PRIVMSG #esoteric :OK < 1314893169 223130 :Phantom_Hoover!~phantomho@unaffiliated/phantom-hoover/x-3377486 PRIVMSG #esoteric :I have here an Amnesty International catalogue. < 1314893172 604539 :Phantom_Hoover!~phantomho@unaffiliated/phantom-hoover/x-3377486 PRIVMSG #esoteric :It is the funniest thing. < 1314893175 94935 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Purchase some amnesty < 1314893212 343331 :Phantom_Hoover!~phantomho@unaffiliated/phantom-hoover/x-3377486 PRIVMSG #esoteric :If you compressed every single stereotype of a middle-class, sandal-wearing Guardian reader into a catalogue, this would be it. < 1314893226 637588 :Phantom_Hoover!~phantomho@unaffiliated/phantom-hoover/x-3377486 PRIVMSG #esoteric :Some highlights: < 1314893241 911743 :Phantom_Hoover!~phantomho@unaffiliated/phantom-hoover/x-3377486 PRIVMSG #esoteric :Kitchen utensils made from recycled stainless steel and bamboo. < 1314893256 487468 :Phantom_Hoover!~phantomho@unaffiliated/phantom-hoover/x-3377486 PRIVMSG #esoteric :Biodegradable sponges. < 1314893265 595442 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :oh my god < 1314893271 349343 :Phantom_Hoover!~phantomho@unaffiliated/phantom-hoover/x-3377486 PRIVMSG #esoteric :Himalayan soap nuts. < 1314893295 682903 :Phantom_Hoover!~phantomho@unaffiliated/phantom-hoover/x-3377486 PRIVMSG #esoteric :Natural soap, wrapped in leaves from wild trees. < 1314893316 433739 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :wow < 1314893323 853029 :Phantom_Hoover!~phantomho@unaffiliated/phantom-hoover/x-3377486 PRIVMSG #esoteric :Christmas tree decorations hand-carved by a community group in Bethlehem. < 1314893339 319935 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :I want to buy it from you < 1314893345 771055 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :and submit it to galleries as a work of art < 1314893361 258111 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Oh my god what Bethlehem means "house of meat". < 1314893366 381488 :Phantom_Hoover!~phantomho@unaffiliated/phantom-hoover/x-3377486 PRIVMSG #esoteric :A cake stand, made in India. < 1314893378 684891 :Phantom_Hoover!~phantomho@unaffiliated/phantom-hoover/x-3377486 PRIVMSG #esoteric :OK, this is the best one. < 1314893389 16437 :Phantom_Hoover!~phantomho@unaffiliated/phantom-hoover/x-3377486 PRIVMSG #esoteric :A metal trivet, *made from recycled bike chains.* < 1314893397 607260 :itidus20!~itidus20@CPE-60-224-1-106.srql1.win.bigpond.net.au PRIVMSG #esoteric :my dog had been barking for 30 mins at 2am at some cat while my brother tries to sleep for work < 1314893398 590130 :elliott!~elliott@unaffiliated/elliott PART #esoteric :"Leaving" < 1314893403 201919 :elliott!~elliott@unaffiliated/elliott JOIN :#esoteric < 1314893414 425266 :Phantom_Hoover!~phantomho@unaffiliated/phantom-hoover/x-3377486 PRIVMSG #esoteric :I know, it's amazing. < 1314893416 873688 :itidus20!~itidus20@CPE-60-224-1-106.srql1.win.bigpond.net.au PRIVMSG #esoteric :i gave the dog the greasiest glare < 1314893422 679378 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Phantom_Hoover: i just... < 1314893424 693551 :itidus20!~itidus20@CPE-60-224-1-106.srql1.win.bigpond.net.au PRIVMSG #esoteric :it just might be enough < 1314893430 675344 :Phantom_Hoover!~phantomho@unaffiliated/phantom-hoover/x-3377486 PRIVMSG #esoteric :Oh my god, these people are basically elves. < 1314893462 259018 :itidus20!~itidus20@CPE-60-224-1-106.srql1.win.bigpond.net.au PRIVMSG #esoteric :whats a trivet? < 1314893469 338232 :Phantom_Hoover!~phantomho@unaffiliated/phantom-hoover/x-3377486 PRIVMSG #esoteric :itidus20, a thing you rest hot pots on. < 1314893484 708786 :itidus20!~itidus20@CPE-60-224-1-106.srql1.win.bigpond.net.au PRIVMSG #esoteric :cool < 1314893485 957945 :Phantom_Hoover!~phantomho@unaffiliated/phantom-hoover/x-3377486 PRIVMSG #esoteric :They're one of those things you buy once and never think of again. < 1314893505 621517 :cheater!~ubuntu@ip-80-226-24-3.vodafone-net.de PRIVMSG #esoteric :how do you make your stare greasy? < 1314893518 475829 :itidus20!~itidus20@CPE-60-224-1-106.srql1.win.bigpond.net.au PRIVMSG #esoteric :by being angry < 1314893531 402431 :cheater!~ubuntu@ip-80-226-24-3.vodafone-net.de PRIVMSG #esoteric :where does the word greasy come from? < 1314893607 488497 :itidus20!~itidus20@CPE-60-224-1-106.srql1.win.bigpond.net.au PRIVMSG #esoteric :i dunno... might be a local slang < 1314893613 908777 :itidus20!~itidus20@CPE-60-224-1-106.srql1.win.bigpond.net.au PRIVMSG #esoteric :no it didnt work dog has started again < 1314893635 543319 :cheater!~ubuntu@ip-80-226-24-3.vodafone-net.de PRIVMSG #esoteric :try vasaline instead < 1314893654 199271 :itidus20!~itidus20@CPE-60-224-1-106.srql1.win.bigpond.net.au PRIVMSG #esoteric :ahh here we go < 1314893660 450933 :itidus20!~itidus20@CPE-60-224-1-106.srql1.win.bigpond.net.au PRIVMSG #esoteric :entry 9: http://www.urbandictionary.com/define.php?term=greasy&page=2 < 1314893672 113300 :itidus20!~itidus20@CPE-60-224-1-106.srql1.win.bigpond.net.au PRIVMSG #esoteric :aussie slang.. woooo < 1314893740 418314 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :hmm, why is this SConstruct file marked executable despite being a text file that isn't a shellscript with no shebang? < 1314893744 203605 :itidus20!~itidus20@CPE-60-224-1-106.srql1.win.bigpond.net.au PRIVMSG #esoteric :i have heard it in use so it is indeed aussie slang < 1314893801 7596 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :ais523: Windows? < 1314893817 694955 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :elliott: possibly, but most of the files in the directory have the x bit set correctly < 1314893828 771518 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :(it's from an svn repo, in case that's relevant) < 1314893838 689806 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :hmm, I only need about a hundred times speed-up to be competitive with cfunge < 1314893949 199811 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :hmm, my acos, asin and atan are OK, but cos, sin and tan are broken < 1314893964 530149 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :oh hmm < 1314893976 247694 :itidus20!~itidus20@CPE-60-224-1-106.srql1.win.bigpond.net.au PRIVMSG #esoteric :what are you implementing? < 1314893980 146972 :Deewiant!~deewiant@cs27125254.pp.htv.fi PRIVMSG #esoteric :Did you implement them manually or something? :-P < 1314893982 185222 :augur!~augur@129.2.129.32 QUIT :Read error: Connection reset by peer < 1314893987 780111 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Deewiant: , (B, const $ fixp (degree acos)) < 1314893987 944889 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric : , (C, const $ fixp (degree cos)) < 1314893997 829896 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Do the non-a variants not take a fixed-point or something? :-P < 1314894000 358347 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :itidus20: funge < 1314894008 765650 :itidus20!~itidus20@CPE-60-224-1-106.srql1.win.bigpond.net.au PRIVMSG #esoteric :ahh < 1314894015 679027 :augur!~augur@129.2.129.32 JOIN :#esoteric < 1314894028 533844 :augur!~augur@129.2.129.32 QUIT :Remote host closed the connection < 1314894047 724613 :Deewiant!~deewiant@cs27125254.pp.htv.fi PRIVMSG #esoteric :elliott: Cosine takes an angle and returns a ratio; the inverse takes a ratio and returns an angle < 1314894054 552416 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Oh, duh < 1314894069 75408 :edwardk!~edwardk@17.45.135.75 JOIN :#esoteric < 1314894069 283202 :edwardk!~edwardk@17.45.135.75 QUIT :Changing host < 1314894069 283395 :edwardk!~edwardk@pdpc/supporter/professional/edwardk JOIN :#esoteric < 1314894073 686459 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :I should just define degree without the function-wrapping part :-P < 1314894210 508367 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Deewiant: Well, that didn't help :) < 1314894228 302391 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Deewiant: But yeah, OK, wrt take an angle: An integral angle? < 1314894236 34108 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :FIXP should really be FIXP→FIXP all the way, sigh < 1314894243 394430 :Deewiant!~deewiant@cs27125254.pp.htv.fi PRIVMSG #esoteric :I don't remember FIXP, that was just maths < 1314894252 573471 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Bah, I'll check CCBI < 1314894263 539813 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Or RCFu- ahahahahaha < 1314894366 942813 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Deewiant: I like how you handle infinity and nan < 1314894379 458051 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Hmm, I guess NaN may be part of the specs < 1314894383 908511 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :As in, NaN-reflecting < 1314894483 269411 :augur!~augur@129.2.129.32 JOIN :#esoteric < 1314894552 113273 :edwardk!~edwardk@pdpc/supporter/professional/edwardk PART #esoteric :"Leaving..." < 1314894599 793138 :Patashu!~Patashu@c122-106-155-219.carlnfd1.nsw.optusnet.com.au QUIT :Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 . < 1314895851 415982 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Deewiant: I like how your D code is better encapsulated than my Haskell < 1314895899 887346 :Deewiant!~deewiant@cs27125254.pp.htv.fi PRIVMSG #esoteric :I guess Haskell sucks huh < 1314895909 879346 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Deewiant: More like I suck < 1314895918 602883 :Deewiant!~deewiant@cs27125254.pp.htv.fi PRIVMSG #esoteric :Yeah I find that more acceptable as well < 1314895927 554900 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :There's stuff here that accesses the stack directly with list crap :-/ < 1314895935 458965 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :ACTION makes a Stack module < 1314895943 625677 :derrik!~xix@62.65.215.209.cable.starman.ee QUIT :Ping timeout: 264 seconds < 1314895967 879206 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Deewiant: It's hard to avoid exposing constructors when everything is in one Types module though :P < 1314896034 803376 :derrik!~xix@62.65.215.209.cable.starman.ee JOIN :#esoteric < 1314896048 496011 :derrik!~xix@62.65.215.209.cable.starman.ee PART :#esoteric < 1314896073 710841 :Deewiant!~deewiant@cs27125254.pp.htv.fi PRIVMSG #esoteric :elliott: Don't do that :-P < 1314896096 316926 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Deewiant: It's unavoidable; you inevitably get circular dependencies otherwise < 1314896108 399913 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Thus why most major projects do it < 1314896118 468705 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :It sucks, but that's an actual flaw in Haskell :P < 1314896136 676541 :Deewiant!~deewiant@cs27125254.pp.htv.fi PRIVMSG #esoteric :But that's only for the type definitions, no? < 1314896145 380912 :Deewiant!~deewiant@cs27125254.pp.htv.fi PRIVMSG #esoteric :Then just don't export the constructors from that module :-P < 1314896159 394971 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Deewiant: Then how does the stack module implement its actions < 1314896163 537106 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Divination? unsafeCoerce? < 1314896170 607756 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Or are you saying all my functions should be in one module too < 1314896175 250828 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Because that's great < 1314896184 922725 :Deewiant!~deewiant@cs27125254.pp.htv.fi PRIVMSG #esoteric :Meh, just use .hs-boot files < 1314896205 918620 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Deewiant: I did; they couldn't solve the circular dependency I had before < 1314896212 803873 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Because it was a circular dependency on _types_ < 1314896220 307397 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Which is unavoidable with my monad structure < 1314896230 407088 :Deewiant!~deewiant@cs27125254.pp.htv.fi PRIVMSG #esoteric :Howso < 1314896230 571672 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :I still have one required hs-boot file < 1314896234 485750 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :I guess I could separate some things out thoughd < 1314896235 822723 :olsner!~salparot@c83-252-161-133.bredband.comhem.se PRIVMSG #esoteric :it'd be neat if haskell had divination < 1314896255 613777 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Deewiant: Fingerprint record includes Shiro () actions; Shiro is StateT FungeState, FungeState includes fingerprint information < 1314896258 68315 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Same with IP < 1314896268 117880 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :→ They all need to be in one big ol' module < 1314896288 970375 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Fungespaces, stacks, and refstores can be separated out, but the rest are all entwined pretty fundamentally < 1314896331 447271 :Deewiant!~deewiant@cs27125254.pp.htv.fi PRIVMSG #esoteric :Can't you granularize the dependencies a bit < 1314896349 591356 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Deewiant: The dependencies are fine; Haskell just has a poor module system < 1314896356 174913 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :But you're welcome to try < 1314896383 908635 :Deewiant!~deewiant@cs27125254.pp.htv.fi PRIVMSG #esoteric :So that you e.g. have (MonadState IP m, MonadState FingerprintStuff m) => m () < 1314896393 900924 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Haha < 1314896415 169523 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Deewiant: Yes, I could technically rewrite my whole monad as a huge context, at great run-time cost and that of code clarity too < 1314896421 921875 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :I don't find that very desirable :P < 1314896443 17376 :Deewiant!~deewiant@cs27125254.pp.htv.fi PRIVMSG #esoteric :Hmm, no class aliases yet I guess < 1314896452 498285 :Deewiant!~deewiant@cs27125254.pp.htv.fi PRIVMSG #esoteric :Shame < 1314896514 443530 :Deewiant!~deewiant@cs27125254.pp.htv.fi PRIVMSG #esoteric :Then you could do that and just alias it < 1314896526 729440 :Deewiant!~deewiant@cs27125254.pp.htv.fi PRIVMSG #esoteric :No comment on the runtime cost :-P < 1314896553 538206 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Deewiant: wrt the runtime cost, it was taking two seconds to run Mycology with typeclasses < 1314896554 186548 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :vs one < 1314896560 432649 :Deewiant!~deewiant@cs27125254.pp.htv.fi PRIVMSG #esoteric :heh < 1314896563 908347 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Specialise pragmas helped naught < 1314896569 832846 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :That's not the kind of multiplication factor I'm ok with < 1314896577 574229 :Deewiant!~deewiant@cs27125254.pp.htv.fi PRIVMSG #esoteric :Shame < 1314896603 755588 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :It is < 1314896617 350294 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Hmm, I should probably make a generic stack type rather than a special stackstack type, but that would be slower :) < 1314896639 253374 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Oh wait, I could use type families < 1314896643 885686 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :That's probably overkill, though :P < 1314896658 551902 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Especially since the stack stack is different to stacks < 1314896661 777338 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :0-padded and all < 1314896757 316410 :Deewiant!~deewiant@cs27125254.pp.htv.fi PRIVMSG #esoteric :I special case that in the functions themselves < 1314896824 120192 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Deewiant: You mean functions using stacks? < 1314896828 237370 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Or the actual stack code itself < 1314896837 582298 :Deewiant!~deewiant@cs27125254.pp.htv.fi PRIVMSG #esoteric :In the stack code, of course < 1314896970 817198 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Deewiant: That's... < 1314896974 305709 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Deewiant: That's a crime < 1314896977 933697 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Against everything < 1314896986 833118 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Deewiant: Wait, I could just pad out the stack stacks with error "nope" :-D < 1314896990 493746 :Deewiant!~deewiant@cs27125254.pp.htv.fi PRIVMSG #esoteric :Why's that < 1314897004 953654 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :(Except that doesn't really help for the "handle element not being there" case) < 1314897018 369415 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Deewiant: Because parametric containers should have identical behaviour regardless of their element type? < 1314897020 934749 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Generic programming, man < 1314897033 887920 :Deewiant!~deewiant@cs27125254.pp.htv.fi PRIVMSG #esoteric :This isn't a library so suck it < 1314897159 619799 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Deewiant: At least pretypedef the two used cases and don't expose the parametric type! < 1314897163 254210 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :It's not RIGHT. < 1314897170 329542 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :You shouldn't even be able to look at the type you're given. < 1314897178 565166 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Or do you distinguish itbased on sizeof :D < 1314897218 506842 :Deewiant!~deewiant@cs27125254.pp.htv.fi PRIVMSG #esoteric :Well, with MODE it's hidden but not otherwise < 1314897221 585626 :Deewiant!~deewiant@cs27125254.pp.htv.fi PRIVMSG #esoteric : static if (befunge93) < 1314897221 750421 :Deewiant!~deewiant@cs27125254.pp.htv.fi PRIVMSG #esoteric : Stack!(.cell) stack; < 1314897221 750519 :Deewiant!~deewiant@cs27125254.pp.htv.fi PRIVMSG #esoteric : else version (MODE) < 1314897221 750562 :Deewiant!~deewiant@cs27125254.pp.htv.fi PRIVMSG #esoteric : CellContainer* stack; < 1314897221 750637 :Deewiant!~deewiant@cs27125254.pp.htv.fi PRIVMSG #esoteric : else < 1314897224 104721 :Deewiant!~deewiant@cs27125254.pp.htv.fi PRIVMSG #esoteric : Stack!(.cell)* stack; < 1314897344 416719 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Deewiant: What's MODE got to do with it < 1314897349 353791 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Oh, right < 1314897351 659539 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Different things < 1314897352 348713 :Deewiant!~deewiant@cs27125254.pp.htv.fi PRIVMSG #esoteric :Deque < 1314897354 957226 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :ies < 1314897355 294245 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :right < 1314897697 910722 :azaq23!~derivecto@unaffiliated/azaq23 QUIT :Quit: Leaving. < 1314897877 791500 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Woot, now I have a verbose stack API; I'll remember how this is a gain soon I guess < 1314897929 707919 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Heh, circular dependency already just by putting things outside of .Types, take that Deewiant < 1314897942 810368 :Deewiant!~deewiant@cs27125254.pp.htv.fi PRIVMSG #esoteric :Ouch < 1314897944 385381 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :(Types needs to see Stack because obviously all the state stuff includes Stacks, but Stacks are made out of Values, defined in Types) < 1314897959 243792 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :(OK, so it's caused by a monolithic type module there, but there are more conflicts without :P) < 1314897968 341140 :Deewiant!~deewiant@cs27125254.pp.htv.fi PRIVMSG #esoteric :You need CircularTypes and NormalTypes :-P < 1314897979 667983 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :I don't have any NormalTypes :P < 1314897983 182287 :Deewiant!~deewiant@cs27125254.pp.htv.fi PRIVMSG #esoteric :Value? < 1314898002 267464 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Well, OK < 1314898006 139383 :Deewiant!~deewiant@cs27125254.pp.htv.fi PRIVMSG #esoteric :I assume it's something like type Value = Intt < 1314898006 515373 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :But that's just an alias :P < 1314898010 380680 :Deewiant!~deewiant@cs27125254.pp.htv.fi PRIVMSG #esoteric :Yeah so? < 1314898018 681782 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :You want me to make a module for one type? < 1314898020 576032 :Deewiant!~deewiant@cs27125254.pp.htv.fi PRIVMSG #esoteric :See ccbi.cell < 1314898043 445548 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Pah :-P < 1314898047 233768 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :I just need to rethink this < 1314898080 995932 :Deewiant!~deewiant@cs27125254.pp.htv.fi PRIVMSG #esoteric :You could define Value in Stack? < 1314898099 275241 :Deewiant!~deewiant@cs27125254.pp.htv.fi PRIVMSG #esoteric :Oh, but you want space to be separate, so probably nott < 1314898101 348312 :Deewiant!~deewiant@cs27125254.pp.htv.fi PRIVMSG #esoteric :tttttttttttt < 1314898112 421612 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Deewiant: Stuttering? < 1314898116 938146 :Deewiant!~deewiant@cs27125254.pp.htv.fi PRIVMSG #esoteric :Yep < 1314898141 296774 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Deewiant: Surely rubber dome is more tolerable than ttttttttt < 1314898142 172273 :Deewiant!~deewiant@cs27125254.pp.htv.fi PRIVMSG #esoteric :I'm back to that once-majorly-stuttering keyboard which for some reason stutters a lot less after sitting in a cupboard for months < 1314898183 488685 :Deewiant!~deewiant@cs27125254.pp.htv.fi PRIVMSG #esoteric :I'll use this until it becomes intolerable, for the moment it's not bad < 1314898212 102606 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Haven't you snarked at me for not yet fixing my keyboard < 1314898224 351069 :Deewiant!~deewiant@cs27125254.pp.htv.fi PRIVMSG #esoteric :This isn't really "fixable" :-P < 1314898269 314651 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Warranty? < 1314898271 809519 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :No? :P < 1314898288 510230 :Deewiant!~deewiant@cs27125254.pp.htv.fi PRIVMSG #esoteric :Cost of sending keyboard to Japan and back: greater than price of keyboard < 1314898293 56758 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric : static assert (dim >= 1 && dim <= 3); < 1314898299 319295 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :I don't like your ideas < 1314898304 917619 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :And their nasty limitations < 1314898307 209882 :Deewiant!~deewiant@cs27125254.pp.htv.fi PRIVMSG #esoteric :Hey at least I enforce my assumptions < 1314898319 797782 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Are you saying I don't? < 1314898325 782257 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :I enforce my two-dimensionality by having nothing else :D < 1314898334 39562 :Deewiant!~deewiant@cs27125254.pp.htv.fi PRIVMSG #esoteric :Could do it only in all the places it's necessary but I got lazy < 1314898341 37206 :Deewiant!~deewiant@cs27125254.pp.htv.fi PRIVMSG #esoteric :2011-09-01 18:16:34 ( elliott) Except for my ~optomized~ mergeByteString which makes assumptions that are now false, heh < 1314898355 22917 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Deewiant: The bad assumptions lead to failure to compile < 1314898357 806342 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Sounds like enfrocement to me < 1314898362 940664 :Deewiant!~deewiant@cs27125254.pp.htv.fi PRIVMSG #esoteric :Ah, okay < 1314898975 456841 :augur!~augur@129.2.129.32 QUIT :Remote host closed the connection < 1314899573 280215 :augur!~augur@129.2.129.32 JOIN :#esoteric < 1314899807 976399 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Has anyone here used OpenCL? < 1314899996 908920 :MDude!~fyrc@or-67-238-31-252.dhcp.embarqhsd.net PRIVMSG #esoteric :I haven't. < 1314900003 963161 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :thanks < 1314900015 333920 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :nor have I, even though logically I might have been expected to have done < 1314900025 545172 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :ais523: CUDA, then? < 1314900035 725333 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :although possibly I'll end up using it before long if nvidia continue screwing up the CUDA SDK < 1314900040 817704 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :I have used CUDA < 1314900071 411253 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :I can't seem to find any documentation on using OpenCL outside of Python, which is ridiculous < 1314900086 690028 :Gregor!foobar@codu.org PRIVMSG #esoteric :lol < 1314900102 144508 :Gregor!foobar@codu.org PRIVMSG #esoteric :High-performance SIMD parallel computing: I'm thinkin' Python! < 1314900119 48416 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Gregor: Well, you compile the regular OpenCL program and just invoke it from Python :P < 1314900133 396365 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Totally ridiculous that I can't find documentation on how to do that from C, thoug. < 1314900134 229173 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :though. < 1314900139 923805 :Gregor!foobar@codu.org PRIVMSG #esoteric :http://esolangs.org/wiki/Main_Page <--- uhhh, wowwtf < 1314900149 409138 :MDude!~fyrc@or-67-238-31-252.dhcp.embarqhsd.net PRIVMSG #esoteric :Yeah, I was going to bring that up. < 1314900150 868597 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Gregor: ooh, what is it? < 1314900161 745397 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :nobody revert until I see it :P < 1314900165 351803 :MDude!~fyrc@or-67-238-31-252.dhcp.embarqhsd.net PRIVMSG #esoteric :Is the page just down now? < 1314900171 958262 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Gregor: What was it? < 1314900175 911140 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :it won't load here < 1314900181 977586 :MDude!~fyrc@or-67-238-31-252.dhcp.embarqhsd.net PRIVMSG #esoteric :I got a fancy DNS message earlier. < 1314900188 204548 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :ais523: also, am I right in thinking that programs which offer to perform a computationally intensive task on both the GPU and CPU are mostly wasting their time as far as the latter goes? < 1314900192 753773 :Gregor!foobar@codu.org PRIVMSG #esoteric :elliott: It's hyper-overloaded because it's EasyDNS saying "lol, EasyDNS went kaput, u sux" < 1314900204 913865 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Gregor: Ugh, that happened to another site I visit < 1314900205 314213 :Gregor!foobar@codu.org PRIVMSG #esoteric :(Only slightly paraphrasing) < 1314900207 68287 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :http://esoteric.voxelperfect.net/wiki/Main_Page works < 1314900212 151990 :Gregor!foobar@codu.org PRIVMSG #esoteric :elliott: Naturalismo. < 1314900214 537727 :Gregor!foobar@codu.org PRIVMSG #esoteric :But lol < 1314900215 327962 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :elliott: depends on how well it parallelizes, they may well be wasting their time on the /GPU/ < 1314900224 214029 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :ais523: it's embarrassingly parallel < 1314900225 52226 :MDude!~fyrc@or-67-238-31-252.dhcp.embarqhsd.net PRIVMSG #esoteric :To Whom This May Concern: < 1314900225 217444 :MDude!~fyrc@or-67-238-31-252.dhcp.embarqhsd.net PRIVMSG #esoteric :You are seeing this message due to the site you are trying to view having its DNS hosted by EveryDNS. < 1314900235 362605 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :elliott: in that case, running it on the CPU is mostly useless too < 1314900240 952405 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :ais523: right < 1314900250 348334 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :umm, reorder words so that sentence makes sense < 1314900264 94934 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :ais523: (I was wondering whether I should bother learning how to do extremely-parallel programming in C as well, or whether OpenCL would do just fine) < 1314900283 972877 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :the problem with OpenCL is that nobody really supports it yet < 1314900310 83442 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :at least with CUDA, one vendor supported it < 1314900313 571706 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :but they seem to be going backwards < 1314900333 423646 :Gregor!foobar@codu.org PRIVMSG #esoteric :I thought OpenCL was supposed to compile to CUDA and GLSL? < 1314900339 275355 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :(they removed the simulator on the basis that the GPU could now do limited debugging itself, which is not good if your program has a memory leak and a GPU memory leak requires a hard reboot) < 1314900340 411552 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Well, I've ran an OpenCL program on my card and it worked fine. < 1314900362 146902 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :OpenCL support is getting better < 1314900377 813079 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :but even then, CUDA doesn't feel like the sort of lang you compile to, but the sort of lang you write in < 1314900386 185518 :Gregor!foobar@codu.org PRIVMSG #esoteric :So? < 1314900405 103670 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Hmm, traditional crypt() is GPU-friendly, right? < 1314900436 564529 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :I don't actually know < 1314900444 469304 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :PAH < 1314900482 787768 :Gregor!foobar@codu.org PRIVMSG #esoteric :http://developer.nvidia.com/opencl < 1314900498 921066 :Gregor!foobar@codu.org PRIVMSG #esoteric :Seems like OpenCL probably supports just about as much as CUDA ... which is to say, NVidia stuff :P < 1314900602 539443 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :Microsoft are also working on their own DirectX-based thing < 1314900608 968673 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :I know because they keep giving seminars about it < 1314900851 404001 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :oh, yay, crypt actually has a fixed-length input < 1314900857 846236 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :and you can just zero-pad, because that's how c strings work < 1314900889 316534 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :elliott: Windows used to allow up to 14-character passwords < 1314900900 745725 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :and it split them into two 7-character passwords and hashed them separately < 1314900905 951005 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :haha < 1314900920 802411 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :(that's been fixed a while back, but for a while, people were recommended to use passwords at least 15 chars long so that it didn't default to the old algo) < 1314900956 741748 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :god dammit i dont want an opencl/c tutorial as a video < 1314900959 706310 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :fuck you fuck you fuck youuuuuuuu < 1314901066 337657 :Gregor!foobar@codu.org PRIVMSG #esoteric :elliott: Isn't it annoying how when you search for $X tutorial the first result is always some bullshit on YouTube? :P < 1314901083 544406 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :what happened to text :-( < 1314901092 472940 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :Gregor: sometimes the YouTube tutorials are actually useful, although I normally prefer text < 1314901300 659861 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :you know what? I'm starting to think that in many situations where pointers or indexes are used, referencing by coordinates into a globalish structure is saner < 1314901320 579710 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :define globalish < 1314901374 394740 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :some moderately-persistent, mutable view of whatever it is that the application processes < 1314901381 809339 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :one example I'm thinking of is the world map in computer games < 1314901396 798054 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :so not global in the global sense then :) < 1314901444 208544 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :globalish in that you're probably only going to have one of them and you're going to refer to it all over your application < 1314901449 152062 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :http://stackoverflow.com/questions/6582236/branch-predication-on-gpu < 1314901457 717345 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :gpus sure are weird! < 1314901468 189118 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :oh dear, I can tell that's going to be a mess just from the question < 1314901474 117705 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :howso? < 1314901495 728650 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :people confusing it with branch prediction, for one thing < 1314901502 215347 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :heh < 1314901505 704938 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :but it really depends on what the individual warps are doing < 1314901509 680053 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :i confused it at first, but only because i didn't notice the different spelling < 1314901522 391535 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :it basically becomes an ABSTAIN if you get both sides within a warp < 1314901531 938815 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :and you only ever do that if you have more threads in a warp than you actually need < 1314901563 135266 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :e.g. you're doing an associative fold, the last few steps are probably going to not be very parallelizable so you just narrow the number of threads acting in a warp < 1314901574 928997 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :"For example NVidia GPUs use scalar processors (with scalar instructions), no vectorization is necessary. On the contrary, ATI features 5d (or 4d) VLIW processors and for these is the vectorization crucial." i;m so confused < 1314901587 574345 :Gregor!foobar@codu.org PRIVMSG #esoteric :......................... wuh < 1314901611 258267 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :on top of it, graphics cards are sort-of inherently vectorized < 1314901638 434951 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :hmm, it seems like cuda may be more reliable right now < 1314901694 126096 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :in practice, you can't write portable GPU code with modern toolsets either < 1314901703 187247 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :ais523: out of interest, how are nvidia mucking up cuda sdk? < 1314901722 579971 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :particularly bad in CUDA because there are function calls to determine values about the GPU but they have to be compile-time constants for their only sensible uses (other than displaying to the user) < 1314901722 824132 :Gregor!foobar@codu.org PRIVMSG #esoteric :OH MY GOSH, YOU GUYS < 1314901727 696714 :Gregor!foobar@codu.org PRIVMSG #esoteric :eComStation had a release in May :P < 1314901730 197412 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :elliott: what they did to the debugger, mostly < 1314901732 190918 :Gregor!foobar@codu.org PRIVMSG #esoteric :Apparently it's ... maintainedish? < 1314901749 110022 :Gregor!foobar@codu.org PRIVMSG #esoteric :(I was reminded by the word "warp" :P ) < 1314901773 520369 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :as in, replaced it with one that sucked, didn't work, and was unsafe in the dereferencing-NULL-in-C sense (except it has quite a chance of hardlocking your GPU, forcing a reboot if you want your monitor to display anything and the GPU is also connected to the monitor, which is likely) < 1314901797 340570 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :ais523: well, I don't particularly care about debugging, I should just get it right the fisrt time :P < 1314901820 204732 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :so easy to leak memory by mistake, or dereference the wrong sort of pointer, etc < 1314901828 755602 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :a GPU memory leak can make the system unusable for no obvious reason < 1314903326 387394 :MSleep!~fyrc@or-67-238-31-252.dhcp.embarqhsd.net JOIN :#esoteric < 1314903381 929349 :BeholdMyGlory!~behold@unaffiliated/beholdmyglory QUIT :Ping timeout: 260 seconds < 1314903389 379141 :Behold!~behold@unaffiliated/beholdmyglory JOIN :#esoteric < 1314903527 392379 :MDude!~fyrc@or-67-238-31-252.dhcp.embarqhsd.net QUIT :Ping timeout: 240 seconds < 1314903865 722144 :olsner!~salparot@c83-252-161-133.bredband.comhem.se PRIVMSG #esoteric :nice black-and-white advertisement picture on http://www.ecomstation.com/ - nothing says "new" like a black-and-white picture with ancient-style phones < 1314903891 287984 :olsner!~salparot@c83-252-161-133.bredband.comhem.se PRIVMSG #esoteric :also version *2* ... at least they could've inherited the OS/2 numbers and released number 6 < 1314904029 762323 :BeholdMyGlory!~behold@unaffiliated/beholdmyglory JOIN :#esoteric < 1314904035 533323 :Behold!~behold@unaffiliated/beholdmyglory QUIT :Ping timeout: 252 seconds < 1314904242 580201 :MSleep!~fyrc@or-67-238-31-252.dhcp.embarqhsd.net PRIVMSG #esoteric :Black and white would looks pretty nice if they didn't have the rest of the website if shaded of blue. < 1314904258 91536 :olsner!~salparot@c83-252-161-133.bredband.comhem.se PRIVMSG #esoteric :nice new feature: "* Added BOOTDLY driver, which causes a 20 second boot delay [...]" < 1314904271 330668 :MSleep!~fyrc@or-67-238-31-252.dhcp.embarqhsd.net NICK :MDude < 1314905709 734600 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :hmm, gpus are weir < 1314905710 227568 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :d < 1314905756 665910 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :nah, /CPUs/ are weird < 1314905782 784438 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :oh, dammit, the relevant power of two is _slightly_ too large to do what i'd ideally want < 1314905785 264825 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :but this should not surprise me < 1314905804 469943 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :ais523: umm, how many threads can a GPU do at once, roughly? < 1314905817 803817 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :depends on your definition of "at once" < 1314905826 701235 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :in terms of "physically flowing through an ALU or equivalent", around 16 < 1314905830 441872 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :each thread basically doing DES and then a comparison on the result < 1314905833 884351 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :although it looks like 32 to the user because of pipelining < 1314905848 469160 :oerjan!oerjan@sprocket.nvg.ntnu.no JOIN :#esoteric < 1314905851 227470 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :however, GPUs can keep tens of thousands (or hundreds of thousands) of threads ready to context-switch in < 1314905853 865017 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :ais523: well, "what should I divide the keyspace by" if the problem is mainly DES :-) < 1314905860 837318 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :and in particular, will context-switch in threads while the other threads are waiting for memory access < 1314905900 82173 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :and no out of GPU memory accesses, I think, apart from sending info to the CPU on an (unlikely) successful comparison -- I have no idea how GPUs work really so this may be bullshit < 1314905933 810941 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :elliott: is a few hundred bytes of per-thread storage enough? < 1314905955 980750 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :GPUs aren't so much designed for truly embarassingly parallel problems, as problems which are almost embarassingly parallel but with a few exceptions < 1314905958 612093 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :like matrix multiplication < 1314905973 947949 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :ais523: a few hundred bytes should be fine, yep < 1314905998 691363 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :I mean, I'm no DES expert, but I doubt one round takes more than a few hundred bytes :) < 1314906022 683221 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :"By taking the lowest 7 bits of each of the first eight characters of < 1314906022 853062 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric : the key, a 56-bit key is obtained. This 56-bit key is used to encrypt < 1314906022 853159 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric : repeatedly a constant string (usually a string consisting of all < 1314906022 853203 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric : zeros). The returned value points to the encrypted password, a series < 1314906022 853245 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric : of 13 printable ASCII characters (the first two characters represent < 1314906023 336043 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric : the salt itself). The return value points to static data whose content < 1314906025 284688 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric : is overwritten by each call. < 1314906027 142148 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric : Warning: The key space consists of 2**56 equal 7.2e16 possible values. < 1314906029 271694 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric : Exhaustive searches of this key space are possible using massively par‐ < 1314906030 422634 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :is it iterated-DES you're cracking? < 1314906031 83081 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric : allel computers." < 1314906064 387415 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :ais523: looks like 25 rounds < 1314906080 528531 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :which I think counts as close to nothing, from what little I know of crypt < 1314906098 172333 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :so after you do 25 rounds, you're going to need to initialize memory for another group of rounds < 1314906104 303529 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :that's doable, though < 1314906121 122361 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :ais523: I was just going to use a constant number of threads, and rewrite over the last used memory at the end < 1314906125 122938 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :I don't think it's a situation in which you'll get massive gains from a GPU, just because CPUs are also quite good at that particular calculation < 1314906138 325260 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :because you are actually CPU-bound, not memory-bound < 1314906143 934328 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :GPUs have been used to give massive gains for very similar problems in the past, I think < 1314906145 765118 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :GPUs will benefit simply from having more cores < 1314906147 883285 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :well, I know < 1314906153 159318 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :you'll probably get around x1000 on that < 1314906155 765622 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :ais523: well, that's the benefit < 1314906159 256423 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :but not, say, ten orders of magnitude < 1314906159 733347 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :x1000 counts as massive here < 1314906172 90398 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :so, umm, eight thousand concurrent DES'ers sound reasonable? < 1314906175 55393 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric ::-P < 1314906195 979234 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :more like 128, I think < 1314906200 918932 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :PAH < 1314906208 352872 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :and practically 256 because they're running on alternate ends of the clock cycle < 1314906212 288841 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :right < 1314906213 935099 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :better than CPUs < 1314906221 353581 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :which can presumably manage about eight, if you have a good CPU < 1314906227 780580 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :yep < 1314906270 666689 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :ok, if your quoted number is right, and I can do one crypt()+compare per millisecond, then I can exhaust the keyspace in only nine thousand years < 1314906280 574901 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :I, umm, suspect a millisecond to be a rather pessimistic estimate < 1314906292 776774 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :although I don't really have any idea how long it does atke < 1314906296 875661 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :it might be simpler just to write the code and measure it < 1314906409 709921 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :ais523: I suspect this exhaustive massively parallel search is talking about Deep Crack or something :P < 1314906427 33112 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :yeah, seems so < 1314906530 832389 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :ais523: hmm, I suppose writing the equivalent CPU code might actually be beneficial < 1314906546 293459 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :I only have two cores on this machine, but on an eight-core machine it might just make a slight difference :-P < 1314906555 188709 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :because of the CPU-boundness < 1314906973 281282 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :`addquote OK, making myself emergency doctor on the advice of IRC. < 1314906976 613641 :HackEgo!Gregor@codu.org PRIVMSG #esoteric :636) OK, making myself emergency doctor on the advice of IRC. < 1314907080 991107 :coppro!~scshunt@denardo.csclub.uwaterloo.ca PRIVMSG #esoteric :please state the nature of your IRC emergency < 1314907215 796812 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :i am assuming some very mauled dorfs here < 1314907234 860011 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :no. Phantom_Hoover has appendicitis. < 1314907242 602154 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :>_> < 1314907260 418630 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :Phantom_Hoover: it has been pleasant to know you. < 1314907276 643291 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :well, I wouldn't go that af.r < 1314907277 629142 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :far. < 1314907292 434240 :Phantom_Hoover!~phantomho@unaffiliated/phantom-hoover/x-3377486 PRIVMSG #esoteric :oerjan, I'm a competent amateur surgeon! < 1314907302 62437 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :im a competent bad surgeon < 1314907308 154368 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :ever need some bad surgery done < 1314907309 141739 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :im your man < 1314907311 645448 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :elliott: i thought adding "well, with a few exceptions." would be impolite in the circumstances. < 1314907465 711777 :monqy!~swell@pool-71-102-215-70.snloca.dsl-w.verizon.net JOIN :#esoteric < 1314907993 997589 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :elliott: hey my iwc premonition was right anyhow < 1314908007 477183 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :oerjan: what, of it ending? < 1314908026 322409 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :no, of Me becoming singled out < 1314908036 384823 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :oh (what do you mean by that) < 1314908042 271304 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :(im dont follow iwc, as regularly as i should) < 1314908065 834552 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :i thought you were here when i mentioned i thought Me would have been chosen, not Steve < 1314908076 784554 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :sorry chosen for what IM UNSMART < 1314908098 924364 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :as hitler's body donor, sheesh < 1314908111 98213 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :o < 1314908123 302731 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :ACTION actually reads latest iwc < 1314908123 836528 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :ah < 1314908139 476218 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :oerjan: enjoy your annotations in german < 1314908160 322583 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :O KAY < 1314908167 552284 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Unregelmäßigen Webcomic! < 1314908206 999911 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :i don't think -en is the right suffix there. < 1314908222 150196 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :fuck you nazis can germinate however they like. as can google translate. < 1314908227 752549 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :("Germinate" :DD:DDD) < 1314908230 407685 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric ::dddD:D:D < 1314908250 967818 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :ACTION swats elliott -----### < 1314908343 343081 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :hmm, those fancy Intel encryption instructions < 1314908348 776741 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :they're reasonable things like AES, right, not DES? :P < 1314908352 402776 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :olsner probably knows < 1314908398 592650 :Deewiant!~deewiant@cs27125254.pp.htv.fi PRIVMSG #esoteric :Yes, AES < 1314908413 731332 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Deewiant: but why not DES, too? < 1314908417 154242 :Deewiant!~deewiant@cs27125254.pp.htv.fi PRIVMSG #esoteric :https://secure.wikimedia.org/wikipedia/en/wiki/AES_instruction_set < 1314908419 503708 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :that's the real question :| < 1314908427 386581 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :hm i wonder if this will mean that hitler will continue being a regular character, but now will look like DMM instead... < 1314908454 608056 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :that _is_ brilliant. < 1314908479 627305 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :DES sure is complicated when you're sleepy < 1314908747 879893 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :sleep sure is complicated when you're using DES < 1314908822 368035 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :true < 1314909476 389599 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Phantom_Hoover: oerjan: Hey you, remind me to rip out haskell-mode and install haskell-emacs tomorrow. < 1314909498 21683 :Phantom_Hoover!~phantomho@unaffiliated/phantom-hoover/x-3377486 PRIVMSG #esoteric :@tell elliott Remember to install haskell-emacs! < 1314909498 494643 :lambdabot!~lambdabot@li85-105.members.linode.com PRIVMSG #esoteric :Consider it noted. < 1314909500 311211 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Hopefully I can coerce it into doing what I want. < 1314909500 498354 :lambdabot!~lambdabot@li85-105.members.linode.com PRIVMSG #esoteric :elliott: You have 3 new messages. '/msg lambdabot @messages' to read them. < 1314909502 694727 :Phantom_Hoover!~phantomho@unaffiliated/phantom-hoover/x-3377486 PRIVMSG #esoteric :@tell elliott Remember to install haskell-emacs! < 1314909503 151276 :lambdabot!~lambdabot@li85-105.members.linode.com PRIVMSG #esoteric :Consider it noted. < 1314909509 376360 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Phantom_Hoover: dude that is so un-okay also, what is that messages < 1314909509 583092 :lambdabot!~lambdabot@li85-105.members.linode.com PRIVMSG #esoteric :elliott: You have 4 new messages. '/msg lambdabot @messages' to read them. < 1314909542 479878 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Phantom_Hoover: I am afraid you will have to re-send these < 1314909542 645791 :lambdabot!~lambdabot@li85-105.members.linode.com PRIVMSG #esoteric :elliott: You have 1 new message. '/msg lambdabot @messages' to read it. < 1314909544 662661 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :oh < 1314909573 46151 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Phantom_Hoover: Also remind me to re-install ido-mode because ido-mode is great. < 1314909584 226676 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Hmm wait < 1314909596 701610 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :^ul (?tell elliott Hey install ido-mode, it's great.) < 1314909596 867059 :lambdabot!~lambdabot@li85-105.members.linode.com PRIVMSG #esoteric :elliott: You have 2 new messages. '/msg lambdabot @messages' to read them. < 1314909601 330946 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :fung?? < 1314909601 975163 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :OMG < 1314909605 863888 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :fizze???? < 1314909606 853467 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :OJSIDFDOJFODIF < 1314909609 623657 :Phantom_Hoover!~phantomho@unaffiliated/phantom-hoover/x-3377486 PRIVMSG #esoteric :fungot ;_; < 1314909615 29203 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :`echo ?tell elliott Hey install ido-mode, it's great. < 1314909616 654376 :HackEgo!Gregor@codu.org PRIVMSG #esoteric :​?tell elliott Hey install ido-mode, it's great. < 1314909619 140548 :Phantom_Hoover!~phantomho@unaffiliated/phantom-hoover/x-3377486 PRIVMSG #esoteric :fizzie ;_; < 1314909623 246974 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :`echo @tell elliott Hey install ido-mode, it's great. < 1314909626 379442 :HackEgo!Gregor@codu.org PRIVMSG #esoteric :​@tell elliott Hey install ido-mode, it's great. < 1314909628 394749 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Gregor: FASCISTJIOS < 1314909639 373370 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :ummm ummm < 1314909643 582584 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :hey ais523 < 1314909649 544444 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :hi < 1314909655 936011 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :if I sent lines at you prefixed with QQQ will you send them back to the channel, assuming they're not malicious < 1314909703 644559 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :probably not, I'm too tired to repeat them sensibly < 1314909710 415096 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :ONLY ONE WAY TO FIND OUT < 1314909713 249041 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :ais523: QQQ?tell elliott Hey install ido-mode, it's great. < 1314909716 47846 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :or to constantly monitor the channel to do that < 1314909719 172633 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Wait I should do redundancy. < 1314909722 958563 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Phantom_Hoover: QQQ?tell elliott Hey install ido-mode, it's great. < 1314909730 367628 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :also, I'd be a little unlikely to do it without your comment earlier < 1314909744 129021 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :is lambdabot ignoring the other bots here? < 1314909761 237861 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :EgoBot and HackEgo prefix punctuation with unicode < 1314909764 528855 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :because they're dum stupid < 1314909765 906709 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :and fungot < 1314909767 713561 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :fungot < 1314909768 862987 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :is not < 1314909770 675279 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :with us ;____; < 1314909774 795349 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :WAIT < 1314909777 611640 :elliott!~elliott@unaffiliated/elliott NICK :notelliottatall < 1314909778 426403 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :@tell elliott you wanted the bot to remind you about ido-mode, right? < 1314909778 591048 :lambdabot!~lambdabot@li85-105.members.linode.com PRIVMSG #esoteric :Consider it noted. < 1314909780 145634 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :we've got no fun < 1314909792 270341 :notelliottatall!~elliott@unaffiliated/elliott PRIVMSG #esoteric :?tell elliott Hey install ido-mode, it's great. < 1314909792 435927 :lambdabot!~lambdabot@li85-105.members.linode.com PRIVMSG #esoteric :Consider it noted. < 1314909810 485101 :notelliottatall!~elliott@unaffiliated/elliott PRIVMSG #esoteric :?tell elliott Also: change the colour scheme emacs' default colour scheme is terrible honestly you are a bum. < 1314909810 649596 :lambdabot!~lambdabot@li85-105.members.linode.com PRIVMSG #esoteric :Consider it noted. < 1314909814 242543 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :oh, prefixing punctuation with unicode is a smart way to avoid a botloop < 1314909818 694914 :notelliottatall!~elliott@unaffiliated/elliott PRIVMSG #esoteric :?tell elliott_ Get rid of that underscore goddammit < 1314909818 859591 :lambdabot!~lambdabot@li85-105.members.linode.com PRIVMSG #esoteric :Consider it noted. < 1314909823 151792 :notelliottatall!~elliott@unaffiliated/elliott PRIVMSG #esoteric :?tell elliott__ We are no longer friends < 1314909823 316439 :lambdabot!~lambdabot@li85-105.members.linode.com PRIVMSG #esoteric :Consider it noted. < 1314909825 614073 :notelliottatall!~elliott@unaffiliated/elliott NICK :elliott < 1314909828 92035 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Beautiful < 1314909828 261722 :lambdabot!~lambdabot@li85-105.members.linode.com PRIVMSG #esoteric :elliott: You have 5 new messages. '/msg lambdabot @messages' to read them. < 1314909832 375429 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :No, lambdabot, no. < 1314909837 826578 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :umm, wait < 1314909840 796924 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :what character is it? now I want to design a bot that uses it as a command character < 1314909842 115139 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :it won't remind me I have any tomorrow < 1314909848 391006 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :ais523: zero width non-breaking space i think < 1314909871 140828 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :ok, umm, someone ?tell elliott something after I leave < 1314909871 471455 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :do you mean zero-width joiner? < 1314909877 168520 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :ais523: not sure, check yourself :P < 1314909956 502798 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Phantom_Hoover: OK I am entrusting you to remind me to check my messages tomorrow by ?telling me after I leave which will be momentarily. < 1314909959 86127 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :If you disappoint me < 1314909960 240894 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :your soul < 1314909961 716588 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :shall end < 1314910220 35235 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :but how do we know Phantom_Hoover has a soul? < 1314910236 309417 :Phantom_Hoover!~phantomho@unaffiliated/phantom-hoover/x-3377486 PRIVMSG #esoteric :oerjan, I'm a ghost. < 1314910242 280557 :Phantom_Hoover!~phantomho@unaffiliated/phantom-hoover/x-3377486 PRIVMSG #esoteric :I am /literally nothing but soul/. < 1314910248 656017 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :aha < 1314910448 683176 :Sgeo!~Sgeo@ool-ad034d00.dyn.optonline.net PRIVMSG #esoteric :?tell elliott something before I leave < 1314910449 305977 :lambdabot!~lambdabot@li85-105.members.linode.com PRIVMSG #esoteric :Consider it noted. < 1314910466 102883 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Sgeo: no < 1314910466 267825 :lambdabot!~lambdabot@li85-105.members.linode.com PRIVMSG #esoteric :elliott: You have 6 new messages. '/msg lambdabot @messages' to read them. < 1314910467 425274 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :no < 1314910468 908811 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :after i leave < 1314910469 894598 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :or it does < 1314910470 226236 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :that < 1314910540 935475 :Vorpal!~AnMaster@unaffiliated/anmaster PRIVMSG #esoteric :!help < 1314910541 762327 :EgoBot!foobar@codu.org PRIVMSG #esoteric :​help: General commands: !help, !info, !bf_txtgen. See also !help languages, !help userinterps. You can get help on some commands by typing !help . < 1314910544 247663 :Vorpal!~AnMaster@unaffiliated/anmaster PRIVMSG #esoteric :!info < 1314910544 502717 :EgoBot!foobar@codu.org PRIVMSG #esoteric :​EgoBot is a bot for running programs in esoteric programming languages. If you'd like to add support for your language to EgoBot, check out the source via mercurial at https://codu.org/projects/egobot/hg/ . Cheers and patches (preferably hg bundles) can be sent to Richards@codu.org , PayPal donations can be sent to AKAQuinn@hotmail.com , complaints can be sent to /dev/null < 1314910559 532110 :elliott!~elliott@unaffiliated/elliott PRIVMSG #esoteric :Vorpal: ? < 1314911423 84819 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :gah, Yahoo! are getting rid of their classic interface < 1314911454 603173 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :(the one that actually makes it possible to send sanely-formatted interfaces without having to rely on SMTP forwarding) < 1314911493 993537 :ais523!~ais523@unaffiliated/ais523 QUIT :Remote host closed the connection < 1314911867 574286 :nooga!~nooga@maverick.aircity.pl QUIT :Ping timeout: 252 seconds < 1314912243 130052 :elliott!~elliott@unaffiliated/elliott QUIT :Ping timeout: 258 seconds < 1314912352 331388 :Vorpal!~AnMaster@unaffiliated/anmaster PRIVMSG #esoteric :elliott: I was looking for the repo < 1314912415 23931 :Vorpal!~AnMaster@unaffiliated/anmaster PRIVMSG #esoteric :also the Swedish mirror for kernel.org just died it seems. < 1314912566 910858 :kwertii!~kwertii@ResNet-33-19.resnet.ucsb.edu JOIN :#esoteric < 1314913524 709886 :Sgeo!~Sgeo@ool-ad034d00.dyn.optonline.net PRIVMSG #esoteric :?tell elliott You're not a doctor. < 1314913525 199217 :lambdabot!~lambdabot@li85-105.members.linode.com PRIVMSG #esoteric :Consider it noted. < 1314913664 459909 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :?tell lambdabot I secretly love you. < 1314913664 666923 :lambdabot!~lambdabot@li85-105.members.linode.com PRIVMSG #esoteric :Nice try ;) < 1314913700 891396 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :NICE CONDITIONALS LAMBDABOT < 1314913704 555770 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :SEXY SEXY CONDITIONALS < 1314913754 369068 :Sgeo!~Sgeo@ool-ad034d00.dyn.optonline.net PRIVMSG #esoteric :?tell CakeProphet you have a weird idea about what the word "secretly" means < 1314913754 852388 :lambdabot!~lambdabot@li85-105.members.linode.com PRIVMSG #esoteric :Consider it noted. < 1314913847 76970 :Lymee!~moe@unaffiliated/cirno-chan PRIVMSG #esoteric :?tell lambdabot I not-so-secretly love you! < 1314913847 241721 :lambdabot!~lambdabot@li85-105.members.linode.com PRIVMSG #esoteric :Nice try ;) < 1314913848 722918 :Lymee!~moe@unaffiliated/cirno-chan PRIVMSG #esoteric :Damnit! < 1314913887 513877 :Deewiant!~deewiant@cs27125254.pp.htv.fi QUIT :Read error: Connection reset by peer < 1314913895 267782 :Deewiant!~deewiant@cs27125254.pp.htv.fi JOIN :#esoteric < 1314913971 799711 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :?tell fungot that sword alone < 1314913971 966699 :lambdabot!~lambdabot@li85-105.members.linode.com PRIVMSG #esoteric :Consider it noted. < 1314914002 578514 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :fungot is not present... :( < 1314914002 744465 :lambdabot!~lambdabot@li85-105.members.linode.com PRIVMSG #esoteric :CakeProphet: You have 2 new messages. '/msg lambdabot @messages' to read them. < 1314914204 105588 :Phantom_Hoover!~phantomho@unaffiliated/phantom-hoover/x-3377486 PRIVMSG #esoteric : ?tell lambdabot I secretly love you. < 1314914213 235784 :Phantom_Hoover!~phantomho@unaffiliated/phantom-hoover/x-3377486 PRIVMSG #esoteric :@vixen I hear CakeProphet fancies you. < 1314914214 46087 :lambdabot!~lambdabot@li85-105.members.linode.com PRIVMSG #esoteric :awesome < 1314914226 88507 :Phantom_Hoover!~phantomho@unaffiliated/phantom-hoover/x-3377486 PRIVMSG #esoteric :@vixen I'll leave this to you two. < 1314914226 606528 :lambdabot!~lambdabot@li85-105.members.linode.com PRIVMSG #esoteric :there are a lot of weirdos on here < 1314914244 683523 :Phantom_Hoover!~phantomho@unaffiliated/phantom-hoover/x-3377486 PRIVMSG #esoteric :@vixen Come now, it's natural to take a passing interest in the affairs of others. < 1314914245 231162 :lambdabot!~lambdabot@li85-105.members.linode.com PRIVMSG #esoteric :right now? < 1314914254 837938 :Phantom_Hoover!~phantomho@unaffiliated/phantom-hoover/x-3377486 PRIVMSG #esoteric :@vixen As good a time as any. < 1314914255 367102 :lambdabot!~lambdabot@li85-105.members.linode.com PRIVMSG #esoteric :good good < 1314914319 280847 :GuestIceKovu!x@ANantes-259-1-253-100.w83-195.abo.wanadoo.fr JOIN :#esoteric < 1314914359 236914 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :@vixen how does polar bear know what apples is? < 1314914359 467902 :lambdabot!~lambdabot@li85-105.members.linode.com PRIVMSG #esoteric :how? it depends... < 1314914378 935235 :Slereah!x@ANantes-259-1-149-19.w90-49.abo.wanadoo.fr QUIT :Ping timeout: 264 seconds < 1314914387 876541 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :@vixen yow!!! < 1314914388 55384 :lambdabot!~lambdabot@li85-105.members.linode.com PRIVMSG #esoteric :Crazy little wanker! < 1314914552 757881 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :@vixen Will you marry me? o_O_o < 1314914552 927012 :lambdabot!~lambdabot@li85-105.members.linode.com PRIVMSG #esoteric :i think you know the answer to that one, silly < 1314914563 471167 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :@vixen if I ask a question will you say the same thing? < 1314914563 636872 :lambdabot!~lambdabot@li85-105.members.linode.com PRIVMSG #esoteric :oh, but only if, right? < 1314914572 857446 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :@vixen what if I yell!!? < 1314914573 28430 :lambdabot!~lambdabot@li85-105.members.linode.com PRIVMSG #esoteric :i don't know, what? < 1314914579 612002 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :@vixen I am yelling! < 1314914579 820665 :lambdabot!~lambdabot@li85-105.members.linode.com PRIVMSG #esoteric :have you ever scubadived? < 1314914603 82389 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :@vixen no < 1314914603 246825 :lambdabot!~lambdabot@li85-105.members.linode.com PRIVMSG #esoteric :no? < 1314914605 574822 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :@vixen no < 1314914605 739712 :lambdabot!~lambdabot@li85-105.members.linode.com PRIVMSG #esoteric :i didn't think so < 1314914626 181773 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :@vixen no < 1314914626 346509 :lambdabot!~lambdabot@li85-105.members.linode.com PRIVMSG #esoteric :i didn't think so < 1314914689 427518 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :@vixen sauerkraut!!! < 1314914689 609976 :lambdabot!~lambdabot@li85-105.members.linode.com PRIVMSG #esoteric :am I the only person you're talking to? < 1314914715 515488 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :@vixen yes < 1314914715 680177 :lambdabot!~lambdabot@li85-105.members.linode.com PRIVMSG #esoteric :you agree? < 1314914717 654509 :nys!~russia@blk-215-85-41.eastlink.ca JOIN :#esoteric < 1314914719 464384 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :@vixen yes < 1314914719 630596 :lambdabot!~lambdabot@li85-105.members.linode.com PRIVMSG #esoteric :i thought so < 1314914743 800335 :Phantom_Hoover!~phantomho@unaffiliated/phantom-hoover/x-3377486 PRIVMSG #esoteric :CakeProphet, honestly, don't you have anything more to say? < 1314914789 589785 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :is it because you feel don't you have anything more to say that you ask questions honestly? < 1314914792 621456 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :..... < 1314914926 37526 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :cleverbot is not clever because it s a borg-like hivemind of all of the stupid people it talks to. < 1314914939 402649 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :@vixen lutefisk! < 1314914939 828048 :lambdabot!~lambdabot@li85-105.members.linode.com PRIVMSG #esoteric :Fuck me like im a school boy < 1314914950 948620 :Phantom_Hoover!~phantomho@unaffiliated/phantom-hoover/x-3377486 PRIVMSG #esoteric :@vixen School girl, surely? < 1314914951 471040 :lambdabot!~lambdabot@li85-105.members.linode.com PRIVMSG #esoteric :who's to say? < 1314914955 13395 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :lol < 1314914971 313372 :Phantom_Hoover!~phantomho@unaffiliated/phantom-hoover/x-3377486 PRIVMSG #esoteric :@vixen I was under the impression that your gender was firmly established. < 1314914972 13513 :lambdabot!~lambdabot@li85-105.members.linode.com PRIVMSG #esoteric :uhuh < 1314915088 56699 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :oerjan: apparently Vixen has a thing for traditional Norwegian cuisine. < 1314915110 928634 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :or bastardizations thereof < 1314915347 859565 :kwertii!~kwertii@ResNet-33-19.resnet.ucsb.edu QUIT :Quit: bye < 1314915410 659608 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :What is two plus two? < 1314915411 978232 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :Yes. < 1314915415 453743 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :STUPID CLEVERBOT < 1314915422 456247 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :me ragecloses < 1314915441 517387 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :my rage has no time for /'s < 1314915501 157665 :nys!~russia@blk-215-85-41.eastlink.ca PRIVMSG #esoteric :the rage of bully automatons < 1314915668 270396 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :ACTION suddenly realizes the pun in rube ~ bully automaton < 1314915688 10567 :nys!~russia@blk-215-85-41.eastlink.ca PRIVMSG #esoteric ::) < 1314915824 410402 :Phantom_Hoover!~phantomho@unaffiliated/phantom-hoover/x-3377486 PRIVMSG #esoteric :oerjan, where? < 1314915853 353887 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :Phantom_Hoover: a bully is a rube < 1314915874 871785 :Phantom_Hoover!~phantomho@unaffiliated/phantom-hoover/x-3377486 PRIVMSG #esoteric :That occurred to me but I dismissed it as stupid. < 1314915910 724299 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :ACTION hits Phantom_Hoover with the saucepan ===\__/ < 1314915923 429875 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :there's no such thing as a stupid pun. < 1314915937 815480 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :er, excuse me < 1314915942 88473 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :there's no such thing as a stupid fun. < 1314915945 67716 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :BAHAHAHAHAHA < 1314915946 373875 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :... < 1314915959 33087 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :ic < 1314915995 751872 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :don't you mean carrots? < 1314916007 920988 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :ACTION runs away _fast_ < 1314916020 402363 :CakeProphet!~adam@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake PRIVMSG #esoteric :I don't really understand. < 1314916028 504254 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :good, good < 1314916034 680392 :Sgeo!~Sgeo@ool-ad034d00.dyn.optonline.net PRIVMSG #esoteric :ACTION does < 1314916051 834771 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :it's a reddit meme, and also a meta-meme of hating it < 1314916065 664095 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :(for being stupid) < 1314917239 526316 :FireFly!~firefly@unaffiliated/firefly QUIT :Quit: FireFly < 1314917306 574892 :Phantom_Hoover!~phantomho@unaffiliated/phantom-hoover/x-3377486 PRIVMSG #esoteric :ACTION → sleep < 1314917307 944648 :Phantom_Hoover!~phantomho@unaffiliated/phantom-hoover/x-3377486 QUIT :Quit: Leaving < 1314917460 111246 :kmc!~keegan@c-98-216-51-47.hsd1.ma.comcast.net PRIVMSG #esoteric :bacon? < 1314917689 373622 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :"Good God. Mustafar is Dwarf Fortress, isn't it. That explains EVERYTHING! The random violence. The emo drama. The insanity." < 1314917697 495945 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :(comment from the iwc forum) < 1314917735 641674 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :kmc: no, carrots < 1314917771 526929 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :ok maybe bacon has reached that point too. but the carrots essentially _started_ there. < 1314917868 627944 :kmc!~keegan@c-98-216-51-47.hsd1.ma.comcast.net PRIVMSG #esoteric :carrots: my anti-bacon < 1314919379 807455 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com JOIN :#esoteric