Есть ли способ использовать спецификацию соответствия для выбора между различными предложениями функции?Я видел спецификации совпадений, используемые только для трассировки или сопоставления записей в таблицах ets.
Пример того, что я хочу сделать:
В предоставленном пользователем файле:
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] }
]).
Из этого файла я хочу сгенерировать код.Для меня важно иметь возможность использовать спецификации соответствия в Guard, чтобы отфильтровывать предложения f1 так, чтобы я мог знать, когда первым аргументом f1 был кортеж вида {score, First, Second,Третий} и is_atom (Первый), is_pid (Второй), is_atom (Третий).
Есть ли способ для меня, чтобы сгенерировать такой код:
case some_unknown_function(MatchSpec, F1Args) of
true ->
%% f1's clause matches the MatchSpec
;
false ->
%% f1's clause does not match the MatchSpec
end.
Любая помощь будет многооценили.Спасибо.