“string_to_term / 1”?(“string_to_term/1”?)
Erlang中是否有这样的功能?
a_function_id_like_to_have("{1,2,{3,4}}") % => {1,2,{3,4}}(如在哈斯克尔read )
Is there any function in Erlang with this behavior?:
a_function_id_like_to_have("{1,2,{3,4}}") % => {1,2,{3,4}}(Like read in Haskell)
最满意答案
看看本演示文稿的幻灯片25。
它使用erl_eval , erl_parse和erl_scan 。
1> {ok, Tokens, _} = erl_scan:string("{1,2,{3,4}}."). {ok,[{'{',1}, {integer,1,1}, {',',1}, {integer,1,2}, {',',1}, {'{',1}, {integer,1,3}, {',',1}, {integer,1,4}, {'}',1}, {'}',1}, {dot,1}], 1} 2> {ok, Abstract} = erl_parse:parse_exprs(Tokens). {ok,[{tuple,1, [{integer,1,1}, {integer,1,2}, {tuple,1,[{integer,1,3},{integer,1,4}]}]}]} 3> Bindings = erl_eval:new_bindings(). [] 4> {value, Value, _} = erl_eval:exprs(Abstract, Bindings). {value,{1,2,{3,4}},[]} 5> erlang:display(Value). {1,2,{3,4}} trueTake a look at slide 25 of this presentation.
It makes use of erl_eval, erl_parse, and erl_scan.
1> {ok, Tokens, _} = erl_scan:string("{1,2,{3,4}}."). {ok,[{'{',1}, {integer,1,1}, {',',1}, {integer,1,2}, {',',1}, {'{',1}, {integer,1,3}, {',',1}, {integer,1,4}, {'}',1}, {'}',1}, {dot,1}], 1} 2> {ok, Abstract} = erl_parse:parse_exprs(Tokens). {ok,[{tuple,1, [{integer,1,1}, {integer,1,2}, {tuple,1,[{integer,1,3},{integer,1,4}]}]}]} 3> Bindings = erl_eval:new_bindings(). [] 4> {value, Value, _} = erl_eval:exprs(Abstract, Bindings). {value,{1,2,{3,4}},[]} 5> erlang:display(Value). {1,2,{3,4}} true更多推荐
发布评论