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:46:35 <oren> I just spent 20 minutes searching for the one letter in my font that I accidentally made 1 pixel too high
00:47:08 <oren> 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 <oren> hello danofthedeep
01:25:42 <HackEgo> 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:29 <HackEgo> tmyk/tmyk the more overfilled your brain gets.
01:44:39 <HackEgo> 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 <oren> 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:59:08 <hppavilion[1]_> I think I left myself logged into IRC at work and it didn't log me off
03:00:45 <ais523> hppavilion[1]_: do you have your nick registered?
03:00:59 <ais523> one of the main reasons to register your nick is to log off other remote copies of yourself,
03:01:22 <ais523> hppavilion[1]_: /msg nickserv ghost hppavilion[1] password
03:01:28 <ais523> you don't need the password if you're logged in right now
03:01:40 <ais523> (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 <hppavilion[1]_> ais523: Yes, I figured out that I should do that when identifying a while ago
03:02:29 <ais523> now that nickserv's disconnected your ghost
03:02:37 <ais523> you can just /nick to take over the name you want
03:06:05 -!- hppavilion[1]_ has changed nick to hppavilion[1].
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:16:03 <ais523> ofc, if you own a company, you can sell it, and you can also sell it to yourself
03:16:16 <ais523> so there's nothing legally that weird about it
03:18:04 <ais523> the theory I've seen is that they want to narrow what the word "google" refers to
03:18:19 <ais523> although whether it's going to be search or advertising (or both but nothing else) is rather up in the air
03:18:32 <ais523> IMO it'd be a terrible move for them to actually rename the search engine, but maybe they will?
03:21:03 <ais523> it's hard to see how they would
03:21:17 <ais523> although anecdotal evidence is that the general public don't really understand the distinction between a browser and a search engine
03:21:28 <ais523> (and URL bars that pipe to a search engine are not helping)
03:21:42 <coppro> I thought it was their blog post, but apparently not
03:22:02 <coppro> ais523: anecdotal evidence suggests there are people who don't understand the distinction between a browser and the internet
03:29:20 <Aearnus_> it seems like they're also trying to bring attention to their other subsidaries
03:30:01 <Aearnus_> like http://www.calicolabs.com/
03:32:13 -!- variable has quit (Quit: 1 found in /dev/zero).
03:33:24 <MDream> 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 <MDude> 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 <MDude> 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 <coppro> when did google neuter their calculator features :(
03:44:01 <ais523> possibly related to wolfram|alpha?
03:44:12 <\oren\> use dc command for calculator!
03:44:33 <coppro> I used to use it for dimensional calculations
03:44:39 <coppro> 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:10 <HackEgo> /home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: scow: not found
03:51:24 <coppro> \oren\: not ony can you do that with C++ custom literals
04:07:43 <izabera> https://github.com/ainfosec/crema/ why is this not turing complete?
04:09:23 <coppro> izabera: my guess is recursion isn't allowed
04:10:06 -!- Wright_ has quit (Read error: Connection reset by peer).
04:10:06 <izabera> there's no mention of such restriction
04:10:21 -!- Wright has joined.
04:10:53 <coppro> but if you disallow (mutual) recursion, it's sub-TC
04:11:02 <coppro> 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: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:39 -!- zadock has joined.
05:30:46 <coppro> \oren\: the ascii letter?
05:32:39 <HackEgo> [U+2152 VULGAR FRACTION ONE TENTH]
05:33:14 <\oren\> it is supposed to be like -
05:36:42 <\oren\> ͰͱͲͳ are also missing from GNU unifont for unknowable reasons
05:39:56 <\oren\> Is this the result of newer unicode standards adding those characters?
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:49:38 <coppro> does using the list monad make me terrible?
06:51:27 -!- zadock has quit (Quit: Leaving).
06:52:25 <ais523> coppro: depends on how you use it
06:52:29 <ais523> if you use it for its intended purpose, no
06:56:14 <Sgeo> 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 <ais523> Perl 5 has a defined/undefined dimension too
06:56:59 <Sgeo> And a `with` statement which is like `if` except for definedness
06:57:37 <Sgeo> ais523, how many undefined values are there in Perl 5? Perl 6 types and Failures are considered undefined
06:58:06 <Sgeo> http://design.perl6.org/S04.html#The_with_and_without_statements
06:58:09 -!- oerjan has joined.
06:58:53 <ais523> Sgeo: ah right, I can only think of one, arguably two depending on how you look at it
06:58:58 <ais523> read-only undef and read-write undef
06:59:10 <ais523> only read-only undef is more of a container than a value
06:59:31 <coppro> and a computation a -> m b
06:59:55 <Sgeo> 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 <coppro> 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 <coppro> ah mfromMaybe is close enough
07:22:58 <oerjan> coppro: asum . traverse f
07:24:24 <coppro> oerjan: figured it out
07:24:40 <oerjan> mfromMaybe isn't standard, is it
07:25:05 <lambdabot> (Monad m, Foldable t) => (a -> m b) -> t a -> m ()
07:25:13 <oerjan> it doesn't give results
07:25:48 <coppro> in this case I don't care about results, but yes
07:26:21 <coppro> some sort of fold would do if I did
07:28:05 <lambdabot> (Monad m, Foldable t) => (b -> a -> m b) -> b -> t a -> m ()
07:28:23 <oerjan> ais523: anything with _ at the end will generally discard results
07:28:27 <lambdabot> (Monad m, Traversable t) => (a -> m b) -> t a -> m (t b)
07:28:48 <ais523> oerjan: ah right, I was confusing it with the fold1 and the like
07:32:08 <ais523> come to think of it, how do you generally disregard results in Haskell
07:32:09 <Sgeo> 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 <ais523> the obvious \x -> () doesn't work because then x isn't evaluated
07:32:32 <ais523> can you lift it somehow?
07:32:48 <ais523> Sgeo: well Perl 5 has separate defined and truthy checks, although undef is falsey
07:33:03 <Sgeo> \a -> a; return ()
07:33:14 <oerjan> :t \f -> asum . fmap f
07:33:15 <lambdabot> ‘F.asum’ (imported from Data.Foldable),
07:33:25 <oerjan> :t \f -> F.asum . fmap f
07:33:26 <lambdabot> (Functor t, Foldable t, Alternative f) => (a1 -> f a) -> t a1 -> f a
07:34:09 <oerjan> int-e: i'm not sure Data.Foldable needs to be imported qualified any longer
07:34:33 <oerjan> @tell int-e for lambdabot, i'm not sure Data.Foldable needs to be imported qualified any longer
07:34:52 <oerjan> everything that name clashed has been unified
07:36:43 <ais523> now I'm wondering if that has a simple definition
07:37:04 <oerjan> that's for inside Monads and the like
07:37:10 <lambdabot> Source not found. You type like i drive.
07:37:24 <HackEgo> lambdabot is a fully functional bot. just don't ask about @src.
07:38:03 <oerjan> ais523: nowadays it'd be void x = () <* a
07:38:09 <lambdabot> Applicative f => f a -> f b -> f a
07:38:52 <oerjan> which also is a way of discarding a result, replacing it by whatever
07:41:08 <oerjan> ais523: also, there's seq
07:41:23 <oerjan> it discards, but evaluates first
07:41:59 <myname> seq and performUnsafeIO are one hell of a combo
07:42:28 <ais523> how many layers does a get unpacked?
07:42:39 <ais523> I think it's just checked for not-infinite-loop-ness?
07:42:45 <ais523> or does it also unpack the outermost constructor?
07:43:04 <oerjan> it evaluates enough to know that it _has_ an outermost constructor.
07:43:27 <oerjan> "weak head normal form" is the technical term
07:43:43 <oerjan> and for functions, until you get a lambda
07:43:45 -!- Aearnus_ has quit (Quit: Connection closed for inactivity).
07:44:01 <ais523> I take it this needs compiler magic in order to work, then?
07:44:36 <oerjan> well that's the semantic definition. ghc of course tries to optimize.
07:45:05 <ais523> I mean, not just optimizatoin
07:45:08 <ais523> but to even be able to define it
07:45:10 <oerjan> ais523: "evaluating a thunk to head normal form" is like one of ghc's primitive operations.
07:45:46 <oerjan> or as they call it, "entering a thunk"
07:46:27 <oerjan> and it's the basic operation performed first by ghc core language's case expression
07:47:29 <oerjan> 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 <oerjan> 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 <oerjan> ADT types are the ones with genuine constructors
07:50:52 <oerjan> 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:52:24 <oerjan> 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 <ais523> oerjan: right, which is why I thought extra magic would be needed for seq
07:53:03 <oerjan> hm maybe you are right
07:53:15 <ais523> 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 <ais523> (or other functions of a similar nature)
07:53:37 <oerjan> 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 <oerjan> 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:56 <ais523> hmm, "case x when _ -> ()" sort-of feels like a one-level unwrap
07:56:09 <ais523> but I suspect it doesn't wrap at all, and doesn't even marginally evaluate x as a result
07:56:25 <oerjan> it does if that's the core language
07:56:42 <oerjan> but not if it's haskell (and you mean of, not when)
07:57:21 <oerjan> > case undefined of _ -> "hi"
07:57:45 <ais523> oerjan: sorry, working in OCaml in the day job, I find Haskell syntax easy to forget
07:57:59 <oerjan> _ is an "irrefutable pattern", which means it evaluates nothing
07:59:02 <oerjan> variables are also irrefutable, as is unwrapping a _newtype_ constructor (which are entirely at the type-level)
07:59:35 <oerjan> > case undefined of Identity x -> "hi"
08:00:09 <oerjan> > case undefined of Just x -> "hi"
08:00:31 <oerjan> @let data A x = A x; newtype B x = B x
08:00:41 <oerjan> > case undefined of A x -> "hi"
08:00:45 <oerjan> > case undefined of B x -> "hi"
08:01:13 <oerjan> @let data C x = C !x -- data with strict constructor
08:01:18 <oerjan> > case undefined of C x -> "hi"
08:02:02 <oerjan> 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 <oerjan> i think possibly GHC even implements them identically internally by default nowadays
08:03:00 <oerjan> (not quite sure about that)
08:03:17 <ais523> and the only reason those are similar is the existence of strict fields
08:03:33 <ais523> otherwise you could have a thunk with a known constructor but lazy internals that bottomed out
08:04:12 <oerjan> > case A undefined of A x -> "hi"
08:04:23 <oerjan> > case B undefined of B x -> "hi"
08:04:32 <oerjan> > case C undefined of C x -> "hi"
08:04:35 -!- nflix has joined.
08:05:07 <oerjan> and this shows the case where C is the odd one out
08:07:32 <oerjan> hm is there an example where B is the odd one out
08:10:07 <oerjan> > case A undefined of !x -> "hi"
08:10:13 <oerjan> > case B undefined of !x -> "hi"
08:10:18 <oerjan> > case C undefined of !x -> "hi"
08:11:25 <ais523> oh hmm, how does that strictness on the case work?
08:11:43 <ais523> 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 <oerjan> basically that's equivalent to A undefined `seq` "hi"
08:12:25 <ais523> ah, forces a one-level unwrap
08:15:09 <oerjan> with the caveat that a newtype constructor doesn't count as a level
08:15:36 <ais523> right, it's just a label really
08:15:43 <oerjan> and that unwrapping a data constructor also unwraps its strict fields
08:15:52 <ais523> can a newtype have more than one constructor? IIRC it can't?
08:16:12 <ais523> in which case I'd expect a newtype to be implemented identically to whatever it's wrapping
08:16:23 <oerjan> yep, that's precisely the use case
08:16:39 <oerjan> to avoid runtime overhead but still have a distinct type
08:18:24 <oerjan> and making conversion have no overhead the other way is why the special treatment in patterns
08:20:19 <oerjan> 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 <oerjan> (people were previously using unsafeCoerce)
08:20:59 <oerjan> > coerce [Identity (3 :: Int)] :: [Int]
08:21:00 <lambdabot> No instance for (Contravariant []) arising from a use of ‘coerce’
08:21:00 <lambdabot> In the expression: coerce [Identity (3 :: Int)] :: [Int]
08:21:13 <oerjan> of course lambdabot imports a completely different coerce
08:21:30 <oerjan> from one of edwardk's packages, i bet
08:22:07 <ais523> hmm, OCaml has the (:>) operator that seems to match that particular coerce
08:22:13 <ais523> that lambdabot just found
08:22:40 <oerjan> 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 <oerjan> (Identity is like the silliest newtype ever, it wraps anything in the trivial Monad)
08:24:04 <lambdabot> (Functor f, Contravariant f) => f a -> f b
08:24:22 <oerjan> i'd be a bit surprised if Ocaml has that :P
08:24:47 <oerjan> oh :> is for object subtyping, isn't it?
08:25:34 <oerjan> which i guess involves variance too
08:26:44 <oerjan> 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 <oerjan> 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:14 <lambdabot> Not in scope: type constructor or class ‘Constant’
08:28:14 <lambdabot> Perhaps you meant ‘Constraint’ (imported from Lambdabot.Plugin.Haskell.Eval.Trusted)
08:28:44 <oerjan> :k Control.Functor.Constant.Constant
08:28:46 <lambdabot> type constructor or class ‘Control.Functor.Constant.Constant’
08:28:53 <oerjan> :k Control.Functor.Trans.Constant.Constant
08:28:54 <lambdabot> type constructor or class ‘Control.Functor.Trans.Constant.Constant’
08:29:44 * oerjan learns that there exists a Control.Monad.Trans.Conts module
08:29:53 -!- Patashu has joined.
08:30:24 <oerjan> hm ghci was surprisingly helpful with suggesting module names
08:30:32 <oerjan> :k Data.Functor.Constant.Constant
08:32:15 <oerjan> 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 <oerjan> hmph turns out it _does_ if you use ghci from the terminal instead of winghci. *sigh*.
08:36:29 <oerjan> or well, then it has proper tab completion.
08:37:15 <Taneb> One of my friends is resitting an exam this morning and I am a little worried
08:39:52 <Taneb> I am mostly worried because I helped him revise for it
08:41:05 <Taneb> So if he doesn't do well enough it's sort of on me
08:41:08 <Taneb> Is that selfish of me?
08:42:06 <ais523> well, it's not altruistic, but being selfish sort-of implies it's at the cost of someone else
08:42:27 <ais523> 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 <ais523> so I don't think it fits the definition of being selfish either
08:42:38 <ais523> it's one of those instances where everyone's interest aligns
08:44:59 <Taneb> I think next academic year we're both gonna have to stay a bit more on top of things
08:46:54 <HackEgo> [wiki] [[Chinese]] http://esolangs.org/w/index.php?diff=43720&oldid=38656 * Rdebath * (+70) /* ASCII only */
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 <Taneb> 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:47 <oerjan> i wouldn't be entirely surprised if he's working for the real Master
08:52:15 <oerjan> or even, perhaps, _is_ the real master working through a clank body
08:53:41 <Taneb> Hmm, rereading the last few, you might be righ
08:56:07 <oerjan> or perhaps this is a test of her, and they're _both_ in on it.
08:56:18 <int-e> yay for semi-public wlan...
08:56:29 <Taneb> oerjan, that'd be more surprising
08:56:34 -!- zadock has joined.
08:58:03 <oerjan> 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 <Taneb> I probably would do it more subtly than kidnapping her
08:58:38 <fizzie> 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 <oerjan> well he _does_ have a devilish sense of humor :P
09:00:43 <oerjan> in any case, i fully expect him to be a master manipulator aware of most plots against him
09:01:07 <Taneb> oerjan, it could be that the true master subtly manipulated this conspiracy into being
09:02:37 <Taneb> I'd be willing to bet there's a number of conspiracies centred around a "master" of Paris
09:02:58 <Taneb> Which a) lets others take the fall for threats
09:03:07 <ais523> Taneb: have you read the Foundation series by Asimov?
09:03:07 <oerjan> i've considered the possibility there's no actual master
09:03:08 <Taneb> And b) ties up potential rivals into administrating Paris
09:03:14 <Taneb> ais523, everything but the prequels
09:03:16 <ais523> it has a truly surprising number of nested conspiracies
09:03:26 <ais523> ah right, the prequels don't add much to the conspiracy count
09:03:36 <ais523> just explain the origins of at least two of them
09:03:43 <lambdabot> ‘F.foldlM’ (imported from Data.Foldable),
09:03:48 <lambdabot> (maybe you haven't applied enough arguments to a function?)
09:03:48 <lambdabot> arising from a use of ‘show_M139423655219615691610827’
09:04:16 <ais523> they're more character-driven, really
09:04:24 <oerjan> i've read enough to know of three levels. hm if the trantor empire itself was one it could be four.
09:05:47 <Taneb> Solarians weren't really a conspiracy as much as a warning of what would be down a particular path
09:06:16 <oerjan> yes, but it's left _very_ open whether they ended up winning
09:06:52 <ais523> and yes, I'm trying to avoid spoilers by not talking about specifics
09:07:06 <Taneb> I need to reread them...
09:07:10 <ais523> I don't count the solarians as part of the "critical path", though
09:07:42 <nflix> off-topic here (sorry): http://hastebin.com/ugiduroqeb.coffee
09:08:11 <ais523> nflix: are you a spambot?
09:08:17 <nflix> looking for ideas for how i can complete that poem..
09:08:28 <oerjan> int-e: this might apply to Data.Traversable too btw
09:08:30 <ais523> but saying "hi", then not responding
09:08:38 <ais523> and then later posting an unsolicited link
09:08:47 <ais523> that you admit is offtopic
09:08:55 <nflix> hahaha sori, was observing the chat...
09:08:55 <ais523> is within the normal bounds for spambot behaviour
09:09:20 <nflix> like the atmosphere here, but very new to talk anything too technical
09:09:50 <ais523> I guess I'm just confused
09:09:56 <ais523> this channel's sort-of offtopic much of the time
09:10:08 <ais523> I guess Haskell is almost ontopic but it somehow manages to be too mainstream to really fit
09:10:59 <oerjan> ramp up the type functions
09:11:06 <nflix> so, any creative ideas ^above
09:11:24 <int-e> oerjan: fortunately this is rather easy to test :)
09:12:27 <int-e> (ghci's :browse qualifies ambgiguous names)
09:13:25 <Taneb> int-e, I did not know that was a thing
09:19:20 <oerjan> 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:26 -!- llue has joined.
09:19:26 -!- llue has quit (Changing host).
09:19:26 -!- llue has joined.
09:19:53 <oerjan> i see you have the Prelude versions
09:20:12 <Taneb> Does C.Category mess up lens?
09:20:37 <Taneb> That's the place I can think of most likely to cause a problem
09:20:39 <lambdabot> 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 <Taneb> That's certainly a type signature
09:21:15 <int-e> 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 <oerjan> > Just ("Hi", 0) & _Just C.. _1 %. "Ho"
09:22:34 <lambdabot> ‘.’ (imported from Data.Function),
09:22:50 <Taneb> int-e, have it be liftA just to confuse everyone
09:23:06 <oerjan> > Just ("Hi", 0) & _Just C.. _1 .~ "Ho"
09:23:16 <oerjan> Taneb: well that didn't hurt
09:23:20 <int-e> or I could just stick to the prelude version
09:23:39 <oerjan> > Just ("Hi", 0) & fmap _Just _1 .~ "Ho"
09:23:49 <oerjan> fmap doesn't hurt either
09:24:30 <lambdabot> Applicative f => (a -> b) -> f a -> f b
09:25:03 <lambdabot> It could refer to either ‘Control.Lens.uncons’,
09:25:03 <lambdabot> imported from ‘Control.Lens’ at /home/lambda/.lambdabot/State/L.hs:51:1-43
09:25:34 <int-e> (it's also a function in Data.List)
09:25:40 <Taneb> > Just [1,2,3] & _Just C.. traversed %@~ const
09:28:27 <oerjan> ♫ when you wanna get up, up on your feet, caffeine ♫
09:29:06 <lambdabot> Associativity -> Int -> String -> Expr -> Expr -> Expr
09:29:09 <lambdabot> Wrapped s => (Unwrapped s -> s) -> s -> Unwrapped s
09:29:31 <Taneb> > Lens.op (getSum) 10
09:29:33 <lambdabot> Could not deduce (Unwrapped s0 ~ Sum s)
09:29:33 <lambdabot> from the context (Num s, Wrapped s, Unwrapped s ~ Sum s)
09:29:33 <lambdabot> bound by the inferred type for ‘e_110’:
09:29:58 <Taneb> > Lens.op Sum (Sum 10)
09:30:58 <oerjan> :t Lens.op Sum (Sum 10)
09:31:08 <oerjan> > Lens.op Sum (Sum 10)
09:31:13 <oerjan> > Lens.op Sum (Sum 10) :: Int
09:31:32 <int-e> > reduction (1+2+3)
09:31:49 <Taneb> type Unwrapped (Sum a) = a
09:32:57 <oerjan> int-e: oh the other op is the one used for building Expr operators
09:33:26 <oerjan> now what is Associativity...
09:33:38 <int-e> yeah, I'm in the process of hiding it :P
09:33:47 <Taneb> oerjan, associativity means that (a o b) o c = a o (b o c) hth
09:33:53 <oerjan> Taneb: i mean the type
09:34:32 <Taneb> When I spent a significant portion of yesterday helping someone with a ring theory exam, certain things get in my head
09:35:03 <lambdabot> ‘Control.Lens.op’ (imported from Control.Lens),
09:35:13 <int-e> :t Debug.SimpleReflect.op
09:35:14 <lambdabot> Debug.SimpleReflect.Associativity -> Int -> String -> Expr -> Expr -> Expr
09:35:35 -!- zadock has quit (Quit: Leaving).
09:37:17 <Taneb> :t let (£) = op InfixL 3 in reduction (1 £ 2 £ 3)
09:37:18 <lambdabot> Not in scope: data constructor ‘InfixL’
09:37:19 <lambdabot> ‘Debug.SimpleReflect.InfixL’ (imported from Debug.SimpleReflect),
09:37:21 <Taneb> > let (£) = op InfixL 3 in reduction (1 £ 2 £ 3)
09:37:27 <lambdabot> Not in scope: data constructor ‘InfixL’
09:37:27 <lambdabot> ‘Debug.SimpleReflect.InfixL’ (imported from Debug.SimpleReflect),
09:37:40 <Taneb> > let (£) = op Debug.SimpleReflect.InfixL 3 in reduction (1 £ 2 £ 3)
09:37:43 <lambdabot> Couldn't match expected type ‘Unwrapped s’
09:37:43 <lambdabot> NB: ‘Unwrapped’ is a type function, and may not be injective
09:38:04 <Taneb> WHERE IS UNWRAPPED GETTING INTO THAT
09:38:15 <lambdabot> Wrapped s => (Unwrapped s -> s) -> s -> Unwrapped s
09:38:30 <Taneb> > let (£) = Debug.SimpleReflect.op Debug.SimpleReflect.InfixL 3 in reduction (1 £ 2 £ 3)
09:38:31 <lambdabot> Couldn't match type ‘Expr -> Expr’ with ‘[Char]’
09:38:49 <Taneb> > let (£) = Debug.SimpleReflect.op Debug.SimpleReflect.InfixL 3 "£" in reduction (1 £ 2 £ 3)
09:39:31 <Taneb> Sorry, I need more sleep
09:46:37 <oerjan> > ["hi","there"] & traversed <<%~ length
09:47:00 <oerjan> hm not what i was aiming for
09:47:15 <Taneb> What were you aiming for
09:47:30 <oerjan> [("hi",2),("there",5)]
09:48:17 <Taneb> > ["hi", "there"] & traverse %~ id <<%~ length
09:48:28 <Taneb> Not very good, I'll see if I can come up with something better
09:48:54 <oerjan> i was sort of hoping that i'd discovered <<%~ to be more powerful than i thought
09:50:39 <oerjan> also, i noticed a discussion somewhere suggesting that <%~ and <<%~ need non-operator names
09:50:50 <oerjan> (but none actually suggested)
09:52:34 <ais523> <<%~ is a worse name than some of the ones in Feather
09:52:45 <oerjan> there are names in Feather?
09:53:18 <Taneb> oerjan, there exists a name in Feather, n, such that n is a better name than "<<%~"
09:53:49 <lambdabot> 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:16 <lambdabot> ‘<<<>~’ (imported from Control.Lens),
09:54:24 <Taneb> (<<</>~) :: Optical' (->) q ((,) FilePath) s FilePath -> FilePath -> q s (FilePath, s)
09:56:43 <oerjan> 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 <ais523> perhaps you need some sort of metaoperator that takes operator components as arguments?
09:57:18 <Taneb> I was doing well, then someone added indexed variants :(
09:57:41 <ais523> oerjan: Feather operators are mostly combinations of punctuation marks following this sort of operator component pattern
09:57:48 <ais523> fortunately for my sanity, I no longer remember most of them
09:57:52 <oerjan> Taneb: i see (<<%=) now exists, i don't recall that from before
09:58:04 <Taneb> oerjan, that has existed for a long time
09:58:08 <APic> ,o0(Your Mind turns into a Pretzel)
09:58:11 <Taneb> Before I went on my operator rampage
09:58:13 <lambdabot> ‘<<%=’ (imported from Control.Lens),
09:58:14 <ais523> there was a symbol that was reasonably consistently used for "unboxed", it may even have been #
09:58:22 <ais523> in which case I claim that Haskell is stealing ideas from me
09:58:46 <int-e> . o O ( import qualified Control.Lens as AbandonAllSanityYeWhoEnterHere )
09:59:10 <Taneb> oerjan, now I'm gonna have to add <<</>@= :(
09:59:24 <Taneb> Or would it be <<@</>= ?
10:00:01 <ais523> 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 <ais523> 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 <oerjan> Taneb: do indices makes sense for filepaths
10:01:12 <Taneb> I went on my operator rampage because I needed <<+=
10:01:20 <ais523> 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 <Taneb> ais523, does feather have first class functions
10:02:05 <ais523> Taneb: yes, also closures
10:02:29 <Taneb> I can see why this'd drive someone insane
10:02:38 <ais523> 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 <ais523> and then I sort-of got stuck because my plans required an eigenratio of 1
10:03:42 <ais523> eventually you can do it via an eval operator that's defined in terms of itself
10:03:45 <oerjan> i have a combinator interpreter with an eigenration 1 hth
10:03:48 <ais523> but the in-between bits are rather harder to figure out
10:03:58 <ais523> oerjan: actually it might help, I didn't think of using combinators
10:04:07 <ais523> now is not the time to think of Feather :-D
10:04:35 <oerjan> Feather is outside time, now is as good as any hth
10:04:50 <Taneb> oerjan, hence no time is the time to think of Feather
10:06:49 <ais523> oerjan: well, a Feather interpretation does actually have a begin point in time
10:06:54 <ais523> just from outside it, you can't see that point
10:07:04 <ais523> because it retroactively pushes itself further back into history if you try to find out where it is
10:08:30 <oerjan> you need a heap with revision control
10:09:39 <ais523> oerjan: for your eigenratio-1 interp? or for feather generally?
10:09:56 <ais523> it does have the problem that retroactive modifications tend to form infinite loops without some sort of mitigation
10:10:02 <oerjan> my interp was for unlambda, it only needs refcounting
10:10:28 <ais523> wait, this was an unlambda self-interp, that just happened to be eigenratio 1 on top of that?
10:10:54 <ais523> unlambda's actually not a terrible language to implement feather in
10:11:05 <ais523> it has most of the required features, its main issue is that it's ridiculous
10:11:08 <oerjan> 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 <ais523> 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:24:21 -!- SopaXorzTaker has quit (Remote host closed the connection).
10:45:19 <boily> apparently, scow is oerjanspeak. I thought it was shachafspeech.
10:47:22 <oerjan> i think this acknowledgement is scow
11:07:10 -!- oerjan has quit (Quit: Latér).
11:11:10 <lambdabot> CYUL 111100Z 13010KT 3SM -RA BKN008 BKN030 OVC060 18/18 A2976 RMK SF5SC2SC1 SLP077 DENSITY ALT 700FT
11:11:25 <boily> 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 <lambdabot> EGLL 111120Z VRB03KT 9999 FEW032 20/11 Q1021 NOSIG
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 <fizzie> "failedfailed to create file", says a tool.
11:54:20 <fizzie> 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 <Jafet> Maybe the file creation API returned two failures.
12:23:43 -!- atehwa has joined.
12:24:50 <Jafet> (Is there any APIs that generally returns multiple failures?)
12:25:10 -!- danofthedeep has quit (Quit: Textual IRC Client: www.textualapp.com).
12:25:23 <Jafet> Uh, that replacement doesn't work
12:27:30 <Jafet> Hm, X.509 validation libraries (are supposed to) return multiple failures
12:28:57 -!- Patashu has quit (Ping timeout: 246 seconds).
12:39:00 <Taneb> 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 <mroman> I disagree with John Oliver that "What's twitter?" isn't a valid question .
13:53:58 -!- `^_^v has joined.
14:01:22 <mroman> and I like how he makes fun of a wheather guy not knowing what "transgender" means
14:01:29 <mroman> and then he explains sexual orientation wrong
14:01:54 <mroman> 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:37:08 <mroman> 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 <oerjan> @ask boily <boily> 18/18. scow scow scow. <-- does that mean you're actually floating
16:29:37 -!- J_A_Work has joined.
16:30:35 <Hoolootwo> new language idea: exactly like z80 assembly but with only the a and r registers
16:32:43 <Hoolootwo> the r register is for dram refresh and increments every instruction fetch
16:33:01 <lambdabot> ENVA 111620Z 21007KT 180V260 9999 TS VCSH BKN030CB 23/11 Q1008 TEMPO 26025G35KT 4000 TSRAGR BKN012CB RMK WIND 670FT 22010KT
16:33:42 <oerjan> always refresh with a dram, ye hear
16:36:19 <oerjan> 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 <fizzie> Just started to rain here.
16:44:15 <lambdabot> EGLL 111620Z 30004KT 260V350 9999 -RA FEW026 20/12 Q1021 NOSIG
16:44:37 <fizzie> All hail the sun god, -RA, -RA, -RA.
16:44:45 <fizzie> Supposedly it'll rain more later.
16:45:21 <fizzie> Your TSRAGR sounds quite impressive.
16:45:35 <fizzie> Thunderstorms, rain, hail. Proper summer weather.
16:50:41 <oerjan> i haven't noticed any thunder or hail yet
16:51:05 <oerjan> and the really bad weather forecast was only for 1 hour
16:51:49 <oerjan> now it says sunny, but 5-6 degrees colder
16:52:16 <oerjan> 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:28 <lambdabot> CYVR 112200Z 31016KT 30SM FEW250 23/17 A2992 RMK CI1 HZ CONTRAILS SLP131 DENSITY ALT 900FT
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 <fizzie> It's all good until it says CHEMTRAILS.
23:21:59 <boily> I appreciate well-calligraphied chemtrails.
23:22:06 <lambdabot> oerjan asked 6h 57m 5s ago: <boily> 18/18. scow scow scow. <-- does that mean you're actually floating
23:22:44 <lambdabot> CYUL 112300Z 01007KT 15SM FEW015 SCT120 BKN240 21/18 A2970 RMK CU1AC4CI1 CU TR SLP055 DENSITY ALT 1000FT
23:22:58 <boily> yé, humidity is slowly decreasing...
23:23:19 <boily> coppro: chelloppro! was it raining like fungot today?
23:23:19 <fungot> boily: so the takes a monad and a getvalue function, but a real cooler would be one
23:31:37 <boily> @tell oerjan ah. floating. not quite, but a floatation device of some sort wouldn't have been completely useless.
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).