00:00:39 -!- aretecode has quit (Ping timeout: 265 seconds). 00:03:50 -!- aretecode has joined. 00:31:46 -!- danofthedeep has joined. 00:32:16 -!- hppavilion[1]_ has joined. 00:32:40 Hi 00:46:35 I just spent 20 minutes searching for the one letter in my font that I accidentally made 1 pixel too high 00:47:08 Now my font is once again 16x9 pixels 00:47:30 -!- hppavilion[1]_ has quit (Ping timeout: 246 seconds). 00:48:54 -!- getpwnam has quit. 00:57:02 -!- danofthedeep has quit (Remote host closed the connection). 01:17:48 -!- danofthedeep has joined. 01:18:53 -!- danofthedeep has quit (Max SendQ exceeded). 01:19:20 -!- danofthedeep has joined. 01:20:27 -!- danofthedeep has quit (Max SendQ exceeded). 01:21:38 -!- danofthedeep has joined. 01:25:10 hello danofthedeep 01:25:27 `wisdom 01:25:42 onëliner/onëliners are pairs of unfathomable vectors in the category of exponential distance. 01:31:25 -!- mihow has quit (Quit: mihow). 01:44:24 `wisdom 01:44:26 loop/loop: see loop 01:44:28 `wisdom 01:44:29 tmyk/tmyk the more overfilled your brain gets. 01:44:38 `? recursion 01:44:39 You might expect a reference to recursion here, but to make it interesting you'll actuallSTACK OVERFLOW 01:46:18 -!- hppavilion[1]_ has joined. 02:04:27 -!- aretecode has quit (Quit: Toodaloo). 02:06:29 -!- rg_ has quit (Read error: Connection reset by peer). 02:07:06 -!- rg_ has joined. 02:21:02 -!- Aearnus_ has joined. 02:27:50 -!- variable has joined. 02:29:26 https://www.youtube.com/watch?v=jcZUPDMXzJ8 02:32:51 -!- hppavilion[1]_ has quit (Ping timeout: 246 seconds). 02:37:40 -!- Phantom_Hoover has quit (Read error: Connection reset by peer). 02:58:39 -!- hppavilion[1]_ has joined. 02:58:49 Dammit 02:59:08 I think I left myself logged into IRC at work and it didn't log me off 03:00:45 hppavilion[1]_: do you have your nick registered? 03:00:59 one of the main reasons to register your nick is to log off other remote copies of yourself, 03:01:02 s/,// 03:01:05 ais523: : Yes 03:01:06 Oh 03:01:10 Awesome 03:01:22 hppavilion[1]_: /msg nickserv ghost hppavilion[1] password 03:01:28 you don't need the password if you're logged in right now 03:01:40 (ideally send that in a different tab so that we don't see your password if you typo the / at the start) 03:01:46 -!- hppavilion[1] has quit (Disconnected by services). 03:02:09 ais523: Yes, I figured out that I should do that when identifying a while ago 03:02:20 And completely ignore that ideal :P 03:02:29 now that nickserv's disconnected your ghost 03:02:37 you can just /nick to take over the name you want 03:05:51 ais523: Yep 03:05:58 I figured that'd be how it worked 03:06:05 -!- hppavilion[1]_ has changed nick to hppavilion[1]. 03:06:17 Yuy 03:06:40 -!- oren has changed nick to Oren. 03:06:58 -!- Oren has changed nick to o-ren. 03:08:33 -!- o-ren has changed nick to \oren\. 03:14:20 <\oren\> WTF?!!? So they sold Google to a brand new company called alphabet run by the same people? 03:14:30 yes 03:16:03 ofc, if you own a company, you can sell it, and you can also sell it to yourself 03:16:16 so there's nothing legally that weird about it 03:17:43 <\oren\> but whyyyyy 03:18:04 the theory I've seen is that they want to narrow what the word "google" refers to 03:18:19 although whether it's going to be search or advertising (or both but nothing else) is rather up in the air 03:18:32 IMO it'd be a terrible move for them to actually rename the search engine, but maybe they will? 03:20:31 they're not going to 03:21:03 it's hard to see how they would 03:21:17 although anecdotal evidence is that the general public don't really understand the distinction between a browser and a search engine 03:21:28 (and URL bars that pipe to a search engine are not helping) 03:21:30 I read that somewhere 03:21:42 I thought it was their blog post, but apparently not 03:22:02 ais523: anecdotal evidence suggests there are people who don't understand the distinction between a browser and the internet 03:22:13 that too 03:29:20 it seems like they're also trying to bring attention to their other subsidaries 03:30:01 like http://www.calicolabs.com/ 03:32:13 -!- variable has quit (Quit: 1 found in /dev/zero). 03:33:24 There are people who don't know Facebook coutns as "using the itnernet". 03:33:35 -!- MDream has changed nick to MDude. 03:33:59 But yeah, they specifically said Alphabet's just meant to act as a holding company. 03:34:38 -!- ais523 has quit (Read error: No route to host). 03:34:45 It won't make anything itself, it's more to solve the problem of them buying up companies that work on their own and then dealing with people wondering why it's not integrated with search. 03:34:47 -!- ais523 has joined. 03:35:17 when did google neuter their calculator features :( 03:43:09 coppro: Aeons ago 03:44:01 possibly related to wolfram|alpha? 03:44:12 <\oren\> use dc command for calculator! 03:44:33 I used to use it for dimensional calculations 03:44:39 now w|a will be my goto I guess 03:45:13 <\oren\> idea: programming language with units on every amount 03:46:00 <\oren\> x = 10m; y = x / 2s; print y; >>> 5m/s 03:48:16 <\oren\> km/h = 3.6m/s; y = 5m/s; print (km/h)y; >>> 1.388888 03:49:29 <\oren\> hmm... you could do something quite like this with C++11 custom literals 03:49:56 <\oren\> unfortunately, c++ is scow 03:51:09 `scow 03:51:10 ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: scow: not found 03:51:14 I see 03:51:24 \oren\: not ony can you do that with C++ custom literals 03:51:54 but boost.units 04:07:43 https://github.com/ainfosec/crema/ why is this not turing complete? 04:09:23 izabera: my guess is recursion isn't allowed 04:10:06 -!- Wright_ has quit (Read error: Connection reset by peer). 04:10:06 there's no mention of such restriction 04:10:21 -!- Wright has joined. 04:10:37 there isn't 04:10:53 but if you disallow (mutual) recursion, it's sub-TC 04:11:02 if you don't, pretty sure it is TC 04:20:21 -!- GeekDude has quit (Quit: {{{}}{{{}}{{}}}{{}}} (www.adiirc.com)). 04:37:07 -!- Wright has quit (Ping timeout: 265 seconds). 04:44:15 -!- J_A_Work has joined. 04:48:49 -!- hppavilion[1] has quit (Quit: Page closed). 05:20:32 -!- J_A_Work has quit (Quit: J_A_Work). 05:26:12 <\oren\> ■□▢▣▤▥▦▧▨▩◧◨◩◪◫◰◱◲◳ 05:29:19 <\oren\> ⅒ seems to be missing from a lot of fonts for some reason 05:29:48 <\oren\> it's even missing from GNU unifont 05:30:06 works in tamsyn \o/ 05:30:06 | 05:30:06 /| 05:30:24 slowbot 05:30:39 -!- zadock has joined. 05:30:46 \oren\: the ascii letter? 05:32:19 <\oren\> no 05:32:38 <\oren\> `unidecode ⅒ 05:32:39 ​[U+2152 VULGAR FRACTION ONE TENTH] 05:33:14 <\oren\> it is supposed to be like - 05:33:19 <\oren\> _1_ 05:33:24 <\oren\> 10 05:36:42 <\oren\> ͰͱͲͳ are also missing from GNU unifont for unknowable reasons 05:38:06 <\oren\> as are ◸◹◺◻◼◽◾◿ 05:39:56 <\oren\> Is this the result of newer unicode standards adding those characters? 05:41:09 <\oren\> seems so 05:45:33 -!- MDude has changed nick to MDream. 05:53:43 -!- x10A94 has joined. 06:06:13 -!- rg_ has quit (Quit: My Mac has gone to sleep. ZZZzzz…). 06:09:27 -!- rg_ has joined. 06:17:25 <\oren\> Well i've figured out how to configure unicode font fallback 06:21:19 -!- rg_ has quit (Quit: My Mac has gone to sleep. ZZZzzz…). 06:37:38 -!- hppavilion[1] has joined. 06:37:41 Hi 06:39:51 <\oren\> hi 06:49:38 does using the list monad make me terrible? 06:51:27 -!- zadock has quit (Quit: Leaving). 06:52:25 coppro: depends on how you use it 06:52:29 if you use it for its intended purpose, no 06:56:14 So in Perl and many other languages, there's a truthy/falsey dimension, but now Perl 6 has a defined/undefined dimension 06:56:59 Perl 5 has a defined/undefined dimension too 06:56:59 And a `with` statement which is like `if` except for definedness 06:57:37 ais523, how many undefined values are there in Perl 5? Perl 6 types and Failures are considered undefined 06:58:06 http://design.perl6.org/S04.html#The_with_and_without_statements 06:58:09 -!- oerjan has joined. 06:58:53 Sgeo: ah right, I can only think of one, arguably two depending on how you look at it 06:58:58 read-only undef and read-write undef 06:59:10 only read-only undef is more of a container than a value 06:59:14 hmm 06:59:16 ok so 06:59:21 if I have a Maybe a 06:59:31 and a computation a -> m b 06:59:55 Perl 6 doesn't have undef, but lets you use the type to represent an undefined value of that type. I'm not convinced that that's much better than Java null, but for some reason they are 07:00:18 is there an easy combinator which will give me mzero if the maybe is Nothing and the result of the computation otherwise? 07:02:38 ah mfromMaybe is close enough 07:21:43 hmm 07:22:58 coppro: asum . traverse f 07:23:41 oh wait 07:24:24 oerjan: figured it out 07:24:40 mfromMaybe isn't standard, is it 07:24:43 mapM_ 07:24:44 no it isn't 07:24:59 mapM_ doesn't work 07:25:04 :t mapM_ 07:25:05 (Monad m, Foldable t) => (a -> m b) -> t a -> m () 07:25:13 it doesn't give results 07:25:48 in this case I don't care about results, but yes 07:26:21 some sort of fold would do if I did 07:28:04 :t foldM_ 07:28:05 (Monad m, Foldable t) => (b -> a -> m b) -> b -> t a -> m () 07:28:21 hmm 07:28:23 ais523: anything with _ at the end will generally discard results 07:28:26 :t mapM 07:28:27 (Monad m, Traversable t) => (a -> m b) -> t a -> m (t b) 07:28:48 oerjan: ah right, I was confusing it with the fold1 and the like 07:32:08 come to think of it, how do you generally disregard results in Haskell 07:32:09 I think it's interesting to contrast with Ruby and some similar languages, where both nil and false are falsey... if something returns a lack of value, and if something returns an actual false, are indistinguishable by merely a truthy check 07:32:28 the obvious \x -> () doesn't work because then x isn't evaluated 07:32:32 can you lift it somehow? 07:32:48 Sgeo: well Perl 5 has separate defined and truthy checks, although undef is falsey 07:33:03 \a -> a; return () 07:33:04 ? 07:33:08 oh wait got it 07:33:14 :t \f -> asum . fmap f 07:33:15 Not in scope: ‘asum’ 07:33:15 Perhaps you meant one of these: 07:33:15 ‘F.asum’ (imported from Data.Foldable), 07:33:20 wtf 07:33:25 :t \f -> F.asum . fmap f 07:33:26 (Functor t, Foldable t, Alternative f) => (a1 -> f a) -> t a1 -> f a 07:33:30 that. 07:34:09 int-e: i'm not sure Data.Foldable needs to be imported qualified any longer 07:34:33 @tell int-e for lambdabot, i'm not sure Data.Foldable needs to be imported qualified any longer 07:34:33 Consider it noted. 07:34:52 everything that name clashed has been unified 07:36:19 :t void 07:36:20 Functor f => f a -> f () 07:36:23 ais523: ^ 07:36:38 oerjan: aha 07:36:43 now I'm wondering if that has a simple definition 07:36:44 it probably does 07:37:04 that's for inside Monads and the like 07:37:10 @src void 07:37:10 Source not found. You type like i drive. 07:37:23 `? lambdabot 07:37:24 lambdabot is a fully functional bot. just don't ask about @src. 07:38:03 ais523: nowadays it'd be void x = () <* a 07:38:08 :t (<*) 07:38:09 Applicative f => f a -> f b -> f a 07:38:15 oops 07:38:18 sorry 07:38:29 :t (<$) -- that one 07:38:30 Functor f => a -> f b -> f a 07:38:52 which also is a way of discarding a result, replacing it by whatever 07:39:11 > 3 <$ [1,2,3] 07:39:13 [3,3,3] 07:41:08 ais523: also, there's seq 07:41:11 :t seq 07:41:11 a -> b -> b 07:41:23 it discards, but evaluates first 07:41:44 disabling laziness 07:41:59 seq and performUnsafeIO are one hell of a combo 07:42:13 I know about seq 07:42:16 *unsafePerformIO 07:42:21 yeah 07:42:28 how many layers does a get unpacked? 07:42:34 just one 07:42:39 I think it's just checked for not-infinite-loop-ness? 07:42:45 or does it also unpack the outermost constructor? 07:43:04 it evaluates enough to know that it _has_ an outermost constructor. 07:43:27 "weak head normal form" is the technical term 07:43:43 and for functions, until you get a lambda 07:43:45 -!- Aearnus_ has quit (Quit: Connection closed for inactivity). 07:44:01 I take it this needs compiler magic in order to work, then? 07:44:36 well that's the semantic definition. ghc of course tries to optimize. 07:45:05 I mean, not just optimizatoin 07:45:08 but to even be able to define it 07:45:10 ais523: "evaluating a thunk to head normal form" is like one of ghc's primitive operations. 07:45:18 *+weak 07:45:46 or as they call it, "entering a thunk" 07:46:27 and it's the basic operation performed first by ghc core language's case expression 07:47:29 except that somehow, function types cannot be entered, but can still be seq'ed, i'm not exactly sure how that works. 07:49:12 there's some difference in how ghc handles function types and ADT types, that means unsafeCoercing one to the other can crash things, even if you don't actually _use_ the result as an ADT value 07:49:52 ADT types are the ones with genuine constructors 07:50:52 i suppose this is precisely the difference between types where evaluating has to "unwrap a constructor", which then crashes for values which don't have any. 07:51:03 * oerjan nice grammar 07:52:24 ais523: because normally, _without_ seq, you never evaluate an ADT value except because you want to test / unwrap its constructor, or a function except to apply it. 07:52:51 oerjan: right, which is why I thought extra magic would be needed for seq 07:53:03 hm maybe you are right 07:53:15 i.e. seq isn't something I'd expect you to be able to implement in standard Haskell, except in terms of itself 07:53:30 (or other functions of a similar nature) 07:53:37 also, it has to be general, because you can call seq on a polymorphic value that isn't known to be ADT or function 07:55:18 ais523: yeah. for any specific ADT type, you can implement it by matching on an arbitrary construction, but there's no way to do it for functions. 07:55:29 *constructor 07:55:56 hmm, "case x when _ -> ()" sort-of feels like a one-level unwrap 07:56:09 but I suspect it doesn't wrap at all, and doesn't even marginally evaluate x as a result 07:56:25 it does if that's the core language 07:56:42 but not if it's haskell (and you mean of, not when) 07:57:21 > case undefined of _ -> "hi" 07:57:23 "hi" 07:57:45 oerjan: sorry, working in OCaml in the day job, I find Haskell syntax easy to forget 07:57:59 _ is an "irrefutable pattern", which means it evaluates nothing 07:59:02 variables are also irrefutable, as is unwrapping a _newtype_ constructor (which are entirely at the type-level) 07:59:35 > case undefined of Identity x -> "hi" 07:59:36 "hi" 08:00:09 > case undefined of Just x -> "hi" 08:00:10 "*Exception: Prelude.undefined 08:00:31 @let data A x = A x; newtype B x = B x 08:00:32 Defined. 08:00:41 > case undefined of A x -> "hi" 08:00:42 "*Exception: Prelude.undefined 08:00:45 > case undefined of B x -> "hi" 08:00:46 "hi" 08:01:13 @let data C x = C !x -- data with strict constructor 08:01:13 Defined. 08:01:18 > case undefined of C x -> "hi" 08:01:20 "*Exception: Prelude.undefined 08:02:02 ais523: this behavior for pattern matching is the _only_ semantic difference between a newtype and a datatype with a single constructor with a single strict field 08:02:50 i think possibly GHC even implements them identically internally by default nowadays 08:03:00 (not quite sure about that) 08:03:17 and the only reason those are similar is the existence of strict fields 08:03:33 otherwise you could have a thunk with a known constructor but lazy internals that bottomed out 08:03:57 yeah 08:04:12 > case A undefined of A x -> "hi" 08:04:14 "hi" 08:04:23 > case B undefined of B x -> "hi" 08:04:24 "hi" 08:04:32 > case C undefined of C x -> "hi" 08:04:33 "*Exception: Prelude.undefined 08:04:35 -!- nflix has joined. 08:05:07 and this shows the case where C is the odd one out 08:07:32 hm is there an example where B is the odd one out 08:07:47 no wait 08:07:48 A 08:09:52 oh of course 08:10:07 > case A undefined of !x -> "hi" 08:10:09 "hi" 08:10:13 > case B undefined of !x -> "hi" 08:10:15 "*Exception: Prelude.undefined 08:10:18 > case C undefined of !x -> "hi" 08:10:20 "*Exception: Prelude.undefined 08:11:06 ais523: ^ 08:11:25 oh hmm, how does that strictness on the case work? 08:11:43 note that I'm tired enough that I have to look at your comments twice to see whether they're in italic 08:11:48 basically that's equivalent to A undefined `seq` "hi" 08:12:25 ah, forces a one-level unwrap 08:15:09 with the caveat that a newtype constructor doesn't count as a level 08:15:36 right, it's just a label really 08:15:43 and that unwrapping a data constructor also unwraps its strict fields 08:15:52 can a newtype have more than one constructor? IIRC it can't? 08:15:55 nope 08:16:12 in which case I'd expect a newtype to be implemented identically to whatever it's wrapping 08:16:23 yep, that's precisely the use case 08:16:39 to avoid runtime overhead but still have a distinct type 08:18:24 and making conversion have no overhead the other way is why the special treatment in patterns 08:18:42 *there's the 08:20:19 but even with that, there are still cases where conversion is not without overhead, so ghc recently introduced a Coercible class to handle more 08:20:35 (people were previously using unsafeCoerce) 08:20:59 > coerce [Identity (3 :: Int)] :: [Int] 08:21:00 No instance for (Contravariant []) arising from a use of ‘coerce’ 08:21:00 In the expression: coerce [Identity (3 :: Int)] :: [Int] 08:21:03 argh 08:21:13 of course lambdabot imports a completely different coerce 08:21:30 from one of edwardk's packages, i bet 08:22:07 hmm, OCaml has the (:>) operator that seems to match that particular coerce 08:22:13 that lambdabot just found 08:22:40 anyway, the thing is that [Identity Int] _is_ identically represented to [Int] but without coerce you still need to go through map 08:23:37 (Identity is like the silliest newtype ever, it wraps anything in the trivial Monad) 08:24:03 :t coerce 08:24:04 (Functor f, Contravariant f) => f a -> f b 08:24:22 i'd be a bit surprised if Ocaml has that :P 08:24:47 oh :> is for object subtyping, isn't it? 08:24:54 * oerjan vaguely recalls 08:25:34 which i guess involves variance too 08:26:44 that btw is edwardk's supergeneral way of expressing that f is a functor that ignores its wrapped type, i.e. essentially Const a b = Const a 08:28:01 somehow haskell has ended up with two competing types like that, although there seems to be a movement to get rid of Constant 08:28:13 :k Constant 08:28:14 Not in scope: type constructor or class ‘Constant’ 08:28:14 Perhaps you meant ‘Constraint’ (imported from Lambdabot.Plugin.Haskell.Eval.Trusted) 08:28:19 :k Const 08:28:20 * -> * -> * 08:28:44 :k Control.Functor.Constant.Constant 08:28:45 Not in scope: 08:28:46 type constructor or class ‘Control.Functor.Constant.Constant’ 08:28:53 :k Control.Functor.Trans.Constant.Constant 08:28:54 Not in scope: 08:28:54 type constructor or class ‘Control.Functor.Trans.Constant.Constant’ 08:29:01 eep 08:29:44 * oerjan learns that there exists a Control.Monad.Trans.Conts module 08:29:53 -!- Patashu has joined. 08:30:24 hm ghci was surprisingly helpful with suggesting module names 08:30:32 :k Data.Functor.Constant.Constant 08:30:33 * -> * -> * 08:32:15 i wish it would suggest language options that way too 08:33:21 -!- hppavilion[1] has quit (Ping timeout: 246 seconds). 08:35:17 -!- SopaXorzTaker has joined. 08:35:36 hmph turns out it _does_ if you use ghci from the terminal instead of winghci. *sigh*. 08:36:29 or well, then it has proper tab completion. 08:36:54 Good morning 08:37:15 One of my friends is resitting an exam this morning and I am a little worried 08:38:16 ouch 08:39:52 I am mostly worried because I helped him revise for it 08:41:05 So if he doesn't do well enough it's sort of on me 08:41:08 Is that selfish of me? 08:42:06 well, it's not altruistic, but being selfish sort-of implies it's at the cost of someone else 08:42:27 whereas your friend doing well in the exam doesn't hurt anyone, and indeed is a benefit to the world in general 08:42:32 so I don't think it fits the definition of being selfish either 08:42:38 it's one of those instances where everyone's interest aligns 08:44:59 I think next academic year we're both gonna have to stay a bit more on top of things 08:46:27 hi all 08:46:54 [wiki] [[Chinese]] http://esolangs.org/w/index.php?diff=43720&oldid=38656 * Rdebath * (+70) /* ASCII only */ 08:49:01 hi nflix 08:50:42 * oerjan suspects that guy in GG to actually have _planned_ that agatha would mess up the other guy's plans 08:51:09 oerjan, I'm not sure, if that were the case why'd he offer to bathe her and take her to his chambers? 08:51:25 to prevent suspicion? 08:51:40 Seems risky 08:51:47 i wouldn't be entirely surprised if he's working for the real Master 08:52:15 or even, perhaps, _is_ the real master working through a clank body 08:53:41 Hmm, rereading the last few, you might be righ 08:53:42 t 08:56:07 or perhaps this is a test of her, and they're _both_ in on it. 08:56:18 yay for semi-public wlan... 08:56:29 oerjan, that'd be more surprising 08:56:34 -!- zadock has joined. 08:58:03 Taneb: if you were the master and a very powerful spark of unknown character entered your domain, wouldn't _you_ want to give them a few tests before meeting them openly? 08:58:24 I probably would do it more subtly than kidnapping her 08:58:38 ais523: The theory I've seen (the official one) claims it's to align "Google" better with the official mission statement: "to organize the world’s information and make it universally accessible and useful". 08:58:40 well he _does_ have a devilish sense of humor :P 09:00:43 in any case, i fully expect him to be a master manipulator aware of most plots against him 09:01:07 oerjan, it could be that the true master subtly manipulated this conspiracy into being 09:01:17 ooh 09:02:37 I'd be willing to bet there's a number of conspiracies centred around a "master" of Paris 09:02:58 Which a) lets others take the fall for threats 09:03:07 Taneb: have you read the Foundation series by Asimov? 09:03:07 i've considered the possibility there's no actual master 09:03:08 And b) ties up potential rivals into administrating Paris 09:03:14 ais523, everything but the prequels 09:03:16 it has a truly surprising number of nested conspiracies 09:03:26 ah right, the prequels don't add much to the conspiracy count 09:03:36 just explain the origins of at least two of them 09:03:42 > foldlM 09:03:43 Not in scope: ‘foldlM’ 09:03:43 Perhaps you meant one of these: 09:03:43 ‘F.foldlM’ (imported from Data.Foldable), 09:03:45 @undef 09:03:45 Undefined. 09:03:47 > foldlM 09:03:48 No instance for (Typeable m0) 09:03:48 (maybe you haven't applied enough arguments to a function?) 09:03:48 arising from a use of ‘show_M139423655219615691610827’ 09:04:16 they're more character-driven, really 09:04:24 i've read enough to know of three levels. hm if the trantor empire itself was one it could be four. 09:04:40 oh wait, five. 09:04:47 forgot the solarians 09:05:47 Solarians weren't really a conspiracy as much as a warning of what would be down a particular path 09:06:16 yes, but it's left _very_ open whether they ended up winning 09:06:22 I count five 09:06:39 (um, megaspoiler?) 09:06:52 and yes, I'm trying to avoid spoilers by not talking about specifics 09:07:06 I need to reread them... 09:07:10 I don't count the solarians as part of the "critical path", though 09:07:42 off-topic here (sorry): http://hastebin.com/ugiduroqeb.coffee 09:08:11 nflix: are you a spambot? 09:08:17 looking for ideas for how i can complete that poem.. 09:08:25 hmm, perhaps not 09:08:28 int-e: this might apply to Data.Traversable too btw 09:08:29 u guys r smart 09:08:30 but saying "hi", then not responding 09:08:35 language++ 09:08:38 and then later posting an unsolicited link 09:08:44 oerjan: hmm 09:08:47 that you admit is offtopic 09:08:55 hahaha sori, was observing the chat... 09:08:55 is within the normal bounds for spambot behaviour 09:09:20 like the atmosphere here, but very new to talk anything too technical 09:09:39 hmm 09:09:50 I guess I'm just confused 09:09:56 this channel's sort-of offtopic much of the time 09:10:08 I guess Haskell is almost ontopic but it somehow manages to be too mainstream to really fit 09:10:24 ic 09:10:59 ramp up the type functions 09:11:06 so, any creative ideas ^above 09:11:10 @undef 09:11:11 Undefined. 09:11:24 oerjan: fortunately this is rather easy to test :) 09:12:27 (ghci's :browse qualifies ambgiguous names) 09:13:25 int-e, I did not know that was a thing 09:14:15 Thanks for that 09:19:20 int-e: i'm pretty sure one of the mentioned goals of FTP was "no name clashes in base", although i'm also pretty sure they didn't get that far ((.) and id) 09:19:25 :t id 09:19:26 -!- llue has joined. 09:19:26 -!- llue has quit (Changing host). 09:19:26 -!- llue has joined. 09:19:30 a -> a 09:19:34 :t (.) 09:19:35 (b -> c) -> (a -> b) -> a -> c 09:19:53 i see you have the Prelude versions 09:20:04 yes. 09:20:12 Does C.Category mess up lens? 09:20:32 oh that may be 09:20:37 That's the place I can think of most likely to cause a problem 09:20:37 :t (C..) 09:20:39 forall (k :: BOX) (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k). Category cat => cat b c -> cat a b -> cat a c 09:20:49 That's certainly a type signature 09:21:15 I could go Cale's route and let (.) = fmap by way of a compromise. 09:22:26 -!- lleu has quit (Ping timeout: 240 seconds). 09:22:33 > Just ("Hi", 0) & _Just C.. _1 %. "Ho" 09:22:34 Not in scope: ‘%.’ 09:22:34 Perhaps you meant one of these: 09:22:34 ‘.’ (imported from Data.Function), 09:22:50 int-e, have it be liftA just to confuse everyone 09:23:06 > Just ("Hi", 0) & _Just C.. _1 .~ "Ho" 09:23:07 Just ("Ho",0) 09:23:16 Taneb: well that didn't hurt 09:23:20 or I could just stick to the prelude version 09:23:39 > Just ("Hi", 0) & fmap _Just _1 .~ "Ho" 09:23:40 Just ("Ho",0) 09:23:49 fmap doesn't hurt either 09:24:29 :t liftA 09:24:30 Applicative f => (a -> b) -> f a -> f b 09:25:00 :t uncons 09:25:03 Ambiguous occurrence ‘uncons’ 09:25:03 It could refer to either ‘Control.Lens.uncons’, 09:25:03 imported from ‘Control.Lens’ at /home/lambda/.lambdabot/State/L.hs:51:1-43 09:25:05 hmpf. 09:25:34 (it's also a function in Data.List) 09:25:40 > Just [1,2,3] & _Just C.. traversed %@~ const 09:25:43 Just [0,1,2] 09:27:54 wtf is op... 09:28:27 ♫ when you wanna get up, up on your feet, caffeine ♫ 09:28:50 int-e, "op"? 09:29:03 @undef 09:29:03 Undefined. 09:29:05 :t op 09:29:06 Associativity -> Int -> String -> Expr -> Expr -> Expr 09:29:08 :t Lens.op 09:29:09 Wrapped s => (Unwrapped s -> s) -> s -> Unwrapped s 09:29:31 > Lens.op (getSum) 10 09:29:33 Could not deduce (Unwrapped s0 ~ Sum s) 09:29:33 from the context (Num s, Wrapped s, Unwrapped s ~ Sum s) 09:29:33 bound by the inferred type for ‘e_110’: 09:29:58 > Lens.op Sum (Sum 10) 09:29:59 10 09:30:58 :t Lens.op Sum (Sum 10) 09:30:59 Num a => Unwrapped (Sum a) 09:31:08 > Lens.op Sum (Sum 10) 09:31:10 10 09:31:13 > Lens.op Sum (Sum 10) :: Int 09:31:16 10 09:31:32 > reduction (1+2+3) 09:31:34 [1 + 2 + 3,3 + 3,6] 09:31:37 oh wait duh 09:31:39 fancy. 09:31:49 type Unwrapped (Sum a) = a 09:32:57 int-e: oh the other op is the one used for building Expr operators 09:33:26 now what is Associativity... 09:33:38 yeah, I'm in the process of hiding it :P 09:33:43 :k Associativity 09:33:46 * 09:33:47 oerjan, associativity means that (a o b) o c = a o (b o c) hth 09:33:53 Taneb: i mean the type 09:34:32 :t reduction 09:34:32 When I spent a significant portion of yesterday helping someone with a ring theory exam, certain things get in my head 09:34:33 Expr -> [Expr] 09:34:58 @undef 09:34:58 Undefined. 09:35:00 :t op 09:35:02 Not in scope: ‘op’ 09:35:03 Perhaps you meant one of these: 09:35:03 ‘Control.Lens.op’ (imported from Control.Lens), 09:35:13 :t Debug.SimpleReflect.op 09:35:14 Debug.SimpleReflect.Associativity -> Int -> String -> Expr -> Expr -> Expr 09:35:34 @undef 09:35:34 Undefined. 09:35:35 -!- zadock has quit (Quit: Leaving). 09:37:17 :t let (£) = op InfixL 3 in reduction (1 £ 2 £ 3) 09:37:18 Not in scope: data constructor ‘InfixL’ 09:37:18 Perhaps you meant one of these: 09:37:19 ‘Debug.SimpleReflect.InfixL’ (imported from Debug.SimpleReflect), 09:37:21 > let (£) = op InfixL 3 in reduction (1 £ 2 £ 3) 09:37:27 Not in scope: data constructor ‘InfixL’ 09:37:27 Perhaps you meant one of these: 09:37:27 ‘Debug.SimpleReflect.InfixL’ (imported from Debug.SimpleReflect), 09:37:33 *sigh* 09:37:40 > let (£) = op Debug.SimpleReflect.InfixL 3 in reduction (1 £ 2 £ 3) 09:37:43 Couldn't match expected type ‘Unwrapped s’ 09:37:43 with actual type ‘Unwrapped s0’ 09:37:43 NB: ‘Unwrapped’ is a type function, and may not be injective 09:38:04 WHERE IS UNWRAPPED GETTING INTO THAT 09:38:14 :t op 09:38:15 Wrapped s => (Unwrapped s -> s) -> s -> Unwrapped s 09:38:18 try to keep up :P 09:38:30 > let (£) = Debug.SimpleReflect.op Debug.SimpleReflect.InfixL 3 in reduction (1 £ 2 £ 3) 09:38:31 Couldn't match type ‘Expr -> Expr’ with ‘[Char]’ 09:38:31 Expected type: String 09:38:32 Actual type: Expr -> Expr 09:38:49 > let (£) = Debug.SimpleReflect.op Debug.SimpleReflect.InfixL 3 "£" in reduction (1 £ 2 £ 3) 09:38:51 [1£2£3] 09:38:57 :) ish 09:39:31 Sorry, I need more sleep 09:46:37 > ["hi","there"] & traversed <<%~ length 09:46:39 ("hithere",[2,5]) 09:47:00 hm not what i was aiming for 09:47:15 What were you aiming for 09:47:30 [("hi",2),("there",5)] 09:48:17 > ["hi", "there"] & traverse %~ id <<%~ length 09:48:18 [("hi",2),("there",5)] 09:48:28 Not very good, I'll see if I can come up with something better 09:48:54 i was sort of hoping that i'd discovered <<%~ to be more powerful than i thought 09:50:39 also, i noticed a discussion somewhere suggesting that <%~ and <<%~ need non-operator names 09:50:50 (but none actually suggested) 09:52:34 <<%~ is a worse name than some of the ones in Feather 09:52:45 there are names in Feather? 09:53:18 oerjan, there exists a name in Feather, n, such that n is a better name than "<<%~" 09:53:37 fancy 09:53:48 :t (<<%@~) -- hth 09:53:49 Optical (Indexed i) q ((,) a) s t a b -> (i -> a -> b) -> q s (a, t) 09:54:01 -!- Phantom_Hoover has joined. 09:54:02 -!- Phantom__Hoover has joined. 09:54:07 -!- Phantom__Hoover has quit (Client Quit). 09:54:15 :t (<<~) 09:54:16 Not in scope: ‘<<~’ 09:54:16 Perhaps you meant one of these: 09:54:16 ‘<<<>~’ (imported from Control.Lens), 09:54:24 (<<~) :: Optical' (->) q ((,) FilePath) s FilePath -> FilePath -> q s (FilePath, s) 09:56:43 ais523: the thing is lens operators have morphological grammar, and despite Taneb's et al's best efforts it _still_ doesn't define every possible combination. 09:57:17 perhaps you need some sort of metaoperator that takes operator components as arguments? 09:57:18 I was doing well, then someone added indexed variants :( 09:57:41 oerjan: Feather operators are mostly combinations of punctuation marks following this sort of operator component pattern 09:57:48 fortunately for my sanity, I no longer remember most of them 09:57:52 Taneb: i see (<<%=) now exists, i don't recall that from before 09:58:04 oerjan, that has existed for a long time 09:58:08 ,o0(Your Mind turns into a Pretzel) 09:58:11 Before I went on my operator rampage 09:58:12 :t (<<@%=) 09:58:13 Not in scope: ‘<<@%=’ 09:58:13 Perhaps you meant one of these: 09:58:13 ‘<<%=’ (imported from Control.Lens), 09:58:14 there was a symbol that was reasonably consistently used for "unboxed", it may even have been # 09:58:22 in which case I claim that Haskell is stealing ideas from me 09:58:46 . o O ( import qualified Control.Lens as AbandonAllSanityYeWhoEnterHere ) 09:59:06 ais523: ooh 09:59:10 oerjan, now I'm gonna have to add <<@= :( 09:59:24 Or would it be <<@= ? 10:00:01 oerjan: although in Feather, boxing something makes gain an identity, once something's boxed you can retroactively assign to the box contents 10:00:18 whereas if something's unboxed you can't necessarily retroactively assign to it at all, and if you can, it's only because you can somehow find a box inside it 10:00:18 Taneb: do indices makes sense for filepaths 10:00:32 I have no idea 10:01:12 I went on my operator rampage because I needed <<+= 10:01:20 actually, I guess the Primary Rule of Feather is this: retroactively assigning to a box changes the value that was placed inside the box at the time of its creation, and all actions since are recalculated 10:01:45 ais523, does feather have first class functions 10:02:05 Taneb: yes, also closures 10:02:29 I can see why this'd drive someone insane 10:02:38 this is at least partly because my latest plans for producing a Feather interpreter were based on continuously morphing a lambda-calculus-plus-call/cc language into it 10:03:16 and then I sort-of got stuck because my plans required an eigenratio of 1 10:03:34 (cheating is allowed) 10:03:42 eventually you can do it via an eval operator that's defined in terms of itself 10:03:45 i have a combinator interpreter with an eigenration 1 hth 10:03:48 but the in-between bits are rather harder to figure out 10:03:57 *-n 10:03:58 oerjan: actually it might help, I didn't think of using combinators 10:04:03 but please 10:04:07 now is not the time to think of Feather :-D 10:04:35 Feather is outside time, now is as good as any hth 10:04:50 oerjan, hence no time is the time to think of Feather 10:06:49 oerjan: well, a Feather interpretation does actually have a begin point in time 10:06:54 just from outside it, you can't see that point 10:07:04 because it retroactively pushes itself further back into history if you try to find out where it is 10:07:08 *from inside it 10:08:30 you need a heap with revision control 10:09:39 oerjan: for your eigenratio-1 interp? or for feather generally? 10:09:47 for feather 10:09:56 it does have the problem that retroactive modifications tend to form infinite loops without some sort of mitigation 10:10:02 my interp was for unlambda, it only needs refcounting 10:10:10 (unlambda itself) 10:10:28 wait, this was an unlambda self-interp, that just happened to be eigenratio 1 on top of that? 10:10:34 yep 10:10:36 wow 10:10:54 unlambda's actually not a terrible language to implement feather in 10:11:05 it has most of the required features, its main issue is that it's ridiculous 10:11:08 i made it way back, and then when that eigenratio guy started blogging i thought of it, and figured it disproved his hypothesis 10:12:20 my plans for eigenratio 1 mostly involved the sort of evaluation orders that screw up weak normalization proofs 10:21:23 -!- boily has joined. 10:23:07 bholliey 10:24:21 -!- SopaXorzTaker has quit (Remote host closed the connection). 10:42:02 hellørjan! 10:45:19 apparently, scow is oerjanspeak. I thought it was shachafspeech. 10:46:53 so did i 10:47:22 i think this acknowledgement is scow 10:59:53 `? scow 10:59:54 scow? ¯\(°​_o)/¯ 11:00:10 weird. 11:00:30 darn it's a quote 11:07:10 -!- oerjan has quit (Quit: Latér). 11:11:09 @metar CYUL 11:11:10 CYUL 111100Z 13010KT 3SM -RA BKN008 BKN030 OVC060 18/18 A2976 RMK SF5SC2SC1 SLP077 DENSITY ALT 700FT 11:11:25 18/18. scow scow scow. 11:13:26 -!- J_A_Work has joined. 11:13:44 -!- boily has quit (Quit: SEMIORGANIC CHICKEN). 11:26:34 @metar EGLL 11:26:34 EGLL 111120Z VRB03KT 9999 FEW032 20/11 Q1021 NOSIG 11:27:42 \leave 11:27:46 -!- nflix has left. 11:30:43 -!- TieSoul has joined. 11:31:40 -!- ais523 has quit (Ping timeout: 245 seconds). 11:54:12 "failedfailed to create file", says a tool. 11:54:20 I guess it just means it failed twice as badly. 11:55:08 -!- llue has quit (Quit: That's what she said). 11:55:26 -!- lleu has joined. 12:14:17 -!- J_A_Work has quit (Quit: J_A_Work). 12:20:45 -!- J_A_Work has joined. 12:22:35 -!- villasukka has quit (Ping timeout: 258 seconds). 12:23:03 -!- villasukka has joined. 12:23:03 -!- atehwa has quit (Ping timeout: 255 seconds). 12:23:13 Maybe the file creation API returned two failures. 12:23:43 -!- atehwa has joined. 12:24:50 (Is there any APIs that generally returns multiple failures?) 12:24:57 s/Is/I/ 12:25:10 -!- danofthedeep has quit (Quit: Textual IRC Client: www.textualapp.com). 12:25:23 Uh, that replacement doesn't work 12:27:30 Hm, X.509 validation libraries (are supposed to) return multiple failures 12:28:57 -!- Patashu has quit (Ping timeout: 246 seconds). 12:39:00 If every category has a skeleton then the axiom of choice 12:52:28 -!- J_A_Work has quit (Quit: J_A_Work). 13:05:00 -!- SopaXorzTaker has joined. 13:29:11 -!- augur has quit (Ping timeout: 252 seconds). 13:31:23 -!- augur has joined. 13:51:52 I disagree with John Oliver that "What's twitter?" isn't a valid question . 13:53:58 -!- `^_^v has joined. 14:01:22 and I like how he makes fun of a wheather guy not knowing what "transgender" means 14:01:29 and then he explains sexual orientation wrong 14:01:54 looks like he can't keep up himself. 14:09:12 -!- TieSoul_ has joined. 14:13:10 -!- TieSoul has quit (Ping timeout: 260 seconds). 14:13:50 -!- TieSoul_ has changed nick to TieSoul. 14:36:50 multi-exceptions... 14:36:55 new Java Feature :) 14:37:08 throw new RuntimeException() | new IOException(); 14:57:41 -!- GeekDude has joined. 15:01:21 -!- J_A_Work has joined. 15:13:20 -!- ptia has joined. 15:14:06 -!- SopaXorzTaker has quit (Remote host closed the connection). 15:14:27 -!- ptia has quit (Client Quit). 15:16:10 -!- SopaXorzTaker has joined. 15:53:58 -!- MDream has changed nick to MDude. 15:57:08 -!- tromp has quit (Ping timeout: 272 seconds). 15:59:55 -!- SopaXorzTaker has quit (Read error: Connection reset by peer). 16:07:00 -!- _256Q has joined. 16:07:00 -!- _256Q has quit (Changing host). 16:07:00 -!- _256Q has joined. 16:08:59 -!- Wright has joined. 16:18:04 -!- J_A_Work has quit (Ping timeout: 244 seconds). 16:22:29 -!- oerjan has joined. 16:24:31 -!- atrapado has joined. 16:25:00 @ask boily 18/18. scow scow scow. <-- does that mean you're actually floating 16:25:00 Consider it noted. 16:29:37 -!- J_A_Work has joined. 16:30:35 new language idea: exactly like z80 assembly but with only the a and r registers 16:31:21 @ar 16:31:21 Yeh scurvy dog... 16:32:43 the r register is for dram refresh and increments every instruction fetch 16:33:00 @metar ENVA 16:33:01 ENVA 111620Z 21007KT 180V260 9999 TS VCSH BKN030CB 23/11 Q1008 TEMPO 26025G35KT 4000 TSRAGR BKN012CB RMK WIND 670FT 22010KT 16:33:22 bye bye, nice weather 16:33:42 always refresh with a dram, ye hear 16:36:19 it pours down, but _still_ the sun manages to shine too strongly in here 16:36:47 -!- PinealGlandOptic has quit (Quit: leaving). 16:44:13 Just started to rain here. 16:44:15 @metar EGLL 16:44:15 EGLL 111620Z 30004KT 260V350 9999 -RA FEW026 20/12 Q1021 NOSIG 16:44:37 All hail the sun god, -RA, -RA, -RA. 16:44:45 Supposedly it'll rain more later. 16:45:21 Your TSRAGR sounds quite impressive. 16:45:35 Thunderstorms, rain, hail. Proper summer weather. 16:50:41 i haven't noticed any thunder or hail yet 16:51:05 and the really bad weather forecast was only for 1 hour 16:51:49 now it says sunny, but 5-6 degrees colder 16:52:16 hm make that 10 compared to the metar 16:55:16 -!- J_A_Work has quit (Ping timeout: 244 seconds). 17:07:01 -!- J_A_Work has joined. 17:07:11 -!- rg_ has joined. 17:15:43 -!- Frooxius has quit (Quit: *bubbles away*). 17:16:55 -!- mauris has joined. 17:59:09 -!- mihow has joined. 18:15:18 -!- Tod-Autojoined has joined. 18:15:57 -!- TodPunk has quit (Read error: Connection reset by peer). 18:18:42 -!- nisstyre has quit (Read error: Connection reset by peer). 18:43:51 -!- Phantom_Hoover has quit (Ping timeout: 256 seconds). 19:07:22 -!- J_A_Work has quit (Quit: J_A_Work). 19:16:50 -!- Phantom_Hoover has joined. 19:19:28 -!- GeekDude has quit (Quit: {{{}}{{{}}{{}}}{{}}} (www.adiirc.com)). 19:38:59 -!- TieSoul has quit (Remote host closed the connection). 20:04:20 -!- bb010g has joined. 20:04:21 -!- mauris has quit (Read error: Connection timed out). 20:05:11 -!- mauris has joined. 20:09:32 -!- mauris has quit (Ping timeout: 244 seconds). 20:14:19 -!- mauris has joined. 20:37:30 -!- getpwnam has joined. 21:04:39 -!- Patashu has joined. 21:08:31 -!- atrapado has quit (Quit: Leaving). 21:13:41 -!- Slereah has changed nick to Slereah_. 21:14:43 -!- x10A94 has quit (Read error: Connection reset by peer). 21:18:50 -!- shikhin has quit (Ping timeout: 240 seconds). 21:25:06 -!- rg_ has quit (Quit: My Mac has gone to sleep. ZZZzzz…). 21:27:59 -!- rg_ has joined. 21:43:21 -!- rg_ has quit (Quit: My Mac has gone to sleep. ZZZzzz…). 21:44:03 -!- Patashu has quit (Ping timeout: 250 seconds). 21:44:39 -!- shikhin has joined. 21:49:15 -!- `^_^v has quit (Ping timeout: 244 seconds). 21:54:55 -!- rg_ has joined. 22:00:48 -!- oerjan has quit (Quit: Nite). 22:02:10 -!- augur has quit (Ping timeout: 240 seconds). 22:04:33 -!- augur has joined. 22:05:16 -!- FireFly has quit (Ping timeout: 244 seconds). 22:16:13 -!- FireFly has joined. 22:16:25 -!- augur has quit (Quit: Leaving...). 22:24:45 -!- hppavilion[1] has joined. 22:31:54 -!- augur has joined. 22:52:19 -!- idris-bot has quit (Ping timeout: 260 seconds). 22:53:05 -!- bb010g has quit (Quit: Connection closed for inactivity). 22:58:27 @metar CYVR 22:58:28 CYVR 112200Z 31016KT 30SM FEW250 23/17 A2992 RMK CI1 HZ CONTRAILS SLP131 DENSITY ALT 900FT 22:59:43 huh, CONTRAILS. didn't know they had that 23:05:12 -!- hppavilion[1] has quit (Ping timeout: 246 seconds). 23:08:32 -!- boily has joined. 23:11:54 -!- sunnymilk has quit (Ping timeout: 250 seconds). 23:12:17 -!- sunnymilk has joined. 23:16:03 -!- rg_ has quit (Read error: Connection reset by peer). 23:16:53 -!- rg_ has joined. 23:17:54 It's all good until it says CHEMTRAILS. 23:21:33 fizziello! 23:21:59 I appreciate well-calligraphied chemtrails. 23:22:06 @massages-loud 23:22:06 oerjan asked 6h 57m 5s ago: 18/18. scow scow scow. <-- does that mean you're actually floating 23:22:19 @ask oerjan huh? 23:22:19 Consider it noted. 23:22:43 @metar CYUL 23:22:44 CYUL 112300Z 01007KT 15SM FEW015 SCT120 BKN240 21/18 A2970 RMK CU1AC4CI1 CU TR SLP055 DENSITY ALT 1000FT 23:22:58 yé, humidity is slowly decreasing... 23:23:19 coppro: chelloppro! was it raining like fungot today? 23:23:19 boily: so the takes a monad and a getvalue function, but a real cooler would be one 23:31:37 @tell oerjan ah. floating. not quite, but a floatation device of some sort wouldn't have been completely useless. 23:31:37 Consider it noted. 23:31:49 -!- mihow_ has joined. 23:32:55 -!- mihow has quit (Ping timeout: 245 seconds). 23:32:56 -!- mihow_ has changed nick to mihow. 23:35:50 -!- mihow has quit (Client Quit). 23:38:59 -!- tromp has joined. 23:50:24 -!- Slereah_ has quit (Ping timeout: 246 seconds).