00:00:05 <elliott> which is exactly the [] and (++) analogues here
00:00:13 <elliott> and you can also use like, mconcat
00:00:23 <elliott> you can also just use functions directly though
00:05:15 <oerjan> sometimes it feels like the amount of rep i get for a stackoverflow answer is inversely correlated to the amount of work it was...
00:06:40 <ais523> that doesn't surprise me
00:07:02 -!- Phantom_Hoover has joined.
00:08:10 <oerjan> it doesn't really surprise me either
00:08:47 <oerjan> an answer that's easy to make is also easy to understand
00:10:10 -!- R40UL has quit.
00:11:04 <myname> so... concat xs = foldr (.) [] (map (\x -> (\xs -> x ++ xs))
00:11:23 <myname> n being all list elements
00:11:47 <elliott> well, that's the same as foldr (++) []
00:11:52 <elliott> (you mean foldr (.) id but yeah)
00:12:38 <myname> foldl would be n^2, wouldn't it?
00:12:42 <oerjan> myname: GHC probably fuses that into something simple
00:12:57 -!- Phantom_Hoover has quit (Ping timeout: 250 seconds).
00:13:48 <oerjan> and yeah foldl is n^2 at least if it doesn't fuse, i'm not sure nowadays...
00:15:43 <myname> so, what is the advantage of using that function composition thingie instead of concat' = concat . reverse
00:16:15 <myname> you could just do foo:bar:[], couldn't you?
00:16:23 <elliott> if you just want concat you can write foldr (++) []
00:16:28 <elliott> i assumed you were doing something more complicated than that
00:17:45 <myname> i am not quite sure, i have to take a look on how often i actually have to look into that list, but as far as i know it shouldn't happen that much
00:18:11 <oerjan> @tell b_jonas <b_jonas> but the way it is, it's not even turing complete, because there are only finitely many valid eodermdrone programs <-- you're jumping straight into our discussion of what TC means, i see
00:26:06 -!- callforjudgement has joined.
00:29:04 -!- ais523 has quit (Ping timeout: 244 seconds).
00:29:18 -!- callforjudgement has changed nick to ais523.
00:42:46 <oerjan> there appears to be a boily shortage
00:44:26 -!- PinealGlandOptic has quit (Quit: leaving).
00:56:09 -!- hjulle has quit (Ping timeout: 252 seconds).
01:00:50 -!- ProofTechnique has joined.
01:05:09 <oerjan> *sigh* hit the power button again
01:05:24 <oerjan> fortunately i restarted fast enough it didn't disconnect
01:05:52 <oerjan> i already changed it from "reboot" to hibernate, i think i shall change it to "do nothing"
01:07:21 <oerjan> after all, i never really use it anyway; whenever i _actually_ reboot it's to restart immediately.
01:10:01 -!- MDude has joined.
01:12:19 -!- Phantom_Hoover has joined.
01:27:38 -!- ais523 has quit (Ping timeout: 265 seconds).
01:38:05 -!- CADD has quit (Remote host closed the connection).
01:38:55 -!- merdach has quit (Quit: WeeChat 1.1.1).
01:40:04 -!- bb010g has quit (Quit: Connection closed for inactivity).
01:43:37 -!- tromp has quit (Ping timeout: 255 seconds).
01:51:44 -!- tromp has joined.
01:53:34 -!- GeekDude has joined.
02:03:46 -!- PinealGlandOptic has joined.
02:18:35 -!- MDude has changed nick to MDream.
02:23:49 -!- devdean1 has joined.
02:33:57 -!- ProofTechnique has quit (Ping timeout: 250 seconds).
02:36:08 -!- MDude has joined.
02:38:07 -!- MDream has quit (Ping timeout: 250 seconds).
02:39:51 <lambdabot> src <id>. Display the implementation of a standard function
02:40:23 <lambdabot> Source not found. Do you think like you type?
02:42:20 -!- arjanb has quit (Quit: zzz).
02:43:28 -!- MDude has changed nick to MDream.
02:44:30 -!- ProofTechnique has joined.
02:47:59 <lambdabot> 112*total 93*private 9*#haskell-blah 5*#esoteric 4*#haskell 1*#scannedinavian
02:52:28 -!- Phantom_Hoover has quit (Read error: Connection reset by peer).
02:56:01 <oerjan> ok girl genius, _that_ was unexpected.
02:58:13 <oerjan> so much for time travel being involved.
02:58:24 -!- kapil___ has joined.
02:58:47 <oerjan> (it'll still be involved _elsewhere_, presumably.)
03:01:22 <lambdabot> *** "esoteric" wn "WordNet (r) 3.0 (2006)"
03:01:22 <lambdabot> adj 1: confined to and understandable by only an enlightened
03:01:22 <lambdabot> inner circle; "a compilation of esoteric philosophical
03:10:23 -!- bb010g has joined.
03:59:04 -!- PinealGlandOptic has quit (Quit: leaving).
04:27:11 -!- merdach has joined.
04:41:36 -!- _1_lyndero3 has joined.
04:42:19 -!- _1_lyndero3 has quit (Remote host closed the connection).
04:49:55 -!- GeekDude has quit (Quit: ZNC - http://znc.in).
04:58:40 <Sgeo> What's the worst that could happen if I upload this music to YouTube?
05:05:54 <Sgeo> This one sounds like someone really playing a real piano... and making mistakes :/
05:18:42 -!- Patashu has quit (Remote host closed the connection).
05:19:07 -!- Patashu has joined.
05:23:05 -!- bluckbot has joined.
05:25:46 <Sgeo> http://runt-of-the-web.com/amazingly-unhelpful-fun-facts
05:27:50 <Sgeo> http://horseysurprise.tumblr.com/
05:34:18 <oerjan> Sgeo: that tumblr site not only has too small text, but it neutralizes attempts to zoom it. i suggest killing it with fire.
05:37:09 <oerjan> also, agreeing with me on this is mandatory hth
05:37:34 * oerjan may have waited a bit too long to eat
05:40:10 <Sgeo> *attempts to neutralize attempts to zoom it
05:40:37 <oerjan> well in IE it succeeds.
05:41:47 <Sgeo> You just made me open IE. I shall not forgive you.
05:42:27 <Sgeo> Fails for me in IE too. Where fail is defined as "not as effective as perfect neutralization would be"
05:43:01 <oerjan> i define "neutralization" as "prevents getting it to an actually readable size" hth
05:43:51 <Sgeo> I was able to increase the size, slower than I should have been able to, but it still increased each time
05:44:11 <Sgeo> Besides the images are usually the important part
05:44:34 <Sgeo> And it's the images where zoom isn't working well :/
05:44:37 <oerjan> um ok i actually meant the image hth
05:45:08 <oerjan> stupid geeks taking blathering literally
05:45:12 <Sgeo> CLicking the image then clicking the image works for me
05:45:35 <oerjan> i think you didn't read the part where i said agreeing was mandatory hth
05:46:09 <oerjan> 's ok my blood sugar should return to normal soon. unless it overshoots again.
05:47:46 <pikhq> Diabetes, or just bad regular eating habits?
05:48:24 <oerjan> well i somehow waited for 8 hours before eating
05:49:24 <oerjan> diabetes runs in the family but i didn't have it when tested two years ago.
05:50:07 <pikhq> Some point I might need to get tested for it.
05:50:18 <pikhq> Turns out it runs in the family for me as well.
05:50:29 <oerjan> ("somehow" ~ "started trawling a webcomic archive for an old strip")
05:50:59 <oerjan> never found it. maybe i'm imagining the strip, or have misremembered the character involved
05:52:01 <Sgeo> What comic what strip?
05:52:17 <Sgeo> Not that I'm especially likely to know personally
05:52:20 <oerjan> yet another fantasy gamer comic
05:52:29 -!- kapil___ has quit (Quit: Connection closed for inactivity).
05:53:15 <oerjan> the current act reintroduces some rather old characters that haven't been seen in a while
05:54:26 <oerjan> i thought there was a strip where dewcup met those ranna worshippers in arachne's dungeon
05:54:43 <oerjan> except i'm not sure if they had shown up yet
05:54:59 <oerjan> so i think it may have been someone other than dewcup
05:56:15 * oerjan doesn't expect anyone else here to know, anyway.
05:56:26 <Sgeo> Try /r/tipofmytongue ?
05:56:27 -!- CrazyM4n has joined.
05:56:40 <Sgeo> Or any comic-specific forums
05:57:17 <oerjan> hm i was going to check which arc the worshippers showed up in
05:58:45 <oerjan> it's moved servers so the whole archive has been reorganized
06:09:06 <Sgeo> "The word 'onomatopoeia' is also an onomatopoeia because it's derived from the sound produced when the word is spoken aloud."
06:10:45 <oerjan> ah i was confusing dewcup with jone.
06:31:02 -!- CrazyM4n has quit (Remote host closed the connection).
07:14:54 -!- kapil___ has joined.
07:52:14 <oerjan> int-e: well that was an unexpected girl genius development.
07:53:04 <int-e> was it now, I haven't even read Wednesday's GG yet.
07:55:29 <oerjan> i suppose someone might have predicted it.
07:57:42 <int-e> Well it surprised me.
07:58:00 <int-e> King of all cats... I remembered that.
08:14:36 <int-e> but I don't recall Krosp being explicitly connected to Dr. Vapnoople
08:20:27 <oerjan> i tried looking up some of that earlier
08:21:23 <int-e> ttp://girlgenius.wikia.com/wiki/Krosp_I is helpful, but the story of Krosp's creation didn't reveal the creator
08:22:05 <oerjan> i looked at wikia too and got frustrated because so many references were to the novels
08:24:24 <oerjan> well krosp is seen hiding when she first meets dr. dim
08:25:28 <int-e> but he's been hiding on the airship ever since his creation, so all I read into that is that there was some convenient hiding place nearby
08:27:08 <int-e> anyway it doesn't really matter; even if it has been mentioned before I probably wouldn't have remembered it
08:27:28 <oerjan> http://www.girlgeniusonline.com/comic.php?date=20040319
08:39:49 -!- CrazyM4n has joined.
08:47:42 -!- CrazyM4n has quit (Remote host closed the connection).
08:59:26 -!- CrazyM4n has joined.
09:13:26 -!- CrazyM4n has quit (Quit: sleep).
09:15:14 -!- cpressey has joined.
09:26:26 -!- vanila has joined.
09:34:16 <vanila> 0000000 0583 8000 000b eb01 00f7 0000 b002 1bad
09:34:16 <vanila> 0000010 0003 0001 4ffb e451 000c 0000 0000 0000
09:34:16 <vanila> 0000020 0000 0000 0000 0000 0000 0000
09:34:35 <vanila> http://i.imgur.com/VX4TjY0.png
09:45:19 <cpressey> i assume that's a hexdump of the bootblock?
09:45:50 <vanila> yeah and boot it with GRUB
09:46:20 <vanila> itsj ust a multiboot header + loop that increments some address
09:46:38 -!- TieSoul_ has joined.
09:46:44 <vanila> what I can't figure out how to do is boot it on a real computer :\
09:46:55 <vanila> i tried usb drive but it doesnt work
09:47:32 <cpressey> i don't know anything about multiboot
09:48:20 <cpressey> in fact, i don't think i've ever gone beyond booting from a floppy
09:49:02 -!- TieSoul has quit (Ping timeout: 245 seconds).
09:51:45 <oerjan> cpressey: we had a discussion here at one time about System F / second order logic, you can look at that as a complexity class if you want and it contains ackermann and even the goodstein sequence
09:52:29 <oerjan> (someone here wrote up an implementation of the latter in non-recursive rank-N haskell, which is basically equivalent)
09:53:31 -!- Phantom_Hoover has joined.
09:55:05 <cpressey> oerjan: you don't know how much it freaked me out to see you talking about webcomics and killing webpages with fire, in the logs
09:55:56 <oerjan> no, it was me, but still, huh?
09:56:20 <oerjan> (most webcomics i read i learned about in this channel)
09:56:21 <vanila> i just booted it for real
09:56:34 <oerjan> myndzi: psst your script is running twice or something
09:57:01 <oerjan> it's been noticed before
09:57:46 <oerjan> cpressey: most webcomics i've followed i learned about via this channel
09:58:21 <oerjan> cpressey: my huh is because i don't know why that freaked you out.
09:59:10 <oerjan> as someone who has recently become a lot more dependent on zooming webpages, it irritates me a lot when they make it hard.
10:00:48 -!- Korok has joined.
10:01:05 -!- Korok has left.
10:02:26 <fizzie> Oh, by the way, a fungot status update. Our Internet arrives on March 3, but I'll be out of the country from March 2 to 13, so I have a fungot ETA of maybe mid-March.
10:02:30 <cpressey> oerjan: never mind -- I think there's something wrong with me.
10:03:06 <oerjan> fizzie: you don't happen to have another way of making HackEgo join a channel, do you? it's actually connected...
10:03:25 <fizzie> I have one but it's convoluted.
10:03:39 <oerjan> cpressey: i'd give you the standard lewis carroll quote but HackEgo isn't here...
10:04:08 -!- devdean1 has quit (Quit: Leaving.).
10:05:21 <cpressey> oerjan: Anyway, I have to just conclude that complexity theorists don't care about the upper reaches
10:05:44 <cpressey> I can almost hear them yawn when it gets bigger than NP
10:05:45 <oerjan> cpressey: that seems likely
10:06:14 <oerjan> nah that's not true, PSPACE and EXP get a fair workout don't they
10:06:41 <cpressey> That's true, I've seen them be interested in PSPACE at least
10:08:17 <oerjan> although you could maybe make a case for "only classes not known to be larger than NP"
10:08:45 <cpressey> Not that anyone here would necessarily know offhand, but: like Ackermann is sort of the poster-child for "not in PR", are there any obvious candidates for "not in <these bigger ones defined by 2nd-order-logic ad/or PR-functionals>"?
10:08:51 <cpressey> I mean, even guesses would be fine
10:09:01 <cpressey> I'd just be a little irked if there are no "natural" examples
10:09:13 <cpressey> Not that Ackermann is particularly natural
10:09:19 <cpressey> But compared to some things, it is
10:10:21 <cpressey> I forgot, I don't actually care.
10:10:42 <cpressey> Nihilism is harder than it looks, isn't it
10:12:39 * oerjan whistles 4'33'' innocently
10:12:44 <cpressey> I just get the feeling that there's no point in me trying to understand these things, because I'm sure I never will. This grates against the fact that they fascinate me.
10:14:02 <oerjan> i think that when you look at very small or very large complexity classes things tend to get intertwined with logic questions
10:14:54 <cpressey> It does seem reasonable, once you get above EXP and friends, to stop treating it as complexity and start treating it as computability
10:15:26 <vanila> what is the thing being investigated?
10:15:51 <fizzie> Okay, laptop is up and keyboard is connected to phone.
10:16:02 <fizzie> Next, I need to something something something.
10:16:18 <oerjan> i'm not sure i know any problems between goodstein/hydra things and the halting problem/busy beaver stuff
10:16:35 <fizzie> What, there's no nc on Android shell.
10:16:42 <cpressey> vanila: algorithms that run a long, loooong, loooooooong time, but we still know that they eventually finish <-- very approximate way to describe it
10:17:08 <vanila> that's a really interesting topic
10:17:13 <fizzie> I can push the SSH key from the laptop to the phone (which is the only thing Internetted here), but I'm not sure how to get it to somewhere else.
10:17:21 <cpressey> oerjan: at least I know about the hydra, but I'll have to refresh myself on goodstein
10:17:23 <vanila> it can get a bit philosophical
10:17:37 <oerjan> cpressey: i think they're sort of on the same level
10:18:19 <oerjan> both are about things that can grow a lot in size but always shrink as ordinals
10:18:49 <cpressey> yeah as soon as you get to the point of needing transfinite induction to prove that it terminates... sheesh
10:19:13 <cpressey> ok, i can see why this is not a well-trodden area
10:20:42 <cpressey> I'm probably overthinking things, too
10:22:26 <fizzie> I don't get it. I pushed the files to Download/ but they're not visible there.
10:22:39 <vanila> A cool thing about the dependent type theory as opposed to something like charity is you can write programs that take a very very long time to halt
10:22:44 <fizzie> Maybe the storage indexer thing doesn't refresh from just an adb push.
10:23:26 <fizzie> Or maybe the "Downloads" list and the Download/ folder aren't a 1:1 thing at all.
10:27:14 -!- Koen_ has joined.
10:27:48 <fizzie> I think I might have got it
10:29:49 <fizzie> The server is being really really slow.
10:30:35 <oerjan> but not so slow that HackEgo is pinging out...
10:30:56 -!- HackEgo has joined.
10:31:07 <fizzie> And it was stupidly complicated.
10:31:37 <fizzie> It took maybe 5 seconds to reply to simple shell commands, so I don't expect the umlbox stuff will run very fast.
10:32:13 <oerjan> maybe someone is DOSing the wiki. it could happen.
10:32:57 <fizzie> I could have a look at network traffic, but I need some breakfast first.
10:32:59 <HackEgo> "But I don't want to go among mad people," Alice remarked. "Oh, you can't help that," said the Cat: "we're all mad here. I'm mad. You're mad." "How do you know I'm mad?" said Alice. "You must be," said the Cat, "or you wouldn't have come here."
10:34:43 <cpressey> http://catseye.tc/installation/Cheshire_Text <-- but you need to read the whole thing, top to bottom, for it to work
10:38:56 <int-e> well that went rather more quickly than I expected... http://int-e.eu/~bf3/tmp/cheshire.png
10:43:23 <int-e> (Hmm, couldn't the same effect be achieved by a CSS transition?)
10:45:14 <vanila> I thought: a brainfuck OS
10:45:25 <vanila> the kernel is in assembly and has interrupts for each of <, >, +, -, ., ...
10:45:48 <vanila> so you can compile a brainfuck program into syscalls.. but then someone could still use registers and things
10:46:59 -!- TieSoul_ has changed nick to TieSoul.
10:51:46 <Jafet> If you feel overwhelmed, go with minor-closed graph classification, which takes only cubic time.
10:52:02 <cpressey> vanila: I like the idea of one syscall per BF instruction for some reason
10:52:16 <cpressey> it has a certain terrible elegance
10:52:23 <cpressey> i like things with a certain terrible elegance
11:02:40 <cpressey> speaking of which, I should write that recursive-{de,a}scent {parse,generato}r I've been meaning to
11:17:49 -!- bluckbot has quit (Remote host closed the connection).
11:18:42 -!- bluckbot has joined.
11:22:17 <cpressey> oerjan: I am going to steal that term if you don't mind
11:22:27 <cpressey> at least in this implementation
11:23:13 <oerjan> this smells of recognition
11:23:50 -!- hjulle has joined.
11:29:04 -!- Patashu has quit (Ping timeout: 255 seconds).
11:31:11 <cpressey> done. can anyone recommend a pastebin?
11:32:07 <cpressey> because I just know you are all pastebin connoisseurs
11:34:29 <cpressey> https://gist.github.com/cpressey/dd3f63eda91b33e429fa
11:35:03 <cpressey> now you may all tell me that I should have done it with monads, dependent types, and CSS transitions
11:39:14 <int-e> cpressey: are you going to ask for justifications of such claims?
11:39:23 <int-e> if not I'd be happy to oblige.
11:39:44 <FreeFull> cpressey: I sometimes use dpaste
11:44:06 <cpressey> int-e: no, I'll just say "oh, I know, I know" like Mrs. Fawlty on the phone
11:44:52 -!- ProofTechnique has quit (Ping timeout: 244 seconds).
11:49:17 <oerjan> definitely monads yeah
11:54:38 <oerjan> int-e will have to take care of the CSS transitions and elliott the dependent types
11:58:57 -!- SopaXorzTaker has joined.
12:00:58 -!- oerjan has quit (Quit: leaving).
12:04:06 <elliott> what's going on i just woke up
12:04:32 <elliott> for the sake of fantasy i would like you all to believe that i have irc pings hooked up to an alarm
12:08:59 <int-e> or do you mean CTCP pings, hmm
12:09:35 <elliott> every time i am talked to i have to hit the alarm off. please be considerate and leave me alone forever
12:11:40 <int-e> elliott: I think you got the reverse psychology idea wrong.
12:12:18 <int-e> You *can* go around explaining a new toy to children, then forbid them to use it. But you shouldn't be surprised if they end up playing with them anyway.
12:12:57 <elliott> i feel like the utter certainty all of you would spend hours setting off my alarm were it real is why this channel sucks so much
12:13:55 <elliott> cpressey: this is cute. there is work on this kind of thing in The Literature, i think
12:14:03 <elliott> parser combinators that go both ways, etc.
12:16:02 <int-e> hmm, "both ways" http://hackage.haskell.org/package/boomerang
12:17:15 <elliott> right. there's like, an Actual Name for it and Actual Papers. maybe "reversible grammar" or something, I don't know.
12:17:27 <elliott> you get things like, instead of fmap taking a function it takes an isomorphism
12:17:34 <elliott> one function for each direction
12:17:42 <elliott> cpressey: am I academising sufficiently here?
12:29:09 -!- SopaXorzTaker has quit (Ping timeout: 252 seconds).
12:32:47 <vanila> <elliott> for the sake of fantasy i would like you all to believe that i have irc pings hooked up to an alarm
12:32:58 <vanila> I have done this in the past & suspect someone else does this
12:33:30 <elliott> vanila: like a proper alarm or just making your computer make a lot of noise
12:33:35 <elliott> ideally it should be like, clockwork
12:33:59 <vanila> oh just the computer, but t woldnt be too hard with an adruino or something..
12:35:03 <cpressey> elliott: yes, thank you. i realize it is nothing very special, but i think it's cute too
12:37:10 <vanila> reversible parsing is very awkward
12:37:17 <vanila> parsing is not usually a bijection
12:37:27 <vanila> because of things like skipping whitespace, comments
12:37:48 <vanila> iits better to specify a parse as something that if you print it out and parse that you get the same thing
12:38:52 <elliott> on the other hand it's often kinda useful not to drop things like comments in an AST so you can do things like error reporting and code transformations without disturbing things like that (but it is awkward yeah)
12:43:44 <cpressey> maybe "a certain terrible elegance" that i referred to means "it suggests an algebra" because what is interesting me right now is, are there any operation-sets besides "parse" and "generate" that make any sense
12:44:11 <cpressey> i can only think of fairly contrived ones, and minor (relatively) variations on those two
12:44:51 <cpressey> "count terminals in grammar" is not exactly interesting
12:45:06 <elliott> the operations in http://matt.might.net/articles/parsing-with-derivatives/, maybe?
12:45:23 <elliott> (taking the derivative with respect to a token, deciding whether a grammar admits an empty string, etc.)
12:45:33 <elliott> probably not doable with the imperative recursive-descent style though so n/m
12:46:27 <cpressey> well, this code makes it abundantly clear that the RDP could be a passive data structure instead of a set of functions
12:46:30 <vanila> isnt empyness undecidable for CFG?
12:46:56 <vanila> so maybe it admits a notion of derivative too?
12:46:58 <cpressey> intersection of 2 being empty is, i thnk
12:47:12 <vanila> although that might let you determine equality which is undecidable..
12:47:33 <vanila> I guess there's no derivative for CFGs then
12:47:52 <elliott> vanila: that article is about derivative for CFGs
12:50:18 <vanila> i assumed it was about regex
12:50:39 <elliott> it's about using derivatives to parse arbitrary CFGs
12:54:56 <vanila> the trick is that the derivative is an infinite object
12:55:10 <vanila> so that stops you from being able to use it to determine equality
12:59:53 <cpressey> i remember coming across derivative of regular languages a few years ago; you can basically extend it to a kind of linear algebra, which is neat. didn't realize you could extend it to CFL's
13:00:13 <elliott> vanila: well, it's infinite if the original grammar is, I think
13:00:22 <vanila> because of left recursion
13:00:27 <elliott> well, no, not necessarily, sometimes it can be finite
13:10:43 <cpressey> "There's no backtracking in the algorithm." <-- for some reason that made me interrobang
13:16:59 <cpressey> i'm probably not understanding it entirely correctly, but it's like the memoization and fixed-point parts avert any possibility of backtracking, early on
13:17:21 <vanila> have you looked at the regex version of this?
13:17:35 <vanila> you can use derivatives of regexes to build a DFA
13:28:43 <cpressey> vanila: yes, in a book, probably about 8 years ago :/
13:29:04 -!- Tritonio has quit (Ping timeout: 252 seconds).
13:29:05 <cpressey> the linear alg thing was what stuck in my mind
13:34:53 <cpressey> the no-backtracking property might mean it'd be good for parsing streams (e.g. data over a socket) too
13:56:30 <cpressey> at the end it almost sounds like they want to add some "hash-consing" to it too :)
14:19:31 -!- Lymia has quit (Ping timeout: 265 seconds).
14:22:39 -!- SopaXorzTaker has joined.
14:23:36 -!- SopaXorzTaker has quit (Max SendQ exceeded).
14:29:52 -!- cpressey has quit (Remote host closed the connection).
14:33:55 -!- cpressey has joined.
15:01:55 <cpressey> @tell ais523 wait, doesn't it have to be the other way around? You need a mapping (O(n) or otherwise) from TMs to programs in language X, for X to be TC
15:02:55 <cpressey> If you have a mapping from at least 1 universal TM to at least 1 program in language X, X is fancy-L-complete or whatever
15:04:27 <cpressey> I don't see a lot of "naturally occurring" "compiler mappings" like these that exceed O(n log n), but it might be nice to have some contrived examples
15:11:25 <cpressey> maybe some esolang where programs have to be arranged "just so" and a compiler from-TM-to-it has to take that into account when constructing the target program
15:12:04 <vanila> you have to fit the commands into a tesselation or something, so compiling to it requires solving a NP hard puzzle
15:13:14 <cpressey> vanila: exactly, something like that
15:13:27 <cpressey> heh, there are two esolangs called "Numberwang"
15:16:28 -!- SopaXorzTaker has joined.
15:17:27 <cpressey> well, i can't find anything on esolangs.org that fits the bill offhand, but that thing's huge now :)
15:18:15 <cpressey> a lot of them might fit the bill, if we knew more about them :)
15:20:04 -!- ProofTechnique has joined.
15:20:25 <elliott> who needs anything like that when you have masterpieces like https://esolangs.org/wiki/Pig
15:21:07 <elliott> fizzie: is esolangs.org HSTS yet
15:21:53 <FreeFull> Where are the languages based on qubits?
15:24:25 -!- ProofTechnique has quit (Ping timeout: 252 seconds).
15:27:58 <cpressey> NP-hard might still = P, who knows, so I'd prefer something EXPTIME-complete
15:28:45 <cpressey> I should try to remember that I don't really care before I actually try to devise something like this
15:29:52 <cpressey> FreeFull: there are some: https://esolangs.org/w/index.php?search=qubit&title=Special%3ASearch
15:30:22 -!- SopaXorzTaker has quit (Quit: Leaving).
15:30:41 -!- MDream has changed nick to MDude.
15:37:16 -!- SopaXorzTaker has joined.
15:37:31 -!- boily has joined.
15:38:58 <Phantom_Hoover> cf. http://upload.wikimedia.org/wikipedia/commons/a/a0/P_np_np-complete_np-hard.svg
15:39:01 <FreeFull> NP-hard includes everything that is outside P, doesn't it?
15:39:47 <cpressey> An EXPBLARGL program consists of a description of a Turing machine, a number k, and a Befunge program. To run an EXPBLARGL program, first you determine if the given TM halts in k steps. If it does, you run the Befunge program. If it doesn't, you run 99 bottle of beer on the wall, or something.
15:40:15 <cpressey> and, uh, k must exqual the size of teh Befunge program
15:40:35 <cpressey> no, the compiler can always just pick easy TMs
15:40:49 <cpressey> maybe the Befunge program has to double as the TM description
15:41:10 <cpressey> and the only reason I chose Befunge is because I was going to choose brainfuck but then Phantom_Hoover walked in
15:41:31 <cpressey> Phantom_Hoover: I thought NP-hard meant >= NP-complete
15:42:51 <cpressey> so if x is NP-hard it might be NP-complete which might (WHO KNOWS) be in P
15:43:05 <Phantom_Hoover> for a concrete example, the halting problem is NP-hard but not in NP
15:43:28 <cpressey> Phantom_Hoover: yes but "NP-hard but not in NP" is not the same as "NP-hard"
15:43:32 <vanila> http://upload.wikimedia.org/wikipedia/commons/a/a0/P_np_np-complete_np-hard.svg NP complete is a lemon
15:44:18 <elliott> looks more like an american football
15:44:19 <Phantom_Hoover> cpressey, oh, were you talking about individual problems rather than the classes as a whole?
15:44:54 <cpressey> Phantom_Hoover: yes, I'm trying to make a contrived language to which you can't compile a TM in O(n log n) because ais523
15:46:27 <cpressey> I'm not sure that matters, given the diagram vanila linked to, but I don't really care
15:49:19 -!- GeekDude has joined.
15:50:52 -!- SopaXorzTaker has quit (Quit: Leaving).
15:51:10 -!- SopaXorzTaker has joined.
15:51:37 -!- SopaXorzTaker has quit (Remote host closed the connection).
15:51:38 <cpressey> unefunge or blank would be simpler
15:52:02 <cpressey> EXPBLARGL as defined is only P-complete b/c the length is effectively given in unary
15:53:28 <cpressey> and, sorry, I'm going to use brainfuck because it's convenient. besides, it will give Phantom_Hoover something to blog about
15:54:11 -!- SopaXorzTaker has joined.
15:54:13 <cpressey> an EXPLBARGL program is a brainfuck program except first you interpret it as a base-8 number and call than n and then you only run it if you determine it does *not* halt in n steps
15:55:02 <cpressey> ok, EXPLBLARGL was actually a typo there, but that's fine
15:55:09 <int-e> cpressey: regarding the complexity of compiling stuff to Turing machines, how do you represeny Turing machines? If an n state Turing machine requires O(n log n) data then that should also be a lower bound for a compiler.
15:55:37 <FreeFull> cpressey: How about some sort of incremental XOR?
15:58:15 <MDude> A turing machine requires potentially unbounded memory, depending on what is to be compiled.
15:58:57 <MDude> Though I don't know if that's what you're asking.
15:59:09 <cpressey> int-e: well, the "obvious" way to me to describe a TM has length O(nm) where n is # states and m is # symbols. but if ais523 is going to allow some tricky compression, I dunno
15:59:46 <cpressey> MDude: yeah, that's not a problem, I'm only considering compiling TMs to other languages that also have unbounded storage
16:01:34 <int-e> cpressey: Ah I was thinking about a fixed number of symbols. How do you avoid the log n factor?
16:02:30 <vanila> what about that kthing where you write an interpreter for another lagnuage, then provide your code as data
16:03:06 <vanila> the interpreter is a fixed number of characters and the data can probably be at worst a unary encoded number
16:03:15 -!- SopaXorzTaker has quit (Ping timeout: 246 seconds).
16:03:17 <cpressey> int-e: I don't see any need to avoid it myself. I think it's ais523 who's aiming for O(n). I'm just observing there aren't many cases where you need a compiler that is more than O(n log n)
16:03:24 <cpressey> the log n is for the symbol table
16:04:46 <MDude> Wait, what were you asking about the impossibility of?
16:04:59 <MDude> Compiling things to turing machines, or compiling turing machines to other things?
16:05:23 <cpressey> MDude: compiling TMs to other things and needing more than O(n log n) time to do it
16:05:28 <int-e> vanila: Which shows that you need to be precise with the rules. Is providing extra data on the tape allowed? Of course you can prefix the interpreter by code that initialises the tape but then you /may/ run into issues with encoding the state numbers in O(1) symbols.
16:06:55 <int-e> though it's easy to devise encodings for TMs where this works (for example you can encode references to the "next" state by a fixed string)
16:07:07 <cpressey> as a (bad) example, compiling a TM to a Perl program shouldn't require more than O(n) time, where n is the length of the TM description (and yes, I'm assuming things like, the TM description is given as a table, and it starts with a blank tape)
16:09:33 <cpressey> emit prelude; for each transition in table { emit a bit of Perl with if statements and goto statements }; emit postlude /* probably not even needed here */
16:09:37 -!- TieSoul_ has joined.
16:10:07 <cpressey> prelude defines a global variable for the tape and whatnot
16:10:31 <int-e> I'd emit a TM interpreter followed by the TM description
16:10:47 <int-e> cheating? maybe, but where exactly do you draw the line?
16:10:50 <vanila> maybe the program oculd be encrypted, so to compile to something eslseyou have to decrypt it
16:10:55 <vanila> and that could require brute force
16:11:07 -!- TieSoul has quit (Ping timeout: 245 seconds).
16:11:18 -!- TieSoul_ has changed nick to TieSoul.
16:11:29 <vanila> the interpreter for the program would have to do the same decryption work of course, so it wouldnt' be a efficient programming language
16:12:17 <cpressey> int-e: not cheating at all; in fact that's O(n) too. question is, is there any target language where you can't do it in O(n log n), even given tricks like that
16:12:42 <cpressey> s/where/into which/ maybe for clarity or maybe that makes it even less clear
16:14:00 <int-e> cpressey: Sure, take some enumeration of Brainfuck programs; encode the n-th program by the n-th fibonacci number in unary.
16:15:21 <int-e> But that's very artificial. I don't know of any natural restriction on a programming language with such an effect.
16:15:39 <int-e> Maybe compiling to a 2-counter Minsky machine would do the trick
16:16:36 <int-e> but probably that won't help either (modulo the encoding-dependent log(n) factor that I already mentioned for Turing machines)
16:17:03 <cpressey> int-e: artifical or not, that does seem to do the trick
16:20:09 <cpressey> here's to pathological, conjecture-defeating constructions!
16:22:05 <elliott> cpressey: have you considered "Eightebed II" as a name for whatever this is
16:22:39 <cpressey> elliott: er well no, as it seems so, y'know, different
16:22:49 <cpressey> not really a scion of the House of Eightebed, as it were
16:23:18 <cpressey> not that that matters much, I grant
16:23:53 <elliott> I was just reacting to "pathological, conjecture-defeating constructions"
16:24:51 <cpressey> You've read "Counterexamples in Analysis" and "Counterexamples in Topology", now comes "Counterexamples in Computability"!
16:25:33 <int-e> hum. "Beginning May 1, 2015, new Mac apps and app updates submitted to the Mac App Store may no longer use garbage collection, which was deprecated in OS X Mountain Lion. Instead, migrate your apps to Automatic Reference Counting"
16:26:23 <cpressey> first they tell you what programming language you must use. then they tell you what algorithms you must use.
16:27:18 <cpressey> "Beginning May 30, 2015, new Mac apps must not use Bubble Sort"
16:27:27 -!- SopaXorzTaker has joined.
16:28:11 <elliott> pretty sure that only means the objective-c garbage collector >_>
16:28:13 <int-e> Let's mandata Fibonacci heaps for all implementations of Dijkstra's algorithm...
16:28:19 <elliott> I'd be kind of surprised if they rejected, like, boehm
16:29:14 -!- boily has quit (Quit: IMPLODING CHICKEN).
16:40:55 <cpressey> A brainfuck-like language that only runs the program if it cannot find a shorter program that outputs the same result in less than 2^n steps
16:43:20 <cpressey> but, hey, Kolmogorov. can't beat Kolmogorov
16:46:42 <int-e> and it becomes trickier if the program gets inputs
16:47:10 <elliott> one time I looked at a book about kolmogorov complexity and it cited a person in this channel all over the place
16:48:25 <cpressey> elliott: did it cite them by nick?
16:48:46 <elliott> cpressey: insofar as their nick is -- well, let's not speak too loudly
16:50:38 -!- adu has joined.
16:51:06 <elliott> yes, of course, it was you
16:53:44 <int-e> oh well, this was fun. http://int-e.eu/~bf3/v6/
16:54:16 <vanila> you assembled it scrambed??
16:54:38 <int-e> mostly. only the corners need to be correct.
16:54:56 <vanila> how do you know it would be a solvable state
16:55:14 <int-e> The corners are the only thing that mattes at even sizes.
16:55:27 -!- not^v has joined.
16:55:43 <int-e> For odd sizes, you need to be careful with the center pieces of the edges as well.
16:55:52 <b_jonas> I'm still thinking on this Fast Fourier stuff. it's very interesting.
16:55:57 <elliott> int-e: oh ~bf3 probably isn't a reference to brainfuck...
16:56:01 <vanila> what about it b_jonas?
16:56:06 <int-e> elliott: nor battlefield
16:56:25 <elliott> honestly i don't understand the mechanism inside rubik's cubes
16:56:27 <int-e> elliott: It was my account name at my first university.
16:56:29 <elliott> their rotational abilities are a mystery to me
16:56:38 -!- boily has joined.
16:56:40 <elliott> please don't tell me. i love the mystery
16:56:43 <b_jonas> elliott: which one? the 3x3, or some different size?
16:56:47 <int-e> elliott: Have you ever taken apart a 3x3x3 one?
16:56:59 <elliott> no. honestly I've had very little interactions with them full stop
16:57:14 <elliott> I've probably tried to solve one, like, five times.
16:57:22 <b_jonas> elliott: the best way to understand it is to take a 3x3x3 apart then
16:57:23 <olsner> elliott: there are, like, twisty-turny things inside it
16:57:47 <b_jonas> vanila: just how the algorithms work in detail and when it's worth to use what variant
16:58:00 <b_jonas> maybe I should try to implement some as a test
16:58:13 <int-e> the 3x3x3 one is actually really simple. There are exactly as many moving parts as you can see (thinking of the cross in the middle as fixed)
16:58:44 <olsner> I encountered a rubik's cube that had differently shaped tiles instead of different colors, that thing really looked like it shouldn't spin at all
16:58:48 <elliott> how does the complexity of the internals scale with the size
16:59:09 <b_jonas> olsner: do you mean the silver mirror cube in particular, or some other variant?
16:59:27 <int-e> I got myself a https://en.wikipedia.org/wiki/Megaminx recently.
16:59:38 <b_jonas> elliott: hard to tell, because they can't do it for arbitrarily large size, and I think there's more than one mechanism for some large sizes
16:59:52 <b_jonas> funnily the 3x3x3 is the most natural
16:59:58 <elliott> olsner: wow this is terrifying
17:00:00 <b_jonas> because of what int-e says
17:00:06 <olsner> actually it might be *easier* to figure out how it works from a silver mirror cube
17:00:12 <vanila> I can't solve the rubiks cube :(
17:00:20 <b_jonas> it's a bit harder to solve than the ordinary cube,
17:00:27 <vanila> I tried to solve it for a long time but I didn't figure it out
17:00:53 <vanila> people who have solved it: did you look up a guide or get told what to do or figure it out youreslf?
17:00:58 <b_jonas> but I wish I had had it when I was in high school, because it's possible to solve it without looking, so I could have solved it under the desk during a class while pretending to listen to the teacher
17:01:16 <b_jonas> vanila: looked up guides, and figured out a few changes myself
17:01:41 <b_jonas> but I haven't practiced much so I still solve it somewhat slowly (and ever more slowly as I forget)
17:01:49 <int-e> vanila: I looked up guides, forgot half of them, discovered a few combinations myself, learned some from other people ... and by now I know enough to be able to solve it from scratch /in principle/.
17:02:07 <vanila> I think I could write a comupter program to solve it
17:02:18 <b_jonas> also, I'm using the third method to solve it so far
17:02:26 <b_jonas> I first learnt a very bad method
17:02:29 <int-e> (Meaning I know enough theory to solve pretty arbitrary permutation puzzles.)
17:02:50 <b_jonas> by the way, there's a channel for the rubik's cube on, um, probably freenode, let me check
17:03:13 <vanila> once I tried to join the twistypuzzles forum
17:03:19 <vanila> they seem kinda weird :/
17:03:24 <int-e> (Or, failing that, using GAP to do it for me)
17:03:30 <vanila> they dont like new members
17:06:08 -!- SopaXorzTaker has quit (Remote host closed the connection).
17:06:18 <vanila> I wonder if i can solve the rubiks cube if i keep trying
17:06:30 <vanila> the thing is, the closer you get to solved.. the less freedom you have to solve it
17:06:50 <vanila> so unless it magically falls into place near the end you might as well scramble it randomly and start again
17:07:00 <int-e> vanila: the trick is to find combinations that affect as few cubes as possible.
17:07:32 <vanila> http://www.telegraph.co.uk/news/newstopics/howaboutthat/4217732/Rubiks-Cube-finally-solved-after-26-years-by-avid-fan.html
17:07:51 <int-e> Conjugates and commutators work pretty well.
17:08:07 <elliott> Long-suffering wife Jean, 47, said the cube has frequently put a strain on their marriage, causing blazing rows between the pair.
17:08:46 <elliott> Ray Hodgkin of the governing body for Rubik's Cube competitions, the World Cube Association (WCA), said: "I think this is definitely the longest it has ever taken someone to complete a Cube.
17:09:34 <vanila> Emacs Pinky and Cubist's Thumb
17:10:04 -!- bb010g has quit (Quit: Connection closed for inactivity).
17:10:45 -!- cpressey has quit (Ping timeout: 252 seconds).
17:10:56 <elliott> it's kind of inspiring to me that I just have to achieve something really, really slowly to get on the news
17:12:30 -!- boily has quit (Quit: TAGGED CHICKEN).
17:14:01 <b_jonas> elliott: yeah. there's a joke about that but it doesn't work so well in English: an <approperiate target> says he's achieved a record because he's completed a jigsaw puzzle in three years, when its packaging says [for ages] over six years
17:14:14 <int-e> elliott: I wonder if we could do this with a 20 pieces puzzle (with a staggering number of 2675004047229796708138352640000 possibilities (20! placements * 4^20 orientations))
17:15:58 <int-e> (That's more possibilities than the Rubik's cube has.)
17:18:17 <b_jonas> by the way, if you like permutation puzzles in general, I recommend http://www.jaapsch.net/puzzles/
17:18:43 <vanila> I like oscars channel on youtube
17:19:18 <vanila> https://www.youtube.com/user/OskarPuzzle/videos
17:29:11 <myname> another haskell: so... i want to make read for an enum based on a simple char matching. any examples that is not this oversized tree thingie? i really just need to do "x" -> Foo
17:30:00 <vanila> case str of "x" -> Foo ?
17:31:10 <myname> yeah, my problem is the Read class
17:31:25 <vanila> well just call this something else than read
17:31:28 <myname> as far as i understand you cannot just simply write a read function
17:31:34 <vanila> you can do that, but dont
17:36:54 -!- ais523 has joined.
17:37:57 -!- SopaXorzTaker has joined.
17:53:00 -!- cpressey has joined.
17:54:01 <cpressey> <elliott> is it superexponential
17:54:14 <cpressey> if it's not, we should invent one where it is, because that's a very entertaining thought
17:56:21 -!- not^v has quit (Ping timeout: 244 seconds).
17:56:48 -!- not^v has joined.
18:01:37 -!- not^v has quit (Ping timeout: 264 seconds).
18:07:55 -!- adu has quit (Quit: adu).
18:15:31 -!- ThisFalseReality has joined.
18:15:51 -!- ThisFalseReality has left.
18:18:55 <cpressey> yea, ThisFalseReality, this channel is not what you thought
18:19:24 <cpressey> is there a way to download all (or a years' worth of logs) in a tarball or eqv?
18:19:51 <cpressey> i want to grep them for a language name I proposed years ago
18:20:12 <cpressey> i don't remember the full name and I doubt any web search will let me search by part of name or regexp
18:20:33 <cpressey> i don't want to crawl codu or tunes but, if i have to, i guess i can
18:23:25 <cpressey> "Apache/2.2.22 (Debian) PHP/5.4.36-0+deb7u3 mod_ssl/2.2.22 OpenSSL/1.0.1e Server at tunes.org Port 80"
18:24:58 <elliott> and you'll get instructions in /notice
18:25:23 <cpressey> whoever runs tunes.org: you might want to think about upgrading your openssl
18:26:35 -!- boily has joined.
18:28:39 <cpressey> no rsync server on codu.org it seems
18:28:50 -!- SopaXorzTaker has quit (Remote host closed the connection).
18:28:52 <elliott> well I have the logs up to 2014-09
18:28:58 <elliott> I can get them to you if you want
18:32:22 <elliott> by which I mean, three and a half minutes, approximately
18:33:24 <int-e> I've done crazy things like wget -c http://codu.org/logs/_esoteric/2015-02-{1,2,3}{0,1,2,3,4,5,6,7,8,9}{-raw,}.txt ever since the rsync server was disabled
18:33:49 <elliott> but for pre-2012ish stuff the codu ones are nice
18:54:09 <boily> just drank a potion of mut, and got three beneficial mutations. the RNG will punish me hard an soon...
18:57:49 -!- ProofTechnique has joined.
19:02:45 -!- ProofTechnique has quit (Ping timeout: 265 seconds).
19:13:12 -!- boily has quit (Quit: BLOCK CHICKEN).
19:16:24 -!- devdean has joined.
19:18:25 -!- ais523 has quit.
19:18:37 -!- ais523 has joined.
19:26:10 -!- callforjudgement has joined.
19:27:15 <cpressey> 2010-09-14.txt:01:15:57: <cpressey> olsner: you should do that. and you should name it "Jonguilexiphonaugh"
19:27:54 <olsner> I haven't started on that project yet :)
19:28:22 <olsner> or, I have created the git repo for it, but it is still empty
19:28:42 -!- scarf has joined.
19:28:49 -!- ais523 has quit (Disconnected by services).
19:28:53 -!- callforjudgement has quit (Disconnected by services).
19:28:55 -!- scarf has changed nick to ais523.
19:36:52 <Koen_> sounds like a korean musical instrument thing
19:37:41 <cpressey> olsner: if you're still using it, then i won't be tempted to borrow it back, but it was really nice to recall just what it was
19:38:31 <cpressey> i have ideas and sketches that linger in a textfile in a repo that sometimes stay there for years before i do anything with them
19:38:57 <olsner> well, if you have a use for the name that might actually materialize, feel free to take it back :)
19:39:32 <cpressey> well, i discovered that simply grepping the logs for 'good name' reveals a treasure trove, so there's no shortage
19:40:37 <cpressey> i also have a bunch of names in the aforementioned textfile, and a bunch of chronically incomplete ideas, and so forth
19:42:03 <cpressey> slightly tempted to write up this kolmogorov-ais523-counterexample-thing, but i guess i already named it EXP[L]BLARGL anyway
19:42:05 <ais523> I rarely have trouble naming esolangs
19:42:40 -!- arjanb has joined.
19:42:54 <elliott> cpressey: just look at the deleted page list
19:43:01 <elliott> the entertaining titles were mostly from a few years ago
19:43:34 * int-e looks for http://esolangs.org/wiki/I_rarely_have_trouble_naming_esolangs but finds nothing
19:44:03 <cpressey> ais523: we seem to have blown some large holes in your "write byte #n in O(1) time" idea, btw. sorry.
19:44:17 <cpressey> i mean it's entirely possibly i don't understand exactly what your approach is, too
19:44:40 <ais523> cpressey: the idea was unfinished, so I'm not surprised that there are problems with it
19:56:36 -!- ais523 has quit.
19:56:41 -!- callforjudgement has joined.
19:57:47 -!- callforjudgement has changed nick to ais523.
20:02:45 <Koen_> int-e: do you often have trouble finding esolangs?
20:03:43 <int-e> Koen_: Not really.
20:04:02 -!- cpressey has quit (Ping timeout: 246 seconds).
20:04:07 <Koen_> "for instance I find brainfuck derivatives all the time"
20:04:09 <int-e> Koen_: As a rule it only happens if I make up a name.
20:05:24 <b_jonas> yeah, there are too many brainfuck derivatives
20:05:51 <ais523> there are always too many bad BF derivatives
20:05:55 -!- GeekDude has quit (Quit: ZNC - http://znc.in).
20:05:59 <ais523> there are occasional good BF derivatives, but that's the exception rather than teh rule
20:06:00 <b_jonas> are there any underload variants yet, or unlambda variants, or Chef variants?
20:06:11 <ais523> underlambda's arguably an underload variant
20:07:33 <ais523> or, not arguably, underload-minus-S was my starting point for it
20:10:23 -!- ais523 has quit (Remote host closed the connection).
20:10:32 -!- ais523 has joined.
20:17:51 -!- cpressey has joined.
20:28:54 <cpressey> btw, does anyone here have an ACM subscription, and if so, would you be willing to download a recent article and tell me if you think it is satirical or not?
20:30:17 <cpressey> http://cacm.acm.org/magazines/2015/2/182650-in-defense-of-soundiness/abstract
20:30:36 <cpressey> if that is a joke, the abstract is quite deadpan
20:30:53 <cpressey> and if it's not a joke, i'm slightly terrified that static analysis has come to this
20:35:25 <b_jonas> cpressey: downloaded, grab it quickly from http://russell2.math.bme.hu/~ambrus/pu/a.pdf
20:36:33 <cpressey> thanks for lending me your copy. i'll return it forthwith
20:37:22 <olsner> I thought soundness would be the other way around, e.g. completely sound = excluding all impossible executions, while not saying anything about the possible ones
20:40:28 <olsner> so an "everything is fine because I don't know that any part of your program will execute" analysis would be completely sound, but lacking in completeness?
20:42:37 <olsner> hmm, maybe it just depends on whether you're proving that a program has problems, or that it does not
20:44:24 <int-e> Without reading the article... program analysis is hard, which means that sound tools will produce lots of false positives, which means that programmers will be discouraged from using the tools.
20:46:06 -!- AnotherTest has joined.
20:46:20 <int-e> olsner: Anyway, "soundness" tends to be defined from the perspective of positive answers. So a tool is sound if, when it finds not problems, the program is correct.
20:47:58 <int-e> Actually that should extend to definitive answers. But that leaves a lot of cases where all a tool can say is "I don't know, but this piece of code looks suspicious."
20:48:04 <cpressey> it's far more the adding of -y to a piece of mathematical terminology that freaks me out
20:48:44 <cpressey> we analyze models of programs, not programs themselves (although they are far closer to each other than, say, bridges and structural engineering calcs)
20:48:58 <int-e> maybe I should have a look after all
20:53:30 <int-e> "eval" is a nice example. Either you flag every program containing eval as dangerously wrong, or you trust the programmer.
20:57:53 <int-e> "Soundy is the new sound", well, eww.
20:58:24 <cpressey> "our analyzer is sound for Language-{eval}", is it so hard to just say that?
20:58:45 <cpressey> anywa, appears to not be a joke
20:59:11 <int-e> I think I'm more upset about the silly name ("soundy") than about the concept as such.
21:00:13 <olsner> my impression is that these static analysis tools make no attempt to be sound like that - they are very concerned about not having false positives, not concerned with being able to find all problems
21:00:36 <cpressey> false positives ARE a pain, but
21:00:46 <int-e> Yes, I believe it's all about avoiding false positives.
21:02:54 <int-e> (I also disagree with the article where it says that we know how to model features like "eval" in principle. I don't think we can say much beyond "anything may happen", which for an analysis tool is tantamount to throwing in the towel. "Loss of precision" is just a technical phrase describing this phenomenon.)
21:03:05 <cpressey> to be fair, this is not *as* bad an article as I have seen in the ACM in the past
21:04:49 -!- AnotherTest has quit (Ping timeout: 245 seconds).
21:05:22 <int-e> ("eval" is extreme of course. I'm a bit surprised that tools would treat it as doing nothing. For setjmp/longjmp, I guess the excuse is that people (hopefully!) only use it for exceptions, and in the case of casts, that programmers have been trained to think long and hard about them. I don't know about Java's reflection.)
21:06:53 <cpressey> eval("literal code") is obviously easy; eval(random_string()) is obviously impossible; I imagine there are a few cases (like eval("temp %s late" % foo)) where you could pick it apart; but it's probably not used frequently enough to justify it
21:06:54 <int-e> Oh and of course the performance measure for these tools is "found NNN real bugs with N false positives" rather than "missed MMM bugs".
21:08:39 <cpressey> bugs me to pieces when i see Python code like getattr(a, 'thing_' + b)
21:09:12 <cpressey> even if you've given up hope of ever running a static analyzer on it
21:09:25 <cpressey> when I see a.thing_foo in code, I expect to be able to grep for thing_foo
21:09:39 <cpressey> and have it, like, you know... show where it is defined
21:10:25 <int-e> Yes, that's awful.
21:12:06 -!- devdean has left.
21:13:46 -!- TieSoul has changed nick to TieSleep.
21:17:58 <cpressey> and as I understand it, Java reflection is a bit like that - here's a string, get me the method with that name
21:20:46 <int-e> And if you want to go wild, you can implement your own ClassLoader and generate bytecode on the fly.
21:22:42 <int-e> And you know that when it's possible, it's also done. (The keyword here is "bytecode enhancer".)
21:23:11 <cpressey> dim memories of using one of those, once
21:24:01 <int-e> Another problem with Java is, things often hide behind interfaces, which are instantiated by frameworks like Spring, which means you get to browse XML files (joy!) to find what classes are actually used to implement them.
21:24:33 <int-e> I try to stay far away from that stuff.
21:25:24 <int-e> https://en.wikipedia.org/wiki/Dependency_injection
21:27:12 <int-e> oh and this discussion reminded me of https://github.com/EnterpriseQualityCoding/FizzBuzzEnterpriseEdition
21:27:24 <vanila> java has some esotericness that could not happen intentionally
21:28:15 <int-e> Because how could anybody make the code modular and reusable without a FizzBuzzSolutionStrategyFactory!
21:28:25 -!- Patashu has joined.
21:34:08 -!- Patashu has quit (Remote host closed the connection).
21:34:27 -!- Patashu has joined.
21:40:11 * cpressey makes his first edit to the esowiki in, pfff, years
21:42:30 -!- AnotherTest has joined.
21:48:10 <ais523> hmm, it didn't get announced in #esoteric, most wiki edits do
21:48:32 <ais523> it showed up on RSS though
21:48:44 <cpressey> didn't know there was an editbot
21:51:14 <ais523> there is normally, but I suspect it's down right now
21:52:55 <b_jonas> maybe it is on the vacation with fungot?
21:58:33 <cpressey> do not like that 'cabal update' gives you no progress bar
22:00:02 <cpressey> maybe i should be carping about that in #haskell and not here, apologies
22:01:03 * cpressey has caved in and is going to try writing something in Agda
22:01:16 <cpressey> "try" being the operative word there
22:03:50 <lambdabot> Exception e => IO a -> IO (Either e a)
22:03:57 <Taneb> Apparently there is try
22:06:47 * cpressey watches seven zillion haskell libraries build
22:18:14 * int-e watches cpressey exaggerate.
22:18:59 * int-e is building ghc on a ramdisk out of sheer boredom.
22:20:12 <Taneb> cpressey, Agda is a function that maps cabal install to an electric heater
22:35:36 -!- ProofTechnique has joined.
22:38:49 -!- Lymia has joined.
22:40:01 -!- ProofTechnique has quit (Ping timeout: 252 seconds).
22:44:37 <cpressey> Taneb: ah! but at least it is a *total* function that maps cabal install to an electric heater
22:45:00 <cpressey> hrm, it errored while I was writing an article
22:45:01 <cpressey> http://esolangs.org/wiki/EXPBLARGL
22:48:19 <cpressey> heck, I dunno ais523 , that might actually be relevant to you
22:49:17 -!- ais523 has quit (Read error: Connection reset by peer).
22:49:19 <Taneb> cpressey, I think all brainfuck programs are valid Underload programs and vice versa.
22:49:25 -!- ais523 has joined.
22:49:32 <Taneb> (both have very unrestrictive grammars)
22:49:52 <cpressey> Taneb: if you like, I can clarify that
22:50:01 <Taneb> Although an Underload program beginning with ++[>+++++<-] would be pretty useless
22:50:18 <Taneb> cpressey, I mean, it's like the least important thing with the language
22:50:42 <ais523> it's easy to make a BF/Underload polyglot
22:50:43 <cpressey> apparently [] are reserved in Underload, so that's one thing
22:50:49 <ais523> by using the ()! convention
22:50:55 <ais523> and ignoring the reserved characters because everyone else does
22:51:29 <Taneb> cpressey, they're required to be balanced, but brainfuck also has that restriction
22:51:44 <Taneb> Although "(" is a valid brainfuck program but not valid Underload...
22:51:55 <ais523> it's because Overload uses [] for pointers
22:52:15 <cpressey> well, assume that if it contains only +-><[]., it's brainfuck, else it's Underload
22:52:37 <ais523> (Underload is a derivative of a vaporware language, how's that for weird things to be derivatives of?)
22:52:51 <Taneb> cpressey, thus preventing the brainfuck from having any comments?
22:52:52 <cpressey> this may exclude some Underload programs, force them to be interpreted as brainfuck -- I don't care, it matters not
22:53:13 <Taneb> ais523, I have (or had) an Ook! derivative somewhere
22:53:16 <cpressey> after all, these are not really meant to be generated by hand
22:53:27 <cpressey> this is essentially the target language of a TM-compiler
22:53:56 <cpressey> which sounds weird but is actually a central thing in computability, innit
22:55:02 <ais523> I think one shortcoming of EXPLBARGL is that it also needs exptime to /run/
22:55:37 <Taneb> Sorry, dropped my keyboard
22:57:27 <cpressey> ais523: you saw shortcoming, I say AWESOME
22:58:03 <cpressey> my quips would have so much better delivery if I didn't typo so much
22:58:30 <Taneb> That worked even with the typo, I think
23:01:00 <cpressey> it's probably very difficult to find a way to make a mapping that is hard to compute, while letting the target language itself be easy to interpret
23:01:19 <cpressey> certainly beyond my current reasoning capacity
23:07:52 <cpressey> actually, a much simpler way to ensure it's outside of P would be to use int-e 's trick but replace "fibonacci" with "ackermann"
23:08:54 <Taneb> If you're using the ackermann function, you mayswell have it in a sensible base
23:09:05 <Taneb> log(A(5,5)) is still huge
23:10:01 <cpressey> also, it violate's Minsky's Maxim if you use ack
23:10:17 <cpressey> (said maxim being the mapping should be at most PR)
23:11:36 <Taneb> Oh, primitive recursive
23:12:44 -!- AnotherTest has quit (Remote host closed the connection).
23:16:02 <cpressey> Taneb: yes. although, I think that was more or less an offhand remark he made, since he was considering rather more efficient mappings, and not pathological cases like this.
23:16:44 <cpressey> it's difficult for me to say, "well, the mapping is total and terminating, but it's not primitive recursive, so the language isn't turing complete"
23:38:18 -!- zzo38 has joined.
23:48:33 <Taneb> @tell oerjan Because of you, "hth" has entered my general vocabulary. I am not happy about this circumstance.
23:53:13 <Koen_> I still don't know whether to read it "hopes that helps" or "happy to help"
23:53:35 -!- boily has joined.
23:53:43 <ais523> I think the meaning is more along the lines of "this sentence is slightly informative, but mostly trolling"
23:53:48 <Taneb> Koen_, I've always read it as "Hope this helps"
23:54:19 <HackEgo> hth is help received from a hairy toe. It is not at all hambiguitous.
23:56:07 <Taneb> Koen_, I've always assumed that to mapole something is to hit them with a maypole
23:56:43 <Koen_> I've been assuming that for the past two minutes too
23:56:46 <elliott> ais523: that's overestimating the informativity in my expeirence :p
23:57:07 <ais523> no, "expeirence" is not a word hth
23:57:15 -!- ChanServ has set channel mode: +o elliott.
23:57:17 <HackEgo> A mapole is a thwackamacallit built from maple according to Canadian standards.
23:57:20 -!- elliott has set channel mode: -o elliott.
23:57:36 <boily> Koen_: Khelloen_! long time no see!
23:57:56 <boily> Taneb: tanelle. the mapole is good all year long. it's more than a maypole!