MHonArc v2.5.2 -->
xacml message
[Date Prev]
| [Thread Prev]
| [Thread Next]
| [Date Next]
--
[Date Index]
| [Thread Index]
| [Elist Home]
Subject: RE: [xacml] RE: Your input needed on Comment#33. Forwarded messag efrom Daniel Engovatov.
On Fri, 22 Nov 2002, Daniel Engovatov wrote:
> Let me elaborate a bit on why I agree with Seth.
>
> Since the function name (and therefore type) is a parameter for the map
> function, you do not now what type it will return until you now the
> value of this parameter. In the current, limited functionality system we
> do no the value at the "compile" time. To provide a uniform
> extensibility mechanism for these "higher" order functions, we may need
> to allow the value of each argument to be a parameter with a value
> determined at the runtime. In this case the functions that take this map
> output as an argument can not be verified to accept the correct data
> type in advance. In the case that the map type is declared and the
> function name is a runtime valued parameter - inappropriate name will
> result in an Indeterminate: a condition that we have a clear mechanism
> to deal with. For this reason - ALL XACML functions should have
> declared, not deduced, type.
Declaring a type of a map function by putting the return type in the name,
such as "integer-map" doesn't mean much more than restricting the function
name to primitive types. Furthermore, you are only "declaring" a partial
type, because you are not "declaring" the type of the argument. Also,
"integer-map" sounds like you are going to be "mapping a bunch of
integers".
Also, this forces you to "invent" a name for each type you may introduce
into XACML for a map to all functions and have it work. For example, if
you invent a type "http://www.xyz.com/datatype#heathrecord"; and you have a
function called "function:RecordID" that takes an element of type
"http://www.xyz.com/Datatype@heathreaord"; and returns a
"http://www.xyz.com/datatype#RecordId";.
If you want to use a function then you have to define a function called
"?????-map" so it will map a bag of "http://....healthrecord"; to a bag of
"http:///....RecordId";. So, now you have to call it something.
Let me say that giving a rose another name, doesn't make it something
different than a rose.
What we have here is the generic application of the SAME FUNCTIONALITY, so
why give the same functionality different names?
The type of the map function is:
map :: (a -> b) -> [a] -> [b]
The definition of the map function is:
map f [] = []
map f (x:xs) = (f x) : (map f xs)
Where f is a function from type a to type b, and the function is just
applied to every element of the bag.
So why give it different names?
integer-map = map
string-map = map
date-map = map
duration-map = map
etc.
-Polar
>
>