Îõ³h$ Ç þ(      !"#$%&' Safe-Inferred289>?ÀÁÂÉ× ànewtype-genericsAs long as the type n is an instance of Generic, you can create an instance with just instance Newtype nnewtype-generics"This function serves two purposes: ÌGiving you the unpack of a newtype without you needing to remember the name.$Showing that the first parameter is completely ignoredŒ on the value level, meaning the only reason you pass in the constructor is to provide type information. Typeclasses sure are neat.op Identity (Identity 3)3newtype-genericsÎThe workhorse of the package. Given a "packer" and a "higher order function" (hofþ), it handles the packing and unpacking, and just sends you back a regular old function, with the type varying based on the hof you passed.$The reason for the signature of the hof is due to ï not caring about structure. To illustrate why this is important, consider this alternative implementation of  : ¯under2 :: (Newtype n, Newtype n', o' ~ O n', o ~ O n) => (o -> n) -> (n -> n -> n') -> (o -> o -> o') under2' pa f o0 o1 = ala pa (\p -> uncurry f . bimap p p) (o0, o1)Being handed the "packer", the hofÇ may apply it in any structure of its choosing “@ in this case a tuple.ala Sum foldMap [1,2,3,4]10newtype-genericsÙThis is the original function seen in Conor McBride's work. The way it differs from the ‰ function in this package, is that it provides an extra hook into the "packer" passed to the hof. However, this normally ends up being id, so ! wraps this function and passes id† as the final parameter by default. If you want the convenience of being able to hook right into the hof, you may use this function.*ala' Sum foldMap length ["hello", "world"]104ala' First foldMap (readMaybe @Int) ["x", "42", "1"]Just 42newtype-genericsËA very simple operation involving running the function 'under' the newtype.under Product (stimes 3) 327newtype-genericsThe opposite of õ. I.e., take a function which works on the underlying types, and switch it to a function that works on the newtypes.over All not (All False)All {getAll = True} newtype-generics) True FalseTrue newtype-genericsThe opposite of  . newtype-generics lifted into a Functor. newtype-generics lifted into a Functor.newtype-genericsnewtype-genericsnewtype-genericsnewtype-genericsnewtype-genericsnewtype-genericsnewtype-genericsnewtype-genericsnewtype-genericsnewtype-genericsnewtype-generics!newtype-generics"newtype-generics   (      !"#$%&'()*-newtype-generics-0.6.2-4Rd0GJRqscQ7VvqePMwdb9Control.Newtype.GenericsNewtypeOpackunpackopalaala'underoverunder2over2underFoverF $fGNewtypeM1$fNewtypeOption$fNewtypeWrappedMonoid $fNewtypeLast$fNewtypeFirst $fNewtypeMax $fNewtypeMin $fNewtypeDown $fNewtypeAp $fNewtypeAlt$fNewtypeLast0$fNewtypeFirst0$fNewtypeProduct $fNewtypeSum $fNewtypeAny $fNewtypeAll $fNewtypeEndo $fNewtypeDual$fNewtypeIdentity$fNewtypeConst$fNewtypeCompose$fNewtypeFixed$fNewtypeArrowMonad$fNewtypeKleisli$fNewtypeZipList$fNewtypeWrappedArrow$fNewtypeWrappedMonad