Comparison between fields of each record

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

Comparison between fields of each record

Jeon-Young Kang
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

_______________________________________________
Haskell-Cafe mailing list
[hidden email]
http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
Reply | Threaded
Open this post in threaded view
|

Re: Comparison between fields of each record

Francesco Ariis
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

_______________________________________________
Haskell-Cafe mailing list
[hidden email]
http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe

test.hs (355 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: Comparison between fields of each record

Jeon-Young Kang
Thank you so much :) 

On Tue, Nov 24, 2015 at 2:01 PM, Francesco Ariis <[hidden email]> wrote:
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



--
Department of Geography
State University of New York at Buffalo

 
Jeon-Young Kang

_______________________________________________
Haskell-Cafe mailing list
[hidden email]
http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe