[Haskell-beginners] How to add a "method" to a record
martin
martin.drautzburg at web.de
Fri Sep 12 17:05:11 UTC 2014
Am 09/10/2014 08:50 PM, schrieb Corentin Dupont:
> If the field "label" can be deduced from "payload", I recommend not to include it in your structure, because that would
> be redundant.
>
> Here how you could write it:
>
> data Foo pl = Foo { payload :: pl}
>
> labelInt :: Foo Int -> String
> labelInt (Foo a) = "Int payload:" ++ (show a)
>
> labelString :: Foo String -> String
> labelString (Foo a) = "String payload" ++ a
>
> You are obliged to define two separate label function, because "Foo Int" and "Foo String" are two completly separate types.
This is exactly my problem: Someone will use this type an define the type of pl. How can I know what type she'll use?
What I'd like to express is that whoever creates a concrete type should also provide the proper label function.
>
> On Wed, Sep 10, 2014 at 2:06 PM, martin <martin.drautzburg at web.de> wrote:
>
> Hello all
>
> if I have a record like
>
> data Foo pl = Foo {
> label :: String,
> payload :: pl
> }
>
> how can I create a similar type where I can populate label so it is not a plain string, but a function which
> operates on
> payload? Something like
>
> label (Foo pl) = show pl
>
More information about the Beginners
mailing list