Erlware Commons
当前状态
Introduction
Erlware commons 可以被描述为对随 Erlang 分发的 stdlib 应用程序的扩展。这些是我们在 Erlware 发现对生产应用程序有用 但未包含在发行版中的内容。我们希望随着库中的内容 被证明有用,它们能够进入主要的 Erlang 发行版。然而,无论是否如此,我们希望这个 应用程序能普遍有用。
Goals for the project
- 通用有用的代码
- 高质量
- 文档完善
- 测试完善
Licenses
本项目包含使用 Apache License, Version 2.0 许可的元素, 以及使用 The MIT License 许可的元素。
您会在特定文件的头部找到许可相关信息, 在适当的地方。
在没有此类信息的情况下,请参阅 COPYING。
Currently Available Modules/Systems
ec_date
本模块将 erlang 日期格式 {{Year, Month, Day}, {Hour, Minute, Second}} 格式化为可打印的字符串,使用与 http://uk.php.net/date 几乎 等效的格式化规则,美式与欧式日期的歧义消除方式与 http://uk.php.net/manual/en/function.strtotime.php 相同。也就是说,m/d/y 或 d-m-y 格式的日期通过查看各组件之间的分隔符来消除歧义:如果分隔符是斜杠 (/),则假定为美式 m/d/y;而如果分隔符是 连字符 (-) 或点 (.),则假定为欧式 d-m-y 格式。为 避免潜在的歧义,最好使用 ISO 8601 (YYYY-MM-DD) 日期。
erlang 没有时区的概念,因此以下格式未 实现:B e I O P T Z 格式 c 和 r 也会略有不同
ec_file
一组常用的辅助函数,用于处理未 包含在 stdlib 中的文件。
ec_plists
plists 是模块 lists 的直接替代品,使大多数 列表操作并行化。它可以并行处理每个元素, 适用于 IO 密集型操作;并行处理子列表, 以利用多核机器处理 CPU 密集型操作;以及跨 erlang 节点,以在集群内部实现并行化。它处理错误和节点 故障。它可以进行配置、调优和微调,以在最小化开销的同时获得最佳 性能。
几乎所有函数都与列表中的等效函数相同,返回完全相同的结果,并且都具有两种形式:一种具有相同语法,并行处理每个元素;另一种接受一个可选的 "malt",即如何并行化操作的规范。
fold 是唯一的例外,并行 fold 与线性 fold 不同。该模块还包含一个简单的 mapreduce 实现,以及函数 runmany。所有其他函数都通过 runmany 实现,runmany 是并行列表操作的泛化。
ec_semver
一个完整的 semver 标准解析器。包含一套完整的符合规范的比较函数。
ec_lists
一组额外的列表操作函数,旨在补充 stdlib 中的 lists 模块。
ec_talk
一组简单的实用函数,用于促进与用户的命令行通信。
Signatures
其他语言内置了对 Interface 或 signature 功能的支持。Java 有 Interfaces,SML 有 Signatures。然而,Erlang 目前并不直接支持这种模型, 至少不是直接支持。有几种方法可以近似实现它。 我们定义了一种称为 signatures 的机制,以及几个模块 作为示例,并提供一组良好的 dictionary signatures。有关 signatures 的更多信息可以在 signature 找到。
ec_dictionary
一种支持键值关联的签名。map 不能 包含重复的键;每个键最多映射到一个值。
ec_dict
这提供了基于 erlang 的 dicts 实现的 ec_dictionary 签名。 ec_dictionary 的函数文档在此同样适用。
ec_gb_trees
这提供了基于 erlang 的 gb_trees 实现的 ec_dictionary 签名。 ec_dictionary 的函数文档在此同样适用。
ec_orddict
这提供了基于 erlang 的 orddict 实现的 ec_dictionary 签名。 ec_dictionary 的函数文档在此同样适用。
ec_rbdict
这提供了基于 Robert Virding 的 rbdict 模块实现的 ec_dictionary 签名。 ec_dictionary 的函数文档在此同样适用。