erlang.org.cn
Open in
urlscan Pro
2606:4700:3032::6815:3d56
Public Scan
URL:
https://erlang.org.cn/
Submission: On November 27 via api from US — Scanned from DE
Submission: On November 27 via api from US — Scanned from DE
Form analysis
1 forms found in the DOMGET https://duckduckgo.com/
<form class="d-flex" role="search" method="get" action="https://duckduckgo.com/">
<input type="hidden" name="sites" value="erlang.org">
<input class="form-control me-2" id="searchfield" name="q" type="search" placeholder="Search erlang.org" aria-label="Search">
<button class="btn btn-outline-primary" type="submit">搜索</button>
</form>
Text Content
* 下载 * 文档 * 社区 * 新闻 * 博客 * EEP * 关于 搜索 实用的函数式编程 用于并行世界 获取 Erlang/OTP 26 fact(0) -> 1; %% Pattern matching for control-flow fact(N) -> N * fact(N-1). %% Recursion to create loops > example:fact(10). %% Interactive shell for fast iterations 3628800 > [{I, example:fact(I)} || I <- lists:seq(1,10)]. [{1, 1}, {2, 2}, {3, 6}, {4, 24}, {5, 120}, {6, 720}, {7, 5040}, {8, 40320}, {9, 362880}, {10, 3628800}] 函数式编程 > Fruits = ["banana","monkey","jungle"]. %% Immutable variables ["banana","monkey","jungle"] > lists:map(fun string:uppercase/1, Fruits). %% Map values using stdlib functions ["BANANA","MONKEY","JUNGLE"] %% Fold over lists using custom functions > lists:foldl(fun(Str, Cnt) -> string:length(Str) + Cnt end, 0, Fruits). 18 高阶函数 > Parent = self(). %% Get own process id <0.376.0> > Child = spawn(fun() -> receive go -> Parent ! lists:seq(1,100) end end). <0.930.0> > Child ! go. %% Send message to child go > receive Reply -> Reply end. %% Receive response from child [1,2,3,4,5,6,7,8,9,10,11|...] 轻量级进程 -spec even(list(integer())) -> list(integer()). even(Numbers) -> mapreduce(Numbers, fun(Number) -> Number rem 2 == 0 end). mapreduce(Numbers, Function) -> Parent = self(), [spawn(fun() -> Parent ! {Number, Function(Number)} end) || Number <- Numbers], lists:flatten( [receive {Number, true} -> Number; _ -> [] end || Number <- Numbers]). 并行 map-reduce 查找偶数 上一个 下一个 %% Return factorial for N fact(0) -> 1; fact(N) -> N * fact(N-1). > example:fact(10). 3628800 函数式编程 > Fruits = ["banana","monkey"]. ["banana","monkey"] > lists:map( fun string:uppercase/1, Fruits). ["BANANA","MONKEY"] 高阶函数 > Me = self(). <0.376.0> %% Send msg using ! > spawn(fun() -> Me!lists:seq(1,10) end). <0.930.0> > receive Reply -> Reply end. [1,2,3,4,5,6,7,8,9,10] 轻量级进程 -spec even(In) -> Out when In :: list(integer()), Out :: list(integer()). even(Numbers) -> [Number || Number <- Numbers, Number rem 2 == 0]. 查找偶数 上一个 下一个 什么是 ERLANG? Erlang 是一种编程语言,用于构建对高可用性有要求的大规模可扩展软实时系统。它的一些应用领域包括电信、银行、电子商务、计算机电话和即时消息。Erlang 的运行时系统内置支持并发、分布式和容错。 Erlang 快速入门 什么是 OTP? OTP 是 Erlang 库和设计原则的集合,提供中间件来开发这些系统。它包含自己的分布式数据库、与其他语言接口的应用程序、调试和发布处理工具。 OTP 入门 新闻 ERLANG/OTP 27.0 发布候选版本 2 2024 年 3 月 20 日,作者:Björn Gustavsson Erlang/OTP 27.0-rc2 是 OTP 27 的第二个发布候选版本 ERLANG/OTP 27.0 发布候选版本 1 2024 年 2 月 14 日,作者:Björn Gustavsson Erlang/OTP 27.0-rc1 是 OTP 27 的第一个发布候选版本 ERLANG/OTP 26.2 版本 2023 年 12 月 13 日,作者:Henrik Nord Erlang/OTP 26.2 是 OTP 26 的第二个维护补丁包,主要包含错误修复。 参与