# Talk:TypeCompose

### From HaskellWiki

Revision as of 16:57, 5 December 2007 by Wolfgang Jeltsch (Talk | contribs)

Hello Conal,

I have a typeWrappedApplicative

Data.Monoid.Bonus

Data.Monoid.Bonus

(Applicative a, Monoid m) => Monoid (WrappedApplicative a m)

WrappedApplicative

* -> *

*

Monoid

WrappedApplicative

WrappedMonad

WrappedMonad

What do you think?

-- Wolfgang Jeltsch 18:23, 4 December 2007 (UTC)

I like it. It's the same as

App

Control.Compose

newtype App f a = App { unApp :: f a } instance (Applicative f, Monoid m) => Monoid (App f m) where mempty = App (pure mempty ) App a `mappend` App b = App (liftA2 mappend a b)

inApp2

Compose

instance (Applicative f, Monoid m) => Monoid (App f m) where mempty = App (pure mempty ) mappend = inApp2 (liftA2 mappend)

App

data f :$ a = f :$ a

I guess I'd like two infix ops -- one left-associative and one right-associative.

By the way, have you played with(:*:)

(:*:)

App

WrappedMonad

WrappedApplicative

-- Conal 20:18, 4 December 2007 (UTC)

Sorry, I hadn’t looked that deeply into TypeCompose to discover App. Yes, this is what I meant.

(:$)

(:$)

App

(:.)

O

Data.Composition

(:.:)

O

App

(:*:)

Data.Monoid.Bonus

Data.Composition

By the way, I don’t like that in this wiki one isn’t able to indent answers to previous comments if the answer contains multiple lines of Haskell code. Normally, one should (and should be able to) indent answers by preceding one’s paragraphs with single colons. This doesn’t really work with haskell tags. It’s not composable. ;-)

-- Wolfgang Jeltsch 16:57, 5 December 2007 (UTC)