00:09:34 -!- zzo38 has joined. 00:16:10 As far as I can tell a graph can form a category, where the objects correspond to the points and the morphisms correspond to the paths between the points, where if you go along a line backward it is cancelled out. At least they seem to me, like forming a category. 00:16:23 I am not exactly sure. 00:19:00 Do you know? 00:20:38 The first cut of the Mercury compiler was written in the intersection of Mercury, NU-Prolog and SICStus Prolog. 00:20:38 And it compiled to Goedel. 00:20:39 zzo38: except for the cancelling out part 00:20:41 beautiful 00:21:03 assuming it's directed. 00:21:08 or maybe, hm. 00:21:20 i guess the cancelling out can work. 00:23:09 I was thinking of nondirected graphs, where each pair of points either has a line between them or does not have. But you could have a similar (but different) idea for directed graphs too, I suppose, and pseudographs, etc 00:23:21 I don't really know, I just guessed 00:25:14 zzo38: with the cancelling, it would be close to a fundamental path in homotopy theory 00:25:55 But does it form a category? 00:25:59 oerjan: I'm convinced homotopy theory is just one big practical joke by the mathematicians once they realised that category theory actually has applications. 00:26:18 It seem to me, it does have associativity, identity morphism, and so on, like category theory. 00:27:06 yes, it does. 00:39:51 data ConnInfo = ConnInfo 00:39:51 { conn?????? :: Chan ServerPacket 00:39:51 , connReader :: PacketReader ClientPacket 00:39:51 , connHost :: HostName 00:39:51 , connPort :: PortNumber 00:39:52 } 00:39:59 Help what should I name the Chan containing the packets to send to the client. 00:40:02 I looked at the Wikipedia article about Kleisli category. It says how composition of morphisms in the Kleisli category is given by. I tried putting the same thing they specify there into Haskell it seem to me it would be this: g <=< f = join . fmap g . f 00:40:08 oerjan: he;perlg 00:40:27 connContent 00:40:44 oerjan: but... there is other content too (the PacketReader)... 00:40:51 connPayload 00:41:00 :( 00:41:00 elliott: Well, conn?????? is not a very good name for it because it mixes letters with symbols. 00:41:04 it isn't really a payload if you send a bunch of them is it 00:41:25 connPackets 00:41:35 oerjan: , connReader :: PacketReader ClientPacket 00:41:40 note the read end :P 00:41:42 this is just the write end 00:41:59 connWriter 00:42:06 maybe........................ i was thinking that but 00:42:12 is it a writER if it's just a Chan.... 00:42:31 it feels....inert... 00:42:32 connOut 00:42:39 hmm maybe............... that sounds good........ 00:43:24 zzo38: that looks right for <=< 00:43:42 join . fmap g = (g =<<) 00:45:54 -!- CakeProphet has quit (Ping timeout: 276 seconds). 00:46:10 oerjan: OK. I just tried to write the same thing as in that Wikipedia article, but in Haskell. That is, this: $g\circ_T f = \mu_Z \circ Tg \circ f$ is what I tried to make into a Haskell code. 00:46:36 right 00:59:22 today's iwc feels a bit deus ex machina. 00:59:40 or something like that. 01:00:51 oerjan: looks intentional to me :P 01:02:04 maybe, but it feels like bad writing. 01:02:25 or maybe it's an intentional parody on forced happy endings 01:02:28 oerjan: I mean, it's obviously meant to look ridiculous, so I suspect it's a setup for expectations being violated 01:02:30 or parody 01:03:00 in fact that's been kind of a common theme lately, hasn't it. 01:04:14 maybe it's part of dmm's quest to use every trope :P 01:04:25 (not that that is official) 01:07:31 -!- coppro has quit (Quit: leaving). 01:07:38 -!- coppro has joined. 01:11:36 -!- coppro has quit (Client Quit). 01:11:42 -!- coppro has joined. 01:26:02 oerjan: w.t.f. 01:26:03 :t forkIO 01:26:04 Not in scope: `forkIO' 01:26:06 oh 01:26:07 forever 01:26:09 god damn you, forever 01:26:43 wat 01:27:23 -!- augur_ has changed nick to augur. 01:27:26 :t Control.Concurrent.forkIO 01:27:27 IO () -> IO GHC.Conc.ThreadId 01:27:48 :t forever 01:27:49 forall (m :: * -> *) a b. (Monad m) => m a -> m b 01:28:18 :t (.) runST 01:28:19 forall a (f :: * -> *). (Functor f) => f (forall s. ST s a) -> f a 01:28:27 wat 01:28:33 :t (Prelude..) runST 01:28:34 forall a a1. (a1 -> forall s. ST s a) -> a1 -> a 01:29:01 :t runST . liftM ?f 01:29:02 Couldn't match expected type `forall s. ST s a' 01:29:02 against inferred type `m r' 01:29:02 Expected type: m a1 -> forall s. ST s a 01:29:08 oerjan: 01:29:15 :t (runST . forever) (return ()) 01:29:16 Couldn't match expected type `forall s. ST s a' 01:29:16 against inferred type `m b' 01:29:16 Expected type: m a1 -> forall s. ST s a 01:29:17 scandel 01:29:18 erm 01:29:21 *a 01:29:23 what was it... 01:29:29 :t (runST . forever) $ return () 01:29:30 Inferred type is less polymorphic than expected 01:29:30 Quantified type variable `s' escapes 01:29:31 In the second argument of `(.)', namely `forever' 01:29:34 :t runST . forever $ return () 01:29:34 Inferred type is less polymorphic than expected 01:29:35 Quantified type variable `s' escapes 01:29:35 In the second argument of `(.)', namely `forever' 01:29:36 hmph 01:29:46 only shachaf has the true knowledge 01:29:53 * shachaf ? 01:29:58 :t runST $ forever $ return () 01:29:59 forall b. b 01:30:20 it's a scandal you cannot use . there 01:30:27 oerjan: no, shachaf has an example that works with ()s but not without 01:30:29 or the other way around 01:30:33 /without/ operator precedence being involved 01:30:50 oh 01:30:53 hm, this spambot seems to be having problems with the beginnings of its sentences. 01:31:07 Oh, that. 01:31:13 Hmm, how did that go... 01:31:22 :t runST . flip ?f 01:31:23 Couldn't match expected type `forall s. ST s a' 01:31:23 against inferred type `f b' 01:31:24 Expected type: a1 -> forall s. ST s a 01:31:28 darn 01:31:48 Maybe it's this? 01:31:50 > id runST (return 5) 01:31:51 Couldn't match expected type `m t' 01:31:51 against inferred type `forall s.... 01:31:52 > id runST $ return 5 01:31:53 5 01:31:57 No, that's not it. 01:32:03 :( 01:32:08 It was something with actual parentheses making a difference and nothing else. 01:32:20 Oh: 01:32:25 > id runST (return 5) 01:32:26 Couldn't match expected type `m t' 01:32:26 against inferred type `forall s.... 01:32:27 > (id runST) (return 5) 01:32:28 5 01:32:33 :'( 01:32:38 ;_; 01:32:58 -!- DH____ has joined. 01:33:01 ouch 01:34:03 shachaf: is that bug a ticket yet? :P 01:34:16 elliott: Fixed in GHC 7. 01:34:21 So I have no idea. 01:34:21 oh good 01:34:23 Well, "fixed". 01:34:33 "fixed"? 01:34:41 is it always broken now 01:34:50 consistency: good 01:35:06 :t runST . mapM ?f 01:35:07 Couldn't match expected type `forall s. ST s a' 01:35:07 against inferred type `m [b]' 01:35:07 Expected type: [a1] -> forall s. ST s a 01:35:22 :t runST . forM ?l 01:35:23 Couldn't match expected type `forall s. ST s a' 01:35:23 against inferred type `m [b]' 01:35:24 Expected type: (a1 -> m b) -> forall s. ST s a 01:35:47 monqy: Well, it's a hack either way. 01:35:56 shachaf: ah yes, you find runST's dirty little secret special case in the type checker 01:35:57 shachaf: it should be. But there's some sort of special case for runST so that runST $ foo works 01:35:59 :'( 01:36:08 <-- crying 01:36:14 im doublecrying 01:36:20 #firstworldproblems 01:37:02 * Now talking on #firstworldproblems 01:37:02 * #firstworldproblems :You're not a channel operator 01:37:02 i wish rank>1types werent bad like this 01:37:04 * Users on #firstworldproblems: elliott @ChanServ 01:37:08 cry 01:37:12 monqy: well it's still a bug :P 01:37:14 i mean 01:37:18 that parens can have an affect 01:37:20 s/a/e/ 01:37:38 @let foo = return 5 01:37:39 :6:0: 01:37:39 Multiple declarations of `L.foo' 01:37:39 Declared at: ... 01:37:43 does jhc have rank>1type sdoes jhc have thes probmesl 01:37:44 @undefine 01:37:46 @let foo = return 5 01:37:47 Defined. 01:37:49 what abhout qhc.... 01:37:54 > id runST foo 01:37:54 Couldn't match expected type `m t' 01:37:55 against inferred type `forall s.... 01:37:57 > ($) runST foo 01:37:58 5 01:38:09 > (id `asTypeOf` ($)) runST foo 01:38:10 Cannot match a monotype with `forall s. GHC.ST.ST s a' 01:38:18 ?! 01:38:18 Maybe you meant: . ? @ v 01:38:38 > let blah = (id `asTypeOf` ($)) in blah runST foo 01:38:39 5 01:38:42 > runST foo 01:38:44 5 01:39:02 > ((id `asTypeOf` ($)) runST) foo 01:39:03 Cannot match a monotype with `forall s. GHC.ST.ST s a' 01:39:06 this is bad 01:39:09 why ghc why 01:39:28 monqy: To encourage you to write code that looks like LISP. 01:39:33 More parentheses = better life. 01:39:51 because infering rank>1 types is undecidable, i assume 01:40:17 so in some way, every case which works is a hack 01:40:29 shachaf: but but but....using $ fixed it when parens didn't....and i prefer parens.... 01:40:44 monqy: When did parentheses not fix it? 01:41:05 i mean 01:41:50 it's weird because of precedence and $ being infix 01:41:54 > (id runST :: forall s. GHC.ST.ST s a -> a) foo 01:41:55 Not in scope: type constructor or class `GHC.ST.ST'Not in scope: type varia... 01:41:59 argh 01:42:04 > (id runST :: forall s. ST s a -> a) foo 01:42:04 Not in scope: type variable `a'Not in scope: type variable `a' 01:42:14 forall s a. 01:42:27 > (id runST :: forall a. (forall s. ST s a) -> a) foo 01:42:29 5 01:42:34 whew 01:43:17 elliott: Hey, write me a generic function f x y = f (x y), please. 01:43:25 * shachaf will complain loudly until someone does this. 01:43:38 ?pl \f x y -> f (x y) 01:43:38 (.) 01:43:40 or is f 01:43:43 Er. 01:43:44 not a parameter there 01:43:48 f x y = x (x y) 01:43:59 ?pl \x y -> x (x y) 01:44:00 join (.) 01:44:03 shachaf: enjoy... 01:44:09 > join (.) (:[]) 5 01:44:10 Occurs check: cannot construct the infinite type: a = [a] 01:44:21 > (:[]) ((:[]) 5) 01:44:22 [[5]] 01:44:30 No thanks. 01:44:49 :( 01:45:29 (:[]) 01:45:55 if only: untyped haskell: because: types cause problemns 01:45:58 (joke) 01:46:37 > let f :: forall s a. (forall t. t -> s t) -> a -> s (s a); f x y = x (x y) in f Just 5 01:46:38 Just (Just 5) 01:46:59 > let f :: forall s a. (forall t. s t -> t) -> s (s a) -> a; f x y = x (x y) in f fromJust (Just (Just 5)) 01:47:00 5 01:47:47 iw ant to make a language that doesn't have probelms....hoW? 01:51:24 aaaaah timwi 01:51:40 oerjan: my thoughts exactly 01:51:43 oerjan: confrontational as usual :P 01:51:47 although his complaint has merit >_> 01:52:24 monqy: i recommend hq9+ or deadfish, they are remarkably problem free 01:52:37 Deadfish is all problems. 01:54:18 -!- tiffany has joined. 02:17:54 Will infinite types result in Russell's paradox? 02:20:44 OK, here's a big lol for y'all. 02:20:46 So I mentioned earlier that I got an email asking if I wanted codu.net for $250. 02:20:52 Turns out the company that owns it is an "IT solutions / apostolic ministry" 02:23:40 Curry's paradox is the best paradox. 02:23:48 Beats Russell's any day. 02:24:00 how about codu.com 02:24:12 monqy: Donno who owns that, don't really care *shrugs* 02:24:36 codu.com seems pretty sketchy 02:24:40 shachaf: my favority paradox is out in a lake in BC 02:24:44 monqy: Yes it does :P 02:30:31 -!- TeruFSX has quit (Remote host closed the connection). 02:32:29 localhost:47150 > KeepAlive 0 02:32:29 localhost:47150 > KeepAlive 0 02:32:30 localhost:47150 > KeepAlive 0 02:32:30 localhost:47150 > KeepAlive 0 02:32:30 localhost:47150 > KeepAlive 0 02:32:30 localhost:47150 > KeepAlive 0 02:32:32 localhost:47150 > KeepAlive 0 02:32:34 localhost:47150 > KeepAlive 0 02:32:36 localhost:47150 > KeepAlive 0 02:32:38 localhost:47150 > KeepAlive 0 02:32:40 localhost:47150 > KeepAlive 0 02:32:42 localhost:47150 > KeepAlive 0 02:32:44 localhost:47150 > KeepAlive 0 02:32:46 localhost:47150 > KeepAlive 0 02:32:48 localhost:47150l o>c aKleheopsAtl:i4v7e1 500 02:32:50 o oKke e(pPAllaiyveer P0o 02:32:52 s l(oPcoailnhto s0t.:04 76195.09 9>9 9K9e9e9p9A5l2i3v1e6 30 02:32:54 0.l0o)c a7l1h.o6s2t): 4(7D1i5r0e c>t iKoene p0A.l0i v0e. 00) 02:32:56 Tlroucea 02:32:58 lh 02:33:00 Behold, multithreaded IO. 02:33:14 * oerjan cancels his /^msg chanserv quiet #esoteric elliott just in time 02:33:58 I typed out "KeepAlive", decided to start fleshing it into a joke by prepending "Your MOM", and then stared wide-eyed at my screen for a few seconds before deleting the line. 02:34:10 * Gregor vaguely wonders what "/^msg" is 02:34:26 Gregor: like /msg except doesn't open a query window 02:34:33 Mmm 02:35:45 If you make a category from a graph as I have described, what things in category theory correspond to what things in graph theory? 02:37:05 zzo38: well every morphism is an isomorphism 02:37:40 oerjan: Yes I noticed the same thing. 02:40:34 making this a "groupoid" (although i think that word has several senses) 02:41:45 and if the graph is connected, there is a functor equivalence mapping all the objects into one 02:42:30 or if not, you can select one object from each component to map everything to. 02:42:58 aka skeleton category 02:45:09 -!- quintopia has quit (Remote host closed the connection). 02:46:19 -!- pikhq_ has joined. 02:46:26 -!- quintopia has joined. 02:46:26 -!- quintopia has quit (Changing host). 02:46:26 -!- quintopia has joined. 02:46:45 If the graph is a tree, does the category have all endomorphisms being identity morphisms, due to canceling? 02:47:09 yes, i think so. 02:47:19 tree or forest 02:47:39 Yes, I was just going to say, it applies to forests too 02:47:54 -!- quintopi1 has joined. 02:48:50 -!- copumpkin has quit (Quit: Computer has gone to sleep.). 02:49:19 -!- pikhq has quit (Ping timeout: 258 seconds). 02:51:06 -!- quintopi2 has joined. 02:51:34 -!- quintopi2 has quit (Client Quit). 02:52:35 Are there other properties? 02:53:36 well unless it is a tree, there won't be any initial or terminal objects 02:53:48 and if it is, they all are 02:54:51 oh and the category is isomorphic to its own dual, but that follows from being a groupoid i think 02:55:23 -!- copumpkin has joined. 02:55:23 -!- copumpkin has quit (Remote host closed the connection). 02:55:24 -!- quintopi1 has quit (Quit: Lost terminal). 02:55:29 -!- CakeProphet has joined. 02:55:29 -!- CakeProphet has quit (Changing host). 02:55:29 -!- CakeProphet has joined. 02:55:48 -!- copumpkin has joined. 02:57:33 Probably when I wrote "path" I meant "walk" 02:59:11 ah 03:05:35 hadmin + elliott 03:12:39 I like the pirate bay's current home page logo. 03:14:00 -!- nooga has quit (Ping timeout: 255 seconds). 03:15:08 Why are you using the Pirate Bay, it is the most useless torrent index 03:18:25 elliott: I very frequently find more obscure artists on TPB when things like isohunt fail. 03:18:36 http://torrentz.eu/ 03:18:36 it's worked quite well for my purposes. 03:19:02 metatracker which lists all the found trackers for a torrent in utorrent format so you can paste it in for moar speed 03:19:07 (it helps massively in my experience) 03:20:00 I use tokyotosho for anime, and then isohunt, tpb, and demonoid for everything else 03:20:31 whats piracy help 03:20:51 There is no possible way that searching a public tracker can be superior to using Torrentz because it indexes tons of them. 03:20:57 Fuckin' piracy. How does it work? 03:21:01 Hmm, looks like it doesn't index isohunt, wonder if there's some drama to do with that. 03:21:19 But w/e, if you can't find it on the public trackers torrentz indexed you're probably best served going to a private one anyway :P 03:21:23 If piracy was enforced as harshly as denial of service attacks, 9% of americans would be in jail probably ;P 03:21:25 monqy: Gregor: Nooo, this is how I get my Linux ISOs. 03:21:43 * pikhq_ pirates greatly 03:21:43 Gotta catch all 'em Linux ISOs. 03:21:49 pirate linux all day every day 03:22:06 You cant pirate free stuff can you? 03:22:17 O, is that how you define piracy now? 03:22:22 * CakeProphet will, in the course of one hour, find torrents for the entire discographies of over 35 artists 03:22:29 I pirate with no shame. 03:22:36 tiffany: I know this is probably a long-shot, but would tokyotosho happen to have anime with Japanese subtitles? 03:22:37 I distribute linux without the source code. I am wanted in four continents. 03:22:43 Bittorrent is like the greatest doenload protocol ever, pretty obvious to use for pirates~ 03:22:52 Uum, possibly 03:23:03 Anime with Japanese subtitles? 03:23:03 It is *far* too hard to find that sort of thing, even if you go totally legit and buy Japanese DVDs. 03:23:14 Jafet: And Japanese audio, of course. 03:23:44 tiffany: telnet is the best protocol for all purposes. 03:23:53 Jafet: I'm wanted in ten continents. 03:23:55 telnet~ 03:23:56 Not many people care about subtitles in the same language as the film. 03:23:59 telnet~ 03:24:04 how can you even say telnet in any tone of voice other than normal 03:24:11 there is no possible way to impart any other kind of context onto the utterance "telnet" 03:24:13 lol 03:24:17 Which protocol is best for one purpose depend on the purpose. No protocol is really best for all purposes 03:24:18 telnet~ 03:24:26 how did i know that was going to happen 03:24:26 "telnet" as a statement means one thing and one thing only and you cannot modify that auuuugh 03:24:29 oerjan: ban tiffany 03:24:29 Jafet: It's really *quite* helpful for foreign language learners. 03:24:31 someone quoting elliott quoting tiffany 03:24:31 tiffany is channelling the telnetcat 03:24:36 .-. 03:24:48 Particularly when learning a language with nontrivial orthography. 03:24:48 o~o 03:24:50 Telnet is good for many purpose, though. 03:24:58 %^: 03:25:08 Like tuning engines on a flying 747? 03:25:34 Because, you can actually do that >_>; 03:25:46 elliott: tone of voice police 03:26:02 I don't know anything about tuning engines on a flying 747 03:26:18 neither do I 03:26:40 I read this article from an engineer who worked on that kind of stuff 03:26:43 zzo38: telnet is more or less a protocol for protocols. 03:26:45 or can be. 03:27:05 Most people who use telnet don't use telnet. 03:27:07 He said 747s use telnet because ssh breaks the menu thingies in the telnet interface 03:27:20 Jafet: that's also true. 03:27:26 Anyway i host a bbs over telnet 03:27:40 SSH is also good protocol for many purposes (but not all). 03:27:44 tiffany: Is it Synchronet? 03:27:51 Nup 03:27:54 zzo38: telnet, on the other hand, is suitable for all 03:27:58 Its citadel :s 03:28:01 best protocol for our modern age. 03:28:11 telnet for president 03:28:21 Also i have an 8192bit rsa key for ssh 03:28:26 wow 03:28:28 !!!! 03:28:31 CakeProphet: No, I don't think telnet is suitable for all. 03:28:57 It only took a couple minuts to generate so why not 03:29:03 Minutes* 03:29:06 I would use an 8192-bit key, too, if I was tuning engines on flying 747s. 03:29:24 ^ 03:29:44 I would use a 32768bit key for that 03:29:52 crazy stuff that 03:30:00 so much bits 03:30:02 For internet banking and internet money transfer, SSH is the protocol that ought to be used (and the protocol running inside the SSH would be the same in both cases, although some commands might be permitted in only one way and not another way), in my opinion. 03:30:29 Internet banking currently runs on the honour system 03:30:31 Even if 1024bit still takes a fudgeload of time to crack 03:30:49 Didnt it take like 300 computers 400 days to crack one? 03:31:07 *fungeload 03:31:18 so much load 03:31:48 Rsa is pretty much dead with quantum computers though :/ 03:32:24 Is? 03:32:26 Present tense? 03:32:33 Well 03:32:33 How much are D-Wave paying you? 03:32:36 Will be 03:32:37 we live in the future, tiffany and me 03:32:43 or tiffany and i 03:32:51 Mceliece cryptosystem~ 03:32:52 whats an english and how does it work? 03:33:09 monqy: it only throws you exceptions 03:33:30 help 03:33:50 `frink 1 erlang -> 1 fudgeload 03:34:00 Unknown symbol "fudgeload" \ Warning: undefined symbol "erlang". \ Warning: undefined symbol "fudgeload". \ Unconvertable expression: \ erlang (undefined symbol) -> fudgeload (undefined symbol) 03:34:16 It seems like mceliece is bad in the face of bruteforce or i am reading this wikipedia article wrong 03:34:32 260000bit key is only as good as 80bit encryption? 03:35:04 `units 'erlang' 'fudgeload' 03:35:06 Unknown unit ''erlang'' 03:35:11 :( 03:35:23 `units erlang fudgeload 03:35:25 Unknown unit 'erlang' 03:35:33 WHY NO ERLANG 03:35:44 ;_; 03:36:02 !monqy WHY NO ERLANG 03:36:14 dude you guys 03:36:17 why is egobot gone 03:36:17 always now 03:37:27 what did monqy do again 03:37:39 CakeProphet: frink 03:37:42 `frink 9 erlang 03:37:49 was it just map toLower and remove all punctuation or something? 03:37:51 Warning: undefined symbol "erlang". \ 9 erlang (undefined symbol) 03:37:54 fuck 03:37:57 monqy: just map tolower actually 03:37:57 such an inaccurate representation of me 03:37:58 oh 03:37:59 elliott: see above 03:38:01 still awful 03:38:15 l;le;ler;le;lr;e;ler;ler;le;lerr;le;le;erle;e;rler;lere;er;lerrelrrerererlanggt 03:38:22 `addquote l;le;ler;le;lr;e;ler;ler;le;lerr;le;le;erle;e;rler;lere;er;lerrelrrerererlanggt 03:38:24 703) l;le;ler;le;lr;e;ler;ler;le;lerr;le;le;erle;e;rler;lere;er;lerrelrrerererlanggt 03:38:27 neesd to transpose letters, insert es ant the ends of things, otherr quirdks???? 03:38:35 elliott: I am become famous now. 03:38:39 simulated keybarod badding 03:38:47 simulated word badding 03:39:00 However, if I designed a BIOS for a PC motherboard, it would be PC-FORTH and one of the things it would include is a terminal emulator (with the PC BIOS emulation as the default), which can be used with telnet and with serial port 03:39:02 http://gopherproxy.org/zzo38computer.cjb.net/0column80*c131_115 03:39:03 http://googleads.g.doubleclick.net/pagead/imgad?id=CJvR5I68-qvvUhDQAhiYAjIIAD54C6Z-Wvk 03:39:03 auuugh return of the finger tree 03:40:02 that's brilliant 03:40:11 I intended to block gopherproxy.org so that Google does not index it. 03:40:15 I love those awful ads 03:41:27 monqy: oh did you never see my finger tree 03:41:29 it was a work of art 03:41:32 not as disturbing as that but 03:41:33 close 03:41:37 elliott: http://adrinael.net/hr.gif 03:41:39 now i want to see it 03:41:44 ewww 03:42:23 how have you not seen the hasselhoff thing, it's the oldest thing on the internet 03:42:23 ow sudden wrist pain. 03:42:27 disappointed in you monqy, disappointed 03:42:29 maybe I'm getting carpal tunnel. 03:42:37 elliott i've seen it but that doesn't make it not gross.... 03:43:11 If you need to link to my gopher server, please do so directly. 03:43:56 monqy should I use Map or HashMap................................................................ 03:43:58 debceibcisoisns 03:44:07 which is 03:44:08 betretr 03:45:48 actually hmm i might want some way to reclaim old identifiers 03:46:00 what has fast minKey....... 03:46:18 the answer is IntMap but I have Int32s :( 03:46:35 minView, whatever 03:46:42 er no 03:46:42 minKey 03:48:41 I figured out why the block that used to work has failed; it is because spoton.net has many IP addresses in different ranges. (It used to be bytemark3.spotonnet.co.uk and is now on bytemark7.spotonnet.co.uk, which have the addresses 89.16.178.179 and 46.43.34.25) 03:50:37 -!- MDude has joined. 03:50:57 monqy: my favourite terrible ad of late is these "51 Year Old Mom Looks 25" ones with a bouncing picture above 03:51:00 it's so bouncy 03:51:33 i dont see enough terrible ads because ad blocker ;_; 03:51:44 disable it, it is the devil 03:52:05 I bet Jafet knows a good IntMap type thing that works for arbitrary key types and has efficient-ish minKey. 03:52:06 i also love the ones where it's like "is this real or fake" or "iq test" and "99% get this wrong" 03:52:17 (Hmm, I think Data.Map has pretty efficient minKey, isn't it O(log n)?) 03:52:45 and it's something absolutely ridiculous like a seagull with a human arm 03:52:48 monqy: my favourite was "HAS SCIENCE GONE TOO FAR? real / fake" -- yeah 03:52:51 minView is bettar 03:52:52 with 99 percent get this wrong 03:52:57 with birds with arms :') 03:53:00 elliott: I can't think of a way it wouldn't be O(log(n)) 03:53:01 ah yes has science gone too far that's it 03:53:03 best use of meme 03:53:04 i love birds with arms 03:53:12 also great: dancing babies 03:53:12 CakeProphet: intmap has constant-time minKey I think 03:53:17 and hashmap obviously O(n) 03:53:21 well right, I meant for Map. 03:54:33 well you could have constant time minKey by keping track of the minimum key as an extra field of the data structure or something. 03:54:37 *keeping 03:54:37 on Map 03:54:45 well... no 03:54:48 i'm not sure you could 03:54:50 hmm 03:54:52 you're just changing 03:54:53 yes you could I think 03:54:56 when you do the O(log(n)) 03:54:57 the tree structure makes it possible 03:55:02 you can amortise it on insert which is already O(log(n)) 03:55:03 oh? 03:55:08 ah okay. 03:55:13 yes, I think you can tell when you're inserting before the minimum key 03:55:29 ah right. 03:56:15 I think in practice lists shouldn't have O(n) length. 03:56:22 GHC should just use a hidden field for length. 03:57:00 gross 03:57:10 monqy: efficient 03:57:35 _someone_ doesn't understand elegance, likes perl, is a bad person 03:57:51 of course a change of data structure would suffice. linked list is probably not what you want in this scenario. 03:57:56 I think in practice you shouldn't be using lists if you use length 03:58:04 Sequence has O(1) length 03:58:15 -!- tiffany has quit (Remote host closed the connection). 03:58:16 CakeProphet: I think that breaks sharing 03:58:40 More pertinently, that breaks non-strictness 03:58:46 Sharing is unaffected 03:58:57 o rite. 03:59:01 that whole infinite list thing. 03:59:05 well that's not an issue. 03:59:15 it could magically be made not an issue. 03:59:19 I'm pretty sure. 03:59:26 but yeah I don't really know much about sharing. 04:00:15 monqy: I understand elegance just fine, but... don't see why you would prefer elegance to efficiency when implementing data structures that other people are going to use. 04:00:34 then you don't understand elegance 04:00:53 but I see that length being O(1) on linked lists would have some issues. 04:00:59 monqy: elegance of interface, sure. 04:01:22 but as far as I care a data structure could have an ugly implementation as long as it's efficient. 04:01:43 I think Jafet sums it up nicely 04:01:44 20:57:59 < Jafet> I think in practice you shouldn't be using lists if you use length 04:01:53 yes I agree. 04:05:24 elliott: Remember that Gobby Haskell Arc implementation session thing? 04:05:25 rofl 04:05:27 You were there, right? 04:05:37 apparently yesterday's xkcd was Randall's first animated gif 04:05:57 gobby haskell arc implementation session? arc as in the lisp or what 04:05:58 shachaf: I think I started doing my own thing before that, and then gave up in disgust when the hoi polloi ruined it with their "collaboration" bullshit. 04:06:24 coppro: I heard it wasn't. 04:06:27 WHO TO BELIEVE??? 04:06:38 elliott: I heard this from Randall 04:06:43 apparently it was the first animated gif he made ever 04:06:58 coppro: You mean the one on xkcd.com? 04:07:06 shachaf: yes 04:07:09 That is a bad animated GIF! 04:07:14 shachaf: No, he means the one on secretanimatedgifs.xkcd.com. 04:07:21 It depends on the fact that browsers violate the GIF spec for historical reasons! 04:07:24 DON'T TELL A SINGLE PERSON. 04:07:30 elliott: There exist many Randalls in the world. 04:07:39 shachaf: How many of them make xkcds? 04:07:55 elliott: I didn't see anyone mention "xkcd" until I did. 04:08:00 apparently yesterday's xkcd was Randall's first animated gif 04:08:04 shachaf: I did. 04:08:12 elliott: Well, I didn't see it. 04:08:15 Oh, now I see it. 04:08:22 shachaf: Also, what's a map structure with fast minKey (O(log n) at least) that isn't Map or IntMap? 04:08:26 TIA 04:08:32 hmm, I don't even want minKey 04:08:36 I want minimumUnusedKey :P 04:08:38 Anyway, he has the frame delay between the frames set to 1. 1! 04:08:41 Can you believe it? 04:08:49 I'm disgusted. 04:08:58 He's relying on and old broken behavior of Netscape 4 on old computers that every browser ever has had to replicate. 04:09:08 Disgusting, huh? 04:09:13 He should've left it at 0. 04:09:49 elliott: Also, why ask me in here? 04:10:00 That other channel is so, like, big. 04:10:38 * shachaf wrote an animated GIF player that's too unbroken for that comic. 04:10:55 So unbroken it doesn't work. 04:11:00 Exactly! 04:11:24 -!- hagb4rd has quit (Ping timeout: 248 seconds). 04:11:47 Ata hafachta ve'ani hafachti uvechol zot ze nish'ar hafuch! 04:11:49 ...As they say. 04:12:10 They say that? 04:12:16 Some of them do. 04:12:24 Only the lame ones. 04:12:30 :-( 04:12:56 Oh no, the Wayback Machine is going to be down for three days. 04:13:09 elliott: You're the one who doesn't speak the right language. 04:13:47 shachaf: At least I'm not a Finnish citizen. 04:14:26 That's not Finnish. 04:14:33 * shachaf doesn't even speak Finnish. 04:14:34 shachaf: Did I say it was? 04:14:42 elliott: Did I say you said it was? 04:14:59 elliott: By the way, "esolangs" don't count as actual languages. 04:15:02 You have an additional space there. 04:15:16 And I'll agree with you if you read the entirety of the Checkout page. 04:15:24 Checkout page? 04:15:37 Ah, http://esolangs.org/wiki/Checkout 04:15:50 Maybe I'll just insert random double spaces into my text. 04:15:58 * elliott awaits the inevitable. 04:16:38 Checkout looks like a neat idea. 04:16:59 Yes. Now read the entire page. 04:17:01 Either: 04:17:01 However, I'm going to need the entire page delivered to me in IRC-sized snippets. 04:17:14 (a) You will agree that esolangs can be actual languages because you'll have read the entire damn thing; OR 04:17:30 (b) You will give up because it is made of about a billion paragraphs of about ten thousand sentences (this is the likely scenario). 04:17:41 Either way I don't have to agree. YaySimple tutorial on Twisted Deferreds and how to implement them in Haskell 04:17:50 [asterisk]Yay! 04:17:55 I like the Checkout esolang idea too; I want to be able to use a fully open-source Checkout compiler to program a GPU that has open specification. 04:17:58 * shachaf suspects there's a flaw in elliott's logic. 04:18:02 I can't find it, though. 04:18:15 I can guarantee that I never say anything wrong at all. 04:18:23 zzo38: I doubt that will happen. 04:19:36 elliott: I, too, doubt it; probably because very few people would be interested and that many GPU do not follow these requirements. 04:19:56 It would be neat though. 04:20:04 I don't think anyone would want to write programs in Checkout by hand though. 04:20:10 It's pretty low level. 04:20:12 Yes it would be neat. 04:21:04 It would even be: Super neat. 04:21:26 Seat. 04:21:32 I'm almost as good at words as monqy. 04:21:41 `word 04:21:44 in 04:21:46 CakeProphet... 04:21:50 -!- Jafet has quit (Quit: Leaving.). 04:21:52 `word 99 04:21:54 lumbatenoncipard sawailecgle ibutoehalitter patuddoteeresporfriipele pracke camineanystionatiandhylcherty boufaskiditoiionfilist dis decrccatenadalc arcte mermi ar ment postragopc yamopporgeminerridepomarhuferse orfs sellineum mangriek hia grolina shotticallorp lobufgendlcmpres clum ticalder tf leuck foravoynynatios wal gos 04:21:59 Lumbatenoncipard. 04:22:25 I would want to write programs in Checkout almost by hand, by having a macro system for it. (BLISS has a powerful macro system, so you could possibly use something like that) 04:25:32 hi 04:25:36 im 04:25:37 back 04:26:00 elliott: in. good word. 04:26:11 A very good word. 04:26:15 Almost as good a word as lumbatenoncipard. 04:26:27 mangriek 04:27:27 -!- elliott_ has joined. 04:27:31 Foravoynynatios. 04:27:45 checkout seems so unusual is this how processors actually work kind of? 04:27:51 shachaf: Also, what's a map structure with fast minKey (O(log n) at least) that isn't Map or IntMap? <-- finger trees 04:28:21 oerjan: elliott decided he didn't want minKey and didn't tell us what he did want. 04:28:22 is the level hierarchy essentially a means of parallelism? 04:28:33 I did. 04:28:36 I said I wanted minimumUnusedKey. 04:28:44 Basically I'm allocating ID numbers and then looking them up. 04:28:57 And then deleting them later, in which case the ID should be available for reuse. 04:29:03 Oh. 04:29:08 Is reuse even important? 04:29:16 CakeProphet: Processors are, like, weird, man. 04:29:43 shachaf: Probably not, but thirty-two bit integers are not /that/ hard to exhaust. 04:29:51 32? 04:30:05 Lrn221stcentury 04:30:05 Yes. 04:30:09 Protocol. 04:30:31 And the intention is to be able to run the server indefinitely, so reuse is preferred. 04:30:34 I suppose I could rely on overflow. 04:30:36 -!- elliott has quit (Ping timeout: 248 seconds). 04:30:45 Anyway, fine. 04:31:27 You could just keep a set of keys that you've deleted, if there aren't going to be that many. 04:32:13 Well, it's a network server with up to, say, a hundred connections at once. 04:32:21 Connections probably won't last more than a few hours. 04:32:29 And connections/disconnections will be pretty frequent. 04:32:43 you probably want a finger tree of priority queues. 04:32:49 So were one to run a ridiculously popular server, one could see pretty damn high identifiers pretty quickly. 04:32:54 shachaf: ...but I guess overflow will sort it out. 04:33:00 I mean, unless one guy stays connected for like two years. 04:33:03 Don't be disgusting. 04:33:06 You could have a infinite list of 1,2,3,4,5,6,7,8,9 and so on, and when you delete, put it at the beginning 04:33:36 And you might want a timeout; you don't need to stay connected for two years 04:33:53 Hmm, an infinite list might work. 04:33:57 shachaf: Why didn't you suggest that? 04:34:05 Suggest what? 04:34:11 You could have a infinite list of 1,2,3,4,5,6,7,8,9 and so on, and when you delete, put it at the beginning 04:34:12 (If it is 32-bit numbers, it will not actually be infinite) 04:34:13 That. 04:34:21 elliott_: I considered it, but I figured it would be too trivial since you were trying more complicated stuff. 04:34:38 * shachaf can never figure out elliott's sense of humor. 04:34:46 humor? where? 04:34:52 Not sure. 04:34:57 wat humor help. 04:35:46 * elliott_ wonders if there's a nicer way to write [0..] ++ [-1,-2..] 04:36:26 zipeprs? 04:36:43 elliott_: I'm assuming you've "casted" that into an int or something? 04:36:48 Casted? 04:36:50 otherwise the negatives won't ever be reached. 04:37:04 elliott_: What's wrong with [minBound..]? 04:37:08 cakeprohpet wizdom 04:37:20 elliott_: disambiguated the Num instance. does that sound better? 04:37:28 UNSAFECOERCE 04:37:34 no just :: 04:37:51 * elliott_ wonders if there's a nicer way to write [0..] ++ [-1,-2..] <-- [0..], assuming they're Integers :P 04:37:52 Oh. safe...Coerce? 04:37:57 You're not even coercing. :-( 04:38:04 Come on, you gotta coerce. 04:38:04 oerjan: elliott_: yes this is what I was getting 04:38:07 shachaf: It's kind of ugly to have the first connection get a really huge negative ID number. :p 04:38:14 xippers ar egood 04:38:15 No it's not? 04:38:16 That's literally the only reason. 04:38:18 shachaf: Yes it is. 04:38:20 0 is a much nicer number. 04:38:28 Sequences are meant to start at 0. 04:38:31 elliott_: [0..] :: Word32? 04:38:36 Protocol. 04:38:39 And then cast it. 04:38:45 With unsafeCoerce? 04:38:48 :p 04:38:48 With whatever. 04:38:53 unsafeCoerce is good. 04:39:03 > [0..] :: Word32 04:39:04 Couldn't match expected type `GHC.Word.Word32' 04:39:04 against inferred typ... 04:39:10 try harder 04:39:13 [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,-128,-127,-126,-125,-124,-123,-122,-121,-120,-119,-1 04:39:13 18,-117,-116,-115,-114,-113,-112,-111,-110,-109,-108,-107,-106,-105,-104,-103,-102,-101,-100,-99,-98,-97,-96,-95,-94,-93,-92,-91,-90,-89,-88,-87,-86,-85,-84,-83,-82,-81,-80,-79,-78,-77,-76,-75,-74,-73,-72,-71,-70,-69,-68,-67,-66,-65,-64,-63,-62,-61,-60,-59,-58,-57,-56,-55,-54,-53,-52,-51,-50,-49,-48,-47,-46,-45,-44,-43,-42,-41,-40,-39,-38,-37,-36,-35,-34,-33,-32,-31,-30,-29,-28,-27,-26,-25,-24,-23,-22,-21,-20,-19,-18,-17,-16,-15,-14,-13,-12,-11,-10,-9 04:39:13 ,-8,-7,-6,-5,-4,-3,-2,-1] 04:39:15 shachaf: Not quite the same :P 04:39:25 Although, admittedly, nicer. 04:39:26 elliott_: It accomplishes the purpose. 04:39:26 so this is what you are doigne.. 04:39:35 Use unsigned types if it helps. 04:39:53 elliott_: When did your reuse-of-IDs problem get solved again? 04:39:55 [0..] ++ [minBound..-1] I guess is as good as it gets. 04:40:04 shachaf: When zzo38. 04:40:35 elliott_: I find it hilarious that making that sequence "look nicer" is an actual issue you're trying to resolve. :P 04:41:07 > map fromEnum [0 :: Word8 ..] :: [Int8] 04:41:07 Couldn't match expected type `GHC.Int.Int8' 04:41:08 against inferred type `... 04:41:12 argh 04:41:19 > map fromIntegral [0 :: Word8 ..] :: [Int8] 04:41:20 [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,... 04:41:29 oerjan: That's nice. 04:41:44 > reverse $ map fromIntegral [0 :: Word8 ..] :: [Int8] 04:41:45 [-1,-2,-3,-4,-5,-6,-7,-8,-9,-10,-11,-12,-13,-14,-15,-16,-17,-18,-19,-20,-21... 04:41:45 I see no aesthetic difference at all in that 04:41:56 if anything it might actually be uglier to me. 04:42:08 just because there's more stuff. :P 04:42:17 > (\x->x::Int8).fromIntegral.[(\x->x::Word8)0..] 04:42:18 [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,... 04:42:25 [1,2,skip a few,99,100] 04:42:30 maybe I have perl mind virus where "is smaller code" -> "looks nicer" 04:42:43 CakeProphet: s/erl/rogrammer/ 04:42:56 Erl rogrammer. 04:43:04 im not a programmer, proud? 04:43:09 MC/Host.hs:49:58: Not in scope: `..-' 04:43:09 Sign. 04:43:24 good job haskell 04:43:42 elliott_: What you *actually* want is [0,1,-1,2,-2,..] 04:43:46 good thing I put spaces around my things so this never happens to me 04:43:49 That's the true enumeration. 04:44:00 > [0,1,-1,2,-2,..] 04:44:01 : parse error on input `..' 04:44:02 Trumeration. 04:44:06 no haskell no ;_; 04:44:31 > [0, -1..] <**> [id, (1-)] 04:44:32 [0,1,-1,2,-2,3,-3,4,-4,5,-5,6,-6,7,-7,8,-8,9,-9,10,-10,11,-11,12,-12,13,-13... 04:44:40 good 04:45:03 There you go. 04:45:07 Now that's an enumeration! 04:45:14 Yes, [0,1,-1,2,-2,.. is the way if you have a list with an first element and want to list *all* of the integers. 04:45:15 thumbs up 04:45:19 A real enumeration. Remuneration. 04:45:20 Wait. 04:45:39 emuneration 04:45:43 > 1 - (maxBound :: Int8) 04:45:44 -126 04:45:51 misses some terms 04:45:57 oh wait 04:45:59 But do you require all of the integers? 04:46:01 > 1 - (minBound :: Int8) 04:46:02 -127 04:46:05 -!- elliott__ has joined. 04:46:08 lame terms for lame people 04:46:11 actually, overlaps some 04:46:38 > reverse $ [0, -1..] <**> [id, (1-)] 04:46:47 ... 04:46:52 this is the most ridiculous code pageant every. 04:46:54 thread killed 04:46:55 -y 04:46:59 lambdabot ;_; 04:47:19 monqy: lambdabot is _shockingly_ bad at reversing infinite lists 04:47:28 oerjan: a True Pity 04:47:33 Truely a Pity 04:47:50 > reverse ([0, -1..] <**> [id, (1-)]) :: [Int8] 04:47:55 no....... 04:47:59 mueval-core: Time limit exceeded 04:48:03 :'( 04:48:03 You cannot reverse infinite lists! 04:48:17 > reverse ([0, -1..] <**> [id, (1-)]) :: [Int8] 04:48:19 [-127,-128,-128,-127,127,-126,126,-125,125,-124,124,-123,123,-122,122,-121,... 04:48:23 Because a list must have a first element 04:48:24 > map (\x -> foldl' (\x y -> 2 * x + y) 0 x :: Int8) $ replicateM (sizeOf (undefined::Int8)*8) [0,1] 04:48:25 [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,... 04:48:30 elliott_: That. 04:49:16 -!- elliott_ has quit (Ping timeout: 248 seconds). 04:50:01 shachaf: Ah yes. Beautiful. 04:51:59 elliott__: using floating point numbers instead 04:52:02 best idea. 04:52:05 Protocol. 04:52:11 Protocol protocol protocol. 04:52:14 trick it. 04:52:16 >_> 04:52:30 use short floats. 04:52:31 and stuff. 04:52:35 ewwwwwwwww 04:52:39 why are you saying floats 04:52:39 stop 04:52:40 that 04:52:41 now 04:52:43 ok 04:52:46 .. 04:52:52 :t 0.2 :: Float 04:52:53 Float 04:52:55 ;_; 04:52:56 mchost: PacketReadError "too few bytes\nFrom:\tdemandInput\n\n" 04:52:57 help 04:53:06 elliott__: You can enumerate Float32s! 04:53:18 monqy: I was under the impression that float was a perfectly normal thing for a programmer to say. 04:53:22 IEEE floats are even correctly ordered. 04:53:26 floats is a bad word 04:53:29 never say 04:53:36 > root beer floats 04:53:37 Not in scope: `root'Not in scope: `beer'Not in scope: `floats' 04:53:40 monqy: and only gross sounding to weird pedantic people 04:53:43 actually not even those people 04:53:44 > root beer sinks 04:53:44 Not in scope: `root'Not in scope: `beer'Not in scope: `sinks' 04:53:45 they don't care either. 04:53:46 just you. 04:54:03 ;_; 04:54:22 is that missing spaces for anyone else? 04:54:26 yes 04:55:34 > foo 04:55:35 monqy: man this bacon is so good. 04:55:35 No instance for (GHC.Show.Show (m t)) 04:55:35 arising from a use of `M5331478887... 04:55:45 I'm going to get so fat if I keep eating bacon all the time but it's so delicious. 04:55:45 CakeProphet: even worse 04:55:48 > runIdentity foo 04:55:50 5 04:55:53 ah. 04:55:57 good five 04:56:07 I guess I should learn haskell sometime 04:56:08 never ever do bacon floats or i will hunt you down and kill you augh my leg 04:56:29 > fromJust foo 04:56:30 5 04:56:37 `addquote < monqy> never ever do bacon floats or i will hunt you down and kill you augh my leg 04:56:39 704) < monqy> never ever do bacon floats or i will hunt you down and kill you augh my leg 04:56:40 ...what 04:56:41 why does irssi 04:56:42 "Precise Pangolin"? Seriously, Shuttleworth? 04:56:42 do 04:56:42 that 04:56:45 `delquote 704 04:56:48 I didn't even highlight the newline. 04:56:48 ​*poof* 04:56:51 `delquote cakepropehts being born 04:56:52 No output. 04:57:06 `addquote never ever do bacon floats or i will hunt you down and kill you augh my leg 04:57:08 704) never ever do bacon floats or i will hunt you down and kill you augh my leg 04:57:11 no CakeProphet 04:57:11 bad 04:57:15 CakeProphet: Too much space. 04:57:18 `delquote 704 04:57:19 ... 04:57:20 ​*poof* 04:57:26 `addquote never ever do bacon floats or i will hunt you down and kill you augh my leg 04:57:28 704) never ever do bacon floats or i will hunt you down and kill you augh my leg 04:57:38 SUCH HIGH STANDARDS. 04:57:52 also seriously why does irssi include the newline when I specifically avoided it. 04:57:55 why is it dumb. 04:57:59 `delquote 705 04:58:01 No output. 04:58:04 :} 04:58:08 :} 04:58:11 :} 04:58:14 new fad. 04:58:18 the augh my leg is because i felt a pain running down my leg while i was typing it 04:58:19 no 04:58:20 our fad 04:58:32 no I am the trend follower. 04:58:33 my left leg, if it helps your imagination 04:58:41 my right leg if you'd prefer I lie 04:58:55 I didn't even highlight the newline. <-- it will end the line if there is any newline inside the paste. 04:58:56 both legs if you want to imagine me in pain 04:58:57 monqy: conditional truth is confusing. 04:59:15 oerjan: ...right, which is why I didn't highlight the newline 04:59:17 and it still did it. 04:59:34 I specifically avoided it. 05:00:07 maybe I messed up. I dunno. 05:00:29 ah. 05:00:29 :}{ 05:00:33 innovation. 05:00:37 unnovation 05:00:44 I think I found out how to use social networks properly.. it's actually a game: you try to be as annoying as possible.. once you lose all your friends, you win! 05:00:47 standing ovulation. 05:01:17 -!- oerjan has quit (Quit: Later). 05:02:08 rip oerjan, died as he lived. 05:02:15 as people often do. 05:02:19 `words 40 05:02:21 ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: words: not found 05:02:27 `word 40 05:02:29 ixted eque nos welogro deng poccbiscaletchrostanacatiblesladism ra rejlaulon iseetrogit ducha agog ableinkeilt mum bahmillhortiquerglisigk bed chenn klexnices gj sper loshe genzia ree hot saming by bur dectiornitremichendhase pre eutted la na vak wootompdpliamermintionnior aterie oxae mitnr omeng mele ovs imseria 05:02:42 poccbiscaletchrostanacatiblesladism 05:02:53 deng is like a word I would say 05:02:59 `log deng 05:03:21 2011-10-07.txt:05:02:59: `log deng 05:03:23 -!- calamari has quit (Quit: the game). 05:03:25 ducha is a spanish verb for shower. 05:03:27 hackego.... 05:03:34 eutted is good 05:03:43 omeng. just about anything ending with eng is good. 05:04:06 oh ducha is also the noun shower 05:06:10 I enjoy ixted 05:08:10 I should take all this wonderful free time I have 05:08:16 and instead of doing nothing as I am prone to do 05:08:22 finish the next version of words 05:08:42 -!- elliott__ has changed nick to elliott. 05:08:43 -!- elliott has quit (Changing host). 05:08:43 -!- elliott has joined. 05:08:54 but it is already perfect 05:09:01 not quite. 05:09:06 I need to add the other datasets. 05:09:10 and other options. 05:09:17 and the new algorithm. 05:09:22 but I can keep the old one too if you like? 05:11:08 mchost: PacketReadError "too few bytes\nFrom:\tdemandInput\n\n" 05:11:08 WHY YOU INFERNAL MACHINE WHYYYY 05:16:48 x is the best perl operator 05:17:04 because I'm sure it's absolutely terrible to parse. 05:24:28 -!- kmc has quit (Ping timeout: 248 seconds). 05:25:57 I wonder if there's any reason not to prenormalize the data in the actual file. 05:26:19 What would the category of magic spells be in Icosahedral RPG? 05:29:23 -!- kmc has joined. 05:35:39 I wonder if this word generating algorithm is similar to what a captcha service uses to generate some of its phrases. 05:36:14 some just use dictionary words or random strings of characters, of course. 05:42:35 When you make a category from a graph (using the things I have mentioned), what does a product category and comma category and so on make? What functors can you make? Do monomorphisms correspond to anything? 05:49:06 sub dataset_opt_handler($) { %opts{shift} = 1 } my %dataset_opts = map {$_, \dataset_opt_handler} %$data; GetOptions (%dataset_opts, N=>\$dont_normalize); 05:49:13 best option handling code 05:52:10 If I have data X b f = X f (b -> X b f) what is that called? 05:52:27 (Instead of "X", that is.) 05:53:11 !perl print (5/2) 05:53:18 bah 05:53:22 `perl print (5/2) 05:53:23 It has some similarities to streams as well as some similarities to barrier monads 05:53:24 Can't open perl script "print (5/2)": No such file or directory 05:53:31 `run perl -e 'print (5/2)' 05:53:33 2.5 05:53:43 ...okay that's what I thought. 05:58:14 Therefore I called it "BarrierStream" 06:02:01 you know what would be interesting. 06:02:30 a language where you can initialize a variable outside of the scope it's defined to be visible in. 06:02:39 ew 06:02:58 I suppose that's similar to be dynamic scoping actually. 06:03:02 but less specific. 06:03:04 to one scope 06:03:06 initialization? whats that? 06:03:25 monqy: that's where you assign a variable for the first time in these weird state machine things. 06:03:28 I dunno it should just be math. 06:03:52 "assign a variable for the first time" what!!!! 06:03:57 state machine things whaaaaaaaaaaat 06:05:40 I think they're called computers I can't remember. 06:06:01 i mpuke at the very thoguht 06:09:33 my $sum = $dont_normalize? 1 : sum(values %fs); 06:09:36 bahahaha I'm so evil. 06:10:33 :( 06:10:54 because later I do: 06:10:57 ($grams{$key}->{$c} //= 0) += $v/$sum; 06:11:07 so $sum = 1 has the effect of not normalizing. 06:11:33 best evil ever. 06:11:55 * CakeProphet has no taste etc 06:13:04 oh wait I just realized.... 06:13:11 $dont_normalize is 1... when it's on. 06:13:41 bahahahahahaha my $sum = $dont_normalize || sum(values %fs); 06:14:01 no CakeProphet no 06:15:07 hm another spambot with sentence beginning problems 06:15:08 Is that //= 0 necessary? 06:15:23 no but it suppresses a warning 06:15:30 I believe it was you who told me that code would have a warning otherwise. 06:15:43 It certainly wasn't me; could've been ais523. 06:16:07 oh wow I just realized I forgot use strict; use warnings; 06:16:12 -!- pikhq has joined. 06:16:22 Don't see any warnings in there anyhow. 06:16:24 $ perl -e 'use strict; use warnings; use Data::Dumper; my %a = (); $a{b}->{c} += 1; print Dumper(\%a);' 06:16:24 $VAR1 = { 06:16:24 'b' => { 06:16:24 'c' => 1 06:16:24 } 06:16:25 }; 06:16:34 oh, hmmm 06:16:35 okay. 06:16:38 I guess it's not necessary then 06:17:02 maybe some versions do warn? 06:17:09 Could be. 06:17:27 I don't really personally feel all that comfortable in doing the autovivification dance. 06:17:57 why'sat? 06:18:13 I'unno; personal idiosyncracy, I suppose. It's certainly all Perlish and all that. 06:19:14 dunno, I like it. Saves a bunch of %blah = (); lines 06:19:20 or, worse, expressions. 06:19:25 nested ones. 06:19:28 -!- pikhq_ has quit (Ping timeout: 244 seconds). 06:21:18 $ echo 'long long long int im_so_long;' | gcc -xc - 06:21:18 :1: error: ‘long long long’ is too long for GCC 06:21:19 The funniest. 06:21:43 Sadly "short short" is just "duplicate short". 06:21:58 short short is too long 06:22:07 what's long short 06:22:15 "error: both ‘long’ and ‘short’ in declaration specifiers" 06:22:28 :( 06:22:30 $ echo 'long long long long long int im_so_long;' | gcc -xc - 06:22:31 :1: error: ‘long long long’ is too long for GCC 06:22:31 :1: error: ‘long long long’ is too long for GCC 06:22:31 :1: error: ‘long long long’ is too long for GCC 06:22:34 That's a bit funny too. 06:22:43 long short too confusing for gcc 06:22:43 It's one more error for each (overlapping) triplet of longs. 06:23:02 Demonstrating that GCC's error reporting sucks. 06:23:13 , is the best 06:23:43 Sadly, clang is boring. 06:23:48 $ echo 'long long long int im_so_long;' | clang -xc - 06:23:51 :1:11: error: cannot combine with previous 'long long' declaration specifier 06:23:54 long long long int im_so_long; ^ 06:23:57 1 error generated. 06:24:06 Bleh, copy-paste fucked that up. 06:24:09 I recall not-so-seriously suggesting that each 'long' should double the width, each 'short' halve it, and it should support arbitrary widths. 06:24:27 gigabyte integers. yesssssss 06:24:35 fizzie: Easier solution: int*_t. 06:24:45 Where * can be any greater-than-0 power of 2. 06:25:18 int0s best 06:25:26 It doesn't quite have the same feel as "long long long long long long short /* just to avoid the monotony */ long int two_kilobits;" 06:25:31 int1_t is best. Consider that that's signed. 06:25:33 int1/2 06:25:34 im agree with monqy 06:25:47 CakeProphet: extra e on that agre there 06:26:00 int2048_t two_kilobits; 06:26:14 Actually. the int*_ts are typedefs. 06:26:17 They could coexist. 06:27:06 what would happen if you tried to use a struct of ints in an integer expression? 06:27:13 would it just truncate it? 06:28:53 `run perl -e 'use Data::Dumper; $t=2; Dumper(\$t); 06:28:56 sh: -c: line 0: unexpected EOF while looking for matching `'' \ sh: -c: line 1: syntax error: unexpected end of file 06:29:04 `run perl -e 'use Data::Dumper; $t=2; Dumper(\$t);' 06:29:06 No output. 06:29:11 `run perl -e 'use Data::Dumper; $t=2; print Dumper(\$t);' 06:29:13 ​$VAR1 = \2; 06:29:38 it would be nice if that didn't output the reference. 06:29:43 `run perl -e 'use Data::Dumper; $t=2; print Dumper($t);' 06:29:45 ​$VAR1 = 2; 06:29:47 oh, okay... 06:30:05 `run perl -e 'use Data::Dumper; $t=2; print Dumper($t, 4);' 06:30:08 ​$VAR1 = 2; \ $VAR2 = 4; 06:31:34 You can have signed one-bit-wide bitfields already, though. It has a range of [-1, 0] on a two's-complement system. At least so it happens to work on this GCC, and I can't find anything in the standard prohibiting it. I'm just wondering what it would do on a sign-magnitude machine. 06:31:50 Possibly it'd just be -0 or 0. 06:33:17 -!- zzo38 has quit (Remote host closed the connection). 06:34:25 Pretty sure that'd be the behavior per the standard. 06:34:55 fizzie: would it be possible via prototyping to have a subroutine take either a hash or a hashref and treat either exactly the same way? 06:35:05 or, rather, what's the best way to do that. 06:36:49 -!- copumpkin has quit (Ping timeout: 258 seconds). 06:37:13 -!- copumpkin has joined. 06:38:43 I don't really think so. I mean, \% would give you a hash-as-a-hashref, but it can't be that if you want it to take a hashrefs too (without explicit %$foo'ing them). 06:39:01 ah okay 06:39:16 I'll just use hashref then as that's the common case 06:39:24 and just add a \ when I need to. 06:39:36 better looking than %{} all over the place 06:40:32 That sounds reasonable. You could argue for \% as it'd "compile-time" typecheck you're always passing in a hash, but that doesn't really help since it wouldn't look past the %{} in the cases where something bad actually might occur. 06:47:28 I wonder if I could somehow incorporate recursion into the lvalue sub modifier. 06:47:37 recursive_call() = blah; .... 06:48:09 when would you even do that. 06:50:10 elliott: so, re: word generation, you said the space frequency should increase exponentially after the target length is reached. 06:50:18 exactly what kind of exponential? if that makes sense. 06:51:36 Possibly the sort where the base is larger than one. 06:51:45 yes I thought that might be the case. 06:52:52 2 seems quite extreme... 06:53:03 perhaps polynomial increase would be more reasonable? 06:54:47 2. 06:55:24 so uh.... space = 2**space?? that uh.... okay. 06:55:41 2**(length-target_length), more like? 06:55:41 ... 06:55:44 no 06:55:46 yes 06:56:03 ah okay. 06:56:24 shouldn't it sort of depend on the original frequency though? 06:56:44 Well, I was assuming "space" was a multiplier for it or some-such. 06:56:55 this is just assigning a flat, very high percent to spaces, which would not produce natural endings. 06:56:58 ah okay. 06:57:46 I don't know polynomial still makes sense to me especially with values that are already normalized. 2**anything is just going to be a ridiculous amount of probability. 06:58:51 Given that you already (I guess?) select a properly distributed random target length, I don't suppose the way you emphasize the spaces matters all that much; all it affects is what's the expected amount of "extra" characters you will get. 06:59:33 fizzie: CakeProphet: You want the probability of space to get exponentially closer to one each character you go OVER target. 06:59:38 NOT as you approach target. 06:59:40 As you go OVER. 06:59:47 ...this is what I'm doing. 06:59:50 And note that target is actually the real target length MINUS a small constant, so this works out. 06:59:59 Yes, that is not news. 07:00:01 yes, this is also what I'm doing. 07:00:15 -!- nooga has joined. 07:00:31 CakeProphet: Anyway, the probability is MEANT to be ridiculous. 07:00:40 The whole point is to not go over the target by more than a few. 07:01:25 it seems that you lose much of the benefit of the spaces if the probability increase significantly outweighs the Markov chain. 07:01:56 might as well stop a randomly selected length. 07:01:58 *at a 07:02:04 You are wrong. 07:02:18 It is far preferable to do this than to go over the target by much. 07:03:44 CakeProphet: To be clear: Of course you want to scale up lengths as you approach the target. 07:03:52 But you want to scale them much, much faster once you pass it. 07:03:54 Erm 07:03:57 s/lengths/spaces/ 07:04:23 I thought the idea was to ignore spaces until target length? 07:04:40 ...No. 07:04:59 You want spaces to be reduced in likelihood at the start, increase as you get closer to the target, and then sharply increase as you pass it. 07:05:22 The various factors can be tweaked by comparing the length of the words produced to the target lengths. 07:08:09 the target length is already based on the word length histogram. I don't see the benefit of allowing words to stop short of the target when the idea is to replicate the word lengths of the dataset. 07:09:12 say the target is seven 07:09:14 if you can stop with probability 0.99999 after foobar 07:09:32 or with probability 0.3 scaled up after foobarebq 07:09:34 which would you prefer 07:09:37 hint: the former 07:12:52 but all of this stuff has the effect of shortening the mean length of the generated words below the mean length of the dataset. 07:13:18 though perhaps only by a small amount. 07:13:37 No. 07:13:49 Not with constant factor tweaking. 07:14:35 You just pick your target-length-to-real-target-length offset so that it matches the mean of the difference between your target length and the mean of what you got with it. 07:16:03 Right. 07:16:59 uh, real target length? +_+ 07:17:22 The one picked from your dataset. As opposed to the one used in the space-weighting. 07:17:43 oh 07:17:55 Alternatively, you can have just a single target length and have an constant in the space-weighting with some other name, if you like that more. 07:18:50 uh, I have no clue I'm really tired. :P 07:19:41 With a context length of 2, it's not really going to be so terribly clever about "wordness", so personally I wouldn't care about biases in the exact distribution of word endings so much. 07:19:58 Just, you know, do something. 07:20:37 to me this algorithm seems to make the actual markov probability of a space entirely irrelevant. 07:20:47 or almost irrelevant I mean 07:22:59 It's going to avoid unseen word endings, which is probably the most important thing; and depending on your parameters (basically, how "sharply" you fix it to be the target length) it's still going to make unlikely word endings unlikelier than likely ones. 07:29:49 right, but that's kind of like saying O(2^n + n^3) is noticeably slower than O(2^n + n^2) 07:32:17 It's not going to be very likely that you happen to end up multiple characters past your target length, where the space-weighting would flatten the last-letters-of-the-word distribution much. 07:33:18 I'm mostly concerned about getting more unusual word endings. 07:34:03 That's a strange thing to be concerned about. 07:34:32 I'm increasing their likelihood exponentially... 07:34:32 -!- elliott has quit (Remote host closed the connection). 07:35:00 Yes, as you go over the target length; but you don't really go over the target length by much very often. 07:35:58 okay so how should I scale before then? 07:38:09 It's really up to you. All you're doing is determining the shape of the distribution of the difference between the generated word length and the target word length. Approximately speaking, your final word length distribution is going to be a convolution of that and your target distribution (the dataset word lengths). If you make it possible to deviate much from the target length, you'll possibly lessen the bias on word endings, but it'll smoosh the generated wo 07:38:10 rd lengths by some amount too. 07:38:56 there's no way I'm going to get this right on the first try. :P 07:39:27 You're not going to get it "right" anyway; just make up something that spews reasonable-looking output. 07:39:48 If you seriously care about this so much, you should probably be doing the exact thing, but that sounds pretty messy. (Basically, for each generated character you should only consider the subset of 'grams that can possibly result in a word of the desired length, renormalized. It should be possible to precompute some of this, but still.) 07:41:23 okay so... space_f*(length word - target)???? 07:41:28 that looks bad. 07:41:42 also that's negative. 07:42:43 what if I just did 2**(length $word - $target) the entire time? 07:43:01 this would make spaces uncommon up to the target I believe. 07:43:31 You can do that, yes. Assuming that's a value you then multiply the existing space frequency with. 07:43:39 right 07:44:18 so when the difference = 1 that means space is 50% chance... 07:44:36 assuming a normalized dataset. 07:45:13 er... no 07:45:14 neverind 07:45:14 :P 07:45:17 +m 07:45:18 When length $word == $target+1, you have twice the chance of space that you would normally have. 07:45:37 okay that's not too bad 07:46:18 I should have an option to override the distribution. :P 07:46:23 with perl code! 07:46:35 what could be safer. 07:46:49 You can tune the base if it doesn't seem to do well, and you certainly should tune the offset you apply to $target so that what you get out will, on average, match the "actual" target. 07:47:10 yes I was going to include it as an option so that it can be adjusted quickly. 07:47:39 Oh no, it's lunchtime. 07:48:29 I wonder if $blah->{ } is $blah->{' '} 07:48:32 TIME TO FIND OUT 07:52:05 -!- monqy has quit (Quit: hello). 08:08:05 -!- erdosjr has joined. 08:39:12 `run perl -e '%blah = (a=>2);$x = \%blah; %blah2 = %$x; $blah2{b}=3; print %$x; 08:39:15 `run perl -e '%blah = (a=>2);$x = \%blah; %blah2 = %$x; $blah2{b}=3; print %$x;' 08:39:18 sh: -c: line 0: unexpected EOF while looking for matching `'' \ sh: -c: line 1: syntax error: unexpected end of file 08:39:18 a2 08:41:07 -!- ais523 has joined. 08:49:49 -!- DH____ has quit (Ping timeout: 248 seconds). 08:50:40 -!- ais523 has quit (Read error: Connection reset by peer). 08:55:31 -!- ais523 has joined. 09:16:53 -!- CakeProphet has quit (Ping timeout: 260 seconds). 09:18:36 -!- CakeProphet has joined. 09:20:16 -!- DH____ has joined. 09:52:42 -!- CakeProphet has quit (Ping timeout: 258 seconds). 09:54:36 -!- CakeProphet has joined. 09:54:36 -!- CakeProphet has quit (Changing host). 09:54:36 -!- CakeProphet has joined. 10:16:28 -!- CakeProphet has quit (Ping timeout: 258 seconds). 10:18:18 -!- CakeProphet has joined. 10:23:01 -!- ais523_ has joined. 10:23:22 -!- ais523 has quit (Ping timeout: 258 seconds). 10:23:40 -!- derdon has joined. 10:31:48 -!- Phantom_Hoover has joined. 10:35:40 -!- ais523_ has quit (Read error: Connection reset by peer). 10:36:55 -!- ais523_ has joined. 10:48:13 -!- CakeProphet has quit (Ping timeout: 248 seconds). 10:50:01 -!- CakeProphet has joined. 10:50:02 -!- CakeProphet has quit (Changing host). 10:50:02 -!- CakeProphet has joined. 10:52:16 -!- nooga has quit (Ping timeout: 244 seconds). 10:55:02 -!- Vorpal has quit (Quit: ZNC - http://znc.sourceforge.net). 10:55:35 -!- Vorpal has joined. 10:57:09 -!- Vorpal_ has joined. 10:59:31 -!- Vorpal has quit (Disconnected by services). 10:59:32 -!- Vorpal_ has changed nick to Vorpal. 11:02:05 -!- ais523_ has quit (Ping timeout: 248 seconds). 11:05:03 -!- nooga has joined. 11:13:15 -!- erdosjr has quit (Ping timeout: 252 seconds). 11:18:05 -!- CakeProphet has quit (Ping timeout: 248 seconds). 11:19:53 -!- CakeProphet has joined. 11:20:00 -!- CakeProphet has quit (Changing host). 11:20:00 -!- CakeProphet has joined. 11:20:21 -!- ais523_ has joined. 11:28:56 -!- derdon has quit (Remote host closed the connection). 11:40:19 -!- ais523_ has changed nick to ais523. 11:57:06 -!- CakeProphet has quit (Ping timeout: 258 seconds). 11:57:34 -!- sadhu has joined. 11:57:47 Hello World! 11:58:52 -!- CakeProphet has joined. 11:58:52 -!- CakeProphet has quit (Changing host). 11:58:52 -!- CakeProphet has joined. 12:18:39 -!- sadhu has quit (Quit: Leaving). 12:21:47 -!- CakeProphet has quit (Ping timeout: 260 seconds). 12:23:41 -!- CakeProphet has joined. 12:23:41 -!- CakeProphet has quit (Changing host). 12:23:41 -!- CakeProphet has joined. 12:44:23 -!- Zuu has quit (Ping timeout: 244 seconds). 12:46:46 -!- ais523 has quit (Remote host closed the connection). 13:10:34 -!- copumpkin has quit (Quit: Computer has gone to sleep.). 13:14:16 -!- CakeProphet has quit (Ping timeout: 255 seconds). 13:15:53 -!- CakeProphet has joined. 13:25:51 -!- iconmaster has joined. 13:38:53 -!- CakeProphet has quit (Ping timeout: 248 seconds). 13:39:57 -!- pikhq has quit (Ping timeout: 248 seconds). 13:40:04 -!- pikhq has joined. 13:40:37 -!- CakeProphet has joined. 13:40:37 -!- CakeProphet has quit (Changing host). 13:40:37 -!- CakeProphet has joined. 13:45:11 -!- derrik has joined. 13:53:42 -!- Zuu has joined. 14:00:45 -!- DH____ has quit (Ping timeout: 248 seconds). 14:04:22 -!- DH____ has joined. 14:08:33 -!- oerjan has joined. 14:09:58 -!- CakeProphet has quit (Ping timeout: 276 seconds). 14:11:30 -!- CakeProphet has joined. 14:35:37 -!- sadhu has joined. 14:52:41 -!- Ngevd has joined. 14:55:03 Hello! 15:02:02 WORLD. 15:02:12 It's like a secret handshake for programmers. 15:02:38 That we try to put as early on as possible in the majority of tutorials 15:02:50 We're a very open sect 15:09:06 -!- CakeProphet has quit (Ping timeout: 252 seconds). 15:10:50 -!- CakeProphet has joined. 15:10:50 -!- CakeProphet has quit (Changing host). 15:10:51 -!- CakeProphet has joined. 15:19:45 -!- derrik has quit (Quit: must feed kids). 15:28:51 -!- sadhu has quit (Ping timeout: 255 seconds). 15:44:52 -!- zzo38 has joined. 16:00:18 -!- iconmaster has quit (Quit: Probably switching to Pesterchum now.). 16:04:37 -!- monqy has joined. 16:12:24 Time to play Portal 16:26:17 -!- Ngevd has quit (Ping timeout: 252 seconds). 16:39:09 -!- Ngevd has joined. 16:39:29 -!- oerjan has quit (Quit: Good night). 17:07:30 when do wildcards expand? 17:07:43 (in unix sh) 17:08:41 -!- Ngevd has quit (Ping timeout: 260 seconds). 17:09:34 You just answered your own question. 17:09:43 no I mean... 17:09:51 X = * 17:10:00 command blah/$X 17:10:02 what happens? 17:10:14 *X=* 17:10:25 X does get set to *, it expands after variable replacement. 17:10:40 ah okay. 17:11:40 what happens if there's a * passed to a subroutine? 17:11:44 or returned by one? 17:12:14 "The order of expansions is: brace expansion, tilde expansion, parameter, variable and arithmetic expansion and command substitution (done in a left-to-right fashion), word splitting, and pathname expansion." 17:12:34 ah okay. 17:13:01 cool so I can shorten this code a lot now. 17:13:29 (That was for bash; I'm not sure how it's specifically defined for POSIX sh.) 17:13:53 Presumably the same, or bash wouldn't be particularly POSIX-compliant ... I don't think any of those are bash-specific. 17:13:59 It seems reasonably similar. 17:14:13 "The order of word expansion shall be as follows: 17:14:13 Tilde expansion (see Tilde Expansion ), parameter expansion (see Parameter Expansion ), command substitution (see Command Substitution ), and arithmetic expansion (see Arithmetic Expansion ) shall be performed, beginning to end. See item 5 in Token Recognition . 17:14:13 Field splitting (see Field Splitting ) shall be performed on the portions of the fields generated by step 1, unless IFS is null. 17:14:13 Pathname expansion (see Pathname Expansion ) shall be performed, unless set -f is in effect. 17:14:15 Quote removal (see Quote Removal ) shall always be performed last." 17:15:19 "quote removal" isn't meaningfully distinct from "word splitting", and I don't think that moving it to the other side of pathname expansion changes anything, but OK 17:15:44 Quote removal is actually listed (in a separate sentence) as a final step in the bash manual, too. 17:16:07 (To split words you have to be handling the quotes already, and you have to imagine they're not there to do pathname expansion OHHH except that single quotes don't expand OK I see the distinction) 17:19:14 -!- CakeProp1et has joined. 17:19:32 What's a proplet? 17:19:46 -!- CakeProphet has quit (Ping timeout: 276 seconds). 17:19:47 I dunno 17:19:49 but uh... 17:19:50 I think it's some sort of a mini-property. 17:20:02 I'm so bad at bash. :P 17:20:09 You know, applets and so on. 17:20:16 sub() { return x y z } 17:20:19 does this make any sense at all? 17:21:03 `run sub() { return x y z }; sub; echo $? 17:21:04 sh: -c: line 1: syntax error: unexpected end of file 17:21:09 trick question. perl never makes sense. 17:21:21 monqy: this is bash.. 17:21:21 monqy: Trick answer: Not perl you moron 17:21:23 but okay. 17:21:27 oops 17:21:30 :P 17:21:34 whats bash 17:21:41 `run sob() { return x y z }; sob; echo $? 17:21:43 sh: -c: line 1: syntax error: unexpected end of file 17:21:46 Huh 17:21:47 okay so I can't concat strings together in a return? 17:21:58 You can't return a string, either. 17:22:02 ...... 17:22:05 how do I... 17:22:05 CakeProp1et: I didn't expect that to be a syntax error, I expected it to be weird. 17:22:08 structure code. help 17:22:09 'cuz yeah, you can't return a string. 17:22:13 The return value of a shell function is much like a return code from a process. 17:22:19 Yup 17:22:25 `run sob() { return 42 }; sob; echo $? 17:22:26 oh okay so I output? 17:22:27 sh: -c: line 1: syntax error: unexpected end of file 17:22:30 Ohwait 17:22:32 echo? 17:22:34 `run sob() { return 42; }; sob; echo $? 17:22:36 42 17:22:41 <-- incompetent 17:22:58 You can echo, or you can set "return value" variables. 17:23:04 I think I'll echo 17:23:09 because I'll be using it like `opt blah` 17:23:16 which should substitute the echo right? 17:25:45 also how would I use || as an expression inside a string... 17:25:59 opt() { echo --$1 $D/googlebooks-($2||$1)-*.csv } 17:26:05 I'm pretty sure that's completely wrong. 17:27:13 I'm not sure what you want to happen there. 17:27:40 I want that string to be output with those variables substituted. when $2 isn't there I want it to use $1 17:27:53 but actually I think I'll set it up so that the second argument doesn't exist at all. 17:27:57 as it currently is. 17:28:03 opt() { echo --$1 $D/googlebooks-$1-*.csv } 17:28:11 oh wait 17:28:15 do I need to quote the -- stuff? 17:28:16 ${2:+$1} might have worked in bash, though I'm no bashist. 17:28:42 `run echo --test 17:28:45 ​--test 17:29:17 -!- Phantom_Hoover has quit (Ping timeout: 248 seconds). 17:29:39 uh, what the hell is ${s:+$1} 17:29:43 s/s/2/ 17:30:01 ${foo:+bar} is "$foo, except with a default value of 'bar'" in bash. 17:30:09 It's bar when foo is empty or unset. 17:30:28 Bash has quite a lot of tricky ${} syntaxes. 17:31:00 ah okay 17:31:11 I was still thinking Perl where you would use || and // for that kind of stuff. 17:31:40 Oh, sorry, I meant ${2:-$1}, not +. I think. 17:31:43 Yes. 17:31:55 D=${1:-.) 17:31:55 opt() { echo --$1 $D/googlebooks-$1-*.csv } 17:31:56 perl ./construct_grams.pl $D/googlebooks-eng-1M-*.csv `opt eng-1M` `opt eng-fiction` `opt eng-gb` `opt eng-us` `opt fre` `opt ger` `opt heb` `opt rus` `opt spa` `opt chi-sim` 17:32:01 so this looks completely reasonable right? 17:32:04 aside from being bash. 17:33:29 I don't want to commit myself to any answer, not being a sheller. Try it out and see? Put an "echo" in front of the perl for the first run? 17:33:57 okay. 17:34:34 "--foo" for any "foo" should be safe with built-in Bash echo; sadly it's not so for GNU coreutils echo. 17:34:38 `run /bin/echo --help 17:34:41 Usage: /bin/echo [OPTION]... [STRING]... \ Echo the STRING(s) to standard output. \ \ -n do not output the trailing newline \ -e enable interpretation of backslash escapes \ -E disable interpretation of backslash escapes (default) \ --help display this help and exit 17:34:47 so #!/bin/bash 17:34:49 for this one 17:34:51 `run /bin/echo --halp 17:34:53 ​--halp 17:35:30 gb_opt() { echo --$1 $D/googlebooks-$1-*.csv } 17:35:31 d_opt() { echo --$1 /usr/share/dict/$1 } 17:35:31 When you make up the category from a graph as I have described, what is it called? 17:35:36 bahahahaha code reuse in bash is funny. 17:35:37 I'm not exactly sure how you are meant to echo "--help" with the coreutils echo. 17:35:46 `run echo -- --help 17:35:48 ​-- --help 17:35:50 `run /bin/echo -- --help 17:35:52 ​-- --help 17:35:55 I mean, not like that, obviously. 17:35:57 `run /bin/echo --help 17:36:00 Usage: /bin/echo [OPTION]... [STRING]... \ Echo the STRING(s) to standard output. \ \ -n do not output the trailing newline \ -e enable interpretation of backslash escapes \ -E disable interpretation of backslash escapes (default) \ --help display this help and exit 17:36:11 Maybe with -E 17:36:19 Yes, I guess with that. 17:36:23 `run /bin/echo -E --help 17:36:25 ​--help 17:36:29 Verily good. 17:36:36 so should I echo -E for safety? 17:37:15 Nah, it's not standard anyway. 17:37:26 -E, I mean. 17:38:36 POSIX echo only specifies "-n" (as a first operand), and the meaning of it is implementation-defined anyway; except on XSI-conformant systems, where it's treated as a string, so... 17:39:08 (OTOH Posix echo also says backslash escapes are enabled by default on XSI-conformant systems, unlike Bash echo which disables them without -e.) 17:39:15 Echoing: it's what's for dinner. 17:39:49 ('printf' is slightly more standardized.) 17:40:10 echo perl ./construct_grams.pl $D/googlebooks-eng-1M-*.csv `gb_opt eng-1M` `gb_opt eng-fiction` `gb_opt eng-gb` `gb_opt eng-us` `gb_opt fre` `gb_opt ger` `gb_opt heb` `gb_opt rus` `gb_opt spa` `gb_opt chi-sim` `d_opt irish` `d_opt german-medical` `d_opt bulgarian` `d_opt catalan` `d_opt swedish` `d_opt brazilian` `d_opt canadian-english-insane` `d_opt manx` `d_opt italian` `d_opt ogerman` `d_opt portuguese` `d_opt polish` `d_opt 17:40:16 I really hope this works 17:40:19 because I don't want to write those by hand. :P 17:42:08 You can just generate them with cat < wat 17:42:31 help how do I bash 17:42:59 I don't see why it shouldn't work like that too, though. 17:43:12 fizzie: POSIX echo goes on to note that *literally anything* else does not comply. 17:43:39 ./build_data.sh: line 6: syntax error: unexpected end of file 17:43:40 uh oh 17:43:58 You want some ;s in the functions if you're writing them all on one line like that. 17:44:26 yes it appears to work correctly. 17:45:06 er wait... 17:45:27 the wildcard doesn't seem to be working correctly. 17:45:59 perl ./construct_grams.pl Data.pm /media/Elements/googledata/googlebooks-eng-1M-1gram-20090715-0.csv /media/Elements/googledata/googlebooks-eng-1M-1gram-20090715-1.csv /media/Elements/googledata/googlebooks-eng-1M-1gram-20090715-2.csv /media/Elements/googledata/googlebooks-eng-1M-1gram-20090715-3.csv /media/Elements/googledata/googlebooks-eng-1M-1gram-20090715-4.csv /media/Elements/googledata/googlebooks-eng-1M-1gram-20090715-5.c 17:46:09 it skips all of the gb_opts 17:46:46 http://pastebin.com/yNeJ6Kp1 17:47:21 Well, we don't have the files, and your output paste is cut off when it's still (presumably) listing all the expansions of the first $D/googlebooks-eng-1M-*.csv in there. 17:47:40 Do you even want that thing in the perl line like that? 17:47:48 oh, yeah the output skips all of the `gb_op ...` expansions 17:48:12 yes that's the CLI construct_grams.pl uses. 17:48:14 if that's what you mean. 17:48:35 It looks weird, since you have (well, would have) gb_opt'd the same files immediately after it. 17:48:56 From `gb_opt eng-1M`. 17:49:47 ./build_data.sh: line 6: gb_opt: command not found 17:50:05 fizzie: oh yeah, that's kind of a hack, basically 1M is the default but it can also be specified. 17:50:24 ^^^ is the error I get when I add the line echo `gb_opt test` 17:50:52 more semicolons? :P 17:51:13 no that didn't do anything. 17:51:19 No, a } in the definition of D. 17:51:20 Not a ). 17:51:27 ......doh 17:51:32 (Also maybe an editor with better syntax-highlighting?) 17:51:39 using emacs. 17:51:57 okay now it's all there 17:52:57 I like how the canadian english option is 17:53:00 --canadian-english-insane 17:53:01 -!- Phantom_Hoover has joined. 17:54:09 For some reason I still wish you'd Storable (+gzip+base64, maybe) those hashes instead of evaluating them as Perl code. 17:55:51 I'm not sure what difference that would make aside from being compressed. 17:56:10 -!- Ngevd has joined. 17:56:12 It's just more sensible. 17:56:19 Hello! 17:56:30 What you're doing is like eval'ing JSON blobs instead of reading them with a JSON decoder. 17:56:35 * CakeProp1et waits forever for these 4-gajillion datasets to be calculated. 17:57:01 fizzie: no it's more like interpreting perl code with a perl interpreter. 17:57:04 perfectly sensible. :P 17:57:12 It's data, not code. GNAAA. 17:57:30 I'll tweak in some Storabled hashes into HackEgo when you're not looking some day. 17:57:34 I might switch to storable, maybe. 17:57:47 fizzie: well it would certainly be easy 17:57:52 There's the other thing too. Or, well, lots of things. 17:57:56 use Data; Storable_stuff_blah(); 17:58:07 since you know 17:58:13 THE PERL CODE IS REALLY EASY TO ACCESS 17:58:18 AS IT ONLY REQUIRES A SINGLE IMPORT TO ACCESS. 17:58:23 -ahems- 17:58:25 excuse me. 17:58:52 so yeah this will probably run for several hours until it hids the /usr/share/dict entries 17:59:01 and then freak out due to some unforseen bug in the line parsing code. 17:59:02 I'll put in a tiny wrapper so that the storabled hashes are in the __DATA__ portion of Data.pm, and they get unsplunked during the loading. 17:59:13 I think an edgeless graph makes a discrete category, a forest graph makes a thin category, objects corresponding to nodes in the same connected components of the graph are isomorphic. 17:59:32 Also maybe I'll leave a few thousand lines of hashes at the start of the file so that you don't get suspicious. 17:59:46 Wait, am I thinking this out loud? 17:59:47 fizzie: I have no qualms with any of this 17:59:52 just that I'm lazy and am already doing it this way. 17:59:57 and it works fine. 18:03:19 `run perl -e 'print sort qw(a b c d e f g h)' 18:03:22 abcdefgh 18:03:38 You have learned: the alphabet! 18:03:44 Well, a part of it. 18:03:53 Still working on the rest. 18:04:36 The standard galactic alphabet. 18:05:00 -!- elliott has joined. 18:05:04 07:19:41: With a context length of 2, it's not really going to be so terribly clever about "wordness", so personally I wouldn't care about biases in the exact distribution of word endings so much. 18:05:04 elliott: You have 2 new messages. '/msg lambdabot @messages' to read them. 18:05:06 -!- elliott has quit (Changing host). 18:05:06 -!- elliott has joined. 18:05:07 he's upping that 18:05:29 oh that's what he meant by context length 18:05:35 yeah I switched to 4-grams. 18:05:42 "Up yours." (Sorry.) 18:05:52 There's rather more of those, one would assume. 18:10:27 17:54:09: For some reason I still wish you'd Storable (+gzip+base64, maybe) those hashes instead of evaluating them as Perl code. 18:10:27 17:55:51: I'm not sure what difference that would make aside from being compressed. 18:10:39 CakeProp1et: If you don't do this, there is no way four-grams will fit on HackEgo. 18:10:55 It'll either be too big to `fetch, or be glacial to run. 18:11:08 (base64 doesn't sound necessary, though.) 18:11:10 .....perhaps. 18:11:30 I could always compress it when I `fetch :) 18:12:31 > 4^27 18:12:32 18014398509481984 18:12:35 >_> 18:12:46 > 27^4 18:12:47 531441 18:13:09 You can make a similar thing I mentioned of categories from graphs, but for digraphs, would be that a digraph together with a cancellation specification makes up a category. 18:13:32 > (27^4)*24 18:13:33 12754584 18:13:41 It's (surprisingly) 27 times what 27^3 would take. 18:13:49 that's the total number of entries for 24 datasets. 18:14:10 "worst case" 18:14:28 as it assumes every combination is possible. 18:14:37 The longer models tend to be sparser. 18:14:52 (For word models, the sparsity is actually quite a big problem when you want to deal with unseen stuff.) 18:17:03 Dopefish is the dopest of fishes. 18:17:16 Deadfish is the deadest. 18:17:59 "Tom Hall first conceived of the Dopefish as one of 24 potential characters for Keen 4. In his words, 'I just drew this stupid little fish'." (And the rest is history.) 18:18:15 (Actually I don't really know how well-known the Dopefish is.) 18:18:31 At least the "Appearances" list is quite long. 18:18:38 I remember the dopefish! (Although I didn't know it by that name until I looked it up) 18:18:44 I played Commander Keen 5 :) 18:18:49 I'm aware of the Dopefish but am not certain why you are telling us about it now :P 18:19:06 elliott: I referred to the Standard Galactic Alphabet a bit earlier there. 18:19:09 Just going on from there. 18:19:23 Us bots tend to do that sort of stuff. 18:19:33 fungot: Isn't that right? 18:19:33 fizzie: cyrus! are you leaving! executing program. please let me go... put me out?! hey! is that for us! the chef's in a snit, trying to get food to the front lines. heard a spell to energize the sword takes immense evil! indeed! this thing. what you have? transform! this trading house. it's the kind! i've decided to stay with these humans! you're a traitor! you're not our king! but, we are far outnumbered! 18:21:27 fungot: I think you've spent enough time in that style, it's starting to warp you. 18:21:27 fizzie: see? i like marle better than " princess,' the chosen time has come! he's strong and he's gonna thrash those monsters! yea! is it? 18:21:39 fizzie: You should add a command that lets you set it up for a sword alone can't stop for the next message. 18:21:51 So you can seem amazing and do it on demand-- oh, I've ruined it, haven't I. 18:22:05 It seems to be managing that on its own quite well, though. 18:22:07 ^style 18:22:07 Available: agora alice c64 ct* darwin discworld europarl ff7 fisher homestuck ic irc jargon lovecraft nethack pa sms speeches ss wp youtube 18:22:56 I think I need a "^style random" support. 18:23:35 `run head -c 100 /dev/urandom 18:23:37 ​W"et]wi4oxhB9.1 18:23:41 * Gregor nods sagely. 18:24:41 fizzie: What you need is that feedback loop model :P 18:24:45 `run echo agora alice c64 ct darwin discworld europarl ff7 fisher homestuck ic irc jargon lovecraft nethack pa sms speeches ss wp youtube | tr ' ' '\n' | shuf -n 1 18:24:47 nethack 18:24:52 ^style nethack 18:24:52 Selected style: nethack (NetHack 3.4.3 data.base, rumors.tru, rumors.fal) 18:25:05 What I need is to make ^style available for bots, then I can just abuse that. 18:25:37 fungot: fizzie: I wonder if fortune would be a good dataset? 18:25:37 CakeProp1et: dogs are much harder to kill the wizard, you don't wear glasses why bother? " oh, heck! i'll handle *this* one! 18:26:11 ~$ fortune 18:26:11 You may worry about your hair-do today, but tomorrow much peanut butter will 18:26:11 be sold. 18:26:11 ~$ fortune 18:26:11 You may worry about your hair-do today, but tomorrow much peanut butter will 18:26:13 be sold. 18:26:16 ..oops 18:26:27 `run fortune 18:26:29 sh: fortune: command not found 18:26:34 oh dear 18:26:34 `fetch http://sprunge.us/XiBQ 18:26:34 $ fortune 18:26:34 At that point it will compile, but segfault, as it should.. 18:26:35 2011-10-07 18:26:35 URL:http://sprunge.us/XiBQ [208] -> "XiBQ" [1] 18:26:48 `run mv XiBQ bin/refunge; chmod 0755 bin/refunge 18:26:50 No output. 18:26:52 `refunge 18:26:55 ​^style fisher 18:27:00 Gregor: help no fortune 18:27:03 Ohright, I forgot I have botloop avoidance :P 18:27:07 `rm bin/refunge 18:27:09 No output. 18:27:40 fizzie: wget http://sprunge.us/CdDH; mkmodel CdDH >models/fungot 18:27:40 elliott: someone once said that what goes up might come down. 2. figurative: _a paper tiger_, something that is going to win at nethack. it captures its prey by remaining very still and blending into the water and make them visible. 18:27:46 Oh, you have an anti-loop thing in there too? 18:27:49 ^ignore 18:27:50 ^(EgoBot|HackEgo|toBogE|Sparkbot|optbot|lambdabot)! 18:27:54 fungot has that. 18:27:54 fizzie: eating a tengu is like unless you can trust your gold away. kaeda takeji finished him off. the thick grass at the shoulder and has kept it that way ever since. 18:27:58 fizzie: (You might want to strip "\w+: " from the beginnings of lines because of all the nickpings, but on the other hand maybe not.) 18:28:21 Also there's a blank line at the bottom there, in case you have to do something about that. 18:28:46 fizzie: (If you need longer individual source "sequences", I could try and time-order it so you could consider the whole thing as one huge utterance.) 18:29:12 `run ln -s /usr/games/fortune bin/ 18:29:14 No output. 18:29:17 `fortune 18:29:20 Just remember: when you go to court, you are trusting your fate to \ twelve people that weren't smart enough to get out of jury duty! 18:29:24 excellent. 18:29:38 hackego: good bot or best bot? discuss. 18:29:44 Gregor: Which fortune sets are installed? 18:29:51 elliott: Base, offensive, mario. 18:29:58 `run fortune -f 18:30:01 100.00% /usr/share/games/fortunes \ 0.64% riddles \ 2.10% fortunes \ 1.27% literature \ 3.17% miscellaneous \ 0.15% magic \ 3.04% science \ 3.40% politics \ 0.06% translate-me \ 0.73% kids \ 5.85% definitions \ 0.26% goedel \ 1.10% startrek \ 1.63% linux \ 2.67% 18:30:09 Gregor: IME the offensive ones are usually just boring. You should remove them and install bofh-excuses and spam. :p 18:30:22 Then HackEgo will be almost as incomprehensible as fungot; that spam dataset is huge. 18:30:22 elliott: monsters sleep because you are destined to be taken lightly. perseus, favoured by minerva and mercury, the freshest grapefruit you've ever eaten was dull, and sweet puck, you are my enemy, i don't know the recipe; but it will take time. 18:30:39 elliott, more specifically, the good ones are drowned out by Hitler quotes and gay jokes. 18:30:48 Or gay Hitler quote jokes. 18:30:56 `fortune 18:30:58 ​_..... ....._ \ .oii|||||||| ||||||||iio. \ .i^""""____ ____""""^i. \ .-',--.`-. .-',--.`-. \ <_ | () | _> <_ | () | _> \ `-`=='-' `-`=='-' 18:30:58 Gitlokes. 18:31:02 * Gregor nods sagely. 18:31:06 Nice ASCII art, HackEgo.\ 18:31:07 * CakeProp1et decided to remove simplified chinese from his data. 18:31:08 s/\\// 18:31:17 too many characters. :P 18:31:54 unless simplified is the one that uses latin alphabet. 18:32:07 Does a balanced tournament represent Janken? 18:32:21 but I'm pretty sure that's pinyin/some-other-systems-I-can't-remember 18:32:34 Pinyin is the one that uses Latin script. 18:32:38 yes. 18:32:40 CakeProp1et: Simplified Chinese means the characters are in a simpler (and, in my opinion, harder to understand) form. 18:32:47 ah okay 18:32:53 so, yes, way too many characters still. 18:32:56 Simplified Chinese brought about a number of structural simplifications. 18:33:09 unless you guys want randomly generated Chinese words.. 18:33:20 -!- sadhu has joined. 18:33:29 Unfortunately, this made some elements of it much more complex: you end up having significantly more character *components* to learn. 18:34:27 finally my bf interpreter is complete....i was having problems initially to implement the nested loops functionality but atlast it's done 18:34:42 And pinyin is just a clusterfuck of bad orthography. 18:35:13 sadhu: With a completed BF interpreter, you are now allowed access to the Sekrit #esoteric-gold channel. 18:35:53 elliott: Here's about a hundred comments of that: http://sprunge.us/AEYb 18:36:03 lol Gregor 18:36:03 (They seem to run quite long.) 18:36:24 fizzie: all gone! you're a traitor! you're not our king! but, we are far 18:36:24 outnumbered! fu, hu, hu, hu, hu, hu, hu, hu, hu, hu, hu, hu, hu, hu, hu, 18:36:24 hu, hu, hu, hu, hu, hu, hu, hu, hu, hu, hu, hu, hu, hu, hu, hu, hu, hu, 18:36:24 hu, hu, hu, hu, hu, hu, hu, hu, hu, hu, hu, hu, hu, hu, hu, hu, hu, hu, 18:36:24 hu, hu, hu, hu, hu, hu, hu, hu, hu, hu, hu, hu, hu, hu, hu, hu, hu, hu, 18:36:32 fizzie: So is that treating the whole thing as one utterance? 18:36:38 No, it was separatey. 18:36:42 Oh. Weird. 18:36:44 27, 28, 33, 36, 49, 64, 81, 82, 83 ...too much output! ...too much 18:36:45 output! ...too much output! ...too m ...too much output! 18:36:47 How did that happen then? 18:37:00 elliott: what language is that? 18:37:05 sadhu: fungot :P 18:37:06 elliott: ettin: the kabuto is the object of your color and you will be my present to you soon. it is a slime-like creature who swallows other creatures alive, spits acidic secretions, and stamped. they are hitting you: they keep bouncing back. 18:37:16 fizzie: oh my god 18:37:16 tap; said i don't care enough, i warrant you missed that: ):::ass. in 18:37:17 case you missed that: (:::ass ):::ass (:::ass. in case you missed that: 18:37:17 (:::ass ):::ass (:::ass ):::ass (:::ass ):::ass (:::ass. in case 18:37:17 you missed that: ):::ass. in case you missed that: (:::ass ):::ass 18:37:17 (:::ass. in case you missed that: ):::ass. in case you missed that: 18:37:19 (:::ass ):::ass (:::ass ):::ass (:::ass. in case you missed that: 18:37:21 ):::ass. in case you missed that: (:::ass. in case you missed that: 18:37:23 ):::ass. ...too much stack!)))))))))))) 18:37:40 -!- CakeProp1et has quit (Read error: Connection reset by peer). 18:37:43 -!- CakeProphet has joined. 18:37:44 I warrant you missed that ass. 18:38:01 this whole overheating thing needs to stop 18:38:09 I need to buy one of those cooling platform things maybe? 18:38:22 75, 76, 77, 78, 79, 80, 81, 100, 121, 144, 169, 196, 225, 256, 289, 18:38:23 324, 361, 400, 441, 484, 529, 576, 625, 676, 729, 784, 841, 900, 961, 18:38:23 1024, 1089, 1156, 1225, 1296, 1369, 1444, 1521, 1600, 1681, 1764, ...out 18:38:23 of stack! 18:38:27 fizzie: This is amazing, add it. 18:38:38 johannsen ohannsen hannsen annsen nnsen nsen sen en n, 144, 169, 196, 18:38:38 225, 256, 289, 324, 361, 400, 441, 484, 529, 576, 625, 676, 729, 784, 18:38:38 841, 900, 961, 1024, 1089, 1156, 1225, 1296, 1369, 1444, 1521, 1600, 18:38:38 1681, 1764, ...out of stack! he's really a tricycle! pass him! 18:38:46 ^style darwin 18:38:46 elliott: There are few lines of just repeated " ...too much output!" in the data, and since in pretty much all other cases "too much output!" ends the line, it doesn't have very many ways to continue. 18:38:46 Selected style: darwin (Books by Charles Darwin -- you know, that evilution guy) 18:38:50 my laptop overheats easily on my bed when I'm doing things such as constructing markov chains. 18:39:06 fungot, so how /did/ Darwin write/ 18:39:08 Phantom_Hoover: laccadive group. we can seldom understand their action./ cause :) this remarkable plant, an inhabitant :)/ antarctic voyage :) h.m.s. :( fly", as naturalist, i never saw a bee even looking at one. there are other inconsiderable ones) on this eastern side are fighting with rosas./ general public. 18:39:16 fizzie: Fair enough. (How is that not treating them all as a single utterance?) 18:39:20 Anyway dude this is the most amazing. 18:39:22 Add it add it add it 18:39:55 "gnu project has written things like airline software and the internet" 18:40:05 indirect casulties included... budweiser commercial the best character, 18:40:05 you are an hypocrite ehird, you are an hypocrite ehird, what the heck 18:40:05 has tar files got to do with anything? ehird, i never needed macros for it 18:40:27 It's not "treating them all as a single utterance" because it's not. It's just that the stopping has very little to do with actual line endings; it only stops where it's possible, but the likelihood is taken from the current length. (And I think it might be a bit buggy.) 18:40:34 Well, right. 18:40:38 Well, if you insist. Will take a moment. 18:41:16 elliott@katia:~/logs$ grep -r '^..:..:..: ' . | sed 's/.* //g' | wc -l 18:41:17 8820 18:41:17 elliott@katia:~/logs$ grep -r '^..:..:..: ' . | sed 's/.* //g' | egrep -v '^\w+: ' | wc -l 18:41:17 4264 18:41:18 elliott: table 4? 35. (/ naturalist on/ amazons,' 1863, p. 18). therefore :( i arose" " judges v. 7),/ females would have been short and broken with/ inspirations prolonged; and this is/ case with/ many little bladders filled with water, sixty-one leaves were tried with/ glycerine extract :) pancreas with a negative result. nor is it easy to measure/ strength :)/ stimulus from/ friction :) one wing over/ other. 18:41:19 elliott: at/ present day, for they do not alight on people's arms, nor do they care for, or dislike/ subject, i do hope you will let us know what is/ meaning :) experimental science./ fnord, forms a passage from/ one form, and yielded plenty :) seeds. 18:41:23 hmmm 18:41:29 the wildcards don't seem to expand now. 18:41:30 fungot: I sort of wonder what it would look like without the babble lines but am not sure I want to know. 18:41:30 elliott: shan ponies, striped. -scorching :) dark. -effect :) subsidence. these rings appear very ancient, and are generally ruptured rather than yield. if not published by/ second standard as 100 to 85. 18:41:33 this is weird. 18:41:57 Processing eng-1M... 18:41:58 Parsing /media/Elements/googlebooks-eng-1M-*.csv... 18:42:04 took all of 0 seconds 18:42:18 -!- sadhu has left ("Leaving"). 18:42:34 A moment and a reboot, in fact. 18:42:35 ^save 18:42:35 OK. 18:42:40 ^raw QUIT :oh no! 18:42:40 -!- fungot has quit (Quit: oh no!). 18:43:00 Some day I'll make that thing reloadable. 18:43:18 -!- fungot has joined. 18:43:23 help wildcard expansion isn't working hlep 18:43:23 ^style fungot 18:43:23 Selected style: fungot (What I've said myself) 18:43:32 Yesssssssss 18:43:34 sup fungot 18:43:34 elliott: anmaster: " no" to give an idea, that is)) did we look?" said lady. ' why, this is for you guys are a lot 18:43:40 sup sup fungot 18:43:40 elliott: ais523: that is cfunge output fail in firefox is also a useful idea to send it in more interesting things in a interpreter for an arbitrary bf program? :) htmlprag?' questions. will you and the pogo hammer. 18:43:48 fizzie: Oh good, you didn't strip the names. :p 18:44:18 oh nevermind 18:44:18 No. But it's funny, I don't think I saw them much in the Perl script output. 18:44:20 the problem is that 18:44:24 I am giving it the wrong directory. :P 18:44:43 Maybe the Perl script doesn't actually put in the sentence-start token for the initial context. 18:44:47 That sounds possible. 18:45:09 Processing eng-1M... 18:45:10 Parsing /media/Elements/googledata/googlebooks-eng-1M-1gram-20090715-0.csv... 18:45:12 ...goood 18:45:17 now it's taking forever, as it should. 18:46:01 fungot: Actually you are really rather nickpingy, maybe I should prune those? 18:46:01 fizzie: ais523: that is cfunge output fail in firefox is also a useful idea to send it in the files that were given to a data structure thats so tuned to the same without the space the same without the aid of the law, there is no 18:46:06 Ye-aah. 18:47:16 I wish my external had like.... 18:47:18 a battery. 18:47:28 so I could take my laptop other places while I'm doing this. 18:47:52 also wireless external. That would be cool. 18:49:22 fungot: Okay, are you a bit less nicky now? 18:49:22 fizzie: or is it just me, or i: yet, you rogue! and if you wish! we shall hold this position to the last man! big fire where lavos fall from sky! we 18:49:33 There you: go. 18:49:46 http://en.wikipedia.org/wiki/Variable-order_Markov_model 18:49:49 intriguing 18:50:53 fungot: You have a variable-order model, don't you? 18:50:53 fizzie:, so i'd make stuff up to. why, this is for you guys are a lot. " rasen versus " xtu" 18:51:07 (He does.) 18:51:54 3-order is good for my first time doing this kind of thing ever. 18:52:03 perhaps later I will attempt to actually learn what the fuck I'm doing. 18:52:11 and then do fancy stuff. 18:52:59 It's not like I actually implemented the variable-order model construction; I just used our toolkit. (Some of the older styles are based on fixed-order n-grams constructed with my own horrible script.) 18:53:41 my script is awesome 18:53:45 not horrible in any way. 18:53:51 though it's not tested at the moment... 18:53:55 because I have no compatible data yet. 18:54:12 Processing eng-fiction... 18:54:16 2 out of 24. 18:54:37 granted these are the largest datasets first. The /usr/share/dict sets will take a few seconds each if that. 18:54:54 What's awesome is that if you Google (or at least if I Google; I seem to be logged in for some reason, so this might be personalized) for "VariKN", the first couple hits are for our toolkit, but on place #7 there's "git.zem.fi Git - fungot/blobdiff - varikn/readme.txt". 18:54:54 fizzie: just to help an fnord archive) 18:55:40 An fnord archive is evidently interested in VariKN 18:56:28 haha, perl is on top with 352.3 MBs of memory usage. 18:56:33 chrome as a whole probably beats it though. 18:56:42 That's not very much for Perl. 18:56:55 yes I optimize my Perl code to avoid memory leaks, duh. 18:56:59 :> 18:57:12 3 gigs of free RAM is not enough to run the in-memory test script on fungot's 'irc' style. 18:57:26 lol 18:57:30 (It's a 200-megs-or-so datafile.) 18:57:38 I, uh, read line by line. 18:57:46 it would be insane to slurp the whole file. 18:58:21 Yes, well, the n-gram tree is what's in the 200-meg file. 18:58:33 oh I see. 18:59:12 195659600 bytes for that, and 1042812 for the token-index-to-string map. 18:59:30 I've actually made some efforts to make these scripts flexible. 18:59:45 so that you could add new datasets. 19:00:01 though I don't know if I will ever end up doing that. 19:00:08 24 languages is pretty good. 19:01:09 Extract from near the end of tokens.bin.irc: "...zitzitterbewegunggmail.comzleepznznewznolznorkzobufzoey'szomgzzone/zonedzookozoom;zoomablezoomdeskzoomerzoomszootzopzornzoundszowiezreidorzrutyzuber..." 19:04:56 Wow, SpaceChem is by the guy behind Codex of Alchemical Engineering!? 19:05:02 I loved that game! 19:06:24 Installing it now 19:06:56 it is a good game 19:10:05 can anyone recommend a laptop cooling pad? 19:10:42 CakeProphet: Yes, I highly recommend one. 19:10:43 Next question. 19:11:01 most of the ones I'm finding aren't getting very good reviews. 19:12:56 -!- Ngevd has quit (Ping timeout: 260 seconds). 19:17:47 Can you please review this program for me? http://sprunge.us/YNJW 19:18:06 http://www.amazon.com/Antec-Notebook-Cooler-USB-Powered/dp/B0000BVYTV 19:18:08 this one looks promising 19:18:12 and reasonably cheap 19:30:23 `run perl -e ' print "á" =~ /[[:alpha:]]/ 19:30:26 sh: -c: line 0: unexpected EOF while looking for matching `'' \ sh: -c: line 1: syntax error: unexpected end of file 19:30:31 `run perl -e ' print "á" =~ /[[:alpha:]]/' 19:30:34 No output. 19:30:38 ... :( 19:31:09 `run perl -e ' print "á"' 19:31:12 ​á 19:31:22 that's a problem. 19:32:59 `run perl -e ' print "á" =~ /[^\W_]/' 19:33:01 why 19:33:01 No output. 19:33:14 elliott: because that's the character class I use to filter the word data. 19:33:26 because there's a lot of non-alphabetic entries 19:33:26 á is certainly alphanumeric 19:33:36 ......yes, yes it is. 19:33:41 do you see the problem then? 19:34:55 nope 19:35:14 á is not matching [[:alpha:] 19:35:15 ] 19:35:23 which is what I use. to filter the word data. 19:35:31 so I need to find a new regex 19:35:49 Yes, it should match that. 19:35:53 Check locale settings. 19:36:14 fizzie probably knows how to make Perl decode Unicode, IIRC it's not default. 19:36:17 As in UTF or whatever. 19:37:16 elliott: http://stackoverflow.com/questions/6162484/why-does-modern-perl-avoid-utf-8-by-default/6163129#6163129 19:37:42 Deewiant: Ah yes, so easy. 19:38:03 Well that's your "Unicode for everything everywhere" solution 19:38:23 You probably want it in general but you might not need all of it 19:38:27 `run perl -e 'print "á" =~ /\p{L}/' 19:38:29 1 19:38:34 I could also do that. 19:38:49 `run perl -e 'print "_" =~ /\p{L}/' 19:38:51 No output. 19:38:53 `run perl -e 'print " " =~ /\p{L}/' 19:38:56 No output. 19:38:58 yes 19:39:10 CakeProphet: Yes, just do it without thinking about it 19:39:14 "Code that uses [a-zA-Z] is even worse. And it can’t use \pL or \p{Letter}; it needs to use \p{Alphabetic}. Not all alphabetics are letters, you know!" 19:39:19 Oh wh;oops look at that 19:39:41 `run perl -e 'print "" =~ /\p{Alphabetic}/' 19:39:43 No output. 19:39:47 `run perl -e 'print "á" =~ /\p{Alphabetic}/' 19:39:49 1 19:39:53 okay good. 19:40:39 time to, uh, restart my script. :P 19:41:35 Deewiant: This list is doing a great job at making me not want to use Perl 19:41:55 Funny, it had the opposite effect on me 19:42:05 You don't get that level of Unicode support in most languages 19:42:27 Deewiant: Half the entries are "this standard library function doesn't work, use this more complicated library instead for no reason other than backwards-compat" 19:43:05 For typical languages it's "this standard library function doesn't work, you're fucked" 19:43:05 MY favourite language has full ICU support :-P ... although the binding breaks referential transparency, sigh 19:45:10 -!- sllide has joined. 19:47:05 If your character does not ride a horse, are you going to ride a huge scorpion instead? (Large scorpion is too small for medium size people to ride) 19:49:13 The \p works because: "-- if the "locale" or "encoding" pragmas are not used and the string is not "utf8", then "[[:xxxxx:]]" (and "\w", etc.) will not match characters 0x80-0xff; whereas "\p{IsXxxxx}" will force the string to "utf8" and can match these characters (as Unicode)." 19:51:30 wow this Unicode guy is ridiculous. 19:51:37 at caring about Unicode a lot. 19:52:28 Cake "English-language native" Prophet 19:53:14 Unicode is designed badly, in my opinion. 19:53:23 I am so surprised 19:53:26 at this opinion. 19:53:26 More of his stuff on Unicode is at http://training.perl.com/OSCON2011/index.html 19:53:41 Deewiant: Don't you understand, Unicode is designed badly 19:54:12 hmmmm a lot of these symbols are showing up as squares. 19:54:26 symbols, emoticons, and gothic & deseret 19:55:06 Only the gothic for me 19:55:13 Deewiant: Aw, I feel sad for the guy that the question asker was a jerk about it in the comments 19:55:15 wat do? 19:55:26 CakeProphet: "I recommend you get both of two free fonts from George Douros that are known to work: his Alfios font for regular text, and his Symbola font for fancy emoji. As these talks cover Unicode 6.0, you may otherwise have trouble viewing some of the sample characters if you follow along in your own browser. If any of these don’t look right to you, you probably need to supplement your system fonts:" 19:55:31 -- http://98.245.80.27/tcpc/OSCON2011/index.html 19:55:59 halp how suppelmetn 19:56:05 If I was designing the ASCII code, I would have designed it differently, too; but ASCII as it is, is still OK, although there could be improvement. If I design the character coding, I would put 'A' immediately after '9' for one thing, have delimiters ()[]{} that you can flip a bit to select the open/close other one, but keep a few features of ASCII such as bit flip to uppercase/lowercase, "<=>" order, etc 19:57:17 (The OMEGACOM-1 character set has code 0x00 representing '0' and 0x0A representing 'A'; it uses 0x7F for space) 19:58:09 where are the system fonts located? 20:04:20 /usr/share/texmf/fonts/opentype/public/lm/ 20:04:28 ??? 20:04:40 symbola is ttf and alfios is otf 20:10:11 http://zem.fi/~fis/rfkfont.png <- this is the 78-character rfk86 character set; but I make no claims for good design. It's not used much either, though. 20:11:43 fizzie: But in what things is it used with? 20:12:05 Only in rfk86, for the NKI messages. 20:12:11 Well, and the web page of it. 20:12:30 (Come to think of it, I think the thing used on the web page has more characters.) 20:13:07 -!- hoppecl has joined. 20:13:59 Yes, the web-font has full latin-1 (I think... the upper half is so messy it's hard to say) as well as the Unicode line-drawing block which starts from U+2500. 20:15:34 I think some of the functions in Parsec are too specific and should be made more generalized, such as these ones: char anyChar satisfy string oneOf noneOf 20:16:24 What does NKI messages means? 20:16:28 hi hoppecl 20:16:29 `? welcome 20:16:31 Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page 20:16:51 "NKI" means "Non-Kitten Item", I think it's the official term. It's the messages you get when the robot finds a thing that is not kitten. 20:18:45 zzo38: Generalised how? 20:19:07 elliott: To work with types other than Char (some might require Eq) 20:19:18 zzo38: Parsec already supports non-Char 20:19:22 You just imported the String module 20:20:04 I imported Text.ParserCombinators.Parsec hiding (many, (<|>)) 20:20:11 Are you using parsec two or three 20:20:25 parsec-3.1.1 20:21:07 elliott: I think parsec only has 'satisfy' for Char for some reason 20:21:13 zzo38: Text.ParserCombinators.Parsec is the backwards compatibility module 20:21:15 Trifecta might as well 20:22:13 Deewiant: Why? It doesn't make sense to me. It ought to work with any type 20:22:20 -!- boily has quit (Quit: WeeChat 0.3.5). 20:22:24 zzo38: Text.Parsec is parsec-three 20:22:37 No good reason I can think of 20:23:47 -!- Patashu has joined. 20:24:56 -!- ais523 has joined. 20:25:08 my computer is so hot right now I could probably pop popcorn. 20:28:53 http://entropedia.co.uk/generative_music/#b64K1HQUtDQKLGzMzSqAZIWmmpmxmpAhokmAA%3D%3D 20:33:40 now in german... 20:33:48 still have hebrew and spanish left I think. 20:33:54 and then all of the other languages. 20:45:12 -!- copumpkin has joined. 20:48:57 -!- hoppecl has quit (Quit: 10 million strong and growing!). 20:49:14 -!- clemens_ has joined. 20:49:28 -!- clemens_ has quit (Client Quit). 20:49:44 -!- copumpkin has quit (Client Quit). 20:50:10 -!- hoppecl has joined. 20:51:59 Does Parsec include a function that does (foldr1 (<|>) . fmap try) ? 20:56:36 I've heard that Haskell has this thing called = that might be similar 20:56:39 but I don't remember what it does. 20:57:08 -!- derdon has joined. 20:57:09 CakeProphet: what? 20:57:17 I know what = does, and it doesn't do that 20:57:43 http://www.reddit.com/r/math/comments/l3hhb/good_aslevel_maths_revision_sites_c1_in_particular/ 20:57:44 -!- Ngevd has joined. 20:57:50 zzo38: choice . map try 20:57:52 What a terribly odd question to ask in /r/math. 20:58:14 GORDON'S ALIVE 20:58:29 Deewiant: O, so that is what it does. OK 20:58:32 What kind of person thinks "having trouble with A-level maths, I'm sure r/math will know a good revision site." 20:59:12 Finally seen Flash Gordon 20:59:26 http://www.pi314.net/eng/index.php 20:59:27 elliott: perhaps I didn't make my point very well. 20:59:27 I.... 21:01:48 http://www.pi314.net/eng/index.php 21:01:49 I.... 21:01:49 the best 21:01:52 -!- centrinia has joined. 21:02:09 hi centrinia 21:02:10 `? welcome 21:02:13 Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page 21:02:14 elliott, this person 21:02:15 zzo38: elliott: the point being that if Parsec doesn't define such a construct then it's trivial to create the abstraction yourself. 21:02:19 Phantom_Hoover: is the best, yes. 21:02:20 knows about LaTeX 21:02:22 and yet 21:02:23 but of course that goes without saying. 21:02:25 used Comic Sans 21:02:28 CakeProphet: That isn't a helpful answer to "does it exist". 21:02:29 Hello elliott. 21:02:42 Phantom_Hoover: I don't think you have a true appreciation of the artistry of Comic Sans. 21:02:49 elliott: I understand 21:02:58 the beauty 21:03:01 of Comic Sans. 21:03:02 centrinia, I should point out that I haven't seen anyone design and deploy an esolang here... ever? 21:03:09 I use it on all of my Technical Writing papers. 21:03:13 Phantom_Hoover: Hey, I've been witness to that happening about three times. 21:03:15 THREE WHOLE TIMES. 21:03:28 Over... four years? Five? 21:03:45 Phantom_Hoover: Hey, you've seen... one. (Brook.) 21:03:45 Phantom_Hoover: as it turns out innovative language design is somewhat challenging. 21:03:53 So it might have even been FOUR. 21:04:22 elliott, I wasn't listening. 21:04:31 Phantom_Hoover: See, that's your problem. 21:04:33 Phantom_Hoover: I do have a language that I'm designing at the moment, but to what extent it's esoteric is debatable. 21:04:40 -!- augur has quit (Remote host closed the connection). 21:05:04 really I think the distinction of esoteric is very close to being a meaningless qualifier, and that this community is centered on language design and computing as a whole. 21:05:52 (a) It's not meaningless at all, there are a few concrete definitions that everyone is divided between; (b) esolangs.org certainly isn't, this channel is just off-topic all the time because IRC. 21:06:02 (c) Putting letters in parentheses before things makes them true. 21:06:25 I think the string literal syntax in Haskell is a good idea. 21:06:46 1) lists can be a useful means of conveying information b) though there are many different formats and sometimes they can get kind of dense iii.) also number schemes are important. 21:06:46 (a) (i) what about using standard exam format (ii) it is the best (b) hello 21:07:05 zzo38: ...is there anything remarkable about Haskell's string literal syntax? 21:07:24 CakeProphet, it uses backslashes! And double quotes! 21:07:30 ah yes. 21:07:33 CakeProphet: Only that it is better designed than that of other programming language, such as the \& escape 21:07:48 Perl - best strings 21:07:48 And the \^ escape 21:08:28 centrinia, so what brings you to this channel of wonders? 21:08:40 Phantom_Hoover: FSVO wonders 21:08:51 Ruby - cheap knockoff of superior Perl strings. 21:09:18 there is only one true tim toady. 21:09:39 http://en.wikipedia.org/wiki/List_of_unsolved_problems 21:09:41 Best list. 21:09:50 Now there could be other string literal syntax if you wanted to change the escapes, such as by having `~ab which makes a string that is terminated by 'b' and uses 'a' as the escape character 21:09:56 That is very generalized way. 21:10:16 maybe something like q/blah blah blah/~ 21:10:18 Phantom_Hoover, someone recommended this channel to me. 21:10:20 where you put the escape character on the end. 21:10:39 centrinia, who? We need to weed them out and kill them, you see. 21:11:02 CakeProphet: Can it always parse correctly if the escape character is at the end? 21:11:03 unless it was me 21:11:06 but I don't think it was 21:11:21 ais523, excuse me, what makes you think you're exempt? 21:11:38 zzo38: sure. 21:11:40 .. 21:11:41 Actually, he merely mentioned that lambdabot is here. :p 21:11:52 Was this in #haskell? 21:12:02 zzo38: you would have to post-process the string after parsing it. 21:12:06 but yes it can be done that way 21:12:10 though an alternative might be better? 21:12:34 CakeProphet: That is why I put the escape character at the start. 21:13:02 zzo38: ah yes, that could work. But then you lose the benefits of having perl-like quote-like operators which are IMO a better improvement to string literals. 21:13:17 unless you did both without making the syntax ugly. 21:14:09 Of all the channels lambdabot in, this is definitely the best. 21:14:11 ?channels 21:14:11 Unknown command, try @list 21:14:13 ?list 21:14:14 http://code.haskell.org/lambdabot/COMMANDS 21:14:19 ?listchans 21:14:19 ##freebsd ##logic ##proggit ##villagegreen #agda #arch-haskell #darcs #dtp2010 #esoteric #fedora-haskell #friendly-coders #functionaljava #gentoo-haskell #gentoo-uy #ghc #gp2010 #happs #haskell # 21:14:19 haskell-blah #haskell-books #haskell-fr #haskell-freebsd #haskell-in-depth #haskell-overflow #haskell.au #haskell.cz #haskell.de #haskell.dut #haskell.hr #haskell.se #hscraft-srv #learnanycomputerlang 21:14:19 uage #macosx #macosxdev #rosettacode #scala #scalaz #scannedinavian #teamunix #unicycling #uscs2010 #xmonad #yi weird# 21:14:29 I wonder why it's in ##freebsd. 21:14:30 dunnno scannedinavian is probably good. 21:14:41 elliott: some regular was probably just like "dude lambdabot" 21:14:51 good enough reason as any. 21:15:05 why is it in #esoteric? :P 21:15:55 "dude lambdabot" 21:15:58 yep. 21:16:07 It's been in here for quite a while though, intermittently. 21:16:28 argument by precedence. 21:16:33 good enough. 21:16:47 but then why was it here before it was here quite a while? eh? 21:17:17 so uh... 21:17:32 is there anything in a typical Russian word that is not going to match \p{Alphabetic}? 21:18:23 or Hebrew, Swedish, Finnish, Polish, Irish, Garlic, 21:18:25 Is vodka alphabetic? 21:18:33 I think so, yes. 21:18:44 I'm just wondering if there's any weird combining marks or something that will get filtered out. 21:18:55 CakeProphet: "co-operative" 21:18:56 Ask Deewiant. Or fizzie. They seem to be the experts. :p 21:18:56 I don't know anything about these languages. 21:19:03 or Unicode 21:19:04 Does that match hyphens and the like? 21:19:06 Deewiant: Apostrophes too one presumes 21:19:09 Yep 21:19:09 I doubt - is alphabetic 21:19:15 ' is not alphabetic no 21:19:27 I didn't want millions of possessive words from English in the data. 21:19:46 So you have "s" as an incredibly common word? 21:19:47 Neat 21:20:06 er no I exclude anything that is not completely alphabetic. 21:20:26 so it ignores all possessive words in English. 21:20:30 perhaps I'm not understanding you? 21:20:44 You have to accept at least hyphens anyway 21:20:48 Well that's ridiculous 21:21:00 I see. 21:21:19 how is ' used in other languages? 21:21:28 also what other non-alphabetic things could I bet missing? 21:21:31 s/bet/be/ 21:21:32 vaa'an 21:21:51 I mean what does the ' represent. 21:21:56 (fi:vaa'an = en:scales's) 21:22:09 okay so it's used for possessives 21:22:11 ? 21:22:13 No 21:22:20 CakeProphet: You should really not try and filter anything at all. 21:22:25 It will inevitably fail. 21:22:28 I used this code to parse a Haskell character literal: char '\'' *> fmap CharLit (parseSingleChar '\'') <* char '\''; does it seem correct to you? 21:22:34 elliott: I think that is more of a bad idea. 21:22:43 CakeProphet: I think you are wrong. 21:22:43 because there are literally entries for every number used. 21:22:50 and concurrency amounts. 21:22:56 and possessives are gross. 21:22:56 Concurrency amounts? 21:22:57 It's used to mark syllable boundaries when one would end up with three identical vowels in a row 21:23:01 currency :P 21:23:12 Due to elision of a consonant due to inflection or some such 21:23:20 CakeProphet: Just only do English with the basic Latin alphabet if you're not going to do it properly 21:23:38 (Which is of course much smaller than the characters required to accurately write all English, but who's counting?) 21:23:47 what is "properly". Why would I want a word generator to produce large numbers of 's and things like $133052? 21:24:19 I'll just special case the filtering. easy enough. 21:24:34 zzo38: Note that string literals can contain \& but character literals can't 21:24:57 CakeProphet: Properly as in taking care not to fuck up other languages 21:25:06 elliott: yes that is what I want to do. 21:25:10 not filtering anything is not the way to do that. 21:25:19 Deewiant: I know. However my program is not perfect, but it works almost all the time 21:25:21 because these datasets have a lot of junk that I don't want to include. 21:25:24 CakeProphet: Then you can't just drop words with ' in them. 21:25:28 elliott: correct 21:26:29 the 's is really only something I'm concerned with in English. I'm not going to try to remove possessive cases in other languages because they're not so simple. 21:27:00 This program currently accepts a character literal beginning with \& (such as '\&R') but does not accept a string literal ending with \& (such as "X\&"), so it is not exactly Haskell 21:27:28 I might fix that later 21:27:35 Correction to my above: it's not only with three identical vowels, it's whenever two or more vowels would join up in such a way that the syllable boundary needs explicit marking 21:28:05 But I doubt it is of any use that anyone needs anything other than what I already have. 21:28:06 (fi:jok'ainoa = en:every single) 21:28:49 I'll probably use a negative lookaround to specifically find possessive English forms. 21:29:00 so that things like contractions stay. 21:29:53 It makes the (<*) and (*>) useful with Parsec. 21:29:56 And it does end up in Finnish possessives, with foreign words that end in silent consonants: fi:Bordeaux'n = en:Bordeaux's 21:30:22 zzo38: What does \& even do 21:30:35 Also, (*>) at least is identical to (>>) 21:30:36 elliott: \1\&23 = \1 followed by 23 21:30:42 "\&" is identical to "" 21:30:46 elliott: Instead of \123 21:31:04 Ah :P 21:31:11 elliott: Yes I know (*>) is identical to (>>) and I use (>>) too, which is also useful. 21:31:31 But it is sometimes useful to do it backward 21:31:34 Deewiant: This tchrist guy sure knows his stuff but does he always use visually irritating deprecated Unicode for emphasis or is it only in this Stack Overflow question :P 21:31:46 -!- Ngevd has quit (Ping timeout: 260 seconds). 21:31:48 Deprecated? 21:32:11 IIRC he does use it in at least one of those presentations to which I linked earlier 21:32:14 Deewiant: Shit like the small caps characters are just there for backwards compat 21:32:20 so 21:32:28 is there any language that has 's at the end of a word 21:32:31 that isn't possessive? 21:32:42 Pretty sure Lojban does 21:32:55 Lojban doesn't count as a thing I care about. :P 21:33:11 right now, anyways. 21:33:14 poor lojban 21:33:33 CakeProphet: https://secure.wikimedia.org/wikipedia/en/wiki/Apostrophe#Non-English_use 21:33:37 You said "any language" 21:33:54 elliott: right I didn't mean to say it doesn't fit the criteria of my original sentence. 21:33:54 CakeProphet: Dutch plurals, apparently 21:34:00 just that I don't care about it regardless. 21:34:22 Deewiant: Also In Irish, the past tense of verbs beginning with an F or vowel begins with d' (elision of do), for example do oscail becomes d'oscail ("opened") and do fhill becomes d'fhill ("returned"). The copula is is often elided to 's, and do ("to"), mo ("my") etc. are elided before f and vowels. 21:34:53 elliott: He only needed one example :-P 21:35:15 Deewiant: I suspect one example is more likely to get a "oh well I don't care about that" than two 21:35:15 but if I don't filter out possessives I'll get grossness. :P 21:35:33 CakeProphet: Do you have any evidence for that 21:35:43 `macro 21:35:44 elliott: Dutch seemed mainstream enough to care about 21:35:48 Gmacro: : commitBuffer: invalid argument (Invalid or incomplete multibyte or wide character) 21:35:54 hmmm 21:35:58 macro is dumber than word in several ways. 21:36:06 but also includes 's 21:36:13 and they appear frequently. 21:36:18 Apples, oranges 21:36:29 while true; do echo "'s"; done 21:36:36 CakeProphet: Wow, this xacro sure does have way too many 's 21:36:40 Better filter them out 21:37:20 's is good 21:37:36 catsup's 21:39:31 so the fact that there's probably several tens or hundreds of thousands of possessives in my dataset won't mean that 's appears incredibly frequently at the end of generated words? okay. 21:40:29 try & see 21:41:00 monqy: waiting on (currently incorrect for many non-English languages) dataset to finish. 21:41:27 I wonder if maybe it would go faster if you hadn't written it in Perl. 21:41:39 nah Perl's the fastest of the languages. 21:42:46 I'm just going to play with the English dataset until I actually know that my algorithm/dataset is good. 21:43:17 elliott: I wrote a spambot in less than an hour using Perl; it would have been 20 minutes if I hadn't tested it to make sure 21:43:20 well, not really a spambot 21:43:32 ais523: I see; why are you telling mE? 21:43:34 s/E/e/ 21:43:36 an email mass-mailer that took a database as input and emailed everyone in it with the rows of the database that applied to them 21:43:43 and because you mentioned speed of Perl 21:43:49 Running speed, not development. 21:43:54 ofc, that's a rather IO-bound task 21:43:58 CakeProphet has a dataset of many hundreds of megabytes. 21:44:05 ofc, that's a rather IO-bound task 21:44:09 As long as he doesn't use C running time is easily relevant. 21:44:12 *so development speed was the limiting factor 21:44:15 Erm as in 21:44:21 the database was only kilobytes 21:44:23 ais523: this is IO bound, too 21:44:27 ah, OK 21:44:35 language is mostly unimportant for IO-bound tasks, right? 21:44:45 it's the algo that's more important? 21:44:59 ais523: Not if you store everything in a Perl hash and use regexps way too much and break words and .. 21:45:02 s/../.../ 21:45:10 elliott: that just means it stops being IO-bound 21:45:15 because your algo is owful 21:45:17 *awful 21:45:25 what are you talking about my algorithm is awesome. 21:45:27 Well, sure. 21:45:31 see? 21:45:34 elliott agrees. 21:45:59 I was replying to ais523. 21:46:04 nonsense. 21:46:36 so I'm going to try non-numeric only. 21:46:55 instead of alphabetic only 21:47:04 s/../.../ <--- I don't think regexes work like that; well, not properly, anyway 21:47:15 They do in DWIM. 21:48:27 so.... \P{Number} should work to at least filter out the numeric entries. 21:49:24 ugly possessives are okay I guess. 21:53:33 I want to immediately acquire British accent 21:53:49 I don't have a spare, unfortunately 21:54:04 maybe elliott has one 21:54:09 or two 21:54:37 nooga: We cannot allow that to happen. 21:54:47 First we're giving you our accents, next thing you know we're cleaning /your/ windows. 21:56:09 * Madoka-Kaname hands nooga a random Japanese person's accent 21:56:51 I amu notu interesteda ina windowsu, justa the wayu of speakingu 21:57:06 shhhitu 21:57:24 Ah yes, nooga is drunk again. 21:57:28 You are going to pump our gas some day 21:57:36 no, i'm not 21:57:41 I... 21:57:42 pump my gas 21:57:43 right now 21:57:43 and no 21:57:46 No, I mean elliott 21:57:59 zzo38: I will mark it down in my diary. 21:58:14 (And I don't mean mine; I don't need it.) 21:58:21 whose gas 21:58:24 needs pumping 21:58:26 what gas? 21:58:34 nooga 21:58:45 does nooga need pumping 21:59:28 is nooga gas 21:59:32 Maybe. 21:59:54 maybe I am... at least a bit 22:00:16 my surname indicates that 22:00:43 Yes, that must be why. 22:01:31 Gas+ending 22:01:36 zzo38: i'm confused........ 22:04:53 Oh, he's kənfjúzd 22:06:24 it happens 22:06:32 sh happens 22:07:12 so it does 22:08:27 I've just read several novels by HP Lovecraft 22:12:05 abnormal and blasphemous and decadent and loathsome and hideous they are 22:12:12 and 22:12:19 nothing 22:14:50 I think I have something about HP Lovecraft in my dream.txt file, I think it was some contribution by someone else 22:15:49 wow, tried out Morrowind a bit. What a blast from the past in terms of not only the graphics, but also awkward interface design. Somehow even more awkward than in Oblivion. Didn't think that was possible. 22:16:11 SKREE SKREEE 22:16:24 SKREEEEEEEE 22:16:43 i hated those.... cliff somethings 22:16:55 that I had to kill every two minutes 22:17:48 what 22:18:00 but Oblivion was pretty amusing... until level 5, on which I ended the main quest 22:18:04 Cliff racers. 22:18:08 elliott: in Morrowind 22:18:12 yeah, cliff racers 22:18:17 annoying cancer 22:27:05 `run perl -e "q/'/ =~ /\p{Connector_Punctuation/" 22:27:07 Missing right brace on \p{} in regex; marked by <-- HERE in m/\p{ <-- HERE Connector_Punctuation/ at -e line 1. 22:27:10 `run perl -e "q/'/ =~ /\p{Connector_Punctuation}/" 22:27:13 No output. 22:27:20 `run perl -e "q/'/ =~ /\p{Dash_Punctuation}/" 22:27:22 No output. 22:27:29 `run perl -e "q/'/ =~ /\p{Other_Punctuation}/" 22:27:32 No output. 22:27:35 `run perl -e "q/'/ =~ /\p{Final_Punctuation}/" 22:27:38 No output. 22:27:39 noep 22:28:25 `run perl -e "q/'/ =~ /\p{Mark}/" 22:28:28 No output. 22:28:43 who knows Scala? 22:28:49 maybe elliott? 22:29:00 I suggest not using Scala unless you absolutely have to 22:29:02 . 22:29:21 how about using it for fun? 22:30:07 but Oblivion was pretty amusing... until level 5, on which I ended the main quest <-- I played most of the side quests but never completed the main quest 22:30:15 > generalCategory '\'' 22:30:16 OtherPunctuation 22:30:28 nooga, the key point about oblivion is not the main quest. It is the side quests. And exploring the world. 22:30:30 > generalCategory '_' 22:30:31 ConnectorPunctuation 22:30:38 > generalCategory '-' 22:30:39 DashPunctuation 22:30:49 nooga, presumably the same is true for Morrowind. I haven't really played it enough atm. 22:34:16 -!- pikhq_ has joined. 22:34:28 -!- pikhq has quit (Ping timeout: 260 seconds). 22:35:24 -!- ais523 has quit (Remote host closed the connection). 22:37:09 Vorpal: I did many quests 22:38:15 but the game gets boring when you can use destruction magic, can pick every lock, can kill everyone using bow or sword and are invisible 22:39:00 Then try a challenge game, where you are not allowed to use destruction magic, pick any locks, kill anyone, or become invisible. 22:39:17 Is it possible to complete the game this way? 22:40:44 (If you cannot, then just count how many times you do these things and lower score is better; 0 means you can complete the game even with these things disallowed) 22:41:43 interesting idea 22:53:03 yeah, cliff racers 22:53:15 But didn't that guy kill all of them Prequel said he did 23:02:38 -!- nooga has quit (Ping timeout: 248 seconds). 23:03:11 Is there a such things as m a -> m b -> m (a,b) 23:03:27 ?ty liftM2 (,) 23:03:28 forall a1 a2 (m :: * -> *). (Monad m) => m a1 -> m a2 -> m (a1, a2) 23:03:35 ?ty liftA2 (,) 23:03:36 forall a b (f :: * -> *). (Applicative f) => f a -> f b -> f (a, b) 23:03:46 -!- augur_ has joined. 23:04:13 -!- augur_ has quit (Read error: Connection reset by peer). 23:04:17 OK 23:24:42 How often is (<*) used with Parsec? 23:28:49 a lot 23:29:23 Yes I would think so. It seems to be very useful in parsing stuff. 23:33:58 -!- sllide has quit (Ping timeout: 260 seconds). 23:33:58 -!- DH____ has quit (Read error: Connection reset by peer). 23:34:22 '�dy' 23:34:24 help what is that. 23:34:33 > ord '�' 23:34:34 65533 23:34:42 > generalCategory '�' 23:34:43 OtherSymbol 23:34:57 http://www.fileformat.info/info/unicode/char/fffd/index.htm 23:35:10 I think it is replacement character 23:35:27 oh, well, something is getting fucked up. 23:35:29 then 23:35:42 that character appears a lot in my markov data. 23:36:28 maybe I need to change perl's default settings some more. 23:36:30 The examples of Parsec and source codes of Parsec uses do-notation a lot more than I would have done. But that is OK. 23:37:01 CakeProphet: Maybe you are using the incorrect encoding 23:37:24 > generalCategory 'あ' 23:37:25 OtherLetter 23:37:32 > generalCategory '手' 23:37:33 OtherLetter 23:39:07 use open qw( :encoding(UTF-8) :std ); 23:39:11 I think, is what I need 23:41:40 How much do you use the Haskell do-notation? I think it is useful sometimes, but mostly I do not use it. 23:42:52 I typically use it with "state-like" monads. 23:42:54 sometimes. 23:42:56 but not often. 23:43:33 typically the larger a monadic expression becomes the more likely I am to translate it into a do block 23:43:56 but then I usually just break it down with let/where 23:43:57 > generalCategory 'a' 23:43:58 LowercaseLetter 23:44:09 > generalCategory 'π' 23:44:09 LowercaseLetter 23:45:37 I wonder if I can get away with not doing most of the stuff this guy says. 23:47:08 oh hey look I'm not using the version of perl that supports unicode fully 23:47:10 might be a problem 23:47:39 why is everything in debian repos so out of date... 23:48:16 CakeProphet: You are using testing, right? 23:48:21 I often break it down into separate functions, if it seems to me to be a reasonable way to do it. It has a lot of functions useful for using with monads, including: return >>= >=> <=< join fmap >> <* *> <*> <$> <|> liftM2 mapM sequence when 23:48:24 Like I told you to and gave detailed instructions for? 23:48:30 elliott: I don't know what that is so no 23:48:43 CakeProphet: I explicitly told you about it and linked you to a specific ISO and you confirmed what I said. 23:48:56 If you're using stable, yes, it's massively out of date; this is what happens when you don't listen to my advice. 23:48:57 ? 23:49:07 I think I uh.... missed something? 23:49:12 maybe I was sleep walking? 23:49:18 You replied, so no. 23:49:22 sleep typing 23:49:25 it happens I'm sure. 23:50:06 you're telling me to use the testing repos right? 23:50:15 If you are doing Haskell like it is mathematics but has to be entered the way the computer expects it, then it is doing correct. 23:50:53 2011-09-26: 23:50:53 08:47:01: CakeProphet: I think the "GNOME desktop" that Debian offers to install is three, so I'd try Xfce first time round. 23:50:53 08:47:12: Oh, and since Debian's site is useless about this -- 23:50:53 08:47:41: CakeProphet: http://cdimage.debian.org/cdimage/daily-builds/daily/arch-latest/amd64/iso-cd/debian-testing-amd64-netinst.iso would be the ISO you would want. 23:50:54 08:47:52: Don't be put off by the testing name; in Debian, stable means "a few years old" and testing means "stable". 23:50:57 08:48:08: (unstable/sid means "beta/alpha-quality" and experimental means "broken".) 23:50:59 08:48:29: I don't /use/ a lot of the software I've installed regularly but I've accumulated a shit ton of packages/modules/whatever in various languages that I kind of wanted to have around so I don't have to ever think about them again... but, I guess that's no big deal. 23:51:03 08:48:59: amd64? I'm running intel though. 23:51:05 08:49:05: >_< 23:51:07 08:49:09: The name of the architecture is amdsixtyfour. 23:51:09 08:49:12: Because they invented it. 23:51:11 08:49:16: oh okay. 23:51:13 08:49:23: CakeProphet: And a final helpful tip: You want to do the "Xfce -> expert graphical install". Trust me. Graphical because the terminal interface is ugly, and /expert/ because -- well, you can use the default answer to almost all its questions -- but only in expert mode does it offer to install a sudo-based system instead of a separate root password. 23:51:18 08:49:27: It should be default, but it isn't. 23:51:34 CakeProphet: It is true that you can upgrade stable to testing, but you get to figure out the safe commands to do it (hint: it isn't apt-get upgrade). 23:51:47 isn't it like... 23:51:53 editing sources? 23:52:07 What do other people say about whatever I said about Haskell like it is mathematics? 23:52:10 also note that I'm still on Ubuntu, will this work? 23:52:11 Yes, that will magically upgrade your system by editing a text file. 23:52:23 CakeProphet: You're still on Ubuntu and... using the Debian repositories? 23:52:24 What? 23:52:27 elliott: I just want to get a newer version of perl interpreter atm 23:52:39 elliott: aren't I using debian repos because they're upstream? 23:52:47 Ubuntu has its own repositories. 23:52:58 If you're using Debian repos on Ubuntu, your system is irreparably broken. 23:53:04 I'm not. 23:53:11 I just want a newer perl plz. 23:53:14 `run perl --version 23:53:16 ​\ This is perl, v5.10.0 built for x86_64-linux-gnu-thread-multi \ \ Copyright 1987-2007, Larry Wall \ \ Perl may be copied only under the terms of either the Artistic License or the \ GNU General Public License, which may be found in the Perl 5 source kit. \ \ Complete documentation for Perl, including FAQ lists, should be 23:53:20 ....bah 23:53:27 FUCK YOU PERL 23:53:39 maybe 5.10 is enough 23:53:55 Feature "unicode_strings" is not supported by Perl 5.10.1 at ./construct_grams.pl line 4 23:53:59 or maybe not 23:54:42 I'm just going to hope that most of this boilerplate is not in fact necessary in my case. 23:55:10 sounds good 23:56:36 if it is boilerplate that's pretty much by definition that it's not necessary 23:56:52 well, maybe 23:57:07 it may not be olsner's definition of boilerplate then/ 23:57:15 which is entirely wrong, but whatever. 23:57:16 (plus grammar, because "that is ... that it is" doesn't really work in english as I know it) 23:57:58 anyway, just write a sed script to generate the perl you want