[erlang-questions] Local namespaces in case/try

Dmitry Groshev <>
Tue Jul 10 12:10:45 CEST 2012


Ivan,

There is a concept called "lexical scoping" — it means that some lexical 
constructs have a local namespace. In that example I would expect that all 
variables that were introduced inside case statement (Error/Result) won't 
be bound after the statement. On top of that, Erlang compiler already has 
some similar logic — it will warn you about "exported" variables and will 
not compile code with "unsafe" variables, so it's only a matter of a minor 
(and maybe optional) language change. I'm sorry but I can't see why do you 
think that that values should be identical.

On Tuesday, July 10, 2012 1:54:11 PM UTC+4, Ivan Uemlianin wrote:
>
> > On 07/10/2012 10:43 AM, Dmitry Groshev wrote: 
> > case do_something() of 
> >      {ok, Result} -> Result; 
> >      {error, Error} -> Error 
> > end, 
> > case do_another() of 
> >      {ok, Result} -> Result; 
> >      {error, Error} -> Error 
> > end, 
> > 
> > Result and Error are bound in first case and we will probably have a 
> > match failure in second one. Compiler warns about this, but it's still 
> > very unwieldy to fix it with names like Error1, Error2, etc. 
>
> Are you expecting that the "Result" variable returned from do_another() 
> should have the same value as the "Result" returned from do_something()? 
>   (and likewise for Error.) 
>
> If so, I don't see why you would get a match failure: e.g., you surely 
> wouldn't get a match failure if do_something() and do_another() both 
> returned {ok, 5}? 
>
> If not, yes you will get match failures. 
>
> To this naive observer, the code looks like the "Result"s (and the 
> "Errors"s) are expected to be identical. 
>
> Best wishes 
>
> Ivan 
>
>
> -- 
> ============================================================ 
> Ivan A. Uemlianin PhD 
> Llaisdy 
> Speech Technology Research and Development 
>
>                       
>                       www.llaisdy.com 
>                           llaisdy.wordpress.com 
>                github.com/llaisdy 
>                       www.linkedin.com/in/ivanuemlianin 
>
>                "hilaritas excessum habere nequit" 
>                   (Spinoza, Ethica, IV, XLII) 
> ============================================================ 
>
>
> _______________________________________________ 
> erlang-questions mailing list 
>  
> http://erlang.org/mailman/listinfo/erlang-questions 
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20120710/81e7c670/attachment.html>


More information about the erlang-questions mailing list