我有一个元组格式的数据:
{data, [[{a, 2}, {b, 3}], [{x, 1}, {v,2}], [1,2,3,4], "hello world", 1111]}
从那以后,
{data, [[{a, 2}, {b, 3}], [{x, 1}, {v,2}], [1,2,3,4], "hello world", 1111]} = {data, L}.
需要检查L
的元素是否为支持列表,如此处:[{a, 2}, {b, 3}]
和[{x, 1}, {v,2}]
是支持者。
erlang中是否有任何函数来检查列表是否为proplist?
is_proplist(List)
应该返回true
或false
答案 0 :(得分:0)
下面的函数F1检查支持者(假设一个原子' a'相当于{' a',true})
1> F = fun(X) when is_atom(X) -> true; ({X,_}) when is_atom(X) -> true; (_) -> false end.
#Fun<erl_eval.6.80484245>
2> L = [[{a, 2}, {b, 3}], [{x, 1}, {v,2}], [1,2,3,4], "hello world", 1111].
[[{a,2},{b,3}],[{x,1},{v,2}],[1,2,3,4],"hello world",1111]
3> F1 = fun(X) when is_list(X) -> lists:all(F,X); (_) -> false end.
#Fun<erl_eval.6.80484245>
4> [X || X <- L, F1(X)].
[[{a,2},{b,3}],[{x,1},{v,2}]]
5>