
hi i am going through yaht tutorial and exercise 4.6 and 4.7..i understood 4.6,but not 4.7 in which fromTuple (One a ) = Left (Left a ) and fromTuple (Two a b ) = Left (Right (a,b) ) function r written..why use Either type..cant i just say fromTuple (Two a b )=(a,b)

vishy anand
hi i am going through yaht tutorial and exercise 4.6 and 4.7..i understood 4.6,but not 4.7 in which fromTuple (One a ) = Left (Left a ) and fromTuple (Two a b ) = Left (Right (a,b) ) function r written..why use Either type..cant i just say fromTuple (Two a b )=(a,b)
It sounds like you want to write: -- fromTuple :: Tuple a b c d -> ???? fromTuple (One a) = a fromTuple (Two a b) = (a,b) fromTuple (Three a b c) = (a,b,c) fromTuple (Four a b c d) = (a,b,c,d) But what would be the type of this function? While (Two a b) and (Three a b c) are values of the same type, (a,b) and (a,b,c) are distinct types (because they are defined that way). In a function with multiple cases, each case must have the same type, so fromTuple as above fails to type-check. Using Either allows you to write the four cases with a consistent type.
participants (2)
-
Matthew Brecknell
-
vishy anand