Erlang 与fun()的新词呼应

Erlang 与fun()的新词呼应,erlang,Erlang,我最近一直在尝试处理Erlang,但对此有点困惑 问题 我试图在shell中编写一个函数对象,它接收任何消息并将其回显到shell,后面跟着一行新行 企图 我尝试的功能是: Echo = fun() -> receive Any -> io:fwrite(Any), io:fwrite("~n") end end. 但是,如果我为此生成一个新进程 someNode@someHost 2> Pid = spawn(Echo). <0,76,0> …我似乎没有在写入

我最近一直在尝试处理Erlang,但对此有点困惑

问题 我试图在shell中编写一个函数对象,它接收任何消息并将其回显到shell,后面跟着一行新行

企图 我尝试的功能是:

Echo = fun() -> receive Any -> io:fwrite(Any), io:fwrite("~n") end end.
但是,如果我为此生成一个新进程

someNode@someHost 2> Pid = spawn(Echo).
<0,76,0>
…我似乎没有在写入之后和消息返回之前获得新行字符

问题: 我的方法是否有问题,导致这个(非常简单的)示例无法按预期工作

提前感谢

您的问题是原子性。 打印第一行后,“主线程”将被调度并打印
Pid!的结果!Msg
,即
Msg

可以像C中的printf一样接受参数:

Echo = fun() ->
    receive
        Any ->
            io:fwrite("~p~n", [Any])
    end
end

我真的应该早点注意到这一点——我以前多次使用过“~p”方法。我责备这是一个早晨。谢谢,当场回答:)
Echo = fun() ->
    receive
        Any ->
            io:fwrite("~p~n", [Any])
    end
end