00:01:26 !c printf("cake");unsigned char* c=malloc(1024);memcpy(main,c,1024);int (mainPtr*)();mainPtr=(void*)c;mainPtr(); 00:01:27 ​Does not compile. 00:01:30 :[ 00:05:09 !c printf("cake");unsigned char* c=malloc(1024);memcpy((unsigned char*)main,c,1024);int (mainPtr*)();mainPtr=(void*)c;mainPtr(); 00:05:11 ​Does not compile. 00:07:49 ajf, does it say "set of all sets that don't contain themselves?" 00:09:35 Sgeo: it is a paradox 00:09:41 No. No it isn't. 00:09:49 The set of all sets contains itself. 00:09:55 http://www.reddit.com/r/gaming/comments/hax9x/one_of_these_is_not_a_paradox_portal_2_spoiler/ 00:10:07 I feel like facepalming 00:10:51 Phantom_Hoover: which is impossible 00:11:10 ajf, ...why? 00:11:23 how can something contain itself 00:11:29 ... 00:11:32 ............. 00:11:41 That's not what "paradox" means. 00:13:37 Well 00:13:47 hmm 00:15:42 I guess in a more proper set theory that does whatever such set theories do to prevent Russel's paradox, you can't have such a set, but that's ... still not a paradox, I think 00:16:34 :/ 00:26:09 Sgeo, was it intentional? 00:28:22 * Phantom_Hoover → sleep 00:28:25 -!- Phantom_Hoover has quit (Quit: Leaving). 00:35:14 * pikhq_ just loves how driving will cease to be a commonly-useful skill soon. 00:35:35 lolwut 00:36:02 ajf: Self-driving cars exist. Now. 00:36:10 :/ 00:36:22 ajf: In 10 years, they will probably be reasonably available on the market. 00:36:39 In 15 to 20 years, it will likely be the norm. 00:39:03 Those estimates are conservative. 00:39:27 -!- zzo38 has left. 00:39:28 :/ 00:39:36 doubt it. 00:39:40 safety concerns 00:39:50 140,000 miles of testing on the streets of LA. 00:39:53 an AI knows not of how to react to the unknown 00:39:57 1 accident: rear ended. 00:40:31 say, hypothetically, the car is damaged without the AI noticing 00:40:40 would it drive on? yes. 00:42:11 The safety concerns of an automatic car need to be compared against human drivers. 00:42:18 And not highly skilled, highly trained drivers. 00:42:25 The average numbskull. 00:42:27 no 00:42:31 the average numskull 00:42:38 Sorry, right. 00:42:39 reacts better to the unknown than an AI 00:42:54 My, what an optimist. 00:42:55 I wasn't correcting spelling there, you spelled it correctly 00:43:00 pikhq_: OK 00:43:09 the car sets on fire 00:43:29 what happens? 00:43:31 Man flails. 00:43:33 AI flails. 00:43:40 In both cases: it's epicly bad. 00:43:57 AI reacts as it's programmed to do in a failure condition. 00:43:58 The man stops and gets out 00:44:07 The AI doesn't know there's a fire 00:44:10 No, the man freaks out and who the fuck knows what happens. 00:44:12 This hopefully involves pulling over 00:44:14 The human may need to manually stop it 00:44:32 If you're *lucky*, the human manually stops it. 00:44:44 OK 00:44:45 If you're unlucky, the human runs into someone else. 00:44:50 I just wonder 00:45:00 How the AI reacts to certain scenarios 00:45:09 That could not have been forseen 00:46:02 Besides which, this is an edge case. Human drivers fuck up on *common* cases. 00:46:12 A good AI for that would be programmed with a set of rules, not case-by-case 00:46:19 People plowing through a stoplight into someone? An AI won't do that. 00:46:33 Falling asleep and driving into the other lane? An AI won't do that. 00:46:37 And so on. 00:46:43 Cool. 00:47:10 What happens when the AI makes a mistake. 00:47:15 AI isn't flawless. 00:47:51 Again. 00:47:53 Perfect solution fallacy. Stop it. 00:48:08 What> 00:48:09 ? 00:48:19 "The Nirvana fallacy is the logical error of comparing actual things with unrealistic, idealized alternatives." 00:48:31 — Wikipedia 00:48:39 ajf, it makes a mistake 00:48:47 If it makes less mistakes than human drivers, it's still successful 00:48:55 eh 00:49:11 inb4 lawsuits 00:49:28 Also 00:49:42 There's the risk that AI could be deployed with serious errors 00:49:59 Remember when that company made a cancer treatment device with a race condition? 00:50:05 And killed several people? 00:50:07 yeah. 00:50:16 That is an *actual* issue, though actually not as much of one as you think. 00:50:26 Oh, really? 00:50:27 In case you weren't aware, cars already *have* extensive computer controls in them. 00:50:35 I know that. 00:50:50 And an error in some of them would actually be catastrophic. 00:50:56 That is true 00:51:31 None of these are things that make a self-driving car *infeasible*, just things that need to be considered in the design. 00:52:07 Much as they are in other cases of software with highly dangerous failure conditions. 00:52:59 Y'know, plane autopilots, nuclear power plant control systems, and the like. 00:53:47 Presumably, a self-driving car would be able to monitor itself for failures well before a human would notice too. 00:55:20 OK. 00:55:33 Car fails in fast traffic, how does it respond? 00:55:53 How would you respond? 00:55:59 Human's car fails in fast traffic, how does e respond? 00:56:09 Get the fuck out of there 00:56:18 "car failed" 00:56:23 As in 00:56:28 Well yeah 00:56:42 There's nothing you can do, as I mean the car spontaneously stopping working 00:56:46 I don't think the AI of a car can help the person get out of there. 00:56:55 nope. 00:57:01 Nor can the person. 00:57:12 Making this hypothetical... Moot. 00:57:24 meh 00:57:39 Though, the AI could probably be hooked into OBD, and possibly identify failure before it actually happens. 00:57:55 hmm 00:58:24 how does the car react when the traffic lights aren't working? 00:58:30 or are failing? 00:58:41 well, say they malfunction 00:58:54 Depends upon the malfunction. 00:59:07 flickering between different lights 00:59:11 for instance 00:59:38 Would the AI be prepaed for this secenario? 00:59:41 Dunno. 01:00:20 A human would, feasibly 01:01:08 I remind you, though, you are comparing hypothetical technical failures with demonstrable, *common*, *killing 1.2 million people a year* human faults. 01:01:18 What if the traffic signs are misleading, and contrary to what people are doing? 01:01:30 (and 50 million injuries) 01:01:34 Does the AI listen to the traffic signs? 01:01:41 Or what the people on the road do? 01:01:57 What... 01:02:08 what if it is susceptible to SQL Injection? 01:02:22 Kidding, obvs 01:02:50 pikhq_: What I worry about is this: 01:03:01 A situation where the AI behaves *wrongly* 01:03:11 And the human needs to override it 01:03:16 But they can't drive 01:03:27 That's more what worries me 01:03:52 Than AI going wrong, as long as a human is there, they could possily stop it 01:03:59 ajf: Well, in such a future, *hopefully* the override would be something along the lines of "Force stop". 01:04:19 What if I need to reverse, but there's no means to do so? 01:04:25 Just a start and stop button? 01:04:38 -!- Cheery has quit (Quit: Lost terminal). 01:08:09 -!- augur has joined. 01:10:44 -!- ajf has quit (Quit: leaving). 01:12:45 -!- ajf has joined. 01:31:42 -!- aloril has quit (Ping timeout: 250 seconds). 01:43:42 -!- aloril has joined. 01:44:02 -!- micahjohnston has changed nick to anyone. 01:45:18 -!- anyone has changed nick to nobodyy. 01:45:24 -!- nobodyy has changed nick to micahjohnston. 01:53:53 -!- calamari has joined. 01:54:08 -!- ajf has changed nick to ajf|offline. 02:02:18 -!- calamari has left ("Leaving"). 02:05:34 -!- micahjohnston has changed nick to everyone. 02:05:58 -!- everyone has changed nick to micahjohnston. 02:17:38 -!- aloril has quit (Ping timeout: 250 seconds). 02:43:50 -!- zzo38 has joined. 02:53:35 -!- augur has quit (Remote host closed the connection). 03:09:16 I posted Deadfish challenge to anarchy golf. 03:19:14 -!- Wamanuz4 has joined. 03:22:20 -!- Wamanuz3 has quit (Ping timeout: 246 seconds). 04:04:43 -!- poiuy_qwert has joined. 04:06:40 -!- augur has joined. 04:43:17 -!- poiuy_qwert has quit (Read error: Connection reset by peer). 04:44:55 -!- poiuy_qwert has joined. 04:56:38 -!- aloril has joined. 05:03:17 -!- poiuy_qwert has quit (Read error: Connection reset by peer). 05:04:56 -!- poiuy_qwert has joined. 05:23:17 -!- poiuy_qwert has quit (Read error: Connection reset by peer). 05:24:57 -!- poiuy_qwert has joined. 05:28:46 Wikipedia claims that it''s a "simplified version of Russel's paradox" 05:29:00 I still don't see the damn paradox 05:34:39 Sgeo: Wikipedia claims what is? 05:34:48 Hey Finns, what is a pulkki? 05:34:59 http://www.reddit.com/r/gaming/comments/hax9x/one_of_these_is_not_a_paradox_portal_2_spoiler/ 05:35:12 (No major portal 2 spoiler in comments, minor one in picture) 05:35:47 You're right. There is no paradox. 05:36:28 Actually, only the first is a paradox 05:36:44 The second is not either; refusal is the opposite of completing 05:36:47 *acceptance 05:36:52 one can refuse but complete a mission 05:37:04 "New mission: Don't complete this mission" is paradoxical 05:37:20 Hmm 05:38:01 Comment? 05:39:49 Although I assume it's largely downvoted by people who don't understand that it's only reminiscent of a paradox.. 05:39:58 Maybe there's another reason people are downvoting? 05:43:17 -!- poiuy_qwert has quit (Read error: Connection reset by peer). 05:44:55 -!- poiuy_qwert has joined. 06:00:39 -!- poiuy_qwert has quit (Read error: Operation timed out). 06:04:57 -!- poiuy_qwert has joined. 06:23:17 -!- poiuy_qwert has quit (Read error: Connection reset by peer). 06:24:54 -!- poiuy_qwert has joined. 06:42:06 -!- poiuy_qwert has quit (Ping timeout: 246 seconds). 07:57:47 -!- Plazma has quit (Read error: Connection reset by peer). 07:58:28 -!- Plazma has joined. 08:07:04 -!- MigoMipo has joined. 08:12:01 -!- siracusa has quit (Ping timeout: 260 seconds). 08:13:22 -!- siracusa has joined. 08:16:27 -!- CakeProphet has joined. 08:20:09 -!- CakeProphet has quit (Client Quit). 08:20:41 -!- CakeProphet has joined. 08:20:48 -!- CakeProphet has quit (Client Quit). 08:21:14 -!- CakeProphet has joined. 08:22:15 -!- CakeProphet has quit (Client Quit). 08:22:43 -!- CakeProphet has joined. 08:22:43 -!- CakeProphet has quit (Changing host). 08:22:43 -!- CakeProphet has joined. 08:25:57 Hello all 08:36:37 -!- Vorpal has joined. 08:37:57 -!- adam___ has joined. 08:38:43 -!- CakeProphet has quit (Disconnected by services). 08:38:47 -!- adam___ has changed nick to CakeProphet. 08:41:44 -!- CakeProphet has quit (Client Quit). 08:42:18 -!- CakeProphet has joined. 08:43:39 -!- CakeProphet has quit (Client Quit). 08:43:40 -!- pingveno has quit (Ping timeout: 260 seconds). 08:44:11 -!- CakeProphet has joined. 08:44:29 -!- Phantom_Hoover has joined. 08:45:29 -!- pingveno has joined. 08:51:54 WILD STALLIONS! 08:56:51 -!- FireFly has joined. 09:02:15 -!- oerjan has joined. 09:05:43 ho hum 09:16:51 oerjan, know anything about parsec (the haskell sense) 09:17:14 sure 09:17:40 I know a bit myself. 09:17:42 oerjan, I'm trying to figure it out, I'm having a problem with how to say that two cells can be separated by one *or more* whitespace, sepBy doesn't seem to like anything but exactly one char 09:18:12 I believe it's called many or something like that. 09:18:14 hm i thought that should work fine 09:18:18 hm 09:18:37 oerjan, I get Couldn't match expected type `Char' against inferred type `[Char]' then 09:18:44 hm 09:19:13 @hoogle sepBy 09:19:13 Text.Parsec.Combinator sepBy :: Stream s m t => ParsecT s u m a -> ParsecT s u m sep -> ParsecT s u m [a] 09:19:14 Text.ParserCombinators.ReadP sepBy :: ReadP a -> ReadP sep -> ReadP [a] 09:19:14 Text.ParserCombinators.Parsec.Combinator sepBy :: Stream s m t => ParsecT s u m a -> ParsecT s u m sep -> ParsecT s u m [a] 09:19:35 hm 09:19:37 -!- monqy has quit (Quit: hello). 09:19:47 well what are you using as the second argument to sepBy? 09:20:29 soemthing like sepBy p (many1 whitespace) should work fine then right? 09:20:48 huh now it loads 09:20:54 eol = char '\n' 09:20:54 cell = many (noneOf " \n") 09:20:54 line = sepBy cell (many (char ' ')) 09:20:54 downrightFile = endBy line eol 09:20:56 is what I have 09:21:12 definitely try many1 09:21:15 hm I guess I might have had some type signature wrong 09:21:18 oerjan, hm 09:21:28 *** Exception: Text.ParserCombinators.Parsec.Prim.many: combinator 'many' is applied to a parser that accepts an empty string. 09:21:29 yeah 09:21:31 otherwise the separator could be empty, and i'm not sure how that is handled 09:21:35 oerjan, many1 is like 1 or more? 09:21:36 oh ok 09:21:39 yes 09:22:04 gah 09:22:18 oerjan, how do I tell it in the above one that the last line need not end with a newline? 09:22:29 basically, the file doesn't have to be newline terminated 09:22:47 err, brb, phone call 09:22:48 gah 09:23:34 Vorpal: um why not just use sepBy for that too? 09:24:51 back 09:24:54 oerjan, ah 09:25:01 Vorpal: oh wait there's sepEndBy 09:25:08 oerjan, what does it do? 09:25:18 same as sepBy but optional ending too 09:25:22 ah 09:25:26 perfect 09:25:34 oerjan, I have to say that yacc is easier than this though 09:25:47 well not as much to remember maybe 09:26:04 oerjan, does sepBy allow leading whitespace at the start of a line hm 09:26:13 or is there sepStartBy? 09:26:19 heh 09:26:51 ah indeed sepBy does not allow that 09:27:10 oerjan, I have no idea how to indicate that anything except ↓→, whitespace, newline is considered comments 09:27:22 to indicate a cell is empty one is supposed to insert a comment in it 09:27:34 oerjan, I guess that is easier to parse outside this thing 09:28:24 yeah just use a filter on the resulting string 09:28:34 right 09:29:10 to start with whitespace just use optional whitespace >> 09:29:41 line = (many (char ' ')) >> (sepBy cell (many1 (char ' '))) 09:29:44 oerjan, you mean that? 09:29:54 yeah that works too 09:29:57 *Main Text.ParserCombinators.Parsec> parseDownRight "a b\n c d" 09:29:57 Right [["a","b"],[]] 09:29:59 mmm nope 09:30:12 or wait 09:30:16 I forgot to save the file 09:30:18 before loading it 09:30:21 so yeah it works 09:30:31 Vorpal: technically if you ignore the result i suspect skipMany is more efficient 09:30:41 oerjan, except of course that leading whitespace on the first line is undefined! 09:30:48 oh 09:30:49 but that means I can ignore it as well 09:30:57 since it is *undefined* 09:31:07 oerjan, see http://esolangs.org/wiki/DownRight 09:31:08 sounds spooky. 09:31:17 Vorpal: well in that case you could make your newline combinator remove trailing whitespace too 09:31:33 I once had a dream that I found myself in a room with an elevator due to the stack overflow of a badly designed computer program (which I didn't think even possible in the programming language that was used), and the person who wrote the program was also there. 09:31:46 oerjan, hm... you mean like eol = (many (char ' ')) >> char '\n' ? 09:32:10 I should add a combinator for the ws to save space, since I'm not sure how tab should be handled 09:32:14 I need to ask ais about that 09:33:08 I believe anyToken would be useful if you actually wanted Parsec to deal with the possible of comment characters. 09:33:15 *possibility 09:33:16 CakeProphet, hm 09:33:40 but I agree it's easier just to filter it out. 09:33:41 CakeProphet: um he doesn't want it to be _any_ token, whitespace is excluded 09:33:49 yeah 09:33:59 oh, well right, then just noneOf valid_tokens 09:34:04 CakeProphet, oerjan, http://esolangs.org/wiki/DownRight#Syntax 09:34:04 so noneOf " \n" is pretty much correct there 09:34:34 ws = many (char ' ') 09:34:34 ws1 = many1 (char ' ') 09:34:34 eol = ws >> char '\n' 09:34:34 cell = many1 (noneOf " \n") 09:34:34 line = ws >> (sepBy cell ws1) 09:34:35 downrightFile = sepEndBy line eol 09:34:38 well that seems to work so far 09:34:57 wait 09:35:01 doesn't handle trailing ws 09:35:02 why not 09:35:26 Left "(unknown)" (line 1, column 5): 09:35:26 unexpected "\n" 09:35:26 expecting " " 09:35:27 Vorpal: as a general rule iirc you usually want all your tokens to absorb whitespace after it 09:35:30 oerjan, any good idea? 09:35:38 oerjan, hm... 09:35:54 oerjan, you mean this? line = ws >> (sepBy cell ws1) >> ws 09:36:01 or does that work 09:36:25 or maybe SepEndBy 09:36:26 you don't need the first ws then 09:36:38 oerjan, really? hm 09:36:46 oerjan, how does that deal with newlines 09:36:46 also that's equivalent to sepEndBy 09:36:50 yeah 09:37:03 i mean you want the newlines to absorb _their_ trailing whitespace too 09:37:07 oerjan, aha 09:37:28 that way most things start with a genuine non-whitespace token 09:37:58 > parseDownRight " a b \n\n c d" 09:37:58 Right [[]] 09:37:58 Not in scope: `parseDownRight' 09:37:59 why 09:38:08 why doesn't that give me Left 09:38:17 it seems like an error to me 09:38:33 hm? 09:38:38 ws = many (char ' ') 09:38:38 ws1 = many1 (char ' ') 09:38:38 eol = char '\n' >> ws 09:38:38 cell = many1 (noneOf " \n") 09:38:38 line = sepEndBy cell ws1 09:38:39 downrightFile = sepEndBy line eol 09:38:40 is what I have no 09:38:43 now* 09:38:49 i thought downright was supposed to allow more than one newline in a row 09:38:55 oerjan, yes indeed 09:38:57 oerjan, it does 09:39:08 that means an empty line surely? 09:39:19 oerjan, anyway, the issue here is the leading whitespace 09:39:25 on the first line 09:39:32 > parseDownRight "a b \n\n c d" 09:39:32 Right [["a","b"],[],["c","d"]] 09:39:33 Not in scope: `parseDownRight' 09:39:40 i think that means no line at all, it's treated as one line break in total 09:39:45 oerjan, hm 09:40:03 right, easily fixed 09:40:28 *Main Text.ParserCombinators.Parsec> parseDownRight "a b \n\n c d" 09:40:28 Right [["a","b"],["c","d"]] 09:40:28 *Main Text.ParserCombinators.Parsec> parseDownRight " a b \n\n c d" 09:40:28 Right [[]] 09:40:35 parseBrainfuck = anyToken 09:40:37 hm your problem may be that sepEndBy can parse zero items 09:40:40 I am a master. 09:40:47 oerjan, right 09:40:54 oerjan, is there a variant that doesn't? 09:41:03 hm probably sepEndBy1 09:41:12 yes that exists. 09:41:18 indeed 09:41:24 but that makes me wonder if an empty DownRight file is valid 09:41:49 oerjan, also this doesn't handle that there must be equally many columns on each line 09:41:59 but I guess I'll do that outside the parser, afterwards 09:42:09 you could make it valid with an <|> most likely. I don't remember how you specify a null input with Parsec. 09:43:01 yes that would be useful to know 09:44:13 string ""? 09:44:52 return () 09:45:00 oh right. :) 09:45:07 hm 09:45:28 it's been ages since I've looked at Parsec. 09:45:28 so: 09:45:30 downrightFile = (sepEndBy1 line eol) <|> (return ()) 09:45:32 or what? 09:45:51 parens aren't necessary, and I don't know if that's what you want or not because I'm too lazy to read right now. :P 09:46:01 and it's 5:46 AM so I'm probably going to sleep soon actually. 09:46:05 anyway that doesn't work 09:46:11 No instance for (Text.Parsec.Prim.Stream s m Char) 09:46:12 arising from a use of `char' at downright.hs:5:14-22 09:46:15 and 09:46:19 Couldn't match expected type `[[[Char]]]' 09:46:20 against inferred type `()' 09:46:23 hrrm 09:46:26 you _could_ make parsec check for column number by using count for all but the first line 09:46:55 well, lets make the empty program invalid, I guess I could fix that later if I have to 09:47:32 homespring prints "the null program is not a quine" or something similar. I recommend that. 09:47:38 if it meant anything at all, it should presumably halt immediately, thus equivalent to a single comment cell 09:47:52 heh 09:48:34 Vorpal: well probably return [] actually to get the type right 09:49:07 *Main Text.ParserCombinators.Parsec> parseDownRight " a\n" 09:49:07 Right [] 09:49:08 nope 09:49:12 return () is a parser that accepts any input without consuming input 09:49:14 oerjan, that one isn't calid 09:49:21 valid* 09:49:22 yeah 09:49:32 oerjan, I need the empty string exactly there 09:49:42 You propably want eof 09:49:47 ah 09:49:52 like: downrightFile = (sepEndBy1 line eol) <|> eof 09:49:52 then 09:50:00 whops 09:50:00 nope 09:50:06 Couldn't match expected type `[[[Char]]]' 09:50:07 against inferred type `()' 09:50:08 again 09:50:08 I'd be interested to see if string "" actually does something or if it's completely undefined. 09:50:21 eof >> return [] 09:50:39 um usually you put eof at the very end of the whole parser, although if there is no way to err on trailing input that is not necessary 09:50:49 siracusa, that seems to work 09:51:00 CakeProphet, type error, but maybe [""] would work. 09:51:22 oerjan, yeah trailing newlines and spaces is valid 09:51:29 Vorpal: well anyway you should do return whatEverYouWantAsTheResult 09:51:38 oerjan, right 09:52:22 now to write the filter, then to write the generator (I'm compiling, not interpreting) 09:52:27 for hedonistic purposes you could return bottom. Just make sure you don't evaluate that. 09:52:40 CakeProphet, :P 09:52:58 actually yacc is easier than parsec I conclude, at least if you are used to yacc 09:53:13 ...I don't know, I take great pleasure in being able to manipulate things that have no result. 09:53:17 though I have to say that once you get parsec doing the right thing, it is quite elegantly short 09:53:47 plus it's Haskell, which is always nice. 09:54:08 you can actually pass around meaningful data in your parser monad. 09:54:39 CakeProphet, iirc cpressy said there was some yacc for haskell called "happy" or something like that 09:55:32 > filter (not . null) . map (filter (not . null) . words) . lines $ " a bc \n \n d e" -- >:) 09:55:34 [["a","bc"],["d","e"]] 09:55:53 oerjan, you are ding the same thing but without parsec there I guess 09:56:03 @t null 09:56:03 yeah 09:56:03 Maybe you meant: tell thank you thanks thx ticker time todo todo-add todo-delete topic-cons topic-init topic-null topic-snoc topic-tail topic-tell type . ? @ ft v 09:56:09 :t null 09:56:09 forall a. [a] -> Bool 09:56:15 right 09:56:40 > words " \n \n" 09:56:41 [] 09:56:53 not all that filtering may be necessary 09:56:56 :t (--) 09:56:57 parse error (possibly incorrect indentation) 09:57:02 :t (>:) 09:57:03 Not in scope: `>:' 09:57:08 what was that stuff oerjan 09:57:16 oh wait 09:57:18 a comment 09:57:19 duh 09:57:22 a comment XD 09:57:24 ...lol 09:57:34 CakeProphet, my irc client lacks syntax highlight 09:57:41 for haskell at least 09:57:45 forgive my involuntary chatspeak outburst. 09:58:08 I didn't even know they make IRC clients with that. 09:58:08 > filter (not . null) . map words . lines $ " a bc \n \n d e" 09:58:10 [["a","bc"],["d","e"]] 09:58:18 oerjan, golfing it? 09:58:33 just removing the redundant filter 09:59:02 > filter (not . null) . map words . lines $ " a bc \n \t\n d\te" 09:59:03 [["a","bc"],["d","e"]] 09:59:52 also, just lampshading how much overkill parsec is for this 09:59:55 oerjan, what was the command to make lambdabot convert to pointless style? 10:00:10 pl 10:00:17 oerjan, well it was elliott who told me one should always use parsec, I know I shouldn't have trusted him 10:00:26 CakeProphet, not pf for pointfree? 10:00:35 no, pointless for... pointless. :P 10:00:37 @pl filter (not . null) . map words . lines $ " a bc \n \t\n d\te" 10:00:37 filter (not . null) (map words (lines " a bc \n \t\n d\te")) 10:00:39 hm 10:00:44 interesting 10:00:53 @pf filter (not . null) . map words . lines $ " a bc \n \t\n d\te" 10:00:54 Maybe you meant: bf pl 10:01:01 right, indeed 10:01:18 a bit of a play on words. 10:01:25 that conversion looks wrong to me though 10:02:19 well, it's already point-free isn't it? 10:02:32 CakeProphet: i'd expect string "" to be equivalent to return "" 10:02:33 the only thing that changes was some of the composition was changed to application. 10:03:00 filter (\x -> x == '↓' || x == '→') "foo↓→→↓" 10:03:00 "\8595\8594\8594\8595" 10:03:06 now is there a better way to write that 10:03:09 I don't like that test 10:03:18 @pl filter (\x -> x == '↓' || x == '→') "foo↓→→↓" 10:03:18 (line 1, column 20): 10:03:18 unexpected "'" 10:03:18 expecting space or simple term 10:03:22 huh? 10:03:39 :t or 10:03:40 [Bool] -> Bool 10:03:49 :t (||) 10:03:50 Bool -> Bool -> Bool 10:03:54 ah right 10:03:55 ...trying to remember my Haskell. 10:04:05 Vorpal: well parsec would have been better if the syntax was even slightly outside what lines and words could handle 10:04:06 I'd like "in" here 10:04:21 :t elem 10:04:21 forall a. (Eq a) => a -> [a] -> Bool 10:04:22 > filter (`elem` "↓→") "foo↓→→↓" 10:04:22 "\8595\8594\8594\8595" 10:04:37 Vorpal: elem is "in" ;) 10:04:43 right 10:05:13 @pl filter (`elem` "↓→") "foo↓→→↓" 10:05:13 filter (`elem` "\226\134\147\226\134\146") "foo\226\134\147\226\134\146\226\134\146\226\134\147" 10:05:17 the crap? 10:05:27 what did it do there 10:05:32 encoding failure? 10:05:45 @pl isn't precisely perfect parsing 10:05:45 seems like it. 10:05:51 oerjan, aha 10:06:16 @src 10:06:16 src . Display the implementation of a standard function 10:06:33 it doesn't even try to handle some constructs, because it doesn't know how to convert them 10:06:37 hmmm, how do I get source code of egobot interpreters? 10:06:53 !help 10:06:54 ​help: General commands: !help, !info, !bf_txtgen. See also !help languages, !help userinterps. You can get help on some commands by typing !help . 10:06:56 map (filter (`elem` "↓→") "foo↓→→↓") [["\8595\8594ab","\8595\8594"],["\8595\8594"]] 10:07:02 !help userinterps 10:07:03 ​userinterps: Users can add interpreters written in any of the languages in !help languages. See !help addinterp, delinterp, show | !userinterps. List interpreters added with !addinterp. 10:07:05 >map (filter (`elem` "↓→") "foo↓→→↓") [["\8595\8594ab","\8595\8594"],["\8595\8594"]] 10:07:08 > map (filter (`elem` "↓→") "foo↓→→↓") [["\8595\8594ab","\8595\8594"],["\8595\8594"]] 10:07:09 Couldn't match expected type `a -> b' 10:07:09 against inferred type `[GHC.T... 10:07:12 err 10:07:15 okay... 10:07:17 :t map 10:07:18 forall a b. (a -> b) -> [a] -> [b] 10:07:26 oh wait nwm 10:07:32 nvm* 10:07:37 > map (filter (`elem` "↓→")) [["\8595\8594ab","\8595\8594"],["\8595\8594"]] 10:07:37 Couldn't match expected type `GHC.Types.Char' 10:07:37 against inferred type... 10:07:42 uh okay 10:08:15 @hoogle [a] -> [a] -> [a] 10:08:15 Prelude (++) :: [a] -> [a] -> [a] 10:08:15 Data.List (++) :: [a] -> [a] -> [a] 10:08:15 Data.List deleteFirstsBy :: (a -> a -> Bool) -> [a] -> [a] -> [a] 10:08:21 @more 10:08:26 bah 10:08:42 !userinterps 10:08:42 ​Installed user interpreters: aol austro b1ff bc bct bfbignum brit brooklyn bypass_ignore bytes chaos chef chiqrsx9p choo cockney ctcp dc decisionengine drawl drome dubya echo eehird ehird fudd funetak google graph gregor he hello id jethro kraut num ook pansy pi pirate plot postmodern postmodern_aoler prefixes redneck reverse rimshot rot13 sadbf sfedeesh sffedeesh sffffedeesh sffffffffedeesh simpleacro slashes svedeesh swedish valspeak warez yodawg 10:08:44 > map (map (filter (`elem` "↓→"))) [["\8595\8594ab","\8595\8594"],["\8595\8594"]] 10:08:45 [["\8595\8594","\8595\8594"],["\8595\8594"]] 10:08:50 ah 10:08:54 !postmodern What on earth does this do. 10:08:56 @pl map (map (filter (`elem` "↓→"))) [["\8595\8594ab","\8595\8594"],["\8595\8594"]] 10:08:56 map (map (filter (`elem` "\226\134\147\226\134\146"))) [["\8595\8594ab", "\8595\8594"], ["\8595\8594"]] 10:08:56 ​What on earth does this semiotically do. 10:09:14 > "testing ho" `intersect` "te" 10:09:15 "tet" 10:09:18 heh 10:09:28 it seems that can also be used :) 10:09:41 oerjan, wtf is intersec 10:09:44 intersect* 10:09:45 hm 10:09:48 set intersection 10:09:48 :t intersec 10:09:49 Not in scope: `intersec' 10:09:49 :t intersect 10:09:50 forall a. (Eq a) => [a] -> [a] -> [a] 10:09:51 ah 10:10:00 !yodawg Hello miss, you are beautiful. 10:10:01 ​Unknown function: H 10:10:01 oerjan, that seems more confusing in this case however 10:10:06 except it seems to do the right thing on multiple hits, by accident 10:10:16 I see 10:10:20 !help info 10:10:21 ​Sorry, I have no help for info! 10:10:28 @src intersect 10:10:29 intersect = intersectBy (==) 10:10:37 @src intersectBy 10:10:37 intersectBy eq xs ys = [x | x <- xs, any (eq x) ys] 10:10:40 oerjan, I'd rather not depend on that unless it is speced that way 10:10:52 !info yodawg 10:10:53 ​EgoBot is a bot for running programs in esoteric programming languages. If you'd like to add support for your language to EgoBot, check out the source via mercurial at https://codu.org/projects/egobot/hg/ . Cheers and patches (preferably hg bundles) can be sent to Richards@codu.org , PayPal donations can be sent to AKAQuinn@hotmail.com , complaints can be sent to /dev/null 10:10:59 ...haha. okay. 10:11:18 I'm going to cat a complaint directly to /dev/null this instant! 10:11:23 CakeProphet: um that was just the default info message 10:11:29 yes I see that.. 10:11:38 i don't think there is any help for userinterps 10:11:47 oerjan, anyway this one seems fine: filterDownRight = map (map (filter (`elem` "↓→"))) 10:11:52 I was looking for a way to display the source code. 10:11:59 CakeProphet: however i so _happen_ to know that yodawg is my unlambda self-interpreter 10:12:01 Where does the name "The Prophet Wizard of the Crayon Cake" made from? 10:12:16 ...I prefer that people not worry about that. 10:12:19 lol zzo xD 10:12:20 CakeProphet: !show yodawg, but you need DCC CHAT 10:12:32 but there's not really an interesting story. 10:12:44 !show yodawg 10:12:44 ​unlambda (sending via DCC) 10:12:50 !show yodawg 10:12:50 ​unlambda (sending via DCC) 10:13:00 !show yodawg 10:13:01 ​unlambda (sending via DCC) 10:13:14 * DCC CHAT to EgoBot lost (Remote host closed socket). 10:13:38 oerjan, it is broke 10:13:44 !show postmodern 10:13:45 ​sh postmodern 10:13:49 ... 10:13:58 elegant code. 10:14:47 !simpleacro 10:14:54 ​MBUJDQ 10:15:06 oh yeah! I forgot about this. Nothing derails conversation like an acronym generator. 10:16:36 Manly Bikers Union Justly Deserves Quoting 10:17:14 oerjan, anyway this one seems fine: filterDownRight = map (map (filter (`elem` "↓→"))) <-- you could put a filter (`elem` "↓→") <$> directly on the parsec cell combinator too 10:17:46 oerjan, what would <$> do here 10:18:01 synonym for fmap 10:18:03 fmap. applies a function to a Functor instance. All monads are functors. 10:18:10 :1:0: Not in scope: `<$>' 10:18:11 so where 10:18:14 hm 10:18:17 ouch 10:18:17 Control.Applcative 10:18:21 CakeProphet, ah 10:18:23 *Applicative 10:18:30 oerjan, why ouch? 10:18:32 or Control.Functor 10:18:47 that it isn't imported automatically. well i guess it's not that big 10:18:56 oerjan, this is ghc 6 10:18:58 not ghc 7 10:19:11 maybe it differs 10:19:27 Vorpal: you could say `liftM` instead, although elliott will yell at you :D 10:19:44 oerjan, I'm not familiar with what LiftM does here... Tell me 10:19:51 and why elliott would yell at me 10:19:59 there's a difference between parsec 2 and 3 in what instances are provided 10:20:01 anyway: :1:0: Not in scope: `liftM' 10:20:08 oerjan, this is parsec 3 I think 10:20:08 although maybe both have Functor 10:20:19 oh right liftM requires Control.Monad 10:20:31 checkLen (x:xs) = 10:20:32 let l = length x in 10:20:32 all (\y -> length y == l) xs 10:20:32 for monads it's something like (<$>) m f x = do { x <- m; return (f x)} 10:20:35 I believe 10:20:37 oerjan, I'm sure you can rewrite that :P 10:20:45 it's the monad equivalent of fmap, existing for stupid "missing subclassing" reasons 10:20:47 does anyone think "onomatoegrava" is a good word for this? (1st def) http://www.urbandictionary.com/define.php?term=asdfasdf 10:21:09 oerjan, but why will elliott yell at me for using it? 10:21:43 Vorpal: well he yelled at _me_ once 10:21:48 oerjan, but why 10:21:58 because Applicative syntax is prettier 10:22:08 oerjan, go figure, how elliott 10:22:39 oerjan, btw what would declaring main as an ffi call do? 10:22:40 -!- hagb4rd has joined. 10:22:47 something about f <$> m1 <*> m2 just feels right 10:23:57 ...I prefer that people not worry about that. <-- browsing r/all gives me some suspicions :) 10:24:13 oerjan, r/all ? 10:24:34 I'm at a loss as well. 10:25:41 I forgot what string concat operator was in haskell... 10:25:43 oerjan, it is broke <-- it has worked for me in the past. sadly i'm on an unusual client (webchat) now because the nvg servers i usually use are down, so i cannot check; and also i cannot point you to my webpage because that's also on an nvg server 10:25:51 oh ++ 10:25:53 right 10:27:13 elegant code. <-- probably a program in egobot's /bin/ 10:27:33 ....yes. probably. 10:27:41 it was one of those joke things. you know. 10:28:59 gah, how did one format an integer as a decimal string now again, I don't remember 10:29:15 Vorpal: reddit's "list all subreddits as one page". a certain subreddit named r/trees tends to show up frequently 10:29:46 Vorpal: show 10:30:03 oerjan, what about hexdecimal then 10:30:14 > showHex 666 "" 10:30:14 "29a" 10:30:17 ah 10:30:28 oerjan, and an arbitrary base? 10:30:46 :t showIntAtBase 10:30:47 forall a. (Integral a) => a -> (Int -> Char) -> a -> String -> String 10:30:58 hm 10:31:14 :t ShowIntegerAtBase 10:31:15 Not in scope: data constructor `ShowIntegerAtBase' 10:31:17 hm nope 10:31:18 > showIntAtBase 3 intToDigit 27 "" 10:31:19 "1000" 10:31:23 oerjan, isn't Int fixnum? 10:31:26 and Integer bignum? 10:31:32 or do I misrememer 10:31:45 Vorpal: that's just for converting the digit, the whole number is any Integral 10:31:57 ah 10:32:21 so if you want to work in bases > (maxInt :: Int), you might need to work harder :D 10:33:21 hah 10:33:32 showIntAtBase 4 intToDigit 27 "" 10:33:35 > showIntAtBase 4 intToDigit 27 "" 10:33:36 "123" 10:33:41 err 10:33:48 wait, which parameter is which 10:33:54 is 27 the number to convert? 10:33:57 yes 10:34:01 showIntAtBase 123 intToDigit 97 "" 10:34:04 > showIntAtBase 123 intToDigit 97 "" 10:34:04 "*Exception: Char.intToDigit: not a digit 97 10:34:06 ah 10:34:12 so what is the range 10:34:14 it only goes up to hex, i think 10:34:19 oerjan, bah, useless 10:34:31 > map intToDigit [0..] 10:34:31 "0123456789abcdef*Exception: Char.intToDigit: not a digit 16 10:34:34 oerjan, erlang's can handle any base between 2 and 36 anywhere 10:34:52 Vorpal: you can make your own replacement easily, that's why it's a parameter after all 10:34:52 even in source code 10:34:56 right 10:35:03 oerjan, I wonder why it doesn't go further however 10:35:17 the built in I mean 10:35:25 :t intToDigit' 10:35:26 Not in scope: `intToDigit'' 10:35:26 :t intToDigit 10:35:27 Int -> Char 10:35:28 well it's haskell 98 standard 10:35:31 :show intToDigit 10:35:34 > show intToDigit 10:35:35 Overlapping instances for GHC.Show.Show 10:35:35 (GHC.T... 10:35:37 eh 10:35:38 whatever 10:35:39 @src intToDigit 10:35:39 Source not found. You speak an infinite deal of nothing 10:35:56 weird 10:36:00 @hoogle intToDigit 10:36:01 Data.Char intToDigit :: Int -> Char 10:36:14 you may want to browse Data.Char source 10:36:20 @source Data.Char 10:36:20 http://darcs.haskell.org/packages/base/Data/Char.hs 10:36:21 doesn't lambdabot have it? 10:36:42 great, download rather than view online 10:36:43 meh 10:36:52 i'm not sure @source is accurate anyway 10:37:01 @help source 10:37:01 source . Lookup the url of fptools libraries 10:37:17 i mean the name fptools itself is pretty obsolete, i think 10:37:23 oerjan, any sort of queue structure in haskell's standard library 10:37:31 yes, Data.Sequence 10:37:33 ah 10:37:36 thanks 10:37:50 oerjan, I just realised I prefer to interpret than to generate a queue in C :D 10:38:04 (I originally planned to compile to C) 10:38:51 Vorpal: btw it occured to me the other day that downright may not _need_ a queue in haskell, you might make do with just lazy lists and some knot tying 10:39:03 oerjan, err, knot tying? 10:39:13 like that fibonacci thing... 10:39:22 oerjan, uh...? 10:39:30 > let fib = 1:1:zipWith (+) fib (tail fib) 10:39:30 not an expression: `let fib = 1:1:zipWith (+) fib (tail fib)' 10:39:33 > let fib = 1:1:zipWith (+) fib (tail fib) in fib 10:39:34 [1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181,6765,10946,1... 10:39:39 oerjan, how does that work 10:39:47 :t 1:1:zipWith 10:39:48 Couldn't match expected type `[t]' 10:39:48 against inferred type `(a -> b -> c) -> [a] -> [b] -> [c]' 10:39:48 In the second argument of `(:)', namely `zipWith' 10:39:51 :t 1:1 10:39:51 forall t. (Num t, Num [t]) => [t] 10:39:52 the fib or for downright? 10:39:58 oerjan, the fib 10:40:19 well by laziness the fib list starts with 1,1, without looking at the rest 10:40:30 ah right 10:40:35 that explains that part 10:40:42 :t zipWith 10:40:43 forall a b c. (a -> b -> c) -> [a] -> [b] -> [c] 10:40:56 hm 10:41:15 oerjan, how would this work for downright then 10:41:15 when you want to compute the next element, the parts of the list it depends on (the two previous elements) are available 10:42:27 anyway if you don't find that obvious, using it for downright might be a bit premature 10:42:40 s/it/similar tricks/ 10:43:11 yeah probably 10:45:11 knot tying in haskell is when you write functions that seem like they depend on their own result, but subtly it works because each _part_ of the result doesn't depend on itself, so the recursion gets down to base 10:46:10 aha 10:46:13 and this is often a vital technique for building very recursive structures without using mutation 10:46:13 it's also dark wizardry. 10:46:24 CakeProphet, right, I shall avoid it then 10:46:31 no it's awesome. 10:47:59 briefly mentioning how i imagined it for downright, i though you could calculate the list of >v moves the downright program passes through, using that list as part of the input, and it should work 10:48:23 although it _may_ be that you get an exception when the list runs out, but that should be catchable 10:48:49 Prelude.zip [0..] $ Prelude.map (Prelude.zip [0..]) [["123","456"],["abc","def"]] 10:48:49 [(0,[(0,"123"),(1,"456")]),(1,[(0,"abc"),(1,"def")])] 10:48:54 I think I have coords almost 10:48:57 > let x = x in x 10:48:58 not quite what I want 10:49:01 mueval-core: Time limit exceeded 10:49:08 I'd like ((x,y),"foo") 10:49:17 that would be perfect for a Data.Map I think 10:49:24 oerjan, any nice idea for how to do that? 10:49:27 oops lambdabot doesn't give an exception there, i think it depends on ghc settings whether it actually catches that 10:49:34 my solution would probably not be very nice looking 10:50:17 Vorpal: um given that it's fixed immutable column and rows, why not use Data.Array? 10:50:30 oerjan, oh thanks, I wasn't aware of that one 10:50:44 oerjan, I guess it isn't in containers 10:50:59 Data.Array is actually plain haskell 98 10:51:03 ah 10:51:13 (well + hierarchical name) 10:53:02 oerjan, is it only 1D array? 10:53:15 I plan to support non-coprime sizes 10:53:21 no, it comes with the Ix typeclass for arbitrary indexes 10:53:31 (Data.Ix iirc) 10:53:46 so lets see... how does one load [["123","456"],["abc","def"]] into an array hm 10:54:14 :t arrayFromList 10:54:15 Not in scope: `arrayFromList' 10:54:18 er 10:54:23 :t newArray 10:54:24 Not in scope: `newArray' 10:54:30 bah 10:54:33 :t array 10:54:33 @hoogle array 10:54:33 package array 10:54:33 Data.Array.IArray array :: (IArray a e, Ix i) => (i, i) -> [(i, e)] -> a i e 10:54:33 module Data.Array 10:54:34 forall i e. (Ix i) => (i, i) -> [(i, e)] -> Array i e 10:54:49 mkArray? 10:54:55 :t mkArray 10:54:56 Not in scope: `mkArray' 10:54:57 nope 10:55:00 it is array it seems 10:55:16 actually array but that seems redundant 10:55:19 :t listArray 10:55:20 forall i e. (Ix i) => (i, i) -> [e] -> Array i e 10:55:25 there you go 10:55:29 hm 10:55:47 then you don't need to list the indices except for the bounds 10:56:07 right 10:56:17 > listArray ((0,0),(1,1)) "abcd" 10:56:17 array ((0,0),(1,1)) [((0,0),'a'),((0,1),'b'),((1,0),'c'),((1,1),'d')] 10:57:03 listArray ((0,0),(1,1)) [["123","456"],["abc","def"]] 10:57:03 array ((0,0),(1,1)) [((0,0),["123","456"]),((0,1),["abc","def"]),((1,0),*** Exception: (Array.!): undefined array element 10:57:05 hm what 10:57:09 oh do I need to flatten it 10:57:10 right 10:57:27 Vorpal: i said use listArray :D 10:57:39 oerjan, well that is what I did 10:57:44 except not the right way 10:57:50 ah 10:57:54 yeah concat 10:58:33 @hoogle [[e]] -> Array i e 10:58:33 Control.Monad.Trans lift :: (MonadTrans t, Monad m) => m a -> t m a 10:58:33 Data.Graph.Inductive.Graph delNodes :: Graph gr => [Node] -> gr a b -> gr a b 10:58:33 Data.Array.IArray listArray :: (IArray a e, Ix i) => (i, i) -> [e] -> a i e 11:08:19 -!- Wamanuz5 has joined. 11:11:14 -!- Wamanuz4 has quit (Ping timeout: 248 seconds). 11:19:28 -!- MigoMipo has quit (Read error: Connection reset by peer). 11:21:33 -!- zzo38 has quit (Remote host closed the connection). 11:41:22 oerjan, is there anything wrong with this: `Seq.(><)` 11:41:26 downright.hs:42:55: parse error on input `.' 11:41:31 executeDownRight program (newqueue `Seq.(><)` str) newpos max 11:41:32 is that line 11:41:50 I have import qualified Data.Sequence as Seq 11:41:56 since it clashed with Prelude 11:42:25 CakeProphet, oerjan: any idea? 11:43:15 huh, doesn't work outside as prefix either 11:44:10 or hm 11:44:19 oh two sequences 11:44:22 maybe that is it 11:45:04 mmm nope 11:45:20 executeDownRight program (Seq.(><) newqueue (Seq.fromList str)) newpos max 11:45:22 gives me: 11:45:24 downright.hs:42:42: Not in scope: data constructor `Seq' 11:45:24 downright.hs:42:46: Not in scope: `><' 11:45:31 wtf 11:46:12 Vorpal: (Seq.><) 11:46:22 oh 11:53:56 right 11:54:37 > downRight "→ " 11:54:38 Right *** Exception: divide by zero 11:54:38 Not in scope: `downRight' 11:54:40 the crap? 11:54:50 how did I manage that one 11:55:06 oh, wrapping 11:55:20 off by one error when dividing by 1? 11:55:28 oerjan, yeah I think so 11:56:35 > downRight "→ f f" 11:56:35 Right ^CInterrupted. 11:56:36 Not in scope: `downRight' 11:56:39 now how did that happen 11:56:39 for operators it might be worth adding an unqualified partial import 11:57:11 hm 11:57:30 oerjan, is there a haskell debugger? 11:57:47 try :help 11:57:49 oerjan, I'd like to single step this logic (whatever that means in a lazy language...) 11:58:07 hm 11:58:52 well does that parse into [["→", "", ""]] at least? 11:59:08 oerjan, yes it does 11:59:24 hm it should halt on the second one 11:59:57 the debugger is highly confusing 12:00:11 * oerjan has never used it 12:01:15 a coloured ghc prompt would probably help with readablity 12:01:18 make it stand out 12:01:33 something as simple as making the Prelude> bit bold 12:01:43 (Well *Main, in this case) 12:02:03 well you can set the prompt i think, don't know about color codes 12:02:28 oerjan, how do you set the prompt then? 12:02:46 brb firing up winghci 12:02:51 ah found it 12:02:53 :set prompt 12:05:35 oerjan, btw this works for me, but does it work in winghci: 12:05:37 :set prompt "\0027[1m%s>\0027[0m " 12:05:53 oerjan, tell me if it looks anything like bold or highlighted 12:06:51 oerjan, any idea to make ghci always run that thing at the start? 12:06:56 some sort of init file? 12:06:58 my prompt is now "\0027[1mPrelude>\0027[0m " :D 12:07:44 Vorpal: ~/.ghci 12:07:47 oerjan, so not very useful then :P 12:07:49 Deewiant, thanks 12:08:12 yay 12:08:24 don't know, winghci has its own option menu 12:09:02 okay it fucks up with readline, why 12:09:03 hm 12:09:28 well or whatever ghci uses 12:09:41 hm $PS1 in bash uses \[ and \] around the escape code to protect them 12:09:48 I wonder what the equiv in ghci would be 12:09:51 putStrLn of that string _does_ give bold in winghci 12:09:51 Deewiant, any bright idea? 12:10:14 I just use :set prompt "> ", so no 12:10:20 ah 12:12:56 hm http://trac.haskell.org/haskeline/ticket/78 12:15:12 -!- pikhq_ has quit (Remote host closed the connection). 12:20:22 oerjan, found one issue at least 12:20:27 x/y mixup 12:20:35 I guess array does it the other way than I expected 12:20:56 probably easiest to switch to (y,x) then 12:20:58 hah 12:21:20 > listArray ((0,0),(1,1)) "abcd" 12:21:21 array ((0,0),(1,1)) [((0,0),'a'),((0,1),'b'),((1,0),'c'),((1,1),'d')] 12:21:44 hm right 12:22:47 @hoogle range 12:22:48 Data.Ix range :: Ix a => (a, a) -> [a] 12:22:48 Language.Haskell.TH data Range 12:22:48 Language.Haskell.TH.Syntax data Range 12:23:01 > range ((0,0),(1,1)) 12:23:01 [(0,0),(0,1),(1,0),(1,1)] 12:23:20 it's the Ix instance for tuples that orders lexicographically 12:24:09 @src listArray 12:24:09 Source not found. And you call yourself a Rocket Scientist! 12:24:11 *Main> downRight "↓ a b\n→ c d" 12:24:11 Right (1,1) 12:24:12 seems to work 12:24:44 I guess I should write a main too 12:26:48 CakeProphet! 12:26:56 I thought you were dead! 12:32:07 yay it is done, 70 lines 12:32:15 * Vorpal shortens it a bit 12:32:30 executeDownRight :: Array (Int, Int) String -> Seq.Seq Char -> (Int, Int) -> (Int,Int) -> (Int,Int) 12:32:34 hm that seems a bit long 12:39:57 I'm sure this could be written in a nicer way, but I'm not that good at haskell yet. If you give criticism, make it constructive! http://sprunge.us/cCfg 12:40:12 wait, esolang wiki is public domain right 12:40:27 guess that means no BSD license if it goes there 12:47:33 oerjan, Phantom_Hoover: how do you make a code block on the wiki? 12:47:56
 IIRC
12:48:09  Or , I think that does something.
12:55:14  Phantom_Hoover, 
 it was
12:55:23  well there we go, the implementation is on the wiki
12:59:49  oerjan, so, how horrible is http://esolangs.org/wiki/Talk:DownRight#Implementation_in_haskell
13:12:10  Vorpal: the idiomatic way to split away the first element of a Seq is to use the left view function and pattern match
13:12:25  oerjan, how does that work
13:12:38  oerjan, the view thigy I mean
13:14:19  thingy*
13:15:04  case viewl queue of EmptyL -> pos; instr <| newqueue -> ...
13:15:29  oerjan, aha
13:15:46  also you can use where clauses in a case match, no need for let ... in ...
13:16:10  oerjan, anything wrong with let?
13:16:17  oerjan, let looks neater than where to me
13:16:28  but maybe because I'm used to reading programs from the top going down
13:16:55  oerjan, same reason I dislike perl's reversed if I guess
13:16:57  ok although you get less indentation with where
13:17:23  oerjan, it isn't going past 100 columns, I have no issue with it
13:17:38  you might want to align the "in" with the "let" if you do that
13:17:51  ah perhaps
13:18:11  yes I see I used two different ways a bit above
13:18:33  oerjan, is the let style used in programToArray idiomatic (wrt indention)
13:19:01  I should probably do the same in executeDownRight
13:20:41  i'm not that knowledgeable about haskell style
13:21:41   case viewl queue of EmptyL -> pos; instr <| newqueue -> ...
13:21:43  oerjan, uh what
13:21:46  that doesn't work
13:21:52  downright.hs:66:9: Parse error in pattern
13:21:57  for the instr <| newqueue stuff
13:22:00  even when I do:
13:22:04           (Seq.<|) instr newqueue ->
13:22:08  which is surely the same
13:22:44  hm that ought to work
13:23:06  oerjan, maybe some new feature in ghc 7?
13:23:36  viewl docs says a :< (Seq a) leftmost element and the rest of the sequence
13:23:37  oerjan, ^
13:23:42  maybe that is what you ma
13:23:43  meant*
13:23:43  oh wait
13:24:20  indeed, i misread the :browse output
13:24:48  oerjan, I'd like proper docs available in ghci, not just the type signature
13:24:51  another thing, i think your parse will fail on a file containing only whitespace
13:25:03  sure type signature + name tell you something, but far from everything
13:25:07  especially for IO stuff
13:25:21  oerjan, that is intended surely?
13:25:34  well you don't fail on empty file...
13:25:35  since leading whitespace on the first line isn't defined
13:25:47  oerjan, empty file does not have leading whitespace on the first line
13:25:51  a file with just whitespace does
13:25:56  heh
13:26:18  oerjan, what is "heh" about that
13:26:21  it is obvious
13:26:50  Vorpal: don't you have haddock documentation, my installation of the haskell platform includes that
13:27:07  oerjan, I installed ghc from my distro package manager
13:27:13  it is ghc 6.12.1 btw
13:27:45  oerjan, but if it involves anything more complicated than say :h foo in ghci it really isn't that helpful
13:27:47  it includes generated html from haddock
13:27:55  oerjan, means I need to start a browser
13:28:00  inconvenient most of the time
13:28:04  bah
13:28:14  oerjan, I often don't run X until I actually need it
13:28:15  so...
13:28:27  and console browsers leave something to be desired
13:28:42  oerjan, come on, even python has help from the REPL
13:28:53  and erlang has it from the command line, proper man pages
13:28:59  proper man pages would work too
13:29:07  well i don't know what other formats haddock can generate, but you can always read the source files if you download them
13:29:12  like erl -man some_module
13:29:36  oerjan, perl has perldoc, perfectly readable in a terminal
13:30:09  oerjan, well how does one run haddock? haddock Data.Sequence?
13:30:23  Vorpal: listen i have no idea how the haskell platform is set up on linux
13:30:27  hm
13:30:45  oerjan, I don't think this is the platform, this system surely predates that "batteries included" stuff
13:30:55  i think usually one runs a cabal command to generate the haddock as well
13:31:34  $ man cabal
13:31:34  No manual entry for cabal
13:31:36  what a failure
13:31:59  oerjan, yes but again that is html docs
13:32:07  ok i will speak no more of this, since i don't know the answer and you are starting to irritate me
13:32:08  html docs are just annoying
13:32:24  oerjan, sure, anyway, will upload viewl based version
13:32:30  it does indeed make things cleaner
13:34:10  done
14:04:53  square root of minus garfield seems to be taking a dark turn
14:04:59  oerjan, oh?
14:05:40  see the last two ones
14:05:56  hm will soon
14:10:58 -!- zzo38 has joined.
14:12:27 -!- zzo38 has set topic: The first rule of thumb is that you do not talk about thumb. | Logs: http://codu.org/logs/_esoteric/ and http://tunes.org/~nef/logs/esoteric/?C=M;O=D.
14:14:22 -!- MigoMipo has joined.
14:20:47 -!- augur has quit (Remote host closed the connection).
14:26:18  Who invented "lesser of two evils"?
14:33:36 * oerjan notes that the wikipedia article doesn't say anything about the etymology
14:34:05  being mostly about the "lesser of two evils" in politics
14:34:21  I know, I looked.
14:35:51  If you don't know who invented it, who is commonly associated with this quotation?
14:36:18  it doesn't seem to be much of a _quotation_, just a phrase
14:40:51  trying to google '"lesser of two evils" dictionary etymology' doesn't seem to give anything about that phrase itself
14:41:01  I have idea to invent a new hypothetical kind of node in TeX. It consists of a list of pairs of numbers and node lists. It will select whichever node list, to be included into the current list, which results in the fewest demerits (or least badness+penalty for vertical lists). The numbers are the extra demerits (or penalties for vertical lists) to be added if that one is selected.
14:41:56  How many uses for this can you think of?
14:43:30 -!- oerjan has quit (Quit: Later).
14:51:09  More ADOM challenges:
14:52:20  Restricted Eternium Man: As Eternium Man, but pick pockets and companions are not allowed. If you start with a companion or read a scroll of familiar summoning you must attack them at first to kill them as much as and as soon as possible.
14:52:43  Very Restricted Eternium Man: As Restricted Eternium Man, but it is not allowed to wish for anything. You must leave any wish you receive blank.
14:55:36  Restricted Plutonium Man: As Plutonium Man, but after background corruption is stopped, everything else done after that doesn't count.
14:57:08  Pray Game: You must use the pray command every time immediately after using a upstairs or downstairs command.
14:57:35  Restricted Pray Game: As Pray Game, but no sacrificing on altars is permitted.
14:57:50 -!- poiuy_qwert has joined.
15:00:01  Unluck Game: Immediately save the game and then change the name of your character in the save file, wrecking the checksum and making you run out of luck.
15:13:01 -!- ais523 has joined.
15:24:42  Convenience does not mean ease of use!
15:27:19  OMG the Nigerian Finance Minister is back.
15:31:30  http://www.reddit.com/r/reddit.com/comments/hb8v9/reading_reddit_may_have_just_saved_my_life/
15:31:33  BUT AT WHAT COST
16:25:30 -!- cheater666 has quit (Quit: Leaving).
16:27:14 -!- variable has quit (Read error: Operation timed out).
16:30:13 -!- variable has joined.
16:30:27   OMG the Nigerian Finance Minister is back. <-- in a rather painful way too
16:30:34  that comic made me go "augh"
16:35:46 -!- CakeProphet has quit (Ping timeout: 246 seconds).
16:36:58 -!- CakeProphet has joined.
16:36:58 -!- CakeProphet has quit (Changing host).
16:36:58 -!- CakeProphet has joined.
16:46:44 -!- zzo38 has quit (Remote host closed the connection).
16:46:58 -!- cheater79 has joined.
16:50:02 -!- Wamanuz has joined.
16:54:13 -!- Wamanuz5 has quit (Ping timeout: 276 seconds).
16:58:51 -!- augur has joined.
16:59:40 -!- azaq23 has joined.
17:09:39 -!- elliott has joined.
17:15:36 -!- Phantom_Hoover has quit (Ping timeout: 246 seconds).
17:25:40 -!- variable has quit (Read error: Connection reset by peer).
17:30:55 -!- variable has joined.
17:32:04 -!- Phantom_Hoover has joined.
17:41:55 -!- ajf|offline has changed nick to ajf.
17:46:29  Schizoaffective programmer Michael Crawford says  "I can work effectively even when I'm wigging, even when I'm hallucinating, even when I'm severely depressed." He later expanded on this:     And by wigging, I meant that I could develop software while severely paranoid. I've spent a lot of productive hours at the office, laboring at my computer, while trying to avoid thinking of the fact that a Nazi armoured division was holding m
17:46:30  aneuvers in the parking lot.
17:46:57  http://blog.tesser.org/2011/5/12/mental-illness-and-startups
18:12:05  Dear Chrome: Stop losing my cookies every time I close you
18:21:39  Sgeo, hi
18:21:46  Hi
18:21:46  how are you doing?
18:21:48  Ok
18:25:58 -!- monqy has joined.
18:45:46 -!- micahjohnston has changed nick to micahjohnstonn.
18:47:50 -!- micahjohnston has joined.
18:59:24  "Numb3rs ­— IRC is Drug Dealing Boats in the Ocean" — http://www.cracked.com/article_19160_8-scenes-that-prove-hollywood-doesnt-get-technology_p2.html
18:59:38  Hey, guys, let's get a boat and deal some drugs on it!
18:59:44  Oh, wait, Plazma is still here.
18:59:48  wait what
18:59:54  Everyone hide the drugs again.
19:01:51  ais523, I implemented ↓→ in haskell btw, you might want to check talk page on wiki for it
19:01:59 -!- augur has quit (Remote host closed the connection).
19:02:04  (in case you haven't already seen it)
19:02:08  I will at some point
19:02:10  I'm almost scared to look.
19:02:16  not that downright impls are all that interesting, it's quite a simple language
19:02:24  elliott, I'm certain it could be better in some ways
19:02:35  Vorpal: maybe you've actually written code worse than Shiro.
19:02:37  It is possible.
19:02:38  ais523, Keymaker beat me to it btw, making one in python
19:02:41  elliott, heh
19:02:52  elliott, it is pretty much parsec + pure haskell + main
19:02:53  lolol
19:02:55  I'm of the opinion that nearly all Haskell code is bad
19:02:56 -!- oerjan has joined.
19:02:57  on-line names!
19:03:00  ais523, why
19:03:02  ais523: no it isn't?
19:03:04  ais523, what is wrong with haskell
19:03:12  elliott: I mean, Haskell can be written well
19:03:17  I just think, most people who write it write it badly
19:03:18  I know I do
19:03:24  Vorpal: OK for a start...
19:03:27  downrightFile = (sepEndBy1 line eol) <|> (eof >> return [])
19:03:34  You could JUST OMIT THE ONE and avoid that <|> thing.
19:03:53  elliott, hm, nope
19:03:55  Hm, yep.
19:04:08  elliott, no that one would allow a file with whitespace
19:04:11  which isn't valid
19:04:15  What?
19:04:17  elliott, an empty file is valid
19:04:26  err, is 0 coprime with 0?
19:04:26  It would not allow that.
19:04:32  mathematically?
19:04:40  Anyway, downrightFile is kind of awful because it's inconsistent.
19:04:41  ais523, I implement the extension that they don't need to be coprime
19:04:46 -!- azaq23 has quit (Remote host closed the connection).
19:04:53  Vorpal: ah, OK
19:04:54  ais523, that... doesn't even make *sense*.
19:04:56  By extension do you mean "I was too lazy to implement the language"?
19:05:04  Phantom_Hoover: agreed
19:05:05  elliott, a file with just whitespace *has leading whitespace on the first line*, which is undefined
19:05:10  elliott, and yes :P
19:05:16  OK well your use of Parsec is awful but I'll ignore it for now.
19:05:20  filterDownRight = map (map (filter (`elem` "↓→")))
19:05:25  Jesus CHRIST learn to use dollar.
19:05:27  Vorpal: philosophical question: if the file is just whitespace, is it leading whitespace or trailing whitespace?
19:05:33  ais523, good one
19:05:38  also, map (map (...))?
19:05:46  is that a 2D map?
19:05:47  ais523, I vote for left associative whitespace, thus making it leading
19:05:49  I suppose it is
19:06:01  err, I guess so
19:06:05  is there some better way
19:06:10  ais523, that is Prelude.Map btw
19:06:11  err
19:06:12  nah, it's OK, just surprising
19:06:13  Prelude.map
19:06:21  Vorpal: map . map $ filter (`elem` "↓→")
19:06:29  elliott, hm, right
19:06:35  elliott,  but that just saves some ()
19:06:44  checkLen :: [[a]] -> Bool
19:06:44  checkLen [] = True
19:06:44  checkLen (x:xs) =
19:06:46  Vorpal: that's the point...
19:06:49  For a start, GHC can optimise that, you know.
19:06:56  For second, jesus christ use where clauses.
19:06:57  elliott, optimise what?
19:07:04  Vorpal: Your pointless binding of length x.
19:07:15  Also, in goes on the line of the expression, not on the last line of bindings.
19:07:18  elliott, err, I think that made the code clearer?
19:07:20  elliott: OCaml doesn't have where clauses as far as I know
19:07:22  Vorpal: ...no?
19:07:28  elliott, meh okay
19:07:29  checkLen (x:xs) = all (\y -> length y == length x) xs
19:07:29  so I've got into the habit of writing code without them
19:07:35  elliott, and why where clauses
19:07:36  it's actually not too bad, normally just a line or two longer
19:07:36   err, is 0 coprime with 0? <-- intuitively not, they have common divisors other than 1
19:07:37  ais523: That's just a flaw of OCaml.
19:07:40  Vorpal: Because that's ugly.
19:07:45  elliott, I read code from top to bottom, not jumping around
19:07:46  oerjan: as in every number in existence?
19:07:49  that is a good point
19:07:53  elliott, that is why I dislike perl's reverse if too
19:08:07  I more or less read Haskell right to left
19:08:09  Vorpal: OK, well, I'm trying to help you be a better Haskell programmer, so maybe: no?
19:08:21  elliott, hm okay I guess where clause is more idiomatic then
19:08:26  although it depends on what the code actually is
19:08:27  elliott, but why is it more idiomatic
19:08:37  elliott, I'm used to let in scheme too
19:08:38  Vorpal: Because your code doesn't read smoothly.
19:08:39  so hm
19:08:53  elliott, would you argue scheme code doesn't read smoothly either?
19:08:59  Scheme is not Haskell.
19:09:03  elliott, indeed
19:09:27  elliott, but the construct let is pretty much the same in both, give or take some parens and the in keyword
19:09:31  OK this Second Life chase scene is the funniest thing ever.
19:09:37  Phantom_Hoover, link?
19:09:41  By which I mean most ludicrously stupid.
19:09:47  Vorpal:
19:09:48  programToArray :: [[String]] -> Array (Int,Int) String
19:09:48  programToArray p@(x:xs) = listArray ((0,0), (h,w)) $ concat p
19:10:09  elliott, ah, right, I guess I should use the @ thing more yes
19:10:17  iirc there are a few other places where it would be a good idea
19:10:19  "executeDownRight" -- Haskell has modules, just "execute" is fine.
19:10:26  Vorpal, http://www.cracked.com/article_19160_8-scenes-that-prove-hollywood-doesnt-get-technology_p2.html
19:10:34  Also has IRC drug boats.
19:10:44   oerjan: as in every number in existence? <-- if you interpret the g in gcd in the division lattice sense, then gcd 0 0 is clearly 0
19:10:44  Some of your argument names are a bit overly long and make the code less scannable, but whatever, it's not a huge deal.
19:10:53  elliott, right, but with :load it doesn't work that neatly :(
19:10:59  Vorpal: Uh?
19:11:06  Vorpal: For a start, use inferior-haskell, dude.
19:11:08  and 0 is the top lattice element
19:11:11  oerjan: I was thinking more along the lines that 0 is a multiple of every prime
19:11:14  C-c C-l C-x o ;; REPL
19:11:16  so it has an infinite number of prime factors
19:11:31  ais523: well that's equivalent (well also every prime power)
19:11:34  elliott, I was using nano for no obvious reason for this, but okay
19:11:41  You're indenting case statement bodies by five. wtf.
19:11:48  elliott, :load and :m in ghci seems to load into the "top" scope or whatever you call it
19:11:53  Actually your indentation is a bit too large in general IMO, but whatever; but five? wat.
19:11:54  elliott, that is a mistake
19:12:00  Vorpal: It is so not a mistake.
19:12:05  elliott, I'm sure it should be 4
19:12:08  Oh.
19:12:15  Vorpal:  elliott, :load and :m in ghci seems to load into the "top" scope or whatever you call it
19:12:23  Vorpal: well i guess my advice to use <$> to avoid elliott shouting at you wouldn't have helped anyway (he shouts regardless :D)
19:12:29  For a start, you don't have a module declaration, so it's in the Main module. This is correct since it's a self-contained program.
19:12:37  For a second, that's desirable behaviour.
19:12:56  If you're writing a downright impl, you want to be able to test the functions quickly, so why type DownRight all the time?
19:12:59  ARGH
19:13:03  WHY ARE MY MESSAGES BEING THROTTLED
19:13:07  I DON'T KNOW HOW MUCH OF THIS SHIT IS GETTING DROPPED
19:13:10 -!- elliott has quit (Quit: Leaving).
19:13:16 -!- elliott has joined.
19:13:35  Vorpal: incidentally did you know that the first version of haskell didn't even _have_ let? (there are haskell 1 programs using let as an ordinary variable)
19:13:38  Vorpal: http://sprunge.us/AVWU
19:13:40  Some of this might have been dropped.
19:13:51  hm
19:14:01  oerjan, no I wasn't aware
19:14:10  downRightInteract :: String -> String
19:14:10  downRightInteract input =
19:14:10      case downRight input of
19:14:10           ParseErr err -> "Parse error: " ++ show err ++ "\n"
19:14:10           Error err -> "Error: " ++ err ++ "\n"
19:14:10           FinalPos pos -> "Halted at " ++ show pos ++ "\n"
19:14:13  This is an ugly use of interact.
19:14:22  elliott, mm okay
19:14:37  Actually so is the unification of parsing and running into that weird DownRightReturn thing IMO
19:14:51  elliott, I was a bit annoyed at not being able to construct ParseError myself, otherwise I would have used Either
19:14:59  or if I can construct them I have no clue how
19:15:00  "Construct ParseError myself"?
19:15:07  What are you trying to do?
19:15:21  elliott, well, you can't have Either ParseError ErrorMessageOfMyOwn Result
19:15:29  What?
19:15:37  elliott, what?
19:15:59  OK well I'll ignore that what you're saying is incoherent to nitpick other things for now.
19:16:06           (Seq.:<) instr newqueue ->
19:16:11  instr Seq.:< newqueue ->
19:16:23  elliott, hm okay, that looks ugly though
19:16:33  You could always import (:<) so you could do
19:16:37  instr :< newqueue ->
19:16:58  elliott, yes sure, but meh
19:17:04  elliott, anyway that operator looks rather silly
19:17:12  way too much like a smiley
19:17:14  (Unrelated nitpick: "-- Released in public domain in countries where that is applicable." ;; Suggest WTFPL since this currently reserves all rights in countries where PD is inapplicable.)
19:17:32  Vorpal: : has to be used, since otherwise it wouldn't be a valid constructor name.
19:17:47  elliott, good idea, I'd do it as BSD 2 clause except that they I couldn't put it on the wiki
19:18:22  elliott, anyway convert the wiki to WTFPL instead of public domain and I'll change it
19:18:26  Vorpal: the module that exports ParseError also exports functions that create them
19:18:33  Vorpal: Um, the wiki is http://creativecommons.org/licenses/publicdomain/.
19:18:38  olsner, huh, must have missed the docs
19:18:39  So just license it under that.
19:18:45  elliott: the WTFPL probably works quite badly in some countries
19:18:48  Or, well, "Available as described at http://creativecommons.org/licenses/publicdomain/"
19:18:49  elliott, ah, so that is not the same as plain public domain?
19:18:58  Vorpal: Name of "checkLen" is wrong; avoid verbs.
19:19:05  elliott, that page:
19:19:06  CC-PD is much more complex than many licenses, because making something truly PD or equivalent is really hard
19:19:07  "Creative Commons has retired this legal tool and does not recommend that it be applied to works."
19:19:09  interesting
19:19:17  it used to be five lines
19:19:18  Also it isn't checking the "length", it's checking the list for a certain property.
19:19:22  then it expanded to something like ten paragraphs
19:19:24  I suggest validProgram.
19:19:37  Okay, let's see if I can consistently make my bot crash.
19:19:45  then it contracted again, by the look of it
19:19:47  elliott, which is arguably related to length but sure
19:20:25 -!- augur has joined.
19:20:35  what we need is a license that gives the right to kill any lawyers that claim the work isn't public domain
19:20:51  nowadays they've invented CC0
19:21:09  ais523, what is the difference?
19:21:23  Vorpal: 0 has no sugar and twenty five percent less calories
19:21:32  elliott, .D
19:21:34  :D*
19:21:50  CC0 attempts to work in every jurisdiction in the world, not just the US
19:22:01 -!- tswettbot has joined.
19:22:20  ais523, so we should probably shift to it, or shift to something else entierly
19:22:24  filterDownRight is also badly named; I'd suggest "clean" or something.
19:22:27  I guess that is tricky in practise however
19:22:35  elliott, hm
19:22:47  "clean" is pretty vague, but the previous name is vaguer.
19:22:50  elliott, or filter, and then I use Prelude.filter in it, for maximum confusion
19:23:00  No, filter shadows Prelude, which is unforgivable :)
19:23:07  (As far as vagueness goes, you can't fit a function's definition into its name, anyway.)
19:23:09  (OR CAN YOU??????)
19:23:25  elliott, hey, Data.Sequence gets away with shadowing Prelude
19:23:26  why
19:23:32  Vorpal: Data structures can.
19:23:36  Because you're meant to import them qualified.
19:23:40  elliott, hm okay
19:23:45  That's for consistent naming, e.g. filter vs. Map.filter
19:24:13   (As far as vagueness goes, you can't fit a function's definition into its name, anyway.) <-- and that is why haskell needs man page docs for modules, or even better, something like the built in help() in python REPL
19:24:19  I don't like html based docs
19:24:40  that means I have to start X. Console based web browsers leaves a lot to be desired.
19:24:59  Vorpal: "and that is why haskell needs" Rephrase this in a way that doesn't blame the Haskell community for your personal dislike :P
19:25:04  w[three]m works fine on Haddock docs.
19:25:08  and Haddock can also generate pdfs iirc
19:25:21  elliott, tried pdf outside X any time?
19:25:27  No, but you can print them.
19:25:33  elliott, anyway something as integrated as :t would be ideal
19:25:43  I think haskell-mode has something.
19:25:47  hm okay
19:26:30  Yeah, w3m /usr/local/share/doc/parsec-3.1.1/html/index.html works great.
19:27:12 -!- tswett has set topic: okoko | The first rule of thumb is that you do not talk about thumb. | Logs: http://codu.org/logs/_esoteric/ and http://tunes.org/~nef/logs/esoteric/?C=M;O=D.
19:27:12 -!- tswettbot has quit (Quit: tswettbot).
19:27:14  elliott, still somewhat more work compared to help() in python (which I have to say is one of the few truly great things with python)
19:27:14  Uh oh, I seem to not have Prelude documentation on this system :(
19:27:23  tswett: I like that topic
19:27:26   Yeah, w3m /usr/local/share/doc/parsec-3.1.1/html/index.html works great.  Uh oh, I seem to not have Prelude documentation on this system :(
19:27:30  Vorpal: Hitting a key-combo in Emacs is zero effort.
19:27:31  elliott, :P
19:27:39  Also, that's because I installed my own GHC.
19:27:40  ais523: thank you.
19:27:42  (With the binary package since I'm lazy.)
19:27:44  elliott, vim users wouldn't agree
19:27:44  I designed it to repel tswettbots.
19:27:59  which bit repels the tswettbot?
19:28:00  Now tswettbot cannot set foot in this channel and expect to live.  Observe.
19:28:06  That is a secret.
19:28:12  ...
19:28:23 -!- tswettbot has joined.
19:28:24 -!- tswettbot has quit (Client Quit).
19:28:45  Vorpal: What about vim users?
19:28:47  tswett, what is the point of this?
19:28:54  Vorpal: I'm trying to figure out what's wrong with my bot.
19:28:57  You use Emacs; therefore what is relevant is Emacs ways to accomplish tasks.
19:29:01  elliott, they don't agree with " Vorpal: Hitting a key-combo in Emacs is zero effort."
19:29:13  elliott, anyway I'm using nano more and more these days
19:29:18  Well, don't use nano for Haskell.
19:29:20  elliott, and µemacs quite a bit too
19:29:33  It is clearly unforgivably bad with indentation.
19:29:37 -!- zzo38 has joined.
19:29:44  elliott, nano, yeah
19:29:52 -!- tswett has set topic: opoko | The first rule of thumb is that you do not talk about thumb. | Logs: http://codu.org/logs/_esoteric/ and http://tunes.org/~nef/logs/esoteric/?C=M;O=D.
19:30:01  aha
19:30:53  tswett, I know what is wrong with your bot. You made it quit on seeing "okoko" in the topic
19:30:57  :P
19:31:46   C-c C-l C-x o ;; REPL
19:31:54  I consider that a bit too long btw
19:32:20  C-c (two) C-l (four) C-x (six) o (Assuming you count Ctrl as separate which is silly)
19:32:26  Compare with Alt-Tab, :, ...
19:32:49  elliott, I don't like alt-tab,  because it doesn't work well with more than 3-4 programs open
19:32:53  Also, instead of "newblah", say "blah'".
19:32:53  elliott: C-c (two) C-l (three) C-c (four) o ;; REPL
19:33:14  elliott, anyway it is not quite as bad due to not moving one of the keys, just repeating the same one
19:33:24  elliott, ah good idea
19:34:55  I'm working on a clean-up of the code, FWIW
19:35:14  Leaving the Parsec parts alone because I'm lazy
19:36:00  hey i already suggested filter (not . null) . map words . lines  :)
19:36:18  Yeah, that probably /is/ better than Parsec here
19:36:21 -!- tswett has set topic: opokoko | The first rule of thumb is that you do not talk about thumb. | Logs: http://codu.org/logs/_esoteric/ and http://tunes.org/~nef/logs/esoteric/?C=M;O=D.
19:36:22  I was unclear on just how little "syntax" there was
19:36:33   Yeah, that probably /is/ better than Parsec here <-- you convinced me
19:36:38  I wouldn't have used that otherwise
19:36:38  Your fault ;)
19:36:42  elliott, no your
19:36:43  well, you have to allow \n, \f, and \v as line separators
19:36:46  elliott, I trusted you
19:36:47  It's not /that/ overkill really
19:36:48 -!- tswettbot has joined.
19:36:48 -!- tswettbot has quit (Client Quit).
19:36:52  ais523, oh \f and \v too
19:36:54  also, \n(whitespace)\n is just the one line separator
19:36:55  right I'll fix it
19:36:56  oh
19:37:09  > lines "test\nhi\fho\vthere"
19:37:10    ["test","hi\fho\vthere"]
19:37:28  sic transit gloria mundi :(
19:37:32  elliott, anyway I'll fix some of the points
19:37:39  and upload a new one
19:37:50  Vorpal: I'd wait until I finish this cleanup :P
19:38:00  elliott, you can wait
19:38:08  Vorpal: Eh?
19:38:11  ?src lines
19:38:11  Source not found. I am sorry.
19:38:14  grr lambdabot
19:38:16  :t chunks
19:38:16  Not in scope: `chunks'
19:38:19  :t chunk
19:38:19  Not in scope: `chunk'
19:38:23  hm
19:38:38  elliott, so it should be:
19:38:40  let ....
19:38:43  in ...?
19:38:46  or how
19:38:53  Vorpal: Too busy finishing off this tweak to answer.
19:39:01  elliott, well I'll leave it in place then
19:39:23  elliott, I *am* going to upload it over it there
19:39:29  What?
19:39:59  elliott, you can of course make it in a new section, but on a talk page it would be wrong to overwrite what someone else said, especially since it is signed as me
19:40:06  should be moved to the non-talk page then
19:40:19  When the fuck did I ever say I was going to overwrite ... what?
19:40:22  I have no idea what you are talking about.
19:40:25  oh I misunderstood then
19:40:34 -!- calamari has joined.
19:40:48  But you sure are being hostile to someone cleaning up your code to try and help you become a better Haskell programmer.
19:41:08 -!- tswettbot has joined.
19:41:15  elliott, nope, I'm not, I'm just asking that you explain it instead so I can fix it, I'll learn more that way
19:41:39  Vorpal: So you can't compare two pieces of code side by side?
19:41:54  elliott, hm maybe
19:41:59  Cleaning up people's code is a standard practice in #haskell.
19:42:04  I see
19:43:24  :t break
19:43:25  forall a. (a -> Bool) -> [a] -> ([a], [a])
19:43:31  oerjan: gah what /is/ the function lines/words is based on?
19:43:32  elliott, oh btw y and x have weird numbering ordering there, I'm surprised you didn't discover it.
19:43:48 -!- tswettbou has joined.
19:43:50 -!- tswettbot has quit (Remote host closed the connection).
19:43:56  elliott, the reason is of course that array's fromList didn't do it the way I expected
19:44:13  elliott, thus x is vertical and y horizontal
19:44:16  because that was easier
19:44:25  (at that point)
19:44:33  I'm not bothering to look at the actual algorithms.
19:44:37  All these improvements are structural.
19:44:38  you could go over and rename the thing
19:44:44  elliott: there wasn't a generic version of those when they were added, there might still not be in the standard library
19:44:54  words = split . dropBlanks . dropDelims . whenElt
19:44:57  lines = split . dropFinalBlank . dropDelims . whenElt
19:45:04  -- http://hackage.haskell.org/packages/archive/split/0.1.4/doc/html/Data-List-Split.html
19:45:06  :t whenElt
19:45:07  Not in scope: `whenElt'
19:45:13  what the heck is whenElt?
19:45:17  there is however a package ... yeah the one Deewiant mentioned
19:45:27  http://www.haskell.org/ghc/docs/latest/html/libraries/base/src/Data-List.html#lines
19:45:27  ugh
19:45:44  Deewiant: That's a bit of a dependency for handling two more characters in one call :)
19:45:53 -!- tswettbov has joined.
19:45:55  Although, since \n[whitespace] counts as a break, maybe it's worthwhile
19:45:56  It's one of my default dependencies for almost everything
19:46:04  OK, yeah, split is ubiquitous.
19:46:09  I guess the Haskell Platform counts as stdlib now :)
19:46:11  elliott, what? You are dropping the parsec?
19:46:17  Vorpal: Maybe.
19:46:24  Depends on if oerjan's line can be tweaked into something correct without pain.
19:46:33  > chunk
19:46:33  It's in my .ghci along with monad-loops and maybe something else, I forget
19:46:33    Not in scope: `chunk'
19:46:36  Sigh.
19:46:41  elliott, well as long as it works on ghc 6 + parsec :P
19:46:51  Vorpal: You have the Haskell Platform installed?
19:46:59 -!- tswettbov has quit (Client Quit).
19:47:02  elliott, I don't know if ubuntu uses the haskell platform, I uses whatever is in the package manager
19:47:05  Oh, and safe
19:47:09  Vorpal: sudo apt-get install haskell-platform
19:47:17  elliott, don't think so no
19:47:23  Vorpal: Well, do it.
19:47:27  elliott, I had to install parsec for this
19:47:35  elliott, meh, this think has a small hdd
19:47:35  What you have is like gcc without libc. :p
19:47:38  OK, it's like...
19:47:40  gcc with half of libc.
19:47:47  Vorpal: haskell-platform isn't significantly larger than ghc.
19:47:56  elliott, I used that a fair number of times, having half a libc is a luxury!
19:48:05 -!- tswettbou has quit (Ping timeout: 252 seconds).
19:48:07  Just install it for chrissakes.
19:48:37  elliott, ah, when I was young we used to *dream* of having even a quarter of a libc!
19:48:42  oerjan: wordsBy and linesBy seem useful in Data.List.Split.
19:49:01 * oerjan hasn't used Data.List.Split himself
19:49:02  elliott, does that handle vertical tab and form feed correctly?
19:49:12           Right [] -> Error "Can't handle null program yet"
19:49:14  Facepalm.
19:49:21  Vorpal: STFU, they take predicates.
19:49:50  I'm going to take a break now to mercilessly mock today's log.
19:50:07  00:39:50:  140,000 miles of testing on the streets of LA.
19:50:08  00:39:53:  an AI knows not of how to react to the unknown
19:50:11  Neither does a human.
19:50:15  00:40:31:  say, hypothetically, the car is damaged without the AI noticing
19:50:15  00:40:40:  would it drive on? yes.
19:50:22  You're... assuming this thing has no "off" button for a human to hit?
19:50:33  00:42:27:  no
19:50:33  00:42:31:  the average numskull
19:50:33  00:42:39:  reacts better to the unknown than an AI
19:50:34  HAHAHAHA
19:50:42  00:43:00:  pikhq_: OK
19:50:43  00:43:09:  the car sets on fire
19:50:43  00:43:29:  what happens?
19:50:54  The person in it sits there mindlessly, unaware that it's on fire, and has no idea to push the off switch. Obviously.
19:51:08  00:44:50:  I just wonder
19:51:08  00:45:00:  How the AI reacts to certain scenarios
19:51:08  00:45:09:  That could not have been forseen
19:51:12  also, the person is made of straw
19:51:17  If they can't be foreseen, then there's no way you can foresee them.
19:51:25  Therefore every example you come up with is crap and your argument is baseless.
19:51:40  I really love it when people are wrong.  When someone says something that's wrong, I want people to tell me, so that I can know how wrong they are.
19:51:41  no
19:51:47  But I'd like to see a scenario which a human could easily deal with, but in an AI-based situation, the human would somehow have no idea how to press the stop button.
19:51:49  elliott: you don't get it
19:51:50  tswett: Me too.
19:51:59  ajf: How am I wrong?
19:52:00  that was a bad example
19:52:03  00:46:43:  Cool.
19:52:03  00:47:10:  What happens when the AI makes a mistake.
19:52:03  00:47:15:  AI isn't flawless.
19:52:08  the traffic scenario later on was better.
19:52:08  Cool. What happens when the human makes a mistake. Human isn't flawles.
19:52:26  elliott: The himan can learn from mistakes
19:52:28            Right [] -> Error "Can't handle null program yet" <-- I consider that a missing feature yes
19:52:29  Who said the AI can@
19:52:38  00:48:39:  ajf, it makes a mistake
19:52:38  00:48:47:  If it makes less mistakes than human drivers, it's still successful
19:52:38  00:48:55:  eh
19:52:38  00:49:11:  inb4 lawsuits
19:52:38  Memes as a substitute for argument: the movie: the game.
19:52:46  elliott, anyway, be glad oerjan told me about viewl :P
19:52:48  00:49:28:  Also
19:52:48  00:49:42:  There's the risk that AI could be deployed with serious errors
19:52:48  00:49:59:  Remember when that company made a cancer treatment device with a race condition?
19:52:48  00:50:05:  And killed several people?
19:52:48  00:50:07:  yeah.
19:52:48  no
19:52:54  If it's common, it will be found in testing.
19:52:56  Obviously.
19:53:07  uh
19:53:08  Which is, as previously mentioned, already happening.
19:53:19  Therac's race condition wasn't detected in testing.
19:53:22  The cancer thing only happened during a very specific scenario
19:53:27  Yes
19:53:36  tswett: Precisely.
19:53:40  So the argument is... things have errors?
19:53:53  ajf still hasn't presented a scenario that isn't solvable by the human pressing a "stop immediately" button.
19:54:04  I guess we can take the outside view here.
19:54:05  I did have one
19:54:07  life critical devices should be formally verified always
19:54:10  The traffic light scenario
19:54:18  Sometimes, people's lives depend on computer programs.  How often do the programs fail and kill them?
19:54:25  Say the traffic lights are not working
19:54:33  They display the wrong lights
19:54:39  ajf: anyway, I came into this discussion late.  May I ask what position you're arguing for?
19:54:44  And there is a huge sign, in English, stating some instructions
19:54:56  The driver, since AI is ubiquitous, cannot drive
19:55:04  So cannot follow those instructions
19:55:08  And is stranded
19:55:21  ajf, so a weak AI  then?
19:55:27  ajf: apropos cancer, you know that doctors give cancer patients drugs with _severe_ side effects, and this is considered ok because if they didn't they'd be much more likely to _die_?  the argument for ais driving cars is _very_ analogous, except the side effects are probably far less
19:55:29  tswett: I feel AI is no match for the human brain
19:55:53  ajf: okay.  What's the difference between AI and a human brain that makes AI worse?
19:56:13  AI can't necessarily adapt
19:56:33  ajf: is it possible that we might overcome that problem in the future?
19:56:37  Deaths by AI failing to adapt may be less than deaths by human driver stupidity
19:56:47  Sgeo: this point has already been made.
19:56:49  tswett: doubt it
19:56:50  ajf hasn't responded to it though.
19:57:08  My response to that is...
19:57:09  So what
19:57:09  ajf: why not?
19:57:14  Although the general public probably won't see it like that though
19:57:45  If there's even one death by failed computer driving, the public will react, and completely ignore the deaths by letting humans behind the wheel
19:57:51  :/
19:57:53  ajf: "So what"?
19:58:05  If the AI results in less deaths than the human, how is the human preferable?
19:58:12  It isn't
19:58:20  uh
19:58:26  he/she isn't
19:58:35  Then?
19:58:39  How is that "so what"?
19:58:54  I think AI would cause more problems in the long run
19:59:03  More traffic issues, less deaths
19:59:05  elliott, a possible reason: driving yourself is fun.
19:59:10  not that I agree it is a good reason
19:59:20  elliott: have you ever studied persuasion?
19:59:35  Vorpal: Traffic jams sure are fun.
19:59:46  elliott, they are rare outside big cities
19:59:54  tswett: No; and no, I don't expect ajf to change his mind after this.
19:59:58  elliott, and even there, unless huge, they tend to clear quite quickly
20:00:37  elliott: then I hope you're having fun.
20:00:38  tswett, I think elliott prefers a more straight forward approach of stating his opinion repeatedly. I guess he didn't get a good roll on the persuasion check
20:00:46  tswett: I sure am.
20:00:53  Excellent.
20:01:12  tswett: Having said that, I don't think I've actually seen you persuade anyone of anything here either. Although #esoteric is possibly a waste of such talent.
20:01:32  Please, ignore what I said before. I really meant to say that I am concerned about how AI would react in the event of the unknown.
20:01:50  elliott, I wish persuasion would be like in D&D... Rolling a die and making a check against that value
20:01:57  would be so much easier
20:02:02  ajf: I'm concerned about how humans react in the event of the unknown. As far as I can tell we're not qualified to drive cars.
20:02:13  elliott: Hmm
20:02:16  You know what
20:02:16  It's pretty fucking dangerous.
20:02:19  elliott: that's probably true.  I don't think I try very often.
20:02:33  Vorpal: "I got a six; you have to stop believing that now."
20:02:43  Shut up about humans being bad at driving
20:02:48  The minority dies
20:02:53  Not the majority
20:02:57  elliott, I think it is 2d10 or such
20:03:08  ajf: But it is incredibly relevant.
20:03:14  I think I'd feel more comfortable with 100% AI on the road than 1% AI
20:03:16  elliott, so probably 16 or something like that is more likely
20:03:24  Sgeo: well
20:03:26  Since the idiot humans add major unpredictability
20:03:29  That's another isue
20:03:34  ajf: If AI driving kills less people than human driving, then AI driving is preferable.
20:03:38  How does an AI react to idiots?
20:03:41  And human driving kills/injures a SHITLOAD of people.
20:03:49  Oh wait, I just realised something
20:04:10  What do you do if the driver can't drive, and needs to take over manual control of the car?
20:04:32  ajf, surely you would still need a driving license
20:04:32  If human-driven cars were introduced today, I don't think they'd get off the ground
20:04:39  in case things break down
20:04:41  or such
20:04:49  Sgeo, they have no wings, so yeah :P
20:05:01  Vorpal: I fear for the future
20:05:04 -!- Phantom__Hoover has joined.
20:05:06  If AI becomes ubiquitous
20:05:15  What if you DON'T need a license?
20:05:24  Fearing for the future is a position ubiquitous throughout history.
20:05:25 -!- Phantom_Hoover has quit (Ping timeout: 250 seconds).
20:05:30  Another position that is ubiquitous throughout history:
20:05:34  Thinking the present is better than the past.
20:05:45  elliott, hmm what about nostalgia
20:05:53  Vorpal: The far past, then.
20:05:53  there is PLENTY of that around
20:05:55 * Phantom__Hoover reads AI idiocy.
20:06:04  Sometimes the past really is better (middle ages etc.)
20:06:04  >implying pokemon black and white > red and blue
20:06:06  elliott, well okay
20:06:10  ajf: Hahahahaha
20:06:16  ajf, FFS, the AI could kill 1000 people a year and it'd be an improvement.
20:06:17  ajf: Unfortunately you've become too stupid to actually be amusing any more, so I'm done here.
20:06:35  Phantom__Hoover, but people'd be very ticked at it
20:06:36  Phantom__Hoover, I seem to remember it is less than that in Sweden per year
20:06:36  Phantom__Hoover: 1000 or 1000 more?
20:06:41  It would be outlawed
20:06:49  This is true
20:07:05  elliott: that can't be right.  Doesn't Heseod's "Works and Days" talk about how the past was really great, but over the centuries, things have gotten worse and worse?
20:07:06  Sgeo, yes, this is because, as has been demonstrated, the majority of people are idiots.
20:07:17  Not idiots
20:07:38  ajf, 1000 people a year is *at least* two orders of magnitude less than what humans manage.
20:07:39  It would be logical to blame AI for deaths resulting from AI-driven cars
20:07:41  so it needs to be made 100% safe before it will gain major acceptance, even if 99% is a huge improvement
20:07:56  ajf, only in a pure-AI setting
20:08:00  tswett: OK, by "ubiquitous" I actually just meant "common".
20:08:08  Vorpal: eh
20:08:14  The status quo killing 10000 people is far better than new technology killing 1000 people, clearly. After all, the new thing is killing people [don't think about the lives it's saving]
20:08:15  elliott: yes, that sounds right.
20:08:16  And it was more a pithy remark than anything else since I'd given up on ajf at that point.
20:08:27  ajf, otherwise you would have to deal with drunk drivers overtaking and hitting the AI cars on the side instead and what not
20:08:37  true
20:08:38  ajf, "A 1985 report based on British and American crash data found driver error, intoxication and other human factors contribute wholly or partly to about 93% of crashes.[6]"
20:08:55  Not surprising
20:08:55  I now really want a perfect driving AI that relies on killing, say, a hundred thousand people per year, and consuming their bodies, to run.
20:08:56  That's 93% of crashes which AIs are not susceptible to.
20:09:05  No
20:09:12  Yes?
20:09:12  >error
20:09:13  ajf, in a mixed setting it would be as now, require investigation to find who did it
20:09:21  An AI could also make an error in judgement
20:09:27  at least the AI would probably have accurate logs
20:09:35  It's susceptible to others, but I highly doubt AI error could be larger than human.
20:09:41  Especially if it has a Pentium I, but that's another matter
20:09:45  ajf: Are you saying that an AI would kill more people than human drivers?
20:09:47  Yes or no.
20:09:58  (tswett: Shut up, I can't stop myself.)
20:10:03  elliott: Well
20:10:12  (It's like crack, if crack was wasting your time on IRC.)
20:10:32  We don't know
20:10:32  We have only had small-scale trials
20:10:43  If a competent human driver can survive dangerous situations that an AI can't... (then again, maybe AI can be progammed to try to survive those situations. How do you test it though?)
20:10:44  ajf: Yes but clearly you are making sweeping predictions already.
20:10:52  ajf: Do you think AI drivers, or human drivers, would result in more deaths?
20:11:03  Erm.
20:11:05  ajf: Do you think AI drivers, or human drivers, would result in more deaths/injuries?
20:11:06  Depends, really
20:11:16  Pick the most likely scenario in your mind
20:11:26  Humans
20:11:27  What if it's the case that 100% AI drivers result in 0 deaths, but a mixture of AI and human results in more deaths than human alone?
20:11:36  How do we convince everyone to switch to AI?
20:11:45  ajf: So you think humans are more likely to result in more deaths/injuries?
20:11:45  Yes?
20:11:56  Yes
20:12:07  Yet you continue to argue that AI driving is a Very Bad Thing.
20:12:15 -!- cheater79 has quit (Quit: Leaving).
20:12:16  Hey remember how I give up?? I'm DOUBLE giving up.
20:12:21  Times-two give up combo.
20:12:22  No because
20:12:24  Flawless execution.
20:12:31 -!- cheater79 has joined.
20:12:37  Human error is gradually reducing the idiotic population
20:12:47  elliott: I think AI driving is a bad thing, because I think programmers detached from the action are typically more likely to be incomptent than humans whose own life is on the line
20:13:11  OK, ok
20:13:11  ais523: Why are you pinging someone who's just make a times-two give up combo.
20:13:18  It is only going to annoy me.
20:13:18  I accept your argument, but
20:13:23  I have a new one
20:13:25  ajf, I think natural selection will take quite a while to make us good drivers...
20:13:33  ajf: I hope everyone else enjoys it.
20:13:49  http://catpad.net/michael/apl/
20:13:53  If a car crashes, and one car or both used AI
20:13:55  have i posted this before?
20:13:56  Who is responsible?
20:14:09  ajf, depends on the situation really
20:14:11  The car manafacturer, or the driver?
20:14:13  Or nobody?
20:14:16  Vorpal: sure
20:14:17  ajf, you are
20:14:17  While we're at it, why don't we tear down hospitals, so as to gradually reduce the population of people who aren't more resistant to sickness?
20:14:32  cheater79: Why?
20:14:34  ajf, just because your preconceived notions of blame don't adapt to this situation does not make it unworkable.
20:14:37  My car was driving itself
20:14:51  Phantom__Hoover: I never said it was
20:14:59  I was just wondering who you think would be "blamed"
20:15:00  ajf, if it crashes due to a drunk loosing control over the car. Or what if it is driven outside parameters (warranty void if friction coefficient against road is less than x)
20:15:06  (the last one is a joke)
20:15:09  ajf, if two other people crash, you are at fault.
20:15:15  ajf, I don't think blame is a particularly useful concept.
20:15:50  You have to sue somebody
20:15:53  Even if the AI isn't to "blame", perhaps it could be adjusted to try to escape that sort of situation
20:16:04  ajf, that sounds very american...
20:16:13  If the AI is to blame, then there's clearly something wrong, and it needs to be adjusted
20:16:23  So blame is useful for that
20:16:28  "Does the AI need to be fixed"
20:16:31  Vorpal: haha
20:16:37  what if someone mis-tunes the code, due to negligence
20:16:41  Well the problem is
20:16:51  then a computer programmer is accountable for someone's death
20:17:05  Really, that, the public/media/fox news will react horribly in the first AI-related death
20:17:06  Then a patch can be issued, fixing the bug
20:17:13  HOWEVER, in situations where this happens, engineers usually have a long peer-review process applied
20:17:16  ajf, I agree, and that makes me feel sad
20:17:18  "COMPUTER KILLS HUMAN IN CAR CRASH"
20:17:24  ajf, I really should have judged you when you said it was impossible for something to contain itsle.
20:17:27  computers don't kill humans
20:17:27  *itself
20:17:29  i kill humans
20:17:32  I regret not doing so.
20:17:38  Sgeo: The sorry state of modern media also makes me feel sad
20:17:42  ajf, an advantage with this is that the AI will learn from mistakes globally. In that once a fix is released it will be applied everywhere
20:17:50  Vorpal: True
20:17:50  Vorpal: import Text.ParserCombinators.Parsec
20:17:55  Vorpal: Replace with import Text.Parsec.
20:17:56  I hope they have over-the-air updates
20:18:04  Just... don't patch when running :P
20:18:07  Vorpal, if a computer driver makes a mistake, it can't learn from its mistakes globally. They'll just be banned
20:18:09  elliott, I based that on Real world haskell example
20:18:14  elliott, I guess it is wrong then?
20:18:18  Vorpal: It's Parsec two
20:18:19  Before then
20:18:21  Text.Parsec is three
20:18:24  elliott, oh, I see
20:18:34  elliott, I only installed parsec 3, so why did that work then
20:18:40  Vorpal: Backwards compatibility layer
20:18:43  ah
20:18:49  elliott, anything else needs changing?
20:19:01  err yep
20:19:06      It could refer to either `Main.Error', defined at downright.hs:31:45
20:19:07                            or `Text.Parsec.Error', imported from Text.Parsec at downright.hs:26:0-17
20:19:07  damn
20:19:11  I have to rename it
20:19:21  Or.
20:19:25  import Text.Parsec hiding (Error)
20:19:28  import qualified Text.Parsec as Parsec
20:19:29  ah good idea
20:19:46  elliott, the qualified one would be quite unwieldy though
20:21:25  ais523, did you say \f and \v counted as line separators?
20:21:42  yes, any block of whitespace including \n, \f, or \v is a line separator
20:21:49  ais523, as far as oerjan understood it, \n\n would be collapsed to \n yeah
20:21:59  indeed
20:22:37  ais523, hm so eol = (many1 (oneOf "\n\v\f")) >> ws isn't really correct
20:22:48  it needs to handle \n  \n   \n ?
20:22:54  yes
20:22:57  gah
20:23:03  i wish lambdabot had split so I could test the composition version oerjan did
20:23:12  elliott, can't you test it locally?
20:23:17  ghci
20:24:04  ais523, okay I'm at loss how to write that for parsec
20:24:20  Vorpal: many1 (oneof "\n\v\f" >> ws)
20:24:35  Vorpal: yes but i'm lazy
20:24:36  oerjan, oh, wait, why would that work
20:24:55  oerjan, I was thinking this might, but I guess not: eol = (many1 (oneOf "\n\v\f")) >> ws >> eol
20:25:19  maybe it would with many instead of many 1
20:25:22  many1*
20:25:25  Vorpal: well that might too
20:25:25  for the second one
20:25:53  Vorpal: um you want to ensure there's at least one actual \n\v\f to start with
20:26:00  oerjan, indeed
20:26:10  oerjan, but your version does that, right?
20:26:22  yes
20:27:02  oerjan, BNF so damn easier :P
20:27:11  doesn't "  \n" count
20:27:16  and no its not, you're just better at bnf
20:27:20  elliott, as what?
20:27:24  Vorpal: as a newline
20:27:27  ais523 suggested so
20:27:34  I can't figure out how to easily do "string of whitespace containing at least one \n\v\f" in BNF
20:27:37  elliott, yes but lines eat trailing ws
20:27:43  line = sepEndBy1 cell ws1
20:27:45  Vorpal: the rule is pretty simple
20:27:57  don't think about "trailing whitespace", etc, just look at the rule!
20:27:58  elliott, so that is not an issue
20:29:14  ais523: um this way is easier with parsec, otherwise you end up needing backtracking
20:29:24   I can't figure out how to easily do "string of whitespace containing at least one \n\v\f" in BNF <-- seems easy enough to me, just define that there might be zero or more \s\t followed by at least one \n\v\f followed by zero or more \n\w\f\t\s
20:29:28  that is a newline
20:29:29  and try and stuff
20:29:33  maybe i can find data.list.split on to one line
20:29:36  Vorpal: ah, that's pretty easy in Parsec too
20:29:38  so i can use it in lambdabot
20:29:44  you can just specify that directly
20:29:50  ais523, well it seems the obvious way in BNF :P
20:30:10  maybe you don't consider it simple?
20:31:14  ais523, I don't know if it is just me, but I find it helps to think about BNF in the same mindset you use when thinking about regexp
20:31:25  they are not the same indeed, but they have similarities
20:32:17  and surely you find writing regexp trivial?
20:32:36  by letting every token you've got skip trailing whitespace, you increase the chance of your parser being LL(1), thus avoiding try and backtracking.  afaict.
20:33:12  oerjan, ah, didn't know that, useful
20:33:38  oerjan: isn't it easier just to do it with every terminal or whatever
20:33:50  well ok i meant terminals
20:34:31  the lexeme parser is specifically for doing that automatically
20:34:47  well semi-automatically
20:34:51  oerjan, which lexeme parser?
20:34:59  is it something that parsec has?
20:35:02  yes
20:35:15  I'll look at it later, probably tomorrow
20:35:30  hm it may be part of that expression parsing thing
20:36:01  yeah it is
20:36:02  which sucks
20:36:12  it's part of the languagedef stuff
20:36:23  oh not the expression stuff
20:36:28  well adding a >> ws (or even better, <* ws) works too
20:36:49 * Sgeo still wants a language he can use to write esolang interpreters that other people won't yell at him for
20:36:53  oerjan, wait, what does <* do?
20:37:01  :t (<*)
20:37:02  forall (f :: * -> *) a b. (Applicative f) => f a -> f b -> f a
20:37:17  Is Common Lisp good or bad for that purpose?
20:37:18  Sgeo: Use an esolang, it's the only safe choice on this channel
20:37:22  oerjan, assume a type signature isn't enough for me sometimes
20:37:29  Vorpal: it's applicative, almost equivalent to >>, but returns the result of the _first_ argument
20:37:46  oerjan, oh right, so wait why does >> even work there
20:37:56  well >> works if you don't need the result
20:38:21  oerjan, the result is the same as the parsing state or different?
20:38:43  i mean the return value
20:39:15  oerjan, so that isn't the same as the stuff going out of the parse call I guess
20:39:15  which is different from the parsing state, as usual for monads
20:39:40  yeah
20:39:47  um it's what you get inside the Right if the parse succeeds
20:40:14  right
20:43:33  Sgeo: if you use Malbolge, no one will yell.  although they might scream in agony.
20:44:20  Sgeo, Falcon
20:45:15  Sgeo, anyway, pretty much any other non-joke esolang would work
20:46:39  Sgeo, if you don't like falcon you can try php or C++
20:47:21  Sgeo, or do one which elliott doesn't understand
20:47:26  Sgeo, that will alaways work
20:47:48  what language don't i understand
20:47:54  elliott, you tell me
20:47:58  elliott, agda iirc?
20:48:10  i can read agda, just not the stdlib :D
20:48:14  elliott, ah
20:48:20  elliott, English.
20:48:20  oh hello I was scrolled up 63 hours
20:48:25  elliott, name one that you find completely incomprehensible then
20:48:31  wareya, heh?
20:48:35  Heh.
20:48:41 * oerjan ponders roman numeral look and say
20:48:46  wareya, you have some serious log reading to do
20:48:59  I barely pay attention to this channel
20:48:59  Vorpal: I don't know of one, apart from tons of esolangs and those probably for mostly syntactic reasons
20:49:09  elliott, intercal?
20:49:11  J code takes me a while to decipher, K I'm not very good at reading at all
20:49:14  APL I'm hopeless at
20:49:17  OK, INTERCAL code I can't read
20:49:25  INTERCAL isn't too bad
20:49:31  Sgeo, there you go. INTERCAL, malbolge or APL
20:49:32  unless it's been deliberately obfuscated
20:49:33  Yes, but I can't read it.
20:49:49  (most people would be shocked to learn that there's a difference between clean and obfuscated INTERCAL, but there is)
20:49:59 -!- poiuy_qwert has quit (Ping timeout: 276 seconds).
20:50:03  There's a K language?
20:50:15  yes, some array one
20:50:18  like J
20:50:27  Are there any letter of the alphabet that aren't names of languages?
20:50:39  U is a pretty ugly letter
20:50:40  Sgeo, which alphabet
20:50:42  maybe it isn't a language
20:50:58  Sgeo, I don't think ÅÄÖØÆ are names of languages
20:51:30 -!- augur has quit (Remote host closed the connection).
20:51:46  There's an Å language
20:51:48  Vorpal, he means the real alphabet, not that watered-down Scandinavian crap.
20:51:59  Deewiant, nice
20:52:04  Deewiant, what sort of language
20:52:15  BCDJKÅ, what else is used?
20:52:31  oh R
20:52:35  Vorpal: http://www.w3.org/Conferences/WWW4/Papers/100/
20:52:45  BCDJKRÅ <-- what else
20:52:53  A
20:52:59  ah
20:53:06  Phantom__Hoover, which one is A then?
20:53:12  Deewiant: Why do you even know this.
20:53:15  Dunno, IIRC there were a few.
20:53:16  ABCDJKRÅ
20:53:17 -!- augur has joined.
20:53:28  Z was a specification language wasn't it
20:53:32  oerjan: yes, Dijkstra
20:53:45  E
20:54:02  Deewiant, when is http://www.w3.org/Conferences/WWW4/Papers/100/, I can find no date
20:54:06  I guess 1997 or earlier
20:54:10  EFGLMST off the top of my head
20:54:14  BCDEJKMQRSTZ
20:54:16  elliott: I googled it
20:54:16  Are the ones I know.
20:54:29  Deewiant, ah
20:54:32  B is C predecessor, C is C, D is D, E is erights, J is APLalike, K is APLalike, M is MUMPS,
20:54:35  Never heard of KMQSTZ
20:54:36  Q is term rewriting predecessor to Pure,
20:54:38  R is statistics,
20:54:41  S is statistics language R is based on,
20:54:43  T is Scheme dialect,
20:54:47  Z is Dijkstra speclang
20:55:08  I've heard of MUMPS
20:55:15  Not as M though
20:55:25  so we have BCDEJKMQRSTZÅ, what about A that Phantom__Hoover mentioned?
20:55:37  There's an M by Microsoft that isn't MUMPS
20:55:49  V is an esolang
20:56:07  (A?)BCDEJKMQRSTVZÅ
20:56:18  So, BCDEJKMQRSTVZ so far
20:56:19  Which leaves...
20:56:34  > "ABCDEFGHIJKLMNOPQRSTUVWXYZ" \\ "BCDEJKMQRSTVZ"
20:56:34    "AFGHILNOPUWXY"
20:56:36  Phantom__Hoover, mentioned an A
20:56:43  elliott, ^
20:56:45  There's an F-sharp but no F that I know of
20:56:51  Vorpal: Yes, but he has no substantiated his claim.
20:56:54  There's A++ but I know of no A.
20:56:55  F is a Fortran dialect, G and L are something I can't remember but I'm pretty sure they exist
20:56:56  right
20:57:08  So BCDEFJKMQRSTVZ
20:57:13  I've heard of a G too, but I'll be conservative about this
20:57:42  elliott, I think I heard of a P somewhere, can't remember any details
20:57:57  There is P'' of course, but that is different
20:58:25  elliott, why do you keep leaving out the Å? :(
20:58:33  Because Å in't part of the alphabet.
20:58:35  isn't.
20:58:37  elliott, it is!
20:58:41  I'm not including languages named pi either.
20:58:45  ah
20:59:05  elliott,  better way to phrase it: by unicode codepoint
21:00:34 -!- augur has quit (Remote host closed the connection).
21:00:35  um, A programming language?
21:00:48  dur
21:01:20 -!- augur has joined.
21:01:24  obviously there's one programming language called A.
21:02:11  the language's name is A Programming Language, or APL.
21:02:13  it is not A.
21:02:34  elliott, different A perhaps
21:02:42  bbiab
21:03:00  Vorpal: no, I'm fairly sure cheater79 is too much of an idiot not to take the obvious, wrong answer.
21:03:16  elliott: no u.
21:03:31  elliott, huh? Oh I have him on ignore
21:03:36  elliott, I thought you did
21:04:19  elliott, I can assure you that ignoring him is well worth the work
21:04:26 -!- variable has left ("I found 1 in /dev/zero").
21:04:31 -!- variable has joined.
21:05:14  oh damn
21:05:50 -!- elliott_ has joined.
21:05:58  21:03:31:  elliott, huh? Oh I have him on ignore
21:06:00  21:03:36:  elliott, I thought you did
21:06:02  21:04:19:  elliott, I can assure you that ignoring him is well worth the work
21:06:02 -!- elliott has quit (Read error: Connection reset by peer).
21:06:04  new installation.
21:06:28  I've been trying out the "not ignoring cheater" thing in the hopes that since I'm one of like only three people who don't have him on ignore maybe it'll be fun
21:06:31  that's a lie
21:06:37  I'm actually just too lazy to get an exclamation mark, asterisk and at sign
21:11:01  elliott_, XD
21:11:22  elliott_, and too lazy to copy it from the /whois output
21:11:45  elliott_, oh and too lazy to get a fixed laptop too?
21:11:59  elliott_, how long does your warranty last
21:12:22  a year i guess
21:12:45  ah
21:12:48  elliott_, not much
21:13:33  elliott_, the office chair I'm sitting on atm comes with a 10 year warranty (reduced to 8 years if used in a 24/7 environment)
21:13:34  :)
21:13:41  of course, not electronics but still
21:22:16 -!- BeholdMyGlory has quit (Read error: Operation timed out).
21:24:42 -!- BeholdMyGlory has joined.
21:25:17 -!- calamari has quit (Quit: Leaving).
21:27:26  I figured out something about C program. If you use ? : a lot then you don't need as much parentheses but it makes it more difficult to understand.
21:28:59  `addquote  I figured out something about C program. If you use ? : a lot then you don't need as much parentheses but it makes it more difficult to understand.
21:29:03  ​418)  I figured out something about C program. If you use ? : a lot then you don't need as much parentheses but it makes it more difficult to understand.
21:29:31 * oerjan confirms that roman numeral look and say has no useful atoms in the usual l.a.s. sense
21:30:23  doesn't that make it more interesting? atoms tend to block TCness
21:31:11  not really, i'm pretty sure it just needs a little tweaking
21:31:28  well a bit more interesting of course, which is why i checked it
21:32:27  I, II, III, IV, VI, VI, VI, ...
21:32:29  oerjan: very boring indeed
21:32:37  unless you don't "normalise" them...
21:32:45  huh?
21:33:03  heh
21:33:04  I, II, III, IIII = IV, IIIV = VI
21:33:07  IVII = VI
21:33:09  IVII = VI
21:33:09  etc.
21:33:10  no?
21:33:14  well of course i don't
21:33:20  [asterisk]No?
21:33:56  I, II, III, IIII, IVI, IIIVII, IIIIIVIII, VIIVIIII
21:34:01  elliott_: I, II, III, IIII, IVI, IIIVII, IIIIIVIII, VIIVIIII
21:34:01  I, II, III, IIII, IVI, IIIVII, IIIIIVIII, IVIIVIIII
21:34:07  ugh
21:34:10  what mistake did i make
21:34:12  oh
21:34:13  miscounted
21:34:22  heh that we all went to the same length, and  finished at much the same time
21:34:28  I, II, III, IIII, IVI, IIIVII, IIIIIVIII, VIIVIIII, IVIIIIVIVI
21:34:38 -!- Phantom__Hoover has changed nick to Phantom_Hoover.
21:34:42  I, II, III, IIII, IVI, IIIVII, IIIIIVIII, VIIVIIII, IVIIIIVIVI, IIIVIVIIVIIIVII
21:34:53  is it always just I and V?
21:34:54  does it ever use non-I, non-V letters, I wonder
21:34:57  ais523: :D
21:34:57  you can have no atom boundaries because every sequence fluctuates between starting with I and V
21:35:02  presumably that's going to be quite easy to prove
21:35:04   is it always just I and V?
21:35:04   does it ever use non-I, non-V letters, I wonder
21:35:19  ais523: yes, you can have no more than 7 in a block
21:35:45  which follows because the _numerals_ never have more than 3 consecutive
21:36:10  and in fact you can only have 6 I's and 2 V's after a while
21:36:51  (at most)
21:37:01  what if you used V as a separator of digit/count? :-D
21:37:09  I, IVI, IVIIVIIVI
21:37:33  I, IVI, IVIIVIIVI, IVIIVVIIVIIVIIIVIIVIIVI
21:37:42  i smell a pattern
21:37:52  heh
21:37:52  what if you used I as the separator ;D
21:38:08  I, III, IIIII, VII
21:38:16  IIVIIIV
21:38:27  well you can use any sequence of strings as the numerals to get an analoguous sequence
21:38:45  hmm
21:38:46  then it's
21:38:56  II I I, I I V, III I I, I I V
21:39:05  IIIIIIVIIIIIIIV
21:39:11  yikes
21:39:16  i don't know numbers that big
21:39:31 -!- tswett has set topic: The first rule of thumb is that you do not talk about thumb. | Logs: http://codu.org/logs/_esoteric/ and http://tunes.org/~nef/logs/esoteric/?C=M;O=D.
21:40:11 -!- tswettbov has joined.
21:40:15  as long as the string length is o(n), i believe you will always end up with a bounded group length in the limit
21:40:37  So, the thing about tswettbov is that it only crashes when you send a message containing the string "okoko".
21:40:56  tswett: when /I/ send that?
21:41:04  and it isn't very good at that, i take?
21:41:09  *even
21:41:20  ais523: no, Gregor.
21:41:33  how bizarre
21:41:34  15:54:03:  !ul (/me is trying to send a message starting "/me")S
21:41:35  15:54:06:  /me is trying to send a message starting "/me"
21:41:35  15:54:17:  doesn't work with EgoBot, it seems
21:41:37  is that an intentional feature?
21:41:46  No, I'm actually kidding.
21:41:56  So, this message, which contains "okoko", should cause it to crash.
21:42:21  Sure enough, it just crashed.
21:43:45  16:29:29:  but it's hard to see how any language could understand nested " as quotes
21:43:49  you can do that with whitespace :)
21:43:54  indeed
21:44:07  I think one of my languages was actually planning to do that for a while
21:44:11  "define "factorial n" "if "= n [one]" [one] "[asterisk] n "factorial "- n [one]""""""""""""""""""""""""""""""""""""
21:44:12  but I decided INTERCAL-style quotes would work better
21:44:20  elliott_: note that your I or V separator variations are just effectively appending those to the numerals before treating them as such a sequence
21:44:23  (nicer with | than ")
21:44:24 -!- tswettbov has quit (Ping timeout: 246 seconds).
21:44:29  oerjan: hm maybe
21:44:38  yes i see
21:45:05  16:39:58:  and STATA (a nasty non-esoteric language) uses `" "'
21:45:05  STATA?
21:45:23  oh, ouch
21:45:25  don't remind me of that
21:45:33  already have
21:45:43  it's apparently really popular among statistical economists
21:45:51  YOU EVIL MAN
21:47:53  The name is a portmanteau of "statistics" and "caca"
21:48:56  an excellent portmanteauvre
21:49:28  STATA's actual official method for assigning to array elements translates roughly to Perl as eval "\$array$i = $n"
21:51:06  :D
21:51:10 -!- augur has quit (Remote host closed the connection).
21:51:32  ais523: I'd like a language based on that somehow
21:51:40  I guess the quining string languages are similar
21:51:51  but something that involves implementing control structures by pasting together code and quoting it somehow
21:54:36 -!- tswettbow has joined.
21:58:46 -!- tswettbow has quit (Ping timeout: 246 seconds).
22:03:31  This error I'm encountering doesn't seem to occur in any part of the code.
22:03:59  It only occurs in the entirety of the code.  Test any part alone, and it goes away.
22:04:13  Thus disproving reductionism.
22:04:57 -!- tswettbox has joined.
22:05:13  You have to learn to put everything tigether in the way that you can see more easily what is wrong, look for a few more minutes, and then notice that there is one number stupid, and correct it.
22:05:13  tswett, what language?
22:05:40  Phantom_Hoover: Smalltalk.
22:05:53  tswett: My diagnosis is that there is one number stupid.
22:05:56  Correct it.
22:06:12  No, there are definitely at least two numbers.  And my name isn't Stupid.
22:06:40  elliott_: That is not a very good diagnosis without looking at the entire program to see exactly what the program is, how it works, and what is wrong. And then you can say that there is one number stupid (if that is the case).
22:07:06  Well SHEESH, I'm not a doctor.
22:07:17 -!- tswettboy has joined.
22:08:33  So.  If I send a message causing an error, then I get that error, as expected.  If I send a message that sends a message causing an error, then I get an infinite error loop where no error discloses its origin.
22:09:16 -!- tswettbox has quit (Ping timeout: 246 seconds).
22:09:27 -!- tswettboz has joined.
22:09:36  I bet you guys appreciate these bots.
22:09:52  Totally.
22:10:06  Do you know of the Lesser Key of Solomon?
22:10:21 -!- tswettbpa has joined.
22:10:25  I think "okoko" will kill them all.
22:10:36  I guess not.
22:11:16  what's special about "okoko"?
22:11:21 -!- tswettboy has quit (Ping timeout: 246 seconds).
22:11:36  okoko
22:11:36  Well, the string "okoko" is hardcoded into the source code as the string that causes the bot to quit.
22:12:06  and then it fails to quit, opting to crash instead?
22:12:42 -!- tswettbpb has joined.
22:12:50  olsner: pretty much.
22:13:26 -!- tswettbpc has joined.
22:13:48 -!- tswettboz has quit (Ping timeout: 246 seconds).
22:14:30 -!- tswettbpa has quit (Ping timeout: 246 seconds).
22:15:13 * tswett sends a CTCP ACTION.
22:16:04 * Phantom_Hoover Phantom_Hoover 
22:16:12  Oh, that's what ACTION does.
22:16:58 -!- tswettbpb has quit (Ping timeout: 246 seconds).
22:17:11 -!- tswettbpd has joined.
22:17:39 -!- tswettbpc has quit (Ping timeout: 246 seconds).
22:17:41 -!- tswettbpe has joined.
22:19:02 -!- tswettbpf has joined.
22:19:41 -!- tswettbpg has joined.
22:20:07  I seem to have shown quite conclusively that this one piece of code causes an effect before it is run.
22:20:08 * oerjan is not entirely convinced this is a reasonable debugging method
22:20:41  You see, I have this clause that throws an exception, then runs a piece of code.
22:21:04  If that piece of code is empty, I see the exception thrown.  If that piece of code is something that throws an exception, I do not see the original exception thrown.
22:21:14  Even though, since an exception was thrown, that piece of code should never have been executed.
22:21:30 -!- tswettbpd has quit (Ping timeout: 246 seconds).
22:21:35  Always adding commands to send output, and breakpoint, and stuff, can help, too.
22:21:51 -!- tswettbpe has quit (Ping timeout: 246 seconds).
22:22:23  Conclusion: Pharo sucks.  :P
22:23:06  17:20:36:  Java has a lot of annoying quirks
22:23:07  17:20:45:  such as having to use a file-system for quoting
22:23:07  at
22:23:09  wat
22:23:16 -!- tswettbpf has quit (Ping timeout: 246 seconds).
22:23:23  elliott_: I'm not sure what I meant by that
22:23:57 -!- tswettbpg has quit (Ping timeout: 246 seconds).
22:24:40 -!- Phantom_Hoover has quit (Ping timeout: 246 seconds).
22:25:17 -!- Phantom_Hoover has joined.
22:28:37 -!- augur has joined.
22:30:35 -!- Phantom_Hoover has quit (Ping timeout: 250 seconds).
22:30:47 -!- Wamanuz has quit (Read error: Operation timed out).
22:31:47 -!- Phantom_Hoover has joined.
22:33:02 -!- Wamanuz has joined.
22:44:07 -!- zzo38 has quit (Quit: NO CARRIER).
22:44:35 -!- zzo38 has joined.
22:46:01 -!- augur has quit (Ping timeout: 246 seconds).
22:46:21 -!- augur has joined.
22:49:39 -!- Phantom_Hoover has quit (Ping timeout: 250 seconds).
22:51:22 -!- Phantom_Hoover has joined.
22:51:30  night →
22:52:37  Now I am going to record changes in my character sheet. Please wait forever.
22:53:00  ঙ香
22:53:02  
22:53:04  ™
22:53:07  
22:53:09  邙
22:54:29  02:36:00: -!- ihope has joined #esoteric.
22:54:29  02:36:17:  HAI IM GREGORR I LIVE IN OREGON AND I WORK FOR INTEL >_O
22:54:37  tswett: confirm/deny.
22:55:11  How should I know?  I don't know who that is.
22:55:20  Gregor, apparently.
22:55:41  HEY GOOGLE TSWETT IS IHOPE
22:55:44  AND
22:55:44  ALSO
22:55:44  GREGOR
22:56:07  Most probably, that was neither of us.
22:56:12  In fact, I suspect it was elliott_.
22:56:22  It was actually aloril.
22:56:22  Yes, I agree with your suspicion.
22:56:24  And CakeProphet.
22:56:26  Working in tandem.
22:56:35 -!- Vorpal has quit (Ping timeout: 250 seconds).
22:56:42  That actually predates me coming in here and doing anything but quitting, so I find it unlikely :P
22:56:47  I always knew aloril was scheming behind our backs.
22:57:08  And that ralc guy too.
22:57:09  He is now my next official Hate Figure.
22:57:16  yiyus is just the manager.
22:57:31  And siracusa... I'd stay away from him if I were you.
22:57:32  Yeah, aloril definitely played some part in this.  You can never trust a guy whose name means, uh...
22:57:39  A guy whose name means aloril.
22:57:48  "I am nourished the".
22:57:54  It's in Latinitalian.
22:58:06  I am nourished the too.
22:58:22  The language they speak, and have always spoken, in Rome.
22:59:19 * Phantom_Hoover Googles "aloril", notes fanfiction.net account.
22:59:39 * Phantom_Hoover takes instant and violent disliking to aloril.
23:00:30  As Eliezer Yudkowsky once said, ":(".
23:00:54  What was that thing that I said Eliezer Yudkowsky said?
23:01:09  "Yes" I think?
23:01:10  Dunno.
23:01:18  It might have been "AAIIIIIEEEEEAAARRRRRGGGHHH".
23:01:45  "Look, sometimes you just have to do things just because they're awesome." --Eliezer Yudkowsky, from memory
23:01:51   Yeah, aloril definitely played some part in this.  You can never trust a guy whose name means, uh...
23:01:53  [asterisk]you have
23:02:12  Preliminary evidence suggests possible violation of the Law Of Statistical Absurdity.
23:02:32  Finally I found the wand of electric lightning now we can destroy any large object if it needs to be destroyed and is required to use a such a wand for that purpose.
23:02:55  elliott_: Why would you stay away from me?
23:03:06  siracusa: You're in cahoots.
23:03:10  With all of the lurkers.
23:03:12  You're the Lurker Gang.
23:03:28  `addquote  Finally I found the wand of electric lightning now we can destroy any large object if it needs to be destroyed and is required to use a such a wand for that purpose.
23:03:30  ​419)  Finally I found the wand of electric lightning now we can destroy any large object if it needs to be destroyed and is required to use a such a wand for that purpose.
23:03:46  And why is this bad?
23:03:58  siracusa: 'cuz you can't be trusted.
23:04:03  Stop playing dumb.
23:04:04  `quote :(
23:04:06  No output.
23:04:20  `quote large
23:04:21  ​261)  LoTR actually compresses pretty well into a film; the large amount of description becomes unnecessary.  LotR would compress pretty well into a book; the large amount of description *is* unnecessary. \ 272)  oerjan: also actually A(4, 4) is larger than any other integer, i learned this the
23:04:25 -!- siracusa has left.
23:04:26  Try again please! You did it wrong! Too bad!!!
23:04:39  Now it work, thank you
23:04:56  Hey guys, do you mind if I just run `quote a bunch of times?
23:04:58  `quote integer
23:05:00  ​272)  oerjan: also actually A(4, 4) is larger than any other integer, i learned this the other day when i was reading about this algo, it had complexity O(n a^-1(n)) = O(n a^-1(4))
23:05:43  `quote learned
23:05:44  ​127)  if you claim that the universe is more than 3D the burden of proof is on you to produce a klien bottle that doesn't self intersect    ^ I learned that trick from atheists \ 272)  oerjan: also actually A(4, 4) is larger than any other integer, i learned this the other day when i was reading
23:05:58  `quote atheists
23:05:59  ​127)  if you claim that the universe is more than 3D the burden of proof is on you to produce a klien bottle that doesn't self intersect    ^ I learned that trick from atheists
23:06:09  `quote soupdragon
23:06:10  ​127)  if you claim that the universe is more than 3D the burden of proof is on you to produce a klien bottle that doesn't self intersect    ^ I learned that trick from atheists
23:06:15 -!- oerjan has quit (Quit: Good night).
23:06:18  uh
23:06:21  Did I just scare away siracusa
23:06:23  Like, really.
23:06:24  I'm producing a lot of identical quotes.
23:06:29  `quote burden
23:06:30  ​127)  if you claim that the universe is more than 3D the burden of proof is on you to produce a klien bottle that doesn't self intersect    ^ I learned that trick from atheists
23:06:30  How to make list of numbers by quotation by search words?
23:06:38  zzo38: wat
23:06:48  `quote large
23:06:49  ​261)  LoTR actually compresses pretty well into a film; the large amount of description becomes unnecessary.  LotR would compress pretty well into a book; the large amount of description *is* unnecessary. \ 272)  oerjan: also actually A(4, 4) is larger than any other integer, i learned this the
23:06:54  `quote film
23:06:56  ​261)  LoTR actually compresses pretty well into a film; the large amount of description becomes unnecessary.  LotR would compress pretty well into a book; the large amount of description *is* unnecessary. \ 299)  The context is Gracenotes releasing an illegal copy of a film about monster cock dildos.
23:06:59  Like, only the numbers instead of reading entire quotation texts. So that, if there is a lot, it all fits
23:07:06 -!- MigoMipo has quit (Read error: Connection reset by peer).
23:07:08  `quote alot
23:07:10  No output.
23:07:18  `run quote film | sed 's/).*//'
23:07:20  ​261 \ 299
23:07:23  `run quote film | sed 's/).*//g'
23:07:25  ​261 \ 299
23:07:28  O, in case of "No output" it doesn't put the strange characters at first
23:07:29  zzo38: Like that.
23:07:38  `run quote the | sed 's/).*//g'
23:07:40  ​5 \ 10 \ 11 \ 16 \ 17 \ 21 \ 22 \ 23 \ 26 \ 30 \ 34 \ 35 \ 38 \ 41 \ 44 \ 46 \ 48 \ 49 \ 50 \ 53 \ 56 \ 57 \ 58 \ 60 \ 63 \ 65 \ 66 \ 68 \ 70 \ 72 \ 73 \ 75 \ 78 \ 79 \ 84 \ 86 \ 87 \ 88 \ 89 \ 91 \ 92 \ 104 \ 105 \ 106 \ 107 \ 109 \ 110 \ 111 \ 114 \ 116 \ 117 \ 118 \ 122 \ 124 \ 126 \ 127 \ 134 \ 135 \ 141 \ 144 \ 147 \ 148
23:07:44  `run quote film | sed 's/).*//g' | tr '\n' ','
23:07:46  ​261,299,
23:07:46  `quote 5
23:07:47  ​5)  GKennethR: he should be told that you should always ask someone before killing them.
23:07:51  `run quote film | sed 's/).*//gN'
23:07:53  No output.
23:07:57  Maybe it should be made the script with that.
23:07:57  `run quote film | sed 'Ns/).*//g'
23:07:59  No output.
23:08:10  zzo38: it would be fairly pointless since you'd just want to check them all anyway.
23:08:12  `quote that
23:08:14  ​4)  that's where I got it  rocket launch facility gift shop \ 5)  GKennethR: he should be told that you should always ask someone before killing them. \ 7)  what, you mean that wasn't your real name?  Gosh, I guess it is. I never realized that. \ 10)  So
23:08:19  `pastequotes that
23:08:21  ​http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.14122
23:08:31  Still messes up URL detection.
23:08:47  `quote ivan
23:08:49  ​165)  Oh I get it you guys just use this space to do nothing ?
23:08:58  `quote ihope
23:08:58  `quote o
23:09:00  No output.
23:09:00  ​1)  I used computational linguistics to kill her. \ 2)  EgoBot just opened a chat session with me to say "bork bork bork" \ 3)  Hmmm... My fingers and tongue seem to be as quick as ever, but my lips have definitely weakened...  More practice is in order. \ 4)  that's where
23:09:03  `quote \bo\b
23:09:05  ​28) SUPLENTES EN UN UNIVERSO (MUSSOLINI CUANDO CONQUISTO EL MUNDO):  i tan solo puede concluir que es defectuoso, o el mundo esta absolutamente loco. Todos a la gloria Il Duce! \ 79)  i use dynamic indentation, i indent lines k times, if they are used O(n^k) times during a run of the program \ 120)  I
23:09:15  `pastequotes \bo\b
23:09:17  ​http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.2446
23:09:37  Now I need to make up program that whenever the channel receives anything with unicode characters that are not needed such as zero width space, left-to-right mark if all the text is already left-to-right, control code that is useless here, etc, to repeat it with all wrong stuff stripped.
23:09:50  `quote Aftran
23:09:52  ​1)  I used computational linguistics to kill her. \ 50)  It looks like my hairs are too fat.  Can you help me split them? \ 82)  Invalid! Kill! Kill!  I get that feeling too. \ 107)  Clearly we should be like Mumbai and get of vehicle dors.  Get of vehicle dors? 
23:10:01  Why do we have so many Aftran quotes?
23:10:07  Do any of you know who Aftran is?
23:10:09  Because of you. Or Gregor.
23:10:10  I do.
23:10:11  I don't know
23:10:21  Like ninety percent of the Sine quotes are unfunny, and that's after I obliterated most of them anyway :P
23:10:27  Yes, I guess elliott and Gregor know who Aftran is.
23:10:32  Also Sgeo.
23:10:37  Yep.
23:10:39  And SIRACUSA, the spy.
23:10:44  `quote 107
23:10:45  ​107)  Clearly we should be like Mumbai and get of vehicle dors.  Get of vehicle dors?  I think Aftran had a French phrase there.  Les vehicles d'or
23:10:47  Who watches us even now, from logs.
23:10:47 * tswett gasps.
23:11:03  `quote door
23:11:05  No output.
23:11:09  `quote dor
23:11:11  ​93)  My mascot is a tree of broccoli. \ 107)  Clearly we should be like Mumbai and get of vehicle dors.  Get of vehicle dors?  I think Aftran had a French phrase there.  Les vehicles d'or
23:11:18  `quote `quote
23:11:20  ​407)  `quote django   ​352)  django is named after a person?   thought it would be a giraffe or something   thankfully only one \ 408)  `quote django   ​352)  django is named after a person?   thought it would be a giraffe or something \ 407)
23:11:33  `quote 407
23:11:34  Well that's not confusing in the slightest :)
23:11:35  ​407)  `quote django   ​352)  django is named after a person?   thought it would be a giraffe or something   thankfully only one
23:11:45  Oh, I see.
23:11:46  `quote 408
23:11:47  `quote 352
23:11:48  ​408)  `quote django   ​352)  django is named after a person?   thought it would be a giraffe or something \ 407)  `quote django   ​352)  django is named after a person?   thought it would be a giraffe or something   thankfully only one   thankfully only two
23:11:48  ​352)  django is named after a person?   thought it would be a giraffe or something
23:11:54  `pastequotes `quote
23:11:55  ​http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.10194
23:12:04  http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.10194
23:12:12  Argh, that stupid character is included.
23:12:14  Thank you for telling us what HackEgo said.
23:12:28  tswett: no, it said it with a Unicode character before.
23:12:35  Which breaks XChat URL detection, and copies with it so that Firefox won't load the page.
23:12:37  I removed it.
23:13:11  Yes, that is one of problem that Gregor broke it with!!!
23:13:21  Gregor: you'd better remove it or zzo38 will get very angry.
23:13:44  And I think so will someone else (maybe)
23:14:45  two quotes about quotes about django
23:15:16  Yes even the quotes about quotes are being angry now, it seems like
23:15:31  I guess the worst part is that I appear in all three hackego quotes about django
23:16:15  zzo38: Angry how
23:16:19  `addquote  two quotes about quotes about django   I guess the worst part is that I appear in all three hackego quotes about django
23:16:21  ​420)  two quotes about quotes about django   I guess the worst part is that I appear in all three hackego quotes about django
23:16:34  elliott_: Noticed it has wrong codes in it too
23:16:49  Because they copied it again and then again copied to quotation and copied again.
23:17:17  How's that angry
23:18:01  elliott_: another quote? you're not helping :/
23:18:19  It is angry because you can get angry by the wrong codes, sometimes it even copy/paste wrong, display wrong, break URL detection, and whatever else can go wrong with it, including other things.
23:18:23  olsner: >:D
23:18:31  `addquote  `addquote  two quotes about quotes about django   I guess the worst part is that I appear in all three hackego quotes about django   elliott_: another quote? you're not helping :/
23:18:33  ​421)  `addquote  two quotes about quotes about django   I guess the worst part is that I appear in all three hackego quotes about django   elliott_: another quote? you're not helping :/
23:18:38  `quote
23:18:40  ​292)  actually, I think vorpal is the "retarded team member" to the left
23:19:01  `quote
23:19:01  `quote
23:19:01  `quote
23:19:02  `quote
23:19:03  ​417)  scripting language.  whole program analysis.  together at last
23:19:04  `quote
23:19:04  ​34)  I am not on the moon.
23:19:05  ​142)  [...] i'm a law student so i am loving my bread machine
23:19:07  ​256)  I have plans to make the computer and one day I will do it!! (I have access to barter some people might help with these things) It is many difference from other computer.
23:19:09  ​233)  For instance, Jesus' Y chromosome was clearly GOD'S.
23:20:09  `quote
23:20:56  `quote 
23:20:57  No output.
23:21:03  It doesn't like you, zzo38.
23:21:07  `quote
23:21:09  ​100)  I can do everything a Turing machine can do, except love
23:25:24  http://www.reddit.com/r/worldnews/comments/hb81o/acid_blinding_sentence_postponed_by_iran_after/
23:26:09  Words fail me.
23:27:00  "It should be an acceptable form of punishment, when your crime was the PREMEDITATED MAIMING AND TORTURE of another person. You shouldn't have your hand chopped off for stealing, but the at a minimum the person you stole from should be compensated to the level of what you stole from them, and then some, and it should be at your loss."
23:27:20  How do you even mess up understanding reality that badly.
23:27:38  This isn't about reality; this is about ethics.
23:27:39  No?
23:29:02  tswett, yes, but she is comparing compensation upon theft to torture.
23:29:18  This is indisputably a false comparison.
23:29:30  Torturing someone does not reverse the damage done to their victim.
23:29:57  Yes, there is certainly an interpretation of this argument under which it is fallacious.
23:30:21  Are you saying that there is another way to interpret it.
23:30:32  The comparison of the two is pretty explicit.
23:30:58  They could simply be saying, "An eye for an eye is an acceptable punishment in all circumstances."
23:31:27  Hmm, fair point.
23:32:21  I like it when people say "what if this was YOUR ", thus missing entirely the point of a justice system.
23:41:29 -!- FireFly has quit (Quit: swatted to death).
23:44:47 -!- BeholdMyGlory has quit (Remote host closed the connection).
23:48:10  "Blood justice sounds great in theory, but not so much in application."
23:48:20  So, soooo close.
23:48:25  But no cigar.
23:50:14 -!- zzo38 has quit (Remote host closed the connection).
23:56:16 -!- zzo38 has joined.
23:56:27  `quote
23:56:29  ​18)  Finally I have found some actually useful purpose for it.
23:56:48 -!- ais523 has quit (Remote host closed the connection).
23:57:43 -!- zzo38 has quit (Remote host closed the connection).
23:58:33 -!- TeruFSX has quit (Ping timeout: 250 seconds).
23:59:25 -!- zzo38 has joined.
23:59:43  It seems to keep quitting maybe the connection is something wrong
23:59:46  `
23:59:48  No output.
23:59:48  ``
23:59:49  No output.
23:59:50  ..
23:59:54  //
23:59:59  ??