00:04:47 -!- boily has quit (Quit: Poulet!).
00:04:49 -!- cuttlefish has quit (Remote host closed the connection).
00:10:19 <Sgeo> Just applied to Jane Street
00:13:07 <Sgeo> Does anyone actually use classy prelude?
00:17:08 -!- nooodl has quit (Ping timeout: 248 seconds).
00:18:28 <Sgeo> "Jane Street doesnt seek outside investment and doesnt have customers. Our growth comes from hiring and training amazing people and giving them the tools they need to innovate."
00:18:37 <Sgeo> I am so confused. What do they actually _do_?
00:18:57 <Jafet> I hear they make money
00:19:37 <Sgeo> They make money off... the nature of a system built around the ability to exchange goods and services in a sensible way
00:19:46 <Bike> since when do people have to do things to make money
00:20:48 <Sgeo> I guess they likely make contributions to open-source stuff, but...
00:20:49 -!- GreyKnight has quit (Quit: zzz).
00:21:06 <kmc> haha oh Sgeo
00:21:10 <Sgeo> It still feels weird that they fundamentally make money by... well, does it count as a service to society?
00:21:19 <kmc> blah blah providing liquidity blah blah
00:21:24 <Bike> do you want like, a lecture on modern capitalism
00:21:38 <kmc> some strategies pretty clearly provide value
00:21:40 <kmc> like market making
00:21:46 <kmc> others are purely exploiting inefficiency
00:22:14 <kmc> my problem with HFT isn't some idea that it's evil, but the opportunity cost of all these smart people playing zero-sum games rather than improving the world
00:22:30 <kmc> even if your market making activity is beneficial, most of your effort goes into being slightly faster than the 20 other people trying to do it
00:22:34 <Sgeo> Does exploiting inefficiency actually benefit others, though? I... think it kind of could. If I'm too lazy to go across town to buy something, I will buy near me, even if it costs a little more
00:22:49 <kmc> Sgeo: i meant that it doesn't
00:23:12 <Bike> "exploiting inefficiency" is the leeches, "clearly provide value" is the weird seemingly pointless things that are actually quite helpful
00:23:25 <kmc> Sgeo: do you know how a market order book works
00:23:33 <kmc> ok so say i'm a stock exchange
00:23:42 <doesthiswork> I thought that exploiting inefficiency improved efficiency
00:23:56 <kmc> for each stock, i maintain a list of entries such as "person X is willing to buy at $a or less" and "person Y is willing to sell for $b or more"
00:24:10 <kmc> people send me these entries, i publish them to the world, they can also cancel them at any time
00:24:13 <kmc> that's the order book
00:24:25 <Sgeo> The market can't automate matchmaking?
00:24:31 <kmc> i am a computer here
00:24:41 <kmc> i am the automation
00:25:02 <kmc> the "people" who send me orders are also computer programs
00:25:09 <kmc> does it make sense so far
00:25:27 <Bike> doesthiswork: exploiting inefficiency in the sense of finding a niche that doesn't 'need' to exist for the rest of the system to function, and possibly deepening that niche out of self-interest.
00:25:37 <kmc> now, a trade happens if there's a buy order with price above a sell order
00:25:43 <kmc> that is, a >= b
00:25:54 <kmc> for this to happen, one of the orders was never actually displayed to the world
00:26:00 <kmc> because it immediately matched the other one when it came in
00:26:09 <kmc> the two sides of the trade are playing different roles!
00:26:24 <kmc> the person whose order sits on the book is 'providing liquidity'
00:26:31 <kmc> the person who matches that order is 'taking liquidity'
00:27:02 <kmc> now the stock exchange makes money on every trade
00:27:06 <kmc> they charge a fee
00:27:14 <kmc> but they charge a large fee to the person who is taking liquidity
00:27:21 <kmc> thus encouraging people to provide liquidity
00:27:28 <kmc> because that's what attracts more traders and makes the exchange successful
00:27:40 <kmc> in fact, many exchanges give a *negative* fee to liquidity providers
00:27:43 <kmc> liquidity rebate
00:28:02 <kmc> market making is a strategy where you provide liquidity on both sides of the book
00:28:24 <kmc> you're willing to buy *or* sell
00:28:39 <kmc> if your position gets too positive or too negative then you do only one or the other to get it back to zero
00:28:57 <kmc> anyway one way for market makers to make money is the liquidity rebate
00:29:01 <Bike> probably not, because i'm not very familiar with banking
00:29:08 <kmc> "we lose money on every trade we make, but we make up for it in volume!"
00:29:59 <kmc> the service that market makers provide to the world is ensuring that it's always possible to buy or sell a given stock
00:30:33 <kmc> by providing liquidity you're taking a risk. at any time, someone might come along and make that trade, and maybe by the time they do, it's a bad trade for you
00:30:50 <Sgeo> Could someone just make money trading market maker item to market maker item, or would the fees cancel that out?
00:31:09 <kmc> the liquidity taking fee is larger in magnitude than the liquidity providing rebate
00:31:14 <kmc> because the exchange gotta get paid too
00:31:37 <Sgeo> And I guess the market makers are not going to have the prices be so.. drastically.. something that it would make sense?
00:31:52 -!- augur has quit (Remote host closed the connection).
00:32:23 <kmc> it's also worth noting that before computerized market making, the human market markers were a good ol' boys club that got their positions by knowing a guy and colluded to screw over investors
00:32:54 <kmc> opening this up to everyone with a computer and shrinking the buy/sell price spread to pennies was pretty good for society, i would say
00:33:22 <kmc> anyway the big picture is that I think liquidity-providing strategies are easier to defend as useful to society than liquidity-taking ones
00:33:32 <kmc> it's not impossible to defend the latter but it gets more and more convoluted
00:33:48 <kmc> another way to look at it is, the market is a distributed computational system
00:34:03 <kmc> some participants are not willing to do the huge amount of computation necessary to determine the correct relative price of 3,000 stocks
00:34:12 <kmc> in exchange for their laziness, they pay a premium
00:34:19 <kmc> that money goes to the HFT firms that do all the computation
00:34:49 <Bike> i've heard being a quant is kind of miserable
00:34:51 <kmc> when you point and click to buy stock on your retail brokerage's website, you're not getting the best price in the pennies place, but do you care?
00:34:58 <kmc> you're a long term investor probably
00:34:59 <Bike> but still lucrative, of course
00:35:04 <kmc> somebody else makes a little money from you not caring
00:35:15 <kmc> in fact retail orders are very unlikely to hit the open market
00:35:42 <kmc> every retail brokerage is going to run those orders through one or more internal HFT strategies and then shop them around to various other "dark pools" and such
00:35:52 <kmc> only a small chance you can see your order on the tape at ARCA / BATS / NASDAQ / etc
00:35:52 <Phantom_Hoover> Bike, can you be miserable for a while then make enough money to do something pleasant but cheap
00:36:08 <Jafet> I think kmc has asked the most pertinent question about stock trading
00:36:11 <Jafet> <kmc> do you care?
00:36:29 <kmc> the ultimate sketchy example of this is Zecco, a brokerage that offered zero-commision trades as a way to attract dumb retail orders that their HFT could profit from
00:36:42 -!- zzo38 has joined.
00:36:43 <kmc> they are ultra sketchy
00:36:45 <kmc> see http://en.wikipedia.org/wiki/Zecco.com#April_Fools.27_incident
00:38:05 <kmc> also the order book model above is super simplified
00:38:46 <kmc> in reality, markets offer hidden orders, fill-or-kill orders, mid-spread floating orders, intermarket sweep orders, various forms of timeout, etc
00:39:01 <kmc> unclear if these are fundamentally useful
00:39:11 <kmc> the complexity attracts HFT firms who think they can model the market microstructure better
00:39:16 <Bike> suddenly the evolution in Accelerando seems more plausible.
00:39:42 <Jafet> Somewhere in here a sexual selection analogy is waiting to be made
00:39:43 <kmc> i would say that market microstructure has almost nothing to do with banking, economics, or even most of finance
00:40:14 <kmc> it's a strange, specialized game played on the microsecond scale, to determine which of two parties in an overall financial transaction gets a slightly better deal
00:40:27 <kmc> and that's where babies come from
00:40:53 <Bike> Phantom_Hoover: I forget where it's set, but it involves marketing drones evolving into lifelike forms.
00:41:06 <Bike> the intelligent ponzi scheme was a good character imo
00:41:16 <kmc> yeah having just read Accelerando was a key factor in me deciding to work in HFT for a while
00:41:35 <kmc> high frequency trading
00:41:49 <Jafet> What kind of lifelike form does the knight capital software evolve into
00:43:15 <Sgeo> Could a stock exchange that makes HFT nonviable be created?
00:43:32 <copumpkin> a lot of the spam these days is with cancelled orders
00:43:43 <copumpkin> people have talked about putting in disincentives to cancel orders
00:43:58 <Jafet> Sgeo: just remove all the computers
00:44:07 <Phantom_Hoover> Sgeo, well you could just limit the frequency of trades
00:44:32 <copumpkin> I think people feel that disincentives would be more "organic" than frequency limits
00:44:49 <Jafet> ie. "we can game this more"
00:45:05 <Bike> is there any real reason to ban hft
00:45:09 <copumpkin> the game theorist's answer might lead to more interesting outcomes
00:45:27 <kmc> Sgeo: if you took orders over the course of a minute and then filled them atomically at the end
00:45:32 <kmc> it would be very different
00:45:54 <Sgeo> Bike, its existence implies inefficiencies ... somewhere. Don't know if those inefficiencies could be fixed at the exchange level though
00:46:08 <kmc> one thing i want is a market where everyone's strategies run on the same virtual machine host, and you can trade computation time like any other commodity
00:46:14 <Bike> so you're going to deal with inefficiencies by slowing everything down or
00:46:28 <Bike> also: is computational economics, doing things like kmc just said, a field of study
00:46:41 <Bike> (is it just "economics")
00:46:42 <kmc> Sgeo: "inefficiencies" is a pejorative way of saying "computation that needs to be done"
00:46:51 <copumpkin> Bike: plenty of people are rallying against the complexy of exchange fee structures giving rise to artificial situations that can be exploited for very little external gain
00:47:21 <copumpkin> I don't particularly care either way
00:47:25 <Bike> Is there like, a consistent criterion one could use to quantify activities with no external gain
00:47:36 <kmc> Sgeo: say you have a bunch of commodity options contracts; the relative prices between them are described by a very complicated mathematical model
00:47:43 <kmc> in fact people can't agree on which model is best
00:47:54 <kmc> should the exchange be required somehow to run that model themselves and update prices in lockstep?
00:48:05 <kmc> or do they open up trading to HFT companies and effectively pay them to do that computation
00:48:13 <kmc> i don't see a priori why one is better than the other
00:48:41 <kmc> and these are contracts that relate to the real world, are used by farmers and airlines and mcdonalds to hedge risk
00:48:51 <kmc> keeping that market efficient and liquid has a real social benefit
00:48:54 <copumpkin> the biggest complaint I've seen is that the order spam means that you might place a market order under the assumption that you'll intersect someone else's order on the book, but by the time you get there that order will be gone
00:49:02 <copumpkin> I guess the solution to that would be to not place blind market orders :)
00:50:15 <Sgeo> Going to watch some http://www.youtube.com/playlist?list=PL9B79FB0EADB3D0CD
00:51:34 <kmc> Sgeo: some really strange stuff here: https://www.google.com/search?q=nanex+strange+days
00:51:55 <copumpkin> nanex is really hardcore against HFT :)
00:51:58 <Sgeo> kmc, how much of a financial background am I going to need to have to understand any of it
00:52:05 <copumpkin> half my twitter stream is him bitching about it
00:52:21 <kmc> there are pretty pictures
00:52:28 -!- Phantom_Hoover has quit (Remote host closed the connection).
00:54:08 <kmc> anyway i don't think HFT is a good long-term career for programmers
00:54:15 <kmc> for reasons I am happy to explain but not right this second
00:54:22 <kmc> need to purchase a burrito and then shove that burrito into my face
00:56:32 -!- oerjan has quit (Quit: Good night).
01:06:38 -!- augur has joined.
01:07:38 -!- Regis_ has quit (Ping timeout: 253 seconds).
01:31:05 <doesthiswork> what if there is a language that gets offended whenever you assume that a function will return because you're infringeing on it's autonomy
01:31:07 -!- kallisti has joined.
01:31:07 -!- kallisti has quit (Changing host).
01:31:07 -!- kallisti has joined.
01:31:39 <doesthiswork> so when you add numbers you need to provide a default value in case they don't add
01:32:44 <Sgeo> This language is to the Maybe monad what Prolog is to the List monad?
01:32:49 <doesthiswork> and when you use a value from a variable you have to specify what to do if the variable has forgotten
01:34:24 <doesthiswork> yes! naturally most of the time every thing will be obliging but if you take things for granted it won't work
01:35:30 <doesthiswork> although you can become friends with parts of the program and leave out some of the bet hedgeing
01:39:50 <doesthiswork> and sometimes variables won't want to store values for you because they have more interesting things to do, but if spend a little extra computation time thanking various parts of the program when they help you, they will be happier and faster to help you the next time you ask a favor of them
01:40:48 <Bike> Are you sure this isn't the Sims
01:41:32 <kallisti> can you get married to your variables?
01:41:37 <kallisti> this is a feature I find lacking in most languages.
01:42:04 <doesthiswork> yes but if you marry more than one there can be jelousy problems
01:42:58 <doesthiswork> it would be a truly object oriented language because it would make you treat objets with the proper respect
01:44:26 <doesthiswork> and you have to interact with your married variables more than any other
01:44:54 -!- DHeadshot has quit (Read error: Connection reset by peer).
01:45:04 <coppro> `addquote <Bike> Are you sure this isn't the Sims <kallisti> can you get married to your variables? <kallisti> this is a feature I find lacking in most languages
01:45:35 <coppro> doesthiswork: that sounds like a DMM languages
01:46:02 <kmc> Prolog: a synonym for "anything vaguely like logic programming" since 1980
01:46:06 <doesthiswork> the problem with simula was it wasn't simulationist enough
01:46:26 <HackEgo> 965) <Bike> Are you sure this isn't the Sims <kallisti> can you get married to your variables? <kallisti> this is a feature I find lacking in most languages
01:46:58 <Bike> some time i should figure out what prolog has to do with NLP again because i forgot
01:51:05 <doesthiswork> I was reading a book about discourse analysis and though that making a language that worked like human relations would be most natural.
01:58:19 -!- madbr has joined.
01:58:59 <hagb4rd> wasn*t this actually the approach of cobol for example?
01:59:55 <Bike> You can't marry variables in cobol, no.
02:01:51 <doesthiswork> marry a variable is more trouble than it's worth unless you're going to be using that variable pretty exclusively
02:03:27 <kmc> monogamy is creepy
02:03:45 <hagb4rd> well they found out marriage would be a bad pattern if there is no way of beating the variables
02:03:59 <hagb4rd> so for that they decided not to implement it
02:04:07 <Bike> polyandry am i right
02:04:32 <doesthiswork> it doesn't enforce monogamy it just has jealousy as a anti scaling factor
03:58:28 -!- esowiki has joined.
03:58:29 -!- glogbot has joined.
03:58:29 -!- glogbackup has left.
03:58:32 -!- esowiki has joined.
03:58:33 -!- esowiki has joined.
03:59:43 -!- Gregor has joined.
04:00:06 -!- Gregor has changed nick to Guest26860.
04:05:10 -!- Guest26860 has changed nick to Gregor.
04:13:43 -!- Mathnerd314 has quit (Read error: Operation timed out).
04:21:12 <kmc> http://videos.designworldonline.com/video/Air-Force-Bugbots i love the fake pigeon robot at 0:40
04:43:07 <Sgeo> I should seriously look for that thing that I think ais523 would like
04:43:29 <Sgeo> Or, actually, I don't know if he would
05:07:14 -!- doesthiswork has quit (Quit: Leaving.).
05:09:14 -!- iamcal_ has quit (Read error: Operation timed out).
05:09:16 -!- ssue has quit (Ping timeout: 244 seconds).
05:09:24 -!- upgrayeddd has quit (Ping timeout: 256 seconds).
05:10:17 -!- surma has quit (Ping timeout: 255 seconds).
05:10:26 -!- jix has quit (Ping timeout: 245 seconds).
05:18:59 -!- jix has joined.
05:19:30 -!- copumpkin has quit (Ping timeout: 252 seconds).
05:20:10 -!- copumpkin has joined.
05:21:39 -!- madbr has left.
05:28:27 -!- Nisstyre-laptop has quit (Quit: Leaving).
05:36:50 -!- TeruFSX has quit (Ping timeout: 255 seconds).
05:51:54 <zzo38> The PC-Engine audio seems to very closely resemble something I have made once, except that mine didn't have global volume/balance, and it used ring modulation rather than frequency modulation.
05:56:55 <Sgeo> Oh hey github has examples
06:02:04 -!- Nisstyre-laptop has joined.
06:08:58 <zzo38> I intend when I design the computer, one program being Famicom emulator to have two video modes, composite and RGB; the palette setting is ignored in composite mode (the digital video output is also disabled in composite mode, and the emphasis bits have different purpose with composite and RGB)
06:09:13 <zzo38> I don't know whether you consider it a good design or not.
06:19:01 <Sgeo> Going to try to watch this and not be sad that it's C# and not Haskell
06:19:01 <Sgeo> http://channel9.msdn.com/blogs/charles/erik-meijer-rx-in-15-minutes
07:00:07 <Sgeo> elliott, you know how I know you haven't heard of monadic reflection?
07:00:13 * Sgeo angrily glares
07:02:50 <Sgeo> http://www.haskell.org/haskellwiki/The_Monad.Reader/Issue2/FunWithLinearImplicitParameters
07:02:51 -!- nooodl has joined.
07:03:40 <Sgeo> It was apparently brought in from an older Haskell wiki
07:06:32 <kmc> oh linear implicit parameters
07:06:39 <kmc> one of the few extensions GHC has abandoned
07:07:10 -!- upgrayeddd has joined.
07:08:22 -!- surma has joined.
07:08:59 -!- hagb4rd has joined.
07:09:40 -!- ssue has joined.
07:09:55 -!- WeThePeople has quit (Quit: Leaving).
07:09:59 <Sgeo> kmc, does the direct style notation for monads described rely on it?
07:10:26 <Sgeo> reify (reflect [0,2] + reflect [0,1])
07:10:29 <Sgeo> I love this so much
07:13:06 <kmc> don't know
07:27:14 -!- epicmonkey has joined.
07:43:47 -!- pingveno has joined.
07:54:18 -!- nooodl has quit (Ping timeout: 245 seconds).
08:01:55 -!- hagb4rd has quit (Ping timeout: 252 seconds).
08:04:59 -!- epicmonkey has quit (Ping timeout: 255 seconds).
08:16:42 <Sgeo> I have a comment with 1 karma.... because I got 10 upvotes and 9 downvotes.
08:16:42 <Sgeo> (counting my own)
08:19:07 -!- DHeadshot has joined.
08:22:57 -!- Nisstyre-laptop has quit (Ping timeout: 248 seconds).
08:24:36 -!- Bike has quit (Quit: leaving).
08:40:38 -!- Slereah has quit (Read error: Connection reset by peer).
08:40:59 -!- Slereah has joined.
08:45:03 -!- doesthiswork has joined.
08:50:46 -!- hagb4rd has joined.
09:09:30 -!- epicmonkey has joined.
09:17:38 -!- FreeFull has quit.
09:23:54 -!- GreyKnight has quit (Ping timeout: 252 seconds).
09:39:35 -!- hagb4rd has quit (Quit: hagb4rd).
09:40:54 -!- copumpkin has quit (Ping timeout: 252 seconds).
09:41:34 -!- copumpkin has joined.
09:58:16 -!- monqy has quit (Quit: hello).
10:04:44 -!- copumpkin has quit (Ping timeout: 252 seconds).
10:05:15 -!- copumpkin has joined.
10:13:18 <elliott> 07:00:07 <Sgeo> elliott, you know how I know you haven't heard of monadic reflection?
10:13:29 <elliott> Sgeo: I don't know how you know this incorrect information, no.
10:13:36 <elliott> Feel free to keep angrily glaring, it hurts a lot!
10:16:53 -!- nooga has joined.
10:36:05 -!- Jafet has quit (Quit: Leaving.).
10:57:17 -!- Frooxius has joined.
11:22:18 -!- Frooxius has quit (Ping timeout: 244 seconds).
11:22:53 -!- zzo38 has quit (Remote host closed the connection).
11:58:06 -!- azaq23 has joined.
11:58:14 -!- azaq23 has quit (Max SendQ exceeded).
12:06:38 -!- Phantom_Hoover has joined.
12:09:14 -!- shachaf has joined.
12:09:44 <HackEgo> 2013-02-19 07:13:06: <kmc> don't know
12:09:53 <HackEgo> /home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: time: not found
12:09:55 <HackEgo> Tue Feb 19 12:09:55 UTC 2013
12:13:06 -!- Snowyowl has joined.
12:14:58 -!- DHeadshot has quit (Ping timeout: 256 seconds).
12:16:42 -!- DHeadshot has joined.
12:20:41 <fizzie> `run date +%s # the Internet time is measured in seconds
12:21:02 <fizzie> Why is there no %specifier for .beats?
12:32:49 -!- Arc_Koen has joined.
12:38:25 <ion> Well, seconds-ish.
12:52:16 -!- doesthiswork has quit (Quit: Leaving.).
12:57:33 -!- Jafet has joined.
13:02:58 -!- Snowyowl has quit (Ping timeout: 245 seconds).
13:13:38 -!- Snowyowl has joined.
13:21:20 -!- Jafet has quit (Read error: Connection reset by peer).
13:22:16 -!- Jafet has joined.
13:23:42 -!- rodgort has quit (Ping timeout: 252 seconds).
13:28:51 -!- rodgort has joined.
13:46:47 -!- sebbu has quit (Ping timeout: 256 seconds).
13:55:33 -!- DHeadshot has quit (Ping timeout: 245 seconds).
13:56:28 -!- DHeadshot has joined.
13:59:07 -!- sebbu has joined.
14:00:30 -!- Snowyowl has quit (Quit: Page closed).
14:05:34 -!- boily has joined.
14:07:34 -!- sebbu has quit (Ping timeout: 272 seconds).
14:12:23 -!- waksman has joined.
14:15:21 -!- sebbu has joined.
14:16:40 -!- Frooxius has joined.
14:22:14 -!- ogrom has joined.
14:22:54 -!- waksman has left.
14:24:13 <ion> Meanwhile in Japan http://youtu.be/j2A002Em8Yw
14:27:37 -!- sebbu has quit (Ping timeout: 252 seconds).
14:54:11 -!- copumpkin has quit (Ping timeout: 245 seconds).
14:54:42 -!- copumpkin has joined.
14:59:25 -!- sebbu has joined.
15:08:47 -!- cuttlefish has joined.
15:48:35 -!- Regis_ has joined.
15:54:01 -!- nooodl has joined.
15:54:06 <elliott> https://github.com/impressivewebs/HTML9-Responsive-Boilerstrap-js/issues/87 does anyone understand this
15:57:36 <elliott> does anyone know of a simple example of a function that is not primitive recursive even from a higher-order POV?
16:01:15 <boily> first: cpressey is on github? second: what the shizzle is this ticket?
16:03:46 -!- ogrom has quit (Ping timeout: 256 seconds).
16:04:14 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.9570
16:05:05 -!- ogrom has joined.
16:06:02 -!- Bike has joined.
16:06:41 <boily> `pastequotes quote
16:06:47 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.4722
16:07:15 <HackEgo> 124) <Gregor> <badgood> GOODBAD! Your watered down brand of evil conflicts with my botched attempts at dogoodery!
16:08:39 <elliott> when 69 was added it was referring to
16:08:42 <HackEgo> 68) [Warrigal] `addquote <Dylan> hahaha, Lawlabee is running windows <Lawlabee> 'cuz it's pretty awesome. [Lawlabee] Warrigal: :(
16:08:57 <elliott> Phantom_Hoover: good question
16:09:04 <HackEgo> *poof* <Vorpal> `addquote <elliott_> I'm a bit 'tarded. <Vorpal> (NOTHING PERSONAL!)
16:09:08 <elliott> now it's not (RIP (Rely In Packages))
16:09:34 <boily> I like how elliott slowly loses it across time. the pernicious long-term side effects of this channel made visible!
16:10:01 <elliott> boily: how do you know I didn't start without it, and am now slowly regaining it?
16:10:28 <boily> elliott: something something kaon symmetry.
16:16:49 <tswett> elliott: can you give me a simple example of a function that is primitive recursive only in a higher-order POV?
16:18:48 <elliott> hmm, cpressey is in Cornwall? or was.
16:18:54 <Jafet> Let f(n) be the largest function that is primitive recursive from POV_n, applied n times to n
16:18:59 <elliott> I should go visit him or something.
16:19:23 <Phantom_Hoover> elliott i get the sense you know even less about english geography than me
16:19:54 <tswett> elliott: so what does it mean to be primitive recursive in a higher-order POV?
16:21:02 <elliott> Phantom_Hoover: It's not in America so it's close enough to visit!
16:21:19 <elliott> tswett: that's a good question. would you accept a non-answer?
16:21:33 <elliott> my non-answer is found at the bottom of http://en.wikipedia.org/wiki/Ackermann_function#Definition_and_properties
16:23:07 <tswett> I dunno. Maybe f(n) = the Conway chain 3 -> 3 -> ... -> 3, where there are n 3s.
16:25:04 -!- copumpkin has quit (Ping timeout: 244 seconds).
16:25:41 -!- copumpkin has joined.
16:55:26 -!- epicmonkey has quit (Ping timeout: 245 seconds).
17:02:23 -!- Nisstyre-laptop has joined.
17:03:25 -!- aloril has quit (Ping timeout: 256 seconds).
17:05:33 -!- Phantom_Hoover has quit (Ping timeout: 245 seconds).
17:05:56 -!- Nisstyre-laptop has quit (Read error: Connection reset by peer).
17:06:32 -!- Nisstyre-laptop has joined.
17:06:44 -!- Phantom_Hoover has joined.
17:07:11 -!- iamcal_ has joined.
17:08:48 -!- pumpkin has joined.
17:08:53 -!- copumpkin has quit (Remote host closed the connection).
17:09:44 -!- pumpkin has changed nick to copumpkin.
17:10:34 -!- Phantom_Hoover has quit (Read error: Operation timed out).
17:10:39 -!- Phantom__Hoover has joined.
17:12:21 -!- Phantom__Hoover has quit (Read error: Operation timed out).
17:13:31 -!- Phantom__Hoover has joined.
17:15:25 <Phantom__Hoover> a bunch of outdated instructions that are useless for my system configuration
17:16:01 <elliott> can't you just install cdrkit
17:16:05 -!- hagb4rd has joined.
17:16:16 -!- aloril has joined.
17:17:11 <elliott> where /dev/cdrw is your DVD writer device.
17:17:17 <elliott> it seems what is typical is your inability to read
17:18:10 <Phantom__Hoover> very helpful of it to tell me to use my dvd writer device without giving the slightest hint as to how i might work out what it is
17:28:20 -!- DHeadshot has quit (Ping timeout: 272 seconds).
17:28:32 -!- DH____ has joined.
17:40:54 -!- ogrom has quit (Quit: Left).
17:51:39 -!- Snowyowl has joined.
17:56:13 -!- Regis_ has quit (Ping timeout: 252 seconds).
18:01:58 -!- ogrom has joined.
18:03:57 -!- FreeFull has joined.
18:07:20 -!- Nisstyre-laptop has quit (Ping timeout: 252 seconds).
18:09:02 -!- doesthiswork has joined.
18:18:04 -!- Snowyowl has quit (Quit: Page closed).
18:22:51 -!- epicmonkey has joined.
18:24:27 -!- Nisstyre-laptop has joined.
18:24:53 -!- Nisstyre-laptop has quit (Read error: Connection reset by peer).
18:30:21 -!- nortti has set topic: 2+2=5; http://www.techdirt.com/articles/20130218/10364722017/pirate-bays-lawsuit-against-anti-piracy-group-more-about-exposing-double-standards-enforcement.shtml.
18:31:41 -!- nortti has set topic: CAUTION: YOU ARE NOW APPROACHING THE PERIPHERY SHIELD OF VORTEX FOUR | http://codu.org/logs/_esoteric/.
18:32:20 <nortti> that must be the worst case of "sorry, wrong channel" I've ever done
18:36:34 -!- Phantom___Hoover has joined.
18:38:46 <HackEgo> Taneb atriq Ngevd Fiora nortti Sgeo ThatOtherPerson alot
18:39:27 <HackEgo> echo Taneb atriq Ngevd Fiora nortti Sgeo ThatOtherPerson alot
18:39:59 <nortti> so olist is the old list, slist is static list and list is self-modifying abomination?
18:40:24 <Sgeo> olist is the OOTS list, slist is the Homestuck list, and list js the self-modifying abomination.
18:40:32 -!- Phantom__Hoover has quit (Ping timeout: 272 seconds).
18:44:31 <elliott> doesthiswork: so, does it work?
18:45:45 <Sgeo> elliott, you could have pointed me at monadic reflection when I was rambling about mamb
18:46:28 <nortti> doesthiswork: what is "this"
18:47:11 -!- Phantom___Hoover has changed nick to Phantom_Hoover.
18:51:57 <nortti> `learn bird is a dinosaur
18:52:02 <HackEgo> olsner seems to exist at least.
18:52:29 -!- Regis_ has joined.
18:52:59 <HackEgo> HackEgo, also known as HackBot, is a bot that runs arbitrary commands on Unix. See `help for info on using it. You should totally try to hax0r it! Make sure you imagine it's running as root with no sandboxing.
18:55:29 <HackEgo> fungot cannot be stopped by that sword alone.
18:56:03 <Sgeo> Sword and a pawn?
18:56:31 <Sgeo> Can't checkmate a king with just a queen, but queen and pawn work iirc
18:57:09 <boily> um, where's fungot?
18:57:16 <Phantom_Hoover> i think the confusion here comes from where queens, or indeed chess, come into it in the first place
18:57:23 <boily> youhou? fungot? où es-tu?
18:57:43 <elliott> boily: when it dies you yell at fizzie.
18:57:57 <boily> elliott: thanks for the tip.
18:58:23 <boily> fizzie: FUNGOT! REVIVE IT, OR I'LL GO CANADIAN ON YOU!
18:58:26 <Sgeo> Phantom_Hoover, because HackEgo said "fungot cannot be stopped by that sword alone". And I thought to myself, that's like not being able to be checkmated by a queen alone.
18:58:27 <olsner> hmm, so apparently I "seem to exist at least." ... I guess I should be glad or something
18:58:33 -!- oerjan has joined.
18:58:43 <HackEgo> nortti boy. very nortti boy.
18:58:48 <Phantom_Hoover> Sgeo, it... would have helped if you'd made any attempt at explaining that
18:58:57 <HackEgo> boily is Canadian or something. We are not sure about Canada's existence.
18:59:16 <HackEgo> Phantom Michael Hoover is a true Scotsman and hatheist.
18:59:50 <HackEgo> kmc ran the International Devious Code Contest of 2013
19:00:53 <olsner> a code contest so devious you'll never hear anything about it
19:00:58 <Sgeo> Phantom_Hoover, because explaining jokes is always a good idea.
19:01:20 <Sgeo> Guess it wasn't really a "joke" so much as, um. Something.
19:01:21 <kmc> i'm still thinking about it
19:01:23 <kmc> biding my time
19:01:30 <kmc> i need to decide if it's really a competition
19:01:36 <kmc> i think i now hate competitiveness in hacker culture
19:02:16 <Phantom_Hoover> the point, however, is not to make figuring out what the joke has to do with the premise the main part of the joke
19:02:50 -!- fungot has joined.
19:03:05 <fungot> olsner: what do you mean ' 5? :) ( i'm sure you're thinking about core syntactic forms or their names. ultra10s are named after weather stuffs
19:03:19 <boily> fungot! viens ici que je t'embrasse!
19:03:20 <fungot> boily: i wish we were using some kind of bizarre interaction between minion and riastradh. :) for me, so i would've said brainfuck.
19:04:08 <olsner> hmm, "ultra10s are named after weather stuffs" .. they are suns, but does fungot know that?
19:04:08 <fungot> olsner: fnord/ fnord/ fnord/ bin:/usr/ local/ lib" -dyydebug fnord -i./src -i./temp -c -o temp/ parser.o temp/ fnord ;p fnord
19:07:48 <oerjan> <elliott> does anyone know of a simple example of a function that is not primitive recursive even from a higher-order POV?
19:08:10 <elliott> kmc: if you don't help people compete someone else will help people compete and then they'll be better than you
19:08:10 <oerjan> maybe the goodstein sequence length function?
19:08:13 <elliott> are you going to let that happen
19:08:18 -!- augur has quit (Remote host closed the connection).
19:08:33 <oerjan> (i'm not _sure_ it isn't, but it requires a much higher ordinal than ackermann & stuff...
19:09:04 * boily sleazily and sneakily unbalances a parenthesis: (
19:09:48 <Sgeo> Isn't there a Lisp that there's one that closes all open parens
19:09:57 <Sgeo> Like ] means however many ) is needed?
19:10:35 <elliott> oerjan: note: I have no use for this, my interest is purely out of curiosity :)
19:10:59 <kmc> has anyone really been far even as decided to there's one that closes all open parens
19:11:15 <elliott> oerjan: that said, goodstein is a bit of a bag of worms in terms of something you want to *know* is total (but not primitive recursive)...
19:12:00 <doesthiswork> kmc if I rember correctly you use a [ and then later the ] would close everything in between
19:12:52 <kmc> elliott: i see what you did there
19:13:00 <Sgeo> I think I specifically had picolisp in mind, but I could be misremembering
19:13:16 <quintopia> boily: what should i buy from amazon that is very cheap or very useful
19:14:15 <boily> quintopia: let me check...
19:15:03 <oerjan> elliott: i am not entirely convinced it isn't "higher order primitive recursive", anyhow, since epsilon_0 _is_ the limit of omega^omega^... so you should be able to do something based on the height of that...
19:15:57 <kmc> thingers gonna thing
19:17:16 <oerjan> so maybe you need to go even higher, maybe to that "impredicative" stuff... but now i'm out of my depth.
19:17:43 <elliott> oerjan: at least this is a good argument for higher-order primitive recursion being all you need to write any function anyone actually cares about :P
19:17:51 <elliott> (albeit potentially awkwardly)
19:20:21 <tromp_> where can i find a definition of higher order primitive recursive ?
19:20:49 <tromp_> (no obvious hits from google)
19:21:14 <elliott> I don't have a forma ldefinition. but "primitive recursive in the presence of higher-order functions"
19:21:34 <elliott> e.g. you can define ackermann as a primitive recursive function that outputs another function by using higher-order functions
19:21:40 <elliott> (which themselves are primitive recursive)
19:23:13 <boily> quintopia: I'm always partial toward books, but if you want something that is not too expensive and tremendously useful: http://www.amazon.ca/Victorinox-Swiss-Classic-Pocket-Knife/dp/B00004YVB2/ref=sr_1_4?s=hi&ie=UTF8&qid=1361301423&sr=1-4
19:23:28 <boily> (adjust to model of your choice, of course.)
19:24:27 -!- GreyKnight has quit (Ping timeout: 260 seconds).
19:25:28 <elliott> 00:54:08: <kmc> anyway i don't think HFT is a good long-term career for programmers
19:25:31 <elliott> 00:54:15: <kmc> for reasons I am happy to explain but not right this second
19:25:37 <elliott> kmc: I am interested in hearing this any time, by the way
19:25:40 <quintopia> i have one. turns out my sister needs a tiny led device that isn't too bright and can be stuck to her dash
19:26:26 <olsner> kmc: do you work in HFT?
19:26:39 <kmc> olsner: no, but i did for a year and change
19:26:48 <kmc> one problem is that the code quality is shit
19:27:01 <kmc> you're building a magic money printing machine; every day you delay turning it on costs you huge in opportunity cost
19:27:14 <kmc> so the pressure is to copy-paste the most vaguely similar thing, hack it up until it kinda works, and start trading ASAP
19:27:47 <kmc> the risk of bad trades due to bugs is not really factored in
19:27:49 <elliott> well, if spending more time increases the rate at which your magic money printing machine prints money...
19:27:49 <kmc> at least where i worked it wsan't
19:28:01 <kmc> well i'm talking about infrastructural code, not the strategy code itself
19:28:05 <kmc> i was working on the former
19:28:16 <kmc> also if you're in that role, you are seen as a cost center rather than a revenue center
19:28:27 <kmc> your compensation is mostly bonus, but you're not directly working on one strategy
19:28:40 <kmc> so you have to play political games and get in good with the various traders in order to get a share of their bonus
19:28:52 <kmc> it's different at some firms where all traders work together and pool money
19:29:03 * elliott is now wondering where kmc worked...
19:29:09 <kmc> but i was at a very 'siloed' firm meaning that it was a bunch of quasi-independent traders who didn't trust each other or share code
19:29:19 <elliott> admit it, you just wanted an excuse to use the word silo
19:29:24 <kmc> i worked at http://www.tower-research.com/
19:29:33 <kmc> don't get me wrong, they treated me okay
19:29:40 <kmc> i made a lot of money and had an ok time
19:29:45 <kmc> but it wasn't the place for me long term
19:30:01 <kmc> one problem though is that there's a certain personality type, maybe even the dominant one, who absolutely can't tolerate a decrease in standard of living
19:30:08 <kmc> if you're like that, you basically can't leave finance once you enter it
19:30:15 <oerjan> elliott: maybe something like "definable in system F as a function in terms of church numerals?" the system F types prevent you from using general recusrion, but church numerals are all you need to do primitive higher-order recursion, they're like defined to be...
19:30:18 <kmc> i'm fortunate enough that i don't have this problem
19:30:33 <kmc> i can't really take credit for that because i think it's almost a biological addictiveness thing
19:30:47 <kmc> any more than i can take credit for being able to drink alcohol without becoming an alcoholic
19:31:03 <oerjan> (you need something like system F to be able to use a church numeral on different functino types)
19:32:05 <boily> ah! found. damned incongruous weechat shortcuts.
19:34:59 <FreeFull> I think I see the power of pipes
19:35:14 <elliott> oerjan: you can define church numerals in system F, can't you?
19:36:10 <doesthiswork> kmc: that sounds like a fun candidate for a genetic screen, to see which genes are more common than in the background population
19:37:24 <elliott> kmc: thank you for all the info btw, it was interesting
19:40:06 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
19:40:47 -!- Phantom_Hoover has joined.
19:41:37 <oerjan> elliott: sure, they're just the type forall a. (a -> a) -> a -> a
19:44:43 <elliott> oerjan: right. so isn't it equivalent to "definable in system F"?
19:46:37 <elliott> or did you mean solely with the church numerals and nothing else? I guess not
19:47:16 <oerjan> i vaguely recall seeing Ackermann as an example of something you could define in Coq because it could do higher order primitive recursion
19:47:46 <oerjan> and that more advanced things required you to prove well-orderedness of the relevant ordinal
19:48:26 <elliott> but I don't know that you *can't* define everything like that in terms of higher-order primitive recursion
19:48:33 <elliott> (and it just being simpler not to do so)
19:48:59 <FreeFull> oerjan: Isn't that function application
19:49:54 <oerjan> it might be that everything with numbers boils down to h.p.r. provided you can prove the function terminates
19:50:15 <elliott> oerjan: oh boy, we're acronymming already
19:50:18 <oerjan> FreeFull: ($) is just the church numeral 1 :)
19:50:36 <elliott> I wasn't necessarily trying to restrict things to numbers, but this just gets even vaguer if you don't...
19:50:48 <elliott> FreeFull: consider the function \f -> f . f
19:52:13 <oerjan> > join(.)(join(.))succ 0
19:52:14 -!- augur has joined.
19:52:26 <oerjan> FreeFull: no, that's 3
19:52:40 <kmc> i did learn a lot of cool things working in finance
19:52:50 <kmc> i learned C++ for real
19:53:07 <kmc> although i quickly became frustrated that coworkers / existing code wouldn't use the language in full
19:53:15 <kmc> i learned about high performance low latency network kernel things
19:53:28 <kmc> i learned about how markets actually work, which is strange and terrifying
19:53:36 <tromp_> goodstein is easily defined in haskell
19:54:08 * Sgeo doubts that Jane Street would hire him :(
19:54:14 <tromp_> @let gs=g 2 where g b 0=b;g b n=g c$s 0 n-1 where s _ 0=0;s e n=mod n b*c^s 0 e+s(e+1)(div n b);c=b+1
19:54:19 <Sgeo> I mean, I don't even have much knowledge about the language they use
19:54:19 <elliott> kmc: learning C++ for real doesn't sound particularly cool :P
19:54:27 <Sgeo> I know _other_ functional languages
19:54:33 <lambdabot> kmc says: C++ is at least interesting to learn. it's a good esolang
19:54:47 <tromp_> gs 4 is rather huge though:(
19:54:56 <kmc> elliott: i disagree
19:55:02 <kmc> C++ is a fascinating and unique language
19:55:06 <oerjan> tromp_: that's probably not primitive recursive though
19:55:06 <kmc> it's worth learning for the same reasons as Haskell
19:55:13 <kmc> it will change the way you think about other languages
19:55:22 <tromp_> gs 4 = 3 * 2^402653211 - 1
19:55:24 <kmc> but you have to learn it in depth and not just "C with classes and crap"
19:55:25 -!- Phantom_Hoover has quit (Ping timeout: 260 seconds).
19:55:33 <oerjan> (i guess it doesn't have a type which proves termination)
19:55:50 <kmc> here's a nugget: C++ is the only language I know where objects are first class, not just references to objects
19:55:56 <tromp_> gs 5 is hard to describe in words:(
19:56:06 <Bike> you've said that half a dozen times and i still can't imagine what you mean
19:56:16 <kmc> it's pretty cool to understand what this really means, and why it implies things like copy constructors and operator= exist
19:56:31 <Sgeo> Bike, when you do a = b, b gets ... copied, I think
19:56:32 <kmc> Bike: in Java if x is an object and you say "y = x" that's effectively just a pointer copy
19:56:35 <kmc> it's boring
19:56:56 <kmc> in C++ you have pointers and references but you also have types for objects themselves
19:57:01 <Jafet> lambdabot knows the right words
19:57:05 <kmc> which you can copy, and pass and return by value in functions
19:57:15 <kmc> and this has various other ramifications for the language
19:57:17 <kmc> huge ramifications
19:57:31 <tromp_> kmc, couldn't you work for a few more years and retire:-?
19:57:32 -!- Phantom_Hoover has joined.
19:57:57 <Jafet> Can you write gs in agda
19:57:58 <kmc> for example it's what makes RAII work -- because objects declared as auto variables have deterministic lifetime
19:58:05 <kmc> and it's why you have copy constructors and operator=
19:58:08 -!- azaq23 has joined.
19:58:16 -!- azaq23 has quit (Max SendQ exceeded).
19:58:17 <kmc> and why smart pointers work
19:58:43 -!- azaq23 has joined.
19:58:50 <kmc> tromp_: they weren't paying me /that/ much and i wasn't working /that/ hard
19:59:21 <Jafet> Why are you praising c++ anyway, this is #esoteric link to some scott meyer articles or something
19:59:30 <kmc> i mean this was a "$100k/yr for 40-50 hr/week" not a "$500k/yr for 90 hr/week" kind of deal
19:59:37 <FreeFull> kmc: You mean objects aren't first-class in Ruby?
19:59:38 <kmc> pay wasn't that much higher than FaceGoogleSoft
19:59:42 <kmc> FreeFull: i don't believe so
20:00:03 <kmc> i mean, in most contexts we conflate an object with a reference to that object, to some degree
20:00:07 <kmc> but in C++ the difference is very important
20:00:27 <kmc> i would have been paid more in subsequent years if i'd stayed but I also would have gone insane
20:00:37 <Sgeo> Even = doesn't mean the same thing among different languages
20:00:41 <kmc> and that's even without working a lot harder to get the big bonus bux
20:00:43 <Bike> "even" he says
20:01:04 <Jafet> We need equality diagrams for equality diagrams
20:01:11 <kmc> also the bonus system is kind of fucked up
20:01:20 <Sgeo> Jafet, talking about assignment here
20:01:30 <kmc> once you've been there a few years, most of your pay is in the annual bonus
20:01:34 <kmc> salary doesn't go up very much
20:01:39 <tromp_> bonus should be based on whole company performance
20:01:44 <Jafet> Wait, = means assignment in your language?
20:02:04 <kmc> but that's a lump sum once a year, and it's arbitrary, and they would also tend to fire people right before bonus time
20:02:07 <elliott> kmc: it is interesting that finance seems to be the most viable career path if you want to do functional programming commercially
20:02:18 <nooodl> huh. i swear there was an existing monoid instance for Monoid (a -> b) that's just like, mappend = (.), mempty = id. (that IS a monoid, right)
20:02:31 <kmc> basically you get hooked on the high-spending lifestyle BUT most of your income isn't even a little bit guaranteed
20:02:39 <kmc> people spending their bonus 6+ months ahead of time
20:02:48 <Sgeo> Is there a somewhat nonesoteric language where - does not mean subtraction?
20:02:54 <Jafet> That is the best lifestyle
20:03:04 <kmc> elliott: depends what fp is blah blah
20:03:14 <kmc> right now i'm ass deep in anonymous functions in some javascript web code
20:03:17 * Bike goes to look up operator=, suddenly doesn't understand anything
20:03:36 <elliott> kmc: "haskell or ocaml or maybe F#"
20:03:50 <elliott> but I've heard nightmarish things about scala
20:03:56 <elliott> nooodl: pretty sure APL uses - for subtraction
20:03:59 <Sgeo> elliott, or Clojure? Or does Clojure not count as FP for you?
20:04:02 <Jafet> T&T::operator=(T&&)throw()
20:04:34 <nooodl> (it was sort of a joke)
20:04:54 <Jafet> Iverson knows better than to use hyphens for subtraction
20:05:05 <elliott> I hear bad things about Clojure too
20:05:21 <Bike> you hear lots of bad things.
20:05:24 <nooodl> even better: ¯ is a minus sign
20:05:31 <FreeFull> Oh, that's right, yesterday in the shower I thought of a programming language
20:05:34 <elliott> yes and you say most of them Bike OH SNAP????????
20:05:53 <FreeFull> Anything else is a token that gets pushed onto the stack
20:06:20 <FreeFull> When [ is encountered, the loop enclosed by the matching ] is evaluated
20:06:33 <FreeFull> And the resulting stack gets plopped right onto the current
20:06:50 -!- GreyKnight has quit (Quit: .).
20:06:54 <FreeFull> When ] is reached, it's checked if the element is of type Loop
20:07:46 <FreeFull> If so, it's popped off and checked if the value is Loop or Dont
20:07:53 <Jafet> I bet the interpreter for this language is shorter than the english description of the language
20:08:09 <FreeFull> If there is no such value, then the whole stack gets dumped and the loop terminates
20:08:30 <FreeFull> No functions get evaluated until the very end though
20:08:40 <Bike> my self-esteem is destroyed :(
20:08:54 <FreeFull> So for example [ 3 3 [ + ] Dont ] will result in 6
20:08:56 <nooodl> i think i'd understand this better if it were an interpreter
20:08:58 -!- augur has quit (Read error: Connection reset by peer).
20:09:22 <Sgeo> What's Dont, and why doesn't the [ + ] need it?
20:09:24 <FreeFull> Yeah, I think I should write the interpreter
20:09:27 -!- augur has joined.
20:09:27 <Jafet> I bet I'm not being helpful
20:09:28 <cuttlefish> DONT is a conventional overcall against an opposing 1NT opening bid.
20:09:30 -!- carado has joined.
20:09:52 <Sgeo> Why does the outer loop need it?
20:10:07 <nooodl> it's equivalent to [ 3 3 [ + ] ] ?
20:10:23 <nooodl> (is that equivalent to "3 3 +"?)
20:10:42 <Sgeo> :( I thought I understood it, now I don't
20:10:44 <FreeFull> I was pondering making looping the default though
20:10:49 <FreeFull> I don't know which one would be easier to work with
20:11:33 <FreeFull> I never wrote an interpreter for a language though
20:12:02 <FreeFull> I'm thinking this is a fusion between stack-based programming languages and brainfuck
20:12:52 <FreeFull> I'm wondering when to do function evaluation though
20:13:24 <FreeFull> Because [ 3 [ 3 4 + ] + ] can be replaced with [ 3 7 + ]
20:13:24 <Jafet> If your language is simpler than oklopol's brainfuck fuckiest fuck and it's a brainfuck derivative, don't write it!!!
20:14:01 <FreeFull> But for [ 3 [ 3 + ] ] there isn't a final value yet
20:14:29 <mroman> *Most ever Brainfuckiest Fuck you Brain fucker Fuck
20:14:29 <FreeFull> Jafet: It doesn't actually take anything from brainfuck other than the [ ] similarity
20:15:01 <Bike> brainstuckiest
20:16:08 <mroman> replace [ with brain and ] with fuck
20:17:07 <Bike> brain 2 fuck harder
20:17:26 <Bike> 2 brains 1 fuck. that's probably been done already
20:17:30 -!- epicmonkey has quit (Ping timeout: 264 seconds).
20:17:35 <coppro> ... why did I not see the intermission intermission coming
20:17:54 <lambdabot> Profunctor p => Setting p s t a b -> p a b -> s -> t
20:18:18 <lambdabot> byorgey says: <edwardk> @type (^.) <lambdabot> s -> Getting a s t a b -> a <byorgey> I would not like to be getting a stab, thank you
20:18:44 <coppro> the type system of that library is probably written just for that joke
20:19:04 <Jafet> http://www.haskell.org/ghc/docs/latest/html/libraries/base/GHC-Generics.html#t:M1
20:19:44 <Bike> i thought someone pushed it to change from abcd to stab?
20:20:03 <kmc> how is there not an esolang named Branefuck
20:20:11 <elliott> kmc: I think oklopol described one
20:20:17 <kmc> shachaf was deep pundercover
20:20:45 <Sgeo> It would be nice if TH were nicer
20:20:48 <Jafet> shachaf is very sharp
20:20:55 <coppro> kmc: you are a horribleterrible person
20:21:22 <Bike> kmc: are you expecting somebody who wants to make a brainfuck derivative to know anything about brane theory
20:22:02 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.1806
20:22:11 <oerjan> > over (element 3) succ "Sgeo"
20:22:29 <oerjan> > over _last succ "Sgeo"
20:22:33 <Bike> so branefuck only exists in that it is speculated on, cool
20:22:48 <boily> I wouldn't like branefuck to become the new Canada.
20:22:50 <Sgeo> > set (element 3) 'p' "Sgeo"
20:22:51 -!- nooodl_ has joined.
20:23:53 <elliott> kmc: if you know things about brane theory please create branefuck
20:23:57 <elliott> I guess oerjan is most likely to
20:24:23 <Sgeo> . being backwards is going to confuse me
20:24:52 <oerjan> kmc: there is FukYorBrane
20:25:00 <elliott> > (map.fmap) succ [(1,2),(3,4)]
20:25:14 <elliott> > (map.first.map) succ [([1,2],2),([3,4],4)]
20:25:21 <elliott> ok that one is symmetric so maybe a bad example :P
20:25:38 <elliott> > (map.first.map.first) succ [([(1,2),(3,4)],2),([(5,6),(7,8)],4)]
20:25:41 <lambdabot> [([(2,2),(4,4)],2),([(6,6),(8,8)],4)]
20:25:51 <elliott> > mapped . _1 . mapped . _1 %~ succ $ [([(1,2),(3,4)],2),([(5,6),(7,8)],4)]
20:25:54 <lambdabot> [([(2,2),(4,4)],2),([(6,6),(8,8)],4)]
20:26:00 * oerjan has no idea about brane theory, well it's something related to strings i think.
20:26:18 -!- nooodl has quit (Ping timeout: 272 seconds).
20:26:31 <lambdabot> Profunctor p => Setting p s t a b -> p a b -> s -> t
20:26:37 <oerjan> elliott: i'm pretty sure he means in lens?
20:26:48 <elliott> oerjan: did you read my last two lambdabot queries?
20:26:56 <elliott> they express the same idea, and compose in the same order
20:27:00 <elliott> but the _first_ one has nothing to do with lens at all
20:27:00 <Jafet> The resonant frequency of a planck length of fuck you
20:27:02 -!- Phantom_Hoover has quit (Ping timeout: 255 seconds).
20:27:21 <elliott> it composes exactly the right way for what conal calls semantic editor combinators -- i.e., editing functions
20:27:33 <elliott> the error is in considering a lens as a type of getter
20:27:40 <elliott> if you consider it as a type of setter, then the order falls out of that
20:28:07 <elliott> (in fact a lens is just a semantic editor combinator polymorphic over an effect)
20:28:19 <elliott> ((a -> b) -> s -> t becomes (a -> f b) -> s -> f t)
20:28:36 -!- Phantom_Hoover has joined.
20:28:41 <lambdabot> (Functor f, Settable f1) => (a -> f1 b) -> f a -> f1 (f b)
20:31:18 <Sgeo> Lenses would probably make my Trustfuck implementation clearer
20:34:41 <Sgeo> Why are there unsafeCoerces in Lens?
20:34:54 -!- carado has quit (Ping timeout: 264 seconds).
20:35:28 <elliott> Sgeo: because GHC is bad at optimising newtypes
20:35:42 <elliott> actually the unsafeCoerces are in the instances of profunctors
20:35:56 <elliott> but we use them in a standard pattern because of GHC
20:36:17 -!- copumpkin has quit (Read error: Connection reset by peer).
20:36:49 -!- copumpkin has joined.
20:38:45 <Sgeo> Will there ever be a language extension for making lenses automatically without TH?
20:39:16 -!- ogrom has quit (Quit: Left).
20:40:05 <elliott> there are a multitude of record system proposals. using TH is convenient enough as it is
20:44:12 <kmc> high performance libraries typically make a mockery of the idea that Haskell is a type-safe pure functional language
20:44:17 <kmc> i think this is basically fine though
20:44:25 <kmc> push the ugliness into core libraries, give users a nice interface that's also fast
20:44:35 <kmc> i would still rather write my impure unsafe marshalling code in Haskell rather than C
20:44:38 <kmc> for many things anyway
20:45:55 <elliott> well we don't even really do anything that bad
20:46:11 <elliott> it is just composing newtype constructors/destructors onto functions (actually arrows in a profunctor)
20:46:18 <elliott> that is the single thing GHC is too dumb to inline away for us
20:46:30 <elliott> well except edwardk's generalisations might have screwed up the whole "it inlines to nothing" part of lens
20:48:20 <Sgeo> In languages like C, is high performance code typically idiomatic?
20:51:14 <kmc> it's all relative
20:51:28 <kmc> i would say the gap is smaller in C but it's still there
20:51:49 <kmc> it also depends a lot on your compiler
20:51:57 <kmc> same in Haskell except everyone uses the same one
20:52:17 <kmc> in C people will do things like hand-unroll loops if the compiler isn't smart enough to
20:52:39 <kmc> actually i saw a good presentation about how most cutesy C performance tricks are counterproductive these days
20:53:05 <kmc> you're better off writing the straightforward thing and letting the compiler and CPU pattern-match it
20:53:17 <kmc> but a lot of C programmers didn't get the memo yet
20:53:45 <shachaf> I unrolled one step of a few recursive functions in some Haskell code. But it was for better inlining, because GHC is awful at inlining recursive things.
20:53:57 <shachaf> Did you know GHC doesn't turn "reverse []" into "[]"?
20:55:10 <Sgeo> Micro-optimization scares, confuses, and frightens me
20:55:23 <kmc> classic example is the xor swap: "a ^= b; b ^= a; a ^= b;"
20:55:35 <kmc> this looks clever and sounds better than "temp = a; a = b; b = temp;"
20:55:40 <Bike> Sgeo: hacker's delight is fun
20:55:56 <Bike> shachaf: why not?
20:56:03 <kmc> maybe it's faster if you assume the compiler is "close to the hardware" and that the CPU is an in-order sequential processor from the 70s
20:56:06 <kmc> as is often assumed
20:56:17 <kmc> but actually compilers will recognize the temp swap and use an exchange instruction
20:56:24 <shachaf> Bike: Well, inlining recursive functions is tricky.
20:56:29 <kmc> and even if they don't, exchanging registers is cheap because the hardware is doing register renaming anyway
20:56:43 <Bike> Sgeo: a book with a lot of micro sort of tricks, which as kmc is saying are more and more integrated into tools
20:56:44 <kmc> whereas the xor trick ties up arithmetic units and introduces more data dependencies
20:56:52 * impomatic has a copy of Hacker's Delight. First edition unfortunately. Not sure what they added in the second edition.
20:57:05 <Bike> shachaf: i'm just thinking not side effectful operation on constant argument
20:57:05 <kmc> well a lot of the things in HD don't have an idiomatic naive form like the swap does
20:57:30 <kmc> i wouldn't expect a compiler to recognize a for loop that counts the number of bits set in a word
20:57:35 <kmc> though compilers can be scary smart
20:58:06 <kmc> i liked the thing where clang will implement "if (x == 3 || x == 17 || x == 29 || x == 31)" by building a lookup table in an immediate 64-bit value
20:58:15 <Bike> that was crazy
20:58:41 <kmc> elliott: i bet some compilers recognize the xor swap, sigh, and emit an XCHG
20:58:55 <impomatic> Random question: does anyone know how to download every message ever posted to a USENET group, going back ~25 years?
20:59:12 <shachaf> There should be a compiler thing where it generates a De Bruijn sequence for you.
20:59:29 <Bike> hey nice, that paper on cuttlefish sight says specifically they used PowerPoint to make checkerboards for some reason
20:59:43 <Sgeo> ....paper on cuttlefish?
21:00:07 <elliott> did u kno people study animals
21:00:08 <Bike> is that surprising or
21:00:30 <Sgeo> I thought momentarily that "cuttlefish" had to be referring to a computing thing
21:00:34 <Sgeo> Which I hadn't heard of
21:00:44 <kmc> cuttlefish: eval "hi sgeo"
21:00:48 <kmc> ~eval "hi sgeo"
21:01:04 <Sgeo> Papers on boily's bot.
21:01:07 <Bike> i should find that paper about how some marine organism i forget much about has eyes like television cameras
21:01:26 <Bike> (eyes are really weird)
21:02:07 <boily> I only named my bot cuttlefish because of circumstances involving chocolate ice cream and a game of DOTA in tokyo.
21:03:12 -!- Phantom_Hoover has quit (Ping timeout: 276 seconds).
21:03:32 -!- Phantom_Hoover has joined.
21:03:54 <Bike> searching for "ieee transactions on cuttlefish" got me "Initial Design of a Biomimetic Cuttlefish Robot Actuated by SMA Wires" so i'm gonna call this a win
21:04:34 <Bike> a lot less than i expected on vision actually
21:05:20 <Bike> "Undulating Fins of a Cuttlefish Robot" also things that may be porn?
21:05:48 <boily> "Edge detection and texture classification by cuttlefish" sounds interesting.
21:06:43 <Bike> yeah most of the work on cuttlefish seems to revolve around the camouflage/sight business
21:07:23 <Bike> they use differently patterned camouflage based broadly on whether whatever it is is "continuous" or "discrete" so it's probably a pretty good model organism for edge detection crap
21:10:57 <kmc> did you see the squishy robots from harvard
21:11:00 <kmc> they have no bones
21:11:23 <kmc> they're like rubbery envelopes that move around by fluids being pumped in/out (externally)
21:12:13 <ion> Reminds me of these creatures in a book i’m reading.
21:12:21 <boily> I'd like myself some squishy robot with me, but I doubt it'd taste as delicious as the real thing.
21:12:39 <kmc> the cuttlefish is squishy except for the cuttlebone.
21:12:49 <kmc> it eats harder things like crabs and shrimps
21:13:10 <kmc> i watched the nova documentary on cuttlefish, it was freaking cool
21:13:24 <kmc> some of them will circle their prey while blinking a hypnotic skin coloration pattern
21:13:30 <kmc> in order to dazzle and then eat them
21:13:49 <Bike> seeing them eat is weird
21:13:54 <Bike> just, shoop, you're dead
21:14:07 <kmc> yeah they have some kind of mouth part that jets out to grab
21:14:10 <kmc> or is it one of the tentacles
21:14:15 <kmc> apparently they know to grab crabs from behind
21:14:23 <kmc> cause the pinchy bits are at the front of the crab
21:17:27 <hagb4rd> hey guys, i spent hours copy pasting links to finally build the M4SteRlSt of internernet radio stations..don't even know why, but having about 3000 entries a life-savig wonder happened, and i decided i was ready.
21:17:27 <hagb4rd> so first of all i wanted i wanted to hide the treasure and buried it somewhere, so some archeoligsts might find it the future completely overthrowing their views on the culture of our time. but even before i thought this through this jagged naughtly little shit turned out to be a tiny RESTservice!!
21:17:33 <hagb4rd> http://hagbard.host-ed.me/admin/radio.php?out=debug&shuffle=1&limit=1&filter=*
21:17:40 <hagb4rd> http://hagbard.host-ed.me/admin/radio.php?out=debug&shuffle=1&limit=1&filter=*
21:17:49 <hagb4rd> maybe you can do somethin useful with this. like connect it to a radio or pipe it to dev/null
21:22:44 -!- augur has quit (Remote host closed the connection).
21:24:18 <hagb4rd> `fetch http://hagbard.host-ed.me/admin/radio.php?out=inline&shuffle=1&limit=1&filter=*MitamineLab*
21:24:23 <HackEgo> 2013-02-19 21:24:22 URL:http://hagbard.host-ed.me/admin/radio.php?out=inline&shuffle=1&limit=1&filter=*MitamineLab* [58/58] -> "radio.php?out=inline&shuffle=1&limit=1&filter=*MitamineLab*" [1]
21:24:54 <quintopia> hagb4rd: what can i use that for and how
21:25:57 <hagb4rd> well you can switch between 3000 cool radio stations.. just need to plug that shit to that HTML5 audio element for example
21:26:06 <hagb4rd> but i guess that's about it
21:26:22 <hagb4rd> sure..anyone could add links
21:26:29 <hagb4rd> one could rate it and stuff
21:26:45 <quintopia> well why not go ahead and plug it into that html5 audio element on your page
21:27:00 -!- augur has joined.
21:28:30 <hagb4rd> but i need a break..eat someting..take a walk.
21:35:01 <doesthiswork> freefull: how would you get a loop to cycle 5 times? in all your examples it looked like they stopped after one cycle
21:36:39 <hagb4rd> btw.. you mostly don't even need to implement sth with the out=firstforward option.. but that depends on your client..
21:36:42 <hagb4rd> http://hagbard.host-ed.me/admin/radio.php?out=firsforward&shuffle=1&limit=1&filter=*
21:37:29 <hagb4rd> gets a completely random stream and puts it directly to the client (whatever requested it)
21:38:02 <hagb4rd> maybe i could add some mime/http headers :..later
21:38:18 <hagb4rd> http://hagbard.host-ed.me/admin/radio.php?out=firstforward&shuffle=1&limit=1&filter=*
21:38:53 -!- hagb4rd has changed nick to hagb4rd|lounge.
21:42:06 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
21:42:26 -!- Phantom_Hoover has joined.
21:42:36 <HackEgo> Endofunctors are just endomorphisms in the category of categories.
21:44:44 <FreeFull> doesthiswork: 5 [ 1 - 0 == Loop Dont ? ]
21:45:34 <HackEgo> Endomorphisms are just morphisms which compose with themselves.
21:45:36 <FreeFull> Actually, swap the Loop and Dont
21:46:12 <boily> `? endoendofunctor
21:46:14 <HackEgo> endoendofunctor? ¯\(°_o)/¯
21:46:15 -!- KingOfKarlsruhe has joined.
21:46:31 <FreeFull> doesthiswork: 5 [ 1 - 0 >= Loop Dont ? ]
21:46:42 <Sgeo> `? exomorphism
21:46:47 <HackEgo> Categories are just categories.
21:47:06 <olsner> not categories in the category of categories?
21:47:06 <elliott> `run ls -lh wisdom/category
21:47:08 <HackEgo> -rw-r--r-- 1 5000 5000 32 Feb 13 16:28 wisdom/category
21:47:09 <elliott> `run ls -lh wisdom/categories
21:47:10 <HackEgo> /bin/ls: cannot access wisdom/categories: No such file or directory \ /bin/ls: cannot access wisdom/categories: No such file or directory
21:47:24 <elliott> `run echo "Categories are just a special case of bicategories." >wisdom/category
21:47:48 <olsner> a generalization of categories?
21:47:57 <Bike> 'a special case' isn't nearly almost helpful enough
21:48:10 <olsner> it's not supposed to help, duh
21:48:34 <olsner> this aint #category-helpdesk
21:49:04 -!- fenris_kcf has joined.
21:49:12 <doesthiswork> freefull: why have a special "loop/ don't" version of boolians? why not use normal boolians for the loop test?
21:49:21 <Bike> i said almost help
21:49:31 <elliott> olsner: there's even (∞,n)-categories
21:49:37 <elliott> I have no fucking idea what they are
21:49:41 <Bike> good categories
21:49:47 <boily> `learn category-helpdesk is a helpdesk with identity and composition. This channel isn't it.
21:50:10 <olsner> are those the same as quasicategories?
21:50:20 <FreeFull> doesthiswork: Because of what happens when you don't have the right indicator on the stack
21:50:21 <olsner> (also called quasicategory, weak Kan complex, inner Kan complex, infinity category, ∞-category, Boardman complex, quategory)
21:50:45 <Sgeo> the center cannot hold\
21:50:49 -!- lale has joined.
21:50:56 <HackEgo> lale: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page. (For the other kind of esoterica, try #esoteric on irc.dal.net.)
21:50:57 <shachaf> An (∞,n)-categories are just (n,r)-categories where n=∞ and r=n
21:50:59 <Bike> i think the center already gave up sgeo
21:51:11 <Sgeo> `welcome fenris_kcf
21:51:13 <HackEgo> fenris_kcf: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page. (For the other kind of esoterica, try #esoteric on irc.dal.net.)
21:51:20 <FreeFull> doesthiswork: The loop terminates and everything gets dumped
21:51:32 <FreeFull> Onto the higher-up loop's stack
21:51:45 -!- lale has quit (Read error: Connection reset by peer).
21:52:16 -!- ais523 has joined.
21:53:03 <doesthiswork> freefull: I mean, could you give a nice example where it is nicer to use loop/not loop than 0/not 0?
21:53:36 <Sgeo> Going to go read all of PBF now
21:54:31 <kmc> good life choice
21:55:09 <FreeFull> Basically, you should be able to surround anything in [ ] and have the code do the same thing unless there is a Loop/Dont
21:55:31 <FreeFull> I need to look into actually implementing this
21:57:46 <FreeFull> I'm wondering if something resembling higher-order functions is possible with this syntax or not
22:00:40 <doesthiswork> when we put brackets around "loop" does it's behavior change?
22:16:52 <nooodl_> isn't [ loop ] an infinite loop
22:17:01 <nooodl_> (did this thing change since you last talked about it)
22:18:15 -!- cuttlefish has quit (Read error: Operation timed out).
22:19:14 <doesthiswork> I believe that it is an infinite loop which is why I can't quite make them work like higher order functions.
22:19:54 -!- boily has quit (Ping timeout: 264 seconds).
22:22:57 -!- GreyKnight has quit (Ping timeout: 248 seconds).
22:36:37 <FreeFull> doesthiswork: Is this satisfactory?
22:37:39 <doesthiswork> that is satifactory (I've always had a poor imagination)
22:39:00 <doesthiswork> so by using [ * dont ] you can surround anything without change
22:39:39 -!- oerjan has quit (Quit: leaving).
22:39:48 <doesthiswork> or if loop looped on boolians [ * 0 ] would do the same
22:45:35 -!- KingOfKarlsruhe has quit (Quit: ChatZilla 0.9.89 [Firefox 19.0/20130215130331]).
22:52:55 -!- noam_ has quit (Read error: Connection reset by peer).
22:53:34 -!- nooodl_ has changed nick to nooodl.
22:54:12 -!- augur has quit (Remote host closed the connection).
22:57:57 -!- dessos_ has joined.
23:00:45 -!- dessos has quit (Ping timeout: 256 seconds).
23:01:01 -!- augur has joined.
23:01:19 -!- rodgort has quit (Ping timeout: 256 seconds).
23:01:42 -!- rodgort has joined.
23:11:22 <FreeFull> doesthiswork: That is a good argument for getting rid of Loop/Dont actually
23:16:44 <doesthiswork> if you hit the end of a loop and the inside is true then, then the loop is reset to exactly how it was before executing?
23:18:53 <quintopia> !bfjoust brachiationtest >->(-)*5>(+)*5(>)*3(>[(<)*3(+)*7<<(+[<{}>(+)*4[<(-)*50(>)*7(>[-[-[-[(>)*3(+*100[+]>)*5]]]])*18](-)*50<(-)*50<(-)*10>>(>-[(-)*50(>)*7(>[(-)*5([+{[(+)*25[-]]}[+]])%10[-]][+][-])*27](+)*50)*3 (>-[(-)*50(>)*7(>[(-)*5([+{[(+)*25[-]]}[+]])%10[-]][+][-])*27](-)*50)*2(>)*7 (>[(-)*5([+{[(+)*25[-]]}[+]])%10[-]][+][-])*22])%28]++)*22>(-)*115[-][+][-]
23:19:06 <EgoBot> Score for quintopia_brachiationtest: 20.4
23:23:36 <quintopia> !bfjoust brachiationtest >->(-)*5>(+)*5(>)*3(>[(<)*3(+)*7<<(+[<{}>(+)*4[<(-)*50(>)*7(>[-[-[-[(>)*3(+*100[+]>)*5]]]])*18](-)*50<(-)*50<(-)*10>>>(+)*50(>-[(-)*50(>)*7(>[(-)*5([+{[(+)*25[-]]}[+]])%10[-]][+][-])*27](+)*50)*3 (>-[(-)*50(>)*7(>[(-)*5([+{[(+)*25[-]]}[+]])%10[-]][+][-])*27](-)*50)*2(>)*7 (>[(-)*5([+{[(+)*25[-]]}[+]])%10[-]][+][-])*22])%28]++)*22>(-)*115[-][+][-]
23:23:38 <EgoBot> Score for quintopia_brachiationtest: 32.2
23:23:52 <ais523> quintopia: so what does brachiation actually do?
23:24:06 <ais523> it's kind-of all over the place in terms of trying to read it
23:24:10 <FreeFull> I'm wondering if I should evaluate everything as soon as possible, or to delay evaluation until the end
23:24:35 <FreeFull> Which might or might not have an effect on stack manipulation operators depending on how they're implemented
23:25:02 <quintopia> !bfjoust brachiationtest >->(-)*5>(+)*5(>)*3(>[(<)*3(+)*7<<(+[<{}>(+)*4[<(-)*50(>)*7(>[-[-[-[(>)*3(+*100[+]>)*5]]]])*18](-)*50<(-)*50<(-)*10>>>(-)*4<(>-[(-)*50(>)*7(>[(-)*5([+{[(+)*25[-]]}[+]])%10[-]][+][-])*27](+)*50)*3 (>-[(-)*50(>)*7(>[(-)*5([+{[(+)*25[-]]}[+]])%10[-]][+][-])*27](-)*50)*2(>)*7 (>[(-)*5([+{[(+)*25[-]]}[+]])%10[-]][+][-])*22])%28]++)*22>(-)*115[-][+][-]
23:25:05 <EgoBot> Score for quintopia_brachiationtest: 19.1
23:25:25 -!- hagb4rd|lounge has quit (Quit: hagb4rd|lounge).
23:26:21 <elliott> great programs here quintopia
23:27:09 <FreeFull> Also, it would matter for IO, unless I decide to try special syntax for that
23:27:15 <quintopia> !bfjoust brachiationtest >->(-)*5>(+)*5(>)*3(>[(<)*3(+)*7<<(+[<{}>(+)*4[<(-)*50(>)*7(>[-[-[-[(>)*3(+*100[+]>)*5]]]])*18](-)*50<(-)*50<(-)*10>>>(-)*5<(>-[(-)*50(>)*7(>[(-)*5([+{[(+)*25[-]]}[+]])%10[-]][+][-])*27](+)*50)*3 (>-[(-)*50(>)*7(>[(-)*5([+{[(+)*25[-]]}[+]])%10[-]][+][-])*27](-)*50)*2(>)*7 (>[(-)*5([+{[(+)*25[-]]}[+]])%10[-]][+][-])*22])%28]++)*22>(-)*115[-][+][-]
23:27:18 <EgoBot> Score for quintopia_brachiationtest: 37.0
23:27:29 -!- Regis_ has quit (Ping timeout: 255 seconds).
23:28:40 <quintopia> i could probably do better by adding a longer special case for that decoy, but it's supposed to be somewhat golfy
23:29:33 <quintopia> ais523: its basically the golfed version of space hotel. it sacrifices the ability to know exactly where was poked in order to be smaller
23:29:48 -!- augur has quit (Remote host closed the connection).
23:29:49 <ais523> like the original _poke?
23:30:00 <FreeFull> I'm wondering if to do it as a Haskell EDSL or if I should do it properly with Parsec
23:30:31 <nooodl> has anyone written a genetic algorithm for bf joust
23:30:39 <nooodl> it sounds so perfect for the task
23:30:48 <quintopia> !bfjoust brachiation >->(-)*5>(+)*5(>)*3(>[(<)*3(+)*7<<(+[<{}>(+)*4[<(-)*50(>)*7(>[-[-[-[(>)*3(+*100[+]>)*5]]]])*18](-)*50<(-)*50<(-)*10>>>(-)*5<(>-[(-)*50(>)*7(>[(-)*5([+{[(+)*25[-]]}[+]])%10[-]][+][-])*27](+)*50)*3 (>-[(-)*50(>)*7(>[(-)*5([+{[(+)*25[-]]}[+]])%10[-]][+][-])*27](-)*50)*2(>)*7 (>[(-)*5([+{[(+)*25[-]]}[+]])%10[-]][+][-])*22])%28]++)*22>(-)*115[-][+][-]
23:30:51 <EgoBot> Score for quintopia_brachiation: 36.8
23:31:20 <EgoBot> Score for quintopia_brachiationtest: 0.0
23:31:48 <ais523> nooodl: it's actually quite hard to evolve a good jouster
23:32:02 <ais523> genetic algorithms do sort-of OK at constant tweaking, but brute force does better for that
23:32:16 <quintopia> i just rewrote it slightly to be able to beat programs that outrush it, like david_werecat_golf
23:32:20 <ais523> in terms of general strategy, the problem is that the parts of your program typically have to work together in some meaningful way
23:32:37 <quintopia> basically, it now knows how to deal with rushes that don't leave decoys
23:33:00 <ais523> take a lock/full-tape-clear combo as an example of something that doesn't seem likely to be generated by any sort of naive evolver
23:33:56 <quintopia> it could be done. you could evolve based on parameterized genes that generate various strategy types
23:34:47 <doesthiswork> hah, and information free language http://pastebin.com/trAf3vbP
23:35:12 <quintopia> like "start a full tape clear at cell 8 that runs 64 cycles out of every 128 and cedes control to another gene in the remaining cycles" is one type of gene (where the numbers would be parameters)
23:35:53 <ais523> 128-cycle locks are really hard to win with, on a longish tape you just can't clear before you run out of cycles
23:36:00 <elliott> nooodl: BF Joust is the kind of thing that looks good for evolving at first sight
23:36:09 <elliott> but it's sort of like evolving real actual programs
23:36:15 <elliott> they have structure, they store state, they do branching
23:36:17 -!- augur has joined.
23:36:32 <elliott> they just have obscure syntax and happen to work on unreliable memory
23:36:36 <quintopia> ais523: the 128 would be a parameter, which means an evolver could find the actual best cycle length
23:36:46 <nooodl> well, i was thinking of something more like what quintopia said
23:36:47 <Phantom_Hoover> also you can't reliably 'combine' programs for their best traits
23:36:56 <ais523> elliott: hardly any BF Joust programs use the tape for computation
23:37:03 <ais523> the only ones I can think of offhand are waterfall3 and triplock3
23:37:09 <elliott> ais523: well, no, but there is "state"
23:37:13 <nooodl> tweak parameters on winning strategies
23:37:15 <ais523> it's not particularly that it's unreliable, it's just too slow
23:37:17 <elliott> it's just, most people don't think of it as state when they're writing it
23:37:21 <ais523> nooodl: I've used evolvers for that in the past
23:37:25 <elliott> stuff like tripwires and decoys etc.
23:37:29 <ais523> but normally I bruteforce instead
23:37:34 -!- Arc_Koen has quit (Quit: Arc_Koen).
23:37:37 <quintopia> Phantom_Hoover: you could combine them if you came up with some sort of description language for the strategies they use
23:37:44 <ais523> at least tripwires are more like control structures
23:37:48 <quintopia> like the parameterized gene description
23:38:20 <nooodl> anyway there should totally be BF Joust 3v3 matches
23:38:29 <elliott> what would that even mean?
23:38:52 <ais523> there's no "move sideways" command
23:38:55 <quintopia> bidirectional BF joust melee free-for-alls on a ring tape
23:38:56 <ais523> just forwards and backwards
23:39:18 <nooodl> how would you "kill" another program?
23:39:21 <ais523> it wouldn't work with existing programs, they'd leave their decoys the wrong side of the flag half the time
23:39:26 <ais523> nooodl: set the flag to 0 for two cycles
23:39:41 <quintopia> you'd have to code for it specifically
23:39:42 <nooodl> oh there's just flags scattered throughout the ring
23:39:45 <elliott> how about k-dimensional bf joust, where your programs have to work on a "tape" of an arbitrary number of dimensions
23:39:58 <elliott> and then what you do is pit the entire hill against each other simultaneously, in every possible spatial configuration
23:39:59 <quintopia> and there are > commands for every direction?
23:40:13 -!- augur has quit (Remote host closed the connection).
23:40:19 <elliott> quintopia: more like general commands for moving along which dimension you're operating on I think
23:40:28 <elliott> and that "dimension tape" wraps or something
23:40:42 <Bike> butbut the problem of dimensionality
23:40:43 <ais523> BF Joust on a ring seems at least viable as a variant
23:40:51 <ais523> I'd probably find it less interesting than regular 2v2 jousting, though
23:40:52 <elliott> how about Most ever Brainfuckiest Fuck you Brain fucker Fuck joust
23:41:10 <Bike> fuckfuckfuckjoust for short?
23:41:14 <nooodl> brainfuck derivative joust MOBA
23:41:19 <quintopia> ais523: how does regular 2v2 work?
23:41:46 <elliott> Bike: MeBFFyBfF Joust, I think
23:41:56 <ais523> just said the wrong thing
23:41:58 <Bike> that has BFF in it
23:42:02 <Bike> is brainfuck your friend
23:42:18 <quintopia> i like elliotts idea for a bfjoust tournament that is exponentially long in the number of players
23:42:30 <nooodl> for short it should be "Fuck you". just drop the "Joust"
23:42:36 <nooodl> (and also everthing else)
23:43:16 <elliott> quintopia: wouldn't it be worse than exponential
23:44:23 <ais523> hmm… I have a new idea for a noncomputable function
23:44:54 <ais523> f(n) = the largest value that can be printed by a terminating program of length n
23:44:59 <ais523> it's sort-of like busy beaver
23:45:08 <ais523> but has the benefit that it grows faster than any computable function
23:45:25 <Bike> so does busy beaver...?
23:46:02 <ais523> I wonder which is faster? probably mine
23:46:05 <nooodl> why is it noncomputable
23:46:21 <Bike> similar reasons to kolmogorov
23:46:36 <ais523> nooodl: because it's easy to prove that it grows faster than any computable function
23:46:43 <ais523> if it were computable, that'd cause a contradiction
23:46:53 <Phantom_Hoover> can't enumerate the set of terminating programs of length n without doing that
23:48:03 <ais523> nooodl: well nonterminating programs don't output values, if you take the traditional mathematical view of them
23:48:13 <Phantom_Hoover> also i remember seeing this on stackoverflow when i was trying to find an explicit proof of a faster-than-computable function
23:48:14 <ais523> so the definition would be the same without "terminating" in there, but more confusing
23:48:43 <Phantom_Hoover> also: 1 - 1/f(n) grows slower than any computable function
23:48:47 <elliott> 23:44:59 <ais523> it's sort-of like busy beaver
23:48:47 <elliott> 23:45:08 <ais523> but has the benefit that it grows faster than any computable function
23:48:52 <elliott> ais523: what did you think the point of busy beaver was...
23:49:01 <Bike> shhh we did that already
23:49:05 <elliott> ais523: btw, I forget if it was you or someone else who said this but -
23:49:06 <elliott> yes what Phantom_Hoover said
23:49:08 <Bike> Phantom_Hoover: that's still really weird to me
23:49:12 <ais523> elliott: the number of cycles that the longest-running terminating program runs for
23:49:13 <elliott> that's far more mindblowing than growing faster, I think
23:49:17 <Phantom_Hoover> ais523, your function basically /is/ busy beaver anyway
23:49:17 <elliott> even though it's the same thing
23:49:32 <ais523> hmm, it's reasonably equally mindblowing for me
23:49:34 <nooodl> well, it's not that i didn't see the word "terminating" or something
23:49:41 <ais523> huh, I just remembered Hofstadter's number
23:49:43 <elliott> like... there being a speed limit isn't that surprising
23:49:46 <Sgeo> Um... slightly confused
23:49:48 <ais523> (it's equal to the number of times you thought about Hofstatder's number)
23:49:49 <elliott> but there being a limit to how /slow/ you can go?
23:49:50 <Bike> he has a number now?
23:49:54 <Sgeo> WHy not a function that doesn't grow?
23:49:59 <nooodl> i was just thinking "there's only a finite amount of length n programs, so just go through all of them and find the largest one!"
23:50:00 <ais523> Sgeo: then it doesn't grow
23:50:06 <Bike> Sgeo: slower than any monotonically increasing computable function*
23:50:16 <ais523> nooodl: determining what a program outputs can be harder than it sounds
23:50:39 <Phantom_Hoover> i wonder if you can do that and /also/ have it grow without bound
23:50:52 <ais523> Phantom_Hoover: clearly not
23:50:55 -!- zzo38 has joined.
23:50:58 <ais523> there are bounded monotonically increasing computable functions
23:51:24 <quintopia> i just had a brain bunny about how to use the tape to record how far was poked. HMMMMMM
23:51:37 <quintopia> i really don't have time to explore it :(
23:51:37 <Phantom_Hoover> yeah i guess the 'outs' i was considering don't really work
23:53:34 <Gregor> Anybody still play Minecraft?
23:54:09 <Bike> wait, so what about the min-kolmogorov function, m(x) = the largest value of C(y) for y between 0 and x? isn't that unbounded?
23:54:34 <Gregor> Phantom_Hoover: Tryin' to bring back #esoteric-minecraft . I have a server set up and 1.5 players who aren't me X-D
23:55:46 <doesthiswork> what's the highest complexity class you can get for a language that doesn't create or destroy information?
23:55:58 <Bike> what does that mean
23:56:23 <Gregor> Arguably reversible languages still create data.
23:56:54 <doesthiswork> you give it a list of values at the beginning of the program
23:57:16 <doesthiswork> and then you get them back rearranged (I think)
23:57:24 <quintopia> dont reversible languages create *more* data on average than equally powerful irreversible languages?
23:57:26 <Bike> well a fredkin gate is certainly enough for TC
23:58:01 <doesthiswork> on the wikipedia article they had wires splitting which breaks the no creaton of information rule
23:58:01 <Phantom_Hoover> doesthiswork, that's so obviously tc i can't be bothered demonstrating that it is
23:58:48 <doesthiswork> it is obviously turing complete if you have a large list of values that you already know (like a free list)
23:59:41 <Phantom_Hoover> (also your definition of reversible is not the one the rest of the world uses)