[erlang-questions] Silly question: if vs pattern matching

Matthias Lang <>
Mon Feb 5 23:48:07 CET 2007


Joel Reymont writes:
 > process(String, Env) ->
 >      {Tree, _} = xmerl_scan:string(String),
 >      Closures = visit(Tree),
 >      Tree1 = render(Closures, Env),
 >      Tree2 = if
 >                  is_list(Tree1) ->
 >                      lists:flatten(Tree1);
 >                  true ->
 >                      [Tree1]
 >              end,
 >      XML = xmerl:export_simple(Tree2, xmerl_xml,
 >                                [#xmlAttribute{name = prolog,value =  
 > ""}]),
 >      lists:flatten(XML).
 > 
 > I don't particularly like the "if" above. It just doesn't seem very  
 > Erlangish to me and I would rather replace it with pattern matching.  
 > The silly question is...

How about just writing

  Tree2 = lists:flatten([Tree1]),

I won't speculate on the performance implications, but it eliminates
the if and saves five lines.

Matthias



More information about the erlang-questions mailing list