[erlang-questions] module reloading

Alex Alvarez alex@REDACTED
Wed Apr 18 07:39:07 CEST 2018


Thanks for your response!  I did find interesting the :() trick. 
Didn't know about it!

Thanks,
Alex

On 4/17/2018 at 9:27 PM, "Fernando Benavides"  wrote:Well... You might
not realize but you do know _a_ function: your_module:module_info/0
always exists, for every module ;)
Also... Just trying to evaluate _any_ function, loads the module.
That's why instead of loading modules manually, when in the shell, I
tend to write the module name and :, press tab, if nothing pops up, I
type x(). and press enter. Either the module loads and I have
autocomplete next time I press tab, or I can't load the module.
I bet one day I'll find a module that defines x/0 and I will be in
trouble...
On Tue, 17 Apr 2018 at 19:18 Alex Alvarez  wrote:
Thanks Joe!  LOL!!!  Might sound silly, but it's very useful to be
able to load/reload modules manually.  At the very least, it'd be
great to at least get something like {error, module_loaded}, instead
of the current "error report" message

Ok, so, why don't I just enter a : and allow the module to autoload. 
That's great for source code, but not that great in the command line. 
The problem is that I, as I suppose most folks, don't know the
function names (or even a function name) in every module, which is why
I tend to manually load them when I'm in Erlang's REPL.  As we know,
once a module is loaded, you can type the module name, press the  key
and get a list of the function names + arity.  This is very powerful.
If you don't know the exact name of a function, but do know the name
of a few modules where it might be, you can try loading them, pressing
 and see if you can find it before having to consult the
documentation.

Thanks,
Alex
On 4/16/2018 at 9:55 AM, "Joe Armstrong"  wrote:I see :-)

But why I ask do you do "l(math)" ?

This loads or reloads a module - but modules are autoloaded on demand
the first time the module
is called, so really there is almost [1] no need to do ever do this.

Cheers

/Joe

[1] there is actually but the use cases are rather obscure
On Mon, Apr 16, 2018 at 4:24 AM, Alex Alvarez  wrote:
> Thanks for your reply!  I can certainly understand that and
appreciate the
> system would be letting me know if I was trying to do that.  But the
issue
> is that I was not trying to load any code of mine with the same
module name,
> I just tried reloading the same (e.g., math) module.
>
> Erlang/OTP 20 [erts-9.3] [source] [64-bit] [smp:2:2] [ds:2:2:10]
> [async-threads:10] [hipe] [kernel-poll:false]
>
> Eshell V9.3  (abort with ^G)
> 1> l(math).
> {module,math}
> 2> l(math).
> {error,sticky_directory}
> 3>
> =ERROR REPORT==== 15-Apr-2018::22:09:00 ===
> Can't load module 'math' that resides in sticky dir
>
> As mentioned in my last email, the issue seems to be with the fact
that the
> module was not marked old...
>
> 3> code:purge(math).
> false
>
> Now, I just thought that c:l() would load and reload any module
regardless,
> but that doesn't seem to be the case.
>
> http://erlang.org/doc/man/c.html#l-1
> http://erlang.org/doc/man/code.html#purge-1
>
> Thanks,
> Alex
>
>
>
> On 4/13/2018 at 4:26 PM, "Joe Armstrong"  wrote:
>
> The module called 'math' is a pre-defined system module, and
> redefining it might have
> unpleasant and unpredictable consequences - so you really should not
> do this unless you
> know exactly what you are doing. Best is to just change the name.
>
> If you know what you're doing you can call unstick_dir on the
> directory where math.beam was loaded from
> and then you will be able to change the code - again this is not a
> good idea if you don't
> really understand the consequences of doing this.
>
> System modules are 'sticky' by default to stop you from accidentally
> shooting yourself in the foot.
>
> If you get this warning just change the module name.
>
> Cheers
>
> /Joe
>
> On Fri, Apr 13, 2018 at 7:13 PM, Alex Alvarez  wrote:
>> Sorry if this was already asked and I missed it... While using
v20.3.2,
>> after I load a module...
>>
>> 11> l(math).
>> {module,math}
>>
>> ...if I try to reload it again with the same command...
>>
>> 12> l(math).
>>
>> =ERROR REPORT==== 13-Apr-2018::13:09:15 ===
>> Can't load module 'math' that resides in sticky dir
>> {error,sticky_directory}
>>
>> ...I get this error message. It's not particular to any module.
>From the
>> error, there seems to be a problem with a stcky bit somewhere.
Although I
>> don't remember having this problem before, who knows, maybe it's
just my
>> install. Has anyone run into this issue recently?
>>
>> Thanks,
>> Alex
>>
>> _______________________________________________
>> erlang-questions mailing list
>> erlang-questions@REDACTED
>> http://erlang.org/mailman/listinfo/erlang-questions
>>_______________________________________________
 erlang-questions mailing list
 erlang-questions@REDACTED
 http://erlang.org/mailman/listinfo/erlang-questions
 -- 
elbrujohalcon @ iPhone
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20180418/05df4c82/attachment.htm>


More information about the erlang-questions mailing list