Newbie questions about Pliant

Newbie questions about Pliant

polymorphism on Data:* objects

need generic function to work on Data:* objects
Message posted by maybe Boris Reitman on 2007/09/05 04:07:57
I have type Data:FunInterest and Data:FunPlace
plus two more like that, and I would like to avoid code duplication.
I'd like to write a function

add_fun_to_person fun_object person_object
  arg_rw Data:Fun fun ; arg_rw Data:Person person
  generic
  ...
  fun:people_ids create keyof:person
  person:fun_ids create keyof:fun

Is something like this possible ?

Alternatively, how can I easily put a bunch of code into a named_expression
and then compile it with some template variable replaced ?
Should I be using runtime_compile ? Can I have runtime_compile in a .page ?
Message posted by maybe Hubert Tonneau on 2007/09/05 16:14:12
Data:xxx are already a very generic data types.

Let's assume that you have two types RecordA and RecordB that are quite similar:

type RecordA
  field Str f1 f2
  ...

type RecordB
  field Str f1 f2
  ...

And a function that is written for RecordA data type:

function fun r
  arg_rw Data:RecordA r
  ...

Then you can apply to RecordB anyway, through:

var Data:RecordB r
...
fun (r pmap "" RecordA)
Message posted by maybe Boris Reitman on 2007/09/05 16:25:54
in the function "fun", would I be able 
to distinguish which type the data is, if I need to handle a few special cases?
Message posted by maybe Hubert Tonneau on 2007/09/05 16:43:42
Not easily and not reliably,
but you can still pass an extra agument to your function.