在erlang中是否有任何函数来检查列表是否是一个proplist?

时间:2014-04-28 06:29:27

标签: erlang

我有一个元组格式的数据:

{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)应该返回truefalse

1 个答案:

答案 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>