←2011-11-17 2011-11-18 2011-11-19→ ↑2011 ↑all
00:05:44 -!- augur has joined.
00:18:28 -!- Patashu has joined.
00:25:58 -!- Rugxulo has joined.
00:28:27 <Rugxulo> I'm surprised, I had given up on IOCCC coming back (at least for the foreseeable future)
00:35:12 <oerjan> it's just the end times, nothing to worry about.
00:35:55 -!- derdon has quit (Remote host closed the connection).
00:45:54 <CakeProphet> oerjan: unfortunately no one actually knows C anymore
00:45:59 <CakeProphet> so the submissions will all bad bad.
00:46:13 <monqy> bad bad :(
00:46:23 <oerjan> what, how can you possibly doubt our Gregor
00:47:46 <Rugxulo> no one knows C? eh? it's still like #1 or #2 at TIOBE
00:48:00 <Rugxulo> GNU still worships it like crazy, that's for sure
00:48:10 <Rugxulo> similarly Clang users (Apple), etc.
00:49:21 -!- pikhq_ has quit (Ping timeout: 245 seconds).
00:49:24 -!- pikhq has joined.
00:51:41 <CakeProphet> Rugxulo: no one writes C anymore. it's all just robots that program C now.
00:51:47 <CakeProphet> :>
00:51:56 <Rugxulo> robots?
00:52:13 <Rugxulo> even *BSD funded PCC to get to 1.0 stage
00:52:22 <Rugxulo> so apparently everybody is (still) gaga over C
00:52:39 <Rugxulo> maybe thinking of another language while they're compiling C ;-)
01:00:11 <pikhq> I anticipate C lasting at least as long as COBOL already has.
01:00:16 <pikhq> Quite plausibly longer.
01:02:15 -!- pikhq_ has joined.
01:04:35 <Rugxulo> did I hear right or did C1x finish?
01:05:08 -!- pikhq has quit (Ping timeout: 252 seconds).
01:06:32 <coppro> I don't know if the new C standard has been published yet
01:07:07 -!- Zuu has quit (Ping timeout: 244 seconds).
01:10:03 <Rugxulo> dunno, I read somewhere that there's some weird rule that it can pass early if unanimous, and supposedly it was, so ...
01:11:48 <Rugxulo> ah well
01:11:50 -!- Rugxulo has quit (Quit: Leaving).
01:24:34 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
01:48:49 -!- copumpkin has joined.
01:52:23 -!- pikhq has joined.
01:54:31 -!- pikhq_ has quit (Ping timeout: 244 seconds).
02:04:33 -!- Sgeo|web has joined.
02:04:46 <Sgeo|web> elliott's not here for me to tell em UPDATE
02:08:15 <CakeProphet> Sgeo|web: question: do you do anything other than refresh MSPA?
02:08:24 <Sgeo|web> Nope!
02:08:34 <CakeProphet> tsk tsk
02:08:48 * Sgeo|web is pleased that CakeProphet thinks that he refreshes MSPA constnatly
02:09:04 <monqy> mspa refresh pride
02:10:14 <Sgeo|web> CakeProphet: EPDOOT
02:11:06 <CakeProphet> OH LOOK I'VE ALREADY SEEN IT WHAT NOW?
02:11:32 <Sgeo|web> I thought there was another update almost immediately after
02:11:45 <monqy> epdoot
02:12:51 <Sgeo|web> My notifier went off a second time, for some reason
02:13:06 <Sgeo|web> CakeProphet: Sorry to reveal I'm not a constantly refreshing madman
02:13:16 <monqy> notifier???
02:14:02 <Sgeo|web> CakeProphet: 6058 changed
02:23:58 -!- pikhq has quit (Ping timeout: 240 seconds).
02:24:12 -!- pikhq has joined.
02:46:01 <CakeProphet> Sgeo|web: I'm surprised you don't read Dr Brinner: Ghost Psychiatrist.
02:58:32 <Sgeo|web> I want to, but I don't have the time...
03:00:59 <Sgeo|web> I mean, I can barely find the time to read Mezzacotta
03:02:14 <pikhq> There isn't enough.
03:03:11 <pikhq> http://www.mezzacotta.net/archive.php?date=-9999999999999-01-01 Here, begin archive binging.
03:03:31 <Sgeo|web> If people can read all of Dr. Brinner: Ghost Psychiatrist, then I can read all of Mezzacotta
03:03:49 <pikhq> I mean literally there isn't enough time.
03:03:59 <pikhq> The Universe isn't old enough.
03:04:17 <Sgeo|web> CakeProphet: Where'd you get your time machine for reading Dr. Brinner?
03:05:10 <Sgeo|web> pikhq: the solution is more universes
03:16:27 -!- Sgeo|web has quit (Quit: Page closed).
03:26:33 -!- Sgeo|web has joined.
03:46:21 <CakeProphet> Sgeo|web: I'm just so cool I don't need one.
03:47:39 <Sgeo|web> Sorry
03:48:07 <oerjan> you don't need a time machine at 16 picokelvin
03:48:27 <CakeProphet> uh so does
03:48:29 <CakeProphet> delete [] array;
03:48:35 <CakeProphet> delete objects in the array as well?
03:48:41 <CakeProphet> if so, why is C++ so delete happy?
03:48:50 <CakeProphet> if not, what the fuck is wrong with my program?
03:49:15 <pikhq> CakeProphet: Yes, that is the intended semantics of delete[];
03:49:24 <CakeProphet> zdhvjibhdfhbsj<ehfshe hf uiwhe riu wh iur hwr
03:49:27 <CakeProphet> pikhq: can I just like
03:49:33 <CakeProphet> delete the array and not the things in it?
03:49:39 <CakeProphet> actually... hmmm
03:49:42 <CakeProphet> nevermind that's not the problem
03:49:44 <pikhq> delete array; does that, I think.
03:49:46 <CakeProphet> because I'm copying those things anyway.
03:49:50 <pikhq> Also, you don't want to do that.
03:49:51 <CakeProphet> I think
03:50:28 <CakeProphet> hmmm
03:51:01 <CakeProphet> okay so
03:51:03 <CakeProphet> v.key = key;
03:51:09 <CakeProphet> where the right-hand key is a string reference
03:51:13 <CakeProphet> this copies the string, yes?
03:52:10 <CakeProphet> yeah nevermind
03:52:13 <CakeProphet> that's not the problem.
03:54:45 -!- augur has quit (Remote host closed the connection).
04:06:39 -!- Sgeo|web has quit (Ping timeout: 265 seconds).
04:13:13 <CakeProphet> I'm guessing something's wrong with my table resize...
04:26:16 <CakeProphet> ooooooooooooooh
04:26:31 <CakeProphet> once again fooled by the assignment operator on references.
04:28:54 <CakeProphet> silly me, thinking I could use and re-assign variables as mere symbolic constructs to write clear algorithms
04:29:05 <CakeProphet> and not RECKLESSLY OVERWRITE THINGS.
04:30:41 <CakeProphet> there we go.
04:39:46 -!- pikhq_ has joined.
04:39:51 -!- pikhq has quit (Ping timeout: 244 seconds).
04:40:34 -!- GreaseMonkey has joined.
04:40:42 -!- GreaseMonkey has quit (Changing host).
04:40:42 -!- GreaseMonkey has joined.
04:43:37 <CakeProphet> `run cat welcome
04:43:39 <HackEgo> cat: welcome: No such file or directory
04:43:45 <CakeProphet> `run cat `which welcome`
04:43:48 <HackEgo> ​#!/usr/bin/perl -w \ if (defined($_=shift)) { s/ +/ @ /g; exec "bin/@", $_ . " ? welcome"; } else { exec "bin/?", "welcome"; }
04:43:55 <CakeProphet> `run cat `which @`
04:43:57 <HackEgo> ​#!/bin/sh \ if echo "$1" | grep -c ' ' >/dev/null; then \ echo -n "$1" | sed 's/ .*/: /' \ exec $(echo "$1" | sed 's/[^ ]* //') \ else \ echo -n "$1: " \ shift \ exec "$@" \ fi \
04:45:51 <CakeProphet> `run which not
04:45:52 <HackEgo> No output.
04:46:11 <CakeProphet> is there a command that negates a return status?
04:46:37 <oerjan> i dunno, there's a reason i used perl instead of sh :P
04:47:20 <CakeProphet> `run ls
04:47:22 <HackEgo> bin \ canary \ karma \ lib \ paste \ quotes \ share \ wisdom
04:47:59 <CakeProphet> `run if cat wisdom/CakeProphet | grep -i hi; then echo "hi" fi
04:48:01 <HackEgo> bash: -c: line 1: syntax error: unexpected end of file
04:48:02 <pikhq_> CakeProphet: if [ $? ];then false;else true;fi
04:48:17 <CakeProphet> what is $?
04:48:28 <pikhq_> The error status of the previous command.
04:48:34 <CakeProphet> ah
04:48:36 <CakeProphet> yay bash
05:08:46 <CakeProphet> it makes so much sense.
05:08:49 <CakeProphet> bash does.
05:09:02 <CakeProphet> so much sense I sometimes struggle to understand it.
05:12:40 <Deewiant> CakeProphet: ! negates a return status
05:13:25 <CakeProphet> Deewiant: anywhere or just within the [] thingy
05:13:28 <CakeProphet> ?
05:14:22 <Deewiant> Anywhere
05:15:23 <CakeProphet> `run !echo "I don't believe you" && exit
05:15:25 <HackEgo> bash: !echo: command not found
05:15:31 <CakeProphet> `run !(echo "I don't believe you") && exit
05:15:33 <HackEgo> I don't believe you
05:15:42 <CakeProphet> `run !(echo "I don't believe you") && echo "oh right"
05:15:44 <HackEgo> I don't believe you
05:15:47 <CakeProphet> okay.
05:16:03 <CakeProphet> I thought: "surely it could not be this simple in bash"
05:16:04 <Deewiant> `run ! echo foo && echo bar
05:16:06 <HackEgo> foo
05:16:18 <Deewiant> You don't need the (), that spawns a subshell
05:16:32 <CakeProphet> oh right of course...
05:17:14 * CakeProphet is tempted to use perl always for bashy things.
05:20:03 <CakeProphet> hmmm, so {} doesn't spawn a subshell or???
05:21:13 <Deewiant> http://stackoverflow.com/questions/2188199/bash-double-or-single-bracket-parentheses-curly-braces
05:21:29 -!- MDude has changed nick to MSleep.
05:21:44 -!- DCliche has joined.
05:21:57 -!- pikhq has joined.
05:23:06 <CakeProphet> that doesn't really explain the {cmd1; cmd2; cmd3; ... } | parallel
05:23:09 <CakeProphet> thing
05:24:32 <Deewiant> Hmm, bah, so it doesn't
05:24:50 -!- pikhq_ has quit (Ping timeout: 240 seconds).
05:24:59 <Deewiant> But no, {} doesn't spawn a subshell
05:25:30 -!- Darth_Cliche has quit (Ping timeout: 276 seconds).
05:25:34 <CakeProphet> but in this usage is otherwise identical?
05:27:22 <Deewiant> Uh, pretty much so, yes, I think
05:27:50 <Deewiant> It's a big enough difference that I'm not sure what you include in "otherwise identical" :-P
05:28:21 <CakeProphet> they pretty much have the same purpose when piped and such.
05:29:00 <Deewiant> Yes
05:29:55 <CakeProphet> they both allow a sequence of commands to share the same piped input/output
05:36:41 <CakeProphet> wait what congress wants to censor the internet?
05:37:09 <Madoka-Kaname> That sounds like a good way to make the internet really really angry.
05:38:28 <CakeProphet> wow amazing.
05:41:12 <CakeProphet> http://en.wikipedia.org/wiki/Stop_Online_Piracy_Act
05:41:20 <CakeProphet> wow they even tie it into protecting American jobs.
05:45:34 <pikhq> That sounds like a good way to make Google abandon ship.
05:47:21 <Madoka-Kaname> Then what happens when even Google leaves
05:47:50 <CakeProphet> "Sources suggest Google has packed up and moved to Greenland. It has reportedly taken its money and jobs with it."
05:48:16 <pikhq> Probably a few other tech companies join them.
05:48:33 <pikhq> Suddenly, Silicon Valley is in Greenland.
05:48:44 -!- oerjan has quit (Quit: In other news, Greenland's population triples).
05:48:48 <pikhq> :)
05:48:54 <Madoka-Kaname> And America :(s?
05:49:35 <Madoka-Kaname> http://www.thatvideosite.com/video/dr_michio_kaku_discusses_americas_secret_weapon
05:50:08 <CakeProphet> pikhq: I wonder if they'll ban youtube?
05:50:56 <Madoka-Kaname> CakeProphet, that'd be a good way to secure a very very bad approval rating.
05:50:58 <pikhq> Doubtful. I think the first widespread action against Youtube would be Google going "Uh... Fuck you."
05:51:11 <pikhq> Madoka-Kaname: Congress has a lower approval rating than communism ATM.
05:51:17 <Madoka-Kaname> Can you really cover that up propaganda?
05:51:30 <Madoka-Kaname> Google's pretty much holding up a middle finger at you.
05:51:54 <pikhq> Yes, communism, the movie villain of decades, is more popular than Congress.
05:53:31 <Madoka-Kaname> Maybe we should switch to monarchy
05:54:01 <CakeProphet> Madoka-Kaname: Dr. Michio Kaku is secretly this guy from Alpha Centauri http://2.bp.blogspot.com/_s2Xyd2TRbi8/SlkqC18nSII/AAAAAAAAAAM/bx2D97B6ABs/S660/zakharovface.jpg
05:54:59 * Madoka-Kaname ???
05:55:33 <CakeProphet> Madoka-Kaname: play Alpha Centauri and you will know it is true.
05:57:47 <CakeProphet> pikhq: I wonder if they'll ban youtube?
05:57:49 <CakeProphet> er
05:57:51 <CakeProphet> what?
05:57:55 <CakeProphet> In addition, depending on the method used to fix the worldsheet diffeomorphisms and conformal transformations in the original free string theory, the resulting string field theories can be very different. Using light cone gauge, yields light-cone string field theories whereas using BRST quantization, one finds covariant string field theories. There are also hybrid string field theories, known as covariantized light-cone
05:58:03 <CakeProphet> AAAAAAAAAAAAAAAAAAAAAAH
05:58:50 <CakeProphet> string field theories which use elements of both light-cone and BRST gauge-fixed string field theories.
05:59:04 <CakeProphet> AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH
05:59:33 <CakeProphet> string string metasuperstring membrane field cone theory
06:00:01 <pikhq> Further testing of FTL neutrinos done. Yup, still FTL.
06:01:22 <quintopia> what
06:01:57 -!- augur has joined.
06:05:06 <CakeProphet> wtf why am I reading about string theory
06:05:13 <CakeProphet> IT BURNS.
06:11:47 <CakeProphet> If two theories are related by a duality transformation, it means that the first theory can be transformed in some way so that it ends up looking just like the second theory. The two theories are then said to be dual to one another under that kind of transformation. Put differently, the two theories are mathematically different descriptions of the same phenomena.
06:11:55 <CakeProphet> help needs more category theory
06:15:02 <CakeProphet> Within the framework of the Standard-Model Extension (SME theory), various theorists have suggested that the neutrino might have a tachyonic nature,[30][31][32][33] while others have disputed the possibility.[34]
06:15:12 <CakeProphet> oh what now [34]!!!!
06:20:45 <CakeProphet> Giacomo Cacciapaglia, a theoretical physicist at King's College London, has suggested that the neutrinos might take "shortcuts" through extra dimensions, bypassing the Cohen-Glashow effect. Jorge Páramos, a theoretical physicist at the Higher Technical Institute in Lisbon, counters that tinkering with the current theory in this way is difficult.
06:21:56 <CakeProphet> ITT: theoretical physicists play with existing theories that have no empirical basis.
06:32:19 <fizzie> That's why they're called theoretical physicists, not regular physicists.
06:34:30 <pikhq> Shame it's not "hypothetical physicists".
06:37:34 <fizzie> Those are the physicists that may or may not exist.
06:46:29 -!- variable has quit (Excess Flood).
06:47:48 -!- variable has joined.
06:51:36 -!- FireFly has quit (Excess Flood).
06:52:14 -!- FireFly has joined.
06:59:48 -!- DCliche has quit (Quit: You are now graced with my absence.).
07:49:47 -!- CakeProphet has quit (Ping timeout: 245 seconds).
07:56:37 -!- CakeProphet has joined.
07:56:37 -!- CakeProphet has quit (Changing host).
07:56:37 -!- CakeProphet has joined.
08:11:59 -!- FireFly has quit (Ping timeout: 240 seconds).
08:14:08 -!- FireFly has joined.
08:33:18 -!- Vorpal has joined.
08:41:04 <Vorpal> hm
08:54:31 -!- monqy has quit (Quit: hello).
08:55:40 -!- copumpkin has quit (Ping timeout: 260 seconds).
08:55:51 -!- GreaseMonkey has quit (Quit: The Other Game).
08:56:05 -!- copumpkin has joined.
08:58:45 -!- ais523 has joined.
09:29:39 <fizzie> Hm?
09:32:16 <ais523> hm at what?
09:36:28 <fizzie> Hm at Vorpal's hm.
09:36:57 <fizzie> (The one a bit less than hour ago.)
09:49:21 <ais523> <billstewart> You're dismissing the efficacy of tin foil hats because you've only tried using aluminum foil - they need real tin to work right.
09:49:25 <ais523> I approve of this theory
10:00:22 <fizzie> There are quite a few papers on foil hats; like http://berkeley.intel-research.net/arahimi/helmet/ from MIT, and a rebuttal for it at http://zapatopi.net/blog/?post=200511112730.afdb_effectiveness
10:39:05 -!- derdon has joined.
11:06:55 <Vorpal> <fizzie> Hm at Vorpal's hm. <-- that was just to check for lambdabot messages
11:13:07 <fizzie> Hm.
11:22:23 -!- ais523 has quit (Ping timeout: 240 seconds).
11:44:20 -!- Phantom_Hoover has joined.
12:31:31 <Gregor> So I'm thinking my best bet with my JIT's target language would be to choose some machine code.
12:31:33 <Gregor> But which ...
12:36:38 <Gregor> Or ... some kind of bytecode?
12:38:19 <Gregor> Dang it, a stack-based language would be perfect but Forth is so done :P
12:39:27 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .).
12:51:51 -!- myndzi has quit (Read error: Connection reset by peer).
12:53:48 -!- myndzi has joined.
13:05:45 -!- ais523 has joined.
13:07:53 <Gregor> ais523: Suggest a language for my JIT to ... well, JIT.
13:08:23 <ais523> Gregor: how simple?
13:08:42 <ais523> I would say Unlambda, but it's a bitch to compile into imperative code
13:09:20 <ais523> meanwhile, what's up with the vandalism on http://esolangs.org/wiki/Excela?
13:09:30 <ais523> [CTCP] Received CTCP-PING reply from ais523: 22 seconds.
13:09:42 <ais523> the ridiculous part: this connection in the University library is actually /better/ than the one in my office
13:10:11 <Gregor> ais523: Current target is BF. I want something more interesting.
13:10:24 <Gregor> Pretty much has to be imperative.
13:10:50 <ais523> kipple?
13:11:39 <ais523> you might have to make the stacks finite, but otherwise there don't seem to be any issues with it other than parsing
13:11:54 <ais523> and I know you know the language
13:14:06 <Gregor> I want something with literals, to make it more of a challenge.
13:17:34 -!- ais523 has quit (Read error: Connection reset by peer).
13:17:40 -!- ais523 has joined.
13:17:44 <ais523> [13:15] <ais523> INTERCAL-72?
13:17:47 <ais523> [13:15] <ais523> probably a bit too large
13:17:58 <Gregor> ... ow X-D
13:18:30 <ais523> -72 would /really/ benefit from JITting
13:18:33 <Gregor> In spite of asking in #esoteric , I was also hoping for something a bit more ... real :P
13:19:23 <ais523> I'm not sure how many simple real languages there are
13:19:30 <ais523> some Lisp variant without closures, perhaps
13:20:31 <ais523> Gregor: what about BASIC?
13:22:30 <Gregor> Hm
13:24:47 -!- ais523 has quit (Ping timeout: 245 seconds).
13:25:30 <fizzie> TI-BASIC, the best BASIC.
13:28:03 -!- ais523_ has joined.
13:28:16 <ais523_> Gregor: serious suggestion: BASIC
13:28:51 <fizzie> Non-serious suggestion: dc.
13:30:00 <ais523_> dc's concatenative, not imperative, right?
13:31:17 <Phantom_Hoover> Yep.
13:32:52 <fizzie> ais523_: Sure, but <Gregor> Dang it, a stack-based language would be perfect but Forth is so done :P
13:33:05 <fizzie> It's the next best thing.
13:53:47 -!- ais523_ has quit (Quit: Page closed).
13:53:59 <Gregor> Uhhh, OK, and which concatenative language is non-imperative? As far as I'm concerned, imperative is a parent group of concatenative ...
13:54:18 <Gregor> The only big problem with dc is bignum :P
13:59:27 <Phantom_Hoover> Concatenative works fine functionally.
14:00:06 <Phantom_Hoover> All commands are of type Stack -> Stack and . is replaced with space.
14:00:12 <Phantom_Hoover> Erm, *all functions
14:00:43 <Gregor> Soooo all the world's a monad.
14:00:57 <Phantom_Hoover> Functional does not mean Haskell.
14:02:19 <Gregor> I'm just saying that that's a very disingenuous way of describing a concatenative language X_X
14:02:25 <Phantom_Hoover> Why?
14:04:09 <Gregor> Are you kidding me? All your functions are stack->stack and you just string them together. That's like saying that C is a functional language where every statement is a function state->state.
14:05:52 <Phantom_Hoover> Yeah, but it fits better for concatenative languages.
14:09:06 <Gregor> None of this helps me choose a language anyway :P
14:09:12 <Gregor> How bad would non-bignum dc be?
14:15:39 <Gregor> I really feel like I want to do Forth ... frankly I'm surprised that the previous Forth entry in IOCCC /didn't/ JIT (slash compile to memory)
14:32:03 <Gregor> Bleh
14:33:52 -!- derrik has joined.
14:34:21 <Phantom_Hoover> Non-bignum dc wouldn't be hard at all, I should think, although I don't know much about JIT.
14:34:46 <Phantom_Hoover> Although its only control structure is an eval statement.
14:36:27 <Gregor> It wouldn't be hard in the least, my question is whether it would suck :)
14:36:53 <Phantom_Hoover> languages
14:36:57 <Phantom_Hoover> Oops
14:36:58 <Phantom_Hoover> http://iasos.com/artists/erial/celestial-soul-portraits/
14:37:03 <Phantom_Hoover> Holy christ this is amazing.
14:38:10 <Gregor> lol
14:42:05 <Gregor> How 'bout integer dc?
14:42:07 <Gregor> Would that be useless?
14:42:19 <Phantom_Hoover> ISTR that it's the default behaviour.
14:42:23 <Phantom_Hoover> !show pi
14:42:24 <EgoBot> sh read p; if [ "x$p" = "x" ]; then p=5; fi; echo "scale=$p; a(1)*4;" | BC_LINE_LENGTH=490 bc -l | tr -d '\\'
14:42:27 <Phantom_Hoover> Wait, that's bc.
14:42:40 <Gregor> `run echo '2 3 / p' | dc
14:42:47 <HackEgo> bash: dc: command not found
14:42:48 <Phantom_Hoover> Yeah, it is; it rounds down, too.
14:42:51 <Gregor> ... wtf
14:42:52 <Phantom_Hoover> O.o
14:42:58 <Gregor> That's something to be fixed.
14:43:33 <Gregor> `run echo '2 3 / p' | dc
14:43:35 <HackEgo> 0
14:43:40 <Gregor> Hmmmmmmmmm
14:43:49 <Gregor> OK, dc isn't such a terrible idea then.
14:44:36 -!- pikhq_ has joined.
14:45:37 -!- pikhq has quit (Ping timeout: 245 seconds).
14:48:54 -!- elliott has joined.
14:54:12 <Gregor> elliott: dc. Terribad?
14:54:46 <elliott> Gregor: Wow, fuck you, dc is my favourite.
14:54:47 <lambdabot> elliott: You have 3 new messages. '/msg lambdabot @messages' to read them.
14:55:00 <Gregor> elliott: Good, then it's my JIT target :P
14:55:21 <elliott> Gregor: You're JITting... to dc?
14:55:27 <elliott> Do you have a C->dc compiler?
14:55:27 <Gregor> Errr
14:55:30 <Gregor> JIT source rather
14:55:37 <elliott> Gregor: I guess that works?
14:55:45 <Gregor> It feels a bit less retarded than BF :P
14:55:46 <elliott> Gregor: It's kind of unsuited though.
14:55:51 <elliott> Functions are first-class by way of being strings.
14:56:02 <Gregor> JIT is a command in my JIT :)
15:07:08 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
15:08:00 <elliott> 20:07:29: <CakeProphet> pikhq_: oh also
15:08:00 <elliott> 20:07:31: <CakeProphet> if you were sane before
15:08:00 <elliott> 20:07:33: <CakeProphet> http://www.usdebtclock.org/
15:08:00 <elliott> 20:07:36: <CakeProphet> now you're not.
15:08:00 <elliott> Would you two stop circlejerking in the logs.
15:08:39 <elliott> `addquote <olsner> characters in tv series should learn to check the timestamp before they get their hopes up... *no chance* this will work at 10 minutes into the episode
15:08:41 <HackEgo> 721) <olsner> characters in tv series should learn to check the timestamp before they get their hopes up... *no chance* this will work at 10 minutes into the episode
15:31:36 <Phantom_Hoover> http://www.beanactuary.com/
15:31:40 <Phantom_Hoover> Bean actuary!
15:31:41 <Phantom_Hoover> Best job.
15:31:48 -!- copumpkin has joined.
16:01:28 -!- derrik has quit (Quit: remains of the day).
16:03:30 <Gregor> Damn ... my new JITting method is sound in principle, but probably isn't going to work with even the slightest optimization >_>
16:03:49 <elliott> What method is that :P
16:04:40 <Gregor> SEKRIT
16:05:54 <elliott> Gregor: Have you pushed it yet :P
16:05:58 <Gregor> Nope.
16:15:17 <Gregor> Basically this: void jit(volatile struct Data *allMyDeliciousData) { record("prologue"); /* do an addition */ record("+"); /* etc */ }
16:15:23 <Gregor> record() records its return address.
16:15:29 <Gregor> Then I use those return addresses to slice up the function.
16:16:14 <elliott> Gregor: Why wouldn't that work?
16:16:21 <elliott> You might need a "volatile" on record().
16:16:25 <Gregor> elliott: Getting rid of the call to record itself.
16:16:32 <elliott> Gregor: Can't be done, if it has side-effects...
16:16:36 <elliott> Gregor: Make it poke a volatile variable.
16:16:57 <Gregor> I made it work, but now my JITted code is full of function calls to empty functions (which may or may not be incurably retarded)
16:17:30 <Gregor> (Using a volatile function pointer argument for record instead of a global function)
16:19:10 <elliott> OS.js (JavaScript Operating System) - The world is moving forward. [X-post from /r/linux] (anderse.wordpress.com)
16:19:10 <elliott> submitted 6 hours ago by Forconin to programming
16:19:10 <elliott> WHY IS THIS ON MY FRONT PAGE
16:19:14 <elliott> I blame Gregor, Lord of Javascripts.
16:19:27 <Gregor> ^^
16:19:30 <elliott> "This project was originally intended for remote administration of servers without the hassle of installing a graphical environment and all the dependencies that comes along."
16:19:39 <Gregor> lolwut
16:19:40 <elliott> $ ssh --javascript-bullshit
16:19:51 <elliott> I guess the browser doesn't count as a graphical environment with a bunch of dependencies :P
16:20:00 <Gregor> "remote administration of servers [by retards]"
16:20:05 <Gregor> They forgot that part.
16:20:39 <Gregor> Hmmm ... so far my new technique works on x86, and works then segfaults everywhere else.
16:20:50 <Gregor> Maybe I can just avoid my broken function epilogue by always calling exit! 8-D
16:21:36 <Gregor> Nowait, that doesn't work once I have other functions X-D
16:21:52 <elliott> "Hell, for consistency you should serve it all up with node.js instead of Apache."
16:21:55 <elliott> THIS IS INSUFFERABLE
16:21:58 <elliott> Gregor: Maintain your own call-stack with CPS?
16:22:05 <elliott> Then you never actually have to return.
16:22:16 <Gregor> Hmmmmm
16:22:27 <elliott> Gregor: That needs TCO to work decently though, which you said breaks things
16:22:29 <elliott> Gregor: Although...
16:22:38 <elliott> record("goto"); goto &&computed_label; record("endgoto");
16:22:42 <elliott> You COULD hack something up with that :P
16:22:45 <Gregor> No, C doing TCO breaks things, me doing TCO doesn't.
16:23:01 <elliott> Gregor: How are you going to do TCO? That's platform-specific.
16:23:26 <Gregor> Same way I record return addresses, but change them >: )
16:23:31 <elliott> "Dude, I think it kicks butt. I just logged in and was blown away by how much better it was than I expected. I CANNOT believe people are downvoting you just because you named it os.js, instead of actually appreciating it for what it is. Fuck 'em, you're awesome."
16:23:36 <elliott> /R/PROGRAMMING IS THE WORST
16:23:38 <elliott> Gregor: Wow :P
16:24:01 <Gregor> Damn it, works-then-segfaults on ARM >_<
16:24:04 <elliott> Gregor: So, y'know, if you're doing TCO... a mini Lisp-alike would make a lot of sense... >:)
16:24:08 <Gregor> Something must be wrong with my epilogue generation.
16:30:52 <Gregor> Aha, fixed.
16:31:46 <Phantom_Hoover> http://en.wikipedia.org/wiki/File:Circle-trig6.svg
16:31:51 <Phantom_Hoover> I love this diagram so much.
16:34:25 <elliott> Phantom_Hoover: Insert link to that synchronicity diagram.
16:34:31 <elliott> http://upload.wikimedia.org/wikipedia/commons/e/e2/Sch%C3%A9ma_synchronicit%C3%A9_in_English.png
16:34:33 <Phantom_Hoover> Oh, OK.
16:34:49 <Phantom_Hoover> I never said that the trig diagram was the *best*, though.
16:35:20 <elliott> "One of Jung's favourite quotes on synchronicity was from Through the Looking-Glass by Lewis Carroll, in which the White Queen says to Alice: "It's a poor sort of memory that only works backwards".[10][11]"
16:37:08 <Phantom_Hoover> OK so I need to synthesise thioacetone with acetone, hydrochloric acid and stink bombs.
16:49:06 <Gregor> elliott: My new method, although still having the problem of pointless calls, works on friggin' everything X-D
16:49:24 <elliott> Gregor: I thought your previous method did too.
16:49:28 <elliott> Or do you mean flags don't disturb it?
16:50:21 <Gregor> elliott: I mean it just works, no need for flags in most places.
16:50:27 <Gregor> Also it works on IBM z/Series which the last one didn't :P
16:50:49 <elliott> Gregor: Does it work with... -O3 on VAX? :P
16:52:08 <Gregor> elliott: I can't even get VAX to compile shit with -O3 :P
16:52:11 <Gregor> GCC segfaults when I try.
16:53:12 <elliott> Gregor: Re empty calls: It's because the calls to the volatile function pointer are still there, right?
16:53:21 <Gregor> elliott: Yeah.
16:53:24 <elliott> Gregor: I have an idea.
16:53:35 <Gregor> I can't remove them because they're of differing lengths depending on how it optimized loading the arguments :(
16:53:56 <elliott> Gregor: Take /two/ volatile function pointers; the first one is used like you use your existing one, and the second one is used BEFORE and AFTER each call. You use the calls to the latter to find out how large calls to the former are, and remove them.
16:54:11 <elliott> (And then twiddle with things so that the calls to the second are as large as the calls to the first and remove them too)
16:54:37 <Gregor> That was my first idea, but the "twiddle with things" id--OH BUT IT WOULD WORK HERE because it would be a void(void) function!
16:54:43 <Gregor> Brilliant sir.
16:54:44 <Gregor> Brilliant.
16:54:56 <elliott> Oh, so it would!
16:54:58 <elliott> I didn't realise that myself :P
16:55:01 <elliott> Wooo
16:55:27 <Gregor> In fact, I can even simplify that a wee bit.
16:55:32 <Gregor> But the idea is very sound either way.
16:55:34 <elliott> Gregor: You might need to take a third, nop void(void) funptr, just to find out how large calls to that are...
16:55:35 <elliott> Oh wait
16:55:37 <elliott> You can use the second
16:55:42 <elliott> By special-casing the first three calls
16:55:49 <elliott> (As "start", "call to void(void)", "end")
16:56:02 <Gregor> ARRRRRGH damn it sh4.
16:56:17 <Gregor> Works with -O0, doesn't work with -O1, works with every flag that goes into -O1 >_<
16:56:25 <elliott> X-D
16:56:26 -!- Behold has joined.
16:56:27 <elliott> How is that even possible
16:56:35 <Gregor> I don't know
16:56:53 <elliott> Gregor: Maybe some code checks optimisation level directly... like, not direct compilation stuff
16:56:55 <elliott> Linker optimisations?
16:57:03 <elliott> Maybe -O1 is doing linker optimisations and the flags aren't
16:57:04 <Gregor> ... ARGH I'M AN IDIOT >_<
16:57:10 <Gregor> My O0 list was my O3 list :P
16:57:53 <Gregor> I thought that seemed like a lot of optimizations for O1 >_>
16:58:08 <elliott> Gregor: btw, I'd replace the long list-o'-platforms-and-flags in the hints with a link, that way the judges are less likely to elide it :P
16:58:17 <elliott> Also, it works with -O0 and -O3 but not -O1?
16:58:26 * elliott wonders wtf -O1 is doing.
16:58:43 <Gregor> No, it doesn't work with -O3, but it works with all those flags that are in -O3 but not -O1.
16:59:07 <Gregor> I'm actually just shortening the list a ton, it will only have special entries for those needing special flags, which will be few. It may still be worthwhile to link it ...
16:59:41 <Gregor> Oh come on.
16:59:44 <Gregor> This time I know I got the right list.
17:00:20 <Gregor> Maybe it's just not very good at outputting the list for -O0 >_>
17:02:13 <Gregor> WTF WTF WTF
17:02:16 <Gregor> What is -O1 doing???
17:02:47 <Gregor> I used the man page's instructions for discovering what -O<foo> does >_<
17:03:38 -!- MSleep has changed nick to MDude.
17:04:14 -!- Zuu has joined.
17:05:50 <Gregor> Yup, every friggin' flag.
17:06:14 <elliott> Gregor: Why not find out exactly what is broken about the -O1 asm :P
17:06:29 <Gregor> elliott: Because I don't speak SH4 :P
17:06:43 <elliott> Gregor: How hard can it be :P
17:07:23 <Gregor> Hard enough? >_>
17:07:39 <elliott> Gregor: Wiiiiiiimp
17:07:48 <Gregor> :'(
17:08:06 <Gregor> Hm, on SPARC it seems to segfault before even getting to the JITting part ...
17:08:55 <elliott> Gregor: It works on everything, huh :P
17:09:11 <Gregor> I'm going in alphabetical order here X-P
17:10:36 <elliott> Gregor: "Works on architectures that don't start with 'S'"
17:10:42 <Gregor> It works on SH4!
17:10:44 <Gregor> Just not with -O1
17:10:56 <elliott> Gregor: It's SH-4, btw :P
17:11:20 <Gregor> Also it works on SPARC if I put a printf in my record function X-D
17:11:48 <Gregor> OHHH fussing with the stack.
17:11:50 <Gregor> Always fun.
17:12:10 <elliott> Gregor: Just call a dummy function in record? :P
17:12:28 <Gregor> That I am! (Problem is that dummy functions tend to get inlined, but I'm sure I can find somethin')
17:12:40 <Gregor> Presumably something is stackweird if it's a leaf *shrugs*
17:12:56 <quintopia> you discussing IOCCC entry?
17:13:23 <Gregor> Or, y'know, it only works if it's printf.
17:13:25 <Gregor> quintopia: Yeah.
17:13:25 <elliott> <Gregor> That I am! (Problem is that dummy functions tend to get inlined, but I'm sure I can find somethin')
17:13:37 <elliott> Gregor: volatile __attribute__((noinline)) :P
17:13:45 <Gregor> elliott: No GCC-specifics.
17:14:58 <Gregor> The bigger problem though is that it only works if it's printf X-D
17:15:42 <elliott> Gregor: Not even puts?
17:15:50 <elliott> Gregor: Maybe it's about what you pass to printf.
17:15:56 <elliott> Gregor: Maybe you're forcing something from a register to the stack.
17:16:01 <Gregor> elliott: OK, puts works.
17:16:11 <elliott> Gregor: fputs("",stdout)
17:16:16 <elliott> 100% side-effect free
17:16:31 <Gregor> elliott: No go.
17:16:39 <elliott> Gregor: Maybe it needs to make a syscall
17:16:41 <elliott> putchar('.')?
17:17:04 <elliott> Except wait, stdio is buffered ???
17:17:11 <elliott> I bet putchar('.') fails
17:17:15 <elliott> Because no syscalls because buffering
17:19:07 -!- Behold has quit (Quit: Leaving).
17:21:08 <Gregor> ?!?!?
17:21:08 <lambdabot> Unknown command, try @list
17:21:13 <Gregor> putchar made it go CRAAAAAAAZY
17:21:35 <Gregor> I wonder if the return address on SPARC is strictly the return address ...
17:22:05 <Gregor> (As opposed to "return to here+4" or something)
17:23:13 <Phantom_Hoover> Dammit ais where are you when I'm being paranoid.
17:27:46 -!- monqy has joined.
17:29:07 <olsner> Gregor: since instructions are word-sized on sparc there would be no problem with preincrementing the instruction pointer
17:29:41 <Gregor> olsner: But that would be SPARC-specific.
17:30:11 <olsner> and maybe it has delay slots (but I think that was MIPS rather than SPARC)
17:30:27 <Gregor> Both.
17:30:30 <Gregor> But delay slots are fine.
17:32:21 -!- Ngevd has joined.
17:32:22 <Ngevd> Quick
17:32:28 <Ngevd> How does "Iason" decline?
17:34:42 <Gregor> Slowly.
17:36:53 <quintopia> depends what declension it is of course
17:48:47 <Ngevd> Third, I think
17:48:59 <Ngevd> Masculine
17:49:06 <Ngevd> Singular only
17:58:17 <elliott> Google competing with PNG... I guess they don't aim low these days :P
17:58:38 <Ngevd> PNG the image format!?
17:58:41 <elliott> Yes.
17:58:53 <elliott> 28% smaller than recompressed PNGs, supposedly.
17:59:35 <elliott> Ooh, you can encode all channels except the alpha lossily, and just have lossless alpha... that's a neat trick.
18:00:45 <Ngevd> Link?
18:01:21 <elliott> http://blog.chromium.org/2011/11/lossless-and-transparency-encoding-in.html
18:02:19 <elliott> Also http://code.google.com/speed/webp/gallery2.html.
18:05:17 * CakeProphet circlejerks furious
18:05:30 <CakeProphet> uhhhhhhhhhhh
18:07:27 -!- nys has joined.
18:13:11 <Gregor> elliott: I assume that the 28% figure was with strictly-lossless?
18:14:40 <elliott> Gregor: Yeah.
18:15:12 -!- Ngevd has quit (Ping timeout: 245 seconds).
18:15:21 <Gregor> Hm. I wonder how well you'd do if you just took libpng and swapped out zlib for LZMA. (Ignoring speed)
18:17:02 <elliott> Gregor: Probably vastly better :P
18:17:20 <elliott> Gregor: But not only speed would be the problem, imagine how much RAM your browser would hog up...
18:17:33 <Gregor> Heh
18:17:34 <elliott> Especially phones would be fucked.
18:17:58 <Gregor> Now for ultimate portability, we'll reimplement LZMAPNG in JavaScript.
18:18:02 <Gregor> And do the image decoding in-VM.
18:18:23 <elliott> "Small code size and relatively low memory overhead, particularly with smaller dictionary lengths, and free source code make the LZMA decompression algorithm well-suited to embedded applications."
18:18:28 <elliott> Uhh, are Wikipedia on crack?
18:18:36 <elliott> I'm pretty sure LZMA decoding sucks compared to gzip decoding :P
18:18:47 <elliott> Gregor: That'll be SO FAST
18:18:54 <elliott> Gregor: Decompess to a data: URI.
18:19:12 <Gregor> Which is itself a PNG :)
18:19:57 <elliott> Gregor: Nahh, BMP, so you can load incrementally by just appending strings
18:20:21 <Gregor> X-D
18:21:46 <Gregor> elliott: NOOOOOOOOOOOOOO my new system doesn't work on VAX either :'(
18:21:49 <Gregor> My new system SUCKS
18:22:06 <elliott> lol, tanenbaum won't admit linux has won
18:22:20 <elliott> Gregor: Why not...
18:22:20 <Gregor> ?
18:22:26 <Gregor> elliott: Donno yet, debuggling.
18:22:32 <elliott> Gregor: "?"?
18:22:52 <Gregor> <elliott> lol, tanenbaum won't admit linux has won
18:23:16 <elliott> Gregor:
18:23:21 <elliott> LinuxFr.org : If you could return in the past to change the MINIX original proprietary licence to the GPL licence, do you think your system might have become the dominant free OS today?
18:23:21 <elliott> Andrew Tanenbaum : Never. The reason MINIX 3 didn't dominate the world has to do with one mistake I made about 1992. At that time I thought BSD was going to take over the world. It was a mature and stable system. I didn't see any point in competing with it, so I focused MINIX on education. Four of the BSD guys had just formed a company to sell BSD commercially. They even had a nice phone number: 1-800-ITS-UNIX. That phone number did them and me in
18:23:21 <elliott> . AT&T sued them over the phone number and the lawsuit took 3 years to settle. That was precisely the period Linux was launched and BSD was frozen due to the lawsuit. By the time it was settled, Linux had taken off. My mistake was not to realize the lawsuit would take so long and cripple BSD. If AT&T had not brought suit (or better yet, bought BSDI), Linux would never have become popular at all and BSD would dominate the world.
18:23:25 <elliott> Now as we are starting to go commercial, we are realizing the value of the BSD license. Many companies refuse to make major investments in modifying Linux to suit their needs if they have to give the code to their competitors. We think that the BSD license alone will be a great help to us, as well as the small size, reliability, and modularity.
18:23:30 <elliott> LinuxFr.org : Yet we see the contributions of numerous companies during each development cycles of the Linux kernel (Intel, IBM, Novell, Google, Oracle, Broadcom, Samsung, TI, Freescale, Fujitsu, etc).
18:23:33 <elliott> Andrew Tanenbaum : Clearly some companies are willing to do this but I also know of quite a few companies that refuse to use Linux for this reason. It depends on the company and whether it feels its contribution would help its competitors. Also it is easy to overestimate what companies have contributed. Usually it is things that benefit them directly, like making sure their drivers and programs work on Linux.
18:23:38 <elliott> [...]
18:23:40 <elliott> LinuxFr.org : Do you think the Linux success is a proof he was right or is it unrelated?
18:23:42 <elliott> Andrew Tanenbaum : No, Linux "succeeded" because BSD was frozen out of the market by AT&T at a crucial time. That's just dumb luck. Also, success is relative. I run a political website that ordinary people read. On that site statistics show that about 5% is Linux, 30% is Macintosh (which is BSD inside) and the rest is Windows. These are ordinary people, not computer geeks. I don't think of 5% as that big a success story.
18:23:46 <elliott> LinuxFr.org : So you don't think the so-called "fairness" of the GPL ("your improvements need to be available the same way the original is available"), the bazaar model and a great project leader triggered the contributions to the Linux kernel? For you it's only dumb luck?
18:23:51 <elliott> Andrew Tanenbaum : Yes, I think Linux succeeded against BSD, which was a stable mature system at the time simply because BSDI got stuck in a lawsuit and was effectively stopped for several years.
18:23:54 <elliott> It's amazing :P
18:25:47 <Gregor> It's not an entirely unreasonable argument, really, although his success comparison with Mac being "BSD inside" is a bit silly.
18:26:15 <elliott> Gregor: I was giving him the benefit of the doubt until "lol only 5% of the visitors to my website use linux qed"
18:26:18 <elliott> "nerds"
18:26:35 <elliott> Gregor: But wait, MINIX is definitely winning, people just aren't telling anyone else about it:
18:26:37 <elliott> LinuxFr.org : Since 2005, MINIX 3 has been designed to be an OS for resource-limited and embedded computers and no more as a teaching tool only. Is MINIX being taken up in industry at present?
18:26:37 <elliott> Andrew Tanenbaum : In truth, one of the problems with the BSD license is that I don't know. Companies using it don't have to tell us anything. My experience is that a lot of companies don't like to talk about what technology they are using. But we are starting to make a real effort in embedded systems now.
18:26:51 <Gregor> lol
18:27:37 <Gregor> NEWSFLASH: Companies everywhere use MINIX! When asked why, unanimously they were quoted as saying "Because FUCK TORVALDS and FUCK STALLMAN, THAT'S WHY!"
18:28:05 <elliott> Gregor: No, it's 'cuz their lawyers don't let them use ANY GPL'D SOFTWARE WHATSOEVER
18:28:08 <elliott> EVEN IF THEY DON'T WANT TO MODIFY IT
18:28:28 <elliott> Gregor: Their legal team was quoted as saying "AAARGH GET THE COOTIES OFF OUR SERVERS"
18:28:38 <Gregor> X-D
18:28:45 <Gregor> Sounds like something Microsfot would say.
18:32:30 <Gregor> I wonder how much GPL software is in a standard MINIX system.
18:32:37 <Gregor> (MINIX 3)
18:32:40 <Gregor> My bet: More than none.
18:36:06 <Gregor> elliott: Is the return address on VAX ... two bytes beyond where you return to ...
18:36:51 <elliott> Gregor: After you call record(), examine the (now garbage) piece of stack that its return value was on and compare to the IP?
18:36:55 <elliott> Might be tricky to do portably :P
18:37:08 <Gregor> I can't compare to the IP.
18:37:09 <Gregor> This is C.
18:37:38 <Gregor> I think I'm gonna have to switch back to my old solution :(
18:37:41 <elliott> Gregor: Call record() at the very top of the function
18:37:44 <elliott> Gregor: Compare to the address of the function
18:37:53 <Gregor> elliott: Hello, prologue?
18:38:00 <Gregor> elliott: I do that to find the prologue anyway.
18:38:01 <elliott> Gregor: Yes, so find out how large the prologue is
18:38:05 <elliott> And subtract that from the return value
18:38:06 -!- Ngevd has joined.
18:38:08 <elliott> return blah
18:38:10 <elliott> You know what I mean
18:38:16 <Ngevd> HELLO!
18:38:32 -!- ais523 has joined.
18:38:35 <elliott> Gregor: Of course that means you have to detect the prologue in some other way, but... here's an idea
18:38:42 <Gregor> Oh thank god.
18:38:44 <elliott> Gregor: Just scan the function code for the address of record.
18:38:45 <Gregor> The return address is right.
18:38:49 <Gregor> So the bug is elsewhere.
18:38:50 <elliott> Then you just need to know how long "CALL" is.
18:38:51 <Ngevd> Gregor, how goes IOCCC?
18:38:59 <Gregor> Ngevd: My new version is either better or worse.
18:39:22 <Ngevd> Like that comic my dad reads from time to time!
18:39:34 <elliott> Gregor: What WAS your old version?
18:39:39 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
18:39:51 <Gregor> elliott: The version you've seen...
18:40:05 <elliott> Gregor: I have no idea how it actually JITted :P
18:40:09 <Gregor> Oh X-D
18:40:33 <Gregor> It had a separate function per each template, detected the absolute minimum prologue/epilogue, then copied out the appropriate parts from each function.
18:40:40 <Gregor> It was very sensitive to varying pro/epilogues.
18:40:46 <elliott> Heh
18:42:36 -!- Phantom_Hoover has joined.
18:44:05 <CakeProphet> friendship aneurysm.
18:47:41 <CakeProphet> remind me not to read tvtropes stuff about homestuck anymore.
18:47:44 <CakeProphet> it's a genuine waste of time.
18:54:25 <CakeProphet> Gregor: dude so what if you like JIT from the future.
18:54:36 <CakeProphet> you just have to compile the program sometime in the future.
18:55:26 <CakeProphet> actually no you'd want to JIT in the future
18:55:31 <CakeProphet> so your future-JIT can take as much time as it wants
18:55:43 <CakeProphet> and the present-JIT will just grab code from the future.
18:55:52 <CakeProphet> this is all totally feasible in Feather, I imagine.
18:56:40 <Gregor> elliott: Hm, VAX is definitely doing something skwonky with return addresses ...
18:57:02 <elliott> Gregor: Just google, man, VAX's insanities will be well-documented.
18:57:10 <Gregor> I'm tryin'!
19:01:43 <Gregor> 111111:42455
19:01:43 <Gregor> 111112:111112
19:01:43 <Gregor> 111113:1
19:01:43 <Gregor> 111121:8
19:01:43 <Gregor> 111122:1
19:01:43 <Gregor> 111123:1
19:02:00 <Gregor> Literals and the calculated size for the code to generate that literal.
19:02:02 <CakeProphet> mmmm numbers
19:02:36 <elliott> Gregor: ...111112 bytes to generate 111112?
19:02:46 <Gregor> elliott: Shocking, innit!
19:03:00 <elliott> Gregor: But... isn't that just a mov...
19:03:19 <Gregor> elliott: It's certainly not 111112 bytes worth of bullshit X-D
19:04:05 <CakeProphet> ARE YOU SURE???
19:04:29 <Gregor> Quite :P
19:04:42 <Gregor> OMG ...
19:04:46 <Gregor> I think I figured out what's going on X-D
19:05:00 <Gregor> All my literals are in the same range as valid addresses X-D
19:05:16 <Gregor> So the heuristic for determining whether it's an address or not goes all shitty.
19:06:11 <CakeProphet> ..gross
19:07:18 <CakeProphet> I'm still really confused why 111112 requires 111112 bytes to generate...
19:07:52 <CakeProphet> while other increments of previous numbers take 1 or whatever.
19:07:57 <Gregor> It doesn't, it was the heuristic that was wrong.
19:08:10 <CakeProphet> oh good. :)
19:08:38 <Gregor> VAX can only generate the value 111112 by incrementing 0 111112 times, not by generating 111111 and incrementing it.
19:08:52 * CakeProphet mind blows.
19:09:21 <Gregor> 111111:80
19:09:22 <Gregor> 111112:0
19:09:22 <Gregor> 111113:0
19:09:22 <Gregor> 111121:0
19:09:22 <Gregor> 111122:0
19:09:24 <Gregor> Gettin' better :P
19:09:55 <CakeProphet> Gregor: well, unless generating a number n requires that you generate n-1 and then increment, and generating 0 is the base case.
19:10:00 <CakeProphet> then those two statements are equivalent. :>
19:11:11 <CakeProphet> but anyway that sounds really dumb.
19:11:26 <CakeProphet> maybe you shouldn't use VAX
19:11:46 <Gregor> I'm improving my heuristic :P
19:11:50 <elliott> The problem with arguing with idiots on reddit for fun is that you have to deal with idiots on reddit.
19:11:53 <Gregor> Ya never know, this may be what was broken on SPARC too.
19:12:18 <CakeProphet> elliott: I thought you would have figured that out earlier. :P
19:12:44 <Gregor> 111111:80
19:12:44 <Gregor> 111112:1
19:12:45 <Gregor> 111113:3
19:12:45 <Gregor> 111121:60
19:12:47 <Gregor> YOU VAXY PIECE OF GARBAGE
19:12:58 <Gregor> Why are there so many ambiguous constants in my stack :'(
19:13:16 <CakeProphet> not enough popping
19:13:22 <CakeProphet> if you pop things then there won't be anything at all
19:13:25 * CakeProphet is awesome logic
19:14:17 <elliott> "APA stands for Associative Processing Array, a kind of content-addressable memory. Just memory. How do you compute using just memory? The operations are done right there, near the cells where your bits are kept. No need to read your data word by word into a processor, than write it back - rather, your operations run in parallel, inside the memory, on every data word! SIMD operations on steroids."
19:14:33 <elliott> Gregor: Why not pad out the constants?
19:14:38 <elliott> Push all-0s, push value, push all-0s
19:14:40 <elliott> Or something
19:14:55 <Gregor> This - is - C
19:15:11 <Gregor> 111111:80
19:15:11 <Gregor> 111112:68852
19:15:11 <Gregor> 111113:80
19:15:11 <Gregor> 111121:80
19:15:13 <Gregor> 111122:80
19:15:15 <Gregor> // Gettin' closer X-D
19:15:33 <CakeProphet> elliott: the operations are GONE RIGHT THERE?
19:15:35 <CakeProphet> fascinating.
19:15:40 <CakeProphet> s/GONE/DONE/
19:15:49 <elliott> Gregor: So?
19:15:55 <elliott> Gregor: f(0, value, 0)
19:16:01 <elliott> Assuming a contiguous stack...
19:16:22 <CakeProphet> contiguous. stack? ha ha ha ha
19:16:31 <Gregor> elliott: Remember that anything I do at detection time, I do at runtime.
19:16:36 <elliott> I like how CakeProphet just says stupid things all day.
19:16:45 -!- Darth_Cliche has joined.
19:16:46 <elliott> Gregor: You can erase arbitrary code sections with your void(void) funptr...
19:17:04 <Gregor> elliott: I haven't tested that yet :P
19:17:17 <elliott> Gregor: There we go then! No complaint :)
19:17:43 <CakeProphet> elliott: how are the operations done right there?
19:17:46 <CakeProphet> "WE"""W""W"E"E"E
19:17:47 <CakeProphet> R""W
19:18:00 <CakeProphet> :)
19:18:38 <CakeProphet> also
19:18:53 <Gregor> wtf, can I seriously have the return address at a different point on the stack depending on what literal I'm pushing X-D
19:19:05 <CakeProphet> how would you go about extending Haskell so that :: could be defined within Haskell as a normal operator?
19:20:19 <elliott> You mean (x::T) evaluating to x but with type T?
19:20:24 <elliott> You can't use operators as declarations, that's nonsense.
19:20:24 <CakeProphet> yes
19:20:36 <CakeProphet> not in vanilla Haskell, no.
19:20:38 <elliott> CakeProphet: Well that's easy-ish...
19:20:50 <CakeProphet> the question was to create a hypothetical extension in which you could do things like that.
19:21:07 <elliott> CakeProphet: Uh, so do you want the first thing I said, or do you want the second thing I said?
19:21:10 <elliott> You are contradicting yourself.
19:21:27 -!- copumpkin has changed nick to damocles.
19:21:30 <CakeProphet> no I'm not...
19:21:37 <elliott> Yep, you are.
19:21:39 <elliott> <elliott> You mean (x::T) evaluating to x but with type T?
19:21:41 <elliott> <CakeProphet> yes
19:21:42 <elliott> <elliott> You can't use operators as declarations, that's nonsense.
19:21:45 <elliott> <CakeProphet> the question was to create a hypothetical extension in which you could do things like that.
19:21:57 <elliott> You either want the first thing I said, or the second; first answer implies first, second answer implies second.
19:22:13 <Gregor> elliott: lol, I can push any literal but 1.
19:22:21 <elliott> Gregor: Just push 2 and subtract 1 :)
19:22:39 <Gregor> How can I subtract 1 with no 1! ;)
19:23:03 <CakeProphet> elliott: um?
19:23:09 <elliott> Gregor: Push 3 and subtract 2
19:23:29 <Gregor> elliott: I'd rather figure out wtf is going on thank you very much.
19:23:36 <elliott> Gregor: No this is the best.
19:23:43 <Gregor> :P
19:24:13 -!- damocles has changed nick to copumpkin.
19:24:46 <Ngevd> Push 2, dup, div
19:25:04 <CakeProphet> elliott: I suppose :: doesn't really worklike an operator, so, yeah..
19:25:20 <elliott> CakeProphet: There are two infix uses of ::.
19:25:27 <elliott> You have not specified which you want to make non-primitive.
19:25:41 <CakeProphet> elliott: oh, see...
19:25:46 <CakeProphet> the way you worded those "two things"
19:25:56 <CakeProphet> made it not actually sound like you were specifying the two things.
19:26:18 <CakeProphet> one was just a question, the other was you saying it was nonsensical.
19:26:34 <CakeProphet> >_> anyway
19:26:59 <CakeProphet> the one that's used within expressions, I suppose.
19:27:18 <CakeProphet> since that would be the easier one.
19:28:14 <Ngevd> Wouldn't that need a type type?
19:28:26 <elliott> CakeProphet: Dependent types make that pretty trivial.
19:28:30 <elliott> CakeProphet: Although (A :: x) is easier.
19:28:46 <elliott> That's (::) :: (a :: Type) -> a -> a
19:28:50 <elliott> (::) _ x = x
19:29:10 <elliott> You can flip (::) but that messes with the quantification, but I suppose it could work.
19:29:26 <elliott> (::) :: forall a. a -> (b::Type) -> (a ~ b) => a
19:29:27 <elliott> :p
19:40:17 -!- zzo38 has joined.
19:40:47 <Gregor> Aha
19:40:54 <Gregor> Something is clearing my variable.
19:40:57 <Ngevd> Trivia: greater is the only bi-directional Piet command
19:42:08 <CakeProphet> elliott: I wonder what else you could do with a type type.
19:42:18 <elliott> CakeProphet: Nothing much, without dependent typing.
19:45:06 <Gregor> looooooooooooooool buffer overflow.
19:45:10 <Gregor> I am the greatest C programmer.
19:45:43 <Ngevd> Gregor, is your program still less than or equal to 140 characters?
19:45:57 <Gregor> Ngevd: This is an unrelated program ;P
19:46:07 <Gregor> Ngevd: My tweetable interpreter will probably be another submission.
19:46:12 <Ngevd> I CARETH NOT
19:47:56 <CakeProphet> tweetable code. what an effective marketing strategy.
19:48:08 <CakeProphet> we need a tweetable OS!
19:48:33 <Gregor> Well wouldja look at that, I have a working dc on VAX :P
19:48:40 <CakeProphet> lies
19:50:13 <Ngevd> Youtube supports Feather!
19:50:49 <CakeProphet> woot?
19:51:25 <CakeProphet> http://channel9.msdn.com/Forums/Coffeehouse/Prototyping-New-Language-With-Haskell
19:51:29 <CakeProphet> someone has taken the name Feather
19:53:34 <Ngevd> It will fade into obscurity like Mondrian and the first Numberwang
19:53:57 <CakeProphet> NUMBERWANG
20:09:46 <Phantom_Hoover> Hey, Ngevd.
20:09:50 <Phantom_Hoover> I present to you http://www.matthen.com/numberwang/
20:10:26 -!- Slereah has joined.
20:10:36 -!- Slereah_ has quit (Ping timeout: 260 seconds).
20:10:55 -!- sebbu2 has joined.
20:11:01 -!- oerjan has joined.
20:12:41 <oerjan> hm
20:12:43 <Ngevd> Phantom_Hoover, oh god
20:12:56 <oerjan> Vorpal: YOUR METHOD AIN'T WORKING
20:13:52 <elliott> ?
20:14:01 <oerjan> `? ?
20:14:03 <HackEgo> ​? is wisdom
20:14:06 -!- sebbu has quit (Ping timeout: 260 seconds).
20:14:18 <olsner> hrrg, most people on that page seem to be playing WordWang, but somehow they manage to hit NumberWang anyway
20:14:46 <oerjan> supercalifragilisticexpialidocious
20:17:52 <Ngevd> Would it be possible to make a game in XML+SVG+XML Events+XSLT?
20:21:44 -!- tiffany has joined.
20:23:19 -!- tiffany has left.
20:26:23 <oerjan> <Phantom_Hoover> Dammit ais where are you when I'm being paranoid. <-- obviously reporting you to THEM
20:34:37 <oerjan> <elliott> Assuming a contiguous stack... <-- of spherical cows?
20:35:07 <Phantom_Hoover> Ngevd, YOUR MOVEWANG
20:37:06 <oerjan> <CakeProphet> elliott: I suppose :: doesn't really worklike an operator, so, yeah.. <-- i've been thinking before that (:: T) should be a legal section, it would be useful
20:37:28 <elliott> oerjan: I agree, but (x ::) would be much more fun.
20:37:36 <oerjan> scary
20:38:36 <elliott> oerjan: quick, name (a -> b) -> Tagged a b
20:38:39 <oerjan> but then in some sense that's how System F/Core implements polymorphic values
20:38:46 <elliott> (so you can e.g. do "foo bitSize :: Tagged Word32 Int"...)
20:38:53 <elliott> and yeah
20:39:15 <Ngevd> Phantom_Hoover, your move
20:39:36 <elliott> Ngevd: -wang
20:39:50 <oerjan> elliott: um there's no way to implement that, since you don't actually _have_ a b.
20:40:09 <elliott> oerjan: It's for converting things that use (a -> b) as (Tagged a b), silly :P
20:40:18 <oerjan> oh right
20:40:22 <elliott> Implementation is \f -> Tagged . f $ error "YOU LIED TO ME"
20:40:45 <oerjan> elliott: phantomize
20:41:02 <Phantom_Hoover> Ngevd, the game continueswang.
20:41:03 <elliott> oerjan: hoover :: (a -> b) -> Tagged a b
20:41:15 <oerjan> O KAY
20:41:34 <Ngevd> Your turn
20:42:01 <Ngevd> wang
20:42:31 <elliott> ais523: oh, hi
20:42:38 <oerjan> elliott: or tagomize (far side reference)
20:42:38 <ais523> hi btw
20:42:46 <elliott> ais523: "btw"?
20:42:47 <Phantom_Hoover> Ngevd, argh, you continuewang to outfox me.
20:43:02 <ais523> elliott: it was in response to your "oh, hi"
20:43:10 <elliott> I was going to ask ais523 whether he was termcasting or not but then I realised he wasn't \unfoogy.
20:43:11 <ais523> I was trying to find an even more noncommital way to say it
20:43:29 <ais523> and I'm not playing right now; in fact, I'm at work, but that's just because I haven't gone home yet
20:43:35 <Phantom_Hoover> Hey, ais523, can motherboards dissolve in slightly humid air?
20:43:41 <ais523> I was with friends earlier, and it was much nearer home than work
20:43:52 <ais523> Phantom_Hoover: err, they're not water-soluble, as far as I know
20:43:53 <Phantom_Hoover> (fffff, case doesn't arrive until Monday.)
20:44:03 <Phantom_Hoover> ais523, good, good.
20:44:23 <ais523> copper tracks can be damaged by humidity, but any sane motherboard manufacturer knows that and will lacquer them to prevent them being damaged like that
20:44:42 <ais523> (an easy way to tell if copper's been lacquered or not: if it hasn't been, it tend to be copper-coloured rather than green)
20:45:20 <ais523> (transparent lacquer exists but isn't used commercially because it's more expensive than the green sort; it's pretty good for applying by hand, though)
20:46:11 <Phantom_Hoover> OK basically what I'm saying is will leaving the motherboard, CPU and RAM in an antistatic bag with the opening folded over for 6 days in a room which is occasionally used for washing up result in it exploding?
20:46:14 <oerjan> just use a chlorine atmosphere, dugh
20:46:16 <oerjan> *-g
20:47:05 <Phantom_Hoover> Ngevd, do you concedewang?
20:47:08 <elliott> eww, why would you implement an API like that
20:47:24 <Ngevd> Phantom_Hoover, nah, had to empty the dishwasher
20:47:43 <Ngevd> Phantom_Hoover, your turn
20:47:44 <oerjan> application painful interface
20:48:24 <ais523> Phantom_Hoover: it should be fine
20:48:38 <ais523> you'll want to make sure they're dry before actually switching the thing on
20:48:50 <ais523> but the motherboard is exposed to humidity inside the case just as much as it is outside it
20:48:54 <ais523> as it relies on air for cooling
20:49:15 <Phantom_Hoover> I am seriously beginning to doubt Colloson's impartiality.
20:50:42 <Phantom_Hoover> Ngevd, playwang.
20:52:12 <ais523> elliott: which API is that?
20:52:18 <Ngevd> And you, Phantom_Hooverwang
20:52:25 <elliott> ais523: this opencl binding
20:52:39 <Phantom_Hoover> This is getting ridiculouswang.
20:53:11 <Ngevd> Yourwang turn
20:53:52 <ais523> elliott: tell me when they've stopped, if I'm still here? I just /ignored both of them
20:54:04 <Phantom_Hoover> And yours.
20:54:06 <Phantom_Hoover> Wang.
20:54:22 <olsner> welcome to #esowang
20:54:30 <Ngevd> And yourswang
20:54:42 <CakeProphet> I don't really think (x ::) could be used in normal Haskell.
20:54:47 <CakeProphet> er, usefully
20:54:49 <Phantom_Hoover> -_-wang
20:55:21 <Ngevd> I'm goodwang at this
20:55:33 <CakeProphet> for example, map (x ::) [SomeTypes, GoHere]
20:55:36 <ais523> :t (x ::)
20:55:37 <lambdabot> parse error on input `)'
20:55:39 <CakeProphet> would not type.
20:55:51 <ais523> hmm, is the discussion about the fact that that doesn't parse?
20:55:51 <zzo38> CakeProphet: That seem non-meaningful
20:55:52 <CakeProphet> Ngevd: mewang toowang
20:55:56 <CakeProphet> ais523: no
20:56:07 <CakeProphet> it's a continuation of a discussion about :: as an operator
20:56:07 <ais523> oh right, I confused Haskell with OCaml
20:56:13 <ais523> where :: is a perfectly reasonable operator
20:56:37 <Ngevd> I am scarewangly good at this
20:56:46 <zzo38> Not only would (x ::) not be a meaningful function, but you cannot map in that way anyways since the types don't match
20:56:57 <CakeProphet> zzo38: this is what I was saying.
20:57:06 <CakeProphet> but it could be a meaningful function in a dependently typed language.
20:57:34 <elliott> <ais523> elliott: tell me when they've stopped, if I'm still here? I just /ignored both of them
20:57:44 <elliott> ais523: you can check the logs yourself...
20:57:48 <ais523> well, OK
20:57:50 <zzo38> Then, maybe you could add a dependent type extension to Haskell and then add (x ::) to that extension
20:57:53 <ais523> but that would mean actually looking at all the wanging
20:57:54 <CakeProphet> ais523: zzo38: scroll up just a bit to get the context.
20:58:15 <oerjan> :t (:: Int)
20:58:16 <lambdabot> parse error on input `::'
20:58:22 <oerjan> ;_;
20:58:28 <CakeProphet> (:: T) seems more useful in normal Haskell usage.
20:58:43 <ais523> :t (\x :: Int -> x)
20:58:44 <lambdabot> Illegal result type signature `Int'
20:58:44 <lambdabot> Result signatures are no longer supported in pattern matches
20:58:44 <lambdabot> In a lambda abstraction: \ x :: Int -> x
20:58:51 <ais523> :t (\x -> x :: Int)
20:58:52 <lambdabot> Int -> Int
20:58:54 <ais523> there we go
20:59:03 <Ngevd> Phantom_Hoover, it's your turn
20:59:06 <Deewiant> ?ty (`asTypeOf` (undefined :: Int))
20:59:07 <lambdabot> Int -> Int
20:59:23 <ais523> @src asTypeOf
20:59:23 <lambdabot> asTypeOf = const
20:59:34 <Phantom_Hoover> This is so stupid.
20:59:42 <Phantom_Hoover> How does it even decide numbers?
20:59:43 <ais523> oh, I see, asTypeOf has a type annotation in order to do its astypeofing
20:59:45 <Ngevd> No idea
20:59:49 <Ngevd> But it's your turn
20:59:50 <Deewiant> ?ty asTypeOf
20:59:51 <lambdabot> forall a. a -> a -> a
20:59:53 <CakeProphet> Phantom_Hoover doesn't get the joke.
20:59:54 <Deewiant> (Yep)
21:00:03 <ais523> I thought the impl would be something like a conditional that always took the same branch, I forgot you didn't /have/ to use the inferred types
21:00:05 <CakeProphet> ais523: correct
21:00:43 <CakeProphet> I guess const sort of is a conditional that always takes the same branch. :P
21:01:06 <Ngevd> Your turn, Phantom_Hoover
21:01:08 <oerjan> well yes, const is the church encoding of True
21:01:17 -!- GreaseMonkey has joined.
21:01:17 -!- GreaseMonkey has quit (Changing host).
21:01:17 -!- GreaseMonkey has joined.
21:01:17 <CakeProphet> oerjan: I was wondering if someone would throw that in :P
21:01:36 <Ngevd> Your turn, Phantom_Hoover
21:01:44 <CakeProphet> >_>
21:01:58 <elliott> ais523: oerjan: hmm, would a language that forced you to use the most general inferred types be TC?
21:02:06 <oerjan> actually asTypeOf is even closer, it also has the expected type for a church encoded boolean
21:02:08 <elliott> I think yes, since Haskell without type signatures and type classes is TC
21:02:24 <CakeProphet> elliott: my guess would be yes, yes.
21:02:27 <CakeProphet> :)
21:02:34 <ais523> elliott: I don't see why it wouldn't be TC at all
21:02:35 <oerjan> sounds like it
21:02:40 <ais523> especially as I think you could write astypeof in it
21:02:45 <Ngevd> Phantom_Hoover, your turn
21:03:08 <CakeProphet> Ngevd: hi
21:03:42 <CakeProphet> sir, sir. I think you need to calm down, sir.
21:03:56 <CakeProphet> sir?
21:04:06 <Ngevd> Ngevd, no wait, that's me
21:04:10 <Ngevd> CakeProphet, I REFUSE
21:04:14 <CakeProphet> Ngevd: your turn, sir.
21:04:19 <CakeProphet> your turn to calm down.
21:04:23 <oerjan> let asTypeOf x y = if True then x else y
21:04:27 <Ngevd> NEEEEVEEEER
21:04:28 <oerjan> *-let
21:04:40 <CakeProphet> starlet? :P
21:04:48 <oerjan> heh that's actually circular, i think
21:05:14 <olsner> well, time to go, see you in about a week
21:05:24 <CakeProphet> olsner: bye paste olsner
21:05:33 <olsner> paste?
21:05:35 <CakeProphet> I will say hello to fugutur you for you.
21:05:35 <Ngevd> Phantom_Hoover, your godwang turn!
21:05:43 <olsner> oh, past
21:05:49 <oerjan> ais523: hm i'm not sure you could do it with just functions
21:06:07 -!- olsner has quit (Quit: Leaving).
21:06:28 <ais523> oerjan: why do you think that definition of asTypeOf above is circular? it's how I'd implement it
21:06:30 <CakeProphet> oerjan: iff c a b = if c then a else b
21:06:31 <CakeProphet> :P
21:06:54 <oerjan> ais523: because as i said above, asTypeOf is the closest thing to a church encoding of True
21:07:00 <ais523> ah, I see
21:07:33 <ais523> what about just defining church-true and church-false by hand, then doing a complicated computation that returns one or the other?
21:07:43 <ais523> that'd force the results to be the same type
21:07:47 <CakeProphet> oerjan: doesn't mean you have to construct every language the same way.
21:07:54 <ais523> it doesn't even have to be that complicated, it just has to look to the type system like it might return false
21:08:02 <oerjan> well the question is _can_ you make that
21:08:39 <elliott> oerjan: what about (not (not true))?
21:08:44 <elliott> oh not = flip
21:08:52 <ais523> > let true x y = x; let false x y = y; let nand x y = x (y false true) (y true true)
21:08:53 <lambdabot> <no location info>: parse error (possibly incorrect indentation)
21:09:13 <CakeProphet> :t flip (flip const)
21:09:14 <lambdabot> forall a a1. a -> a1 -> a
21:09:14 <oerjan> CakeProphet: well i'm saying that using True is cheating because you could not actually recode True in terms of just functions while preserving the type restriction
21:09:17 <ais523> :t let true x y = x in let false x y = y in let nand x y = x (y false true) (y true true) in nand
21:09:18 <lambdabot> forall t t1 t2 t3 t4. (t -> t -> t1) -> ((t2 -> t2 -> t2) -> (t3 -> t4 -> t3) -> t) -> t1
21:10:07 <ais523> well, that forced a t2->t2->t2 into the middle of the expression
21:10:09 <ais523> :t let true x y = x in let false x y = y in let nand x y = x (y false true) (y true true) in nand true
21:10:10 <lambdabot> forall t t1 t2 t3. ((t1 -> t1 -> t1) -> (t2 -> t3 -> t2) -> t) -> t
21:10:30 <elliott> ais523: what a terrible way to fix it
21:10:33 <CakeProphet> oerjan: so? :P
21:10:38 <elliott> ais523: what type do you think (let true x y = x; let false x y = y; let nand x y = x (y false true) (y true true)) has?
21:10:48 <ais523> elliott: not a very simple one
21:11:01 <elliott> ais523: there is no expression, where is your "in" clause?
21:11:14 <elliott> ais523: more importantly, you never close any of the "let"s
21:11:20 <elliott> :t let true x y = x; false x y = y; nand x y = x (y false true) (y true true) in nand
21:11:20 <ais523> elliott: you're looking at the wrong line
21:11:21 <lambdabot> forall t t1 t2 t3 t4. (t -> t -> t1) -> ((t2 -> t2 -> t2) -> (t3 -> t4 -> t3) -> t) -> t1
21:11:30 <elliott> ais523: no, I'm not, I'm saying you fixed it in a ridiculous manner
21:11:31 <ais523> <ais523> :t let true x y = x in let false x y = y in let nand x y = x (y false true) (y true true) in nand
21:11:50 <ais523> elliott: btw, the version without an in works just fine in OCaml
21:11:58 <ais523> the interp responds by telling you the name and type of everything you defined
21:12:02 <ais523> and the value, if it's not a function
21:12:13 <CakeProphet> @hoogle a -> a -> a
21:12:14 <lambdabot> Prelude asTypeOf :: a -> a -> a
21:12:14 <lambdabot> Network.BufferType buf_append :: BufferOp a -> a -> a -> a
21:12:14 <lambdabot> Prelude atan2 :: RealFloat a => a -> a -> a
21:12:20 <elliott> ais523: evaluating syntactic nonsense like that is not a feature
21:12:31 <ais523> but it's not nonsense
21:12:40 <ais523> it's something that you'd write a lot in an actual program
21:12:48 <elliott> no it isn't, because it isn't valid haskell
21:12:51 <ais523> in a program you'd typically follow it with something that /used/ the definitions
21:12:53 <elliott> "let" is rare in haskell, anyway
21:13:03 <elliott> ais523: similarly, int main() { is valid C
21:13:07 <ais523> but in a REPL, that's typically going to be on a future line
21:13:11 <copumpkin> ais523: what would they scope over?
21:13:16 <elliott> yes, which is why "let x = y" works in GHCi
21:13:17 <ais523> copumpkin: future lines in the same REPL
21:13:17 <copumpkin> ais523: in ghci, you can write let without in
21:13:22 <oerjan> oh hm i think i got it, using how lambdas are monomorphic internally
21:13:23 <elliott> because it's a do block
21:13:39 <elliott> but "let a = b; let c = d" is most assuredly not an expression
21:13:45 <Ngevd> Phantom_Hoover, your turn
21:13:47 <ais523> elliott: I was using ; as newline
21:13:52 <ais523> is that not valid in Haskell?
21:14:13 <elliott> ais523: that's a bit of a loaded question; I'm sure "a;b" doesn't mean "a\nb" in OCaml...
21:14:31 <oerjan> :t (\id x y -> (\x y -> x) (id x) (id y)) (\x -> x)
21:14:32 <lambdabot> forall t. t -> t -> t
21:14:34 <elliott> anyway, no, because the layout isn't right
21:14:38 <ais523> I don't think OCaml needs anything there at all, it isn't whitespace-sensitive
21:14:56 <ais523> # let a = 1 let b = 2 ;;
21:14:57 <elliott> oh hmm the layout is okay
21:14:57 <ais523> val a : int = 1
21:14:59 <ais523> val b : int = 2
21:14:59 <elliott> er oh wait
21:15:08 <elliott> yeah no
21:15:10 <elliott> the layout doesn't work out
21:15:11 <ais523> whereas Haskell is, so you can't just write space to mean newline
21:15:13 <elliott> because the "let"s aren't aligned
21:15:18 <elliott> ais523: do { let a = 3; let b = 4; ... }
21:15:23 <elliott> perfectly valid
21:15:33 <Deewiant> ?ty do let { a = b }; let { c = d }; Just 1
21:15:34 <lambdabot> forall t. (Num t) => Maybe t
21:15:52 <Deewiant> ?ty do { let a = b ; let c = d; Just 1 } -- elliott
21:15:53 <lambdabot> parse error on input `}'
21:16:03 <CakeProphet> :t (\c a b -> [a, b] !! fromEnum c)
21:16:04 <elliott> Deewiant: err, right, ofc
21:16:04 <lambdabot> forall a a1. (Enum a1) => a1 -> a -> a -> a
21:16:09 <ais523> :t do let { a = b } ; let { c = d } ; return 1
21:16:10 <lambdabot> forall t (m :: * -> *). (Num t, Monad m) => m t
21:16:20 <elliott> conversely:
21:16:25 <elliott> do let {a = 3}; let {b = 4}
21:16:27 <elliott> return (a+b)
21:16:28 <elliott> is perfectly valid
21:16:45 <elliott> basically all we're learning here is that ais523 doesn't know Haskell's layout rules, but this is irrelevant anyway as lambdabot isn't a REPL
21:16:48 <elliott> it's an expression evaluator
21:16:56 <ais523> CakeProphet: using !! there is cheating, I think, but the same idea can be done without it, I Think
21:16:59 <ais523> *think
21:17:22 <elliott> CakeProphet: you can't construct lists like that with the lambda calculus
21:17:37 <ais523> :t \a b -> case [a,b] of [x,_] = x; otherwise = x
21:17:38 <lambdabot> parse error on input `='
21:17:40 <CakeProphet> elliott: erm, why did the topic suddenly switch to lambda calculus?
21:17:43 <ais523> :t \a b -> case [a,b] of [x,_] -> x; otherwise -> x
21:17:44 <lambdabot> Expr -> Expr -> Expr
21:17:47 <elliott> that was always the topic
21:17:58 <CakeProphet> I thought it was "can you write asTypeOf with functions and no explicit type declarations in Haskell"
21:17:58 <ais523> elliott: so that's a solution abusing the type of cons
21:18:00 <elliott> ais523 also doesn't know how scoping works
21:18:02 <ais523> :t \a b -> case [a,b] of [x,_] -> x; otherwise -> a
21:18:02 <lambdabot> forall t. t -> t -> t
21:18:05 <ais523> that's what I meant
21:18:13 <ais523> elliott: not scoping, just a thinko
21:18:17 <ais523> although a pretty funny one
21:18:32 <CakeProphet> that was the original question anyway.
21:18:35 <ais523> that's actually flip astypeof, but I don't care
21:18:38 <oerjan> CakeProphet: well, lists are not functions
21:18:53 <Ngevd> `echo "ais523: wiki spam"
21:18:54 <oerjan> and also, i did it above
21:18:55 <HackEgo> ​"ais523: wiki spam"
21:18:58 <oerjan> :t (\id x y -> (\x y -> x) (id x) (id y)) (\x -> x)
21:18:59 <lambdabot> forall t. t -> t -> t
21:19:10 <elliott> oh i didn't see you do that
21:19:17 <elliott> oerjan: that doesn't work in lambda calculus though :P
21:19:34 <oerjan> elliott: it works in lambda calculus with the hindley-milner type system
21:19:34 <elliott> hmm, which lambda calculus are we even talking about?
21:19:40 <elliott> it's a nonsense question in untyped LC ofc
21:19:46 <CakeProphet> the one that is Haskell.
21:19:46 <elliott> STLC seems like the interesting one here
21:19:48 <oerjan> which is the one which requires let for polymorphism
21:19:54 <ais523> what /is/ up with the excela spambots?
21:20:04 <ais523> they seem to be running articles through babelfish twice or something
21:20:06 <Phantom_Hoover> Best Numberwang.
21:20:14 <elliott> ais523: they love excela
21:20:20 <Phantom_Hoover> Ngevd, you might as well just give in now, you won't top that one.
21:20:33 <ais523> also, what is that language?
21:20:38 <ais523> it seems to allow embedded Ruby, at least
21:20:44 <CakeProphet> "at least"
21:20:51 <Ngevd> Phantom_Hoover, you're rightwang
21:20:59 <ais523> well, it's obviously not identical to Ruby
21:21:02 <elliott> ais523: http://esolangs.org/wiki/Cobol_on_Cogs; delete for offtopic
21:21:02 <ais523> and yet it's incredibly similar
21:21:14 <Ngevd> Phantom_Hoover, but we have equal score, call it a tie?
21:21:21 <Phantom_Hoover> Yeswang.
21:21:32 <ais523> elliott: what do you think of Smjg's comment on the talk page?
21:21:38 <CakeProphet> ML on your mom OH SNAP
21:21:39 <Ngevd> elliott, tell ais523 to unblock us
21:21:43 <ais523> I think it's misinterpreting mine
21:21:56 <elliott> ais523: "misinterpreting mine"?
21:22:03 <elliott> oh, I see
21:22:03 <ais523> my comment on the talk page
21:22:12 <elliott> I think so too, but am not sure of the relevance
21:23:15 <oerjan> elliott: you are joking about cobol on cogs, of course.
21:23:31 <elliott> oerjan: ?
21:23:51 <oerjan> no way that's not esoteric :P
21:24:01 <CakeProphet> C on Crack. Perl on Propellers. Scheme on Speed. Python on Poop. C# on This. Is. Stupid.
21:24:39 <elliott> oerjan: pls no promotion of the "anything unserious is esoteric" meme :(
21:24:46 <elliott> that's what got us LOLCODE
21:25:03 * oerjan promotes with the swatter -----###
21:25:23 <CakeProphet> esolangs are all about the THEORETICAL AWESOME of course.
21:25:27 <ais523> elliott: I think lolcode is esoteric
21:25:34 <ais523> it's a thematic language; it's uninteresting semantically
21:25:41 <ais523> but it fits the requirements to be an esolang
21:25:48 <CakeProphet> Glass is an esolang
21:25:57 <elliott> ais523: http://esolangs.org/wiki/Talk:Cobol_on_Cogs#Off-topic
21:26:01 <CakeProphet> and it's pretty much just an OO stack machine with weird syntax.
21:26:10 <elliott> you can wait for someone else to express an opinion, I suppose :P
21:26:14 <ais523> elliott: I'll wait for other comments, like usual
21:26:19 <elliott> CakeProphet: how many OO stack machines are there?
21:26:29 <CakeProphet> I know of Python.
21:26:52 <CakeProphet> well
21:26:57 <CakeProphet> the leading implementation of Python
21:27:00 <oerjan> more like stuck machine *HACK* *COUGH* *WHEEZE*
21:27:03 <CakeProphet> but not python itself I guess.
21:28:08 <oerjan> don't get stuck by putting stock in stack machines, stick to stg
21:28:25 <oerjan> wait that has a stack. strike that.
21:31:43 <elliott> stackless spineless tagless g-machine
21:31:48 <CakeProphet> !glass {M[m(_o)O!"Hello World!"(_o)o.?]}
21:31:51 <EgoBot> Hello World!
21:32:04 <CakeProphet> hmmm
21:32:06 <monqy> hello world
21:32:09 <elliott> I wonder if there are any processors with a cactus stack.
21:33:52 <oerjan> and yet another spam
21:34:01 -!- MDude has quit (Ping timeout: 276 seconds).
21:34:32 <CakeProphet> !glass {M[m(_o)O!(_a)A!<2><2>(_a)a.?(_o)(on).?]}
21:34:32 <EgoBot> 4
21:35:37 -!- elliott_ has joined.
21:35:39 -!- elliott has quit (Read error: Connection reset by peer).
21:41:48 <zzo38> Now I made ligatures work in the Haskell program for DVI processing
21:41:59 -!- pikhq has joined.
21:42:18 <CakeProphet> !glass {M[m(_o)O!(_a)A!n<5>=t<1>=/ntnn1(_a)s.?(_a)m.?=nn1(_a)s.?=\t(_o)(on).?]}
21:42:18 <EgoBot> 0
21:42:20 <zzo38> (It is not needed to read a DVI file, but kerning/ligature is useful when writing DVI files)
21:42:22 <CakeProphet> :(
21:42:34 <CakeProphet> oh rite
21:42:43 -!- DCliche has joined.
21:43:20 <CakeProphet> !glass {M[m(_o)O!(_a)A!n<5>=t<1>=/nttn(_a)m.?=nn1(_a)s.?=\t(_o)(on).?]}
21:43:20 <EgoBot> 0
21:43:23 <CakeProphet> :(
21:43:26 <monqy> 0
21:44:51 -!- Darth_Cliche has quit (Ping timeout: 240 seconds).
21:45:00 -!- pikhq_ has quit (Ping timeout: 258 seconds).
21:46:57 <CakeProphet> !glass {M[m(_o)O!(_a)A!n<5>=t<1>=/nttn(_a)m.?=nn<1>(_a)s.?=\t(_o)(on).?]}
21:46:57 <EgoBot> 0
21:46:59 <CakeProphet> :(
21:47:17 <CakeProphet> Gregor: help make my factorial work.
21:47:43 <Phantom_Hoover> Oh god, Children in Need is on.
21:47:54 <Phantom_Hoover> Someone distract me before I start wanting to kick babies.
21:48:08 <CakeProphet> Phantom_Hoover: that's Wordwang!
21:49:46 <oerjan> that's quaternionwang!
21:54:38 <CakeProphet> !glass {M[m(_o)O!(_a)A!(_n)<5>=(_t)<1>=/(_n)(_t)(_t)(_n)(_a)m.?=(_n)(_n)<1>(_a)s.?=\(_t)(_o)(on).?]}
21:54:38 <EgoBot> 0
21:54:41 <CakeProphet> nsjentkjwerkhsdkfhwert
21:56:51 <CakeProphet> oh
21:57:34 <CakeProphet> !glass {M[m(_o)O!(_a)A!(_n)<5>=(_t)<1>=/(_n)(_t)(_t)*(_n)*(_a)m.?=(_n)(_n)*<1>(_a)s.?=\(_t)*(_o)(on).?]}
21:57:34 <EgoBot> 120
21:57:38 <CakeProphet> yaaaaaaaay
22:00:47 <Phantom_Hoover> "Homeomorphic to a 3-sphere." — Minecraft title screen text.
22:01:07 <Phantom_Hoover> Protip, Notch: if you're going to make glib little references to maths, *get them right*.
22:01:37 <CakeProphet> Phantom_Hoover: you assume that most people actually care that it's correct.
22:01:53 <elliott_> Phantom_Hoover totally said that.
22:02:15 <CakeProphet> Phantom_Hoover: I assume that you assume that most people actually care that it's correct.
22:03:17 <oerjan> well, does minecraft have a point at infinity? if so it could be right :P
22:03:29 <oerjan> oh hm there's that height limit
22:03:41 <oerjan> so not likely
22:04:01 <elliott_> oerjan: it's infinite in two dimensions and finite in one
22:04:31 <elliott_> oerjan: But IF YOU'D HELP ME WITH MY PLANETARY MODEL, I think an Elliottcraft planet would be a 3-sphere
22:04:33 <oerjan> homeomorphic to a 3-ball then, probably. assuming open.
22:04:40 <Phantom_Hoover> FSVO 'infinite'.
22:04:50 <elliott_> Phantom_Hoover: It's infinite in intention and in practice.
22:04:51 <CakeProphet> you assume he is referring to the topological space of the minecraft world.
22:04:53 <CakeProphet> how foolish.
22:05:08 <Phantom_Hoover> Yes, because homeomorphism is a topological thing.
22:05:35 <elliott_> Phantom_Hoover: When will you realise that CakeProphet just says dumb things as his special version of a "joke".
22:06:00 <CakeProphet> no that wasn't a joke.
22:06:04 <oerjan> elliott_: i don't see planets as being 3-spheres, really
22:06:15 <elliott_> oerjan: they're infinite in three dimensions
22:06:21 <elliott_> oerjan: Elliottcraft space travel involves moving in the fourth :P
22:06:25 <Phantom_Hoover> elliott_, that's not a 3-sphere.
22:06:31 <elliott_> Oh, hmm.
22:06:44 <elliott_> Yeah, oops.
22:06:49 <Phantom_Hoover> Also you realise that you're recreating Madoka-Kaname's stupid realm system.
22:06:53 <oerjan> R^3 + a point at infinity
22:06:58 <elliott_> Phantom_Hoover: Not really?
22:07:10 <elliott_> Phantom_Hoover: The idea is proper space, but I don't really feel like sacrificing infinite worlds.
22:07:27 <Phantom_Hoover> wait
22:07:27 <Phantom_Hoover> what
22:07:33 <Phantom_Hoover> if you made the point at infinity
22:07:38 <Phantom_Hoover> the access point
22:07:44 <Phantom_Hoover> (This makes literally no sense.)
22:07:51 <CakeProphet> elliott_: I was saying that "homeomorphic to a 3-sphere" doesn't imply that he's specifically referring to the shape of the minecraft world, or well, anything. Especially considering the tongue-in-cheek nature of those title things.
22:07:52 <oerjan> sacrificing infinite worlds should be the goal of any respectable galactic overlord
22:09:13 -!- sebbu2 has changed nick to sebbu.
22:09:36 <elliott_> Phantom_Hoover: What if you could get four-dimensional TNT so you could blow up an entire planet with just one block's worth of damage.
22:09:52 <Phantom_Hoover> I don't know?
22:11:44 -!- sebbu2 has joined.
22:11:44 -!- sebbu2 has quit (Changing host).
22:11:44 -!- sebbu2 has joined.
22:13:42 <elliott_> Phantom_Hoover: Gregor: "Danger Mouse co-creator Mark Hall dies after battle with cancer" ;______;
22:13:55 <elliott_> Oh good here's a more reliable source: http://www.bbc.co.uk/news/entertainment-arts-15792282
22:14:23 <Phantom_Hoover> noooo?
22:14:27 -!- sebbu has quit (Ping timeout: 240 seconds).
22:14:34 <elliott_> Phantom_Hoover: Why the question mark this is the SADDEST
22:15:15 <Phantom_Hoover> I'm sorry I never really watched Danger Mouse?
22:15:26 <Phantom_Hoover> I'll blame it on Except For Viewers In Scotland.
22:15:27 <elliott_> Phantom_Hoover: Your life is woefully incomplete?
22:16:15 <CakeProphet> elliott_: but hey, I could be worse; what if I got offended by tongue-in-cheek math references
22:16:31 -!- elliott_ has changed nick to elliott.
22:16:33 -!- elliott has quit (Changing host).
22:16:33 -!- elliott has joined.
22:17:00 <elliott> CakeProphet: ACCEPT
22:17:20 <CakeProphet> Phantom_Hoover: satisfactory answers to what if questions include "woah" or "dude"
22:17:27 <CakeProphet> or "woah dude"
22:17:39 <CakeProphet> elliott: I don't know how to accept silly invites.
22:17:44 <elliott> /join
22:17:44 <CakeProphet> I've yet to figure it out.
22:17:53 <CakeProphet> elliott: but that's not really accepting anything
22:17:55 <CakeProphet> I can do that anyway.
22:17:59 * CakeProphet is confused by these IRC customs.
22:18:01 <elliott> That's how you accept invites.
22:18:28 <Phantom_Hoover> CakeProphet, because it's not exactly tongue-in-cheek?
22:18:33 <CakeProphet> elliott: that makes no sense.
22:18:43 <elliott> CakeProphet: /join #esoteric-minecraft
22:18:53 <CakeProphet> but I can just do that anyway.
22:18:57 <CakeProphet> your invite is meaningless.
22:19:00 <CakeProphet> if there is no way to accept it
22:19:06 <Phantom_Hoover> It's screaming "look how clever I am, I know what a 3-sphere is" without actually /knowing/.
22:19:06 <CakeProphet> that is distinct from the normal way of joining channels.
22:19:10 <elliott> CakeProphet: JOIN NOW.
22:19:21 <CakeProphet> Phantom_Hoover: I bet Notch knows what a 3-sphere is.
22:19:22 <elliott> Invites allow you to join invite-only channels, for one.
22:19:37 <Phantom_Hoover> CakeProphet, he evidently doesn't know what either it or homeomorphism is.
22:20:00 <Ngevd> <elliott_> Phantom_Hoover: Gregor: "Danger Mouse co-creator Mark Hall dies after battle with cancer" ;______; <-- we should make an esolang in his memory
22:20:05 <CakeProphet> based on his tongue-in-cheek reference to them? :P
22:20:08 <CakeProphet> I'm not convinced.
22:20:46 <Phantom_Hoover> CakeProphet, *it's not isomorphic to the 3-sphere*.
22:20:52 <Phantom_Hoover> Not even *close*.
22:21:06 <CakeProphet> RIP mother of Brian Joseph Burton
22:21:30 <Phantom_Hoover> It's isomorphic to R^2×[0,1] in the ideal case.
22:21:31 <CakeProphet> er, co-father? I'm confused.
22:21:33 <elliott> CakeProphet: JOIN THE FUCKING CHANNEL
22:21:39 <CakeProphet> Phantom_Hoover: but uh...
22:21:41 <CakeProphet> okay nevermind
22:22:50 -!- ais523 has quit (Remote host closed the connection).
22:23:40 <zzo38> Did David R. Fuchs or Donald Knuth know about functional programming languages in designing DVI format or TeX? I am just curious.
22:23:48 -!- Patashu has joined.
22:24:29 <CakeProphet> Phantom_Hoover: it's entirely possible that he knows exactly what those things are and is referring to them in an absurd manner. for other examples of Notch saying absurd things see: many other title thingies.
22:24:44 <CakeProphet> and the fact that his possibly absurd title thingy uses the terminology incorrectly does not mean that he doesn't know what they are.
22:24:55 <elliott> CakeProphet: You don't actually play Minecraft, do you?
22:24:59 <CakeProphet> but that he has instead successfully pulled someone's strings.
22:25:01 <CakeProphet> elliott: nope
22:25:02 <elliott> I can assure you that Notch has no idea what he's talking about.
22:25:11 <elliott> And that the 3-sphere remark will be taken from someone else telling him it is.
22:25:38 <CakeProphet> but can you /know/?
22:25:38 <elliott> Now join the fucking channel
22:25:48 <CakeProphet> epistemology time
22:26:55 <CakeProphet> elliott: I refuse to concede to the demands of ruthless channel despots.
22:27:01 <elliott> Join or die.
22:27:36 <CakeProphet> you are not the catholic church / expanding Islamic empire / etc
22:28:26 <Phantom_Hoover> Expanding Islamic empire?
22:28:35 <CakeProphet> yes.
22:28:56 <Ngevd> Any particular Islamic empire?
22:29:03 <CakeProphet> I guess the Umayyad Caliphate? I dunno they probably did that in the Orthodox Caliphate too.
22:29:23 <CakeProphet> the one, that was the empire, that was islamic, back in the day, with the caliphates.
22:29:49 <Ngevd> Ottoman?
22:29:51 <CakeProphet> no.
22:30:30 <CakeProphet> I could explain it, or I could just link this http://en.wikipedia.org/wiki/Islamic_empire
22:31:13 <CakeProphet> I guess it is a pretty ambiguous term...
22:31:47 <CakeProphet> but yeah the caliphates expanded their empire by conquering people and then forcing them to either convert to Islam or die.
22:31:58 <CakeProphet> that empire is the one I was referring to.
22:32:47 <oerjan> i thought it was sort of, convert to islam or pay extra taxes, but i guess it varied a lot.
22:32:54 -!- Ngevd has changed nick to yorrick.
22:33:00 -!- yorrick has changed nick to Ngevd.
22:33:02 <elliott> `addquote <CakeProphet> but yeah the caliphates expanded their empire by conquering people and then forcing them to either convert to Islam or die. [...] <oerjan> i thought it was sort of, convert to islam or pay extra taxes, but i guess it varied a lot.
22:33:04 <HackEgo> 722) <CakeProphet> but yeah the caliphates expanded their empire by conquering people and then forcing them to either convert to Islam or die. [...] <oerjan> i thought it was sort of, convert to islam or pay extra taxes, but i guess it varied a lot.
22:33:09 <CakeProphet> oerjan: well, for monotheists yes
22:33:09 -!- Ngevd has changed nick to yorrick.
22:33:16 -!- yorrick has changed nick to Ngevd.
22:33:26 <CakeProphet> I was under the impression that they were not so merciful to polytheists.
22:33:38 <oerjan> yeah there was that dhimmi distinction
22:35:37 -!- sebbu2 has changed nick to sebbu.
22:35:46 <pikhq> Could've sworn it was something like "convert to Abrahamic monotheism or die, convert to Islam or pay taxes"
22:37:10 <oerjan> i read the zoroastrians were accepted as well, in iran
22:37:48 <pikhq> Yeah, they'd have a bit of trouble trying to kill them off; that was kinda *the* religion of Iran.
22:40:01 -!- tica_chan has joined.
22:40:40 <oerjan> `welcome tica_chan
22:40:43 <HackEgo> tica_chan: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
22:40:50 <tica_chan> Hi !
22:41:18 <Ngevd> Hello!
22:41:49 <Ngevd> How are you?
22:41:58 <tica_chan> Fine and you ?
22:42:03 -!- Ngevd has set topic: !.
22:42:15 <Ngevd> I did not mean to change the topic
22:42:17 <Ngevd> Um...
22:42:22 <Ngevd> Not entirely sure how it happened
22:42:26 <oerjan> eek
22:42:46 -!- oerjan has set topic: The IOCCC is back on! http://www.ioccc.org | Even a dog can learn these cat training techniques | http://codu.org/logs/_esoteric/.
22:42:49 <elliott> oerjan: wtf is `welcome and why does it exist
22:42:59 <tica_chan> oO
22:43:02 <elliott> it's `@ person ? welcome :P
22:43:10 <oerjan> elliott: it accepts more than one person
22:43:18 <DCliche> elliott: ths is `welcome
22:43:23 <DCliche> `welcoem elliott
22:43:25 <elliott> oerjan: that would go in @, not a specific command...
22:43:25 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: welcoem: not found
22:43:25 <elliott> `url bin/welcome
22:43:27 <oerjan> also, no one could remember the syntax :P
22:43:27 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/bin/welcome
22:43:34 <elliott> ew
22:43:37 <oerjan> elliott: it calls @ inside
22:43:40 <elliott> `rm bin/welcome
22:43:42 <HackEgo> No output.
22:43:42 <CakeProphet> oerjan: elliott doesn't like people installing shortcuts to other commands on HackEgo
22:43:46 <CakeProphet> for some reason.
22:43:47 <elliott> oerjan: it's about 5000 times more complicated than it needs to be :P
22:43:48 <oerjan> ah.
22:43:49 <Ngevd> tica_chan, we're a bunch of geeks
22:43:56 <Ngevd> And nerds
22:43:59 <tica_chan> Ow. I see that x)
22:44:03 <oerjan> elliott: i said it accepts a list of nicks
22:44:03 <Ngevd> But comparatively few dorks!
22:44:10 <elliott> oerjan: yes, it still is
22:44:18 <oerjan> ;_;
22:44:43 <CakeProphet> elliott: official resident HackEgo despot.
22:44:47 <elliott> if [ $# -e 0 ]; then exec ? "$@"; else name=$1; shift; exec @ "$name" welcome "$@"; fi
22:45:23 <tica_chan> So... geeks and nerds make me afraid... I think I'll escape
22:45:41 <elliott> tica_chan: (if you want the other kind of esoteric, see #Philosophy)
22:45:46 <elliott> warning: it's a really crappy channel
22:45:51 <tica_chan> (lol)
22:46:01 <tica_chan> goodbye, geeks !
22:46:13 <oerjan> elliott: i don't know sh syntax well enough. also welcome gets all its nick list as one argument, by HackEgo default
22:46:19 <Ngevd> tica_chan, no stay!
22:46:28 <elliott> oerjan: oh, well that's trivially fixable
22:46:36 -!- tica_chan has left.
22:46:40 <elliott> wrap whole thing in f () { ... }, do f "$*"
22:46:55 <Ngevd> Well, with any luck the topic fiasco will NEVER HAPPEN AGAIN
22:46:55 <elliott> I GUESS I'll add it
22:47:29 <elliott> `run echo '#!/bin/sh' >bin/welcome; echo 'if [ $# -eq 0 ]; then' >>bin/welcome
22:47:31 <HackEgo> No output.
22:47:53 <elliott> `run echo ' exec ? $*' >>bin/welcome
22:47:55 <HackEgo> No output.
22:48:07 <elliott> `run echo else >> bin/welcome; echo ' name=$1' >>bin/welcome; echo ' shift' >>bin/welcome
22:48:08 <oerjan> i think my (echo ...; echo ...) >... method is shorter
22:48:09 <HackEgo> No output.
22:48:32 <elliott> erm
22:48:36 <elliott> fuck :P
22:49:02 <elliott> oerjan: hmm, what was that?
22:49:06 <elliott> i didn't actually read yours, obviously >:)
22:49:42 <oerjan> just to put the piping outside all the echos
22:49:54 <CakeProphet> oerjan: wasn't it also Perl?
22:50:03 <CakeProphet> or, no?
22:50:10 <CakeProphet> there was something that was perl.
22:50:12 <elliott> oerjan: oh
22:50:24 <Phantom_Hoover> OK I now have a cat on the arm of my chair.
22:50:25 <oerjan> CakeProphet: yes. another reason i use perl is because sh freaks me out because i never know if i get escaping right.
22:50:55 <CakeProphet> oerjan: elliott also deleted my perl scripts. SOUNDS SUSPICIOUS DOESN'T IT. ;)
22:51:01 <oerjan> CakeProphet: AHA
22:51:17 <elliott> oerjan: sh freaks me out too
22:51:24 <CakeProphet> `runperl print "though he may have forgot this one"
22:51:25 <HackEgo> though he may have forgot this one
22:51:29 <CakeProphet> oh yeaaaaah
22:51:31 <elliott> but thankfully irc names cannot have spaces in them.
22:51:33 <elliott> `rm bin/runperl
22:51:35 <HackEgo> No output.
22:51:37 <elliott> I ALREADY REMOVED THAT :(
22:51:40 <elliott> !perl print "HMPH\n"
22:51:41 <EgoBot> HMPH
22:51:41 <CakeProphet> noep
22:51:48 <oerjan> elliott: no, but they can have \'s, i think :P
22:51:50 <elliott> `fetch http://sprunge.us/dXcP
22:51:51 <HackEgo> 2011-11-18 22:51:51 URL:http://sprunge.us/dXcP [156] -> "dXcP" [1]
22:51:57 <elliott> `run mv dXcp bin/welcome; chmod +x bin/welcome
22:52:00 <HackEgo> mv: cannot stat `dXcp': No such file or directory
22:52:00 <CakeProphet> elliott: but EgoBot is not HackEgo
22:52:05 <elliott> `run mv dXcP bin/welcome; chmod +x bin/welcome
22:52:07 <HackEgo> No output.
22:52:08 <elliott> `welcome oerjan blah blah
22:52:17 <elliott> ...
22:52:18 <oerjan> and whatever else confuses sh
22:52:24 <HackEgo> ​/hackenv/bin/welcome: 7: Syntax error: end of file unexpected (expecting "fi")
22:52:52 <elliott> wtf
22:53:18 <CakeProphet> you didn't terminate your if
22:53:18 <CakeProphet> ?
22:53:27 <CakeProphet> oh, no.
22:55:19 <oerjan> <elliott> tica_chan: (if you want the other kind of esoteric, see #Philosophy) <-- is this the official redirect now?
22:55:45 <CakeProphet> elliott: declarer of official things.
22:55:46 <elliott> oerjan: yes; the trick is that it's a really terrible channel composed of two #esoteric rejects who are completely bizarre.
22:56:08 <elliott> you may decide for yourself whether this is a cruel joke or the best possible alternative :P
22:56:10 <CakeProphet> too esoteric for #esoteric, as it were.
22:56:14 <zzo38> What rejects?
22:56:43 -!- SgeoN1 has joined.
22:57:00 <elliott> zzo38: people who came in here thinking it's about that other kind of esoteric :P
22:57:18 <zzo38> O, those people. But which ones, specifically?
22:58:28 <elliott> i forget the names
23:00:08 <CakeProphet> elliott: does shift return anything?
23:00:22 <elliott> nothing in shell "returns" anything
23:00:36 <CakeProphet> ah.
23:00:37 <CakeProphet> okay.
23:01:12 <CakeProphet> I guess shift > /dev/null would suck for the common case
23:01:13 <oerjan> `cat bin/welcome
23:01:15 <HackEgo> ​#!/bin/sh \ f () { \ if [ $# -eq 0 ]; then \ exec ? welcome \ else \ name=$1 \ shift \ exec @ "$name" welcome "$@" \ fi \ } \ f $* \
23:01:50 <oerjan> the mind boggles at the brain that could consider this preferable to my perl.
23:02:08 <CakeProphet> someone who doesn't like perl.
23:03:10 <elliott> oerjan: a haskell solution will also be accepted
23:03:18 <oerjan> `welcome now what?
23:03:21 <HackEgo> now: what?: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
23:03:28 <oerjan> ah it works
23:03:29 <elliott> ooh, someone fixed it?
23:03:30 <elliott> `welcome hi
23:03:32 <HackEgo> hi: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
23:03:35 <zzo38> I don't know, why do you need a different one from shell script in this case.
23:03:38 <oerjan> `welcome weird\nick
23:03:40 <HackEgo> weird \ ick: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
23:03:49 <oerjan> elliott: *MWAHAHAHA*
23:03:56 -!- oerjan has changed nick to weird\nick.
23:04:01 <weird\nick> perfectly legal, too
23:04:03 <elliott> oerjan: it's the \n :P
23:04:05 -!- weird\nick has changed nick to oerjan.
23:04:08 <elliott> i'll write a haskell version >:)
23:04:22 <oerjan> elliott: does HackEgo _have_ haskell?
23:04:33 <CakeProphet> `run ghc --version
23:04:35 <HackEgo> The Glorious Glasgow Haskell Compilation System, version 7.2.1
23:04:42 <zzo38> Why do you need a Haskell version? Shell scripts works for this case (but you need to correct the mistake)
23:04:54 <oerjan> elliott: what _do_ you have against perl...
23:05:11 <oerjan> it's my second favorite language, basically
23:06:04 <oerjan> and won't haskell be slow unless precompiled
23:06:17 <elliott> we have ghc
23:06:29 <elliott> do { names <- getArgs; let x:xs = ["@", name | name <- names] ++ ["?", "welcome"]; (_,_,_,p) <- proc x xs; waitforProcess p >>= ... bah
23:06:46 <elliott> oerjan: fine put the perl version back :P
23:06:47 <CakeProphet> best choice: perl
23:06:54 <elliott> `help
23:06:55 <HackEgo> Runs arbitrary code in GNU/Linux. Type "`<command>", or "`run <command>" for full shell commands. "`fetch <URL>" downloads files. Files saved to $PWD are persistent, and $PWD/bin is in $PATH. $PWD is a mercurial repository, "`revert <rev>" can be used to revert to a revision. See http://codu.org/projects/hackbot/fshg/
23:07:05 <elliott> `revert 997
23:07:06 <HackEgo> Done.
23:07:07 <elliott> `rm bin/runperl
23:07:08 <elliott> `url bin/welcome
23:07:09 <HackEgo> No output.
23:07:10 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/bin/welcome
23:07:18 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
23:07:23 <elliott> oerjan: if (defined($_=shift))
23:07:29 <elliott> i am more than 100% sure you can do that more nicely :P
23:08:13 <elliott> oerjan: anyway what's wrong with
23:08:17 <elliott> exec map { "@", $_ } @ARGV, "?", "welcome";
23:08:22 <elliott> oh
23:08:36 <elliott> exec map { "@", $_ } (split / /, $ARGV[1]), "?", "welcome";
23:08:40 <elliott> or something
23:08:55 <oerjan> the @ needs to get its arguments as one string
23:09:01 <elliott> `cat bin/@
23:09:03 <HackEgo> ​#!/bin/sh \ if echo "$1" | grep -c ' ' >/dev/null; then \ echo -n "$1" | sed 's/ .*/: /' \ exec $(echo "$1" | sed 's/[^ ]* //') \ else \ echo -n "$1: " \ shift \ exec "$@" \ fi \
23:09:08 <elliott> oerjan: wrong.
23:09:19 <oerjan> oh? hm.
23:09:39 <oerjan> `run @ test @ this echo hi
23:09:40 <HackEgo> test: this: hi
23:09:52 <oerjan> ah
23:09:57 <oerjan> although...
23:09:59 <elliott> exec map { "@", $_ } ($#ARGV > 1 ? @ARGV : split(/ /, $ARGV[1])), "?", "welcome";
23:10:09 <oerjan> `run @ weird\nick @ this echo hi
23:10:11 <HackEgo> weirdnick: this: hi
23:10:20 <oerjan> *MWAHAHAHA*
23:10:20 <elliott> exec map { "@", $_ } ($#ARGV > 1 ? @ARGV : split(/\s+/, $ARGV[1])), "?", "welcome";
23:10:25 <elliott> oerjan: that's shell escaping, doofus
23:10:30 <elliott> `run @ 'weird\nick' @ this echo hi
23:10:32 <HackEgo> weird \ ick: this: hi
23:10:36 <elliott> fuq
23:10:49 <oerjan> `@ weird\nick echo hi
23:10:51 <HackEgo> weird \ ick: exec: 9: weird: not found
23:10:58 <elliott> what
23:11:07 <oerjan> XD
23:11:22 * oerjan might convert elliott to perl yet at this rate
23:12:13 <elliott> oerjan: or maybe i'll implement a wonderful process handling library for haskell >:)
23:12:47 <CakeProphet> well you could always do $_=shift; if (defined)
23:13:31 <CakeProphet> regarding the defined($_=shift) bit
23:13:36 <CakeProphet> but, I think that looks fine. good perl. :)
23:13:45 <oerjan> defined($_=shift) was the first thing i tried which worked
23:13:55 <oerjan> i tried just $_[0] before
23:14:07 <oerjan> hm or something
23:14:40 <CakeProphet> ah yeah perl is weird about @_
23:14:51 <CakeProphet> because it's readonly
23:18:10 <CakeProphet> oh wait
23:18:12 <elliott> oerjan: you think i'm joking, but i actually just sketched a simple API right now :P
23:18:19 <CakeProphet> @_ isn't a thing in your current scope anyway.
23:18:19 <lambdabot> Maybe you meant: . ? @ v
23:18:27 <oerjan> elliott: there's rawSystem btw
23:18:34 <CakeProphet> shift uses @ARGV when outside of functions and @_ when inside them
23:18:36 <oerjan> @hoogle rawSystem
23:18:36 <lambdabot> System.Process rawSystem :: String -> [String] -> IO ExitCode
23:18:37 <lambdabot> System.Cmd rawSystem :: String -> [String] -> IO ExitCode
23:18:41 <elliott> oerjan: yeah but it's ugly and planned for deprecation
23:18:46 <oerjan> wat
23:18:59 <elliott> oerjan: you're meant to do everything through createProcess
23:19:34 <oerjan> elliott: have they gone completely insane?
23:19:42 <elliott> oerjan: createProcess isn't that bad...
23:20:41 <elliott> welcome :: [String] -> IO ()
23:20:41 <elliott> welcome names = startCommand cmd >=> waitProcess >>= exitWith
23:20:41 <elliott> where cmd = proc $ ["@", name | name <- names] ++ ["?", "welcome"]
23:20:41 <elliott> yesssssss
23:23:10 <oerjan> nope
23:23:55 <elliott> oerjan: ?
23:24:41 <oerjan> proc takes the command separately. also i see no startCommand.
23:25:17 <elliott> oerjan: whoosh
23:25:46 <oerjan> oh it's your own redesign?
23:27:20 <oerjan> CakeProphet: @_ is @ARGV outside functions
23:27:30 <CakeProphet> oh?
23:28:13 <oerjan> or wait
23:28:30 <CakeProphet> `run echo '$_=shift; s/ +/ @ /g; exec ($_?"@ $_ ":"")."? welcome";' > bin/welcome2
23:28:32 <HackEgo> No output.
23:28:34 -!- MSleep has joined.
23:28:34 -!- copumpkin has joined.
23:28:41 <CakeProphet> `run perl bin/welcome2
23:28:43 <HackEgo> No output.
23:28:45 <CakeProphet> :(
23:29:41 <CakeProphet> `run perl bin/welcome2 test
23:29:43 <HackEgo> test:
23:29:46 <CakeProphet> lol
23:29:59 <elliott> CakeProphet: nice complete lack of escaping.
23:30:09 <oerjan> CakeProphet: d'oh i've misread the documentation, no wonder @_ didn't work :P
23:30:10 <CakeProphet> I escape from no one.
23:30:21 <CakeProphet> `cat bin/welcome2
23:30:23 <HackEgo> ​$_=shift; s/ +/ @ /g; exec ($_?"@ $_ ":"")."? welcome";
23:30:46 <oerjan> it's @ARG which is a synonym for @_, not @ARGV
23:31:46 <oerjan> CakeProphet: #!/usr/bin/perl -w , friend
23:31:55 <CakeProphet> :(
23:32:44 <CakeProphet> `run {echo '#!/usr/bin/perl -w'; echo '$_=shift; s/ +/ @ /g; exec ($_?"@ $_ ":"")."? welcome";'} > bin/welcome2
23:32:47 <HackEgo> bash: {echo: command not found
23:32:53 <CakeProphet> `run { echo '#!/usr/bin/perl -w'; echo '$_=shift; s/ +/ @ /g; exec ($_?"@ $_ ":"")."? welcome";' } > bin/welcome2
23:32:55 <HackEgo> bash: -c: line 1: syntax error: unexpected end of file
23:32:58 <CakeProphet> ekkrjiwerjiuwhejr
23:33:01 <CakeProphet> help bash
23:33:05 <oerjan> CakeProphet: it should be quite clear that since \ is a legal char in a nick, you want to be very careful to avoid escape interpretation
23:33:30 <CakeProphet> it does.
23:33:31 <CakeProphet> >_>
23:33:34 <CakeProphet> right?
23:33:51 <oerjan> mind you, @ also breaks it
23:33:51 <Gregor> MUAHAHAHAH
23:34:17 <CakeProphet> `run echo '#!/usr/bin/perl -w' > bin/welcome2; echo '$_=shift; s/ +/ @ /g; exec ($_?"@ $_ ":"")."? welcome";' >> bin/welcome2
23:34:19 <HackEgo> No output.
23:34:29 <CakeProphet> `cat `which welcome2`
23:34:32 <HackEgo> cat: `which welcome2`: No such file or directory
23:34:37 <CakeProphet> `run cat `which welcome2`
23:34:45 <CakeProphet> I am m4st3r h4k3g0
23:35:08 <HackEgo> No output.
23:35:45 <CakeProphet> >_>
23:35:59 <CakeProphet> `which welcome2
23:36:01 <HackEgo> No output.
23:36:05 <CakeProphet> >_>
23:36:13 <Gregor> elliott: Feel free to read JIT try2.
23:36:13 <oerjan> `run chmod +x bin/welcome2
23:36:15 <HackEgo> No output.
23:36:17 <CakeProphet> oh hi.
23:36:25 <oerjan> `which welcome2
23:36:26 <HackEgo> ​/hackenv/bin/welcome2
23:36:27 <CakeProphet> oerjan: stupid executable bit...
23:36:33 <CakeProphet> `welcome2
23:36:35 <HackEgo> Useless use of concatenation (.) or string in void context at /hackenv/bin/welcome2 line 2. \ Use of uninitialized value $_ in substitution (s///) at /hackenv/bin/welcome2 line 2.
23:36:41 <Gregor> lul
23:36:50 <CakeProphet> `run echo '#!/usr/bin/perl -w' > bin/welcome2; echo '$_=shift; s/ +/ @ /g; exec (($_?"@ $_ ":"")."? welcome");' >> bin/welcome2
23:36:52 <HackEgo> No output.
23:36:57 <CakeProphet> `run chmod +x bin/welcome2
23:36:58 <HackEgo> No output.
23:37:00 <CakeProphet> `welcome2 hi
23:37:02 <HackEgo> hi: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
23:37:07 <CakeProphet> `welcome2
23:37:10 <HackEgo> Use of uninitialized value $_ in substitution (s///) at /hackenv/bin/welcome2 line 2. \ Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
23:37:12 <CakeProphet> `welcome2 weird\nick\asshole
23:37:15 <HackEgo> weirdnickasshole: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
23:37:27 <oerjan> CakeProphet: @ itself is not \ clean
23:38:40 <oerjan> `cat bin/@
23:38:42 <HackEgo> ​#!/bin/sh \ if echo "$1" | grep -c ' ' >/dev/null; then \ echo -n "$1" | sed 's/ .*/: /' \ exec $(echo "$1" | sed 's/[^ ]* //') \ else \ echo -n "$1: " \ shift \ exec "$@" \ fi \
23:39:36 <CakeProphet> `run echo '#!/usr/bin/perl -w' > bin/welcome2; echo '$_=shift and s/ +/ @ /g; exec ((defined?"@ $_ ":"") . "? welcome");' >> bin/welcome2
23:39:39 <HackEgo> No output.
23:39:42 <CakeProphet> `run chmod +x bin/welcome2
23:39:44 <HackEgo> No output.
23:39:48 <CakeProphet> `run welcome2 hi asshole
23:39:50 <HackEgo> Warning: Use of "defined" without parentheses is ambiguous at /hackenv/bin/welcome2 line 2. \ Bareword found where operator expected at /hackenv/bin/welcome2 line 2, near "?"@ $_ ":"") . "? welcome" \.(Missing operator before welcome?) \ Unquoted string "welcome" may clash with future reserved word at /hackenv/bin/welcome2 line 2. \ String found where operator expected at /hackenv/bin/welcome2 line 2, at end of
23:39:55 <CakeProphet> awediuhweiuhwiuerhiuw4hriuhswr
23:39:59 <CakeProphet> oerjan: screw -w :P
23:40:08 <CakeProphet> and -e
23:40:10 <CakeProphet> which is
23:40:25 <CakeProphet> an imaginary option that makes errors cause perl programs not to execute.
23:41:17 <CakeProphet> `run echo '#!/usr/bin/perl -w' > bin/welcome2; echo '$_=shift and s/ +/ @ /g; exec (((defined)?"@ $_ ":"") . "? welcome");' >> bin/welcome2
23:41:19 <HackEgo> No output.
23:41:23 <CakeProphet> `run chmod +x bin/welcome2
23:41:25 <HackEgo> No output.
23:41:27 <CakeProphet> `welcome2
23:41:29 <HackEgo> Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
23:41:32 <CakeProphet> `welcome2 hi hi
23:41:35 <HackEgo> hi: hi: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
23:41:37 <CakeProphet> `welcome2 weird\dude
23:41:39 <HackEgo> weirddude: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
23:41:45 <CakeProphet> `run welcome2 'weird\dude'
23:41:48 <HackEgo> weirddude: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
23:41:51 <Gregor> $ clang -O4 full.c
23:41:51 <Gregor> /tmp/cc-p91cPs.o: file not recognized: File format not recognized
23:41:52 <Gregor> >_O
23:42:06 <CakeProphet> `url bin/welcome2
23:42:07 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/bin/welcome2
23:42:15 <CakeProphet> is this version betterer than welcome?
23:43:09 <Gregor> `welcome
23:43:11 <HackEgo> Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
23:43:21 <oerjan> `run (echo '#!/usr/bin/perl -w'; echo '$_ = join " ", @ARGV; if (s/^.*? +.*? //) { print "$1: "; exec $2, $_; }' >bin/@
23:43:23 <HackEgo> bash: -c: line 1: syntax error: unexpected end of file
23:43:30 <oerjan> `run (echo '#!/usr/bin/perl -w'; echo '$_ = join " ", @ARGV; if (s/^.*? +.*? //) { print "$1: "; exec $2, $_; }') >bin/@
23:43:32 <HackEgo> No output.
23:43:37 <CakeProphet> elliott: OH NO PERL IS TAKING OVER
23:43:42 <CakeProphet> elliott: BEAR ARMS
23:43:46 <oerjan> `run chmod +x bin/@
23:43:48 <HackEgo> No output.
23:43:54 -!- Zuu has quit (Ping timeout: 244 seconds).
23:43:55 <oerjan> `@ test echo hi
23:43:57 <HackEgo> Use of uninitialized value $1 in concatenation (.) or string at /hackenv/bin/@ line 2. \ Use of uninitialized value $2 in exec at /hackenv/bin/@ line 2. \ Can't exec "": No such file or directory at /hackenv/bin/@ line 2. \ :
23:44:03 <oerjan> XD
23:44:13 <oerjan> oh duh
23:44:46 <elliott> oerjan: stop replacing everything with perl >:(
23:45:02 <oerjan> `run (echo '#!/usr/bin/perl -w'; echo '$_ = join " ", @ARGV; if (s/^([^ ]*) +([^ ]*) +//) { print "$1: "; exec $2, $_; }') >bin/@
23:45:04 <HackEgo> No output.
23:45:09 <elliott> `run rm bin/welcome2; # breaks on \
23:45:11 <HackEgo> No output.
23:45:14 <oerjan> `run chmod +x bin/@
23:45:16 <HackEgo> No output.
23:45:22 <oerjan> `@ test echo hi
23:45:23 <HackEgo> test: hi
23:45:29 <oerjan> `@ test\nick echo hi
23:45:31 <HackEgo> test\nick: hi
23:45:35 <CakeProphet> elliott: it doesn't
23:45:43 <elliott> <CakeProphet> `welcome2 weird\dude
23:45:43 <elliott> <HackEgo> weirddude: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
23:45:43 <oerjan> `welcome test\nick ho
23:45:45 <HackEgo> test\nick: ho: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
23:45:50 <elliott> CakeProphet: it does
23:46:11 <CakeProphet> that has nothing to do with my script.
23:46:18 <oerjan> elliott: now there's a @ and welcome which escape properly, at least
23:46:27 <oerjan> (or not-unescape)
23:46:33 <elliott> oerjan: you could have just fixed @ without rewriting it...
23:46:47 <CakeProphet> (in perl)
23:46:55 <oerjan> elliott: no, because i cannot get my head around sh's escape madness
23:47:04 <elliott> oerjan: then tell someone who can to fix it :P
23:47:17 <oerjan> elliott: feel free to rewrite it in sh again
23:47:30 <elliott> it wouldn't need rewriting
23:47:34 <CakeProphet> `run echo '#!/usr/bin/perl -w' > bin/welcome2; echo '$_=shift and s/ +/ @ /g;' >> bin/welcome2; echo 'exec (((defined)?"@ $_ ":"") . "? welcome");' >> bin/welcome2
23:47:36 <HackEgo> No output.
23:47:37 <CakeProphet> OSHI HACKEGO EDIT WAR
23:47:49 <CakeProphet> `run chmod +x bin/welcome2
23:47:50 <HackEgo> No output.
23:48:01 <CakeProphet> `welcome2 weird\nick\asshole
23:48:03 <HackEgo> weirdnickasshole: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
23:48:10 <CakeProphet> oh look it is my script, wonder why.
23:48:18 <CakeProphet> `welcome weird\nick\asshole
23:48:20 <HackEgo> weird\nick\asshole: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
23:48:53 <elliott> `rm bin/welcome2
23:48:54 <HackEgo> No output.
23:49:48 <CakeProphet> I was under the impression that interpolation did no escapey nonsense.
23:50:11 <oerjan> CakeProphet: exec uses a shell if you have just one string argument to it
23:50:36 <oerjan> you must split away the command to avoid that
23:50:59 <oerjan> oh i was going to check
23:51:07 <oerjan> `run @ test @ ho echo hi
23:51:09 <HackEgo> test: ho: hi
23:51:14 <oerjan> good
23:52:45 <CakeProphet> challenge: make a script that is like @ but automatically uses the command invoker as the nick.
23:53:17 <oerjan> i'm not sure HackEgo passes on that information, or does it
23:53:27 <oerjan> `printenv
23:53:29 <HackEgo> TERM=linux \ http_proxy=http://127.0.0.1:3128 \ HACKENV=/hackenv \ PATH=/hackenv/bin:/opt/python27/bin:/opt/ghc/bin:/usr/bin:/bin \ PWD=/hackenv \ SHLVL=0 \ HOME=/tmp
23:53:30 <CakeProphet> s/make a script/hack hackego so/
23:53:34 <elliott> `which printenv
23:53:36 <HackEgo> ​/usr/bin/printenv
23:53:42 <elliott> wtf is that distinct from env
23:53:56 <oerjan> `env
23:53:58 <HackEgo> TERM=linux \ http_proxy=http://127.0.0.1:3128 \ HACKENV=/hackenv \ PATH=/hackenv/bin:/opt/python27/bin:/opt/ghc/bin:/usr/bin:/bin \ PWD=/hackenv \ SHLVL=0 \ HOME=/tmp
23:54:09 <oerjan> i didn't know env could print too
23:54:23 <CakeProphet> `run file `which printenv`
23:54:25 <HackEgo> ​/usr/bin/printenv: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, stripped
23:54:31 <CakeProphet> `run file `which env`
23:54:33 <HackEgo> ​/usr/bin/env: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, stripped
23:54:37 <CakeProphet> huh
23:54:42 <CakeProphet> not even a softlink or anything.
23:55:07 <elliott> well env lets you set them.
23:55:16 <oerjan> `run ls -l /usr/bin/printenv /usr/bin/env
23:55:19 <HackEgo> ​-rwxr-xr-x 2 0 0 27576 Apr 28 2010 /usr/bin/env \ -rwxr-xr-x 2 0 0 27448 Apr 28 2010 /usr/bin/printenv
23:55:24 <oerjan> they
23:55:31 <oerjan> 're not the same file...
23:56:07 <elliott> because printenv can't set
23:56:10 <elliott> the question is why it exists at all
23:56:21 <oerjan> yeah but why have printenv at all, right
23:56:37 <oerjan> `env TERM
23:56:39 <HackEgo> env: TERM: No such file or directory
23:56:45 <oerjan> `printenv TERM
23:56:47 <HackEgo> linux
23:56:53 <oerjan> ok that's a difference
23:56:55 <elliott> ah
23:57:01 <elliott> aka $TERM :P
23:57:03 <elliott> or getenv("TERM")
23:57:04 <elliott> or [...]
23:57:25 <CakeProphet> so do we have an alias for sprunge?
23:57:42 <oerjan> `which fetch
23:57:44 <HackEgo> No output.
23:57:45 <elliott> you can't access sprunge
23:57:50 <elliott> use paste
23:58:05 <CakeProphet> `which curl
23:58:07 <HackEgo> ​/usr/bin/curl
23:58:10 <CakeProphet> I bet I can. :P
23:58:25 <CakeProphet> `help paste
23:58:26 <HackEgo> Runs arbitrary code in GNU/Linux. Type "`<command>", or "`run <command>" for full shell commands. "`fetch <URL>" downloads files. Files saved to $PWD are persistent, and $PWD/bin is in $PATH. $PWD is a mercurial repository, "`revert <rev>" can be used to revert to a revision. See http://codu.org/projects/hackbot/fshg/
23:58:33 <elliott> CakeProphet: try.
23:58:38 <CakeProphet> `run paste --help
23:58:40 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.22312
23:58:45 <CakeProphet> lol
23:59:17 <elliott> `url bin/paste
23:59:19 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/bin/paste
23:59:48 <CakeProphet> ah okay.
23:59:49 <CakeProphet> good.
←2011-11-17 2011-11-18 2011-11-19→ ↑2011 ↑all