Skip to content

Proposal: Make Q an instance of Applicative

The Q type:

newtype Q a = Q { unQ :: forall m. Quasi m => m a} 

currently has an instance for Monad and Functor. I always find it surprising when a monad doesn't have an Applicative instance. So I would like to propose adding an instance for Applicative as well.

I also propose to make Applicative a superclass of the Quasi class:

class (Monad m, Applicative m, Functor m) => Quasi m where ...

During the discussion on the libraries list Michael Snoyman, Wren ng Thornton and Edward Kmett replied positively. There were no objections.

Trac metadata
Trac field Value
Version 7.0.3
Type FeatureRequest
TypeOfFailure OtherFailure
Priority normal
Resolution Unresolved
Component Template Haskell
Test case
Differential revisions
BlockedBy
Related
Blocking
CC
Operating system
Architecture
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information