title: Can I define parametric data type where parameters are not equals between in Haskell?
body: <p><strong>Problem:</strong></p>
  
  <p>Let's imagine we have a Passenger with start and end points represented by: </p>
  
  <pre><code>data Passenger a = Passenger { start :: a
                                 , end :: a
                               }
  </code></pre>
  
  <p><strong>Question:</strong></p>
  
  <p>How can I apply a class constraints to Passenger, where the start point shouldn't be equal to the end point?</p>
  
  <p><strong>P.S.:</strong>
  I have asked a similar <a href="https://stackoverflow.com/questions/53359774/how-can-i-define-a-and-b-depending-from-each-other-typed-class-using-refind-libr">question</a> in the Scala community, but I didn't receive any answer. Considering that <a href="https://github.com/fthomas/refined" rel="nofollow noreferrer">refined library for scala</a> is inspired by <a href="https://github.com/nikita-volkov/refined" rel="nofollow noreferrer">refined for Haskell</a>, also hearing about liquid-Haskell, I wonder how can resolve it using Haskell?</p>