使用Erlang,我有以下表达式:
{add,{var,a},{mul,{num,2},{var,b}}}
我正在使用list:keymember来查看字母b是否在表达式中:
lists:keymember(b,2,[expr])
但是,它不会在第三个元组'{mul,{num,2},{var,b}'中查找,因为它是一个单独的元组。是否有一个函数可以搜索整个元组和元组内的元组?
由于
答案 0 :(得分:4)
据我所知,目前还没有这样的功能。可能你必须使用递归实现一些自定义解决方案。这是我的例子:
-module(test).
-compile(export_all).
find(_, []) -> false;
find(E, T) when is_tuple(T) ->
find(E, tuple_to_list(T));
find(E, [H|T]) ->
case find(E, H) of
false -> find(E, T);
true -> true
end;
find(V, E) -> V == E.
用法:
1> test:find(b, {add,{var,a},{mul,{num,2},{var,b}}}).
true
2> test:find(b, {add,{var,a},{mul,{num,2},{var,c}}}).
false
答案 1 :(得分:1)