Al tratar la solución con .erlang yo nos topamos con una solución específica para la rr/1 Uso:
Desde la página de manual de la cáscara:
Hay una cierta ayuda para su lectura e impresión registros en el caparazón. Durante la compilación, las expresiones de registro se traducen a tuple expres- sions. En tiempo de ejecución, no se sabe si una tupla en realidad representa un registro . Tampoco están disponibles las definiciones de registro utilizadas por el compilador en runtime. Entonces, para poder leer la sintaxis del registro e imprimir tuplas como registros cuando sea posible, las definiciones de registros deben ser mantenidas por el propio shell . Los comandos de shell para leer, definir, olvidar, enumerar e imprimir registros se describen a continuación. Tenga en cuenta que cada trabajo tiene su propio conjunto de definiciones de registros. Para facilitar las cosas, registre las definiciones en los módulos shell_default y user_default (si está cargado) se leen cada vez que se inicia un nuevo trabajo. Por ejemplo, la adición de la línea
-include_lib("kernel/include/file.hrl").
a user_default hace que la definición de file_info fácilmente disponible en la cáscara.
Para mayor claridad que añadir un poco de ejemplo:
Archivo foo.hrl
:
-record(foo, {bar, baz=5}).
del archivo: user_default.erl
:
-module(user_default).
-compile(export_all).
-include("foo.hrl"). % include all relevant record definition headers here
%% more stuff probably ...
Vamos a tratar en el shell:
$ erl
Erlang R13B04 (erts-5.7.5) [source] [smp:2:2] [rq:2] [async-threads:0] [hipe] [kernel-poll:false]
Eshell V5.7.5 (abort with ^G)
1> #foo{}.
#foo{bar = undefined,baz = 5}
→ la cáscara sabe sobre el registro de foo.hrl
Para el ejemplo de rr() tengo dificultad para hacer que esto funcione. Por ejemplo, si solo coloco la línea como se indicó anteriormente en .erlang, no encuentra rr/1 y no sé en qué módulo se define rr/1. Por otro lado, no estoy seguro de que esté disponible. en todos los trabajos de shell. –
@Peer Stritzinger: 'rr()' no está definido como una función; puedes encontrarlo en 'stdlib/shell.erl' como una cláusula de la función' local_func/7'. – Zed
@Zed: sí, ese era mi problema y estaba buscando una forma de llamarlo automáticamente de todos modos. Financie la solución en mi auto-respuesta y como no puedo pensar en ninguna de las pseudo funciones incorporadas al shell necesarias para el inicio, la solución resuelve el problema para mí. –