<div dir="ltr"><div class="gmail_default" style="font-family:monospace,monospace">"1. Clearly indicate evaluation rather than actual execution."</div><div class="gmail_default" style="font-family:monospace,monospace">What does that mean?  Execution is evaluation is execution.</div><div class="gmail_default" style="font-family:monospace,monospace"><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, 20 Sep 2019 at 15:20, Maxim Fedorov <<a href="mailto:maximfca@gmail.com">maximfca@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">There are two reasons to name is eval/3:<br>
1. Clearly indicate evaluation rather than actual execution.<br>
2. Avoid clash with erlang:apply/3. When power_shell is started as an<br>
application (e.g. application:start(power_shell) in Erlang shell), it<br>
becomes a part of the shell, so you can just type eval(mod, fun,<br>
[args]).<br>
<br>
As for the project name, it is purely historical, and has no relation<br>
to Microsoft.<br>
<br>
Maxim<br>
<br>
On Wed, 18 Sep 2019 at 21:06, Richard O'Keefe <<a href="mailto:raoknz@gmail.com" target="_blank">raoknz@gmail.com</a>> wrote:<br>
><br>
> The example is power_shell:eval(dist_util, gen_challenge, []).<br>
> With the arguments being Module, Function, Arguments, why is<br>
> it not called power_shell:apply/3?<br>
><br>
> Since I'm currently trying to learn PowerShell, I was initially<br>
> confused by the module name.<br>
><br>
> On Thu, 19 Sep 2019 at 16:02, Maxim Fedorov <<a href="mailto:maximfca@gmail.com" target="_blank">maximfca@gmail.com</a>> wrote:<br>
>><br>
>> power_shell is an application providing a convenient way to evaluate<br>
>> functions extracted from compiled *.beam file, or read from *.erl<br>
>> source.<br>
>><br>
>> How do we use it at WhatsApp?<br>
>><br>
>> Debugging on production machines: evaluating functions that are not<br>
>> exported. For example, dist_util.erl contains gen_challenge/0, but it<br>
>> is not accessible without making a change to OTP kernel application.<br>
>> Using power_shell:eval(dist_util, gen_challenge, []) yields the<br>
>> desired result.<br>
>><br>
>> Common Tests: testing functions that are not exported. We want to test<br>
>> against production build, providing production API.<br>
>><br>
>> Development: changing *.erl file and immediately evaluating functions<br>
>> directly from *.erl file (no need to c(mymodule) to compile and load<br>
>> updated code).<br>
>><br>
>> Package is available on hex:<br>
>> <a href="https://hex.pm/packages/power_shell" rel="noreferrer" target="_blank">https://hex.pm/packages/power_shell</a><br>
>><br>
>> Source code is available on GitHub:<br>
>> <a href="https://github.com/WhatsApp/power_shell" rel="noreferrer" target="_blank">https://github.com/WhatsApp/power_shell</a><br>
>><br>
>> Enjoy!<br>
>> _______________________________________________<br>
>> erlang-questions mailing list<br>
>> <a href="mailto:erlang-questions@erlang.org" target="_blank">erlang-questions@erlang.org</a><br>
>> <a href="http://erlang.org/mailman/listinfo/erlang-questions" rel="noreferrer" target="_blank">http://erlang.org/mailman/listinfo/erlang-questions</a><br>
_______________________________________________<br>
erlang-questions mailing list<br>
<a href="mailto:erlang-questions@erlang.org" target="_blank">erlang-questions@erlang.org</a><br>
<a href="http://erlang.org/mailman/listinfo/erlang-questions" rel="noreferrer" target="_blank">http://erlang.org/mailman/listinfo/erlang-questions</a><br>
</blockquote></div>