在Erlang交互式shell中,您可以将变量绑定到值.如果我想清除所有内容并从头开始而不退出会话并开始新会议,我该如何做?
如果我只想重新使用单个变量,是否可以重新绑定?
()
在IEx 1.2.4中键入时,光标将"跳转"到匹配的括号1s并向后移动.即使它不是真的跳跃但它有点令人讨厌.有没有办法在IEx中禁用此功能?
编辑:
虽然最初涉及IEx的问题,实际问题(正如@tkowal在下面的评论中所指出的)实际上是在IEx运行的Erlang Shell中.因此我在这个问题上添加了erlang-shell标签.
我确信它有一个功能.我只想列出1000个数字,每个数字应该是随机的.
这开始是一个问题:
几乎每次我使用Erlang shell时,我都想在shell启动时运行一些命令,例如
rr("*.hrl").
Run Code Online (Sandbox Code Playgroud)
或类似的.目前我必须在每次启动Erlang shell时键入它,我已经厌倦了它并且一直忘记它.
但这实际上是错误的问题!我真正想要做的是在每个shell作业中读取我的记录定义标题.不能用于启动时运行的其他shell内置命令.所以我更改了问题标题以显示它应该如何询问的问题.
我的docker容器(CentOS)上有一些奇怪的行为.当我连接到它时,有一个正在运行的Erlang VM实例(api@127.0.0.1)我无法使用-remsh参数连接它,但我可以ping它.我的Erlang节点(api@127.0.0.1)可以正常工作.
bash-4.2# ./bin/erl -name 'remote@127.0.0.1' -remsh 'api@127.0.0.1'
Eshell V6.1 (abort with ^G)
(remote@127.0.0.1)1> node().
'remote@127.0.0.1'
(remote@127.0.0.1)2> net_adm:ping('api@127.0.0.1').
pong
(remote@127.0.0.1)3> erlang:system_info(system_version).
"Erlang/OTP 17 [erts-6.1] [source] [64-bit] [smp:8:8] [async-threads:10] [hipe] [kernel-poll:false]\n"
(remote@127.0.0.1)4> rpc:call('api@127.0.0.1', erlang, node, []).
'api@127.0.0.1'
Run Code Online (Sandbox Code Playgroud)
运行了2个linux进程 - 一个用于实际VM,另一个用于尝试调用远程shell的进程
26 ? Sl 40:46 /home/vcap/app/bin/beam.smp -- -root /home/vcap/app -progname erl -- -home /home/vcap/app/ -- -name api@127.0.0.1 -boot releases/14.2.0299/start -config sys -boot_var PATH lib -noshell
32542 ? Sl+ 0:00 /home/vcap/app/bin/beam.smp -- -root /home/vcap/app -progname erl -- -home /home/vcap/app -- -name remote@127.0.0.1 -remsh …
Run Code Online (Sandbox Code Playgroud) 使用erlc
我编译erlang文件时可以添加其他包含目录,如下所示:
erlc -I /home/trotter/code/open-source/yaws/include src/myapp.erl
Run Code Online (Sandbox Code Playgroud)
当我从内部编译时erl
,我没有看到在命令行上执行此操作的方法.相反,我必须在repl中执行以下操作:
> compile:file("src/myapp",
[verbose,
report_errors,
{i,"/home/trotter/code/open-source/yaws/include"}]).
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法来做我不知道的事情,例如将一些命令行参数传递给erl?如果没有,任何干涸的建议都不需要我每次编译时输入令人讨厌的路径.
我正在运行 Kubuntu 15.04 64 位并试图让 Erlang 的 18.1 'debugger' 或 'observer' 运行(编辑:从 shell 中):
observer:start().
debugger:start().
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
{error,{{load_driver,"No driver found"},
[{wxe_server,start,1,[{file,"wxe_server.erl"},{line,65}]},
{wx,new,1,[{file,"wx.erl"},{line,115}]},
{observer_wx,init,1,[{file,"observer_wx.erl"},{line,96}]},
{wx_object,init_it,6,[{file,"wx_object.erl"},{line,337}]},
{proc_lib,init_p_do_apply,3,
[{file,"proc_lib.erl"},{line,240}]}]}}
ERROR REPORT==== 4-Oct-2015::15:34:01 ===
ERROR: Could not find 'wxe_driver.so' in: /home/howler/erlang/18.1/lib/wx-1.5/priv
Run Code Online (Sandbox Code Playgroud)
我已经尝试了各种论坛并遵循了有关 wxWidgets 的规定建议,但我仍然无法让它工作?
有谁知道解决这个问题的明确方法?
给定远程Beam.smp服务的已知TCP端口和名称以及已知的cookie,可以短路Erlang分发协议的Erlang Port Mapper Daemon握手阶段,并直接建立到目标Beam的Erlang Shell .smp服务?
该协议记录在这里:
http://erlang.org/doc/apps/erts/erl_dist_protocol.html
和这里:
但是我不清楚是否通过Erlang Port Mapper守护程序或绑定到特定端口的beam.smp服务进行recv_challenge / send_challenge身份验证。
感谢您的时间。
将列表转换为[[1,2,3],[a,b,c],[4,5,6]]
像这样的元组列表的最佳方法是什么:
[{1,a,4},{2,b,5},{3,c,6}]
Run Code Online (Sandbox Code Playgroud)
元组N由三个子列表中的每一个的第N个元素组成?我应该使用尾递归函数,列表推导还是其他方法?