rfc: rdbms - new type system

Ulf Wiger (AL/EAB) ulf.wiger@REDACTED
Tue Feb 28 11:09:34 CET 2006


Ulf Wiger wrote:
> 
> I'm toying with the idea of allowing a match specification
> as a table-level 'type' specification:
> 
> Ms = [{{1,2,'$1'}, [{is_integer,'$1'}], [{{1,2,{float,'$1'}}}]}].
> [{{1,2,'$1'},[{is_integer,'$1'}],[{{1,2,{float,'$1'}}}]}]
> 10> ets:match_spec_run([{1,2,3}],ets:match_spec_compile(Ms)).
> 
> [{1,2,3.00000}]


Why did this work at all, btw?

Re-reading the manual, I couldn't find mention of 
{float,'$1'} as a valid term construct.

After having inserted code in rdbms to allow for a 
match spec as an input or output filter (basically
a term rewriting filter, or just a record-level
type check), I started thinking that perhaps the 
most useful rewriting op of all would be list_to_binary
(and binary_to_list in the output filter)

But list_to_binary obviously doesn't work in a match
spec. Why not? And why does {float,'$1'} work?

/Ulf W



More information about the erlang-questions mailing list