[Haskell-cafe] Comparison between fields of each record

Francesco Ariis fa-ml at ariis.it
Tue Nov 24 19:01:08 UTC 2015


On Tue, Nov 24, 2015 at 01:20:03PM -0500, Jeon-Young Kang wrote:
> Dear All.
> 
> I'd like to compare fields of each record.
> 
> here is my record.
> 
> data Person = Person {name:: String, age:: Int } deriving(Show)
> data Relations = Friend | Older | Younger
> 
> class Comparison a where
>     compare:: a -> a -> Relations
> 
> instance Comparison Person where
>     compare Person a b Person a b
>          | b1 == b2 = Friend
>          | b1 > b2 = Older
>          | b1 < b2 = Younger
> 
> How can I fit it?
> 
> Sincerely,
> 
> 
> Jeon-Young Kang

Hello Jeon-Young, I attach a version that compiles. Keep in mind that

    compare (Person x y) (Person q w) -- this is legal

    compare Person x y Person q w -- "space" takes precedence over everything,
                                  -- so this function has 6 arguments
                                  -- instead of the expected 2!


λ> Main.compare (Person "cdsac" 1) (Person "cdscasd" 20)
Younger
-------------- next part --------------
A non-text attachment was scrubbed...
Name: test.hs
Type: text/x-haskell
Size: 343 bytes
Desc: not available
URL: <http://mail.haskell.org/pipermail/haskell-cafe/attachments/20151124/05b234a7/attachment.hs>


More information about the Haskell-Cafe mailing list