
@webmaster has joined the channel

@lexi.lambda hackett is so fun

I’m fiddling around with typeclass hiearchies and it’s a blast

would you be interested in a PR that rounds out the functor-applicative-monad hierarchy? specifically one that added contravariant functors, Alternative
, and MonadPlus

@notjack Probably, yeah.

I think Contravariant
and Alternative
are pretty straightforward. I think MonadPlus
is more questionably the right thing, so maybe hold off on that one for now?

right now I’m trying to get a feel for the “proper” hierarchy (I spent way too much of my vacation reading things by edward kmett)

There’s definitely a balance to be struct between the extremes of simplicity and completeness.

yup

I haven’t decided yet if I think PureScript’s extensions to the hierarchy are things I want to emulate.

What do you think Hackett’s goal for standard library typeclasses is?

Well, I think it’s good to have all the noncontroversial basic classes in the standard library, since it avoids orphan hell. We obviously want things like Functor f => Applicative f
, Applicative m => Monad m
, and Semigroup a => Monoid a
, since those are pretty universally agreed to be good things.

I think, for the most part, people are satisfied with much of Haskell’s typeclass hierarchy, with the exception of the Num
hierarchy, which most people agree is poorly-designed.

For context on my viewpoint, I look at Hackett as a future standard rackety way of doing referentially transparent FP - I would like to use it by default whenever I make a package whose domain plays nicely with that paradigm

Hmm from a surface POV, Hackett looks so much like Racket

It’s closer to Haskell than it is to Racket.

Is it close enough that you can transfer most of your knowledge and techniques over?

To Haskell? Yes. To Racket? No.

ahh

I’m using Dr Racket and FFI. When I load a DLL it seems to be holding on to it even after I hit the “Stop” button. This causes the post-build step for copying the DLL next to my racket file to fail b/c Dr Racket is holding onto the file and the copy needs to overwrite it. Any idea how to tell Dr Racket to let go of this file (without closing Dr Racket)?