Maybe you can try "curried" definition:
type Adjustment = (->) SaleVariables
I had a similar problem awhile ago.
Hth
—
On Sun, Apr 14, 2013 at 9:11 AM, Christopher Howard > wrote:
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  
Reply-To: The Haskell-Beginners Mailing List - Discussion of primarily 
beginner-level topics related to Haskell  
To: Haskell Beginners  
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 
<Attached Message Part>