[erlang-questions] (Newbie) extracting value for one key

Brian Candler <>
Tue Aug 19 14:18:32 CEST 2008


In Erlang, it seems a list of {key,value} tuples is often returned, e.g.

17> P = process_info(self()).
[{current_function,{erl_eval,do_apply,5}},
 {initial_call,{erlang,apply,2}},
 {status,running},
 {message_queue_len,0},
 {messages,[]},
 {links,[<0.25.0>]},
 {dictionary,[]},
 {trap_exit,false},
 {error_handler,error_handler},
 {priority,normal},
 {group_leader,<0.24.0>},
 {heap_size,610},
 {stack_size,28},
 {reductions,526},
 {garbage_collection,[{fullsweep_after,65535}]}]

Question: What's the idiomatic way to extract the value for a particular
key? For example, to extract "stack_size" from the above I could write

18> hd([ V || {stack_size,V} <- P ]).
28

but is there a better way to do this?

Thanks,

Brian.

P.S. I found the example at
http://www.erlang.org/doc/programming_examples/list_comprehensions.html#3.6
which shows how to factor the comprehension into a function.

I also found "element(2, element(2, lists:keysearch(stack_size, 1, P)))."
but that's rather verbose.



More information about the erlang-questions mailing list