[erlang-questions] Erlang/OTP 20.0, atoms and function names with Unicode

derek denc716@REDACTED
Thu May 4 01:11:12 CEST 2017

I found this feature from some of the merged PRs of Erlang/OTP 20


> Erlang/OTP 20.0, atoms and function can contain Unicode characters

so I built the binary from git checked out source code (from revision
efcb91bce) and play with it: it seems in escript interpreting mode it
works, but compiling mode still has errors:

➸ cat ./hello.erl
#!/usr/bin/env escript
%% -*- coding: utf-8 -*-
%%! +pc unicode

-export([main/1, 'hello_юникод_世界'/0]).

main(_) ->
  % io:format("~p~n", [{io:printable_range(), io:getopts()}]),
  % 'hello_'(),
  % io:format("~p~n", [{io:printable_range(), io:getopts()}]),
  io:format("~tp~n", [{"Hello, 世界, юникод"}]).

'hello_юникод_世界'() ->
  io:format("~tp~n", [{'hello_юникод', <<"Hello, 世界; юникод"/utf8>>,
"Hello, 世界; юникод"}]).

➸ erlang20 ./hello.erl
{'hello_юникод',<<"Hello, 世界; юникод"/utf8>>,"Hello, 世界; юникод"}
{"Hello, 世界, юникод"}

If I uncomment the "-mode(compile)." line, it just runs into compilation
error (same as below shell compilation errors)

Or in the Erlang shell, trying to compile it just failed: (I have to remove
(or comment out) the first "#!/usr/bin/env escript" line)

➸ erlang20
Erlang/OTP 20 [DEVELOPMENT] [erts-9.0] [source-efcb91bce] [64-bit]
[smp:8:8] [ds:8:8:10] [async-threads:10] [hipe] [kernel-poll:false]

Eshell V9.0  (abort with ^G)
1> c(hello).
hello.erl: internal error in beam_asm;
crash reason: badarg

  in function  list_to_binary/1
     called as list_to_binary([[5,104,101,108,108,111],
  in call from beam_asm:chunk/3 (beam_asm.erl, line 213)
  in call from beam_asm:build_file/8 (beam_asm.erl, line 97)
  in call from beam_asm:module/4 (beam_asm.erl, line 31)
  in call from compile:beam_asm/1 (compile.erl, line 1370)
  in call from compile:'-internal_comp/4-anonymous-1-'/2 (compile.erl, line
  in call from compile:fold_comp/3 (compile.erl, line 355)
  in call from compile:internal_comp/4 (compile.erl, line 339)

I have looked up in many of the commit messages, still not seeing a good
example of how to use unicode in function names? Could some developer
behind this feature give more examples?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20170503/3ffaaf21/attachment.htm>

More information about the erlang-questions mailing list