00:00:27 <olsner> I've never used TH though, so what do I know
00:09:01 <zzo38> I know, Haskell doesn't do very good thing such as macro and so on.
00:18:34 -!- ais523 has quit.
00:43:06 <Sgeo> I wonder if I should make a Taxicheat language -- a way to write Taxi programs without dealing with the stuff that makes Taxi interesting.
00:43:15 <Sgeo> Compiler written in Prolog of course.
00:44:33 -!- TodPunk has quit (Quit: This is me, signing off. Probably rebooting or something.).
00:48:48 <Sgeo> Either I'm misunderstanding Logtalk, or they actually managed to create an "OO" system that is ZERO DISPATCH
00:51:22 -!- nortti_ has quit (Quit: AndroIRC - Android IRC Client ( http://www.androirc.com )).
00:51:55 -!- AlsoFreeFull has joined.
00:54:22 <AlsoFreeFull> http://paste2.org/p/2097935 My source code so far
00:55:00 -!- pikhq has quit (Ping timeout: 244 seconds).
00:55:03 -!- pikhq_ has joined.
00:55:42 <AlsoFreeFull> I can worry about making it pretty and sparkly later
01:04:32 -!- TodPunk has joined.
01:06:58 -!- AlsoFreeFull has quit.
01:17:37 -!- augur has joined.
01:17:41 -!- derdon has quit (Remote host closed the connection).
01:22:42 -!- rodgort has quit (Quit: ERC Version 5.3 (IRC client for Emacs)).
01:24:44 -!- rodgort has joined.
01:28:04 -!- augur has quit (Remote host closed the connection).
01:31:33 <shachaf> kmc: Where are you these days?
01:32:27 <Sgeo> http://www.reddit.com/r/fivethirtyeight whatthefuck
01:37:51 <Phantom_Hoover> Hey wait guys remember when I said the computer on Apollo 11 had 2800 NOR gates?
01:38:03 <Phantom_Hoover> I just reread the WP article and actually it had 5600.
01:38:34 <oerjan> so i guess you were half right.
01:38:43 <zzo38> Did you read about the game I invented that is using snooker balls? Is there anything wrong with the rules?
01:41:24 <zzo38> No, it is a different game, with the same equipment.
01:41:39 <zzo38> gopher://zzo38computer.cjb.net:70/0textfile/gamerules/00001 and http://zzo38computer.cjb.net/textfile/gamerules/00001 are both valid links to plain text
01:41:46 -!- augur has joined.
01:42:19 <quintopia> yeah but no one in this channel except you uses gopher
01:43:15 -!- augur has quit (Read error: Connection reset by peer).
01:43:25 -!- augur has joined.
01:45:25 -!- shachaf has changed nick to s.
01:45:31 -!- s has changed nick to shachaf.
01:48:57 <zzo38> You can access them both from the command-line too; they are not HTML
01:49:26 <zzo38> I think the guy to made CLC-INTERCAL uses gopher too
01:49:50 <zzo38> (I think his gopher is IPv6 only)
01:51:09 <zzo38> quintopia: Read the rules carefully; I think these rules will ensure that a frame will always eventually end.
01:51:19 <shachaf> 18:49 <zzo38> (I think his gopher is IPv6 only)
01:51:26 <shachaf> I wonder whether that sentence has ever been said before.
01:51:32 <zzo38> (One way it will end is if all the players are out.)
01:51:32 <shachaf> @remember zzo38 (I think his gopher is IPv6 only)
01:52:13 <quintopia> zzo38: what if the players never get out
01:52:35 <quintopia> i mean, pros would be really good at staying in
01:53:09 <zzo38> quintopia: If there is a foul, the players will be out. And if the balls are placed such that they have to be played again, it is a foul. So if the balls have to be played again enough times, there will be enough fouls that you will have to be out eventually.
01:53:27 -!- pikhq_ has quit (Ping timeout: 240 seconds).
01:53:28 -!- pikhq has joined.
01:54:10 <quintopia> zzo38: that isnt what came across in the reading. is there no penalty for that kind of foul?
01:54:35 <zzo38> The penalty is the same for all fouls.
01:55:20 <quintopia> so wouldnt the scores of pros be consistently negative? it seems like you stand to lose more than you stand to gain in a frame
01:58:14 <zzo38> A ball will only be played if it is in the baulk or off the table. And if something causes a ball which is on the table to be moved there, it is a foul. If there are ten fouls total by one player during a game, that player is out. Therefore, a frame cannot last an unlimited number of turns.
01:58:29 <zzo38> I would think that a pro would not foul unless it is deliberate.
01:58:33 <quintopia> and it looks like, since a frame cant end until potentially tons of fouls are made, most of the time all the players but one will end up out of the game before even the first couple of frames have passed
01:58:53 <zzo38> No; a frame ends when there are no more balls to play.
01:59:03 <zzo38> (Although maybe I should change it so that potting a ball belonging to an out player is not a foul.)
01:59:36 <zzo38> So if there are no fouls, then there will be exactly six turns per frame.
02:00:11 <quintopia> it might help if i knew what the snooker terms meant
02:00:57 <quintopia> so if certain fouls do occur, then the frame goes on longer
02:01:52 <zzo38> Yes, as long as they are the fouls described by this text. (Other fouls, such as touching the balls by hand when these rules do not specify you are allowed to, are grounds for disqualification if done deliberately.)
02:05:16 <zzo38> Hopefully it is understood now? Is there any suggestion about how to adjust it to make the text clearer, if it seems unclear?
02:10:24 <zzo38> I have already made a few changes.
02:13:42 -!- augur has quit (Remote host closed the connection).
02:31:49 -!- david_werecat has quit (Ping timeout: 248 seconds).
02:41:55 <pikhq> Where did that come from?
02:42:11 <pikhq> Somehow, there's 3 more episodes!
02:45:03 <pikhq> Phantom_Hoover: The emasculation plague is not yet complete!
02:45:30 <Phantom_Hoover> Sorry no I have to BLOW UP SOME KITTENS WITH A MOTORBIKE
02:56:00 -!- Phantom_Hoover has quit (Read error: Connection reset by peer).
03:01:00 -!- monqy has joined.
03:03:42 -!- Yonkie has quit (Ping timeout: 264 seconds).
03:13:19 <Poniest> pikhq: Uhh, how exactly did you miss three episodes?
03:14:08 <pikhq> Poniest: I don't know!
03:14:19 <pikhq> Somehow I skipped from S1E23 to S2E2 though.
03:14:33 <Poniest> You missed the season opener?!?!?
03:14:38 <Poniest> YOU MISSED ~spoiler~?!?!?!
03:14:39 <pikhq> No, that was a typo.
03:14:46 <pikhq> I skipped from S1E23 to S2E1.
03:15:19 <Poniest> You missed Party of One?!?!
03:15:26 <Poniest> S1's best episode arguably!
03:15:30 <pikhq> I'm watching it presently.
03:15:42 <Poniest> Well then I'll leave you to it!
03:16:36 <pikhq> So, yeah, no worries, I'm rectifying the mistake.
03:16:43 <pikhq> Just WTF how did I do that.
03:17:00 <Poniest> Well at least you didn't miss Equestria's Q.
03:17:13 <shachaf> Poniest: Do you ever have the same nick twice?
03:17:22 <Poniest> shachaf: I'm frequently Gregor.
03:17:45 <Poniest> And I was consistently Gregor for like two years.
03:17:56 <shachaf> What became of consistency?
03:20:15 -!- david_werecat has joined.
03:58:42 <FreeFull> So I've got something that is semi-usable as an IRC client
03:58:48 -!- AlsoFreeFull has joined.
04:00:28 -!- oerjan has quit (Quit: Good bye).
04:03:44 -!- AlsoFreeFull has quit.
04:03:47 -!- pikhq has quit (Ping timeout: 240 seconds).
04:03:58 -!- pikhq has joined.
04:17:22 <zzo38> What things do you mean?
04:19:55 <pikhq> Huh. MLP fails the reverse Bechdel test with regularity
04:20:02 <pikhq> Now *there's* a rarity for you.
04:20:32 -!- Slereah has joined.
04:23:10 -!- Slereah_ has quit (Ping timeout: 248 seconds).
04:38:18 -!- mig22 has joined.
04:42:45 -!- asiekierka has joined.
04:53:08 -!- variable has changed nick to constant.
04:57:27 -!- stanley has quit (Ping timeout: 240 seconds).
04:58:13 -!- stanley has joined.
05:03:59 <zzo38> What does that mean?
05:10:39 -!- Yonkie has joined.
05:11:27 -!- augur has joined.
05:13:09 <zzo38> "MLP fails the reverse Bechdel test with regularity".....I fail to understand what that means.
05:13:30 -!- ogrom has joined.
05:14:13 <zzo38> Well, I looked it up in Wikipedia now so I know what Bechdel test means but I still fail to understand your statement.
05:15:05 <nys> reverse Bechdel test would be like the Bechdel test but with men
05:15:26 <nys> whatever reversed means
05:26:39 <zzo38> As far as I know I think my recording of the Dungeons&Dragons game fails the Bechdel test (even the non-strict version) despite one of the players being female (her character is a male human).
05:27:44 <zzo38> s/male human/male human fighter/
05:38:32 <zzo38> And Fukumoto's stories rarely have any women at all, mostly because he is bad at drawing women.
05:47:43 -!- Jafet has joined.
05:58:07 <zzo38> In his manga "Akagi", there is only one woman in the entire series who only appears once as the owner of a store selling cigarettes.
06:19:30 <zzo38> What is "Anarcho-Totalitarian"?
06:30:08 -!- nooga has joined.
06:32:35 -!- nvt has quit (Ping timeout: 246 seconds).
06:34:22 -!- soundnfury has joined.
06:40:50 -!- pikhq_ has joined.
06:43:49 -!- pikhq has quit (Ping timeout: 246 seconds).
07:12:57 -!- epicmonkey has joined.
07:16:09 -!- ogrom has quit (Read error: Connection reset by peer).
07:16:57 -!- ogrom has joined.
07:18:59 <Deewiant> https://twitter.com/SarcasticRover
07:32:07 -!- epicmonkey has quit (Ping timeout: 246 seconds).
07:50:06 -!- nvt has joined.
08:06:53 -!- nys has quit (Quit: bed).
08:19:29 -!- ogrom has quit (Quit: Left).
08:20:04 -!- zzo38 has quit (Remote host closed the connection).
08:36:09 -!- epicmonkey has joined.
08:47:02 -!- Sgeo has quit (Read error: Connection reset by peer).
09:08:17 -!- Jafet has quit (Read error: Connection reset by peer).
09:08:50 -!- Jafet has joined.
09:12:42 <shachaf> kmc: Do you know about llvm-mc?
09:16:42 <shachaf> E.g. echo '0xcd 0x80' | llvm-mc -disassemble; echo 'int $0x80' | llvm-mc -assemble -show-encoding; etc.
09:18:16 <shachaf> (It's more of a magic trick if you already have LLVM installed, like I did.)
09:30:56 -!- epicmonkey has quit (Remote host closed the connection).
09:31:06 -!- epicmonkey has joined.
09:50:17 <fizzie> I used to have nasm/ndisasm-based script for that. (It's not as convenient because it refuses to deal with FIFOs.)
09:55:20 <shachaf> llvm-mc also does a bunch of other useful things.
10:00:28 -!- Taneb has joined.
10:16:32 -!- derdon has joined.
10:32:21 -!- david_werecat has quit (Ping timeout: 276 seconds).
10:41:03 -!- ais523 has joined.
11:02:10 -!- azaq23 has joined.
11:02:25 -!- azaq23 has quit (Max SendQ exceeded).
11:03:00 -!- azaq23 has joined.
11:11:35 -!- Jafet has quit (Quit: Leaving.).
11:40:06 -!- boily has joined.
11:58:50 -!- Phantom__Hoover has joined.
12:30:12 -!- yiyus has quit (Remote host closed the connection).
12:44:59 <ais523> <Raymond Chen> I followed up: "Well, in that case, why are we asked to evaluate you every year on whether your actions are planful? How can we answer a question that uses a made-up word nobody knows the definition of?"
12:45:22 -!- yiyus has joined.
12:47:40 <Taneb> I think the circle-ellipse problem could be solved with an Oval class
12:47:52 <Taneb> Not ever having done significant amounts of OO programming
12:49:06 <ais523> Taneb: I think the only "correct" solution involves SymmetricalEllipse and NotNecessarilySymmetricalEllipse classes with a common base
12:49:45 <Taneb> I'm gonna stick with Haskell for now
12:49:49 <Taneb> It's easy to understand
12:50:15 <Taneb> (that is, I understand it to a level where I can understand new concepts common within Haskell with relative ease)
12:53:04 <Taneb> In other news, I don't think that any companies are inherently evil anymore.
12:53:29 <Taneb> Some are nasty, and some I'd boycott, and some I can't name any good things that they've done
12:53:37 <Taneb> But any company has at least the potential to do good
12:53:54 <Taneb> In other other news, I'm gonna get some lunch, then some guitar hero, then walk my dog
12:57:47 -!- Sgeo has joined.
13:20:18 <Sgeo> XPCE is horrifically ugly
13:20:27 <Sgeo> It's like it's as ugly as Tk used to be.
13:33:19 <nooga> who uses prolog anyway
13:42:00 * Sgeo wants to use Prolog
13:47:48 -!- elliott has joined.
13:49:16 -!- pikhq_ has quit (Ping timeout: 252 seconds).
13:49:22 -!- pikhq has joined.
13:53:36 <Sgeo> Of course Oleg would do Prolog stuff.
14:02:34 -!- lifthrasiir has quit (Ping timeout: 246 seconds).
14:03:34 -!- lifthrasiir has joined.
14:13:23 <fizzie> People who want to annoy Perl programmers by using the same file extension.
14:14:12 <olsner> I think I've set up my vim to highlight perl as prolog
14:14:50 <olsner> luckily, I don't read perl so it took a long while to realize there was a file extension collision
14:15:35 <fizzie> Didn't they write first Erlang implementations in Prolog, or something like that?
14:48:09 -!- DHeadshot has joined.
14:53:11 -!- Poniest has changed nick to Gregor.
14:57:14 <ais523> <olsner> luckily, I don't read perl so it took a long while to realize there was a file extension collision <-- you don't read Perl because it's incorrectly syntax highlighted as Prolog? :P
14:57:31 <ais523> fizzie: Erlang was invented by Prolog fans, so quite likely
14:57:37 <ais523> (it explains the syntax similarities)
15:19:55 <Sgeo> Every single Prolog thread everywhere has someone simple stating either "No." or "Yes.". This statement will be well-regarded.
15:24:23 <olsner> ais523: I don't read perl because perl
15:25:40 <olsner> Sgeo: that would be "No." because a positive reply will come with assignments of variables rather than "yes", and you can get many positive replies
15:26:09 <olsner> (and after the last positive reply, you might see a "No." to say there are no more answers)
15:26:35 <Sgeo> Could have sworn I saw a Yes. once (not in Prolog but as a post)
15:26:47 -!- Taneb has quit (Ping timeout: 240 seconds).
15:26:56 -!- kmc has quit (Read error: Connection reset by peer).
15:27:53 -!- kmc has joined.
15:28:48 -!- Gregor has changed nick to Poniest.
15:29:33 -!- Poniest has changed nick to Gregor.
15:51:34 -!- Yonkie has quit.
15:51:38 -!- Taneb has joined.
15:53:02 -!- asiekierka has quit (Remote host closed the connection).
15:55:48 <Taneb> I swear half the time I just say "Hello" and leave 10 minutes later...
15:56:47 <Gregor> fizzie: If I make a bot that kickbans anyone who says just "hi" or "hello" (plus punctuation), will you op it for me?
15:57:55 <Taneb> Oooh, that sounds fun
16:01:32 <olsner> oh, and maybe it would be prudent to only do it for regulars... newcomers saying hi would instead be greeted with `welcome (or `WELCOME in case they say HI)
16:02:05 <olsner> and the welcome text would warn them that further greetings will result in a kickban
16:02:12 <Gregor> Ignorance of the law is no excuse.
16:04:37 <olsner> how long is the ban? permanent?
16:04:58 <Gregor> Retroactive and permanent. They're wiped from the logs and our collective memories.
16:05:04 <Gregor> They're effectively removed from existence.
16:05:23 <olsner> oh, isn't there a doctor who gadget that can remove people like that?
16:05:41 <Taneb> olsner, yeah, but it doesn't work
16:09:09 -!- mig22 has quit (Quit: mig22).
16:13:24 -!- mig22 has joined.
16:24:01 -!- mig22 has quit (Quit: Colloquy for iPhone - http://colloquy.mobi).
16:32:27 -!- epicmonkey has quit (Ping timeout: 276 seconds).
16:33:27 -!- cheater has quit (*.net *.split).
16:34:31 -!- cheater has joined.
16:34:56 -!- cheater has quit (Ping timeout: 255 seconds).
16:35:32 -!- cheater has joined.
16:42:57 -!- heroux has quit (Ping timeout: 252 seconds).
16:43:53 -!- heroux has joined.
16:44:23 -!- Sgeo has quit (Read error: Connection reset by peer).
16:44:50 -!- Sgeo has joined.
16:45:12 <Sgeo> :( at spontaneous disconnect
16:45:16 <Sgeo> Was there a netsplit?
16:46:23 <olsner> Sgeo: looks like only you split from the net
16:46:43 <Sgeo> It's only Freenode
16:48:28 -!- heroux has quit (Ping timeout: 245 seconds).
16:49:17 -!- heroux has joined.
16:51:12 <kallisti> Gregor: umlbox's /dev/urandom is not very random.
16:51:27 <Sgeo> What about /dev/random ?
16:51:47 <Gregor> Hmmmmm, yeah, I suppose it wouldn't b.
16:51:55 <kallisti> my guess is that because it initializes the kernel on each command that /dev/urandom hasn't had enough time to seed from /dev/random
16:52:15 <kallisti> in which case what does it seed with?
16:53:13 <kallisti> if I were /dev/urandom and didn't have a random seed, I'd use system clock.
16:57:07 -!- Taneb has quit (Ping timeout: 240 seconds).
16:58:42 <oklopol> woohoo i reached the canyon
16:59:45 <FreeFull> olsner: Instead of a gadget you can just destroy the universe and throw them into a time crack
17:13:35 -!- Taneb has joined.
17:16:51 <Taneb> Is Gregor's new bot here yet
17:32:44 -!- cknz has quit (Read error: Operation timed out).
17:34:14 -!- boily has quit (Ping timeout: 244 seconds).
17:34:31 -!- boily has joined.
17:34:43 -!- constant has quit (Ping timeout: 245 seconds).
17:37:25 -!- epicmonkey has joined.
17:42:24 -!- Nisstyre has quit (Ping timeout: 240 seconds).
17:42:28 -!- cknz has joined.
17:45:42 -!- Nisstyre has joined.
17:47:34 -!- boily has quit (Ping timeout: 260 seconds).
17:48:06 -!- heroux_ has joined.
17:51:41 -!- Phantom__Hoover has quit (Ping timeout: 245 seconds).
17:52:17 -!- boily has joined.
17:53:34 -!- Nisstyre has quit (Ping timeout: 246 seconds).
17:55:08 -!- heroux has quit (*.net *.split).
17:55:09 -!- jix has quit (*.net *.split).
17:55:09 -!- yorick has quit (*.net *.split).
17:58:02 -!- jix has joined.
17:58:02 -!- yorick has joined.
18:00:08 -!- zzo38 has joined.
18:01:45 -!- DHeadshot has quit (Read error: Connection reset by peer).
18:01:49 -!- DH____ has joined.
18:08:19 -!- Nisstyre has joined.
18:21:15 -!- variable has joined.
18:23:21 -!- cheater_ has joined.
18:25:33 -!- derdon has quit (Ping timeout: 276 seconds).
18:26:38 -!- cheater has quit (Ping timeout: 246 seconds).
18:31:29 -!- boily has quit (Quit: Poulet!).
18:35:29 -!- derdon has joined.
18:40:30 -!- oklopol has quit (Ping timeout: 276 seconds).
18:49:28 -!- Phantom__Hoover has joined.
18:50:47 -!- derdon has quit (Remote host closed the connection).
19:10:57 -!- KingOfKarlsruhe has joined.
19:12:27 <Taneb> You know what annoys me?
19:12:40 <Taneb> The most common abbreviation for the cosecant function
19:12:50 <Taneb> All the others are three letters!
19:12:55 <Taneb> Why does cosec have to be special!
19:13:06 <zzo38> I have used "csc" for cosecant
19:13:41 <Taneb> I'll switch to "csc" because consistency is the father of utility
19:16:26 <Sgeo> Why is Mozart/Oz dead?
19:17:12 <Sgeo> csc(x) = 1/sin(x)?
19:17:24 <Sgeo> Why call that cosecant and not secant?
19:17:53 <Taneb> Because it's the categoric dual to the inverse of the categoric dual of sine?
19:18:10 <Taneb> Is category theory even relevant here? I don't think it is
19:18:27 <Taneb> Because edwardk named them?
19:18:43 <fizzie> I have seen "csc" somewhere.
19:19:09 <fizzie> "The cosecant csc(A), or cosec(A)", says Wikipedia, sort-of implying that csc is more common, since it's first.
19:19:45 <Taneb> I was basing what I view as common as what my text books and my teachers use, even after I complained?
19:19:51 <Taneb> So, small sample size
19:20:25 <zzo38> Would you know how to emulate ZZT percussion sound on NES/Famicom?
19:20:34 <fizzie> Consistency-wise, though, you could also argue that since "sin", "cos", "tan", "sec" and "cot" are all directly the first three letter, the same kind of scheme must extend to the cosecant, and since "cos" is already taken, more letters are needed.
19:21:17 <Taneb> fizzie, that's what my teacher said
19:21:18 <zzo38> I have always used "csc" for cosecant
19:23:02 <Taneb> It's also annoying how the internet seems to decline latin nouns in a different order to me
19:23:31 <Taneb> I do Nom, Voc, Acc, Gen, Dat, Abl. Wiktionary etc do Nom, Gen, I lost interest
19:29:47 <elliott> Deewiant: You said fopen_s can do locking, right?
19:30:18 <Deewiant> elliott: http://msdn.microsoft.com/en-us/library/z5hh6ee9%28v=vs.80%29.aspx
19:30:25 <elliott> Deewiant: I'm already reading that. : (
19:30:56 <elliott> But there's nothing about locking on that page at all. :/
19:31:21 <elliott> (Hmm, wait, doesn't Windows lock all opened files, or something?)
19:31:44 <Deewiant> "Files opened by fopen_s and _wfopen_s are not sharable. If you require that a file be sharable, use _fsopen, _wfsopen with the appropriate sharing mode constant (for example, _SH_DENYNO for read/write sharing)."
19:33:34 -!- TodPunk has quit (Read error: Connection reset by peer).
19:33:47 -!- TodPunk has joined.
19:34:14 <elliott> I wonder if this fcntl locking thing is at all portable.
19:41:36 <FreeFull> fizzie: What about arctangent?
19:42:05 <FreeFull> Or hyperbolic trigonometric functions?
19:43:34 <Taneb> Wouldn't the c's crash flailingly into eachother and merge?
19:43:38 <fizzie> FreeFull: The abbreviations for those that I've seen (arcsin, arccos, arctan, arccot, arcsec, arccsc) are still first-letters based. (Well, except for the 'csc' in arccsc.)
19:44:08 <fizzie> (Admittedly sometimes it's just the 'a'.)
19:44:11 <Taneb> And I've been taught to use cot^-1
19:44:29 <zzo38> Or use something like $\rm csc^{-1}$
19:44:55 <FreeFull> arctan is useful when you want to create a textured tunnel
19:45:37 <Taneb> arctan is useful when you want to work out x in 0.2 = tan(x)
19:47:09 <FreeFull> You use arctan to get the x coordinate of the texture
19:47:23 <FreeFull> And 1/sqrt(x*x+y*y) for the y coordinate
19:53:04 -!- ogrom has joined.
19:54:25 -!- oerjan has joined.
20:13:19 <nortti> http://aiju.de/up/catabuse.png
20:17:18 <olsner> things I will never understand: how to build debian packages
20:20:27 <oerjan> nortti: sometimes those are different when a program treats pipes and files differently, though.
20:21:01 -!- Taneb has quit (Quit: I HUNGER).
20:21:16 <olsner> once I managed to build a debian package with an added patch, but I guess what happened was just that my RAM got corrupted in the form of a set of working .deb files
20:23:29 -!- nys has joined.
20:25:35 -!- KingOfKarlsruhe has quit (Read error: Connection timed out).
20:28:36 <oerjan> <olsner> Sgeo: that would be "No." because a positive reply will come with assignments of variables rather than "yes", and you can get many positive replies
20:28:47 <oerjan> what if you have a query without variables?
20:29:02 <oerjan> maybe Yes. is used then.
20:29:38 <Sgeo> SWI-Prolog seems to go with true and false, not Yes and No :(
20:29:50 <oerjan> although theoretically you could still backtrack into it...
20:30:17 <oerjan> it might also distinguish if there are no backtracking points, i guess.
20:30:57 <olsner> there could be side effects that you want to backtrack past
20:31:52 <oerjan> i recall Mercury has an entire set of declarations for whether predicates have single or multiple possible output, and in which directions data can flow.
20:31:52 <Sgeo> Prolog needs a purity thing, similiar to.... hmm, Mercury has a mechanism, but Mercury's too static-y for my tastes
20:32:00 <FreeFull> nortti: With grep, just grep "something" files
20:33:46 <FreeFull> nortti: Also sometimes you do cat something, see that it's too much data, and attach grep at the end because it's less typing than erasing the line and typing in the "proper" command
20:37:39 -!- ogrom has quit (Quit: Left).
20:38:06 <Sgeo> I'd like Mercury a lot if it were more interactive
20:45:04 -!- epicmonkey has quit (Ping timeout: 246 seconds).
20:53:53 -!- boily has joined.
21:15:41 -!- nooga has quit (Read error: Connection reset by peer).
21:15:42 <Sgeo> Is it really that unreasonable to want to make programs in Prolog that don't especially appeal to Prolog's strengths?
21:23:21 <Sgeo> I still don't _quite_ get how you can make an executable header such that you can just concatenate it and data that it supports to get another executable.
21:23:38 <Sgeo> But Prolog does it, and SBCL does it.
21:23:43 <Sgeo> erm, SWI-Prolog
21:24:09 -!- pikhq has quit (Ping timeout: 244 seconds).
21:24:11 -!- pikhq_ has joined.
21:25:59 <oerjan> Sgeo: well assuming the header needs only to refer to the _beginning_ of the data part, its position would be known...
21:27:47 * Sgeo wonders if PrologNomic would be interesting.
21:27:50 <oerjan> alternatively, the executable part might just reread the original file
21:28:08 <Sgeo> "A SWI-Prolog runtime executable is a file consisting of two parts. The first part is the emulator, which is machine-dependent. The second part is the resource archive, which contains the compiled program in a machine-independent format..."
21:28:23 <Sgeo> http://www.swi-prolog.org/pldoc/doc_for?object=section(1,'10',swi('/doc/Manual/runtime.html'))
21:29:25 <oerjan> i guess it might even use either option, dependent on what the format of the machine supports
21:30:36 * Sgeo throws a red cut at oerjan
21:31:08 <oerjan> all that's really required is some way to have an executable ending with an unknown length part without influencing the previous ones
21:33:27 <oerjan> if the loader puts it somewhere convenient, it can get loaded directly, but if it just ignores such a part, you can use the second method and reread the file.
21:33:43 -!- jix has quit (Ping timeout: 252 seconds).
21:33:58 <Sgeo> SBCL does it too iirc
21:34:48 * oerjan might be more authoritative if he actually knew any executable formats.
21:35:13 -!- jix has joined.
21:35:21 -!- soundnfury has quit (Ping timeout: 276 seconds).
21:35:57 <oerjan> oh and does it really say that the parts are just concatenated? otherwise you may have better options.
21:36:32 <Sgeo> "These two parts can be connected in various ways. The most common way for distributed runtime applications is to concatenate the two parts. This can be achieved using external commands (Unix: cat, Windows: copy), or using the stand_alone option to qsave_program/2. The second option is to attach a startup script in front of the resource that starts the emulator with the proper options. This is the default under Unix. Finally, an emulator can
21:36:32 <Sgeo> be told to use a specified resource file using the -x command-line switch."
21:37:47 * oerjan assumes the startup script refers to the #! method
21:52:56 <elliott> <nortti> http://aiju.de/up/catabuse.png
21:53:11 <elliott> for a start, the two are different, semantically
21:53:30 <elliott> for a non-starter, "cat foo | f | g | h" maintains the same direction of data flow in the pipeline
21:53:53 <elliott> "useless use of cat" is something people get worked up about for no real reason, there's nothing wrong with it
21:55:36 -!- DH____ has quit (Read error: Connection reset by peer).
21:55:51 -!- DHeadshot has joined.
21:56:07 <fizzie> I'm pretty sure in the case of SWI-Prolog it just rereads the executable file, skips the ELF (or whatever the platform uses) executable part, and loads the Prology part(s). (If you do "swipl-ld -v" you can see the executable part comes directly out of GCC and the Prolog part is just appended to it.)
21:56:32 <fizzie> http://www.swi-prolog.org/pldoc/man?CAPI=PL_initialise "Special consideration is required for argv[0]. On Unix, this argument passes the part of the command line that is used to locate the executable. Prolog uses this to find the file holding the running executable. The Windows version uses this to find a module of the running executable. If the specified module cannot be found, it tries the ...
21:56:38 <fizzie> ... module libpl.dll, containing the Prolog runtime kernel. In all these cases, the resulting file is used for two purposes: See whether a Prolog saved state is appended to the file. --"
22:03:10 -!- DH____ has joined.
22:03:11 -!- DHeadshot has quit (Read error: Connection reset by peer).
22:05:11 <Sgeo> That seems almost inelegant
22:15:52 -!- nortti_ has joined.
22:22:19 <Gregor> PAAAAAAAAAAAAAAAAAAAANTS!
22:24:12 <olsner> Gregor: congratulations
22:24:53 <Gregor> olsner, quintopia: My pants are better.
22:25:01 <quintopia> i can one up that since i have tasty beverage
22:25:57 <quintopia> and i'm sorry you find my khakis unattractive
22:26:07 <quintopia> but my belt and pants and socks and shoes do match
22:26:44 <Gregor> My pants are bright yellow.
22:26:59 <quintopia> of very fancy pants that mister fancy pants will wear...
22:27:10 <Gregor> THEY ARE BRIGHT YELLOW.
22:27:13 <quintopia> when everybody's marching in the fancy pants parade...
22:30:03 <Gregor> My pants: They are better pants.
22:30:19 <olsner> my pants are merely adequate
22:31:13 <olsner> but I am fine with having not-best pants
22:31:56 <quintopia> my beer is better beer and my tie is flowerier too so i win
22:32:21 <olsner> Gregor: how flowery is your tie?
22:32:27 <Gregor> Most of my ties are solid colors.
22:32:43 <olsner> the rest are all clop-themed ties?
22:33:36 <olsner> yes, that is a tragedy
22:38:57 <zzo38> What color of ties?
22:41:23 <Gregor> I have ties in green and pink and orange and blue and rainbow and red and purple and… well, not grey is the point.
22:41:25 <fizzie> Sgeo: Looking for argv[0] in PATH is arguably closer to inelegant than just "almost inelegant", but there's not much more you can portably do.
22:41:45 <Sgeo> What does SBCL do?
22:41:52 <quintopia> but this one is silvery gray with blue and orange flowers
22:42:09 <Gregor> Sgeo: http://codu.org/projects/stuff/hg/index.cgi/file/tip/whereami.c
22:42:30 <zzo38> fizzie: Is better having a include file which makes it compile what is necessary for the target platform?
22:43:18 <fizzie> Gregor: But that's exactly just looking for argv[0] in PATH.
22:43:29 <Gregor> I'm not claiming that it's not.
22:43:36 <Gregor> It's just portable and has all the necessary hacks.
22:43:54 <fizzie> Gregor: Are you claiming it's what SBCL does, then?
22:44:15 <Sgeo> I think Gregor just had bad timing.
22:44:38 <fizzie> Or perhaps I just felt like complaining without cause.
22:44:43 <fizzie> That's always possible.
22:44:45 <Gregor> No, I'm offering it as a useful snippet of code.
22:45:18 <zzo38> It should not look for argv[0] in PATH if there is the better way.
22:46:17 <Gregor> There's not, portably. You can readlink /proc/self/exe if that option is viable.
22:46:30 <fizzie> You can GetModuleFileName on Windows.
22:46:53 <fizzie> And there are other suitable /proc files on other systms.
22:47:31 <Gregor> This ends up being portable by means of a bunch of ifdefs per platform.
22:47:32 <zzo38> I know there is not better way portably; you should use preprocessor macros to determine which way to use for the target platform, and use argv[0] in PATH if none of the platform-specific choices are selected.
22:47:40 <kmc> shachaf: that's cool, i'm not sure i knew about it before
22:47:47 <kmc> i think someone told me but i forgot
22:49:09 <fizzie> Sgeo: SBCL seems to do the same thing, probably, since it has: https://bugs.launchpad.net/sbcl/+bug/375549
22:49:35 <fizzie> (Okay, it doesn't say what that's used for, but one could guess.)
22:51:41 <kmc> something shachaf said
22:51:44 <kmc> llvm-mc or something
22:52:13 <shachaf> I'm not sure why (with Byte ix = getBit(...);) «blah = ix == 0 ? foo[0][i] : foo[1][i];» is much faster than «blah = foo[ix][i];»
22:52:48 <shachaf> I guess it's a clever optimization thing.
22:53:13 <zzo38> If you write something like (j && i++<argc) in C will it increment i only if j is nonzero?
22:54:27 <oerjan> shachaf: what about blah = foo[!!ix][i] ?
22:56:43 <zzo38> What if you write it in LLVM? Say you have ix is of type i1 for example?
22:57:07 <oerjan> shachaf: is this in a loop? maybe it helps branch prediction...
22:57:25 <zzo38> Does LLVM support branch prediction?
22:57:43 <kmc> what do you mean by that?
22:57:43 <oerjan> ...branch prediction is a feature of cpus
22:57:51 <kmc> do you mean branch prediction hints in the code?
22:57:59 <Sgeo> It does bother me that Prolog is always depth-first.
22:58:08 <fizzie> It could just be that the compiler is not clever enough to avoid some complicated address calculation that it can when it sees foo[0] and foo[1] raw.
22:58:43 <shachaf> gcc generates code about twice as fast as clang for this, by the way.
22:58:59 <shachaf> The program runs in 14 seconds with clang and 7 with gcc.
22:59:05 <olsner> what's the type of foo[i]? does it have pointers or is it a two-dimensional array?
22:59:24 <shachaf> It's a two-dimensional array.
22:59:31 <fizzie> Looking at the generated code is always a possibility.
22:59:44 <zzo38> shachaf: OK, but what happen if you try to write it directly in LLVM rather than using C and so on?
22:59:48 <shachaf> In fact it was two separate arrays previously, which I stuck together in order to be able to do that.
23:00:05 <shachaf> zzo38: I don't know what happen if I do that.
23:00:44 <shachaf> fizzie: Yes, but there's so much of it. :-(
23:01:20 <fizzie> How's the speed with two separate arrays and ix == 0 ? foo[i] : bar[i]? One'd expect pretty close to the ix == 0 ? foo[0][i] : ... thing.
23:01:32 <shachaf> fizzie: What I originally had was two separate arrays.
23:01:44 <shachaf> It's pretty much the same.
23:01:53 <olsner> foo[row][col] translates to something like foo[row*pitch + col], the conditional style allows the foo+row*pitch part to be extracted into two base pointers calculated outside the loop
23:02:24 <fizzie> olsner: The !!ix style obviously "allows" for that too.
23:02:33 <fizzie> Since it's always either 0 or 1.
23:02:45 <fizzie> You just need to be cleverer about it.
23:02:47 <shachaf> I would've thought the branch would have much bigger overhead.
23:04:06 <fizzie> shachaf: You can put some sort of asm volatile ("# PLZ LOOK HERE"); /* code */ asm volatile ("# PLZ STOP LOOKING"); kind of thing (with # being whatever's the assembler's comment marker) in, I've done that sometimes.
23:04:34 <fizzie> Might still reorder relevant bits outside the markers.
23:04:41 <fizzie> But at least it's something.
23:04:57 <shachaf> Sure, or use objdump -S -d
23:05:36 <fizzie> You skipped "obj" there.
23:08:14 <zzo38> Why is codepage 437 assigned that number?
23:09:19 <shachaf> ...Hah, when you compile with -std=c99, gcc thinks "asm" is a function.
23:09:47 <olsner> strictly speaking, the compiler can't just gobble up "asm" as a keyword
23:14:39 <Sgeo> Are definite clause grammars like a burrito?
23:15:08 <shachaf> Hah, just inserting a few __asm__("# comment marker\n")s makes it slow.
23:15:15 <shachaf> It's not even asm volatile.
23:15:54 <oerjan> Sgeo: i've wondered that myself, actually. in something like the category of relations, perhaps...
23:16:57 <oerjan> they definitely resemble the State monad somehow
23:17:41 <Sgeo> Can I use them to do other monads, is my question.
23:17:43 <oerjan> never found any (clear?) reference to it, though
23:17:53 <Sgeo> (Note I know almost nothing about DCGs)
23:18:44 <oerjan> since i only understand monads in function categories like Set and Hask, it's hard for me to tell what the monads in Rel are...
23:19:27 <olsner> zzo38: interesting question ... all wikipedia tells me is that they set out to give all the code pages unique 16-bit numbers
23:20:39 <olsner> (they = ibm and/or microsoft)
23:21:25 <zzo38> I also don't know monads in Rel (although there is always identity monad on any category). There is also a Finalize monad on any category having a final object, and so on.
23:21:27 <oerjan> Sgeo: it seems obvious how to do Reader, at least, just put a common argument on all of them...
23:21:40 <oerjan> and Writer probably should be doable similarly
23:22:15 <oerjan> for a difference list at least
23:22:25 <fizzie> olsner: And 037 is "IBM EBCDIC US-Canada"; that could be the source of the last two digits.
23:23:54 <olsner> so a first byte of 0 could mean EBCDIC-based, 4 could be ASCII-based and 8 might be DEC-MCS based (which is what latin 1 is based on supposedly)
23:24:24 <olsner> (and the windows ones start with 12xx)
23:24:27 <fizzie> And many EBCDIC ones start with 2.
23:24:55 <fizzie> And it doesn't exactly explain why it's 037 in the first place; OB;
23:25:03 <fizzie> IBM's own http://www-01.ibm.com/software/globalization/cp/cp_cpgid.html doesn't list any smaller numbers.
23:25:10 <fizzie> Of course they could be lost in the mists of history.
23:25:47 <fizzie> The 850..878 set is at least just sequentially numbered.
23:26:06 <fizzie> Or I guess they go higher up, with just some gaps.
23:26:25 <olsner> hmm, 00256 being "International #1" (after a big gap) does suggest that the cp numbers are actually decimal though
23:27:14 <olsner> but maybe they switched after assigning a lot of numbers because no-one knew what system they were using
23:27:24 <fizzie> They are decimal numbers, I believe.
23:27:31 <fizzie> Given that there's a 65520 in the end.
23:27:57 <olsner> yes, apparently they are now :)
23:28:43 <fizzie> I mean, the values are of course just numbers, but they're generally talked about in decimal terms.
23:28:48 <fizzie> So the 256 might be explained by 0..255 being reserved for something-or-other.
23:29:25 <olsner> yeah, the other pattern might be because they've numbered them in hundreds, but 0..255 being reserved for EBCDIC
23:31:10 <olsner> also, IBM's numbers are different than Microsoft's numbers for some code pages
23:31:40 <olsner> really, we should plot these on a time line to see what the original pattern was
23:32:20 <fizzie> The entry pages include registration dates, feel free to.
23:33:01 <Sgeo> So Prolog has something like macros...
23:33:56 <olsner> hmm, 850/852 is western europe/central europe, but 1250/1252 seem to be the other way around
23:34:22 <fizzie> I see they've given CPGID numbers to Unicode planes 0, 1, 2 and 14.
23:35:30 -!- nortti_ has quit (Quit: AndroIRC - Android IRC Client ( http://www.androirc.com )).
23:37:44 <fizzie> "Plane 00 of Group 00"; funny that it still says that, what with not there being groups any more.
23:38:48 <olsner> hmm, 850 is older than 819 (which is the code page number for ISO 8859-1)
23:39:30 <fizzie> 819 also has many of the same numbers that appear in 8859-1. Coincidence? I think not!
23:42:50 <olsner> oh, apparently all the ones up to ASCII (cp 367) are ebcdic variants
23:44:11 <fizzie> That registry looks so sparse. I mean, there's 259 "Symbols, Set 7"; where's sets 1..6?
23:45:10 <fizzie> Onneksi ääkköset eivät ole enää ongelma.
23:49:46 <olsner> I'm thinking 0..3 = ebcdic, 4..7 = somehow related/similar to 437, 8..11 = 850-ish (I guess those have a bunch of line/box characters replaced by letters), 12..x = windowsy
23:50:05 <olsner> ascii doesn't fit there though :)
23:51:16 <olsner> fizzie: Unfortunately, the finnish language is still a problem
23:51:51 <fizzie> olsner: 1009..1021 aren't so "850-ish" either, being the language-specific 7-bit encodings.
23:52:16 <fizzie> And 1025 is apparently a "Cyrillic, Multilingual" EBCDIC variant.
23:52:24 <olsner> I'm glad I added translation from finnish as a quick search
23:52:43 <olsner> I think those are recent inventions squeezed in there after they forgot all about the system
23:52:46 <fizzie> It was a reference to a thing, but the thing is a longish story.
23:53:19 <fizzie> 1047: "Latin 1/Open Systems", code EBCDIC.
23:53:31 <fizzie> It is perhaps a fool's game to look for patterns in this thing.
23:54:06 <fizzie> Anyway, the 1025 "Cyrillic, Multilingual" EBCDIC page is from 1988, that's not *so* new.
23:55:06 <fizzie> 1025 is also listed as a revision of 880, which itself is listed as EBCDIC, with a note "This code page is a revision of Code Page 00410", and 410 is not listed in the registry at all.
23:55:06 <olsner> maybe the 0xx..3xx ebcdic ones are hex, but the 0..1023 ebcdic numbers are decimal :>
23:55:12 <zzo38> I use CP437 for some things.
23:56:50 <olsner> I like how latin 1 actually has its own separate code page 819, but microsoft maps all of ibm819, ascii, latin1, cp367, us-ascii to codepage 1252
23:56:53 <Gregor> pikhq_: “reälize” yes/no?
23:57:14 <Gregor> I think I pronounce it "reel-ize"
23:57:51 <pikhq_> I definitely say "reälize"
23:58:56 <Gregor> quintopia: You pronounce realize as recognize, eh.
23:58:59 <fizzie> "Pronunciation: Brit. /ˈrɪəlʌɪz/ , U.S. /ˈri(ə)ˌlaɪz/", if you believe OED.