It does not really make sense to make a type synonym an instance of some
class, because a type synonym is just just what is says -- another name for
some type. So making a type synonym for some type T an instance of a class
would be the same as making T itself an instance of the class.
Typically you would make Adjustment its own type using newtype:
newtype Adjustment a = Adjustment (SaleVariables -> a)
Ofcourse now it needs its own constructor (like you said you don't want it
to).
/Johan
2013/4/14 Christopher Howard <[email protected]>
>
> I asked this question in Haskell-beginners, but I haven't heard anything
> yet, so I'm forwarding to Cafe.
>
> -------- Original Message --------
> Subject: [Haskell-beginners] Monad instances and type synonyms
> Date: Sat, 13 Apr 2013 17:03:57 -0800
> From: Christopher Howard <[email protected]>
> Reply-To: The Haskell-Beginners Mailing List - Discussion of primarily
> beginner-level topics related to Haskell <[email protected]>
> To: Haskell Beginners <[email protected]>
>
> I am playing around with some trivial code (for learning purposes) I
> wanted to take
>
> code:
> --------
> -- SaleVariables a concrete type defined early
>
> -- `Adjustment' represents adjustment in a price calculation
> -- Allows functions of type (a -> Adjustment a) to be composed
> -- with an appropriate composition function
> type Adjustment a = SaleVariables -> a
> --------
>
> And put it into
>
> code:
> --------
> instance Monad Adjustment where
>
> (>>=) = ...
> return = ...
> --------
>
> If I try this, I get
>
> code:
> --------
> Type synonym `Adjustment' should have 1 argument, but has been given none
> In the instance declaration for `Monad Adjustment'
> --------
>
> But if I give an argument, then it doesn't compile either (it becomes a
> "*" kind). And I didn't want to make the type with a regular "data"
> declaration either, because then I have to give it a constructor, which
> doesn't fit with what I want the type to do.
>
> --
> frigidcode.com
>
>
>
>
>
> _______________________________________________
> Haskell-Cafe mailing list
> [email protected]
> http://www.haskell.org/mailman/listinfo/haskell-cafe
>
>
_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe