< 1271548800 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :North America, yes :-) < 1271548804 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Guessing the most peopled state has more than that probably. < 1271548826 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :I think CA is the most densely populated, but AK is bigger geographically < 1271548832 0 :alise_!unknown@unknown.invalid PRIVMSG #esoteric :Rugxulo: are you assuming that I'm going to come and rape you? < 1271548834 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Does busybox's dd print out statistics on SIGUSR1 (like the usual one does), or does it just die? < 1271548835 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :or maybe TX is most populous with CA next, can't remember < 1271548837 0 :alise_!unknown@unknown.invalid PRIVMSG #esoteric :that would be rather unlikely < 1271548847 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :alise, depends on where *you* live ;-) < 1271548854 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Never mind, it just finished. < 1271548865 0 :Oranjer!unknown@unknown.invalid PART #esoteric :? < 1271548895 0 :alise_!unknown@unknown.invalid PRIVMSG #esoteric :Rugxulo: England. < 1271548948 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :oh noes, it's Crystal "Windows 7 was my idea" !!!! RUN! < 1271548963 0 :alise_!unknown@unknown.invalid PRIVMSG #esoteric :Wow, you truly are infuriating to talk to. < 1271548978 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :alise, sorry ... you just never said why you wanted to know < 1271548995 0 :alise_!unknown@unknown.invalid PRIVMSG #esoteric :so I can track you down knowing only your state and stalk you forevermore < 1271549025 0 :alise_!unknown@unknown.invalid PRIVMSG #esoteric :The only flaw in my plot was that I hadn't counted on you not telling me! < 1271549030 0 :adam_d!unknown@unknown.invalid QUIT :Ping timeout: 245 seconds < 1271549031 0 :alise_!unknown@unknown.invalid PRIVMSG #esoteric :Foiled again! < 1271549065 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :all I know is "you have a theory", which I blindly guess had something to do with my offhand comment about "the universe is expanding (but how do they know that?)" < 1271549071 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :paranoid people are always foiled < 1271549096 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :use physics, it should tell you everything (even where I live), right? :-P < 1271549097 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :I think I've made myself too stalkable < 1271549111 0 :alise_!unknown@unknown.invalid PRIVMSG #esoteric :Sgeo_: indeed, Seth < 1271549127 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :Rugxulo, um, I guess if someone had perfect knowledge of the state of the universe.. And even then, it would stop being helpful eventually < 1271549174 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :Well, probably just need the Earth, or even just the US for a one-time snapshot < 1271549175 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :BTW, befi seems much faster on mandel than others (even ccbi) < 1271549187 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :Erm, US and whichever Freenode server you're connected to < 1271549251 0 :alise__!~alise@212.183.140.19 JOIN :#esoteric < 1271549321 0 :alise__!unknown@unknown.invalid PRIVMSG #esoteric :I hate this connection. < 1271549375 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :alise__, EDGE? =P < 1271549437 0 :alise_!unknown@unknown.invalid QUIT :Ping timeout: 258 seconds < 1271549587 0 :alise__!unknown@unknown.invalid QUIT :Ping timeout: 240 seconds < 1271549706 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :poor alise, poor nosy nosy alise ... < 1271550348 0 :alise__!~alise@212.183.140.6 JOIN :#esoteric < 1271550526 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :wb < 1271550568 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :http://www.pastebin.org/155564 < 1271550576 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :ccbi speeds up, but befi slows down :-/ < 1271550590 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :it's a cpu-specific problem, though < 1271550641 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :admittedly, I was targeting size over speed, so I don't majorly care, just curious ... < 1271550668 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :http://board.flatassembler.net/topic.php?t=10810 < 1271550701 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Rugxulo: Well, I got something booted, though now the rotated display works hellishly slowly. Anyway, the benchmark; is it just a loop instead of wrapping? < 1271550712 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Rugxulo: Did you notice my boundary-tracking results re the earlier one? < 1271550726 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :results? no, don't recall that < 1271550737 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :See http://pastebin.com/xQFwEaUu < 1271550758 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :yes, it's just a manual loop instead of wrapping, which apparently causes something to bork on P4 and AMD64 (self-modifying code, perhaps? or maybe cache issues?) < 1271550785 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :and yet my P166 is like 30% faster, go figure < 1271550828 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :okay, so what exactly does -DBOUNDARY_TRACKING do?? < 1271550933 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :The curious bit was non-LLVM gcc's slowness on -DPF_X=15 static playfield-size diminishment vs. -DBOUNDARY_TRACKING, where the only difference in the actual time-wasting part of the code is that in the "wrap" command at the edge, the subtract-from-IP value is a compile-time constant for -DPF_X=1, but a file-scope "static int pf_box_w" for -DBOUNDARY_TRACKING. Well, *32 or so that, actually, if we're speaking bytes. < 1271550992 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :what GCC? < 1271551008 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :4.4.2 -march=pentium was loads slower (on a Pentium!) than -mtune=pentium4 < 1271551015 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :(for original bef.c) < 1271551030 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :I'm talking like ten minutes slower (32 vs. 22, or something like that) < 1271551044 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :gcc (Ubuntu 4.4.3-4ubuntu5) 4.4.3, llvm-gcc (GCC) 4.2.1 (Based on Apple Inc. build 5658) (LLVM build). I think these were plain -O3, could try -march=native or some-such. < 1271551045 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :must be a regression, as I don't think 3.4.4 had that problem < 1271551132 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Oh, and what it generated for the wrapping opcode was http://pastebin.com/caKbRGzh -- where in the upper version .L281 is immediately followed by a jmp **%rax. < 1271551195 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :you're on Athlon64, right? < 1271551199 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Yes. < 1271551224 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :That double-jump is a bit strange construct anyway. < 1271551243 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :so -DBOUNDARY_CHECKING is faster ... but that code looks much more complex than the other bit < 1271551252 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :it must be something else, it can't be that < 1271551257 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Yes, but it doesn't have the very silly double-jump the other bit has. < 1271551268 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :jmp .foo; .foo: jmp *%rax. < 1271551305 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :I didn't diff the whole assembly; the C code didn't change very much, but of course the compiled thing might've changed a lot. < 1271551319 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :what GCC version, 4.4.3? < 1271551322 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :I wanted to try clang, but my version of it (2.7~svn20100317-0ubuntu1) has a bug on the &&label thing. < 1271551336 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :The same I mentioned just five minutes ago. < 1271551343 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :oops ;-) < 1271551358 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :try "-mtune=generic -O2" < 1271551365 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :(sometimes -O3 is worse) < 1271551374 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :I also shared the thing at http://git.zem.fi/ff < 1271551449 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :And in fact I think the current BOUNDARY_TRACKING is broken; it wraps wrong if the edge of the program has a #. (The bounding-box boundary's only one cell deep; should be two, like the fixed one around the playfield is.) < 1271551485 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :I haven't tested it with anything that'd actually p outside the program's bounding-box. < 1271551609 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :BTW, mandel.bf doesn't seem to work < 1271551687 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :With what? < 1271551693 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Or just in general? < 1271551696 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :ff3 < 1271551730 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Right; I've only tested it with rot13, your benchmark, and Mycology's 93 part, which isn't very comprehensive. < 1271551783 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Do you have something it works with, and can output a trace of executed instructions, and compiles well on Unixy things, and so on? < 1271551867 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :output a trace? not sure < 1271551878 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :but mandel.bf is an official example on Cat's Eyes' site < 1271551887 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :http://www.pastebin.org/155608 < 1271551911 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :original bef.c should compile fine on *nix, esp. since Pressey is apparently such a FreeBSD fan < 1271551959 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :That's funny results too, with the ff3b case. < 1271551965 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :yes < 1271551990 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :a P4 is a strange animal < 1271552002 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :AMD64 usually isn't as braindead, but it has weird corner cases too < 1271552079 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :hmmm, bef 2.2.1 has "-s stack" to write stack contents to file, but even after Ctrl-C (half finished, it was slow), the file is still 26 MB! :-P < 1271552123 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Hrm, I get "Unsupported instruction 'ÿ' (0xffffffff) (maybe not Befunge-93?)" from bef.c all the time on mandel.bf. < 1271552124 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :lots of "g" and "p" and multiplication in there, so maybe it does some wraparound or relies on undefined behavior < 1271552134 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :(sorry, wraparound as in integer overflow) < 1271552137 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :use -q < 1271552141 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :that'll shut it up ;-) < 1271552161 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :CCBI also works on it, if that helps < 1271552182 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :I think CCBI also had some sort of trace thing. < 1271552183 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :not sure what or if it supports for outputting to file, but it does let you -t (trace) < 1271552189 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :I guess I could get a binary. < 1271552200 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Conference of Catholic Bishops of India < 1271552207 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Always hard to google it. :p < 1271552222 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :http://users.tkk.fi/~mniemenm/files/befunge/interpreters/ccbi/ccbi-linux-x86-32.txz < 1271552230 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :heh < 1271552259 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :(needs p7zip to unpack, I can re-pack as .ZIP or .tar.gz and upload to RapidShare if you need it) < 1271552273 0 :alise__!unknown@unknown.invalid PRIVMSG #esoteric :lol. < 1271552285 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :actually, GNU tar supports .xz now, I think (not sure, never tried) < 1271552301 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :"tar Jxvf" worked just fine. < 1271552310 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :I think it does need external xz-utils instealld. < 1271552333 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Hopefully ff3 and ccbi will diverge soon, there's quite many instructions to trace through otherwise. < 1271552335 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :why he didn't just pack as .7z is beyond me < 1271552475 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :oh, BTW, I think I increased the IF_X and IF_Y to 20 and 2, respectively, since I thought benchmark2.bef might need it (might explain the speed diff in ff3b) < 1271552490 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :anyways, I gotta jet, bbl eventually ;-) < 1271552528 0 :Rugxulo!unknown@unknown.invalid QUIT :Quit: Rugxulo < 1271552534 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :I guess you mean PF, not IF; but yes, at least the Y=2 it needs. < 1271552588 0 :Oranjer!~HP_Admini@adsl-34-17-217.cae.bellsouth.net JOIN :#esoteric < 1271552727 0 :alise__!unknown@unknown.invalid PRIVMSG #esoteric :Boxes. < 1271552727 0 :alise__!unknown@unknown.invalid PRIVMSG #esoteric :Boxen. < 1271552727 0 :alise__!unknown@unknown.invalid PRIVMSG #esoteric :bf10. < 1271552731 0 :alise__!unknown@unknown.invalid PRIVMSG #esoteric :Must. Implement. Linear. Loops. < 1271552909 0 :augur!unknown@unknown.invalid QUIT :Remote host closed the connection < 1271552989 0 :augur!~augur@216-164-33-76.c3-0.slvr-ubr1.lnh-slvr.md.cable.rcn.com JOIN :#esoteric < 1271553102 0 :alise__!unknown@unknown.invalid PRIVMSG #esoteric :annoyingly i don't think my parser architecture can support such an advanced optimisation by itself < 1271553104 0 :alise__!unknown@unknown.invalid PRIVMSG #esoteric :(augur) PARSER < 1271553105 0 :FireFly!unknown@unknown.invalid QUIT :Quit: Leaving < 1271553110 0 :alise__!unknown@unknown.invalid PRIVMSG #esoteric :that means you have to help me < 1271553112 0 :alise__!unknown@unknown.invalid PRIVMSG #esoteric :since it's PARSER-RELATED < 1271553122 0 :alise__!unknown@unknown.invalid PRIVMSG #esoteric :and you're ALMOST SORT OF related to PARSERS < 1271553197 0 :alise__!unknown@unknown.invalid PRIVMSG #esoteric :Thailand went through a bloodless coup while the President was out in the United States to address the United Nations. What do you think? < 1271553197 0 :alise__!unknown@unknown.invalid PRIVMSG #esoteric :[..] < 1271553198 0 :alise__!unknown@unknown.invalid PRIVMSG #esoteric :"This is all in accordance with Thailand's 'Whoever sits in the President's chair is the President' policy." < 1271553200 0 :alise__!unknown@unknown.invalid PRIVMSG #esoteric :http://www.theonion.com/articles/bloodless-thai-coup,15074/ < 1271553201 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric ::o < 1271553204 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :PARSERRRRRRS < 1271553212 0 :alise__!unknown@unknown.invalid PRIVMSG #esoteric :Best policy ever. < 1271553520 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Rugxulo: in case you logread; strange about that mandel.bf; ccbi's trace of it has numbers like 7398752256 in stack. It might be depending on some particular wraparound; I get a differently broken output with -DSTACK_TYPE='unsigned int' (or signed/unsigned long) from ff3 than with the default 'int'. < 1271553933 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :clearly a complex program < 1271554107 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Rugxulo: Okay, ff3 runs mandel.bf correctly if you compile it with -DPF_TYPE='signed char', or just 'char' on proper systems/compilers -- it seems to store numbers in range [-128, 127] to the playfield and expect to get them back as-is. (My PF_TYPE default is "unsigned char".) < 1271554118 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :alise__, I'm going to reveal to you what my dad's big idea was. I'm pretty sure something like it already exists, otherwise http://www.androidzoom.com/android_applications/shopping/shopsavvy_eai.html couldn't really exist < 1271554142 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Rugxulo: I think that's a bit wrong; the Funge-98 specification says "Befunge-93 defines signed 32-bit stack cells and unsigned 8-bit Funge-Space cells." < 1271554143 0 :alise__!unknown@unknown.invalid PRIVMSG #esoteric :was that the big idea that would make him five millions? < 1271554148 0 :alise__!unknown@unknown.invalid PRIVMSG #esoteric :and millions and millions? < 1271554155 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Rugxulo: Admittedly I have no clue where Befunge-93 specifies that; certainly not in the official spec. < 1271554182 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :It was the big idea that he wanted me to keep secret, don't remember if he thought it would make us rich < 1271554194 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :billions and billions < 1271554255 0 :BeholdMyGlory!unknown@unknown.invalid QUIT :Read error: Connection reset by peer < 1271554292 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :WELL YOU BLEW IT NOW < 1271554437 0 :alise__!unknown@unknown.invalid PRIVMSG #esoteric :Sgeo_: your dad sounds like one of the managers from thedailywtf < 1271554474 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Rugxulo: If you want some mandel.bf times, http://pastebin.com/MA5RjDL3 < 1271554484 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Rugxulo: It doesn't quite work with -DBOUNDARY_TRACKING at the moment. < 1271554499 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :(And probably tighter boundaries wouldn't much help.) < 1271554618 0 :alise__!unknown@unknown.invalid PRIVMSG #esoteric :Ugh; this is gonna be really hard. < 1271554626 0 :alise__!unknown@unknown.invalid PRIVMSG #esoteric :I guess linear loops should be done after parsing. < 1271554646 0 :alise__!unknown@unknown.invalid PRIVMSG #esoteric :Oh, I can't. < 1271554650 0 :alise__!unknown@unknown.invalid PRIVMSG #esoteric :The length of the loops might change. Grr.. < 1271554709 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :ACTION is starting to get upset at how there are certain apps for iPhone but not Android < 1271554727 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :Not just Robozzle < 1271554855 0 :oerjan!unknown@unknown.invalid QUIT :Quit: Good night < 1271555197 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :Apparently, the Nexus One screen doesn't look good in direct sunlight? < 1271555231 0 :alise__!unknown@unknown.invalid PRIVMSG #esoteric :Yes, I read about that. A lot of screens don't. < 1271555238 0 :alise__!unknown@unknown.invalid PRIVMSG #esoteric :Didn't you use one? < 1271555390 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :Not in direct sunlight really < 1271555425 0 :Mathnerd314!~mathnerd3@dsl.6.28.53.206.cos.dyn.pcisys.net JOIN :#esoteric < 1271555606 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Rugxulo: Not much difference there, http://pastebin.com/BqmeZXUq -- I don't think it wraps all that much. < 1271555923 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :(WW) RADEON(2): Direct rendering disabled < 1271555924 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :(II) RADEON(2): Render acceleration disabled < 1271555924 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :No great wonder the rotated display is now horribly slow. < 1271556062 0 :alise__!unknown@unknown.invalid QUIT :Ping timeout: 258 seconds < 1271556391 0 :Asztal!unknown@unknown.invalid QUIT :Ping timeout: 252 seconds < 1271556773 0 :alise__!~alise@212.183.140.17 JOIN :#esoteric < 1271557475 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :ACTION tries to remember why if you do 9999*9999 and add the left and right halves of the result, you get 9999. < 1271557490 0 :alise__!unknown@unknown.invalid PRIVMSG #esoteric :magic < 1271557548 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :Because that's the ones' complement square of negative zero? That doesn't sound like the answer I got last time. < 1271557575 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :Last time, it was in binary, not decimal. < 1271557609 0 :cheater3!unknown@unknown.invalid QUIT :Ping timeout: 246 seconds < 1271557664 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :Last time, the answer was the difference of squares expression 9999^2 - 1^2 + 1. < 1271557709 0 :augur!unknown@unknown.invalid QUIT :Ping timeout: 276 seconds < 1271557919 0 :cheater2!~cheater@ip-80-226-12-151.vodafone-net.de JOIN :#esoteric < 1271557973 0 :Oranjer1!~HP_Admini@adsl-34-17-217.cae.bellsouth.net JOIN :#esoteric < 1271558169 0 :Oranjer!unknown@unknown.invalid QUIT :Ping timeout: 264 seconds < 1271558230 0 :alise__!unknown@unknown.invalid PRIVMSG #esoteric :Does anyone use the ASCII notation (Σn∈[0,∞] n/n!) for sum n=0 to infinity, n/n!? I guess it's not all that clear that n is an integer there. < 1271558274 0 :alise__!unknown@unknown.invalid PRIVMSG #esoteric :(Σ(0≤n≤∞) n/n!) would also work, although that is not as pretty. < 1271558822 0 :alise__!unknown@unknown.invalid PRIVMSG #esoteric :I didn't realise Spivak wrote AMS-LaTeX! < 1271559666 0 :Oranjer1!unknown@unknown.invalid NICK :Oranjer < 1271560142 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :My unintelligently designed notation: (Σ_n=0^∞ n/n!) < 1271560182 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :I think it's understood that you're not taking the sum over all nonnegative real numbers, especially since ! is only defined for integers. < 1271560196 0 :uorygl!unknown@unknown.invalid PRIVMSG #esoteric :But [0,∞), please. < 1271560424 0 :alise__!unknown@unknown.invalid PRIVMSG #esoteric :Pfft, you just don't appreciate infinity divided by the factorial of infinity. < 1271560446 0 :alise__!unknown@unknown.invalid PRIVMSG #esoteric :The problem with (Σ_n=0^∞ n/n!) is that, well, it's sort of unreadable compared to the two-dimensional notation. < 1271560641 0 :augur!~augur@c-68-54-80-152.hsd1.md.comcast.net JOIN :#esoteric < 1271560649 0 :alise_!~alise@212.183.140.16 JOIN :#esoteric < 1271560846 0 :alise__!unknown@unknown.invalid QUIT :Ping timeout: 258 seconds < 1271560901 0 :Tritonio_GR!unknown@unknown.invalid QUIT :Read error: Connection reset by peer < 1271561027 0 :diofeher!~chatzilla@187.64.54.43 JOIN :#esoteric < 1271561085 0 :alise_!unknown@unknown.invalid PRIVMSG #esoteric :Hi diofeher; you new? < 1271561166 0 :diofeher!unknown@unknown.invalid PRIVMSG #esoteric :hi alise_ < 1271561168 0 :diofeher!unknown@unknown.invalid PRIVMSG #esoteric :yes, i'm now < 1271561170 0 :diofeher!unknown@unknown.invalid PRIVMSG #esoteric :new* < 1271561183 0 :diofeher!unknown@unknown.invalid PRIVMSG #esoteric :i'm doing a brainfuck programming... to show my love to my girlfriend < 1271561185 0 :diofeher!unknown@unknown.invalid PRIVMSG #esoteric :haha < 1271561194 0 :diofeher!unknown@unknown.invalid PRIVMSG #esoteric :alise_: http://gist.github.com/369963 < 1271561219 0 :alise_!unknown@unknown.invalid PRIVMSG #esoteric :o-kay < 1271561246 0 :diofeher!unknown@unknown.invalid PRIVMSG #esoteric :alise_: what are you programming here? < 1271561257 0 :alise_!unknown@unknown.invalid PRIVMSG #esoteric :magic unicorn babies < 1271561356 0 :diofeher!unknown@unknown.invalid PRIVMSG #esoteric :alise_: hahaha < 1271561361 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :Flash games, or iPhone games? < 1271561365 0 :diofeher!unknown@unknown.invalid PRIVMSG #esoteric :what do you all talk here? < 1271561392 0 :alise_!unknown@unknown.invalid PRIVMSG #esoteric :diofeher: magic < 1271561396 0 :alise_!unknown@unknown.invalid PRIVMSG #esoteric :& also flower-picking < 1271561401 0 :alise_!unknown@unknown.invalid PRIVMSG #esoteric :these are two things very important to us < 1271561424 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :Esoteric languages is the official topic. There's ususally talk of advanced computer science and math topics < 1271561465 0 :diofeher!unknown@unknown.invalid PRIVMSG #esoteric :understood alise :P < 1271561477 0 :diofeher!unknown@unknown.invalid PRIVMSG #esoteric :nice Sgeo_ ... advanced computer science seems nice to me < 1271561605 0 :alise_!unknown@unknown.invalid PRIVMSG #esoteric :mostly though it's just me being annoying < 1271562637 0 :Mathnerd314!unknown@unknown.invalid QUIT :Ping timeout: 240 seconds < 1271562944 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :Someone suggested I make a Befunge wallpaper < 1271562947 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :live wallpaper < 1271563145 0 :alise_!unknown@unknown.invalid QUIT :Ping timeout: 258 seconds < 1271563466 0 :ze_german!unknown@unknown.invalid QUIT :Ping timeout: 246 seconds < 1271563636 0 :augur!unknown@unknown.invalid QUIT :Remote host closed the connection < 1271563654 0 :augur!~augur@c-68-54-80-152.hsd1.md.comcast.net JOIN :#esoteric < 1271564145 0 :calamari!~calamari@ip70-162-184-104.ph.ph.cox.net JOIN :#esoteric < 1271564456 0 :Mathnerd314!~mathnerd3@dsl.6.28.53.206.cos.dyn.pcisys.net JOIN :#esoteric < 1271564643 0 :alise_!~alise@212.183.140.55 JOIN :#esoteric < 1271565173 0 :diofeher!unknown@unknown.invalid QUIT :Quit: ChatZilla 0.9.86 [Firefox 3.5.9/20100401213457] < 1271565328 0 :alise_!unknown@unknown.invalid QUIT :Remote host closed the connection < 1271566227 0 :augur!unknown@unknown.invalid QUIT :Remote host closed the connection < 1271566245 0 :augur!~augur@c-68-54-80-152.hsd1.md.comcast.net JOIN :#esoteric < 1271566328 0 :MizardX!unknown@unknown.invalid QUIT :Ping timeout: 276 seconds < 1271567318 0 :comex!unknown@unknown.invalid QUIT :Quit: leaving < 1271567325 0 :comex!comex@c-98-210-192-54.hsd1.ca.comcast.net JOIN :#esoteric < 1271568295 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :"This free download includes the tutorial and 15 puzzles. To unlock all the puzzles and online features you can use the In-App-Purchase store within the game." < 1271568305 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :[The Robozzle iPhone app] < 1271568309 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :Is that some sort of sick joke? < 1271568349 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :no < 1271568358 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :http://www.gamefaqs.com/mobile/iphone/home/994970.html < 1271568360 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :welcome to Apple world < 1271568451 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :Suddenly, the variety of apps available on iPhone is a bit less of an incentive < 1271568538 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :I mean, it would make sense if the puzzles weren't all available for free online anyway... < 1271568552 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :Also, he claims that there is a solution store, and I don't see how that's even physically possible < 1271568563 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: ping? < 1271568739 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :Between that, and the fact that it's not implied anywhere else that most of the puzzles aren't free.. < 1271568770 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :at least you didn't pay for the app to find out that the puzzles cost more < 1271568796 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :ACTION might end up making his own Robozzle for Android, rather than rely on someone else who may end up charging for access to most of the puzzles < 1271568922 0 :augur!unknown@unknown.invalid QUIT :Ping timeout: 265 seconds < 1271569034 0 :coppro!unknown@unknown.invalid QUIT :Remote host closed the connection < 1271569160 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :http://robozzle.com/forums/thread.aspx?id=1917 me complaining loudly < 1271569561 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :after seeing some complex interactions between enemies in supertux, it made mew wonder about creating some kind of platform game esolang < 1271569844 0 :calamari!unknown@unknown.invalid QUIT :Quit: Leaving < 1271569911 0 :coppro!~coppro@unaffiliated/coppro JOIN :#esoteric < 1271570500 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :ACTION wonders if the RoboZZle iPhone app might be against the TOS < 1271570508 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :It does, after all, interpret a language < 1271570825 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :RoboZZle is TC, right? < 1271570870 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :Given the paint commands, yes < 1271570883 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :Another esotericer implemented Langton's Ant, which I think means TC < 1271570903 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :[given obvious memory issues ofc] < 1271570935 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :hmm... actually, it's pretty trivial to show that it is < 1271570953 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :if you have infinite program space and playing field, of course < 1271571019 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :each column is a slot on the tape; the programming language is sufficiently powerful to distinguish between every case of a column and act accordingly < 1271571876 0 :coppro!unknown@unknown.invalid QUIT :Remote host closed the connection < 1271572515 0 :Oranjer!unknown@unknown.invalid PART #esoteric :? < 1271572624 0 :coppro!~coppro@unaffiliated/coppro JOIN :#esoteric < 1271573641 0 :augur!~augur@216-164-33-76.c3-0.slvr-ubr1.lnh-slvr.md.cable.rcn.com JOIN :#esoteric < 1271573777 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :hayo < 1271574678 0 :Rugxulo!~rugxulo@adsl-065-013-115-246.sip.mob.bellsouth.net JOIN :#esoteric < 1271574718 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric : I've always considered it [frame pointer] as more a tool for humans and don't understand why compilers use it by default < 1271574723 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :I don't think x86-64 does use it by default < 1271574750 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :but normally they avoid it on IA32 because it makes debugging impossible (plus using ESP reg instead uses more output byte space) < 1271574767 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric : -O3 -march=k8 -msse3 -fwhole-program < 1271574775 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :newer GCCs support "k8-sse3" target < 1271574783 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :x86-64 doesn't, true < 1271574792 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :however, I've seen programs slow down a lot with -O3, so your mileage may vary < 1271574807 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :(even -march doesn't always help) < 1271574825 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :personally, I'd suggest "-mtune=generic", but that's just my opinion ... < 1271574894 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric : comex: gdb is worse than useless. usually :P < 1271574905 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :at one time there was somebody writing their own debugger for *BSD, not sure how far they've come < 1271574939 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric : admittedly, my assembly was nonoptimal (it used two 'xchg' around each putchar) but that shouldn't make a huge difference; however, the code just slowed down a lot < 1271574949 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :XCHG has been slow since at least 586, maybe earlier < 1271574959 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :and it's (still?) always atomic, hence not pairable < 1271574987 0 :Halph!~coppro@unaffiliated/coppro JOIN :#esoteric < 1271574987 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :the only reason to use it nowadays (or ever, really) is for convenience or if you really want to "xchg eax,reg32" in a single byte ;-) < 1271575000 0 :coppro!unknown@unknown.invalid QUIT :Ping timeout: 276 seconds < 1271575001 0 :Halph!unknown@unknown.invalid NICK :coppro < 1271575005 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :Well, slow and slow < 1271575011 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :It's faster than a multiplication :-P < 1271575017 0 :Quadrescence!unknown@unknown.invalid PRIVMSG #esoteric :Rugxulo: in a single bite you mean right???? < 1271575026 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :no, I mean byte < 1271575036 0 :Quadrescence!unknown@unknown.invalid PRIVMSG #esoteric :no, you mean bite < 1271575040 0 :Quadrescence!unknown@unknown.invalid PRIVMSG #esoteric :like pizza rolls < 1271575065 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :I think its speed is mostly equivalent to the three movs it'd take otherwise < 1271575069 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :00000100 91 xchg eax,ecx < 1271575075 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :opcode = 91h < 1271575077 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :one byte < 1271575087 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :(sorry, 00000100 was the start address) < 1271575103 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, no < 1271575116 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :push/pop are pairable on original Pentium, xchg is not < 1271575126 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :Well yes, if you do push/pop < 1271575127 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :mov is also pairable (being pretty much the most common instruction) < 1271575144 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :But don't the movs depend on each other < 1271575151 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :sometimes, yes < 1271575191 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :newer cpus handle that okay, older ones have an AGI, which is still minuscule < 1271575241 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :push eax ; push ebx ; pop ebx ; pop eax = 1 + 1 cycles on 586, unlike xchg (3 or such, can't remember exactly) < 1271575253 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :it's really all these newer cpus that suck so bad that slow down old well-used optimizations :-( < 1271575263 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :P4, especially < 1271575271 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :though AMD64 ain't immune < 1271575272 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :Forget about P4 :-P < 1271575339 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :no way, there's too many still out there < 1271575350 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :(I'm on one now, my other is sitting a few feet away disconnected) < 1271575354 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :(also my aunts have two!) < 1271575386 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :GCC is much better targeting P4 than 586 :-/ < 1271575386 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :According to Agner push tends to have a higher latency than xchg < 1271575402 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :on P4? < 1271575412 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :Core 2 and i7 < 1271575417 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :dunno about those < 1271575432 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :but I always read it was atomic, which meant it stalled everything < 1271575435 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :Not on P4, apparently < 1271575441 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :implied "lock" or whatever < 1271575472 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :I think it's only really slow if you swap with memory < 1271575480 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :But if you between two registers it's not that bad < 1271575487 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :+xchg < 1271575546 0 :augur!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant: is that the sequence to xkcd? < 1271575564 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :>_< < 1271575688 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric : *** is almost always really bad practice. < 1271575697 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :so is "goto" (in theory) but in practice everybody uses it < 1271575705 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :cdecl ftw! ;-) < 1271575714 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :ACTION admits to not knowing or liking much, though < 1271575721 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :s/liking/& C/ < 1271576053 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :N.B. (fizzie) [ DR-DOS 7.03 ] P166 no MMX> runtime ff3 benchmk2.bef < 1271576054 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :2147483596 44.34 seconds elapsed < 1271576080 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :note that this is the one that does ">v<^" instead of wrapping around to x=0 again < 1271576100 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :gcc-3.4.4 -s -O2 -march=i586 -fomit-frame-pointer < 1271576145 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :Thailand went through a bloodless coup while the President was out in the United States to address the United Nations. What do you think? < 1271576155 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :isn't he also a born U.S. citizen?? < 1271576168 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :(oops, quoting alise) < 1271576236 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :huh, Conan moving to TBS, who knew? < 1271576291 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric : Rugxulo: I think that's a bit wrong; the Funge-98 specification says "Befunge-93 defines signed 32-bit stack cells and unsigned 8-bit Funge-Space cells." < 1271576310 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :I'm pretty sure B93 was always intended to only be 7-bit ASCII, e.g. no support of other stuff < 1271576339 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :some very rare programs may try storing data in the fungespace instead of the stack, but that's not common < 1271576357 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :I think it was B98 that officially was 8-bit clean < 1271576386 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :hence, signed char (7-bit) vs. unsigned char (8-bit) < 1271576406 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :With access to only two stack cells, it seems like it should be very common; maybe the programs just don't do much :-P < 1271576435 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :there really aren't that many examples out there, probably < 200 < 1271576451 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :(okay, so that's a bit presumptuous, how the hell do I know??? but still, you get the idea ...) < 1271576469 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :anyways, 1993 was well before Unicode was popular < 1271576469 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :Yeah, I know < 1271576516 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :"UTF-8 was first officially presented at the USENIX conference in San Diego, from January 25?29, 1993." -- Wikipedia < 1271576526 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :s/?/-/ < 1271576542 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :s/-/–/ < 1271576546 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :(Wikipedia is also UTF-8 now ... what was it before??) < 1271576664 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :ISO-8859-1 if the Wayback Machine is to be believed < 1271577061 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :guess I'll scram for now ... < 1271577064 0 :Rugxulo!unknown@unknown.invalid QUIT :Quit: Rugxulo < 1271577599 0 :clog!unknown@unknown.invalid QUIT :ended < 1271577600 0 :clog!unknown@unknown.invalid JOIN :#esoteric < 1271577656 0 :Gracenotes!unknown@unknown.invalid QUIT :Remote host closed the connection < 1271578879 0 :sebbu!unknown@unknown.invalid QUIT :Ping timeout: 246 seconds < 1271579006 0 :aschueler!unknown@unknown.invalid QUIT :Read error: Operation timed out < 1271579011 0 :aschueler!~alec@host86-167-40-196.range86-167.btcentralplus.com JOIN :#esoteric < 1271579130 0 :HackEgo!unknown@unknown.invalid QUIT :Ping timeout: 240 seconds < 1271579134 0 :HackEgo!~HackEgo@codu.xen.prgmr.com JOIN :#esoteric < 1271579170 0 :EgoBot!unknown@unknown.invalid QUIT :Ping timeout: 240 seconds < 1271579174 0 :EgoBot!~EgoBot@codu.xen.prgmr.com JOIN :#esoteric < 1271579617 0 :Gracenotes!~person@wikipedia/Gracenotes JOIN :#esoteric < 1271580827 0 :iamcal!~cal@c-69-181-46-213.hsd1.ca.comcast.net JOIN :#esoteric < 1271580934 0 :lament!~lament@S0106002312fa554a.vc.shawcable.net JOIN :#esoteric < 1271580984 0 :olsner_!~salparot@c83-252-161-133.bredband.comhem.se JOIN :#esoteric < 1271581025 0 :cal153!unknown@unknown.invalid QUIT :*.net *.split < 1271581025 0 :olsner!unknown@unknown.invalid QUIT :*.net *.split < 1271581619 0 :augur!unknown@unknown.invalid QUIT :Remote host closed the connection < 1271581626 0 :augur!~augur@216-164-33-76.c3-0.slvr-ubr1.lnh-slvr.md.cable.rcn.com JOIN :#esoteric < 1271581966 0 :sebbu!~sebbu@ADijon-152-1-85-216.w81-49.abo.wanadoo.fr JOIN :#esoteric < 1271582436 0 :MigoMipo!~MigoMipo@84-217-7-111.tn.glocalnet.net JOIN :#esoteric < 1271584959 0 :mre!~Agent@203-109-172-110.dial.dyn.ihug.co.nz JOIN :#esoteric < 1271585010 0 :mre!unknown@unknown.invalid QUIT :Quit: I'll be back < 1271585266 0 :lament!unknown@unknown.invalid QUIT :Quit: lament < 1271585812 0 :tombom!tombom@wikipedia/Tombomp JOIN :#esoteric < 1271586260 0 :kar8nga!~kar8nga@jol13-1-82-66-176-74.fbx.proxad.net JOIN :#esoteric < 1271587313 0 :FireFly!~firefly@unaffiliated/firefly JOIN :#esoteric < 1271587447 0 :sebbu!unknown@unknown.invalid QUIT :Ping timeout: 240 seconds < 1271587573 0 :BeholdMyGlory!~behold@unaffiliated/beholdmyglory JOIN :#esoteric < 1271589846 0 :Asztal!~asztal@host86-158-80-62.range86-158.btcentralplus.com JOIN :#esoteric < 1271590182 0 :sebbu!~sebbu@ADijon-152-1-85-216.w81-49.abo.wanadoo.fr JOIN :#esoteric < 1271590993 0 :oerjan!~oerjan@hagbart.nvg.ntnu.no JOIN :#esoteric < 1271592351 0 :ze_german!~fpoo@dslb-088-078-164-249.pools.arcor-ip.net JOIN :#esoteric < 1271593551 0 :Tritonio_GR!~Tritonio@150.140.231.13 JOIN :#esoteric < 1271594574 0 :MizardX!~MizardX@unaffiliated/mizardx JOIN :#esoteric < 1271595179 0 :diofeher!~chatzilla@187.64.44.59 JOIN :#esoteric < 1271595350 0 :diofeher!unknown@unknown.invalid PRIVMSG #esoteric :hey guys, brainfuck is compiled or interpreted?/ < 1271595431 0 :olsner_!unknown@unknown.invalid PRIVMSG #esoteric :diofeher: yes :) < 1271595470 0 :olsner_!unknown@unknown.invalid PRIVMSG #esoteric :or, more explicitly: either, depending on whether you use a brainfuck compiler or a brainfuck interpreter to run it < 1271595481 0 :olsner_!unknown@unknown.invalid PRIVMSG #esoteric :and both do exist < 1271595677 0 :diofeher!unknown@unknown.invalid PRIVMSG #esoteric :yes, it I was thinking olsner_ < 1271595695 0 :diofeher!unknown@unknown.invalid PRIVMSG #esoteric :but it seems very strange to me... do you know another language that can be interpreted and compiled at the same time? < 1271595756 0 :olsner_!unknown@unknown.invalid PRIVMSG #esoteric :almost every language can < 1271595828 0 :diofeher!unknown@unknown.invalid PRIVMSG #esoteric :all depends on compiler...? < 1271596162 0 :olsner_!unknown@unknown.invalid PRIVMSG #esoteric :actually, I'm pretty sure that *every* language can be both (unless it's a language that can't be either - e.g. because it's impossible to implement on a computer)... it just depends on what people like to build for it (interpreters or compilers), how easy it is to implement the compiler, and how important it is to have programs in the language run fast < 1271596196 0 :olsner_!unknown@unknown.invalid PRIVMSG #esoteric :i.e. not a property of the language itself, but rather a matter of what has been implemented < 1271596418 0 :diofeher!unknown@unknown.invalid PRIVMSG #esoteric :olsner_: oh, nice explanation... thanks :) < 1271596431 0 :diofeher!unknown@unknown.invalid PRIVMSG #esoteric :a new world opened in my mind when I discovered these languages < 1271596449 0 :diofeher!unknown@unknown.invalid PRIVMSG #esoteric :i never heard about turing machine before them < 1271596501 0 :olsner_!unknown@unknown.invalid PRIVMSG #esoteric :prepare to have your mind blown a few times then :) < 1271596507 0 :diofeher!unknown@unknown.invalid PRIVMSG #esoteric :hehe < 1271596525 0 :diofeher!unknown@unknown.invalid PRIVMSG #esoteric :olsner_: do you have any material to point me about cool stuff of computer science? < 1271596574 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Forth and Lispy things are some examples that tend to have both compilers and interpreters written for them; even in the sense that people use both. (Things like C interpreters don't have that many users, I don't think, even though they exist.) < 1271596641 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Though, come to think of it, they do commercially sell Ch, that C/C++ interpreter... < 1271596648 0 :olsner_!unknown@unknown.invalid PRIVMSG #esoteric :I've read plenty, but I don't remember where :) browsing around the esolang wiki, and reading all the wikipedia articles on computation, is probably a good start though < 1271596678 0 :olsner_!unknown@unknown.invalid PRIVMSG #esoteric :there's a huge neural-network simulation package based around a C++ interpreter < 1271596714 0 :oerjan!unknown@unknown.invalid QUIT :Quit: leaving < 1271596719 0 :olsner_!unknown@unknown.invalid PRIVMSG #esoteric :(and it doesn't even try to be safe, like many other interpreters, a null dereference in the interpreted code is just a SIGSEGV) < 1271596801 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :I've heard that people use Ch to expedite the compile/run/debug cycle. < 1271596943 0 :diofeher!unknown@unknown.invalid PRIVMSG #esoteric :nice < 1271596953 0 :diofeher!unknown@unknown.invalid PRIVMSG #esoteric :thanks olsner_ < 1271597004 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Can't quite think of a compiled language that I'd be sure doesn't have an interpreter. Java's got that Beanshell thing, apparently there are some Fortran interpreters... the other way around seems more common; I'm sure there are several marginal scripting languages no-one has bothered to write a compiler for. < 1271597016 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :Also, the border between interpreters and compilers is very fuzzy. < 1271597055 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :Java is generally JITted, so some of it is compiled and some of it is interpreted (using some definition of "compiled"). Many languages are "compiled" into bytecode, but then that bytecode is "interpreted". < 1271597092 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :Often the compilation into bytecode is transparent, but the process is certainly still there. < 1271597342 0 :diofeher!unknown@unknown.invalid PRIVMSG #esoteric :Gregor: so if my teacher says "java is compiled", i can point and say "you're wrong, java can be interpreted too" < 1271597373 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :I wouldn't recommend it :P < 1271597440 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Me neither; I pointed out an equally nit-picky thing about floating-point once, and it led to wasted 5 minutes of an argument that helped no-one. < 1271597463 0 :pineapple!unknown@unknown.invalid PRIVMSG #esoteric :depends on if the teacher is a dick or not < 1271597471 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :Java, the language, can certainly go either way. Java, the platform, is a compiler for Java and JITting interpreter for JVM bytecode. < 1271597481 0 :diofeher!unknown@unknown.invalid PRIVMSG #esoteric :hahahaha < 1271597554 0 :olsner_!unknown@unknown.invalid PRIVMSG #esoteric :if you really want to, you can ask another student to point it out, then it's not your fault for holding up the class and you can still get to hear the argument < 1271597558 0 :diofeher!unknown@unknown.invalid PRIVMSG #esoteric :any of these esoteric languages have implentation in JVM? I saw that LOLCode and Brainfuck have implementations in .NET < 1271597576 0 :diofeher!unknown@unknown.invalid PRIVMSG #esoteric :olsner_: haha nice idea < 1271597579 0 :pineapple!unknown@unknown.invalid PRIVMSG #esoteric :brainfuck can be done in any c-like < 1271597579 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :I guarantee there's an implementation of Brainfuck in Java somewhere. < 1271597606 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :Brainfuck can be done in any TC language with I/O, if you're willing to put the effort into it :P < 1271597707 0 :diofeher!unknown@unknown.invalid PRIVMSG #esoteric :hehe < 1271597713 0 :diofeher!unknown@unknown.invalid PRIVMSG #esoteric :Gregor: TC? < 1271597726 0 :pineapple!unknown@unknown.invalid PRIVMSG #esoteric :turing complete < 1271597729 0 :diofeher!unknown@unknown.invalid PRIVMSG #esoteric :ah ok < 1271597731 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :`google site:esolangs.org "turing complete" < 1271597742 0 :HackEgo!unknown@unknown.invalid PRIVMSG #esoteric :Nov 11, 2009 ... A programming language is said to be Turing-complete if it is in the same computational class as a Turing machine; that is to say, ... \ esolangs.org/wiki/Turing-complete - [13]Cached < 1271597756 0 :diofeher!unknown@unknown.invalid PRIVMSG #esoteric :oh, nice bot < 1271597768 0 :pineapple!unknown@unknown.invalid PRIVMSG #esoteric :`beer < 1271597769 0 :HackEgo!unknown@unknown.invalid PRIVMSG #esoteric :No output. < 1271597772 0 :pineapple!unknown@unknown.invalid PRIVMSG #esoteric :damn < 1271597790 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :pineapple: It's a writable Unix filesystem, make your own beer command. < 1271597791 0 :diofeher!unknown@unknown.invalid PRIVMSG #esoteric :talking about beer, do you all have heard about beerware? < 1271597800 0 :pineapple!unknown@unknown.invalid PRIVMSG #esoteric :yes < 1271597808 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :diofeher: I don't believe it to be a legally enforceable system of licensing :P < 1271597811 0 :pineapple!unknown@unknown.invalid PRIVMSG #esoteric :Gregor: :-P < 1271597919 0 :diofeher!unknown@unknown.invalid PRIVMSG #esoteric :should be! < 1271597948 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :I seem to have here a compiler from False to JVM bytecode, though I have no idea how complete it is; I also have no recollection of writing it, but it's got my name in the sources, so... < 1271597980 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Sorry, FALSE is I guess the official name. < 1271597994 0 :pineapple!unknown@unknown.invalid PRIVMSG #esoteric :`google site:esolangs.org false < 1271597994 0 :tombom_!tombom@wikipedia/Tombomp JOIN :#esoteric < 1271597995 0 :HackEgo!unknown@unknown.invalid PRIVMSG #esoteric :Sep 2, 2009 ... FALSE (named after the author's favourite truth value) is an early Forth-like esoteric programming language invented by Wouter van ... \ esolangs.org/wiki/False - [13]Cached < 1271598011 0 :pineapple!unknown@unknown.invalid PRIVMSG #esoteric :yeah, thought that was the one that aardappel wrote < 1271598051 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :It doesn't support the backtick: ` compile short as 68000 machine instruction in the original Amiga FALSE implementation < 1271598090 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :lawl < 1271598101 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :Surely there's a 68000 simulator in Java :P < 1271598181 0 :tombom!unknown@unknown.invalid QUIT :Ping timeout: 246 seconds < 1271598264 0 :diofeher!unknown@unknown.invalid PRIVMSG #esoteric :`google site:esolangs.org amiga < 1271598267 0 :HackEgo!unknown@unknown.invalid PRIVMSG #esoteric :Nov 7, 2008 ... He is the author of XPK compression package for the Amiga, and the Amiga version of CSH (the Unix C Shell). He now works for search.ch, ... \ esolangs.org/wiki/Urban_Müller - [13]Cached < 1271598294 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :[sensible code] else if (pendingFuncs.size() >= 1) throw new Exception("funky hunky"); else throw new Exception("dinky tonky"); -- yes, I'm afraid this might be still a bit incomplete. < 1271598361 0 :pineapple!unknown@unknown.invalid PRIVMSG #esoteric :heh < 1271598395 0 :olsner_!unknown@unknown.invalid PRIVMSG #esoteric :"in this case, the program shall terminate with the message 'dinky tonky'" < 1271598397 0 :diofeher!unknown@unknown.invalid PRIVMSG #esoteric :hehe < 1271598414 0 :olsner_!unknown@unknown.invalid PRIVMSG #esoteric :(I mean, it *could* be a legitimate language feature :P) < 1271598431 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :Depends on your definition of "legitimate" < 1271598614 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :There's an annoying safety feature in the JVM in that all code paths need to have a deterministic stack effect, and if you can reach a particular instruction through several different paths, the verifier checks that the stack changes from start of the function for all paths must be the same. Makes it more difficult to use the underlying JVM stack as the stack for the language you're compiling. < 1271598623 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :(Of course it's mostly a problem for stack-oriented languages only; and sure, you can always just use an int[] as the language's stack or something, but that's so inelegant.) < 1271598740 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Speaking of bots, I guess I'm going to have to do the annoying advertisement bit I do for all newcomers. < 1271598742 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :^source < 1271598742 0 :fungot!unknown@unknown.invalid PRIVMSG #esoteric :http://git.zem.fi/fungot/blob/HEAD:/fungot.b98 < 1271598758 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :That there's a useful use of an esolang. For some values of useful. < 1271598863 0 :diofeher!unknown@unknown.invalid PRIVMSG #esoteric :omg, what is this language? < 1271598886 0 :pineapple!unknown@unknown.invalid PRIVMSG #esoteric :befunge-98 < 1271598896 0 :pineapple!unknown@unknown.invalid PRIVMSG #esoteric :judging by the file extension < 1271598923 0 :olsner_!unknown@unknown.invalid PRIVMSG #esoteric :fizzie: is that the source of the bot? awesome < 1271598936 0 :olsner_!unknown@unknown.invalid PRIVMSG #esoteric :I should learn me a funge < 1271598976 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :olsner_: Yes. (Though it's not completely trivial to run, it needs a loader file, and the babble-thing needs some fiddling.) < 1271598986 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :fungot: Say something clever now. < 1271598987 0 :fungot!unknown@unknown.invalid PRIVMSG #esoteric :fizzie: who was it < 1271598992 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :fungot: That wasn't clever. < 1271598992 0 :fungot!unknown@unknown.invalid PRIVMSG #esoteric :fizzie: those people like to call the functions foo, bar, baz; worries < 1271599030 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :That wasn't very clever either; I give up. < 1271599147 0 :diofeher!unknown@unknown.invalid PRIVMSG #esoteric :haaha < 1271599154 0 :diofeher!unknown@unknown.invalid PRIVMSG #esoteric :fungot: hi dude < 1271599155 0 :fungot!unknown@unknown.invalid PRIVMSG #esoteric :diofeher: georgia, of course. but no sure how. if the garbage collector, for example < 1271599353 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :There's some other speaking styles if the default is boring. < 1271599355 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :^style < 1271599355 0 :fungot!unknown@unknown.invalid PRIVMSG #esoteric :Available: agora alice c64 ct darwin discworld europarl ff7 fisher ic irc* jargon lovecraft nethack pa speeches ss wp youtube < 1271599363 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :And also a couple of sub-interpreters in there. < 1271599368 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :^bf .[,.]!hello < 1271599400 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :^bf ,[.,]!hello, I mean to say < 1271599400 0 :fungot!unknown@unknown.invalid PRIVMSG #esoteric :hello, I mean to say < 1271599476 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :I always manage to swap those two, since befunge's , is the output-character thing. < 1271599481 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :^ul (and underload)S < 1271599481 0 :fungot!unknown@unknown.invalid PRIVMSG #esoteric :and underload < 1271600190 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :!bf_txtgen Hewwo < 1271600201 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :74 ++++++++++++[>++++++>++++++++>++++++++++>+<<<<-]>.>+++++.>-..--------.>--. [415] < 1271600212 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :^bf ++++++++++++[>++++++>++++++++>++++++++++>+<<<<-]>.>+++++.>-..--------.>--. < 1271600212 0 :fungot!unknown@unknown.invalid PRIVMSG #esoteric :Hewwo. < 1271601909 0 :diofeher!unknown@unknown.invalid PRIVMSG #esoteric :!bf_txtgen hi pretty girl < 1271601912 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :136 +++++++++++++++[>+++++++>++>+++++++>+++++++<<<<-]>-.+.>++.>+++++++.++.>----.<++..+++++.<.>>++.++.<-------.<<+++.>----------------------. [160] < 1271601955 0 :diofeher!unknown@unknown.invalid PRIVMSG #esoteric :nice bot :-) < 1271605176 0 :alise!~alise@212.183.140.16 JOIN :#esoteric < 1271605252 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :abcdefg < 1271605328 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :05:09:22 actually, I'm pretty sure that *every* language can be both (unless it's a language that can't be either - e.g. because it's impossible to implement on a computer)... it just depends on what people like to build for it (interpreters or compilers), how easy it is to implement the compiler, and how important it is to have programs in the language run fast < 1271605333 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :self-modifying is pretty hard to "compile" < 1271605419 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :05:40:11 yeah, thought that was the one that aardappel wrote < 1271605420 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :THE one? < 1271605427 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Ho ho ho ho ho ho ho < 1271605439 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :http://strlen.com/proglang/index.html < 1271605450 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :He has probably created more languages than any other human being. < 1271605463 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :http://strlen.com/aardappel/index.html is his most esoteric non-FALSE one, probably. < 1271605472 0 :olsner_!unknown@unknown.invalid PRIVMSG #esoteric :self-modifying is only hard because people don't try hard enough! < 1271605522 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :I'm looking forward to your Befunge-98 compiler. No JITting. < 1271605531 0 :olsner_!unknown@unknown.invalid PRIVMSG #esoteric :but yes, you may need quite complicated analysis to undo the self-modification at compile-time, or you have to "compile" the code to its interpreter < 1271605542 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :It /could/ be done... but the code would be very slow, and probably hyperexponentially big relative to the code size. < 1271605552 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :The latter isn't really compiling < 1271605623 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :[["Desperate, Marooned Astronaut Tries To Use Every Item With Every Other Item"]] < 1271605941 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Anything with a real eval()-type of thing is also hard to compile, at least if you consider including the compiler in the output. < 1271606292 0 :olsner_!unknown@unknown.invalid PRIVMSG #esoteric :maybe if you were able to do dataflow analysis to figure out which self-modifications are possible < 1271606369 0 :olsner_!unknown@unknown.invalid PRIVMSG #esoteric :but if the range of self-modifications is not bounded or you can't solve the halting problem, you'll probably have to include an interpreter anyway < 1271606474 0 :olsner_!unknown@unknown.invalid PRIVMSG #esoteric :or just make the compiled code generic enough :) < 1271606520 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Don't suppose anyone wants to help me figure out how to do linear loop optimisation in my interp? :P < 1271606542 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :olsner_: with befunge you can do it by modifying the code as it runs < 1271606545 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :to contain whatever instruction there is < 1271606548 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :threaded code style < 1271606896 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :it's annoying that my architecture doesn't really support it well < 1271607418 0 :adam_d!~Adam@cpc2-acto6-0-0-cust48.brnt.cable.ntl.com JOIN :#esoteric < 1271607564 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :I think I got a bit flamey on the RoboZZle forums < 1271607572 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Bah, I hate existing proof assistants. < 1271607578 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Stop avoiding computation! < 1271607590 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Do computation all the time! Put trivial steps in for me! Do some god damn number crunching; you're a COMPUTER! < 1271607602 0 :Mathnerd314_!~mathnerd3@dsl.6.28.53.206.cos.dyn.pcisys.net JOIN :#esoteric < 1271607605 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :Someone in android-dev suggested a Live Wallpaper of Befunge < 1271607643 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Game of Life would be prettier. :p < 1271607646 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Ooh. < 1271607650 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :A befunge GOL that works on its own playfield. < 1271607690 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :Already exists. < 1271607765 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :My dad doesn't want me using it on the bus, he's afraid someone will steal it < 1271607778 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :I don't _think_ that's likely on the busses I take, but still < 1271607781 0 :Mathnerd314!unknown@unknown.invalid QUIT :Ping timeout: 265 seconds < 1271607795 0 :Mathnerd314_!unknown@unknown.invalid NICK :Mathnerd314 < 1271607821 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Not using a mobile thing while mobile sounds somehow point-missingy. < 1271607880 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :And I can't use it while going to my step-mother's apartment < 1271607897 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :Although one of the use-cases is when I got lost trying to get there < 1271607917 0 :diofeher!unknown@unknown.invalid NICK :diofeher__away < 1271607939 0 :olsner_!unknown@unknown.invalid PRIVMSG #esoteric :alise: does "linear loop optimisation" refer to a common optimisation or is it something BF-specific? < 1271607977 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Sgeo_: You know, you /are/ 20. < 1271607994 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :olsner_: basically a loop is linear if it has the same number of s, and all loops within it are linear < 1271608009 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :we can optimise /all/ of these into a constant time operation, well; apart from the ones that do input, dunno about output < 1271608047 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :because they all reduce to a sequence of "tape[tape_pointer + n] (+= or =) m;" where m can involve other tape[tape_pointer + n] cells of the tape, and also constants < 1271608070 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :http://mozaika.com.au/oleg/brainf/bff4.c the bits in #ifdef LNR do the optimisation in this (currently champion interpreter) < 1271608071 0 :olsner_!unknown@unknown.invalid PRIVMSG #esoteric :right, essentially that condition means that the loop returns to the same cell pointer as it was before the loop, after doing some transformation on a set of cells? < 1271608080 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :esotope-bfc also does it: http://code.google.com/p/esotope-bfc/ < 1271608081 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :olsner_: yes < 1271608213 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :bff4's code is not the clearest and esotope-bfc does much more advanced optimisations at the same time < 1271608217 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :so unfortunately there is no real source for this stuff < 1271608229 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :though http://lifthrasiir.jottit.com/esotope-bfc_comparison has a small bit of info < 1271608281 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :olsner_: mainly the issue with doing it with my interp is that I parse directly into the flat program array as I get input, so I can't do the optimisation after, for the result will be smaller than the previous loop < 1271608285 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :and so i have blank cells < 1271608298 0 :olsner_!unknown@unknown.invalid PRIVMSG #esoteric :bff4 seems to have very simple code for detecting the linear loop, although it's not clear at all what o[i].linear means < 1271608300 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :but i can't do it while parsing because my parser isn't clever enough for that sort of thing, I don't think < 1271608300 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :not sure < 1271608309 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :I think o[i].linear is set when it decides it's linear < 1271608316 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :*I think < 1271608326 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :" Today, I bought an app on my iPod touch that was $900 because I thought it was just a joke. Turns out it wasn't." < 1271608328 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :WTF? < 1271608345 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :Turns out you're an idiot. :-P < 1271608411 0 :olsner_!unknown@unknown.invalid PRIVMSG #esoteric :you also need to know the meaning of the "igo", "shift" and "off" fields < 1271608509 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :olsner_: yes, which i don't < 1271608517 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :i think the previous code does stuff to help linear loop optimisation < 1271608714 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :olsner_: I think parse() is my best bet for where to put the optimisation - but I'm not sure the way it's coded can handle it < 1271608718 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :http://pastie.org/925772.txt < 1271608723 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :because the recursive parser appends directly to the main instruction array as it goes along < 1271608790 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :hmm... I think with a fixed tape size, I could perfectly optimise BF < 1271608822 0 :olsner_!unknown@unknown.invalid PRIVMSG #esoteric :you could augment you internal instruction set to allow for "holes" where you've optimized away some stuff < 1271608832 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :to wit: detect infinite loops - possible because memory is small and bounded - and replace them with infinite loop instructions; run the rest of the program up to IO, embed the input/output instructions based on the transformations done to the tape < 1271608873 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :yes, but that means the interpreter would have to skip over dem holes < 1271608877 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :which would be slow < 1271608878 0 :olsner_!unknown@unknown.invalid PRIVMSG #esoteric :is that even turing complete? < 1271608886 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :bf with fixed tape size? < 1271608889 0 :olsner_!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1271608890 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :and fixed cell size? < 1271608891 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :of course not < 1271608895 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :I'm adding tape-growing later < 1271608912 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :I'd rather it somehow efficiently pooped the program into a separate buffer, and kept track of the running total of cell-moves < 1271608921 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :and if it's linear, spit out a linear instruction at the end, not a loop < 1271608928 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :("poop" is a technical term) < 1271609024 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :just not sure how to do that without a lot of mallocing < 1271609038 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :ok, *d in op in bff4 is what contains the actual tape modifications < 1271609051 0 :olsner_!unknown@unknown.invalid PRIVMSG #esoteric :looks like it should be pretty straight-forward to iterate a loop to see if it's linear, provided you can buffer the whole loop body < 1271609051 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :hmm < 1271609057 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :it seems that every instruction is treat as the same "type" in bff4 < 1271609062 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :well, mostly < 1271609063 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :like < 1271609073 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :> is "as if" just tapepointer+=1 < 1271609077 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :but it could also be < 1271609082 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :tapepointer+=1, tape[tapepointer-4]=5 < 1271609085 0 :olsner_!unknown@unknown.invalid PRIVMSG #esoteric :add delta, move cell-pointer, move ip by offset? < 1271609143 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :I'm not sure < 1271609148 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :http://mozaika.com.au/oleg/brainf/bff4.c consume() is the magic, I think < 1271609167 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :like, consume parses bf into one unified instruction set, such that loops literally just become a list of "primitive instructions" and keep track of whether they're linear < 1271609168 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :I think < 1271609175 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :so then we can just run the instructions in a /different manner/ if it's linear < 1271609177 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :but the same instructions < 1271609178 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :maybe? < 1271609179 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :this is just a guess < 1271609186 0 :diofeher__away!unknown@unknown.invalid NICK :diofeher < 1271609238 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :this would seem to clash with my computed goto trick. < 1271609250 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :although i am tempted to try it with bf10, perhaps, and if it's faster that'll make linear loops in, say, bf11 easier < 1271609254 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :I'll give it a go < 1271609268 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :hmm < 1271609270 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :the issue is ordering < 1271609282 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :if you have mov=3, chg=-4, is it >>>---- or ---->>> or something else entirely? < 1271609306 0 :olsner_!unknown@unknown.invalid PRIVMSG #esoteric :depends on your definition :) just do it in the right order < 1271609336 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :right < 1271609343 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :so >->- would turn into, say, two instructions < 1271609349 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :mov=1 chg=-1, mov=1 chg=-1 < 1271609363 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :obviously jumps should be done after this < 1271609368 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :as otherwise we'd have to retroactively modify instructions < 1271609389 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :typedef struct { < 1271609389 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric : int mov; < 1271609390 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric : int chg; < 1271609390 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric : char io; < 1271609390 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric : op *jmp; < 1271609390 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :} op; < 1271609408 0 :olsner_!unknown@unknown.invalid PRIVMSG #esoteric :yeah, since it modifies two cells it'd probably have to be two ops < 1271609413 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :io is 0 if , 1 if . < 1271609422 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :so given mov=i, chg=j, io=0, we have < 1271609429 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :>^i +^j , < 1271609430 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :so given mov=i, chg=j, io=1, we have < 1271609431 0 :olsner_!unknown@unknown.invalid PRIVMSG #esoteric :dunno how common that is, but you could also collapse into an array of mov's with a base offset < 1271609431 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :>^i +^j . < 1271609436 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :and if loop points somewhere, that's the... oh wait < 1271609441 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :we need to distinguish begin and end loops < 1271609451 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric : char loop; < 1271609451 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric : op *jmp; < 1271609454 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :loop = 0 is [ loop = 1 is ] < 1271609528 0 :olsner_!unknown@unknown.invalid PRIVMSG #esoteric :is [ doing the testing (comparing to zero) or is ] doing it? < 1271609530 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :nicely, this means that the condition is < 1271609530 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :if (tape[tp] == loop) < 1271609530 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :olsner_: too advanced operations break it though < 1271609530 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :since this is an interp < 1271609531 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :everything costs < 1271609531 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :hmm... < 1271609532 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :io should be 0 for no io, 1 for input, 2 for output < 1271609533 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :so I can just say if (io) < 1271609534 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :both < 1271609536 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :obviously < 1271609537 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :moar speed < 1271609540 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :(by a long way) < 1271609667 0 :olsner_!unknown@unknown.invalid PRIVMSG #esoteric :I notice you have two booleans in there - you could encode them in the jmp pointer's low bits to reduce the data size < 1271609760 0 :olsner_!unknown@unknown.invalid PRIVMSG #esoteric :except that io had three values, nm < 1271609761 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :yes < 1271609761 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :but i'd rather use megs of memory than have to do more operations < 1271609761 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric : if (ip->loop && ((ip->loop-1 && !tape[tp]) || tape[tp])) { < 1271609761 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric : ip = ip->jmp; < 1271609761 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric : } < 1271609762 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :my eyes, they burn < 1271609771 0 :comex!unknown@unknown.invalid PRIVMSG #esoteric :it would sure be nice if that code was comprehensible < 1271609779 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :comex: bff4? < 1271609780 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :or mine < 1271609781 0 :comex!unknown@unknown.invalid PRIVMSG #esoteric :bff4, I mean < 1271609783 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1271609793 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :it's impressive code but clearly written by a lone genius :-) < 1271609799 0 :olsner_!unknown@unknown.invalid PRIVMSG #esoteric :if you're into brainfuck, readability obviously isn't a big concern < 1271609808 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :lol < 1271609813 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :oh, I have nothing to encode stop < 1271609817 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :never mind, I'll stuff it into loop < 1271609819 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :That !tape[tp] is redundant < 1271609829 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :no i won't < 1271609833 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :i'll stuff it into jmp < 1271609835 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :no i won't < 1271609842 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant: No it isn't? < 1271609846 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Oh, yes it is. < 1271609849 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Er... oops. < 1271609850 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :It should be < 1271609860 0 :olsner_!unknown@unknown.invalid PRIVMSG #esoteric :encode it into jump, catch the SEGV and see if it crashed due to a null pointer, stop normally < 1271609880 0 :comex!unknown@unknown.invalid PRIVMSG #esoteric :except sometimes it's a SIGBUS :p < 1271609881 0 :olsner_!unknown@unknown.invalid PRIVMSG #esoteric :it's pretty exceptional to see the program stop anyway, happens at most once < 1271609890 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant: I'm trying to say if ip->loop: if ip->loop is 2 and not tape tp, jump; if ip->loop is 3 and tape tp, jump. < 1271609892 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Without using ==. < 1271609894 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :For no particular reason. < 1271609906 0 :comex!unknown@unknown.invalid PRIVMSG #esoteric :ACTION doesn't see the point of collapsing linear loops, except for ones that copy one cell into another < 1271609959 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :comex: because instead of looping a lot and doings lots of jumps for a simple task, you perform, say, one assignment; or one increment/decrement, for each cell modified < 1271609963 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :and avoid doing costly pointer movement < 1271609977 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :http://mozaika.com.au/oleg/brainf/ ;; just look how much faster bff4lnr is to bff4 < 1271610014 0 :olsner_!unknown@unknown.invalid PRIVMSG #esoteric :haha, except when compiled with cygwin gcc < 1271610100 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :nobody cares about cygwin :) < 1271610163 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :ACTION considers io as a jump action < 1271610164 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :erm < 1271610167 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :ACTION considers stopping as an io action < 1271610200 0 :olsner_!unknown@unknown.invalid PRIVMSG #esoteric :io is becoming a general trap instruction for native-calls < 1271610207 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :yep! < 1271610217 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :actually it's just because it saves me one more branch most of the time < 1271610244 0 :olsner_!unknown@unknown.invalid PRIVMSG #esoteric :if (io) goto trap[io]; < 1271610253 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :lol < 1271610264 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :I've written interp, that was the easy part; now I need to rewrite parse < 1271610267 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :I bet this ends up slower < 1271610282 0 :olsner_!unknown@unknown.invalid PRIVMSG #esoteric :how significant is parsing time really? < 1271610287 0 :olsner_!unknown@unknown.invalid PRIVMSG #esoteric :for your benchmarks, I mean < 1271610347 0 :olsner_!unknown@unknown.invalid NICK :olsner < 1271610362 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :benchmark, singular < 1271610365 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :well < 1271610370 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :parsing is the least optimised part by far < 1271610373 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :it has many, many branches < 1271610375 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :so dunno < 1271610379 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :probably not that much < 1271610450 0 :olsner!unknown@unknown.invalid PRIVMSG #esoteric :I should complete my compiler-for-sensible-imperative-language and then start working on one of these of my own, it seems like fun < 1271610491 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :it is, optimising interpreters are wonderful < 1271610496 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :optimising compilers are easy since you can take as long as you want < 1271610525 0 :olsner!unknown@unknown.invalid PRIVMSG #esoteric :optimizing compilers are even easier if you can reuse existing awesome optimizers (e.g. LLVM) < 1271610652 0 :BeholdMyGlory!unknown@unknown.invalid QUIT :Remote host closed the connection < 1271610657 0 :olsner!unknown@unknown.invalid PRIVMSG #esoteric :I wonder what I need in terms of abstraction to be able to produce some parser combinator library inside my language < 1271610780 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Monads or at least applicative functors help a lot. < 1271610817 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :$ ./bf10 < 1271610817 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Segmentation fault < 1271610818 0 :olsner!unknown@unknown.invalid PRIVMSG #esoteric :yeah, and that pretty much requires some kind of polymorphism and fancy type-system machinery < 1271610818 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :It is a start. < 1271610838 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Not "fancy". < 1271610850 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Even a simple dependently-typed language can be typechecked in about 100 lines of code. < 1271610862 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Hindley-Milner is actually pretty simple if you don't care about lovely errors and the like. < 1271610877 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :olsner: Besides, you don't need polymorphism to make a monad. < 1271610883 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Just rebind >>= in every monad definition. < 1271610886 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :And have no general monad class. < 1271610889 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :You don't need it for parser combinators. < 1271610901 0 :olsner!unknown@unknown.invalid PRIVMSG #esoteric :true that < 1271610943 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Well, bf10 no longer segfaults; instead, it sits and does nothing. < 1271610969 0 :olsner!unknown@unknown.invalid PRIVMSG #esoteric :I was planning to add some kind of type inference after taking care of the fiddly details of getting something parsing, compiling and running at all < 1271610989 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :A bad idea: it's rather fundamental. < 1271611007 0 :olsner!unknown@unknown.invalid PRIVMSG #esoteric :too bad I don't know how it works then < 1271611013 0 :BeholdMyGlory!~behold@unaffiliated/beholdmyglory JOIN :#esoteric < 1271611023 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Well, look it up. :-) < 1271611047 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :augustss has done a really simple typechecker; but for dependently-typed lambda calculus. < 1271611071 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :I assume you don't want to go down that theoretical road: all programs terminate (and so sub-TC, although only barely), general inferrence isn't always possible, etc. < 1271611127 0 :olsner!unknown@unknown.invalid PRIVMSG #esoteric :no, probably not :) < 1271611251 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :(gdb) print tape < 1271611251 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :$7 = "\fF\000\000/F�", '\0' < 1271611253 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Helpful. < 1271611275 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :I must have my ordering wrong or something. Sigh. < 1271611361 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :ACTION had a dream where the iPad fit in his pocket, which drove me to get an iPad < 1271611363 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Strange... < 1271611430 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Sgeo_: lol < 1271611442 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Is that an iPad in your pockets or are you just happy to see me? < 1271611445 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :*pocket < 1271611465 0 :augur!unknown@unknown.invalid QUIT :Remote host closed the connection < 1271611479 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Grr... this should be working. < 1271611484 0 :comex!unknown@unknown.invalid PRIVMSG #esoteric :no, really < 1271611492 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Really, no? < 1271611517 0 :comex!unknown@unknown.invalid PRIVMSG #esoteric :alise: give me an example of a program other than [->+<] that is usefully optimized by linear stuff < 1271611528 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :ACTION realises that {,} A := A x A -> Bool doesn't work; it could return Bool for more than two pairs. < 1271611542 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :And we can't use exists because it would identify the two pairs and thus give them an ordering of sorts. < 1271611552 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :comex: examine the output of LostKng.b from esotope sometime < 1271611557 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :it has like 90% fewer loops than the original < 1271611592 0 :comex!unknown@unknown.invalid PRIVMSG #esoteric :but, an example < 1271611594 0 :comex!unknown@unknown.invalid PRIVMSG #esoteric :please :p < 1271611612 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :half the loops in every program. < 1271611620 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :i'm a shitty bf coder so i cannot give you one off hand < 1271611625 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :comex: oh, for one, every constant-generating code < 1271611631 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :like from the bf constants page < 1271611635 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :or generating a constant string < 1271611640 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :those are just simple though... < 1271611641 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :there are far more < 1271611650 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :basically anything you'd write in an imperative lang manipulating your variables that /isn't/ a loop < 1271611652 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :becomes a linear loop in bf < 1271611748 0 :comex!unknown@unknown.invalid PRIVMSG #esoteric :hm < 1271611753 0 :comex!unknown@unknown.invalid PRIVMSG #esoteric :that sounds hard to optimize < 1271611757 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :it's not actually < 1271611763 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :check that there are the same number of > and loop && ((ip->loop == 2 && !tape[tp]) || (ip->loop == 1 && tape[tp]))) { < 1271612402 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :This, I am sure, could be improved. < 1271612515 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Oh, heh; I just forgot to use -O3. < 1271612525 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :It is still slower, though. < 1271612661 0 :olsner!unknown@unknown.invalid PRIVMSG #esoteric :hmm, '[' is jump-if-false to (after) the end of the loop while the ']' is jump-if-true to the beginning? < 1271612676 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :to after the beginning < 1271612680 0 :olsner!unknown@unknown.invalid PRIVMSG #esoteric :right < 1271612684 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :one less increment; significant difference in speed actually < 1271612688 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :small but extant < 1271612717 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :ACTION has an idea < 1271612720 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :meh < 1271612722 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :this thing is slower < 1271612728 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :I should just chuck it out and face the linear loop monster < 1271612752 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :now what... < 1271612760 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :I still don't know how I should do linear loops < 1271612779 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Oh, maybe I should allocate, in parse's scope, the output array. < 1271612787 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :But I return the /end/, and I'd need to return the beginning then. < 1271612794 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :And merging it in would be slow.. < 1271612800 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :*slow... < 1271613010 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :olsner: Really I should probably do some microoptimisation to satisfy me before tackling the big stuff ;-) < 1271613091 0 :olsner!unknown@unknown.invalid PRIVMSG #esoteric :how does the assembly look? :) < 1271613111 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :olsner: With gcc? Bad; it decides that all my threaded-loveliness NEXT should get put into one place and jmps to it. With clang? Super-duper-excellent. < 1271613119 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :I don't have clang though so I'm testing with gcc. < 1271613126 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :It's still fast mind. < 1271613546 0 :lament!~lament@S0106002312fa554a.vc.shawcable.net JOIN :#esoteric < 1271613576 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :I've got some falling.. erm, homework to do! < 1271613672 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :Bye all! Homework now < 1271613722 0 :Sgeo_!unknown@unknown.invalid QUIT :Quit: Leaving < 1271613805 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :olsner: I tell you what: you make my BF interp do linear loops, and I'll make the best proof assistant ever. < 1271613806 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Deal! :P < 1271614788 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :ACTION formalises mazes in Coq; decides that he's too lazy to write a solver < 1271616577 0 :adam_d!unknown@unknown.invalid QUIT :Ping timeout: 246 seconds < 1271616605 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :You know... someday soon, we'll start saying "What version of TeX are you using?" "Ï€." < 1271616606 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :When Knuth dies. < 1271616826 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :Knuth can't die; he has a book to finish < 1271617094 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :He'll finish it eventually, though. < 1271617122 0 :coppro!unknown@unknown.invalid QUIT :Quit: I am leaving. You are about to explode. < 1271617209 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :"It’s soooo ugly seeing variable names in formulas written without \text{} or \mbox{}… I think it’s one of the most common mistakes…" < 1271617210 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :FAIL < 1271617260 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Why the fuck don't \alpha et al. work outside math mode? Ugh. < 1271617660 0 :augur!~augur@216-164-33-76.c3-0.slvr-ubr1.lnh-slvr.md.cable.rcn.com JOIN :#esoteric < 1271618372 0 :adam_d!~Adam@cpc2-acto6-0-0-cust48.brnt.cable.ntl.com JOIN :#esoteric < 1271618648 0 :ze_german!~fpoo@dslb-088-078-164-249.pools.arcor-ip.net JOIN :#esoteric < 1271619168 0 :augur!unknown@unknown.invalid QUIT :Remote host closed the connection < 1271619173 0 :augur!~augur@216-164-33-76.c3-0.slvr-ubr1.lnh-slvr.md.cable.rcn.com JOIN :#esoteric < 1271619177 0 :oerjan!~oerjan@hagbart.nvg.ntnu.no JOIN :#esoteric < 1271619188 0 :adam_d!unknown@unknown.invalid QUIT :Ping timeout: 240 seconds < 1271620871 0 :diofeher!unknown@unknown.invalid NICK :diofeher__away < 1271621146 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Inductive classically : Prop -> Prop := < 1271621146 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :| neg : forall P, ~~P -> classically P < 1271621146 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :| foa : forall A, forall P : A -> Prop, (forall x, classically (P x)) -> classically (forall x, P x) < 1271621146 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :| exi : forall A, forall P : A -> Prop, classically (~(forall x, ~ P x)) -> classically (exists x, P x). < 1271621146 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :this is deficient :( < 1271621156 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :because you can't prove e.g. classically (~exists P, P /\ ~P) < 1271621429 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :I fucking hate strictly positive < 1271621441 0 :pineapple!unknown@unknown.invalid PRIVMSG #esoteric :hmm? < 1271621667 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :rule of type theory < 1271621669 0 :Tritonio_GR!unknown@unknown.invalid QUIT :Ping timeout: 276 seconds < 1271621682 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :it's basically a restriction on recursive types to keep the type system sound < 1271621689 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :but it means you can't do some stuff that's innocent... like < 1271621701 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :| foo : forall P, ~(classically P) -> classically (~P) < 1271621712 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :because classically appears as an "input not result", so to speak, of the argument < 1271621716 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :so it can't guarantee that you won't do < 1271621721 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :foo (foo (foo (foo (foo (foo (... < 1271621722 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :or whatever < 1271621927 0 :augur!unknown@unknown.invalid QUIT :Ping timeout: 268 seconds < 1271622660 0 :adam_d!~Adam@cpc2-acto6-0-0-cust48.brnt.cable.ntl.com JOIN :#esoteric < 1271623540 0 :augur!~augur@c-68-54-80-152.hsd1.md.comcast.net JOIN :#esoteric < 1271623686 0 :tombom__!tombom@82.14.61.44 JOIN :#esoteric < 1271623778 0 :tombom!tombom@wikipedia/Tombomp JOIN :#esoteric < 1271623880 0 :augur!unknown@unknown.invalid QUIT :Ping timeout: 245 seconds < 1271623888 0 :tombom_!unknown@unknown.invalid QUIT :Ping timeout: 258 seconds < 1271623955 0 :tombom__!unknown@unknown.invalid QUIT :Ping timeout: 245 seconds < 1271624781 0 :diofeher__away!unknown@unknown.invalid NICK :diofeher < 1271625154 0 :alise!unknown@unknown.invalid QUIT :Ping timeout: 258 seconds < 1271625583 0 :oerjan!unknown@unknown.invalid QUIT :Quit: leaving < 1271626377 0 :oerjan!~oerjan@hagbart.nvg.ntnu.no JOIN :#esoteric < 1271626493 0 :alise!~alise@212.183.140.0 JOIN :#esoteric < 1271626720 0 :Oranjer!~HP_Admini@adsl-34-17-217.cae.bellsouth.net JOIN :#esoteric < 1271626879 0 :Alex3012!unknown@unknown.invalid QUIT :Ping timeout: 245 seconds < 1271628138 0 :adam_d!unknown@unknown.invalid QUIT :Ping timeout: 265 seconds < 1271628900 0 :MigoMipo!unknown@unknown.invalid QUIT :Quit: When two people dream the same dream, it ceases to be an illusion. KVIrc 3.4.2 Shiny http://www.kvirc.net < 1271628958 0 :Tritonio_GR!~Tritonio@150.140.231.13 JOIN :#esoteric < 1271628990 0 :kar8nga!unknown@unknown.invalid QUIT :Remote host closed the connection < 1271629819 0 :coppro!~coppro@unaffiliated/coppro JOIN :#esoteric < 1271630178 0 :coppro!unknown@unknown.invalid QUIT :Ping timeout: 268 seconds < 1271630305 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :magic as viewed through a spying lens < 1271630490 0 :Rugxulo!~rugxulo@adsl-065-013-115-246.sip.mob.bellsouth.net JOIN :#esoteric < 1271630627 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :"Ben also made a true x86 version of False (by translating the 68k code), but I lost the code (silly me)." ... well that's annoying :-/ < 1271630791 0 :diofeher!unknown@unknown.invalid QUIT :Quit: ChatZilla 0.9.86 [Firefox 3.5.9/20100401213457] < 1271630896 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Rugxulo: It's easy enough to implement. Make sure to completely emulate 68k for `! < 1271630927 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :ACTION appears to be determined, now, to create a better theorem prover than the one experts have worked on since the 1980s, Coq. < 1271630939 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Well, you can't accuse me of being unambitious. < 1271631236 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :http://mozaika.com.au/oleg/brainf/ < 1271631244 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Yes. < 1271631250 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :I happen to be attempting to beat that implementation. < 1271631256 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :In fact, I already beat it on the test programs used there. < 1271631262 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :I did "runtime bff4lnr < long.b" after gcc -s -O2 -fomit-frame-pointer -mtune=generic -DLNR < 1271631268 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :11.26 secs. < 1271631291 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :*but* ... bfd long.b && runtime long.com is 4.12 secs. < 1271631299 0 :Asztal!unknown@unknown.invalid QUIT :Ping timeout: 265 seconds < 1271631301 0 :Azstal!~asztal@host86-156-198-111.range86-156.btcentralplus.com JOIN :#esoteric < 1271631306 0 :Azstal!unknown@unknown.invalid NICK :Asztal < 1271631322 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Rugxulo: bfd? < 1271631325 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :http://home.arcor.de/partusch/html_en/bfd.html < 1271631335 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :if it's not written in C it doesn't really count; is it? < 1271631337 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :799-byte compiler (DOS .COM) < 1271631340 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Rugxulo: that's a compiler, duh < 1271631342 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :that doesn't count < 1271631346 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :we're comparing interpreters < 1271631352 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :you have to count how long the compiler takes if you want to be fair < 1271631354 0 :calamari!~calamari@ip70-162-184-104.ph.ph.cox.net JOIN :#esoteric < 1271631364 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :< 1 sec. to compile < 1271631366 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :since bff4 does compiler-esque optimisations at run time < 1271631378 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Rugxulo: shrug - bff4 works on the machines I have; bfd works on none < 1271631390 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :no x86 cpus? < 1271631403 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :no windows < 1271631417 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :DOSBox, DOSEMU, FreeDOS, etc. < 1271631425 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :that's not "working" < 1271631428 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :I'm not discounting your efforts! < 1271631431 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :I can run Amiga binaries on this machine too < 1271631433 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric ::-) < 1271631438 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Rugxulo: never said you were, of course < 1271631439 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :I just wanted you to know (for speed comparison) how BFD fares (i.e. not bad) < 1271631444 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :just saying that bfd doesn't "really" beat bff4 :P < 1271631454 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :yeah compiling brainfuck wins over an interp, every time < 1271631460 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Rugxulo: Have you seen esotope? < 1271631468 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :http://code.google.com/p/esotope-bfc/ < 1271631470 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :It compiles hello world to a single print statement. < 1271631470 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :no < 1271631476 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :the most advanced BF compiler out there < 1271631490 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :does some "proper" -- as in stuff actual compilers do -- optimisations < 1271631490 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :detects arithmetic, while loops, optimises away tons of loops, ... < 1271631493 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :I've seen the site before, but since it required Python, I didn't really test it < 1271631506 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :why not? < 1271631523 0 :tombom!unknown@unknown.invalid QUIT :Quit: Leaving < 1271631548 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :well, for one, I'm no huge Brainf*** nut (haven't practiced enough, honestly) < 1271631553 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :it's easy to get python on windows. < 1271631559 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :*Brainfuck < 1271631567 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :or, I guess, to be absolutely pedantic, *brainfuck < 1271631570 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :Python 2.4.2 is available for DOS (via DJGPP), but esotope claims to need 2.5 < 1271631578 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Err... so get the Windows version. < 1271631590 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :I don't like Windows that much, honestly < 1271631600 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :or Python, too bloated and weird for me ;-) < 1271631602 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :What OS are you using right now? < 1271631612 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :Windows ... I use it, but don't like it ;-)) < 1271631615 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :http://python.org/ftp/python/2.6.5/python-2.6.5.msi < 1271631618 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Esotope your brain. < 1271631625 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Anyway, less brainfuck, more theorem proving. < 1271631797 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Rugxulo: I said more theorem proving. < 1271631812 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :? < 1271631872 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :I was ordering you to talk about computerised theorem provers, along the lines of Mizar, Coq, HOL, Isabelle, etc. I did not actually expect you to follow this instruction. < 1271631889 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :me too dumb ;-) < 1271631908 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Curry Howard Isomorphism: propositions <--> types; proofs <--> programs. < 1271631922 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Computerised theorem provers mostly exploit this fact to automate, and formally verify, proofs of mathematical theorems. < 1271631925 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :The end. < 1271632051 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Any questions? < 1271632084 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :yes ... where's the beef? < 1271632102 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :and why is the Smoke Monster such a meanie? < 1271632121 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Rugxulo: The beef is in the proof's computational content. < 1271632125 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :And because REDACTED < 1271632743 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :probably bronchitis < 1271632770 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :ACTION attempts to do some category theory-as-in-real-category-theory in Coq < 1271632775 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :it's hard, a lot of the concepts don't really map < 1271632787 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :I am having trouble even stating what a morphism is :-) < 1271632799 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :and when your categories don't map, then you know you _really_ have trouble < 1271632818 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :RIMSHOT < 1271632859 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :I /think/ a morphism is just a function arrow, more or less < 1271632860 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :except < 1271632866 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :then what is hom(C) < 1271632906 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Or are morphisms arrows? < 1271632922 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :morphism = arrow, they are synonyms < 1271632929 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :(not haskell Arrow) < 1271632940 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Right, I meant haskell Arrow. < 1271632951 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :I'm just wondering if I should represent morphisms as http://www.haskell.org/arrows/. < 1271632963 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :I guess not. < 1271632964 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :Arrow has additional properties in addition to being morphisms < 1271632968 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Right. < 1271632987 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Well, it isn't "hom : ob -> ob", it's more like "hom = ob -> ob". < 1271633008 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :morphisms are the fundamental concepts of a category. objects are optional < 1271633020 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Then what do morphisms map if not objects? < 1271633031 0 :Sgeo!~Sgeo@ool-18bf618a.dyn.optonline.net JOIN :#esoteric < 1271633033 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :morphisms don't map. morphisms compose < 1271633049 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :it's just some categories where morphisms are maps < 1271633054 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Then I am really confused. < 1271633063 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :alise, confused? < 1271633067 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Yes. < 1271633088 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :well that no objects version is just a reformulation and is not really intuitive < 1271633105 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :(basically you identify objects with their identity morphisms) < 1271633105 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Unintuitive, maybe, but is it mathematically useful? < 1271633134 0 :cheater2!unknown@unknown.invalid QUIT :Ping timeout: 276 seconds < 1271633164 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Sounds nice. useful? < 1271633168 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :it has fewer fundamental concepts < 1271633177 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :gah, Evony ads on Sourceforge, have they no shame?? < 1271633185 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :(although it wasn't one of the dirty ones, heh) < 1271633200 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :so might be easier to encode < 1271633205 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: but is it easy to define objects with that and then formalise the rest conventionally? < 1271633236 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :as i said, objects are just identity morphisms < 1271633241 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :right. < 1271633247 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :still have to figure out how to encode a morphism :) < 1271633252 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :an identity morphism would be a morphism that composes with itself, giving itself < 1271633253 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :"malware free ... Google verified" ... yeah right < 1271633257 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :oh wait < 1271633279 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :that's not quite enough to identify it < 1271633291 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :hey guys < 1271633291 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :(could have other idempotents) < 1271633304 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :here's a single-axiom logical system < 1271633305 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :(((p -> q -> r) -> (p -> q) -> p -> r) -> (s -> t -> s) -> u) -> u < 1271633308 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :(it's the type of iota) < 1271633333 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :iota? the language? < 1271633336 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1271633342 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :the single combinator has that type < 1271633358 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :((p -> q -> r) -> (p -> q) -> p -> r) is a bit of a strange argument to take. since it's the same as true :P < 1271633399 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :in fact that type is positively bizarre... < 1271633417 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric : :: (((t -> t1 -> t2) -> (t -> t1) -> t -> t2) < 1271633417 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric : -> (t11 -> t12 -> t11) < 1271633417 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric : -> t21) < 1271633417 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric : -> t21 < 1271633419 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :maybe I translated it wrong < 1271633422 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :it looks like it cannot possibly use anything but its last argument < 1271633470 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Prelude> let k x y = x < 1271633470 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Prelude> let s x y z = x z (y z) < 1271633470 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Prelude> let iota x = x s k < 1271633477 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :maybe iota doesn't work outside of the world of untypedness < 1271633514 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :yeah it doesn't work < 1271633517 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :iota iota isn't well typed < 1271633521 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :given that you need to self-apply it to get anything useful < 1271633526 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :and all applications involve iota iota at some point < 1271633533 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :apparently ^x.xKSK is ok though < 1271633633 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: so what is one morphism, type-wise? < 1271633638 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :a function from A to A? a function from A to B? < 1271633649 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :i mean i get the concepts < 1271633653 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :just not how they gel with type theory < 1271633658 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ouch < 1271633713 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :what :D < 1271633736 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :i cannot wrap my head around the idea of embedding fully general morphisms into type theory < 1271633753 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :hmm... perhaps hom(C) is a list of (ob(C),ob(C)) that is the length of ob(C)^ob(C) < 1271633758 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :which is a function, but < 1271633763 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :then the object X would be (X,X) in the list < 1271633775 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :so < 1271633780 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :hom(C) is ob(C) -> ob(C) < 1271633785 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :which makes one morphism (ob(C), ob(C)) < 1271633789 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: or is it more general in this case? < 1271633810 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :now mind I can't dispense with objects, since I say that ob(C) is a type < 1271633815 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :which I need to define hom < 1271633881 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :i tend to think of hom as something taking _two_ arguments, both objects < 1271633892 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :hom(A,B) being the set of morphisms from A to B < 1271633904 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :yes < 1271633913 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :but how is that distinct from hom(A,B) being one single function A->B? < 1271633930 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :a morphism is just a pairing of two objects, (A,B) and hom(A,B) pairs every object in A with one from B; so it's A->B < 1271633951 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :er for the category Set, the _elements_ of hom(A,B) are functions A->B < 1271633963 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :i'm talking about an interpretation of category theory < 1271633968 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :i'm attempting to implement category theory < 1271633991 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: so, using Haskell, would you agree that this definition is reasonable?: < 1271633995 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :type Hom a b = a -> b < 1271634002 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :where hom(A,B) is translated into Hom a b < 1271634048 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :but then what of hom_C(A,B) < 1271634051 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :for the category Hask, sure < 1271634072 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :ACTION wonders how LiveFunge-93 would work < 1271634079 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: but I'm trying to implement /every/ category < 1271634085 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :i'm trying to implement category theory itself < 1271634088 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :Display the code on its side in normal portrait mode? < 1271634101 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Sgeo: or in normal mode < 1271634103 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :not flipped < 1271634105 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :who knows < 1271634116 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :and i have no idea whether what you are trying to do even makes sense < 1271634120 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :I don't want to squish the characters though < 1271634188 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :Are people here willing to make nice-looking Befunge-93 programs for it if I make it? < 1271634210 0 :ze_german!unknown@unknown.invalid QUIT : < 1271634224 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :Sgeo: maybe. < 1271634231 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: well, category theory is a mathematical discipline. agreed? < 1271634247 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :it has abstract objects, called categories; relations between these objects, definitions about them, theorems relating to them, etc. < 1271634248 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :agreed? < 1271634314 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: you seem hesitant :) < 1271634334 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :yes. i don't see that it makes sense to identify morphisms between two objects with a type < 1271634371 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :well a functional type < 1271634383 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: but, let's go incrementally here < 1271634386 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :do you agree with my two assertions? < 1271634470 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :Sgeo, eh? I missed it, what are you making? < 1271634492 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :Live Wallpaper for Android 2.1 showing Befunge-93 being interpreted.. < 1271634493 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :Maybe < 1271634496 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :If I have time < 1271634498 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :leave me out of this < 1271634505 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :And don't start making a RoboZZle for Android app < 1271634515 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: :P < 1271634524 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :YOU ARE OBLIGATED TO RESPOND < 1271634550 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :Sgeo, the only "pretty" Befunge program (output) is my "guesswho2.bef" ;-) < 1271634556 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :well, or maybe mandel.bf < 1271634563 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :It wouldn't show output < 1271634567 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :everything else is pretty banal < 1271634573 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :It would show Fungespace, or wahtever it's called in 93 < 1271634577 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :then what's the point? just to see it trace < 1271634578 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :? < 1271634588 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :Why not? < 1271634598 0 :Rugxulo!unknown@unknown.invalid PRIVMSG #esoteric :that's fine, just a bit mind-numbing ;-) < 1271634603 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :Ooh! Different threads are different.. wait, that's 98 < 1271634640 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :CPU usage might be a bit extreme for a live wallpaper :/ < 1271634767 0 :alise!unknown@unknown.invalid PRIVMSG #esoteric :just run at low priority < 1271634992 0 :oerjan!unknown@unknown.invalid QUIT :Quit: leaving < 1271635079 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :http://www.expertrating.com/jobs/Programming-jobs/Befunge-Programmer-jobs.asp