title: Why is type parameter and data parameter's order mostly reversed?
body: <p>This code is from <a href="http://learnyouahaskell.com/making-our-own-types-and-typeclasses#typeclasses-102" rel="nofollow">Learn you a haskell book</a>. </p>
  
  <pre><code>class Tofu t where
      tofu :: j a -&gt; t a j
  
  data Frank a b = Frank { frankField :: b a } 
                          deriving (Show)
  
  instance Tofu Frank where
      tofu x = Frank x
  </code></pre>
  
  <p>Also I've seen similar code where type parameter and data parameter are reversed like</p>
  
  <pre><code>data SomeData a b = SomeData { field1 :: b a }
  </code></pre>
  
  <p>Why are they written like that?</p>