←2014-09-28 2014-09-29 2014-09-30→ ↑2014 ↑all
00:00:45 <ais523> perhaps we'll be able to use the expansion of the universe as an energy and free-energy source some day, then
00:00:52 <ais523> this makes me more hopeful
00:00:53 -!- shikhin has quit (Ping timeout: 240 seconds).
00:08:06 <Sgeo> "In two OpenSSL manual pages, in the NAME section, the last word of the name list is followed by a stray trailing comma. While this may seem minor, it is worth fixing because it may confuse some makewhatis(8) implementations."
00:08:07 <Sgeo> o.O
00:08:33 <myname> what
00:09:21 <myname> what the hell is makewhatis
00:10:02 <pikhq> It generates the whatis database.
00:11:17 <ais523> Sgeo: CLC-INTERCAL once broke apropos throughout the whole of Debian
00:11:20 <ais523> that was a fun bug report to read
00:11:32 <Taneb> ais523, what
00:11:49 <Sgeo> imo packages should not be allowed to be capable of doing that
00:11:55 <ais523> the developers acknowledged that it was technically mandb's fault, but asked CLC-INTERCAL to change it because it was a much less widely used program
00:12:02 <ais523> Taneb: CLC-INTERCAL's executable name used to be oo, ick
00:12:06 <ais523> with an embedded comma and space
00:12:12 <quintopia> Phantom_Hoover: does the expansion of the universe create locally usable energy?
00:12:16 <ais523> and this blew up mandb, causing it to produce corrupted output
00:12:21 <Phantom_Hoover> not afaik
00:12:42 <Sgeo> ais523: I hope that shortly after it they fixed mandb
00:12:45 <ais523> I think you end up with expansional potential energy, or something
00:12:47 <ais523> Sgeo: no idea
00:13:21 <Phantom_Hoover> you do but it's dumb
00:13:52 <Taneb> I try to avoid physics when I can
00:13:56 <Taneb> It's too close to reality
00:13:56 <Phantom_Hoover> it's just saying 'oh energy is conserved because we put a name to the change in total energy'
00:14:42 <Phantom_Hoover> aiui it doesn't even work like actual energy in e.g. the relativistic field equations
00:15:05 <Phantom_Hoover> oh, dark energy apparently causes an increase in total energy
00:15:29 <Phantom_Hoover> since it's a constant joules/volume thing, and expansion increases the volume
00:15:44 <zzo38> I have a book it mentions Einstein's equation, involving Ricci curvature tensor, scalar curvature, spacetime metric, Newton's constant, and energy-momentum tensor. Where does the factor of 8pi come from though?
00:16:29 <Phantom_Hoover> because it's geometry and 8pi is exactly the kind of constant you normally see in geometry?
00:17:28 <Phantom_Hoover> same as how maxwell's equations have a 4pi in them, it's a property of the geometric tools you're using
00:17:32 <ais523> so perhaps some day we can use dark energy in order to stave off total thermodynamic apocalypse
00:17:40 <ais523> I'm actually feeling surprisingly relieved at this
00:18:41 <zzo38> I also don't know what curvature tensor, scalar curvature, and energy-momentum tensor. I am not sure if I understand spacetime metric correctly either. Does it mean + for time and - for space (or vice-versa)?
00:19:32 <Phantom_Hoover> zzo38, i can answer this! i did a hyperbolic geometry course last year
00:19:59 <Phantom_Hoover> the answer is: you pick whichever one will cause maximum confusion to the reader
00:24:20 <zzo38> Phantom_Hoover: I do not understand you. Is one way more confusing?
00:24:55 <Phantom_Hoover> no, but not being consistent in your choice is
00:25:42 <Phantom_Hoover> proper choice of convention requires some foreknowledge of your audience, of course; if you know which option they're familiar with you can reliably choose the other one
00:27:30 <zzo38> OK, although I think you should be consistent whichever one you are using (unless you have a good reason to use other one)
00:28:00 -!- Bike has quit (Ping timeout: 250 seconds).
00:28:35 <Phantom_Hoover> to be clear, i'm joking about the fact that i got fairly confused during the course over which convention i should be using in which circumstances
00:29:05 -!- Bike has joined.
00:29:24 <oerjan> `dontaskdonttelllist
00:29:25 <HackEgo> dontaskdonttelllist: q​u​i​n​t​o​p​i​a​ c​o​p​p​r​o​ m​y​n​a​m​e​
00:29:36 <oerjan> @tell mroman_ <mroman_> `learn "a b" is ab <-- we've always created multiword wisdom entries directly
00:29:36 <lambdabot> Consider it noted.
00:30:56 -!- Phantom_Hoover has quit (Remote host closed the connection).
00:31:30 <myname> oerjan: i like how HackEgo doesn't highlight me
00:31:50 <oerjan> myname: took me a while to get that feature right
00:32:29 <oerjan> @tell mroman <mroman_> but it would be really huge if it were complete. <-- i'm secretly planning to split the table when it gets a bit wider.
00:32:29 <lambdabot> Consider it noted.
00:32:50 <oerjan> oops
00:32:59 <oerjan> @tell mroman_ <mroman_> but it would be really huge if it were complete. <-- i'm secretly planning to split the table when it gets a bit wider.
00:32:59 <lambdabot> Consider it noted.
00:33:05 <zzo38> myname: It contains "zero width codes"
00:33:05 <oerjan> is he ever on without the _ ?
00:33:16 <zzo38> So that's why it doesn't match.
00:33:21 <myname> zzo38: i suspected that
00:33:36 <zzo38> (They are visible on my computer, although still zero-width)
00:34:09 <myname> while we are at it
00:34:21 <myname> what's the deal with invisible plus?
00:34:31 <zzo38> For fractions, I suppose.
00:34:51 <myname> huh?
00:35:02 <oerjan> myname: 3 1/2 and stuff
00:35:08 <myname> i see
00:38:48 <shachaf> I wonder whether there's a point in making a `learn variant that can take multiword entries.
00:39:30 <shachaf> But then I'd have to split `learn up into pieces and it's be a hassle.
00:42:34 <oerjan> @tell fizzie <fizzie> What's up with hackage's every-now-and-then broken documentation? <-- the server has been severely overworked so they've turned off the doc generation. a new server should be up any day now.
00:42:35 <lambdabot> Consider it noted.
00:43:15 <shachaf> Something about running out of disk space?
00:45:05 <oerjan> oh that post, i haven't been keeping up with /r/haskell. but no, what i'm referring to has been going on longer.
00:46:12 <shachaf> I haven't either. But someone said something in #haskell-infrastructure.
00:46:16 <oerjan> wait have i been ignoring it this long...
00:47:36 <oerjan> i'm referring to this post from 14 days ago, although that means they haven't solved the problem since then... http://www.reddit.com/r/haskell/comments/2gd1hl/did_hackage_stop_building_packages/
00:48:20 <oerjan> @tell fizzie Actually it's been longer than I thought, the server should have been up already. But there seem to have been new problems recently.
00:48:21 <lambdabot> Consider it noted.
00:49:15 -!- ais523 has changed nick to ais523[.
00:49:22 <shachaf> imo the solution is to have all sorts of datacenters all over the world with a large number of servers in each one
00:49:48 <oerjan> i'm sure haskell.org will have no problem paying for that
00:49:55 <shachaf> exactly
00:50:26 <oerjan> especially now that americans can donate to them tax-deductibly (iirc)
00:50:32 -!- Bike has quit (Ping timeout: 250 seconds).
00:51:23 <oerjan> yay finished logreading
00:51:43 <myname> what
00:51:51 <pikhq> Quickly, type faster than oerjan can read!
00:52:40 <myname> you really read all the stuff that gets posted here?
00:52:57 <pikhq> I know elliott does.
00:53:05 <elliott_> I don't
00:53:16 <myname> you people are crazy
00:53:21 <elliott_> those days are long gone
00:53:26 <Taneb> I don't even read the crap that I write
00:53:37 <pikhq> But then elliott isn't a human being, he's some sort of Jungian group consciousness entity formed from all the minds of the people of Hexham.
00:53:45 <HackEgo> [wiki] [[Special:Log/newusers]] create * ChiSHAXtjo * New user account
00:54:07 -!- ais523[ has changed nick to ais523.
00:54:40 <elliott_> close enough
00:55:13 <oerjan> myname: not always, and of course i skip particularly boring parts
00:57:48 <Taneb> oerjan reads and analyses every single BF Joust program, trying to find their weaknesses.
00:58:08 <oerjan> that's been particularly annoying lately, yes.
00:58:08 <myname> sounds plauible
00:58:26 <oerjan> although i've found a sort of rhythm for skipping those
00:58:42 -!- Bike has joined.
00:59:07 <oerjan> (since mostly it's a long list with every second line !bfjoust and response from zemhill)
01:00:05 <oerjan> (the tricky part of it is not skipping anything else intermingled)
01:01:00 <oerjan> some days when the logs are just too long i just search for my nick and leave it at that.
01:01:49 <Taneb> I'd like to set up a hill for some BF Joust/CoreWars type game for my uni
01:01:54 <Taneb> But on the other hand I'm lazy
01:03:07 <Taneb> On which note, I've managed to procrastinate making dinner until after 2 AM
01:03:21 <myname> i'd like some interesting programming game that is either language independent or in befunge
01:03:22 <oerjan> *slow clap*
01:03:58 <pikhq> Taneb: Man after my own heart there.
01:04:32 <pikhq> It is rather funny needing to be reminded to eat at times.
01:04:46 <Taneb> pikhq, for me it can get problematic :(
01:05:21 <pikhq> I've gained something like 60 pounds after starting antidepressants... so I think I know what you mean.
01:05:28 <myname> i still get hungry
01:07:46 <Taneb> pikhq, can I PM you?
01:07:52 <pikhq> Sure.
01:08:24 <myname> pikhq: tbh that sounds depressing
01:08:43 <pikhq> Not especially.
01:08:50 <pikhq> Went from underweight to mildly overweight.
01:08:54 <myname> okay
01:09:05 <Taneb> Saying that, I've forgotten what I was going to message
01:09:09 <myname> sounded more like "want to get better? why not become fat first" to me
01:09:52 <pikhq> Nope, more like "I stopped being worryingly thin because I ate more regularly"
01:09:59 <elliott_> pikhq: from weight gain side-effects or just more motivation to eat?
01:10:03 <elliott_> uh, you don't have to answer that
01:10:10 <pikhq> elliott_: Bit of column A, bit of column B.
01:10:19 * elliott_ nod
01:14:07 <myname> is it just me or are computer scientists more likely to be depressive?
01:14:25 <zzo38> I want to send a fax by Famicom; do you know how to do it?
01:14:29 <pikhq> Admittedly I've still had some issues with the whole "eating regularly" thing. ... in that it might take me until 3 to realize that I am hungry.
01:15:14 <pikhq> But "ah jeeze I'm going to eat a cow RIGHT NOW" is probably more healthy than "... meh"
01:16:01 <oerjan> except for the cow hth
01:17:10 <myname> who cares
01:17:22 <oerjan> well not the cow because it's DEAD
01:17:35 <pikhq> Meh, cows. Even alive they don't care much.
01:17:36 <myname> good for the cow
01:17:50 * oerjan is not a vegetarian in case someone takes this seriously
01:19:01 <quintopia> oerjan: why wouldn't i take everything you say deadly seriously? you never joke.
01:19:31 <Taneb> oerjan, do you only eat living cows?
01:20:11 <oerjan> i seem to be procrastinating my procrastination, i just switched to my tatham puzzle from SO
01:20:11 -!- conehead has quit (Quit: Computer has gone to sleep).
01:20:17 <quintopia> no oerjan doesn't eat cow. he's norwegian
01:20:22 <oerjan> Taneb: no hth
01:20:32 <pikhq> As we all know, Norwegians only eat reindeer.
01:20:57 <quintopia> pikhq: and fish and occasionally people hth
01:21:02 <oerjan> i have eaten reindeer on occasion, also whale
01:21:18 <pikhq> I have had neither.
01:21:49 <Taneb> I've eaten kangaroo.
01:22:00 <Taneb> It was probably the nicest steak I have ever eaten
01:22:13 <oerjan> hm i cannot remember eating kangaroo, it would have been the one time i was in australia in case
01:22:19 <quintopia> "Perverse Norwegian comedian Harald Eia ate a part of his own body." It's only perverse if you're not Norwegian. totally makes sense to norwegians.
01:22:36 <oerjan> i've had ostrich though, there was a brief period when it was all the rage to farm ostriches in norway
01:23:01 <pikhq> Never had ostrich. Though I've seen an ostrich farm.
01:23:20 <oerjan> (then they lowered the tariffs as a gesture to poor african countries, and their ostrich outcompeted the norwegians :P)
01:23:21 <Taneb> I've eaten scampi at an ostrich farm
01:23:43 <myname> NORvegans eat neither meat nor eggs
01:23:44 <oerjan> well their ostrich farmers. although i doubt a norwegian could beat an ostrich in a fair race.
01:24:00 <pikhq> myname: Only the blood of their enemies?
01:24:38 <oerjan> quintopia: i don't quite remember that, but i assume it was a part he was going to remove anyhow.
01:25:12 <oerjan> although not having a TV, i'm seriously out of touch with the norwegian comedy scene.
01:26:01 <quintopia> not being in norway, so am I
01:26:11 <quintopia> of course, even in Norway, I still would be.
01:26:23 <quintopia> not speaking norgevian at all
01:26:39 <pikhq> Few speak Norgevian.
01:27:30 <quintopia> only the norgays speak norgevian
01:28:01 <oerjan> quintopia: you mean tenzing?
01:28:11 <quintopia> and his family
01:28:32 <oerjan> well they've always been an aloft bunch
01:29:20 <quintopia> indeed. quite a heavy burden for them to bear.
01:29:52 -!- GeekDude has quit (Quit: {{{}}{{{}}{{}}}{{}}} (www.adiirc.com)).
01:33:53 -!- copumpkin has joined.
01:35:36 -!- Sorella has quit (Ping timeout: 250 seconds).
01:38:39 -!- Sorella has joined.
01:39:27 -!- Sorella has quit (Changing host).
01:39:28 -!- Sorella has joined.
01:44:12 -!- copumpkin has quit (Ping timeout: 258 seconds).
01:54:43 <HackEgo> [wiki] [[Special:Log/newusers]] create * Vernon76Cnr * New user account
02:00:33 -!- AndoDaan has joined.
02:09:12 <ais523> `perl-e print 4
02:09:13 <HackEgo> 4
02:09:30 <ais523> `perl-e if (false) { print "false is true!\n"; }
02:09:31 <HackEgo> false is true!
02:10:25 <elliott_> `interp perl print 4
02:10:26 <HackEgo> ​/hackenv/bin/interp: 4: exec: ibin/perl: not found
02:10:40 <ais523> elliott_: we have `! now for `interp
02:10:49 <elliott_> yeah, I forgot
02:15:54 <myname> wtf false
02:16:27 <oerjan> i think that's a bareword interpreted as the string "false", right?
02:16:47 <oerjan> *an undefined bareword
02:17:05 <oerjan> if warnings were turned on, you'd get one.
02:17:38 <oerjan> `run perl -W -e 'if (false) { print "false is true!\n"; }'
02:17:39 <HackEgo> Unquoted string "false" may clash with future reserved word at -e line 1. \ Bareword found in conditional at -e line 1. \ false is true!
02:18:22 <Melvar> Does perl have specific true and false values?
02:18:30 <oerjan> i don't think so.
02:18:40 <oerjan> `perl-e print (1 == 1)
02:18:41 <HackEgo> 1
02:19:02 <ais523> oerjan: right
02:19:10 <ais523> Melvar: no; the standard false and true are undef and 1
02:19:20 <oerjan> `perl-e print (1 == 0)
02:19:20 <HackEgo> No output.
02:19:26 <oerjan> hm oh undef not 0
02:19:31 * Melvar nods.
02:19:37 <ais523> but it's sort-of idiomatic to use a range of different true and false values to distinguish between different reasons something might be true or false
02:19:46 <ais523> the null string and 1 is what == uses, I think
02:19:58 <oerjan> ah
02:20:00 <ais523> there are only three falsey values AFAIK, though: undef, the null string, and 0
02:20:09 <ais523> not sure about longer strings that are numerically 0
02:20:16 <elliott_> ais523: what about midnight?
02:20:24 <ais523> `perl-e print +('0e1' ? "true" : "false")
02:20:24 <HackEgo> true
02:20:32 <myname> ew
02:20:35 <ais523> I guess it has to be '0' specifically
02:20:51 <myname> i guess i get where php has that crap from
02:21:01 <ais523> Perl's semantics are, I think, intended to be "everything is a string, but some operators treat them like numbers"
02:21:08 <Bike> i don't think there's any reason to write this program in C except that i can learn gdb from everything breaking, but that's bullshit
02:21:09 <ais523> but every now and then, someone breaks the abstraction
02:21:13 <elliott_> tcl manages that a bit better
02:21:25 <Bike> `perl-e print +('0' ? "true" : "false")
02:21:25 <HackEgo> false
02:21:28 <Bike> `perl-e print +('000' ? "true" : "false")
02:21:29 <HackEgo> true
02:21:33 <Bike> oh my.
02:21:43 <ais523> `run perl -MData::Dumper -e '$x = 4; print Dumper($x); "$x"; print Dumper($x);'
02:21:43 <HackEgo> ​$VAR1 = 4; \ $VAR1 = 4;
02:21:54 <ais523> huh
02:21:58 <ais523> `run perl -MData::Dumper -e '$x = 4; print Dumper($x); $y = "$x"; print Dumper($x);'
02:21:59 <HackEgo> ​$VAR1 = 4; \ $VAR1 = 4;
02:22:02 <ais523> hmm
02:22:06 <ais523> maybe they've fixed it
02:22:12 <Melvar> ais523: Does perl have an empty list?
02:22:14 <ais523> that used to print "4" for the second dump
02:22:33 <elliott_> no yuks from a python joke, tough crowd :<
02:22:34 <ais523> Melvar: Perl doesn't have first-class list types; you can create an empty array, or use an empty list as a temporary
02:22:37 <ais523> where it's written ()
02:22:58 <ais523> lists and arrays act marginally differently, though
02:23:17 -!- TodPunk has quit (Read error: Connection reset by peer).
02:23:26 <Melvar> So is () actually a thing there?
02:23:57 -!- callforjudgement has joined.
02:23:59 <callforjudgement> `run perl -le '@a = (3, 4); print scalar @a; print scalar (3, 4);'
02:24:00 <HackEgo> 2 \ 4
02:24:06 -!- ais523 has quit (Disconnected by services).
02:24:07 -!- callforjudgement has changed nick to ais523.
02:24:19 <ais523> there, that's the difference between a list and an array
02:24:27 <ais523> lists like (3, 4) are second-class; they scalar-ise as their last element
02:24:46 <ais523> arrays are first-class; there's no array literal but you can assign a list literal to an array
02:24:46 <Melvar> … the last …?
02:24:49 <ais523> they scalar-ise as their length
02:25:01 <ais523> Melvar: to keep the "comma operator" working like in C, I guess
02:25:18 <Melvar> Ah.
02:25:36 <Bike> that's uh... uh.
02:25:54 <oerjan> "fiendish" hth
02:26:28 -!- callforjudgement has joined.
02:26:30 <callforjudgement> [03:25] <ais523> actually, I guess a good way to think about it is that lists are used as temporaries, and arrays are used for storage
02:26:32 <callforjudgement> [03:26] <ais523> arrays decay into lists in list context
02:26:34 -!- ais523 has quit (Disconnected by services).
02:26:35 -!- callforjudgement has changed nick to ais523.
02:30:49 <Bike> i wrote a lisp parser that works okay except it starts burning an entire cpu if i enter the empty list. this is cool
02:40:49 -!- TodPunk has joined.
02:43:17 <dianne> if it burns your cpu, wouldn't it be more hot than cool?
02:46:16 <Bike> not relative to planck temperature
02:47:21 <ais523> what is the planck temperature?
02:47:26 <ais523> I'm guessing very large, from that
02:47:57 <Bike> yeah it's ten to the whatever kelvin.
02:48:29 <elliott_> I like how planck units are always very huge or very tiny
02:48:45 <elliott_> just to keep you on your toes
02:49:14 <ais523> there should be just one that has a reasonable value, to confuse people
02:49:25 <pikhq> Planck impedance is quite reasonable.
02:49:30 <Bike> planck charge is almost reasonable
02:49:31 <pikhq> It's about 29 ohms.
02:49:36 <Bike> it's more than the electron's, for some reason?
02:49:49 <ais523> 29 ohms is a little small
02:49:56 <ais523> but then, it's larger than, you know, the actual ohm
02:50:00 <ais523> so I'll forgive it
02:50:02 -!- Sprocklem has joined.
02:50:12 <Bike> hm, planck momentum is about six and a half kg*m/s, taht doesn't seem bad
02:50:29 <Bike> meanwhile the planck force is like 10^44 newtons, these are some great units here
02:50:30 <pikhq> The planck mass is only a tad bit small.
02:50:39 <pikhq> It's about 21 micrograms.
02:51:32 <Bike> 10^19 GeV? huge!!
02:51:36 <pikhq> Which is even crazier considering it's a base unit...
02:52:01 <pikhq> Blanck density? 5x10^96 kg/m^3!
02:52:03 <pikhq> *Planck
02:52:51 <elliott_> Unlike all other Planck base units and most Planck derived units, the Planck mass has a scale more or less conceivable to humans. It is traditionally said to be about the mass of a flea, but more accurately it is about the mass of a flea egg.
02:53:04 <elliott_> ah yes, flea eggs, that common household object I have a solid grasp on the mass of
02:53:30 <Bike> so an object with the planck mass and density would be 10^-60 times as big as an electron
02:53:38 <Bike> makes sense, i can see why these are natural units
02:54:00 -!- [1]AndoDaan has joined.
02:54:13 -!- AndoDaan has quit (Ping timeout: 272 seconds).
02:54:14 -!- [1]AndoDaan has changed nick to AndoDaan.
02:54:31 <pikhq> Bike: But hey, c=1.
02:54:55 <Bike> and, really, isn't that what's important.
02:55:44 * pikhq would be somewhat more pleased by a system that set $c=\pi$ though.
02:55:54 <zzo38> pikhq: Why?
02:55:56 <pikhq> It'd make some physics equations *hilarious*.
02:56:03 <Bike> you are a bad person
02:56:03 <zzo38> I like c=1
02:56:31 <ais523> I think we should set c=-1
02:56:31 <Bike> i wonder if that would mess with angular velocities somehow
02:56:41 <pikhq> E=M/pi^2? Mmm.
02:57:24 <Bike> you know what really grinds my gears, is metrics in physics not being a metrics in maths
02:57:27 <Bike> terrible
02:58:04 <quintopia> Bike: i have an oil can, so while i can't help you with the metrics, i can keep your gears in better shape
02:59:33 <pikhq> I'm afraid they're already ground.
03:01:23 -!- AndoDaan has quit (Ping timeout: 240 seconds).
03:02:22 -!- Sorella has quit (Ping timeout: 272 seconds).
03:03:04 <Bike> alright nerds, someone tell me what horrible magic i've done in C, because i don't know how this can happen. http://sprunge.us/KdaX
03:03:36 <Bike> #<UNKNOWN> being the output of my write function, except it's not supposed to do it a billion times
03:04:40 <elliott_> it would help to see your code...?
03:04:51 <ais523> elliott_: he pasted it the line before
03:04:57 <Bike> no i didn't
03:05:02 <ais523> oh, is that the output?
03:05:04 <pikhq> I do enough psychic debugging at work. :P
03:05:09 -!- lambdabot has quit (Remote host closed the connection).
03:05:10 <pikhq> ais523: No, it's gdb session.
03:05:13 <elliott_> are you back to not clicking on links? :p
03:05:19 <ais523> "back"?
03:05:28 <ais523> I did turn off the thing that hides them altogether, ages ago
03:05:35 <ais523> but that didn't mean I actually started clicking on them
03:05:43 <ais523> I used a compromise, of making them the same color as normal text
03:06:07 <elliott_> can you correctly assume you know nothing about the links you haven't clicked, then? :p
03:06:08 <ais523> anyway, weird failure mode: my IRC is still connected, but I can't DNS resolve anything
03:06:23 <ais523> let me try reconnecting to the router
03:06:29 -!- ais523 has quit.
03:08:05 -!- AndoDaan has joined.
03:08:19 -!- ais523 has joined.
03:08:29 <ais523> that seems better
03:08:36 <ais523> it was particularly weird, the DNS didn't work no matter which DNS server I used
03:08:43 <pikhq> That is weird.
03:08:43 <ais523> maybe the breakage was one that prevented new connections
03:09:27 <Bike> http://sprunge.us/HZdb well, here's the relevant code, i didn't paste it because it was slightly more embarassing than my gdb ineptness, and also i think boring?
03:10:22 <ais523> anyway, I had a really good IOCCC contest idea
03:10:24 <ais523> like, really really good
03:10:31 <Bike> that's pretty good
03:10:32 <elliott_> sometimes my internet connection just starts being slow at playing youtube videos but not normal webpages, except also the administration interface gets slow so it's hard to reset it, and then the admin interface gets so slow that it won't respond at all, but the rest of the internet stays normal (and youtube is just really slow, not completely dead), and then if you disconnect from wifi you ...
03:10:32 <ais523> but I'm not sure I'll be able to get it ready in time for the deadline
03:10:38 <elliott_> ... can't reconnect, and also you lose connection entirely after a few hours of this
03:10:41 <elliott_> beat that
03:12:01 <ais523> is that some sort of traffic shaping, I wonder?
03:12:44 <elliott_> Bike: it's taking the else branch in write_lisp, I guess?
03:13:01 <elliott_> ais523: shaping traffic to the 192.168.0.1 web interface...?
03:13:20 <Bike> well, i know it's writing #<UNKNOWN>...
03:13:22 -!- lambdabot has joined.
03:13:25 <ais523> who's in control of your router firmware? </conspiracy?
03:13:31 <ais523> s/?/>/
03:13:37 <ais523> hi lambdabot
03:13:55 <Bike> i feel any good conspiracy should have a few seemingly extraneous question marks
03:13:58 <elliott_> Bike: I mean I assume the combine(user_write, list(2, obj, port), empty_environment) is doing weird things? you should set breaks on read_lisp and write_lisp and step through them I guess
03:14:08 <elliott_> ais523: you mean s/\?/>/
03:14:51 <ais523> s/\?/\?/
03:14:54 <Bike> well, break on combine doesn't fire, so i guess step it is...
03:14:57 -!- Sprocklem has quit (Ping timeout: 246 seconds).
03:15:02 <Bike> i forgot i could do that, i'm good at debugging.
03:16:15 -!- Sprocklem has joined.
03:18:51 <Bike> well, what it's doing is getting caught in a loop of... oh. I forgot to read another char when i continue. dumb.
03:19:07 <shachaf> i,i "does gdb have a way of stepping one instruction?" "si"
03:19:49 <Bike> what's i,i again
03:19:59 <pikhq> shachaf: :D
03:20:48 <shachaf> some sort of Pennsylvanian owl
03:22:03 <Bike> gotcha
03:22:25 <pikhq> It's probably the encoding of some obscure x86 instruction as well.
03:23:02 <ais523> something is definitely up with this internet connection atm
03:23:14 <ais523> some things are taking ages to load despite being measured in kb
03:23:17 <ais523> other things are loading instantly
03:23:56 <ais523> n1124.pdf is the document normally used as a C99 draft, right?
03:23:59 <pikhq> Yep.
03:24:03 <shachaf> Not DNS issues?
03:24:13 <ais523> sadly, this is one of those things where an actual copy of the standard would be helpful
03:24:20 <ais523> shachaf: it's possible, but it's due to third-party CDNs in that case
03:24:30 <ais523> because some of these are internal link to the same site
03:24:52 <pikhq> Friendly advice, just hit up http://port70.net/~nsz/c/ for those...
03:25:23 <pikhq> (all the C specs, gathered by nsz of #musl)
03:27:06 <Bike> iso646.h, the bobm
03:27:38 <Bike> "The above mentioned identifiers are operator keywords in the ISO C++ programming language and do not require the inclusion of a header file. For consistency, the C++98 standard provides the header <ciso646>. However the latter file has no effect, being empty.[1] Notwithstanding some compilers, such as Microsoft Visual C++, do require the header to be included in order to use these identifiers." incredible
03:28:51 <pikhq> Yep.
03:29:09 <pikhq> The header, of course, actually does something in C99.
03:29:20 <pikhq> Terrible though it might be.
03:29:48 <Bike> yeah, i learned about it looking through the includes for my Microchip crud. complete with an #ifdef to do nothing if it's C++
03:31:42 <Bike> https://pbs.twimg.com/media/BxOhDARCUAA1NLt.png:large also had this loveliness, but that's unrelated
03:34:37 <pikhq> But hey, lets you write C like this: http://sprunge.us/XNZh
03:35:30 <Bike> it's like php or something, yay
03:35:55 <Bike> i like how i can work out all the digrams from context...
03:36:11 <pikhq> The digraphs are nowhere near as crazy as the trigrams.
03:36:22 <pikhq> Erm, trigraphs
03:36:44 <pikhq> Both the choices are much more obvious and the actual implementation is much less insane.
03:37:13 <pikhq> The trigraphs are done as a sed process on the source before anything else is done, the digraphs are just alternate tokens.
03:37:20 <elliott_> what I don't get is how digraphs were added in 1994
03:37:28 <elliott_> surely they were obsolete from the start
03:37:44 <pikhq> IBM mainframes are GOD DAMNED MOTHERFUCKING INSANE.
03:38:18 <coppro> ^
03:38:53 <pikhq> The default charset there actually is missing these characters I kid you not.
03:39:52 <coppro> yep
03:39:56 <pikhq> Oh, and before you ask, *yes*, you can code in C on there.
03:40:06 <zzo38> Can it be programmed to use ASCII though so that you can use ASCII-based programs?
03:40:25 <pikhq> If you use a charset with not-utterly-insane character selection you can even compile fairly normal C programs on there.
03:40:30 <pikhq> zzo38: No.
03:40:35 <coppro> pikhq: IBM is kind of infamous in the C++ community for, when C++11 was being standardized and removal of trigraphs being suggeted, going "sorry guys, we suck and all, but we use them"
03:40:59 <coppro> committee members are pushing for them to die by C++17 though. hopefully they succeed
03:41:09 <zzo38> TeX has an internal conversion table so that it can use ASCII internally and can still be used on non-ASCII computers.
03:41:22 <pikhq> Sadly it's unlikely. IBM mainframes are still going to use EBCDIC then.
03:41:39 <coppro> pikhq: yes, but maybe they can be convinced to switch to digraphs
03:41:39 <pikhq> And there's just about no way IBM's going to actually deploy UTF-EBCDIC which would make me honestly rather happy.
03:41:45 <pikhq> Oh, sure.
03:41:54 <pikhq> That's a much easier selling point.
03:41:58 <coppro> or basically told "at this point we don't actually care what you do. you're welcome to run trigraphs in your local compilers, we won't standardize them though"
03:42:07 <pikhq> And digraphs aren't utterly god damned insane. :P
03:42:11 <coppro> IBM can't unilaterally block their removal
03:42:16 <zzo38> Although you might have to change the category codes in your program in order to get your file to work
03:42:29 <pikhq> I do wish they'd deploy UTF-EBCDIC though.
03:42:37 <pikhq> It'd make certain parts of my day job much easier.
03:43:02 <coppro> pikhq: wait. your day job?
03:43:12 <zzo38> So, at least TeX can still be used even if other things don't work.
03:43:33 <pikhq> coppro: Some damned bastard client went "yeah, yeah we like your stuff but can it work with mainframes?"
03:44:03 <pikhq> ... long story short I've actually written a COBOL struct parser.
03:44:42 <coppro> oh god
03:45:12 <zzo38> pikhq: You can try using the way TeX does; it can use ASCII without implementing Unicode.
03:45:19 <pikhq> Honestly the hardest part was just teasing out EBNF for it.
03:45:20 <coppro> zzo38: that does not work
03:45:26 <coppro> zzo38: Because the native encoding is EBDIC
03:45:37 <pikhq> IBM mainframe people have not heard of BNF of any sort.
03:45:45 <pikhq> And I mean *any* sort.
03:46:02 <pikhq> The actual damned spec gives vague syntax diagrams. :(
03:46:22 <zzo38> coppro: TeX can do it anyways; the program will convert everything so that it can use ASCII regardless of what the native encoding is. It also has a \catcode command and ^^ notations so that you can still work it even if some characters are missing on your computer.
03:46:37 <coppro> zzo38: he's not dealing with internal stuff though
03:46:44 <coppro> he needs to interact with the world around him
03:47:28 <zzo38> Well, yes, you convert out of ASCII format when making output, and convert into ASCII format when receiving the input.
03:47:31 <pikhq> Yeah. I'm on a stupid powerful Linux box that's got a dumb ass mainframe serializing data at it that's only described by a bit of COBOL source.
03:49:42 <zzo38> Even Z-machine codes, even though they are ASCII internally, can be used on non-ASCII computers.
03:50:10 <Bike> note to self, do not try to be clever with strncmp, you are an idiot
03:50:30 <HackEgo> [wiki] [[Bueue]] http://esolangs.org/w/index.php?diff=40555&oldid=40499 * Oerjan * (+19) /* Computational Class */ Some proof-reading
03:51:01 <myname> be more specific
03:54:34 -!- conehead has joined.
03:54:36 <Bike> about cobol?
03:56:40 <coppro> zzo38: pikhq's problem is the lack of a decent unicode encoding for him to export/import to/from
04:02:29 <zzo38> Another alternative would be to use external programs to do the conversions
04:03:00 <zzo38> EBCDIC is no good, and UTF-EBCDIC is also no good.
04:04:03 <myname> what the hell is wrong with android apps that force landscape mode and refuse to use reversed landscape
04:04:23 <lifthrasiir> polarity warning
04:05:26 <ais523> "reversed landscape"?
04:05:40 <ais523> is that rotated 90 degrees the other way?
04:05:47 <lifthrasiir> yes.
04:05:48 <myname> 180
04:05:54 <myname> ah, yes
04:05:55 <ais523> from portrait, I mean
04:10:25 <HackEgo> [wiki] [[JSFuck]] M http://esolangs.org/w/index.php?diff=40556&oldid=40513 * Oerjan * (+10) Small fixes
04:10:28 <quintopia> myname: they are probably configured lazily to work best for phones with hardware keybaords
04:10:57 <myname> it's fucking annoying if my phone is charging
04:11:10 <zzo38> I have seen some Android which have a switch to make it to turn or not turn
04:11:27 <myname> yes, but that enables or disables turning in general
04:11:39 <myname> (on apps that don't force)
04:11:46 <zzo38> Yes, I know, it doesn't change software that doesn't ordinarily turn
04:12:15 <myname> also, it does not work in this case
04:14:38 -!- shikhout has quit (Ping timeout: 250 seconds).
04:14:41 <HackEgo> [wiki] [[Object oriented thue]] M http://esolangs.org/w/index.php?diff=40557&oldid=40548 * Oerjan * (+8) /* stdfile */ Remove redundant lines
04:18:02 -!- ais523 has quit (Remote host closed the connection).
04:18:17 -!- ais523 has joined.
04:23:02 <ais523> `! c int x = 127.0.0.1;
04:23:18 <HackEgo> cat: x: No such file or directory \ Does not compile. \ ./interps/gcccomp/gcccomp: fork: retry: No child processes \ ./interps/gcccomp/gcccomp: fork: retry: No child processes \ ./interps/gcccomp/gcccomp: fork: retry: No child processes \ ./interps/gcccomp/gcccomp: fork: retry: No child processes \ ./interps/gcccomp/gcccomp: fork: Resource temporar
04:23:25 <ais523> hmm
04:24:58 -!- Jafet has joined.
04:29:41 <HackEgo> [wiki] [[Brainflow]] http://esolangs.org/w/index.php?diff=40558&oldid=40528 * Oerjan * (-207) Proofreading
04:37:19 -!- copumpkin has joined.
04:39:23 <HackEgo> [wiki] [[Mindcrush]] http://esolangs.org/w/index.php?diff=40559&oldid=40538 * Oerjan * (+88) Proofread
04:44:46 <ais523> this is fun, I've already got to write things like "b c = (b){ c.c} ;"
04:45:02 <ais523> might have to remove some of the whitespace in that, depending on how length limits go
04:45:09 <ais523> may be that I hit the whitespace limit before the non-whitespace limit
04:48:13 <ais523> oh, they changed it
04:48:23 <ais523> total 4096, non-whitespace 2053
04:50:01 <ais523> the IOCCC people have really gone overboard with jokes in the rules and guidelines this time
04:50:09 <ais523> | This line has a change mark at the beginning.
04:57:02 <Bike> how does (b){c.c} parse, exactly
04:57:02 <myndzi> c.c.c
04:57:02 <myndzi> c.c
04:57:26 <Bike> why did it not do that earlier... eh.
05:01:10 -!- Sorella has joined.
05:01:34 <ais523> Bike: here, b is a typedef for a struct
05:01:49 <ais523> so it parses as (struct struct_tag){object.field}
05:02:10 <Bike> i guess i don't know what the {} part means.
05:02:12 -!- Sorella has quit (Changing host).
05:02:12 -!- Sorella has joined.
05:02:25 <Bike> literal... something? array?
05:03:05 <lifthrasiir> ais523: heh, are you trying to make an IOCCC entry?
05:03:27 <ais523> lifthrasiir: yes
05:03:33 <ais523> Bike: struct literal, in this case
05:03:37 <lifthrasiir> I don't have any good idea this time
05:03:52 <ais523> I'm not sure how much I should talk about my idea, in case someone steals it and thus reduces my chance of winning
05:03:56 <Bike> i thought there should be a type, for some reason, but that doesn't really make sense
05:03:59 <ais523> otoh it's probably silly to worry about theft of IOCC entry ideas
05:04:16 <ais523> lifthrasiir: you can make use of the fact that "and", "or", etc., count as 1 letter + the reset of the word in whitespace
05:04:21 <ais523> because they're in <iso646.h>
05:04:29 <ais523> I have a strong feeling that this loophole was placed in there intentionally
05:04:33 <ais523> *IOCCC
05:04:34 <lifthrasiir> and some _* reserved words.
05:04:38 <lifthrasiir> (afaik)
05:04:45 <ais523> yes but you can't use those as variables in any version of C
05:05:16 <lifthrasiir> do judges use the most recent version of C for every entry?
05:05:18 <Bike> is there some gdb command to keep steppin until you get back to some frame
05:05:39 <shachaf> fin?
05:06:10 <Bike> thanks yeah
05:06:47 -!- [1]AndoDaan has joined.
05:08:14 -!- TieSoul has joined.
05:08:45 -!- AndoDaan has quit (Ping timeout: 260 seconds).
05:09:05 -!- [1]AndoDaan has changed nick to AndoDaan.
05:33:56 <ais523> OK, I guess I'm going to have to ask for help
05:34:10 <ais523> can anyone figure out any way in which an integer constant expression could have a value outside the range of its own type, without invoking UB?
05:34:56 <ais523> because I'm stumped
05:35:16 <ais523> the closest I've got is -1/INT_MIN, but gcc isn't acting as expected on it
05:39:21 <ais523> ooh, sizeof(long[SIZE_MAX]) seems to work, but I'm worried that that's UB in its own right
05:42:42 <ais523> /dev/stdin:1:1: error: ‘auto’ in file-scope empty declaration
05:42:49 <ais523> oh well, at least I'm coming across errors I've never seen before
05:42:54 <ais523> and probably none of you have either
05:44:55 <fizzie> Why would -1/INT_MIN have a value outside int instead of just 0?
05:45:24 <ais523> oh, whoop
05:45:24 <coppro> ais523: hmm, what do you mean "outside the range of its own type"
05:45:26 <ais523> *whoops
05:45:29 <ais523> needs to be INT_MIN/-1
05:45:43 <coppro> oh, nvm
05:45:45 <coppro> hmm
05:45:47 <ais523> coppro: say, an expression of type of int, that evaluates to something of type int, with no UB involved
05:46:24 <fizzie> INT_MIN/-1 presumably involves UB due to signed integer overflow.
05:46:34 <ais523> yes
05:46:43 <ais523> however, I got the warning I was aiming for: /dev/stdin:2:1: warning: overflow in constant expression [-Woverflow]
05:46:52 <ais523> not convinced that's a no-UB way to manage it, though
05:47:31 <ais523> that said, it seems basically impossible that there's a way to get an out of range value without UB, because signed overflow is UB and unsigned overflow wraps
05:47:42 <ais523> and float overflow saturates at infinity
05:48:12 <coppro> yes
05:48:14 <HackEgo> [wiki] [[Mang]] http://esolangs.org/w/index.php?diff=40560&oldid=40549 * Oerjan * (+5) fmt, sp
05:48:34 <coppro> ais523: have you abused trigraphs enough yet?
05:48:40 <fizzie> Recently I learned: having INT_MIN with a larger absolute value than INT_MAX is not equivalent to having a two's-complement representation for signed integers: it's allowed also for two's-complement systems to reserve the one value (sign bit 1, other bits 0) as a trap representation.
05:48:49 <ais523> coppro: trigraph abuse is effectively banned this year
05:48:54 <ais523> they didn't say anything about /digraph/ abuse, though
05:49:02 <ais523> so maybe I'll use some of that
05:49:45 <coppro> are digraphs in C?
05:49:52 <ais523> yes, but not C89
05:49:54 <ais523> I think they're C99
05:49:58 <coppro> also where did they effectively ban trigraphs?
05:50:14 <ais523> guidelines, they say they trigraph-preprocess source pretty much before looking at it
05:50:46 <fizzie> ais523: C95, actually.
05:50:48 <coppro> ah ok
05:51:23 <coppro> hmm
05:51:31 <ais523> fizzie: fair enough, that means they're also C99
05:51:35 <ais523> which is what I'm targeting
05:51:39 <coppro> I think my favourite objuscated program I've ever seen was that perl script that played game of life with itself
05:51:48 <ais523> because a) it has the best-quality draft, b) it's smaller than C11
05:51:55 <HackEgo> [wiki] [[EsoInterpreters]] http://esolangs.org/w/index.php?diff=40561&oldid=40552 * Oerjan * (-548) Undo revision 40552 by [[Special:Contributions/Quintopia|Quintopia]] ([[User talk:Quintopia|talk]]) That's a compiler not an interpreter
05:53:21 <coppro> actually does anyone know where to find that life game?
05:53:44 <ais523> int main(void) { auto auto int x; }
05:53:49 <ais523> yet another error message I've never seen before
05:53:52 <ais523> I guess, because nobody ever uses auto
05:54:02 <shachaf> What is the error message?
05:54:28 <ais523> duplicate 'auto'
05:54:29 <fizzie> I've had [warning: function definition declared 'auto'] in my candide log.
05:54:47 <fizzie> For auto int f(int x) { return x; } apparently.
05:55:08 <ais523> who writes such a thing?
05:55:12 <ais523> other than me, I mean
05:57:48 <fizzie> There was something I thought was a illogical corner case in the standard, though upon closer reading it was consistent after all. Something involving storage-class specifiers for a function, but there was some rule forbidding them after all, just not where I was expecting.
05:59:39 <Bike> no stack allocated functions, huh? rough.
06:00:31 <b_jonas> fizzie: is that for C, or C++ before C++11, or for C++11?
06:00:44 <b_jonas> I think they might differ in handling "auto"
06:00:54 <fizzie> For C.
06:01:10 <ais523> oh well, think I found my first gcc bug doing this
06:01:15 <ais523> I won't report it until after the IOCCC
06:01:19 <fizzie> (If you type "for C" with the left hand offset by one, you get "got V".)
06:01:27 <b_jonas> ais523: nice
06:01:59 <ais523> nope, it was a typo :-(
06:02:02 <b_jonas> I think I have one gcc bug found so far, not counting back ten years ago when g++ 2.something was so unstable compiling anything could segfault
06:02:08 <b_jonas> aww!
06:02:15 <b_jonas> try it in clang!
06:02:33 <b_jonas> the ioccc judges said in the guidelines they prefer clang (and portable code of course)
06:02:35 <Sgeo> SMITE seems educational, if learning about mythology is your thing
06:10:26 <b_jonas> here's the crazy bug I reported => https://gcc.gnu.org/bugzilla/show_bug.cgi?id=59704
06:12:48 <Bike> i agree, this is crazy
06:12:55 <Bike> why did you want to do this
06:15:35 <b_jonas> Bike: a moment
06:17:17 <ais523> (v-v)'s getting optimized into 0, which is being interpreted as nullptr?
06:17:23 <ais523> I can easily imagine that bug happening
06:17:56 <b_jonas> in here Jens Gustedt claims that he can recognize compile time constants in portable C, which is useful for some macro hacks: https://gustedt.wordpress.com/2013/08/22/testing-compile-time-constness-and-null-pointers-with-c11s-_generic/
06:18:12 <Sgeo> Why would anyone want to attach candles while underwater?
06:18:17 <b_jonas> for that he subtracts the number from itself and checks if it converts to a null pointer,
06:18:31 <oerjan> Sgeo: i suppose they just have a burning desire
06:18:33 <ais523> Sgeo: didn't /you/ fix that bug?
06:18:35 <b_jonas> he also claims he can't do this in C++, but I claimed I can do it in _old_ c++,
06:18:43 <b_jonas> and tried to write a proof of concept,
06:18:59 <Sgeo> ais523: yes. I'm being silly with the "why did you want to do this" for something unrelated
06:19:04 <b_jonas> and I could write one, but can't make it reliable, for it seems to depend on the optimizations gcc does, which it shouldn't,
06:19:08 <b_jonas> because of that bug.
06:19:22 <Sgeo> I have no idea which scenario is actually more reasonable
06:19:31 <ais523> `! c static int s; extern inline int f() {s=1;}
06:19:43 <ais523> by my reading, that program has a mandatory warning
06:19:46 <HackEgo> cat: int: No such file or directory \ Does not compile. \ ./interps/gcccomp/gcccomp: fork: retry: No child processes \ ./interps/gcccomp/gcccomp: fork: retry: No child processes \ ./interps/gcccomp/gcccomp: fork: retry: No child processes \ ./interps/gcccomp/gcccomp: fork: retry: No child processes \ ./interps/gcccomp/gcccomp: fork: Resource tempor
06:19:47 <b_jonas> I actually have a working version, but as I also have a verion that should work but doesn't, my version could also break in the future unless they fix this bug consistently.
06:21:01 <oerjan> `! c int main () { printf("hm"); }
06:21:16 <oerjan> now what
06:21:17 <HackEgo> cat: main: No such file or directory \ Does not compile. \ ./interps/gcccomp/gcccomp: fork: retry: No child processes \ ./interps/gcccomp/gcccomp: fork: retry: No child processes \ ./interps/gcccomp/gcccomp: fork: retry: No child processes \ ./interps/gcccomp/gcccomp: fork: retry: No child processes \ ./interps/gcccomp/gcccomp: fork: Resource tempo
06:21:29 <oerjan> ais523: i have a hunch `! c isn't working
06:21:47 <ais523> ditto
06:22:19 <oerjan> `url interp
06:22:19 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/file/tip/interp
06:22:49 <oerjan> that didn't seem to exist
06:23:31 <oerjan> oh wait duh
06:24:24 <oerjan> `! perl print "hi"
06:24:25 <HackEgo> ​/hackenv/bin/!: 4: exec: ibin/perl: not found
06:24:44 <Bike> okay, so it is isnane. good to know.
06:25:02 <oerjan> `run ln bin/perl-e ibin/perl
06:25:04 <HackEgo> No output.
06:25:06 <oerjan> `! perl print "hi"
06:25:07 <HackEgo> hi
06:25:12 <oerjan> one down
06:26:34 <oerjan> `which interp_file
06:26:35 <HackEgo> No output.
06:27:48 <mroman_> This could mean not everyone is allowed to launch a website, but that a license would be required, for example.
06:29:17 <b_jonas> mroman_: what? is that a reply to something? I don't get the context
06:29:32 <b_jonas> is that related to attaching the candles underwater?
06:31:55 -!- MoALTz has quit (Quit: Leaving).
06:32:22 <oerjan> `! c printf("test");
06:32:27 <zzo38> Why are you attaching candles underwater? Won't the fire go out?
06:32:35 <oerjan> `echo hi
06:32:36 <HackEgo> hi
06:32:38 <HackEgo> Does not compile. \ ./interps/gcccomp/gcccomp: fork: retry: No child processes \ ./interps/gcccomp/gcccomp: fork: retry: No child processes \ ./interps/gcccomp/gcccomp: fork: retry: No child processes \ ./interps/gcccomp/gcccomp: fork: retry: No child processes \ ./interps/gcccomp/gcccomp: fork: Resource temporarily unavailable
06:34:34 <ais523> zzo38: there was a bug
06:34:39 <ais523> the fire should go out, but it didn't
06:34:42 <ais523> Sgeo: fixed the bug
06:36:45 <oerjan> `run echo 'int main () { printf("hm"); }' >test.c
06:36:46 <HackEgo> No output.
06:36:51 <oerjan> `cat test.c
06:36:51 <HackEgo> int main () { printf("hm"); }
06:37:14 <mroman_> b_jonas: that's a quote from slashdot
06:37:24 <oerjan> `run ./interps/gcccomp/gcccomp <test.c 2>&1
06:37:40 <HackEgo> cat: : No such file or directory \ Does not compile. \ ./interps/gcccomp/gcccomp: fork: retry: No child processes \ ./interps/gcccomp/gcccomp: fork: retry: No child processes \ ./interps/gcccomp/gcccomp: fork: retry: No child processes \ ./interps/gcccomp/gcccomp: fork: retry: No child processes \ ./interps/gcccomp/gcccomp: fork: Resource temporari
06:40:08 -!- int-e has quit (Ping timeout: 260 seconds).
06:40:15 -!- int-e has joined.
06:40:22 -!- conehead has quit (Quit: Computer has gone to sleep).
06:41:39 <oerjan> `run ./interps/gcccomp/gcccomp c <test.c 2>&1
06:41:55 <HackEgo> cat: : No such file or directory \ ./interps/gcccomp/gcccomp: fork: retry: No child processes \ ./interps/gcccomp/gcccomp: fork: retry: No child processes \ ./interps/gcccomp/gcccomp: fork: retry: No child processes \ ./interps/gcccomp/gcccomp: fork: retry: No child processes \ ./interps/gcccomp/gcccomp: fork: Resource temporarily unavailable
06:42:53 <Sgeo> zzo38: attaching unlit candles to the candelabrum. When underwater, would complain about being unable to light stuff under water, despite most people being able to attach things without setting them aflame
06:43:32 <myname> wat
06:44:21 <Sgeo> myname: are you able to attach things to other things without setting things aflame?
06:44:52 <oerjan> `run ./interps/gcccomp/gcccomp c test.c 2>&1
06:45:08 <HackEgo> ​./interps/gcccomp/gcccomp: fork: retry: No child processes \ ./interps/gcccomp/gcccomp: fork: retry: No child processes \ ./interps/gcccomp/gcccomp: fork: retry: No child processes \ ./interps/gcccomp/gcccomp: fork: retry: No child processes \ ./interps/gcccomp/gcccomp: fork: Resource temporarily unavailable
06:45:22 <oerjan> `uptime
06:45:22 <HackEgo> ​ 06:45:19 up 0 min, 0 users, load average: 0.00, 0.00, 0.00
06:45:32 <myname> Sgeo: i do think so
06:45:40 <oerjan> `gcc test.c
06:45:42 <HackEgo> test.c: In function ‘main’: \ test.c:1:15: warning: incompatible implicit declaration of built-in function ‘printf’ [enabled by default]
06:45:55 <oerjan> `ls
06:45:56 <HackEgo> ​:-( \ a.out \ bdsmreclist \ bin \ binpipes \ canary \ cat \ complaints \ crunchfuck \ :-D \ dc \ dog \ etc \ factor \ head \ hej \ hello \ hello.c \ ibin \ interps \ lib \ moop.txt \ paste \ pref \ prefs \ quines \ quotes \ share \ src \ test.c \ Wierd \ wisdom \ wisdom.pdf
06:45:57 <Sgeo> myname: this makes you smarter than a 3.4.3 NetHack character
06:46:02 <oerjan> `./a.out
06:46:03 <HackEgo> hm
06:46:37 <ais523> haha, Ubuntu are updating bash /again/
06:46:41 <myname> well, if it's a /oFire
06:46:51 <ais523> seems like they found another bug, possibly unrelated to the other two?
06:48:20 <myname> nethack is the only place i know where WoW is something other than a n mmmorpg
06:48:46 <oerjan> `printenv GCC
06:48:47 <HackEgo> No output.
06:50:25 <oerjan> `run env GCC=gcc ./interps/gcccomp/gcccomp c test.c 2>&1
06:50:41 <HackEgo> ​./interps/gcccomp/gcccomp: fork: retry: No child processes \ ./interps/gcccomp/gcccomp: fork: retry: No child processes \ ./interps/gcccomp/gcccomp: fork: retry: No child processes \ ./interps/gcccomp/gcccomp: fork: retry: No child processes \ ./interps/gcccomp/gcccomp: fork: Resource temporarily unavailable
06:52:33 <ais523> int f()()
06:52:38 <ais523> wow, there are amazing things you can do in C
06:52:56 <ais523> if you don't worry about it compiling
06:56:11 -!- [1]AndoDaan has joined.
06:56:35 <oerjan> `! cxx printf("test");
06:56:59 <HackEgo> ​./interps/gcccomp/gcccomp: fork: retry: No child processes \ ./interps/gcccomp/gcccomp: fork: retry: No child processes \ ./interps/gcccomp/gcccomp: fork: retry: No child processes \ ./interps/gcccomp/gcccomp: fork: retry: No child processes \ ./interps/gcccomp/gcccomp: fork: Resource temporarily unavailable
06:57:15 <oerjan> `g++ test.c
06:57:16 <HackEgo> test.c: In function ‘int main()’: \ test.c:1:26: error: ‘printf’ was not declared in this scope
06:58:18 <oerjan> `run (echo '#include <stdio>`; echo 'int main () { printf("hm"); }') >test.c
06:58:18 <HackEgo> bash: -c: line 0: syntax error near unexpected token `(' \ bash: -c: line 0: `(echo '#include <stdio>`; echo 'int main () { printf("hm"); }') >test.c'
06:58:27 <oerjan> `run (echo '#include <stdio>; echo 'int main () { printf("hm"); }') >test.c
06:58:28 <HackEgo> bash: -c: line 0: syntax error near unexpected token `(' \ bash: -c: line 0: `(echo '#include <stdio>; echo 'int main () { printf("hm"); }') >test.c'
06:58:41 <oerjan> `run (echo '#include <stdio>'; echo 'int main () { printf("hm"); }') >test.c
06:58:43 <HackEgo> No output.
06:58:47 <oerjan> `gcc test.c
06:58:48 <HackEgo> test.c:1:17: fatal error: stdio: No such file or directory \ compilation terminated.
06:58:57 -!- AndoDaan has quit (Ping timeout: 245 seconds).
06:58:59 -!- [1]AndoDaan has changed nick to AndoDaan.
06:59:07 <oerjan> gah i don't remember C
06:59:34 <oerjan> `run (echo '#include <stdio.h>'; echo 'int main () { printf("hm"); }') >test.c
06:59:36 <HackEgo> No output.
06:59:38 <oerjan> `gcc test.c
06:59:38 <HackEgo> No output.
06:59:44 <oerjan> `c++ test.c
06:59:46 <HackEgo> No output.
07:00:46 <oerjan> `run ./interps/gcccomp/gcccomp c++ test.c 2>&1
07:00:58 <b_jonas> zzo38: you don't light them underwater, just attach the candles
07:01:02 <HackEgo> ​./interps/gcccomp/gcccomp: fork: retry: No child processes \ ./interps/gcccomp/gcccomp: fork: retry: No child processes \ ./interps/gcccomp/gcccomp: fork: retry: No child processes \ ./interps/gcccomp/gcccomp: fork: retry: No child processes \ ./interps/gcccomp/gcccomp: fork: Resource temporarily unavailable
07:01:30 <oerjan> ok there must just be something _wrong_ with that gcccomp
07:01:35 <mroman_> `cat test.c
07:01:36 <HackEgo> ​#include <stdio.h> \ int main () { printf("hm"); }
07:01:41 <b_jonas> ais523: no, they're just fixing the one bug properly, as opposed to a quick emergency fix
07:01:44 <mroman_> `run gcc -o test test.c
07:01:46 <HackEgo> No output.
07:01:50 <mroman_> `run ./test
07:01:51 <HackEgo> hm
07:01:59 <oerjan> mroman_: the program is fine.
07:02:12 <oerjan> i'm trying to fix `! c
07:03:07 -!- Sorella has quit (Ping timeout: 245 seconds).
07:04:09 <oerjan> `run gcc -x c test.c -o /tmp/compiled.$$ 2> /dev/null
07:04:10 <HackEgo> No output.
07:04:28 <fizzie> I'd look into resource limits if I were you.
07:04:36 <fizzie> There's a suspicious ulimit -u 3 after the compilation in gcccomp.
07:04:47 <oerjan> hm...
07:04:56 <fizzie> Possibly HackEgo's machinery involves more user processes than EgoBot's did.
07:04:57 <oerjan> ok let's try removing that
07:05:39 <oerjan> `run sed -i 's/ulimit/#ulimit/' interps/gcccomp/gcccomp
07:05:40 <HackEgo> No output.
07:05:59 <oerjan> `run ./interps/gcccomp/gcccomp c test.c 2>&1
07:06:00 <HackEgo> No output.
07:06:02 <oerjan> hah
07:06:22 <oerjan> `! c++ printf("hm");
07:06:23 <HackEgo> ​/hackenv/bin/!: 4: exec: ibin/c++: not found
07:06:30 <oerjan> `! cxx printf("hm");
07:06:31 <HackEgo> hm
07:06:39 <oerjan> :)
07:06:44 <oerjan> `! c printf("hm");
07:06:44 <HackEgo> Does not compile.
07:06:54 <oerjan> thought so, i found another bug
07:07:14 <oerjan> `run sed -i 's/1/0/' ibin/c
07:07:15 <HackEgo> No output.
07:07:23 <oerjan> `! c printf("hm");
07:07:24 <HackEgo> Does not compile.
07:07:26 <oerjan> oops
07:07:39 <oerjan> `cat ibin/c
07:07:39 <HackEgo> ​#!/bin/sh \ . lib/interp \ interp_file "./interps/gcccomp/gcccomp $0"
07:08:36 <oerjan> `run sed -i 's/[$]0/c/' ibin/c
07:08:37 <HackEgo> No output.
07:08:43 <oerjan> `! c printf("hm");
07:08:44 <HackEgo> hm
07:08:47 <oerjan> yay!
07:09:20 <oerjan> i assume HackEgo's own limits will take care of the missing ulimit
07:09:41 <oerjan> `! c int main () { printf("hm"); }
07:09:42 <HackEgo> No output.
07:09:47 <oerjan> oops
07:11:19 <oerjan> `cat test.c
07:11:20 <HackEgo> ​#include <stdio.h> \ int main () { printf("hm"); }
07:11:35 <oerjan> `run echo 'int main () { printf("hm"); }' >test.c
07:11:36 <HackEgo> No output.
07:11:40 <oerjan> `gcc test.c
07:11:42 <HackEgo> test.c: In function ‘main’: \ test.c:1:15: warning: incompatible implicit declaration of built-in function ‘printf’ [enabled by default]
07:12:55 <fizzie> Perhaps we should just get candide here, it's got the best C-running capabilities I've seen in freenode.
07:13:05 <fizzie> Though I suppose our DIY tradition would balk at that.
07:13:07 <oerjan> hmph
07:13:20 <oerjan> well it's working _somewhat_
07:13:44 <oerjan> `! c int main () { puts("hi\n"); }
07:13:45 <HackEgo> Does not compile.
07:14:06 <fizzie> Yes, but it doesn't have a fancy prelude.h that includes all standard headers by default (except not if you specify custom includes), and a built-in gdb("foo") command to do stuff, and a built-in "pretty-print all local variables if execution ends with no output" function, and ...
07:15:03 <fizzie> And it "intelligently" does the main-wrapper and picks up functions, so that you can write int f(void) { return 42; } int x = f(); and it wraps a main around the latter.
07:15:19 <fizzie> Of course there's so much magic there that doing something very strange (not unlikely here?) can occasionally confuse it.
07:15:59 <oerjan> heh
07:18:29 <oerjan> `! java java.lang.System.out.println("hi");
07:18:29 <HackEgo> ​/hackenv/bin/!: 4: exec: ibin/java: not found
07:18:37 <oerjan> wat
07:18:53 <fizzie> You don't have to type "java.lang.", it's imported by default.
07:19:34 <oerjan> `run sed 's/p c/p java/' ibin/c >ibin/java
07:19:35 <HackEgo> No output.
07:19:44 <oerjan> `! java System.out.println("hi");
07:19:44 <HackEgo> ​/hackenv/bin/!: 4: exec: ibin/java: Permission denied
07:19:57 <oerjan> `run chmod +x ibin/java
07:19:58 <HackEgo> No output.
07:19:59 <oerjan> `! java System.out.println("hi");
07:20:15 <HackEgo> hi
07:20:15 <fizzie> Ooh, gcj.
07:20:26 <fizzie> Also only took 15 secunds to run.
07:21:14 <oerjan> perhaps there's a reason Gregor had disabled it :P
07:21:31 <fizzie> `java -version
07:21:31 <HackEgo> java version "1.6.0_27" \ OpenJDK Runtime Environment (IcedTea6 1.12.5) (6b27-1.12.5-1) \ OpenJDK 64-Bit Server VM (build 20.0-b12, mixed mode)
07:21:38 <fizzie> 1.6! So old!
07:26:31 <fizzie> `! java System.out.println(Main.class);
07:26:34 <HackEgo> class Main
07:26:49 <fizzie> That's less slow, I guess it's in disk cache for now.
07:27:59 -!- drdanmaku has quit.
07:35:49 <oerjan> this all should also have got `! asm working
07:36:09 <mroman_> `! asm mov eax, 0
07:36:10 <HackEgo> Does not compile.
07:36:21 <mroman_> `! asm mov %eax, %ebp
07:36:21 <HackEgo> Does not compile.
07:36:40 <mroman_> `run vim
07:36:41 <HackEgo> bash: vim: command not found
07:36:43 <mroman_> `run vi
07:36:44 <oerjan> WELL IN THEORY
07:36:55 <mroman_> `echa bar
07:36:55 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: echa: not found
07:36:59 <mroman_> `echo bar
07:37:00 <HackEgo> bar
07:37:01 <oerjan> it uses gcc as the assembler, like the other gcccomp programs
07:37:10 <mroman_> `run vi &
07:37:12 <mroman_> `ps axuw
07:37:12 <HackEgo> Vim: Warning: Output is not to a terminal \ Vim: Warning: Input is not from a terminal \ [1;24r[?25h[?8c[?25h[?0c[27m[24m[0m[H[J[?25l[?1c[2;1H[1m[34m~ [3;1H~ [4;1H~
07:37:13 <HackEgo> USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND \ 0 1 0.0 0.1 1012 272 ? S 07:37 0:00 /init \ 0 2 0.0 0.0 0 0 ? S 07:37 0:00 [kthreadd] \ 0 3 0.0 0.0 0 0 ? S 07:37 0:00 [ksoftirqd/0] \ 0 4 0.0 0.0 0 0 ?
07:37:13 <HackEgo> Vim: Warning: Output is not to a terminal \ [1;24r[?25h[?8c[?25h[?0c[27m[24m[0m[H[J[?25l[?1c[2;1H[1m[34m~ [3;1H~ [4;1H~
07:37:25 <ais523> it doesn't have a vim, but vi is actually vim?
07:37:31 <ais523> what sort of setup is that?
07:37:35 <mroman_> `ps axuw
07:37:35 <HackEgo> USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND \ 0 1 0.0 0.1 1012 272 ? S 07:37 0:00 /init \ 0 2 0.0 0.0 0 0 ? S 07:37 0:00 [kthreadd] \ 0 3 0.0 0.0 0 0 ? S 07:37 0:00 [ksoftirqd/0] \ 0 4 0.0 0.0 0 0 ?
07:38:11 <mroman_> `! c prinf();
07:38:13 <HackEgo> Does not compile.
07:38:19 <oerjan> HEAD='.globl main; main: pushq %rbp; movq %rsp, %rbp;' TAIL='movl $0, %eax; leave; ret;'
07:38:20 <mroman_> `! c printf();
07:38:21 <HackEgo> Does not compile.
07:38:24 <mroman_> what
07:38:27 <mroman_> `! c printf("a");
07:38:27 <HackEgo> a
07:38:33 <mroman_> `! c printf(lib64a());
07:38:34 <HackEgo> Does not compile.
07:38:39 <mroman_> `! c printf(printf);
07:38:40 <HackEgo> ​%
07:38:48 <oerjan> the `! c is a little flaky
07:39:02 <mroman_> oh wait. it includes headers?
07:39:07 <oerjan> i can't quite recall if it worked any better on EgoBot.
07:39:10 <mroman_> then printf(); doesn't work
07:39:31 <oerjan> mroman_: it tries first with headers, then if that doesn't compile, without (but then you need a whole main)
07:39:45 <oerjan> also, i couldn't get a printf in main to work
07:39:51 <oerjan> um
07:40:06 <oerjan> HEAD='.globl main; main: pushq %rbp; movq %rsp, %rbp;' TAIL='movl $0, %eax; leave; ret;' is what it wraps asm in
07:40:26 <oerjan> although that too is tried without if it fails.
07:41:59 <oerjan> `! asm mov %eax, %ebp;
07:42:00 <HackEgo> ​./interps/gcccomp/gcccomp: line 52: 307 Segmentation fault /tmp/compiled.$$
07:43:10 <oerjan> well that compiled :P
07:43:32 <oerjan> mroman_: it seems to like a trailing ;
07:44:50 <oerjan> `! asm .globl main; main: pushq %rbp; movq %rsp, %rbp; mov %eax, %ebp; movl $0, %eax; leave; ret;
07:44:51 <HackEgo> Does not compile.
07:44:56 <oerjan> hm
07:45:16 <oerjan> i just wrapped it inside the headers it _should_ use anyhow...
07:46:56 <fizzie> It ought to put those error messages somewhere, and dump them out when the result is "does not compile".
07:47:55 <oerjan> i think Gregor didn't want EgoBot to be that verbose.
07:47:56 <fizzie> Maybe 2> /dev/null to 2> /tmp/compile-errors.$$ and then (echo -n 'Does not compile: '; cat /tmp/compile-errors.$$) in the error message.
07:48:47 <oerjan> fizzie: well the problem here is that since it tries two different ways of compiling, at least one of them _will_ be meaningless
07:49:07 <oerjan> and so if it fails altogether you have two sets of error messages
07:49:15 <fizzie> >>, then. :p
07:49:24 <oerjan> although right now i'm wondering why the whole-program version seems to fail.
07:52:50 <fizzie> `run echo '.globl main; main: pushq %rbp; movq %rsp, %rbp; mov %eax, %ebp; movl $0, %eax; leave; ret;' | gcc -x assembler - -o /tmp/dummy
07:52:51 <HackEgo> No output.
07:52:58 <fizzie> That should work out right.
07:53:08 <fizzie> The wrapped version of that should fail, of course.
07:53:25 <oerjan> so i think there's something generally failing with the attempt to get the non-wrapping working
07:54:36 <oerjan> `run sed -i '47iecho "$GCC" -x "$LANG" "$2" $FLAGS -o /tmp/compiled.$$ 2> /dev/null' interps/gcccomp/gcccomp
07:54:37 <HackEgo> No output.
07:55:01 -!- digitalc1ld has changed nick to digitalcold.
07:55:03 <oerjan> um
07:55:06 <oerjan> `revert
07:55:07 <HackEgo> Done.
07:55:19 <oerjan> `run sed -i '47iecho "$GCC" -x "$LANG" "$2" $FLAGS -o /tmp/compiled.$$' interps/gcccomp/gcccomp
07:55:20 <HackEgo> No output.
07:55:36 <shachaf> "Does not compile" isn't a useful message for asm
07:55:44 <oerjan> `! asm .globl main; main: pushq %rbp; movq %rsp, %rbp; mov %eax, %ebp; movl $0, %eax; leave; ret;
07:55:45 <HackEgo> gcc -x assembler /tmp/input.290 -o /tmp/compiled.299 \ Does not compile.
07:56:36 <oerjan> oh wait
07:57:22 <fizzie> How about just temporarily s|2> /dev/null||.
07:57:29 <oerjan> hm
07:57:48 <oerjan> `run sed -i '47d' interps/gcccomp/gcccomp
07:57:50 <HackEgo> No output.
07:58:43 <oerjan> `run sed -i 's|2> /dev/null||' interps/gcccomp/gcccomp
07:58:45 <HackEgo> No output.
07:59:01 <fizzie> The whole-program version has the wrong extension, but with -x $LANG that shouldn't matter.
07:59:06 <oerjan> `! asm .globl main; main: pushq %rbp; movq %rsp, %rbp; mov %eax, %ebp; movl $0, %eax; leave; ret;
07:59:07 <HackEgo> ​/tmp/source.299.s: Assembler messages: \ /tmp/source.299.s:2: Error: symbol `main' is already defined \ /tmp/input.290: Assembler messages: \ /tmp/input.290: Warning: partial line at end of file ignored \ /usr/lib/gcc/x86_64-linux-gnu/4.7/../../../x86_64-linux-gnu/crt1.o: In function `_start': \ (.text+0x20): undefined reference to `main' \ coll
07:59:28 <fizzie> Ha.
07:59:32 <fizzie> "partial line at end of file ignored"
07:59:55 <fizzie> Perhaps it needs a forced newline at the end of the $2 file.
08:00:08 <oerjan> `! c int main () { printf("hm"); }
08:00:09 <HackEgo> No output.
08:00:20 <oerjan> ... that didn't work either
08:00:35 <oerjan> `! c int main () { printf("hm"); }; printf("well");
08:00:36 <HackEgo> well
08:00:38 <oerjan> ic...
08:00:43 <oerjan> i suspected that
08:00:51 <fizzie> Right, it compiles just fine as the wrapped version.
08:01:06 <fizzie> `! c int main () { printf("hm"); }; main();
08:01:07 <HackEgo> hm
08:01:11 <fizzie> So silly.
08:01:15 <oerjan> :P
08:01:27 <fizzie> Thanks, nested functions.
08:01:40 <fizzie> `run thanks 'nested functions' # this still here?
08:01:40 <HackEgo> Thanks, nested functions. Thested functions.
08:02:14 <oerjan> oh hm right maybe EgoBot always had an EOL at the end of things
08:02:32 <oerjan> in which case maybe this should be fixed in interp...
08:02:57 <fizzie> Just add \n in the printf, perhaps.
08:03:01 <fizzie> (The one in get_arg.)
08:03:19 <oerjan> oh
08:03:39 <oerjan> i didn't mean _that_ interp, but bin/interp
08:04:39 <oerjan> ok but if only asm has this problem so far...
08:05:06 <fizzie> Also explains why the trailing ; was needed for the wrapped version.
08:05:29 <oerjan> `revert
08:05:30 <HackEgo> Done.
08:06:16 <oerjan> fizzie: um how so?
08:06:48 <fizzie> oerjan: If there's no newline in the $2 file, it will append the $TAIL directly.
08:07:04 <oerjan> oh
08:07:12 <fizzie> oerjan: So your movl %eax, %ebp with no terminating ; becomes movl %eax, %ebpmovl $0, %eax; leave; ret;
08:08:49 -!- olsner has quit (Quit: ZNC - http://znc.in).
08:09:43 <oerjan> `run sed -i '3s/1/1\\n/' bin/interp
08:09:44 <HackEgo> No output.
08:10:07 <oerjan> hm wait that won't work
08:10:13 <oerjan> `revert
08:10:14 <HackEgo> Done.
08:11:23 <fizzie> The difficulty of getting a newline in $ARG was why I suggested patching the printf in lib/interp.
08:12:02 <oerjan> oh right even a printf won't work
08:12:50 <oerjan> it's just that if there are other interpreters than those going via lib/interp that depend on this...
08:13:12 <oerjan> hm wait maybe they all do
08:13:26 <fizzie> If there was always a newline in EgoBot, they shouldn't mind. But who knows.
08:14:07 <fizzie> Oh, you mean, some might use the lib/interp facility.
08:14:12 <fizzie> Well, I guess that's always possible.
08:14:16 <oerjan> `ls ibin
08:14:16 <HackEgo> 1l \ 2l \ adjust \ asm \ axo \ bch \ befunge \ befunge98 \ bf \ bf16 \ bf32 \ bf8 \ bf_txtgen \ boolfuck \ c \ cintercal \ clcintercal \ cxx \ dimensifuck \ forth \ glass \ glypho \ haskell \ java \ k \ kipple \ lambda \ lazyk \ linguine \ malbolge \ pbrain \ perl \ qbf \ rail \ rhotor \ sadol \ sceql \ sh \ trigger \ udage01 \ underload \ unlambda
08:14:26 <ais523> bleh, I got pinged again
08:14:26 <oerjan> perl isn't showing up in the repository
08:14:37 <oerjan> ais523: what
08:14:43 <ais523> I have a ping on "INTERCAL"
08:14:47 <oerjan> heh
08:14:50 <ais523> it triggered earlier today in a channel other than #esoteric
08:14:55 <ais523> so it's been quite worthwhile for me
08:15:00 <oerjan> well i checked a few esolangs in there, and they used lib/interp
08:15:17 <oerjan> so maybe it is the place to change
08:15:19 <fizzie> `run echo $(ls ibin | wc -l) vs $(grep interp_file ibin/* | wc -l)
08:15:20 <HackEgo> 43 vs 38
08:15:27 <fizzie> Well, maybe there's some that don't use it.
08:15:53 <oerjan> um
08:16:00 <oerjan> some might use interp_stdin instead
08:16:27 <oerjan> `run echo $(ls ibin | wc -l) vs $(grep interp_ ibin/* | wc -l)
08:16:27 <fizzie> `run for f in ibin/*; do if grep -q interp_ $f; then true; else echo $f; fi; done
08:16:27 <HackEgo> 43 vs 40
08:16:28 <HackEgo> ibin/bf_txtgen \ ibin/k \ ibin/perl
08:16:37 <fizzie> Those don't have any "interp_" in it.
08:16:47 <oerjan> i just added perl as a link to perl-e, so no wonder :P
08:17:16 <fizzie> k is just a static echo '!"#$%^&* 0123456789'
08:17:21 <fizzie> I wonder what that's about.
08:17:32 <oerjan> actually bf_txtgen uses lib/interp too
08:17:40 <fizzie> Yes, it calls get_arg directly.
08:17:43 <ais523> is k actually a language?
08:18:06 <fizzie> Though I don't think we'd really want a newline in the textgen string.
08:18:17 <fizzie> Incidentally, that used in fact to be a problem with EgoBot's bf_txtgen.
08:18:29 <fizzie> It force-fed in a newline; I ran it locally a couple of times to get rid of that.
08:18:37 <fizzie> But if we want to be bug-compatible...
08:18:39 <ais523> oh right, I got stuck on 6.7.7p2, because I can't see how to create a non-block-scope typedef that defines a VLA, without also having a VLA somewhere it's not supposed to be
08:18:46 <oerjan> fizzie: huh :P
08:19:18 <ais523> what scopes are typedefs legal in anyway?
08:21:07 <fizzie> Not in function parameter scope, because 6.7.6.3p2 and typedef is syntactically a storage class specifier.
08:21:18 <fizzie> [11:20:20] <fizzie> ,cc int f(typedef int q);
08:21:18 <fizzie> [11:20:22] <candide> fizzie: error: storage class specified for parameter 'q'
08:22:00 <fizzie> And only labels have function scope.
08:22:07 <fizzie> So I guess in block scope and file scope.
08:22:17 <fizzie> That covers all the four scopes there are.
08:25:21 <oerjan> `run sed -i '12s/s/s\\n/' lib/interp
08:25:22 <HackEgo> No output.
08:26:02 <oerjan> `! asm .globl main; main: pushq %rbp; movq %rsp, %rbp; mov %eax, %ebp; movl $0, %eax; leave; ret;
08:26:03 <HackEgo> ​./interps/gcccomp/gcccomp: line 52: 309 Segmentation fault /tmp/compiled.$$
08:26:08 <oerjan> now that works
08:27:18 <ais523> fizzie: right
08:27:19 <oerjan> i don't quite see how to avoid bf_txtgen doing it too without duplicating code
08:27:30 <ais523> this is a problem, because 6.7.7p2 is thus entirely redundant
08:27:32 <ais523> I'll leave it out
08:28:03 <oerjan> `! asm mov %eax, %ebp
08:28:04 <HackEgo> ​./interps/gcccomp/gcccomp: line 52: 307 Segmentation fault /tmp/compiled.$$
08:29:04 <shachaf> `! asm .globl main; main: pushq $0x00434241; movq %rsp,%rdi; call puts; popq %rdi; ret;
08:29:05 <HackEgo> ABC
08:30:54 <ais523> shachaf: are you omitting the frame pointer there?
08:31:35 <shachaf> You mean the whole push %rbp; mov %rsp,%rbp; business?
08:31:48 <fizzie> oerjan: Next, you can figure out why this doesn't work:
08:31:51 <fizzie> `! asm movq $msg, %rdi; xor %eax, %eax; call printf; jmp skip; msg: .asciz "hello wurld\n"; skip:
08:31:52 <HackEgo> Does not compile.
08:31:54 <fizzie> `run printf "%s\n%s\n%s\n" '.globl main; main: pushq %rbp; movq %rsp, %rbp;' 'movq $msg, %rdi; xor %eax, %eax; call printf; jmp skip; msg: .asciz "hello wurld\n"; skip:' 'movl $0, %eax; leave; ret;' | gcc -x assembler - -o /tmp/x && /tmp/x
08:31:55 <HackEgo> hello wurld
08:32:09 <fizzie> Those are exactly the HEAD and TAIL from gcccomp.
08:32:27 <shachaf> fizzie: Wait, is '.globl main; main:' included?
08:32:37 -!- Patashu has joined.
08:32:38 <oerjan> `run rm ibin/perl; cp ibin/c ibin/perl; sed -i 's/ c/ perl/' ibin/perl
08:32:39 <fizzie> shachaf: If it compiles with that; if not, then it's not.
08:32:39 <HackEgo> No output.
08:32:46 <oerjan> `! perl print "hi"
08:32:47 <HackEgo> Does not compile.
08:32:50 <oerjan> eek
08:32:59 <fizzie> shachaf: In other words, it's tried first with those wrappers, and then again "literally" if the wrapped version didn't compile.
08:33:11 <oerjan> oh wait duh
08:33:17 <fizzie> shachaf: I expect in your case the first attempt failed due to multiple definitions of main, and then the second attempt worked.
08:33:33 <shachaf> That explains the bizarre behavior I've been seeing.
08:33:35 <fizzie> `! asm pushq $0x00434241; movq %rsp,%rdi; call puts; popq %rdi
08:33:36 <HackEgo> ABC
08:33:36 <oerjan> `run sed -i 's/".*/perl/' ibin/perl
08:33:38 <HackEgo> No output.
08:33:40 <oerjan> `! perl print "hi"
08:33:41 <HackEgo> hi
08:33:51 <oerjan> there you go, no perl also goes via the same system
08:33:54 <oerjan> *now
08:34:03 <fizzie> oerjan: But why doesn't my asm code work. :/
08:34:22 <oerjan> the what
08:34:33 <fizzie> Should I repeat it?
08:34:42 <fizzie> `! asm movq $msg, %rdi; xor %eax, %eax; call printf; jmp skip; msg: .asciz "hello wurld\n"; skip:
08:34:42 <HackEgo> Does not compile.
08:34:43 <oerjan> it printed ABC, is that not what it should?
08:34:49 <fizzie> `run printf "%s\n%s\n%s\n" '.globl main; main: pushq %rbp; movq %rsp, %rbp;' 'movq $msg, %rdi; xor %eax, %eax; call printf; jmp skip; msg: .asciz "hello wurld\n"; skip:' 'movl $0, %eax; leave; ret;' | gcc -x assembler - -o /tmp/x && /tmp/x
08:34:50 <HackEgo> hello wurld
08:34:56 <fizzie> That wasn't my code, that was shachaf's.
08:35:04 <oerjan> oh
08:35:38 <shachaf> `! asm movq $msg, %rdi; xor %eax, %eax; call printf; jmp skip; msg: .asciz "hello wurld\\n"; skip:
08:35:39 <HackEgo> hello wurld
08:35:41 <shachaf> hth
08:35:54 <mroman_> `cat ibin/perl
08:35:55 <HackEgo> ​#!/bin/sh \ . lib/interp \ interp_file perl
08:36:01 <fizzie> It's not supposed to expand \n, is it?
08:36:11 <fizzie> Well, maybe it is. Who knows.
08:36:26 <shachaf> A better error message would be helpful.
08:36:29 <fizzie> Does make it easier for C preprocessor, like it is with `runc.
08:36:48 <mroman_> why not xor rax, rax?
08:37:01 <fizzie> Because xor eax, eax is shorter by one byte and does the same thing.
08:37:02 <shachaf> Those are the same, aren't they?
08:37:14 <mroman_> xor eax, eax clears the higher bits too?
08:37:17 <fizzie> mroman_: Yes.
08:37:19 <shachaf> Yes.
08:37:19 <mroman_> wtf
08:37:27 <mroman_> Seriously?
08:37:29 <fizzie> Yes.
08:37:33 <mroman_> That sounds broken
08:37:38 <fizzie> And the assemblers I've used add the (unnecessary) REX prefix if you write "xor rax, rax".
08:37:41 <shachaf> I'll stop answering because fizzie is faster.
08:37:55 <mroman_> xor al, al shouldn't clear the whole eax?
08:38:15 <mroman_> then xor eax, eax shouldn't clear the whole rax too
08:38:16 <shachaf> Yes, but that behavior didn't get extended to 64 bits.
08:38:18 <fizzie> "32-bit operands generate a 32-bit result, zero-extended to a 64-bit result in the
08:38:21 <shachaf> Such is x86.
08:38:21 <fizzie> destination general-purpose register.
08:38:37 <fizzie> "8-bit and 16-bit operands generate an 8-bit or 16-bit result. The upper 56 bits or
08:38:40 <fizzie> 48 bits (respectively) of the destination general-purpose register are not
08:38:42 <fizzie> modified by the operation.
08:38:52 <mroman_> interesting.
08:39:09 <mroman_> there's no eal eah then?
08:39:17 <fizzie> No.
08:39:38 <fizzie> And there's no ah, bh, ch, dh if you are using a REX prefix, those access the low byte of edi, esi, ebp and esp.
08:39:46 <shachaf> There isn't even ah etc. for -- yes.
08:39:48 <fizzie> You can't do "mov r8b, ah" at all.
08:40:08 <mroman_> what's r8b?
08:40:13 <fizzie> Low byte of r8.
08:40:32 <fizzie> Also known as r8l.
08:40:45 <fizzie> (Intel used r8l .. r15l, AMD used r8b .. r15b.)
08:40:53 <shachaf> If you use that register too much you might get r8-limited.
08:40:53 <mroman_> hm
08:41:06 <mroman_> can you add al, ah on 8086?
08:41:13 <mroman_> ah nvm
08:41:15 <mroman_> sure you can
08:41:21 <fizzie> Yes, and on x86-64 too.
08:41:24 <mroman_> but it won't carry over
08:42:01 <mroman_> I haven't read much about x64
08:42:12 <oerjan> `! unlambda ```.h.\n.ii
08:42:12 <HackEgo> No output.
08:42:14 <mroman_> besides rax, rbp etc. you have r1..r8?
08:42:20 <fizzie> mroman_: r8 .. r15.
08:42:24 <oerjan> `! unlambda ```.h.n.ii
08:42:25 <HackEgo> hni
08:42:38 <oerjan> ok the expansion isn't happening for all interps
08:42:40 <fizzie> mroman_: And r0 .. r7 are aliases for rax, rbx, rcx, rdx, rsi, rdi, rbp, rsp if you want to be consistent.
08:43:14 <mroman_> is there rip?
08:43:14 <fizzie> (Probably not exactly in that order.)
08:43:18 <fizzie> Yes.
08:43:23 <fizzie> You can even finally use it for addressing.
08:43:29 <fizzie> lea rax, [rip+42] and so.
08:43:46 <oerjan> `run ibin/unlambda "```.h.\n.ii"
08:43:47 <HackEgo> bash: -c: line 0: unexpected EOF while looking for matching ``' \ bash: -c: line 1: syntax error: unexpected end of file
08:43:50 <fizzie> No more "call next; next: pop rax" business.
08:44:00 <mroman_> so you can load data relative to the ip without using another register
08:44:08 <fizzie> That, too.
08:44:08 <oerjan> `run ibin/unlambda '```.h.'"\n.ii"
08:44:09 <HackEgo> ​./interps/unlambda/unlambda.bin: file /tmp/input.290: parse error
08:44:25 <oerjan> `run ibin/unlambda '```.h.'"n.ii"
08:44:26 <HackEgo> hni
08:44:41 <oerjan> `run echo '```.h.'"\n.ii"
08:44:42 <HackEgo> ​```.h.\n.ii
08:44:48 <shachaf> I was wondering why I thought it was odd that that call was forward rather than backward.
08:44:56 <shachaf> But now I remember that you only do that to avoid 0 bytes.
08:45:00 <mroman_> although storing data in the instruction stream is probably not very good
08:45:27 <fizzie> `! asm leaq msg(%rip), %rdi; call puts; leave; ret; msg: .asciz "foo"
08:45:28 <HackEgo> foo
08:45:38 <oerjan> `! c #include <stdio.h>\nint main() { printf("hm"); }
08:45:39 <HackEgo> No output.
08:45:42 <oerjan> darn
08:45:50 <oerjan> `! c #include <stdio.h>\nint main() { printf("hm"); }; main ()
08:45:50 <HackEgo> No output.
08:46:06 <fizzie> It's reasonable enough to understand "msg(%rip)" as "the right displacement to reach msg from rip", not "literal value of symbol msg as an offset from rip".
08:46:29 <oerjan> why isn't it working for the one that could actually _use_ it :(
08:46:45 <mroman_> puts uses rdi?
08:46:48 <shachaf> oerjan: #include inside main()?
08:47:02 <fizzie> mroman_: x86-64 sysv calling convention puts arguments mostly in registers, starting from rdi.
08:47:14 <fizzie> The detailed rules are pretty complex, and involve classes.
08:47:32 <fizzie> (The Windows x64 calling convention is a lot simpler. Or at least a little bit simpler.)
08:48:35 <fizzie> SysV version would pass all the parameters of void f(int, int, int, int, int, int, float, float, float, float, float, float, float, float) in registers.
08:48:42 <oerjan> shachaf: i thought the #include should prevent it from compiling inside main. oh hm wait CPP doesn't work like that.
08:48:59 <fizzie> Windows x64 runs out of registers after void f(int, float, int, float), since it only uses four (IIRC), and leaves gaps.
08:49:06 <oerjan> oh well
08:49:14 <oerjan> `! underload (te\nst)S
08:49:14 <HackEgo> Error: Unmatched )
08:49:15 <shachaf> Wait, now I'm not sure what you're trying to do.
08:49:21 <oerjan> oh...
08:49:27 <oerjan> `! underload (test)S
08:49:28 <HackEgo> testAttempt to execute unknown command 10
08:49:37 <oerjan> ...sheesh
08:49:49 <oerjan> ok that's one that cannot have a final newline.
08:50:40 <fizzie> void f(int a, float b, int c, float d) on Windows x64 would put a to rcx, b to xmm1, c to r8 and d to xmm3. The SysV abi packs in order of rdi, rsi, rdx, rcx, r8, r9 and xmm0 .. xmm7, and leaves no gaps.
08:52:38 <fizzie> `run echo 'double f(double a, double b) { return a + b; }' | gcc -mfpmath=387 -x c - -o - -S -O2 | paste
08:52:40 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/file/tip/paste/paste.2318
08:53:11 <fizzie> Look at all that wrangling if you ask for x87 math but with ABI-mandated SSE registers for passing floats.
08:54:27 <mroman_> `run echo 'double f(double a, double b) { return a + b; }' | gcc -x c - -o - -S -O3 | paste
08:54:29 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/file/tip/paste/paste.8444
08:54:36 <fizzie> `run du -hs paste
08:54:37 <HackEgo> 69Mpaste
08:54:43 <fizzie> So much stuff.
08:54:57 <oerjan> hm i think i'll do something else instead.
08:55:34 <ais523> oh wow, does this rule seriously only apply to # followed by formfeed and # followed by vertical tab?
08:55:36 <ais523> I think it does
08:55:39 <mroman_> `run echo 'double f(double a, int c, double b) { return c*(a + b)/c; }' | gcc -x c - -o - -S -O3 | paste
08:55:41 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/file/tip/paste/paste.307
08:55:44 <ais523> a new "rule nobody will ever hit by mistake" discovery
08:55:52 <oerjan> `undo 4924
08:55:53 <HackEgo> can't find file to patch at input line 4 \ Perhaps you should have used the -p or --strip option? \ The text leading up to this was: \ -------------------------- \ |diff -r c9619115046f -r d6d2d7192923 lib/interp \ |--- a/lib/interpMon Sep 29 08:10:12 2014 +0000 \ |+++ b/lib/interpMon Sep 29 08:25:19 2014 +0000 \ -------------------------- \ File
08:55:59 <fizzie> Heh.
08:56:07 <oerjan> why the fuck isn't `undo working :(
08:56:16 <mroman_> I guess it can't optimise c*x/c away
08:56:19 <mroman_> do to rounding or stuff
08:56:42 <ais523> /dev/stdin:1:2: warning: form feed in preprocessing directive [enabled by default]
08:56:56 <ais523> how do you type a vertical tab anyway?
08:58:06 <oerjan> `run sed '12s/\\n//' lib/interp
08:58:06 <HackEgo> ​#!/bin/sh \ \ export I_CMD="$0" \ export I_ARG="$1" \ export ARG_FILE="/tmp/input.$$" \ \ get_arg() { \ #if expr "$I_ARG" : "http://" > /dev/null \ #then \ # wget $WGET_OPTIONS "$I_ARG" -O "$ARG_FILE" \ #else \ printf '%s' "$I_ARG" > "$ARG_FILE" \ #fi \ } \ \ clean_arg() { \ rm -f "$ARG_FILE" \ } \ \ interp
08:58:22 <oerjan> `run sed -i '12s/\\n//' lib/interp
08:58:24 <HackEgo> No output.
08:59:00 <oerjan> `! perl print "test"
08:59:00 <HackEgo> test
08:59:09 -!- Patashu has quit (Remote host closed the connection).
08:59:20 <ais523> err, anyone know how to write a cast with no identifiers (not even keywords)?
08:59:24 <ais523> or is this another unbreakable rule?
08:59:38 <ais523> oh, I can just use a float constant
08:59:48 <oerjan> `run echo test; echo; echo test
08:59:49 <HackEgo> test \ \ test
09:00:17 <fizzie> ais523: This for the "breaks every rule" program you mentioned?
09:00:18 -!- Patashu has joined.
09:00:43 <oerjan> `run sed -i '3iecho >>"$2"' interps/gcccomp/gcccomp
09:00:44 <HackEgo> No output.
09:01:04 <mroman_> @oeis 1 2 3 4
09:01:19 <ais523> fizzie: yes
09:01:24 <oerjan> `! c printf("test");
09:01:24 <mroman_> @oeis 9,249,17,2,157,116
09:01:25 <HackEgo> test
09:01:26 <ais523> /dev/stdin:1:14: fatal error: //: No such file or directory
09:01:27 -!- AndoDaan has quit (Ping timeout: 245 seconds).
09:01:27 <ais523> compilation terminated.
09:01:29 <ais523> The bug is not reproducible, so it is likely a hardware or OS problem.
09:01:30 <mroman_> hu
09:02:08 <fizzie> oeis.org seems to have trouble searching also.
09:02:12 <ais523> I guess I'm going to have to ban this "#include that doesn't find a file" constraint
09:02:18 <oerjan> `! asm pushq $0x00434241; movq %rsp,%rdi; call puts; popq %rdi
09:02:19 <HackEgo> ABC
09:02:19 <ais523> because it halts the compilation
09:02:24 -!- Sorella has joined.
09:02:27 <oerjan> `! underload (test)S
09:02:27 <HackEgo> test
09:02:48 <oerjan> there, now it doesn't affect anything but the gcccomp interpreters
09:02:57 <ais523> what language is that underload written in?
09:03:04 <lambdabot> Plugin `oeis' failed with: <<timeout>>
09:03:13 -!- Sorella has quit (Changing host).
09:03:13 -!- Sorella has joined.
09:03:27 <fizzie> ais523: C.
09:03:38 <ais523> I remember we used to have all our Underload interps being in esolangs
09:03:45 <ais523> EgoBot's was BF, Fungot's was Befunge
09:03:54 <fizzie> fungot's still is.
09:03:57 <fizzie> ...
09:04:05 <fizzie> Oh, I've probably hit the limit.
09:04:40 <fizzie> ^show
09:04:40 <fungot> echo reverb rev rot13 rev2 fib wc ul cho choo pow2 source help hw srmlebac uenlsbcmra scramble unscramble asc ord prefixes tmp test celebrate wiki chr ha rainbow rainbow2 welcome me tell eval elikoski list ping def a thanks tmp2 lucknumber bf OnePlusPlease OneMinusPlease WhatIsAfterThis WhatIsAfterThis4 meow unmeow (+)*32 (+)7 "7+" +7 8ball eee 7+ mhmm: QuestionMark
09:04:47 <ais523> what limit?
09:04:54 <fizzie> The "only replies four times" one.
09:05:05 <fizzie> There's also still the bf ul in fungot, you just can't access it because it's shadowed by the built-in command.
09:05:18 <ais523> fungot: reset the limit for fizzie
09:05:18 <fungot> ais523: no no i'm
09:05:29 <fizzie> Which is probably for the best, because the time limits of ^bf meant it couldn't quite execute more than about (foo)S.
09:05:44 <fizzie> fungot: You're what?
09:05:45 <fungot> fizzie: and there was too much war coverage on like c._n._n. ' cause it's hard to know
09:06:08 <fizzie> fungot: That's not how you write out abbreviations.
09:06:08 <fungot> fizzie: oh really what type of game you couldn't play jeopardy and
09:06:36 <fizzie> Sounds vaguely insulting.
09:08:18 <ais523> int main(void) { int __VA_ARGS__; }
09:08:25 <ais523> yet another rule that's unlikely to be triggered by mistake
09:08:44 <shachaf> What are you looking for?
09:08:53 <mroman_> `! c int main(void ) { return __VA_ARGS__; }
09:08:54 <HackEgo> Does not compile.
09:10:03 <ais523> shachaf: an error
09:10:24 <ais523> or at least a warning
09:14:37 -!- Sorella has quit (Ping timeout: 260 seconds).
09:20:36 <ais523> OK, I've finished looking through the mandatory warnings
09:22:02 <ais523> one I couldn't find an example; two cannot happen in a syntactically correct program; one is entirely redundant to another; one I can't figure out what it means; one I couldn't get gcc to error out on but think it may be at fault; and the rest, I reproduced
09:24:07 -!- ais523 has quit (Read error: Connection reset by peer).
09:24:10 -!- callforjudgement has joined.
09:25:42 -!- ais523 has joined.
09:26:28 -!- AndoDaan has joined.
09:28:43 -!- callforjudgement has quit (Ping timeout: 272 seconds).
09:31:23 <mroman_> `! c typedef a int; a a;
09:31:24 <HackEgo> Does not compile.
09:31:30 <mroman_> `! c typedef a int; a main(){}
09:31:31 <HackEgo> Does not compile.
09:31:36 <mroman_> `! c typedef int a; a main(){}
09:31:37 <HackEgo> No output.
09:31:45 <mroman_> `! c typedef int a; a main(a a){a a;}
09:31:45 <HackEgo> Does not compile.
09:31:54 <mroman_> `! c typedef int a; a main(a i){a a;}
09:31:55 <HackEgo> No output.
09:32:06 <mroman_> `! c typedef int a; a main(a i){a a;puts((a)a);}
09:32:07 <HackEgo> Does not compile.
09:32:14 <mroman_> `! c typedef int a; a main(a i){a a;puts(a);}
09:32:15 <HackEgo> No output.
09:32:25 <mroman_> `! c typedef int a; a main(a i){a a;puts(a);puts("a");}
09:32:26 <HackEgo> No output.
09:32:28 <mroman_> weidr
09:32:39 <mroman_> `! c typedef int a; a main(a i, char* argv){a a;puts(a);puts("a");}
09:32:40 <HackEgo> No output.
09:32:47 <mroman_> `! c typedef int a; a main(){a a;puts(a);puts("a");}
09:32:48 <HackEgo> No output.
09:33:41 <mroman_> `! c typedef int a; a main(){a a;puts("a");}
09:33:42 <HackEgo> No output.
09:34:05 <mroman_> typedef int a; a main(){a a;puts("a");} should actually write a though
09:34:15 <mroman_> puts(a) might segfault
09:34:39 <mroman_> `! c typedef int a; int main(){a a;puts("a");}
09:34:40 <HackEgo> No output.
09:35:53 <oerjan> `! c typedef int a; int main(){a a;puts("a");}; main ()
09:35:54 <HackEgo> a
09:36:05 <mroman_> How do you do do "git log" in svn?
09:36:17 <ion> mroman: with git-svn
09:36:23 <mroman_> "svn log" doesn't really show all the stuff it should
09:36:25 <oerjan> mroman_: it's all wrapped inside main, which is allowed because gcc allows nested functions etc.
09:36:43 <mroman_> `! c main();
09:36:44 <HackEgo> Does not compile.
09:36:45 <oerjan> hm
09:36:55 <mroman_> `! c main()
09:36:55 <HackEgo> Does not compile.
09:37:11 <mroman_> `! c return 1;
09:37:12 <HackEgo> No output.
09:37:14 <mroman_> `! c return main();
09:37:15 <HackEgo> Does not compile.
09:37:26 <mroman_> `! c return main(0,0);
09:37:27 <HackEgo> ​./interps/gcccomp/gcccomp: line 53: 308 Segmentation fault /tmp/compiled.$$
09:37:38 <mroman_> wait
09:37:43 <mroman_> this is the compiler segfaulting?
09:37:55 <mroman_> `! c return *(NULL);
09:37:55 <HackEgo> Does not compile.
09:38:02 <mroman_> `! c return *(0);
09:38:03 <HackEgo> Does not compile.
09:38:03 <ion> “Segmentation fault /tmp/compiled.$$”
09:38:24 <mroman_> `! c int a; puts(a);
09:38:25 <HackEgo> ​./interps/gcccomp/gcccomp: line 53: 308 Segmentation fault /tmp/compiled.$$
09:38:30 <mroman_> ok. it's the program
09:38:55 <mroman_> `! c return main(0,"");
09:38:56 <HackEgo> ​./interps/gcccomp/gcccomp: line 53: 308 Segmentation fault /tmp/compiled.$$
09:39:00 <ais523> mroman_: recursively calling main from main unguarded will overflow the stack
09:39:02 <ais523> that's a segfault
09:39:12 <ais523> !c puts("a"); return main(0, 0);
09:39:19 <ais523> `! c puts("a"); return main(0, 0);
09:39:20 <HackEgo> a \ a \ a \ a \ a \ a \ a \ a \ a \ a \ a \ a \ a \ a \ a \ a \ a \ a \ a \ a \ a \ a \ a \ a \ a \ a \ a \ a \ a \ a \ a \ a \ a \ a \ a \ a \ a \ a \ a \ a \ a \ a \ a \ a \ a \ a \ a \ a \ a \ a \ a \ a \ a \ a \ a \ a \ a \ a \ a \ a \ a \ a \ a \ a \ a \ a \ a \ a \ a \ a \ a \ a \ a \ a \ a \ a \ a \ a \ a \ a \ a \ a \ a \ a \ a \ a \ a \ a
09:39:32 <mroman_> `! c puts(argv[0]);
09:39:33 <HackEgo> ​/tmp/compiled.299
09:39:45 <mroman_> `! c puts(argv[0]); main(0,"buar");
09:39:45 <HackEgo> ​./interps/gcccomp/gcccomp: line 53: 308 Segmentation fault /tmp/compiled.$$
09:39:55 <mroman_> `! c puts(argv[0]); main(1,&"buar");
09:39:55 <HackEgo> ​./interps/gcccomp/gcccomp: line 53: 308 Segmentation fault /tmp/compiled.$$
09:40:00 <mroman_> hm
09:40:15 <mroman_> `! c printf("%x", &"buar");
09:40:17 <HackEgo> 4005ec
09:40:33 <mroman_> `! c char**p=&"foo";puts(p[0]);
09:40:33 <HackEgo> ​./interps/gcccomp/gcccomp: line 53: 308 Segmentation fault /tmp/compiled.$$
09:40:37 <fizzie> You're just taking the address of the array for &"foo".
09:41:42 <fizzie> `! c puts(argv[0]); main(0, (char*[]){"foo"});
09:41:43 <HackEgo> ​/tmp/compiled.299 \ foo \ foo \ foo \ foo \ foo \ foo \ foo \ foo \ foo \ foo \ foo \ foo \ foo \ foo \ foo \ foo \ foo \ foo \ foo \ foo \ foo \ foo \ foo \ foo \ foo \ foo \ foo \ foo \ foo \ foo \ foo \ foo \ foo \ foo \ foo \ foo \ foo \ foo \ foo \ foo \ foo \ foo \ foo \ foo \ foo \ foo \ foo \ foo \ foo \ foo \ foo \ foo \ foo \ foo \ foo
09:42:15 <fizzie> A char ** (like p, or argv) needs an actual char * to point at.
09:43:19 <mroman_> `! c char*p="foo";char**q=&p;puts(q[0]);
09:43:20 <HackEgo> foo
09:43:41 <fizzie> `! c puts(argv[0]); main(argc+1, (char*[]){ (char[]){ 'f', 'o', 'o', '0'+argc } });
09:43:42 <HackEgo> ​/tmp/compiled.299 \ foo1 \ foo2 \ foo3 \ foo4 \ foo5 \ foo6 \ foo7 \ foo8 \ foo9 \ foo: \ foo; \ foo< \ foo= \ foo> \ foo? \ foo@ \ fooA \ fooB \ fooC \ fooD \ fooE \ fooF \ fooG \ fooH \ fooI \ fooJ \ fooK \ fooL \ fooM \ fooN \ fooO \ fooP \ fooQ \ fooR \ fooS \ fooT \ fooU \ fooV \ fooW \ fooX \ fooY \ fooZ \ foo[ \ foo\ \ foo] \ foo^ \ foo_
09:43:46 <mroman_> `! c char**q=&("foo");puts(q[0]);
09:43:47 <HackEgo> ​./interps/gcccomp/gcccomp: line 53: 308 Segmentation fault /tmp/compiled.$$
09:43:52 <mroman_> wtf
09:44:00 <mroman_> if "foo" is char*
09:44:02 <fizzie> &("foo") is no different from &foo.
09:44:06 <mroman_> then &"foo" should be char**
09:44:07 <fizzie> And "foo" is not a char *.
09:44:11 <fizzie> "foo" is a char[3].
09:44:14 <fizzie> Er, char[4].
09:44:20 <mroman_> `! c char**q=&((char*)"foo");puts(q[0]);
09:44:21 <HackEgo> Does not compile.
09:44:22 <fizzie> &foo is a char (*)[4].
09:44:25 <mroman_> `! c char**q=&((char*)"foo");
09:44:26 <HackEgo> Does not compile.
09:44:48 <fizzie> You need an object of type 'char *' for char ** to point at. A string literal is not a pointer to char.
09:45:04 <fizzie> `! c char **q = &(char *){"foo"}; puts(*q); /* if you insist */
09:45:05 <HackEgo> foo
09:45:06 <mroman_> makes sense
09:45:12 <mroman_> `! int* = &6;
09:45:13 <HackEgo> ​/hackenv/bin/!: 4: exec: ibin/int*: not found
09:45:17 <mroman_> `! c8 int* = &6;
09:45:17 <HackEgo> ​/hackenv/bin/!: 4: exec: ibin/c8: not found
09:45:19 <mroman_> `! c int* = &6;
09:45:20 <HackEgo> Does not compile.
09:45:52 <mroman_> otherwise this would need to be legal too
09:46:04 <fizzie> Not without an identifier.
09:46:28 <mroman_> `! c printf("%x");
09:46:30 <HackEgo> bf883d18
09:46:40 <mroman_> `! c printf("%x%n");
09:46:41 <HackEgo> bfcc7d18
09:47:37 <mroman_> `! c if(printf("%x")<printf("%d"))printf("%s");
09:47:39 <HackEgo> bff29d084195854
09:48:05 <fizzie> There was some talk about %n being removed from the Microsoft C runtime library.
09:48:12 <mroman_> what
09:48:19 <fizzie> http://msdn.microsoft.com/en-us/library/hf4y5e3w.aspx "Because the %n format is inherently insecure, it is disabled by default. If %n is encountered in a format string, the invalid parameter handler is invoked, as described in Parameter Validation. To enable %n support, see _set_printf_count_output."
09:48:22 <mroman_> How will I do format string exploits then
09:48:58 <fizzie> You have to convince your targets to do _set_printf_count_output.
09:49:12 <mroman_> fizzie: do _set_printf_count_output
09:49:18 <fizzie> Done.
09:49:28 <shachaf> whoa, i completely forgot about https://en.wikipedia.org/wiki/Cuisenaire_rods
09:49:39 <mroman_> k. Prepare to be hax0red
09:50:27 <mroman_> An IRC client doing printf(msg); would be cool
09:51:25 <fizzie> Someone on ##c had their IRC client print out "zid: command not found" when a person with the nick "zid`" spoke to them. That sounded like a bad idea.
09:51:48 <mroman_> but it had a fizzie command?
09:51:50 <fizzie> There wasn't even a leading ` in the nick.
09:52:32 <fizzie> http://sprunge.us/RIhi so many choices.
09:53:16 <mroman_> !blsq_uptime
09:53:17 <blsqbot> 5d 2h 42m 54s
09:53:27 <mroman_> New record.
09:53:30 <fizzie> `uptime
09:53:30 <HackEgo> ​ 09:53:27 up 0 min, 0 users, load average: 0.00, 0.00, 0.00
09:53:47 <fizzie> The drawbacks of running each command in a separate UML box.
09:53:54 <mroman_> I've also changed the secret passphrase
09:53:57 <mroman_> blsqbot please do quit
09:54:10 <mroman_> doesn't work anymore
09:54:25 <fizzie> blsqbot would you kindly quit
09:54:26 <Lymia> http://postimg.org/image/o2fdfk0cp Spoiler flag is useless. :|
09:54:31 <fizzie> Worth a try, I guess.
09:55:23 <mroman_> You have to nicely ask blsqbot
09:55:57 <mroman_> also I should implement nick recognition
09:56:01 <mroman_> as well as channel recogniton
09:56:07 <mroman_> otherwise people can abuse blsqbot for spam
09:56:38 <blsqbot> Who's spamming here?
09:56:43 <Lymia> blsqbot, pretty please with a cheery on top quit and never show your face again
09:57:01 <blsqbot> Lymia that's not a question.
09:57:34 <mroman_> although blsqbot serves as a neutral part to make neutral complaints about something
09:57:56 <blsqbot> BF Joust sucks.
09:58:45 <blsqbot> {1 4 9 16 25 36 49 64 81 100}
09:58:56 <oerjan> Lymia: you misspelled cherry, that's obviously why
09:59:14 <mroman_> I just copied the IRC bot from haskellwiki
09:59:23 <mroman_> but that bot doesn't have channel recognition
09:59:23 <fizzie> Didn't we have a regular by name of "cheery"?
09:59:46 <oerjan> i don't know, my memory is going...
10:00:27 <HackEgo> [wiki] [[Special:Log/newusers]] create * FerminBazile * New user account
10:00:43 <fizzie> Hm.
10:00:56 <mroman_> lol
10:01:03 <mroman_> the blsqbot terminal is suddenly in blue color
10:01:14 <mroman_> somebody here used escape sequences to make it blue o_O
10:01:57 <oerjan> um HackEgo's wiki announcement ended in blue or maybe cyan
10:02:17 <fizzie> Those are in mIRC colors, though, not in terminal escapes.
10:02:23 <oerjan> hm
10:02:53 <mroman_> can somebody print the escape sequence to turn stuff red?
10:03:03 <Patashu> red text
10:03:37 <mroman_> > putStr "\x1b[30m"
10:03:39 <lambdabot> <IO ()>
10:03:46 <mroman_> > "\x1b[30m"
10:03:47 <lambdabot> "\ESC[30m"
10:03:48 <Patashu> the 'mirc syntax' is an ETX then a 4
10:03:51 <mroman_> hm
10:04:01 <fizzie> [31;1mfoo
10:04:01 <oerjan> `! haskell i don't think this is working...
10:04:02 <HackEgo> ​./interps/ghc/runghc: line 5: /opt/ghc/bin/runhaskell: No such file or directory
10:04:13 <mroman_> fizzie: now it's red
10:04:17 <Patashu> > "\0"
10:04:19 <lambdabot> "\NUL"
10:04:26 <fizzie> That was the regular \x1b[31;1m.
10:04:37 <mroman_> what sort of evil stuff can you do with that o_O
10:04:57 <oerjan> `! c printf("\x1b[31;1mhi\n");
10:04:57 <HackEgo> Does not compile.
10:05:02 <oerjan> bah
10:05:15 <fizzie> I think there are some nasty things that would cause input.
10:05:46 <fizzie> [1J
10:05:54 <fizzie> I wonder if that got filtered out.
10:06:11 <oerjan> `! c printf("\0x1b[31;1mhi\n");
10:06:12 <HackEgo> Does not compile.
10:06:19 <oerjan> `! c printf("\\x1b[31;1mhi\n");
10:06:20 <HackEgo> Does not compile.
10:06:25 <oerjan> `! c printf("\\0x1b[31;1mhi\n");
10:06:26 <HackEgo> Does not compile.
10:06:38 <fizzie> `! c printf("\\0x1b[31;1mhi\\n");
10:06:39 <HackEgo> No output.
10:06:45 <fizzie> That's interesting.
10:06:54 <oerjan> i suppose that's an improvement.
10:06:56 <oerjan> hm
10:07:03 <fizzie> Where did the 0 come from, anyway.
10:07:17 <oerjan> i just tried to find something that worked
10:07:23 <fizzie> `! c printf("\x1b[31;1mhi\\n");
10:07:24 <HackEgo> ​[31;1mhi
10:07:47 <fizzie> Oh, I guess the \\0 was an extra null terminator, of course.
10:08:10 <oerjan> yeah
10:08:12 <fizzie> I'm not sure whether that had "\x1b" in the string literal as an escape or a, well, literal, but maybe it doesn't matter.
10:08:15 <mroman_> `! c printf("\x1b[1J\\n");
10:08:16 <HackEgo> ​[1J
10:08:29 <fizzie> CSI 1 J is just the "clear screen".
10:08:36 <mroman_> it worked
10:08:40 <fizzie> Er, erase from start to cursor, that is.
10:09:05 <oerjan> `! c printf("\\x1b[31;1mhi\\n");
10:09:07 <HackEgo> ​[31;1mhi
10:09:12 <mroman_> `! c printf("\x1b[0;6 8;"DIR";13p\\n");
10:09:13 <HackEgo> Does not compile.
10:09:20 <mroman_> `! c printf("\x1b[0;6 8;\"DIR\";13p\\n");
10:09:23 <HackEgo> ​[0;6 8;"DIR";13p
10:09:59 <fizzie> How dangerous it is depends on your terminal emulator: http://marc.info/?l=bugtraq&m=104612710031920
10:11:02 <mroman_> `run echo -e "\ec+ +\n\e]<Code>;/tmp/rhosts\a"
10:11:03 <HackEgo> ​c+ + \ ]<Code>;/tmp/rhosts
10:11:45 <mroman_> `run echo -e "\e]2;This is the new window title\a"
10:11:45 <HackEgo> ​]2;This is the new window title
10:11:54 <mroman_> :D
10:11:55 <zzo38> A proper IRC client should filter out any escape codes other than changing formatting of text, and then reset the text formatting afterward
10:11:56 <mroman_> this works
10:12:12 -!- Phantom_Hoover has joined.
10:12:20 -!- Phantom_Hoover has quit (Changing host).
10:12:20 -!- Phantom_Hoover has joined.
10:13:26 <mroman_> `run echo -e "\e]2;;touch /tmp/bar;xterm\aPress Enter>\e[8m;"
10:13:27 <HackEgo> ​]2;;touch /tmp/bar;xtermPress Enter>[8m;
10:13:53 <mroman_> hm
10:14:40 <zzo38> I have made up a "Z-machine Reference Card" now (just a few minutes ago). I don't know if you like it or not, or if some thing should be added, or maybe it contains a mistake, etc? http://zzo38computer.org/zmachine/doc/zipquick.dvi
10:15:05 <mroman_> `run echo -e "\e[21t"
10:15:06 <HackEgo> ​[21t
10:15:34 <mroman_> whats [21t?
10:16:02 <Patashu> isn't that a terminal code?
10:16:39 -!- boily has joined.
10:16:58 <mroman_> ah
10:17:01 <fizzie> "Report window title", it's supposed to put the title directly to the input buffer as if you had typed it.
10:17:02 <mroman_> it displays the window title
10:17:28 <fizzie> All those "query"-style escapes are quite strange.
10:17:48 -!- oerjan has quit (Quit: leaving).
10:18:50 <mroman_> It placed the window title
10:19:06 <mroman_> but since blsqbot isn't a terminal where you can press enter to execute something
10:19:13 <mroman_> it doesn't do much harm
10:19:48 <fizzie> It might still be on the shell input buffer when you terminate the bot, assuming it doesn't read its stdin.
10:22:15 <fizzie> `echo -e "\e[?1000h"
10:22:15 <HackEgo> ​-e "\e[?1000h"
10:22:19 <fizzie> `run echo -e "\e[?1000h"
10:22:19 <HackEgo> ​[?1000h
10:22:30 <fizzie> That may have put your terminal in one of the mouse-tracking modes.
10:22:48 <fizzie> Where clicking around will cause it to spew out ugly escape sequences.
10:24:55 <zzo38> If you are using PuTTY, you can disable many terminal features
10:26:36 <zzo38> (I am using PuTTY, although the IRC client filters out most control characters anyways, so it doesn't cause a problem.)
10:29:23 <myname> ah, that's what ncurses is doing, right?
10:44:37 -!- FreeFull has joined.
10:50:03 -!- Jafet has quit (Quit: Quit).
10:50:19 -!- Jafet has joined.
10:50:38 -!- Jafet has quit (Changing host).
10:50:38 -!- Jafet has joined.
11:00:47 <boily> fungot: good morning fungot.
11:00:47 <fungot> boily: ah i know personally that was ah that was really
11:10:45 -!- FreeFull has quit (Ping timeout: 272 seconds).
11:12:03 -!- password2 has joined.
11:13:31 -!- Sorella has joined.
11:14:21 -!- Sorella has quit (Changing host).
11:14:21 -!- Sorella has joined.
11:19:45 <mroman_> fungot: It did.
11:19:45 <fungot> mroman_: but so anyway like that has nothing but like disney movies on it but you
11:19:49 <mroman_> eh
11:19:52 <mroman_> fizzie: It did.
11:21:35 -!- boily has quit (Quit: UNDERHANDED CHICKEN).
11:22:04 <mroman_> although I'm not whether the culprit is screen or something else
11:22:09 <mroman_> *sure
11:23:16 <fizzie> `run echo -e "\e[?1000l" # let's turn it off anyway.
11:23:17 <HackEgo> ​[?1000l
11:23:57 <fizzie> fungot: Are you pirating Disney movies or something there?
11:23:57 <fungot> fizzie: you can't even p- park on the street and it it
11:29:31 -!- FreeFull has joined.
11:36:42 <mroman_> !blsq 1 2qlg10C!#s
11:36:42 <blsqbot> {NaN NaN NaN NaN NaN NaN NaN NaN -0.36651292058166435 0.6931471805599453 2 1}
11:36:48 <mroman_> !blsq 1 2qlg10!C#s
11:36:49 <blsqbot> {1 2 0.6931471805599453 -0.36651292058166435 NaN NaN NaN NaN NaN NaN NaN NaN}
11:36:58 <mroman_> !blsq 1 2qLG10!C#s
11:36:59 <blsqbot> {1 2 Infinity Infinity NaN NaN NaN NaN NaN NaN NaN NaN}
11:37:05 <mroman_> !blsq 2 2qLG10!C#s
11:37:05 <blsqbot> {2 2 1.0 0.0 -Infinity NaN NaN NaN NaN NaN NaN NaN}
11:37:09 <mroman_> !blsq 2 3qLG10!C#s
11:37:09 <blsqbot> {2 3 1.5849625007211563 0.4192204592547559 -1.8876084101671844 NaN NaN NaN NaN N
11:37:18 <mroman_> !blsq 2 30qLG10!C#s
11:37:19 <blsqbot> {2 30 4.906890595608519 0.46767072968457507 -0.4777891787829274 NaN NaN NaN NaN
11:37:24 <mroman_> !blsq 29 30qLG10!C#s
11:37:24 <blsqbot> {29 30 1.010067886335908 0.002945298865150891 -581.7339748797842 NaN NaN NaN NaN
11:37:35 <mroman_> ic
11:37:46 <mroman_> !blsq 30q?s5!C#s
11:37:47 <blsqbot> {30 5.477225575051661 2.340347319320716 1.5298193747370035 1.2368586720951604 1.
11:38:18 <fizzie> NaN'a'NaN.
11:38:18 <mroman_> > 64*64
11:38:20 <lambdabot> 4096
11:38:25 <mroman_> !blsq 4096q?s5!C#s
11:38:26 <blsqbot> {4096 64.0 8.0 2.8284271247461903 1.6817928305074292 1.2968395546510096}
11:38:42 <mroman_> > 8**2**2**2**2**2
11:38:43 <lambdabot> Infinity
11:38:46 <mroman_> > 8**2**2**2**2
11:38:47 <lambdabot> Infinity
11:38:49 <mroman_> > 8**2**2**2
11:38:51 <lambdabot> 2.81474976710656e14
11:39:14 <mroman_> what's the limes of a(n) = sqrt(a(n-1))?
11:39:15 <mroman_> 1?
11:39:23 <mroman_> !blsq 4096q?s10!C#s
11:39:24 <blsqbot> {4096 64.0 8.0 2.8284271247461903 1.6817928305074292 1.2968395546510096 1.138788
11:39:32 <mroman_> !blsq 4096q?s10!C[-
11:39:32 <blsqbot> 96
11:39:39 <mroman_> !blsq 4096q?s10!C#s[-
11:39:40 <blsqbot> {64.0 8.0 2.8284271247461903 1.6817928305074292 1.2968395546510096 1.13878863475
11:39:43 <mroman_> !blsq 4096q?s10!C#s[~
11:39:43 <blsqbot> 1.0081558981184175
11:39:48 <mroman_> !blsq 4096q?s10000!C#s[~
11:39:49 <blsqbot> Ain't nobody got time fo' dat!
11:39:52 <mroman_> !blsq 4096q?s1000!C#s[~
11:39:52 <blsqbot> 1.0
11:39:56 <mroman_> looks like it.
11:40:33 <fizzie> sqrt(a) for a > 1 is a number that's strictly between 1 and a, so...
11:43:08 <mroman_> !blsq 10 5qcr10!C#s[~
11:43:08 <blsqbot> ERROR: Unknown command: (cr)!
11:43:13 <mroman_> !blsq 10 5qnr10!C#s[~
11:43:13 <blsqbot> 1
11:43:16 <mroman_> !blsq 10 5qnr10!C#s
11:43:16 <blsqbot> {10 5 252 1 252 1 252 1 252 1 252 1}
11:43:22 <mroman_> !blsq 10 9qnr10!C#s
11:43:22 <blsqbot> {10 9 10 1 10 1 10 1 10 1 10 1}
11:43:30 <mroman_> !blsq 9 10qnr10!C#s
11:43:30 <blsqbot> {9 10 1 10 1 10 1 10 1 10 1 10}
11:43:31 <fizzie> Alternatively: sqrt(a) = a^(1/2), so a_n = a_0^(1/2^n) which will approach a_0^0 = 1.
11:43:43 <mroman_> !blsq 9 10{jnr}10!C#s
11:43:43 <blsqbot> {9 10 10 1 1 1 1 1 1 1 1 1}
11:43:48 <mroman_> !blsq 10 5{jnr}10!C#s
11:43:48 <blsqbot> {10 5 1 1 1 1 1 1 1 1 1 1}
11:43:59 <mroman_> !blsq 5 10{jnr}10!C#s
11:44:00 <blsqbot> Ain't nobody got time fo' dat!
11:44:04 <mroman_> ok
11:44:06 <mroman_> !blsq 5 10{jnr}2!C#s
11:44:07 <blsqbot> {5 10 252 237517990691968350}
11:44:10 <mroman_> !blsq 5 10{jnr}3!C#s
11:44:10 <blsqbot> Ain't nobody got time fo' dat!
11:44:13 <mroman_> !blsq 5 10{jnr}2!C#s
11:44:14 <blsqbot> {5 10 252 237517990691968350}
11:45:26 <mroman_> a(n) = nCr(a(n-1),a(n-2))
11:46:15 <mroman_> !blsq 5 10{jnr}3!Cit
11:46:15 <blsqbot> 5
11:46:23 <mroman_> !blsq 5 10{jnr}4!Cit
11:46:24 <blsqbot> 5
11:46:26 <mroman_> !blsq 5 10{jnr}4!Cth
11:46:26 <blsqbot> Ain't nobody got time fo' dat!
11:46:30 <mroman_> !blsq 5 10{jnr}3!Cth
11:46:30 <blsqbot> Ain't nobody got time fo' dat!
11:46:34 <mroman_> why not :(
11:47:23 <mroman_> !blsq 1 3{jnr}2!C#s
11:47:23 <blsqbot> {1 3 3 1}
11:47:27 <mroman_> !blsq 1 3{jnr}3!C#s
11:47:28 <blsqbot> {1 3 3 1 1}
11:47:31 <mroman_> !blsq 2 3{jnr}3!C#s
11:47:31 <blsqbot> {2 3 3 1 1}
11:47:40 <mroman_> !blsq 5 11{jnr}3!C#s
11:47:41 <blsqbot> Ain't nobody got time fo' dat!
11:47:48 <mroman_> Is nr that slow?
11:48:38 <mroman_> ncr n k = product [k+1..n] `div` product [1..n-k]
11:49:07 <mroman_> !blsq 252 10nr
11:49:08 <blsqbot> 237517990691968350
11:49:30 <mroman_> !blsq 237517990691968350 252nr
11:49:30 <blsqbot> Ain't nobody got time fo' dat!
11:50:02 <mroman_> > product [5+1..10] `div` product [1..5]
11:50:04 <lambdabot> 252
11:50:30 <mroman_> @let ncr n k = product [k+1..n] `div` product [1..n-k]
11:50:33 <lambdabot> Defined.
11:50:40 <mroman_> > ncr 10 5
11:50:41 <lambdabot> 252
11:50:53 <mroman_> > ncr 237517990691968350 252
11:50:57 <lambdabot> mueval-core: Time limit exceeded
11:51:27 <mroman_> Not sure if you can do ncr more efficiently
11:51:32 <mroman_> it is a pretty huge number.
11:54:50 <mroman_> elliott_: I've changed my password scheme to using nCr(secret, siteSpecific)
11:56:05 <mroman_> It can easily produce passwords thousands of digits long
11:56:23 <mroman_> > ncr 273 252
11:56:24 <lambdabot> 12832413319490100185605420936128
11:56:40 <mroman_> > 10^32
11:56:42 <lambdabot> 100000000000000000000000000000000
11:57:01 <mroman_> > (10^32) / (96^20)
11:57:03 <lambdabot> 2.2624309808050328e-8
11:57:06 <fizzie> You can replace k with (n-k) depending on whether it's closer to 0 or n in order to make those products smaller.
11:57:50 -!- AndoDaan_ has joined.
11:58:02 <mroman_> > 273/2
11:58:03 <lambdabot> 136.5
11:58:10 <mroman_> > ncr 274 137
11:58:12 <lambdabot> 1461797917332285816682186571523274129885025550897564128525125778686553583310...
11:58:21 <mroman_> > (ncr 274 137) - (ncr 274 138)
11:58:22 <lambdabot> 1059273853139337548320425051828459514409438804998234875742844767164169263268...
11:58:25 -!- AndoDaan has quit (Ping timeout: 260 seconds).
11:58:29 <mroman_> hm
11:58:37 <mroman_> fizzie: There's a k so that ncr n k is max?
11:58:42 <mroman_> I forgot where it is
11:58:51 <fizzie> It's right there in the middle, I'm pretty sure.
11:58:57 <mroman_> I thought so as well
11:59:05 <mroman_> since there's a symmetry law
11:59:44 <mroman_> it is in the middle.
11:59:50 -!- AndoDaan_ has changed nick to AndoDaan.
12:00:53 <mroman_> !blsq 8 1 7r@nr
12:00:54 <blsqbot> {8 28 56 70 56 28 8}
12:01:07 <mroman_> !blsq 8 1 7r@nr[>
12:01:08 <blsqbot> ERROR: Unknown command: ([>)!
12:01:10 <mroman_> !blsq 8 1 7r@nr>]
12:01:10 <blsqbot> 70
12:01:15 <mroman_> !blsq 8 1 7r@nrJ>]fi
12:01:16 <blsqbot> ERROR: Burlesque: (fi) Invalid arguments!
12:01:18 <mroman_> !blsq 8 1 7r@nrJ>]
12:01:19 <blsqbot> 70
12:01:23 <mroman_> !blsq 8 1 7r@nr>]
12:01:23 <blsqbot> 70
12:01:27 <mroman_> !blsq 8 1 7r@nrJ>]jfi
12:01:27 <blsqbot> ERROR: Burlesque: (fi) Invalid arguments!
12:01:29 <mroman_> really
12:01:30 <mroman_> wth
12:01:39 <mroman_> !blsq 8 1 7r@nrJ>]Fi
12:01:39 <blsqbot> 3
12:01:41 <mroman_> ah
12:01:47 <mroman_> upper-case f
12:02:26 <mroman_> AndoDaan: Some commands btw. automatically map/zip lists
12:02:56 <fizzie> If you write it in the factorial form -- n! / (k! (n-k)!) -- it's quite easy to see that it's (around, if odd n) n/2, because getting away from the midpoint replaces smaller numbers with bigger ones in the product in the denominator.
12:03:13 <mroman_> nr and b2 are one of them
12:03:16 <AndoDaan> what is zipping exactly?
12:03:23 <mroman_> Do you know haskell?
12:03:28 <mroman_> It's the same as zip in Haskell
12:03:34 <mroman_> > zip [1,2,3] [4,5,6]
12:03:36 <lambdabot> [(1,4),(2,5),(3,6)]
12:03:36 <AndoDaan> A little
12:03:41 <mroman_> !blsq {1 2 3}{4 5 6}z[
12:03:42 <blsqbot> {{1 4} {2 5} {3 6}}
12:03:52 <mroman_> > zipWith (+) [1,2,3] [4,5,6]
12:03:53 <lambdabot> [5,7,9]
12:04:09 <mroman_> > zipWith (+) [x,y] [z,z]
12:04:10 <lambdabot> [x + z,y + z]
12:04:27 <mroman_> !blsq {1 2 3}{4 5 6}{.+}Z]
12:04:27 <blsqbot> {5 7 9}
12:04:47 <mroman_> You take a value from each of the lists and apply a function to it
12:05:10 <mroman_> What Haskell can't do is
12:05:20 <mroman_> > zipWith (+) [1] [1,2,3,4]
12:05:21 <lambdabot> [2]
12:05:37 <mroman_> !blsq 1{1 2 3 4}?+
12:05:38 <blsqbot> {2 3 4 5}
12:05:50 <fizzie> > (1+) <$> [1,2,3,4]
12:05:52 <lambdabot> [2,3,4,5]
12:06:14 <mroman_> !blsq {1}{1 2 3 4}{.+}Z]
12:06:14 <blsqbot> {2}
12:06:49 <mroman_> ?+ automatically box-cycles and zips
12:06:49 <lambdabot> Maybe you meant: v @ ? .
12:06:56 <mroman_> !blsq 1bc
12:06:56 <blsqbot> Ain't nobody got time fo' dat!
12:07:04 <mroman_> !blsq 1bc{1 2 3 4}?+
12:07:05 <blsqbot> {2 3 4 5}
12:07:13 <myname> what's the difference between <$> and map?
12:07:31 <fizzie> @src <$>
12:07:31 <lambdabot> f <$> a = fmap f a
12:07:46 <mroman_> AndoDaan: Certain commands will check whether you supplied a list/block or not
12:07:49 <myname> so, there is none?
12:07:49 <AndoDaan> !blsq {72 101 108 108 111}{L[}Z[
12:07:50 <blsqbot> That line gave me an error
12:07:51 <lifthrasiir> v?
12:07:53 <mroman_> !blsq {1 2 3 4 5}b2
12:07:53 <blsqbot> {"1" "10" "11" "100" "101"}
12:08:03 <AndoDaan> !blsq {72 101 108 108 111}{L[}m[
12:08:03 <mroman_> ^- b2 checks if it's a list and just maps over the list automatically
12:08:04 <blsqbot> {'H 'e 'l 'l 'o}
12:08:04 <lifthrasiir> ?v
12:08:04 <lambdabot> "\"\\\"\\\\\\\"\\\\\\\\\\\\\\\"\\\\\\\\\\"
12:08:07 <fizzie> myname: Well, there is a difference between fmap and map, unless you're only talking about lists.
12:08:14 <lifthrasiir> uh, well. I see.
12:08:25 <mroman_> !blsq {72 101 108 108 111})L[
12:08:26 <blsqbot> {'H 'e 'l 'l 'o}
12:08:27 <myname> fizzie: yeah, sure, but besides that
12:08:38 <mroman_> ) wraps a single command in a map
12:08:44 <mroman_> (as does : for filter)
12:08:54 <AndoDaan> damn that's helpfull
12:08:59 <mroman_> so
12:09:05 <mroman_> {aabb}m[
12:09:07 <mroman_> )aa)bb
12:09:19 <mroman_> it's shorter to do two maps instead of one
12:09:34 <AndoDaan> !blsq {72 101 108 108 111}L[.+
12:09:34 <blsqbot> ERROR: Burlesque: (.+) Invalid arguments!
12:09:51 <AndoDaan> !blsq {72 101 108 108 111}L[wd
12:09:52 <blsqbot> ERROR: Burlesque: ([[) Invalid arguments!
12:09:58 <fizzie> NumPy has this thing called auto-broadcasting, you can apply most binary things to, say, operands of sizes (AxBxCxD) and (Ax1xCx1) and it'll repeat the latter along the singleton dimensions to make up the difference.
12:10:01 <mroman_> L[ is length for Blocks
12:10:05 <mroman_> !blsq {1 2 3 4}L[
12:10:05 <blsqbot> 4
12:10:28 <mroman_> !blsq {72 101 108 108 111})L[wd
12:10:29 <blsqbot> "H e l l o"
12:10:33 -!- GeekDude has joined.
12:10:46 <AndoDaan> !blsq {72 101 108 108 111})L[wd
12:10:47 <blsqbot> "H e l l o"
12:10:58 <mroman_> !blsq {"abc" "" "def" "" "" "ppp"}:L[
12:10:59 <blsqbot> {"abc" "def" "ppp"}
12:11:09 <AndoDaan> !blsq {72 101 108 108 111})L[wD
12:11:09 <blsqbot> H e l l o
12:11:29 <fizzie> !blsq {72 101 108 108 111})L[)L[
12:11:30 <blsqbot> {'A 'a 'a 'a 'a}
12:11:32 <fizzie> What's the logic of L[ being length for blocks/strings, conversion to character for int, and testing for upper/lowercase for char?
12:11:32 <AndoDaan> !blsq {72 101 108 108 111})L[2enwD
12:11:33 <blsqbot> e l
12:12:02 <AndoDaan> !blsq {72 101 108 108 111})L[nwD2en
12:12:02 <blsqbot> That line gave me an error
12:12:14 <mroman_> fizzie: Historical
12:12:18 <AndoDaan> !blsq {72 101 108 108 111})L[nwd2en
12:12:19 <blsqbot> That line gave me an error
12:12:22 <mroman_> I tried to squish as much functionality into a single command
12:12:24 <AndoDaan> !blsq {72 101 108 108 111})L[nwd2
12:12:24 <blsqbot> ERROR: Unknown command: (d2)!
12:12:45 <mroman_> which looking back wasn't a really good thing to do
12:13:09 <mroman_> what's en?
12:13:12 <mroman_> everyNth?
12:13:35 <mroman_> fizzie: In case I wanted to switch to single byte commands
12:13:56 <mroman_> Which I only could have about 200 commands
12:14:04 <mroman_> but I dropped that
12:14:10 <mroman_> It now has
12:14:14 <mroman_> !blsq ?n
12:14:14 <blsqbot> That line gave me an error
12:14:16 <mroman_> !blsq ?_
12:14:16 <blsqbot> "I have 340 non-special builtins!"
12:14:27 <mroman_> 340 non-special builtins
12:14:41 <mroman_> and some special builtins
12:14:49 <mroman_> !blsq 339?n
12:14:49 <blsqbot> ??
12:14:53 <mroman_> !blsq 338?n
12:14:53 <blsqbot> ?n
12:15:17 <mroman_> AndoDaan: ?n is undocumented btw ;)
12:15:32 <mroman_> 338?n returns the 338th command
12:15:53 <AndoDaan> !blsq 60?n
12:15:53 <blsqbot> ^^
12:16:09 <AndoDaan> ooh exciting
12:16:42 <mroman_> !blsq (^^)
12:16:42 <blsqbot> ^^
12:16:49 <mroman_> ^- in case you didn't know ()
12:16:51 <AndoDaan> !blsq 1?n
12:16:51 <blsqbot> J
12:17:13 <mroman_> (^^) is shorter than "^^"Q
12:17:20 <mroman_> for challenges where you have to exactly print two characters
12:17:29 <AndoDaan> !blsq 20rz{?n}m[
12:17:29 <blsqbot> {j J .+ _+ .- ./ .* .% +. -. .> .< >. <. >] <] ** r_ R_ == !=}
12:17:46 <myname> wat
12:17:58 <AndoDaan> !blsq 60rz{?n}m[
12:17:58 <blsqbot> {j J .+ _+ .- ./ .* .% +. -. .> .< >. <. >] <] ** r_ R_ == != <- ln un uN wl WL
12:18:26 -!- nortti has changed nick to hellortti.
12:18:28 <mroman_> fizzie: The most stupid decision was printing strings with ""
12:18:31 <mroman_> !blsq "foo"
12:18:31 <blsqbot> "foo"
12:18:37 <AndoDaan> !blsq 60 100r@{?n}m[
12:18:37 <blsqbot> {^^ vv XX ~[ ~~ ~! !~ r~ R~ ^p p^ =[ sh FF ff Ff SH sH Sh ~= =~ || && $$ L[ ab s
12:18:40 <mroman_> that's why there's un and uN
12:18:40 -!- hellortti has changed nick to nortti.
12:19:02 <mroman_> most common used commands have a version with an implicit sh
12:19:08 <mroman_> !blsq {"ab""cd"}un
12:19:09 <blsqbot> "ab\ncd"
12:19:11 <mroman_> !blsq {"ab""cd"}uN
12:19:11 <blsqbot> ab
12:19:26 <AndoDaan> !blsq 150 100r@{?n}m[
12:19:27 <blsqbot> {}
12:19:33 <AndoDaan> !blsq 100 150r@{?n}m[
12:19:34 <blsqbot> {<> /v v/ ^/ /^ r& r| ZZ zz M[ M] m] [m ]m [M wd wD f[ z[ Z[ Z] !! fi Fi fI fe C
12:19:39 <mroman_> !blsq ((((q))))
12:19:39 <blsqbot> ERROR: (line 1, column 10):
12:19:46 <mroman_> !blsq ((q))
12:19:47 <blsqbot> ERROR: (line 1, column 6):
12:19:48 <mroman_> ok
12:19:51 <AndoDaan> !blsq 150 300r@{?n}m[
12:19:52 <blsqbot> {sb cm CM Cm B! g_ l_ tw dw tp FM r\ SP sp hd HD ld LD st #a #b #c `a `b `c !a !
12:19:53 <mroman_> !blsq ((qa))
12:19:54 <blsqbot> ERROR: (line 1, column 7):
12:19:59 <mroman_> !blsq ((la))
12:19:59 <blsqbot> (la)
12:20:04 <mroman_> !blsq (((la)))
12:20:05 <blsqbot> ((la))
12:20:08 <mroman_> :)
12:20:12 <mroman_> !blsq (((la)))bxe!
12:20:12 <blsqbot> (la)
12:20:21 <AndoDaan> !blsq 200 300r@{?n}m[
12:20:22 <blsqbot> {Wl si ro rz nu fl to sr rn RN >m <m gr pi ee pm ch f~ rm nc nd Bc Bp pc pp gc g
12:20:41 <AndoDaan> !blsq 400 500r@{?n}m[
12:20:42 <mroman_> !blsq (ta)to
12:20:42 <blsqbot> That line gave me an error
12:20:42 <blsqbot> "Ident"
12:20:55 <mroman_> !blsq ((ta))to
12:20:56 <blsqbot> "Quoted"
12:21:04 <AndoDaan> !blsq 338 360r@{?n}m[
12:21:05 <blsqbot> That line gave me an error
12:21:10 <mroman_> there are only 340
12:21:18 <fizzie> `forth ." that string print thing is so Forthy!"
12:21:19 <HackEgo> that string print thing is so Forthy!
12:21:22 <AndoDaan> !blsq 338 339r@{?n}m[
12:21:22 <blsqbot> {?n ??}
12:21:35 <AndoDaan> !blsq 316r@{?n}m[
12:21:36 <blsqbot> ERROR: Burlesque: (m[) Invalid arguments!
12:21:44 <AndoDaan> !blsq 316 320r@{?n}m[
12:21:45 <blsqbot> {sm fu ck it th}
12:21:53 <AndoDaan> fu ck it
12:21:56 <mroman_> :)
12:21:58 <mroman_> yeah
12:22:01 <AndoDaan> !blsq 316 321r@{?n}m[
12:22:01 <blsqbot> {sm fu ck it th bs}
12:22:21 <mroman_> !blsq {"abc""efg"}{L[}fuckit
12:22:21 <AndoDaan> I saw your transpose easter egg, btw.
12:22:21 <blsqbot> ERROR: Burlsque: (n!) Invalid arguments!
12:22:32 <mroman_> !blsq {{"abc"}{"efg"}}{L[}fuckit
12:22:32 <blsqbot> 'g
12:22:52 <AndoDaan> !blsq 321 ?n
12:22:52 <blsqbot> bs
12:22:56 <AndoDaan> !blsq 322 ?n
12:22:57 <blsqbot> BS
12:23:00 <AndoDaan> !blsq 323 ?n
12:23:00 <blsqbot> cn
12:23:01 <mroman_> It's weird that you can unline Blocks without strings
12:23:06 <mroman_> !blsq {1 2 3}un
12:23:06 <blsqbot> "\n12\n3"
12:23:27 <AndoDaan> !blsq {1 2 3}uN
12:23:27 <mroman_> But the result is buggy :D
12:23:27 <blsqbot> Ain't nobody got output fo' that!
12:23:38 <AndoDaan> !blsq {1 2 3}sh
12:23:38 <blsqbot> [1, 2, 3]
12:23:45 <AndoDaan> !blsq {1 2 3}un
12:23:45 <blsqbot> "\n12\n3"
12:23:52 <AndoDaan> !blsq ,{1 2 3}un
12:23:53 <blsqbot> "\n12\n3"
12:24:02 <AndoDaan> !blsq ,{1 2 3}\/un
12:24:03 <blsqbot> ERROR: Burlesque: (\[) Invalid arguments!
12:24:16 <AndoDaan> !blsq ,{1 2 3}^^[-un
12:24:16 <blsqbot> "\n23"
12:24:23 <AndoDaan> !blsq ,{1 2 3}^^-]un
12:24:24 <blsqbot> ERROR: Burlesque: (\[) Invalid arguments!
12:24:45 <mroman_> !blsq {1 2}un
12:24:46 <blsqbot> "\n12"
12:24:49 <mroman_> weird
12:25:16 <AndoDaan> !blsq {2 3}un
12:25:16 <mroman_> !blsq #Qhithere.
12:25:16 <blsqbot> "\n23"
12:25:16 <blsqbot> ERROR: Unknown command: (e.)!
12:25:26 <mroman_> !blsq #qhithere.
12:25:27 <blsqbot> ERROR: Unknown command: (e.)!
12:25:32 <mroman_> !blsq #q5
12:25:33 <blsqbot> 5
12:25:49 <mroman_> !blsq #q5 5#s
12:25:50 <blsqbot> {5 5}
12:25:53 <AndoDaan> !blsq {2 3}57?n
12:25:53 <blsqbot> m[
12:26:10 <AndoDaan> !blsq {2 3}55?n
12:26:10 <blsqbot> \m
12:26:11 <mroman_> (blsqbot only prints the first line)
12:27:21 <AndoDaan> !blsq {2 3} 150?n
12:27:21 <blsqbot> sb
12:30:33 <mroman_> good ol' sortBy
12:30:59 <mroman_> !blsq {"abc""d""fegh"}(L[)cmsb
12:30:59 <blsqbot> ERROR: Burlesque: (sb) Invalid arguments!
12:31:03 <mroman_> !blsq {"abc""d""fegh"}(L[)Cmsb
12:31:03 <blsqbot> ERROR: Burlesque: (sb) Invalid arguments!
12:31:05 <mroman_> !blsq {"abc""d""fegh"}(L[)CMsb
12:31:06 <blsqbot> {"d" "abc" "fegh"}
12:31:14 <mroman_> I can never remember which version of compare to use
12:31:34 <mroman_> !blsq {"abc""d""fegh"}{L[}Cmsb
12:31:35 <blsqbot> {"d" "abc" "fegh"}
12:31:57 <mroman_> > sortBy (comparing length) ["abc","d","fegh"]
12:31:58 <lambdabot> ["d","abc","fegh"]
12:32:27 <mroman_> Burlesque maps nicely to haskell :)
12:32:49 <mroman_> almost as if it were a stack-based haskell or something
12:33:14 <mroman_> !blsq {"abc""d""fegh"}{L[}Cmsbsh
12:33:15 <blsqbot> ["d", "abc", "fegh"]
12:34:30 <mroman_> AndoDaan: You can also write fuckshit or something like that
12:35:09 <AndoDaan> !blsq fuckshit
12:35:09 <blsqbot> ERROR: Burlsque: (n!) Invalid arguments!
12:35:22 <AndoDaan> !blsq "fuckshit"fuckshit
12:35:22 <blsqbot> ERROR: Burlsque: (n!) Invalid arguments!
12:35:37 <mroman_> ck is n!n!
12:35:38 <AndoDaan> 5n!
12:35:52 <mroman_> !blsq 5n!
12:35:53 <blsqbot> 0
12:35:54 <mroman_> !blsq 5n!n!
12:35:55 <blsqbot> 1
12:36:00 <AndoDaan> !blsq 5n!
12:36:00 <blsqbot> 0
12:36:12 <AndoDaan> !blsq 6n!5n!
12:36:13 <blsqbot> 0
12:36:36 <AndoDaan> !blsq -1n!
12:36:37 <blsqbot> 0
12:36:38 <mroman_> ck also returns the most common element of the most common block in a block
12:36:56 <mroman_> !blsq {{1 2 2 3}{1 2 2 3}{1 2 3}{1 4 4}}ck
12:36:57 <blsqbot> 2
12:38:16 <mroman_> !blsq 20q?nGO
12:38:17 <blsqbot> {J .+ _+ .- ./ .* .% +. -. .> .< >. <. >] <] ** r_ R_ == !=}
12:38:18 <mroman_> btw ;)
12:38:38 <mroman_> !blsq 20rz)?N
12:38:38 <blsqbot> {ERROR: Unknown command: (?N)! 0 ERROR: Unknown command: (?N)! 1 ERROR: Unknown
12:38:41 <mroman_> !blsq 20rz)?n
12:38:42 <blsqbot> {j J .+ _+ .- ./ .* .% +. -. .> .< >. <. >] <] ** r_ R_ == !=}
12:38:50 <AndoDaan> !blsq 20q?n
12:38:50 <blsqbot> {?n}
12:39:02 <mroman_> q just wraps the next "Token" in a Block
12:39:05 <mroman_> !blsq q9
12:39:05 <blsqbot> {9}
12:39:07 <mroman_> !blsq q'a
12:39:07 <blsqbot> {'a}
12:39:09 <mroman_> !blsq qq0
12:39:10 <blsqbot> {{0}}
12:39:13 <mroman_> !blsq qqqqqqqqqqqq0
12:39:13 <blsqbot> {{{{{{{{{{{{0}}}}}}}}}}}}
12:39:15 <AndoDaan> ah
12:39:27 <AndoDaan> !blsq 20?N
12:39:27 <blsqbot> ERROR: Unknown command: (?N)!
12:39:30 <AndoDaan> !blsq ?N
12:39:31 <blsqbot> ERROR: Unknown command: (?N)!
12:39:31 <mroman_> however, unlike jJQ q is on the syntax level
12:39:41 <mroman_> jJQ:)@ etc. are on eval level
12:39:51 <mroman_> !blsq @5
12:39:51 <blsqbot> 5.0
12:39:58 <mroman_> !blsq {@5}
12:39:59 <blsqbot> {@ 5}
12:39:59 -!- Patashu has quit (Ping timeout: 272 seconds).
12:40:02 <mroman_> ^- see
12:40:08 <mroman_> {@5} isn't actually 5.0
12:40:25 <mroman_> which is kinda dumb :(
12:40:39 <AndoDaan> I hope I'll retain some of this info.
12:40:43 <mroman_> !blsq {0}{@5}m[
12:40:43 <blsqbot> {5.0 0}
12:40:51 <mroman_> ^- but it will be turned into 5.0 eventually
12:41:06 <mroman_> !blsq {q5}
12:41:06 <blsqbot> {{5}}
12:41:12 <mroman_> ^- q is on the syntax level
12:41:26 <mroman_> !blsq (q)
12:41:27 <blsqbot> ERROR: (line 1, column 4):
12:41:42 <mroman_> also () doesn't work with single character commands apparentely o_O
12:41:49 <mroman_> !blsq (j)
12:41:50 <blsqbot> j
12:41:53 <mroman_> nvm. it does
12:42:07 <mroman_> !blsq @ @ @#s
12:42:07 <blsqbot> 's
12:42:13 <mroman_> !blsq @ @
12:42:13 <blsqbot> @
12:42:30 <mroman_> !blsq {az}@+]
12:42:31 <blsqbot> ']
12:42:35 <mroman_> !blsq {az}@ +]
12:42:35 <blsqbot> ']
12:42:37 <mroman_> damn
12:42:44 <mroman_> !blsq {az}(@)+]
12:42:45 <blsqbot> {@ az}
12:42:48 <mroman_> !blsq {az}(@)+]e!
12:42:49 <blsqbot> 'z
12:42:52 <mroman_> !blsq {az}(@)+]e!#s
12:42:52 <blsqbot> {'z 'a}
12:42:56 <AndoDaan> I did notice that Q and J and j don't work when running --shell
12:43:05 <mroman_> hu?
12:43:32 <AndoDaan> I test my code in the shell
12:43:35 <mroman_> blsq ) 1 2j
12:43:35 <mroman_> 1
12:43:35 <mroman_> 2
12:43:42 <AndoDaan> so burlesque --shell
12:43:44 <mroman_> ^- they work on my computer
12:44:20 <mroman_> (also what happens when you run ?? in the shell?)
12:44:26 <AndoDaan> ah well, it's only minor
12:44:49 <AndoDaan> argh, 1.7.2b
12:44:51 <mroman_> yeah
12:44:52 <AndoDaan> sorry
12:44:56 <mroman_> you don't have the latest version then :)
12:45:03 <AndoDaan> I thought I had it updated.
12:45:27 <AndoDaan> but better like this I guess. Keeps to what anarchy golf is running.
12:45:38 <mroman_> anagol is running 1.7.3
12:45:49 <AndoDaan> well, fu ck it
12:48:12 <AndoDaan> okay, updating now.
12:48:19 <mroman_> !blsq "Hello"{**}mp
12:48:20 <blsqbot> 9415087488
12:48:33 <mroman_> !blsq "Hello")**pd
12:48:34 <blsqbot> 9415087488
12:48:54 <mroman_> I guess those map variations are mostly useless since the introduction of )
12:49:37 <mroman_> ps deepmaps?
12:49:38 <mroman_> o_O
12:49:43 <mroman_> !blsq {"5 6" "7 8"}ps
12:49:43 <blsqbot> {{5 6} {7 8}}
12:49:51 <mroman_> interesting
12:50:05 <mroman_> !blsq "5 6\n7 8"lnpssp
12:50:05 <blsqbot> 5 6
12:50:09 <mroman_> !blsq "5 6\n7 8"lnpsSP
12:50:09 <blsqbot> "5 6\n7 8"
12:50:23 <mroman_> ok probably not so interesting
12:50:37 <mroman_> !blsq "5 6\n7 8"lnpe
12:50:38 <blsqbot> {7 8}
12:50:41 <mroman_> !blsq "5 6\n7 8"lnpe#s
12:50:41 <blsqbot> {{7 8} {5 6}}
12:50:51 <mroman_> unless you need this ^
12:51:30 <mroman_> !blsq {1 7 8 6 2 0 1}{5.>}pt
12:51:30 <blsqbot> {{7 8 6} {1 2 0 1}}
12:52:05 <mroman_> !blsq "5.0"td
12:52:06 <blsqbot> 5.0
12:52:09 <mroman_> !blsq "5.0"tdtd
12:52:10 <blsqbot> 5.0
12:52:14 <mroman_> !blsq 5.0pd
12:52:15 <blsqbot> 5
12:52:16 <mroman_> !blsq 5.0pdpd
12:52:16 <blsqbot> 5.0
12:52:24 <mroman_> !blsq 5td
12:52:24 <blsqbot> 5.0
12:52:32 <mroman_> !blsq tp
12:52:33 <blsqbot> ERROR: You should not transpose what you can't transpose. Yes this is an eastere
12:52:41 <mroman_> ^- AndoDaan ;)
12:53:38 <mroman_> !blsq "hi9there""[[:digit:]]"sr
12:53:39 <blsqbot> {"[[:digit:]]"}
12:53:46 <mroman_> hm
12:53:48 <mroman_> !blsq "hi9there""[[:digit:]]"jsr
12:53:49 <blsqbot> {"hi" "there"}
12:54:42 -!- S1 has joined.
12:54:46 <mroman_> !blsq "fuckyou."ps
12:54:46 <blsqbot> {fu ck yo u.}
12:55:11 <mroman_> !blsq "fuckyou."pswd
12:55:11 <blsqbot> {ERROR: Burlesque: (_+) Invalid arguments!}
12:55:16 <mroman_> !blsq "fuckyou."psWd
12:55:16 <blsqbot> ERROR: Unknown command: (Wd)!
12:55:18 <mroman_> !blsq "fuckyou."psWD
12:55:19 <blsqbot> ERROR: Burlesque: (WD) Invalid arguments!
12:55:22 <mroman_> damn
12:55:30 <S1> what are you trying to do?
12:55:45 <mroman_> I hate that unlines/words don't auto-convert to string
12:55:59 <mroman_> I will fix that in 1.7.4
12:56:03 <mroman_> so that
12:56:06 <mroman_> !blsq {1 2 3}un
12:56:07 <blsqbot> "\n12\n3"
12:56:10 <mroman_> actually works
12:56:39 <mroman_> although for full backwards compatability this will probably be a new command
12:56:40 <S1> what does blsq stand for?
12:56:46 <mroman_> `? blsq
12:56:46 <HackEgo> blsq? ¯\(°​_o)/¯
12:56:54 <mroman_> `learn blsq (see burlesque)
12:56:55 <HackEgo> I knew that.
12:56:58 <mroman_> `? burlesque
12:56:59 <HackEgo> burlesque is only the sexiest language on earth.
12:57:09 <AndoDaan> lol I updated my copy to 1.6.9
12:57:25 <mroman_> `learn_append burlesque (see: http://mroman.ch/burlesque)
12:57:27 <HackEgo> I knew that.
12:57:30 <mroman_> `? burlesque
12:57:30 <HackEgo> burlesque is only the sexiest language on earth. \ (see: http://mroman.ch/burlesque)
12:57:42 <mroman_> AndoDaan: lol
12:57:48 <mroman_> 1.6.9 is pretty old :)
12:58:08 <AndoDaan> it is
12:58:10 <mroman_> more than 2 years
12:58:23 <AndoDaan> I used the 'ghc --make main.hs -o burlesque -O3 -fforce-recomp"
12:58:38 <AndoDaan> oh wait.
12:58:41 <AndoDaan> man...
12:58:44 <mroman_> hm?
12:59:04 <mroman_> Are you missing some packages?
13:04:08 -!- ais523 has quit (Read error: Connection reset by peer).
13:04:10 -!- callforjudgement has joined.
13:07:13 <AndoDaan> --okay, I managed that.
13:09:24 -!- callforjudgement has quit.
13:10:47 -!- S1 has quit (Quit: S1).
13:35:01 -!- Phantom_Hoover has quit (Ping timeout: 260 seconds).
13:36:25 -!- AndoDaan has quit.
13:39:10 -!- augur has quit (Read error: Connection reset by peer).
13:39:17 -!- Sprocklem has quit (Ping timeout: 260 seconds).
13:39:24 -!- augur has joined.
13:43:43 -!- sebbu has quit (Ping timeout: 244 seconds).
13:45:10 -!- Phantom_Hoover has joined.
13:59:52 -!- Phantom_Hoover has quit (Ping timeout: 245 seconds).
14:12:46 -!- nycs has changed nick to `^_^v.
14:22:14 -!- SvenGek has joined.
14:27:27 -!- Sprocklem has joined.
14:28:34 <myndzi> any of you dudes familiar with bacon.js?
14:29:24 <myndzi> or FRP in general, more likely
14:31:08 <GeekDude> mmmm, delicious bacon
14:31:36 <myndzi> baconexplosion.js :V
14:31:49 <GeekDude> ERROR 418
14:32:22 -!- shikhin has joined.
14:32:50 -!- shikhin has changed nick to Guest62969.
14:35:59 -!- Guest62969 has quit (Client Quit).
14:36:20 -!- shikhout has joined.
14:40:36 <elliott_> myndzi: no, but yes
14:41:06 <elliott_> I haven't used FRP "in practice" barely at all but I know about reactive-banana and some other libraries and have read papers.
14:41:09 <mroman_> !blsq {1}es
14:41:09 <blsqbot> {1}
14:41:13 <mroman_> !blsq {}es
14:41:13 <blsqbot> ""
14:41:16 <mroman_> interesting
14:42:01 <GeekDude> HTCPCP ERROR 418
14:43:33 <myndzi> i've got a thing that i'm thinking may work well with the paradigm but having trouble figuring out how to phrase it
14:43:53 <myndzi> the js FRP libraries don't seem to have much irc presence :(
14:44:38 <myndzi> i suppose the core thing i'm trying to figure out at the moment is how to combine some event streams (or whatever) in such a way that a single stream drives the emission of events, but the latest value from some of the others is merged into its output
14:45:11 <myndzi> 'properties' in baconjs seems to suit, but i don't want to get a stream output for every property that changes
14:45:37 <myndzi> some googling just stumbled me into 'sampledby', maybe that's near what i'm looking for
14:46:00 <myndzi> or maybe something like rxjs's 'schedulers'
14:50:28 <myndzi> "Projects each element of an observable sequence into a new sequence of observable sequences by incorporating the element's index and then transforms an observable sequence of observable sequences into an observable sequence producing values only from the most recent observable sequence."
14:50:31 <myndzi> ...wow
14:51:48 <Bike> why the hell is it called bacon?
14:52:51 <quintopia> because bacon is delicious
14:54:28 <SvenGek> prolly to add to the appeal
14:56:00 <myndzi> with language like the above (in rxjs), i don't think bacon needs a mouth-watering name to be more appealing :P
15:01:50 <J_Arcane> I only know about Elm (as in I know it exists and I've stared at code snippets) and some FRP libs/lang stuff for Racket.
15:03:14 <Jafet> Because bacon is a fruit, of course
15:03:16 <J_Arcane> Elm was interesting to me though because it compiles to JS, while looking a bit like Haskell.
15:03:21 -!- TieSoul has changed nick to kappa.
15:03:24 -!- kappa has changed nick to TieSoul.
15:03:28 <myndzi> i think i may have found some useful examples in the gaming concept-space
15:05:18 <myndzi> this is kind of sexy
15:05:29 <myndzi> http://baconjs.github.io/api.html#bacon-combinetemplate
15:05:44 <myndzi> this is close to what i want but i didn't want output updates on every change, only on the 'controlling' stream
15:05:55 <myndzi> but sampledBy will give me just that
15:08:27 -!- shikhout has changed nick to shikhin.
15:14:51 -!- AndoDaan has joined.
15:19:57 <password2> Hi
15:26:49 -!- password2 has quit (Quit: Leaving).
15:32:53 -!- drdanmaku has joined.
15:34:24 -!- heow has joined.
15:36:44 -!- heow has left.
15:48:31 -!- GeekDude has quit (Quit: {{{}}{{{}}{{}}}{{}}} (www.adiirc.com)).
15:58:51 -!- Sprocklem has quit (Ping timeout: 272 seconds).
16:04:52 -!- Bike has quit (Quit: leaving).
16:05:12 -!- Bike has joined.
16:05:37 -!- Bike has quit (Client Quit).
16:05:50 -!- Bike has joined.
16:08:43 -!- Bike has quit (Client Quit).
16:08:59 -!- Bike has joined.
16:18:37 -!- GeekDude has joined.
16:31:02 -!- sebbu has joined.
16:31:39 -!- sebbu has quit (Changing host).
16:31:39 -!- sebbu has joined.
16:39:27 -!- GeekDude has quit (Read error: Connection reset by peer).
16:39:48 -!- GeekDude has joined.
16:43:41 -!- DKordic`` has joined.
17:08:37 -!- MoALTz has joined.
17:26:27 -!- AndoDaan has quit (Ping timeout: 245 seconds).
17:28:31 -!- zzo38 has quit (Remote host closed the connection).
17:29:18 -!- AndoDaan has joined.
17:45:26 -!- TieSoul has quit (Excess Flood).
17:45:44 -!- TieSoul has joined.
17:47:54 -!- Sorella has quit (Ping timeout: 258 seconds).
18:00:21 -!- shikhout has joined.
18:03:37 -!- shikhin has quit (Ping timeout: 258 seconds).
18:11:16 -!- GeekDude has quit (Quit: {{{}}{{{}}{{}}}{{}}} (www.adiirc.com)).
18:12:07 <Taneb> `? Taneb
18:12:08 <HackEgo> Taneb is not elliott, no matter who you ask. He also isn't a rabbi although he has pretended in the past. He has at least two backup keyboards, and five genders. (See also: tanebventions)
18:12:24 <Taneb> Disclaimer: I probably have less than 5 genders
18:12:58 <Taneb> But my two keyboards are reunited!
18:13:35 <Bike> http://en.cppreference.com/w/cpp/language/user_literal C++ is more incredible the more i inadvertently learn about it
18:15:44 <elliott_> TANEB HAS 5 CORNER SIMULTANEOUS 5-GENDER IDENTITY CUBE IN ONLY 24 HOUR ROTATION
18:16:13 <Taneb> :)
18:17:57 <Bike> also can i just not use c11 things, this is dumb
18:18:32 <elliott_> Taneb: how often do you rotate?
18:21:03 <Taneb> Roughly daily
18:25:09 <mroman_> `? fizzie
18:25:10 <HackEgo> fizzie is not fnord with a monad but the king of #esoteric, see http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/src/fizziecoin.jpg
18:25:26 <mroman_> Is it allowed to edit someone's user-wisdom?
18:26:40 <mroman_> BrainFlow is an extension of BrainFuck with 3 additional commands for added functionality and confusion:
18:26:45 <mroman_> "confusion"?
18:26:49 <mroman_> What's confusing about that
18:27:23 <mroman_> has anybody actually considered extending BF Joust by some BF derivative with more functionality?
18:29:39 <mroman_> Why would somebody make a BF derivative not using ASCII?
18:31:04 <mroman_> User:ChiSHAXtjo I smell spam
18:31:11 <mroman_> fungot: Do you smell spam?
18:31:11 <fungot> mroman_: they're just getting the treadmill in for me i
18:31:22 <mroman_> fungot: Are you trying to do more sports?
18:31:22 <fungot> mroman_: ( ( um i)) don't think that's
18:40:26 -!- conehead has joined.
18:42:33 -!- GeekDude has joined.
18:47:20 -!- Sprocklem has joined.
18:47:50 -!- Sprocklem has changed nick to Guest86867.
18:56:04 -!- Guest86867 has quit (Ping timeout: 260 seconds).
18:59:57 -!- AnotherTest has joined.
19:03:23 -!- Bicyclidine has joined.
19:04:00 <HackEgo> [wiki] [[Special:Log/newusers]] create * DTSCode * New user account
19:11:02 <mroman_> {'i ?i 'd ?d 's S[}
19:11:05 <mroman_> !blsq 9S[
19:11:06 <blsqbot> 81
19:11:37 <mroman_> !blsq "iis"{{'i 'd 's}jFi}
19:11:37 <blsqbot> {{'i 'd 's} j Fi}
19:11:41 <mroman_> !blsq "iis"{{'i 'd 's}jFi}m[
19:11:41 <blsqbot> {0 0 2}
19:11:51 <Bicyclidine> so what's the best error handling regime, in general
19:12:00 <mroman_> !blsq "iis"{?i ?d ?s}j{{'i 'd 's}jFi}m[si
19:12:00 <Bicyclidine> obviously a reasonable, easily answered question
19:12:01 <blsqbot> {?i ?i ?s}
19:12:07 <mroman_> !blsq "iis"{?i ?d ?s}j{{'i 'd 's}jFi}m[si0je!
19:12:08 <blsqbot> 1.4142135623730951
19:12:11 <mroman_> oh
19:12:13 <mroman_> that's sqrt
19:12:20 <mroman_> !blsq "iis"{?i ?d S[}j{{'i 'd 's}jFi}m[si0je!
19:12:20 <blsqbot> 4
19:12:42 <mroman_> !blsq "iisdsii"{?i ?d S[}j{{'i 'd 's}jFi}m[si0je!
19:12:43 <blsqbot> 11
19:12:48 <mroman_> not fully compliant though
19:13:05 <mroman_> it performs modulo iff x=256 right?
19:13:12 <mroman_> oh. and -1
19:13:14 <Bicyclidine> does anybody but you understand this language? it looks like hayes commands
19:13:36 <mroman_> !blsq {-1==}{256==}m|
19:13:36 <blsqbot> 0
19:13:40 <mroman_> !blsq -1{-1==}{256==}m|
19:13:41 <blsqbot> 1
19:13:55 <mroman_> !blsq 5{-1==}{256==}m|{256.%}if
19:13:56 <blsqbot> No output!
19:14:00 <mroman_> !blsq 5J{-1==}{256==}m|{256.%}if
19:14:00 <blsqbot> 5
19:14:04 <mroman_> !blsq 256J{-1==}{256==}m|{256.%}if
19:14:05 <blsqbot> 0
19:14:31 <mroman_> !blsq {?i ?d}{J{-1==}{256==}m|{256.%}if}[[
19:14:32 <blsqbot> {J {?i ?d} {-1 ==} {?i ?d} {256 ==} {?i ?d} m| {?i ?d} {256 .%} {?i ?d} if}
19:14:43 <mroman_> !blsq {?i ?d}{J{-1==}{256==}m|{256.%}if}ic
19:14:43 <blsqbot> {ERROR: Burlesque: (_+) Invalid arguments!}
19:14:47 <mroman_> !blsq {?i ?d}{J{-1==}{256==}m|{256.%}if}IC
19:14:48 <blsqbot> {ERROR: Burlesque: (_+) Invalid arguments!}
19:14:51 <mroman_> fuuu
19:14:54 <mroman_> !blsq {?i ?d}{J{-1==}{256==}m|{256.%}if}bxIC
19:14:54 <blsqbot> {ERROR: Burlesque: (_+) Invalid arguments!}
19:14:57 <mroman_> !blsq {?i ?d}{J{-1==}{256==}m|{256.%}if}
19:14:57 <blsqbot> {J {-1 ==} {256 ==} m| {256 .%} if}
19:15:03 <mroman_> !blsq {?i ?d}{J{-1==}{256==}m|{256.%}if}[[
19:15:04 <blsqbot> {J {?i ?d} {-1 ==} {?i ?d} {256 ==} {?i ?d} m| {?i ?d} {256 .%} {?i ?d} if}
19:15:14 <mroman_> !blsq {?i ?d}{J{-1==}{256==}m|{256.%}if}j[[
19:15:15 <blsqbot> {?i {J {-1 ==} {256 ==} m| {256 .%} if} ?d}
19:15:18 <mroman_> !blsq {?i ?d}{J{-1==}{256==}m|{256.%}if}jic
19:15:19 <blsqbot> {ERROR: Burlesque: (_+) Invalid arguments!}
19:15:20 <mroman_> !blsq {?i ?d}{J{-1==}{256==}m|{256.%}if}jIC
19:15:21 <blsqbot> {ERROR: Burlesque: (_+) Invalid arguments!}
19:15:25 <mroman_> !blsq {?i ?d}{J{-1==}{256==}m|{256.%}if}j[[\[
19:15:26 <blsqbot> {ERROR: Burlesque: (_+) Invalid arguments!}
19:15:29 <mroman_> !blsq {?i ?d}{J{-1==}{256==}m|{256.%}if}j[[
19:15:30 <blsqbot> {?i {J {-1 ==} {256 ==} m| {256 .%} if} ?d}
19:15:59 <mroman_> !blsq {?i ?d})bx{J{-1==}{256==}m|{256.%}if}jIC
19:15:59 <blsqbot> {ERROR: Burlesque: (_+) Invalid arguments!}
19:16:02 <mroman_> !blsq {?i ?d})bx{J{-1==}{256==}m|{256.%}if}ic
19:16:03 <blsqbot> {ERROR: Burlesque: (_+) Invalid arguments!}
19:16:04 <mroman_> !blsq {?i ?d})bx{J{-1==}{256==}m|{256.%}if}IC
19:16:05 <blsqbot> {?i J {-1 ==} {256 ==} m| {256 .%} if ?d}
19:16:08 <mroman_> ah
19:16:10 -!- Sprocklem_ has joined.
19:16:11 <mroman_> now we're talking
19:16:40 -!- Sprocklem_ has changed nick to Sprocklem.
19:16:47 <mroman_> !blsq "d"{?i ?d ?s}j{{'i 'd 's}jFi}m[sibx{J{-1==}{256==}m|{256.%}if}IC0je!
19:16:47 <blsqbot> -1
19:16:50 <mroman_> fuck
19:17:02 <mroman_> !blsq "d"{?i ?d ?s}j{{'i 'd 's}jFi}m[sibx{J{-1==}{256==}m|{256.%}if}IC
19:17:03 <blsqbot> {?d}
19:17:13 <mroman_> !blsq "dd"{?i ?d ?s}j{{'i 'd 's}jFi}m[sibx{J{-1==}{256==}m|{256.%}if}IC
19:17:13 <blsqbot> {?d ?d}
19:17:19 <mroman_> why isn't it intercalating stuff
19:17:39 <mroman_> !blsq "dd"{?i ?d ?s}j{{'i 'd 's}jFi}m[si)bx{J{-1==}{256==}m|{256.%}if}IC
19:17:40 <blsqbot> {?d J {-1 ==} {256 ==} m| {256 .%} if ?d}
19:17:45 <mroman_> !blsq "dd"{?i ?d ?s}j{{'i 'd 's}jFi}m[si)bx{J{-1==}{256==}m|{256.%}if}IC0je!
19:17:46 <blsqbot> 254
19:17:49 <mroman_> ah
19:17:49 <mroman_> hehe
19:17:52 -!- AndoDaan has quit (Ping timeout: 240 seconds).
19:18:08 <mroman_> Bicyclidine: Of course
19:18:13 <mroman_> me and AndoDaan
19:18:22 <mroman_> and some guys on golf.shinh.org
19:18:52 <Bicyclidine> coo
19:18:57 <GeekDude> http://regex.alf.nu/
19:19:04 <GeekDude> "Sorry, crashy today. Need to find an actual server."
19:19:23 <Bicyclidine> clearly they've been compromised by shellbleed
19:19:34 <GeekDude> :O
19:19:52 <GeekDude> I hear there's a notorious hacker named "4chan" going around
19:19:56 <GeekDude> I hope it wasn't them
19:20:08 <mroman_> now for the 'o'
19:20:25 <mroman_> !blsq "dd"{?i ?d ?s J}j{{'i 'd 's 'o}jFi}m[si)bx{J{-1==}{256==}m|{256.%}if}IC0je!
19:20:26 <blsqbot> 254
19:20:37 <mroman_> !blsq "dodoso"{?i ?d ?s J}j{{'i 'd 's 'o}jFi}m[si)bx{J{-1==}{256==}m|{256.%}if}IC0je!
19:20:37 <blsqbot> 15.937377450509228
19:20:47 <mroman_> !blsq "dodoso"{?i ?d S[ J}j{{'i 'd 's 'o}jFi}m[si)bx{J{-1==}{256==}m|{256.%}if}IC0je!
19:20:47 <blsqbot> 64516
19:21:16 <mroman_> > 254*254
19:21:18 <lambdabot> 64516
19:21:24 <GeekDude> > 6
19:21:24 <mroman_> !blsq "dodoso"{?i ?d S[ J}j{{'i 'd 's 'o}jFi}m[si)bx{J{-1==}{256==}m|{256.%}if}IC0je!#s
19:21:24 <blsqbot> {64516 64516 254 255}
19:21:25 <lambdabot> 6
19:21:27 <mroman_> there
19:21:28 <mroman_> it works
19:21:34 <GeekDude> > "6"
19:21:36 <lambdabot> "6"
19:21:50 <GeekDude> > 34567890987654**87654567
19:21:51 <lambdabot> Infinity
19:21:54 <GeekDude> :o
19:22:50 <HackEgo> [wiki] [[Deadfish]] http://esolangs.org/w/index.php?diff=40562&oldid=39867 * 81.62.136.104 * (+109) + Burlesque
19:23:09 <mroman_> Bicyclidine: The problem is that syntactically Burlesque is really easy
19:23:12 <mroman_> {} is a block
19:23:14 <mroman_> (a List)
19:23:18 <mroman_> {1 2 3} and that stuff
19:23:34 <mroman_> 'a is a character, "a" is a string, 5 is an integer and 5.0 is a double
19:23:44 <mroman_> commands are two characters long
19:23:51 <mroman_> ) is a prefix that maps a command over a list
19:23:55 <mroman_> !blsq {1 2 3 4})?i
19:23:56 <blsqbot> {2 3 4 5}
19:23:57 <mroman_> !blsq {1 2 3 4})?d
19:23:58 <blsqbot> {0 1 2 3}
19:24:01 <mroman_> !blsq {1 2 3 4})S[
19:24:02 <blsqbot> {1 4 9 16}
19:24:15 <mroman_> ?i is increment, ?d is decrement and S[
19:24:15 <lambdabot> Maybe you meant: id ignore index instances instances-importing irc-connect irc-password v @ ? .
19:24:18 <mroman_> I don't know what S[ is
19:24:23 <mroman_> but it's square for integers at least
19:24:51 <mroman_> !blsq "0001229"'0S[
19:24:51 <blsqbot> "1229"
19:24:55 <mroman_> it's StripLeft
19:24:59 <mroman_> for strings
19:25:10 <mroman_> !blsq {1 1 2 3}1S[
19:25:11 <blsqbot> {2 3}
19:25:14 <mroman_> and lists
19:25:49 <mroman_> Bicyclidine: since most stuff is encoded as commands
19:25:57 <mroman_> to make sense of a Burlesque-Program you need to know the
19:26:00 <mroman_> !blsq ?_
19:26:00 <blsqbot> "I have 340 non-special builtins!"
19:26:03 <mroman_> 340 builtins
19:26:22 <mroman_> which most of them have multiple uses depending on the arguments
19:26:29 <mroman_> so you need to know about 700 things commands do
19:26:33 <mroman_> it's just as easy as that
19:26:51 <Bicyclidine> great.
19:27:04 <mroman_> !blsq "abc def"wd
19:27:04 <blsqbot> {"abc" "def"}
19:27:06 <mroman_> ^- words
19:27:11 <mroman_> !blsq "abc def"wdwd
19:27:11 <blsqbot> "abc def"
19:27:15 <mroman_> but wd is also unwords
19:27:27 <mroman_> !blsq "abc"**
19:27:27 <blsqbot> ERROR: Burlesque: (**) Invalid arguments!
19:27:31 <mroman_> lol
19:27:37 <mroman_> what's ** again
19:27:38 <mroman_> a merge
19:27:43 <mroman_> !blsq "abc""def"**
19:27:44 <blsqbot> "adbecf"
19:27:48 <mroman_> !blsq 'a**
19:27:49 <blsqbot> 97
19:28:18 <mroman_> !blsq "bicyclidine"su
19:28:19 <blsqbot> {"b" "c" "d" "e" "i" "l" "n" "y" "bi" "cl" "cy" "di" "ic" "id" "in" "li" "ne" "y
19:28:28 <mroman_> !blsq "bars"su
19:28:28 <blsqbot> {"a" "b" "r" "s" "ar" "ba" "rs" "ars" "bar" "bars"}
19:28:58 <mroman_> !blsq "barabarsa"su"barslala"suIN
19:28:58 <blsqbot> {"a" "b" "r" "s" "ar" "ba" "rs" "ars" "bar" "bars"}
19:29:11 <mroman_> !blsq "blarabarsa"su"barslala"suIN
19:29:12 <blsqbot> {"a" "b" "l" "r" "s" "ar" "ba" "la" "rs" "ars" "bar" "bars"}
19:29:27 <mroman_> !blsq "blarabarsa"su"barslala"suIN(L[)>m
19:29:27 <blsqbot> ERROR: Burlesque: (-]) Invalid arguments!
19:29:29 <mroman_> what
19:29:37 <mroman_> !blsq "blarabarsa"su"barslala"suIN{L[}>m
19:29:37 <blsqbot> "bars"
19:29:41 <mroman_> right
19:29:42 <mroman_> there you go
19:29:47 <mroman_> longest common substring
19:30:59 <mroman_> !blsq {1 2 3}m]
19:30:59 <blsqbot> {"1" "2" "3"}
19:31:08 <mroman_> !blsq {1 2 3})Sh
19:31:09 <blsqbot> {"1" "2" "3"}
19:31:15 <mroman_> hm neat
19:31:29 <mroman_> Bicyclidine: Also you need to know sideffects
19:31:37 <mroman_> because commands are sometimes implemented using different commands
19:31:45 <mroman_> !blsq 3mo10.+
19:31:46 <blsqbot> {3 6 9 12 15 18 21 24 27 30}
19:31:50 <mroman_> ^- mo is multiplesOf
19:31:56 <mroman_> it's defined using some other commands
19:32:00 <mroman_> which means
19:32:04 <mroman_> !blsq {1 2 3 4}mo
19:32:04 <blsqbot> {1 4 9 16}
19:32:09 <mroman_> ^- this is undocumented
19:32:23 <mroman_> but it's a sideffect due to sideffects of commands it is implemented in
19:32:34 <mroman_> so it happens to be shorter than
19:32:40 <mroman_> !blsq {1 2 3 4})S[
19:32:40 <blsqbot> {1 4 9 16}
19:32:54 <mroman_> it was just recently discovered by me that mo can square a list
19:32:58 <mroman_> and it's been there for years
19:33:55 <mroman_> !blsq {1 2 3 4 5}4{3 4}pm
19:33:56 <blsqbot> {1 2 3 4 5}
19:34:00 <mroman_> hu
19:34:13 <mroman_> !blsq {1 2 3 4 5}4.+
19:34:14 <blsqbot> {1 2 3 4}
19:34:27 <mroman_> !blsq {7 7 1 2 3 4}{1 2 3 4 5}4pm
19:34:28 <blsqbot> {7 7}
19:34:55 <mroman_> also it can do Fibonacci better than golfscript2
19:34:57 -!- Bicyclidine has quit (Ping timeout: 246 seconds).
19:35:21 <mroman_> namely 9 bytes
19:35:40 <mroman_> !blsq 1Jq.+10C!
19:35:40 <blsqbot> 144
19:37:01 <mroman_> btw: Does anybode know whether there's an established term for C!
19:37:07 <mroman_> I just call it continuation
19:37:26 <mroman_> it performs operations without destroying the arguments to the it
19:37:37 <mroman_> kinda like
19:38:23 <mroman_> i.e. there's add := pop a, pop b, push a+b
19:38:47 <mroman_> the continuation of add is := pop a, pop b, push a, push b, push a+b
19:40:31 -!- AndoDaan has joined.
19:40:52 <mroman_> AndoDaan: you just missed the 10B solution for Fibonacci Numbers ;)
19:41:32 <AndoDaan> eventhough you wrote it, I'm still impress by how you handle burlesque
19:41:47 -!- conehead_ has joined.
19:41:48 <mroman_> what's that supposed to mean o_O?
19:44:44 <mroman_> You mean unlike zzo38 I actually take the time to document it ;)?
19:45:08 -!- AndoDaan_ has joined.
19:45:10 <AndoDaan_> Damn lousy internet connection.
19:45:18 <mroman_> 21:41 < mroman_> what's that supposed to mean o_O?
19:45:18 <mroman_> 21:44 < mroman_> You mean unlike zzo38 I actually take the time to document it ;)?
19:46:12 <AndoDaan_> see, I guess I'm still confused.
19:46:24 <mroman_> o_O?
19:46:26 -!- Sorella has joined.
19:46:27 <AndoDaan_> Who came up with "Burlesque?"
19:46:32 <mroman_> I did.
19:46:37 -!- AndoDaan has quit (Ping timeout: 276 seconds).
19:46:43 -!- AndoDaan_ has changed nick to AndoDaan.
19:47:04 <AndoDaan> Ah. My brain is terrible.
19:47:19 <mroman_> 21:41 < AndoDaan> eventhough you wrote it, I'm still impress by how you handle burlesque
19:47:19 <AndoDaan> and why... "Burlesque?"
19:47:28 <mroman_> ^- how so?
19:47:40 <mroman_> Burlesque? The name? It's some sort of ancient erotic dance
19:47:48 <mroman_> so it's offensive (to some) but doesn't have fuck in it
19:47:53 -!- Sorella has quit (Changing host).
19:47:53 -!- Sorella has joined.
19:48:07 <mroman_> although there usually is no nudity
19:48:12 <mroman_> it has class.
19:48:21 <AndoDaan> when you find that aspect of mo you took to it right away.
19:48:40 <AndoDaan> hmm
19:48:43 <mroman_> hm?
19:48:48 <mroman_> Your english is confusing :)
19:49:19 <mroman_> I'm very open about Burlesque
19:49:26 <mroman_> It's not fair if I keep stuff secret
19:49:40 <mroman_> because it would be so easy for me add secret stuff nobody knows and then win at golfing with secrets nobody knows
19:50:05 -!- conehead has quit (*.net *.split).
19:50:09 <mroman_> but I'm always amazed at finding secrets I didn't know about even though I've written the code
19:50:20 <mroman_> "ra" is also a good example
19:50:27 <mroman_> there was this golfing challenge once
19:50:30 <mroman_> with "5,6"
19:50:37 <mroman_> you can parse it
19:50:41 <mroman_> !blsq "5,6"ps
19:50:41 <blsqbot> {5 , 6}
19:50:48 <mroman_> and then throw away the , with
19:50:53 <mroman_> !blsq "5,6"psrte!
19:50:53 <blsqbot> 5
19:50:55 <mroman_> !blsq "5,6"psrte!#s
19:50:55 <blsqbot> {5 6}
19:50:58 <mroman_> !blsq "5,6"psrte!.+
19:50:58 <blsqbot> 11
19:51:09 <mroman_> but ra (ReadArray) doesn't require [ ]
19:51:14 <mroman_> and it skips over ,
19:51:23 <mroman_> which is based on how silly the parser was implemented
19:51:26 <mroman_> !blsq "5,6"ra
19:51:26 <blsqbot> 5
19:51:33 <mroman_> !blsq "5,6"ra#s
19:51:33 <blsqbot> {5}
19:51:53 <AndoDaan> !blsq "1,2,3"ra
19:51:54 <blsqbot> 1
19:51:57 <mroman_> wait
19:51:59 <SvenGek> is that GolfScript?
19:52:09 <AndoDaan> !blsq "1,2,3"^^ra
19:52:10 <blsqbot> 1
19:52:29 <mroman_> I guess it was a different challenge then
19:52:33 <mroman_> !blsq {1 2 3 4}Shra
19:52:33 <blsqbot> {1 2 3 4}
19:52:36 <AndoDaan> ra hides?
19:52:41 <mroman_> no
19:52:45 <mroman_> ra is ReadArray
19:52:49 <AndoDaan> right
19:53:07 <AndoDaan> !blsq "[1,2,3]"ra
19:53:07 <blsqbot> {1 2 3}
19:53:35 <AndoDaan> !blsq "[1,2,3]"ra?+
19:53:36 <blsqbot> ERROR: Burlesque: (.+) Invalid arguments!
19:54:10 <AndoDaan> !blsq "[1,2,3]"ra
19:54:11 <blsqbot> {1 2 3}
19:54:18 <AndoDaan> !blsq "[1,2,3]"ra.+
19:54:19 <blsqbot> ERROR: Burlesque: (.+) Invalid arguments!
19:54:21 <AndoDaan> !blsq "[1,2,3]"ra.+)
19:54:22 <blsqbot> )
19:55:24 <AndoDaan> question: when has hiding part of the stack ever been usefull?
19:55:42 <mroman_> no case is known so far
19:55:56 <AndoDaan> cool. :p
19:56:02 <mroman_> due to how the parser behind ra is implemented you can use it as a fail-safe parser
19:56:05 <mroman_> !blsq "5a"ps
19:56:06 <blsqbot> {ERROR: (line 1, column 3):
19:56:13 <mroman_> ^- won't work because it fails on the a
19:56:16 <mroman_> !blsq "5a"ra
19:56:16 <blsqbot> 5
19:56:20 <mroman_> ^- will stop at an error
19:56:57 <AndoDaan> probably will come in handy.
19:57:24 <mroman_> ra was added to be able to parse challenges that have lists as input
19:57:30 <mroman_> (i.e. python style lists)
19:58:13 <mroman_> also
19:58:22 <mroman_> !blsq "[5,,,,,1,]"ra
19:58:22 <blsqbot> {5 1}
19:58:29 <mroman_> ^- in case you ever need that
19:58:56 <AndoDaan> !blsq "[,,,5,,,,1,]"ra
19:58:56 <blsqbot> ERROR: (line 1, column 2):
19:59:02 <AndoDaan> !blsq "[5,,,,1,]"ra
19:59:03 <blsqbot> {5 1}
19:59:06 <AndoDaan> !blsq "[5,,,,1,,,]"ra
19:59:06 <blsqbot> {5 1}
19:59:19 <mroman_> I guess a list can't start with , then
19:59:23 <mroman_> interesting
19:59:36 <AndoDaan> !blsq "[,,,5,,,,1,,,]"rash
19:59:37 <blsqbot> ERROR: (line 1, column 2):
19:59:46 <mroman_> !blsq "[,5]"ra
19:59:46 <blsqbot> ERROR: (line 1, column 2):
19:59:54 <mroman_> nope. ra doesn't accept , at that position
20:00:12 <AndoDaan> !blsq "[,5,,,,1,,,]"ifra
20:00:13 <blsqbot> ERROR: Burlesque: (ra) Invalid arguments!
20:00:22 <mroman_> !blsq "[,,5,,1]""[0-9]+"=~
20:00:22 <blsqbot> {}
20:00:24 <mroman_> !blsq "[,,5,,1]""[0-9]+"~=
20:00:24 <blsqbot> 1
20:00:29 <mroman_> !blsq "[,,5,,1]""[0-9]+"=~
20:00:30 <blsqbot> {}
20:00:37 <mroman_> !blsq "[,,5,,1]""[0123456789]+"=~
20:00:37 <blsqbot> {}
20:00:40 <mroman_> hu
20:00:51 <mroman_> !blsq "[,,5,,1]""[0123456789]+"j=~
20:00:52 <blsqbot> {}
20:00:55 <mroman_> wtf
20:01:02 <mroman_> !blsq "[,,5,,1]""[[:digit]]+"j=~
20:01:03 <blsqbot> {}
20:01:06 <mroman_> !blsq "[,,5,,1]""[[:digit]]+"=~
20:01:06 <blsqbot> That line gave me an error
20:01:11 <mroman_> !blsq "[,,5,,1]""[[:digit]]"=~
20:01:12 <blsqbot> That line gave me an error
20:01:14 <mroman_> hm
20:01:19 <mroman_> can't remember how this worked
20:02:50 <AndoDaan> !blsq "[,5]"sh
20:02:51 <blsqbot> [,5]
20:03:04 <AndoDaan> !blsq "[,5]"sH
20:03:05 <blsqbot> ERROR: Burlesque: (ff) Invalid arguments!
20:03:09 <AndoDaan> !blsq "[,5]"Sh
20:03:09 <blsqbot> "[,5]"
20:03:15 <AndoDaan> !blsq "[,5]"Shra
20:03:16 <blsqbot> ERROR: (line 1, column 2):
20:03:20 <AndoDaan> !blsq "[5]"Shra
20:03:21 <blsqbot> {5}
20:04:01 <AndoDaan> !blsq "[5,,,,,1]"raL[
20:04:02 <blsqbot> 2
20:04:13 <AndoDaan> !blsq "[5,,,,,1,]"raL[
20:04:14 <blsqbot> 2
20:04:32 <AndoDaan> !blsq "[5,,,,,1,]"ra1en
20:04:32 <blsqbot> {5 1}
20:05:44 <AndoDaan> alright, thanks for the insights. I'll do my best to wield them.
20:05:57 <AndoDaan> gtg cya mroman, bye guys
20:06:02 -!- AndoDaan has quit.
20:10:19 -!- Bicyclidine has joined.
20:10:49 <GeekDude> `! bf_txtgen Go die in a hole
20:10:53 <HackEgo> 125 ++++++++++++++[>+++++>++++++++>++>+++++++<<<<-]>+.>-.>++++.>++.<<------.----.>.>+++++.+++++.<.<----.>.<+++++++.>>+.---.<<---. [435]
20:11:14 <Bicyclidine> how rude.
20:12:43 <fizzie> Editing the nickname wisdom entries is positively commonplace. At least I'm pretty sure I haven't written my own.
20:14:04 <Bicyclidine> !bf_txtgen balls of steel
20:14:10 <Bicyclidine> durr
20:19:47 <HackEgo> [wiki] [[Special:Log/newusers]] create * JannieOates * New user account
20:42:38 -!- `^_^v has quit (Ping timeout: 250 seconds).
20:47:47 -!- Sorella has quit (Ping timeout: 245 seconds).
20:48:36 -!- AnotherTest has quit (Ping timeout: 272 seconds).
20:59:42 -!- Bicyclidine has quit (Ping timeout: 272 seconds).
21:02:40 -!- Patashu has joined.
21:04:29 -!- GeekDude has quit (Remote host closed the connection).
21:05:41 -!- Bicyclidine has joined.
21:15:12 -!- zzo38 has joined.
21:20:23 -!- Phantom_Hoover has joined.
21:23:37 -!- Sprocklem has quit (Ping timeout: 260 seconds).
21:25:32 -!- Patashu has quit (Ping timeout: 250 seconds).
21:40:42 <J_Arcane> holy crap, Haskell patten matching is cool.
21:49:29 -!- oerjan has joined.
21:49:42 -!- GeekDude has joined.
21:59:14 -!- Bicyclidine has quit (Ping timeout: 272 seconds).
21:59:35 -!- Bicyclidine has joined.
22:09:14 -!- augur has quit (Quit: Leaving...).
22:22:17 -!- augur has joined.
22:47:10 -!- Sorella has joined.
22:47:59 -!- Sorella has quit (Changing host).
22:47:59 -!- Sorella has joined.
22:58:47 -!- Bicyclidine has quit (Ping timeout: 258 seconds).
23:10:12 -!- Sorella has quit (Ping timeout: 246 seconds).
23:12:55 -!- Bicyclidine has joined.
23:22:27 -!- Sprocklem has joined.
23:47:57 <myname> indeed
23:56:28 -!- tromp__ has quit (Read error: Connection reset by peer).
←2014-09-28 2014-09-29 2014-09-30→ ↑2014 ↑all