Can spec be used only for tracking and selection from ets tables? Can they be used in a case statement?
Is there a way to use a conformance specification to choose between different feature clauses? I've seen match specs only used to track or match records in ets tables.
An example of what I want to do:
In the file provided by the user:
Module(m1),
Function(f1),
Guard([ %% list of match specifications follows:
%% First (and only in this case) match spec:
{ [{score, '$1', '$2', '$3'}, '$4'],
[{is_atom, '$1'}, {is_pid, '$2'}, {is_atom, '$3'}],
[true] }
]).
From this file I want to generate code. It is important for me to be able to use the match specs in Guard to be able to filter out the f1 clauses so that I can know when the first argument to f1 was a tuple of the form {score, First, Second, Third} and is_atom (First), is_pid (Second ), is_atom (Third).
Is there a way to generate the code like this:
case some_unknown_function(MatchSpec, F1Args) of
true ->
%% f1 clause matches the MatchSpec
;
false ->
%% f1 clause does not match the MatchSpec
end.
Any help would be much appreciated. Thank.
+3
source to share