Comparison between fields of each record
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
I don't understand your question but the class Ord in Data.Ord is our tool for comparisons. You may want to look into that. You can also use the function "on" from Data.Function to compare on a specific record within a larger structure. Dimitri On 11/24/15 11:20 AM, 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
_______________________________________________ Beginners mailing list Beginners@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
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
Thank you so much :) On Tue, Nov 24, 2015 at 2:01 PM, Francesco Ariis <fa-ml@ariis.it> 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 jykang22@gmail.com Jeon-Young Kang
Okay, can I ask you to provide a little more explanation of what you want to perform with your code? To me, at least, the question, "How can I fit it?" is a little too terse. I think before you even set up a new data, class, class instances etc., the most key step is to put in words, the simpler and cleaer the better, exactly what you what the code to do for you. Pseudo code in prose, if you like. You'll find that with clarity of thought expressed in words comes a greater command of the programming language, or at least, a clearer idea of what you want from the programming language. Matthew On 24/11/2015, Jeon-Young Kang <jykang22@gmail.com> wrote:
Thank you so much :)
On Tue, Nov 24, 2015 at 2:01 PM, Francesco Ariis <fa-ml@ariis.it> 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
jykang22@gmail.com
Jeon-Young Kang
participants (4)
-
Dimitri DeFigueiredo -
Francesco Ariis -
Jeon-Young Kang -
MJ Williams