设置-基于行的设置操作
作者:罗伯特·马萨奥利
创建时间:2015年
安装步骤
如果你只是想安装setdown,那么你只需要确保你有Haskell和Cabal安装,然后:
电缆安装下放
这起作用是因为设置正在被黑客攻击!
什么是设置,它是如何工作的?
Setdown是用于基于行的集合操作的命令行工具。要使用setdown,您需要写一个“setdown定义文件“通常以.设置.如果你熟悉制造商然后你可以思考这个的.设置文件很像Makefile。在该文件中,您可以写入表格定义:
definitionName:“file-1.txt”/\“file-2.txt”
此行表示“definitionName”是一个新的集合定义,是“file-1.txt”和“file-2.txt”。你可以写出比这个更复杂的表达式。
设置项目示例
检查设置示例项目关于Bitbucket;它将向您展示设置的工作原理。
然而,要深入了解设置及其功能,您应该阅读下面的章节。
在沉降中每个文件都被视为元素列表,其中每行是一个元素。输入文件不需要以集合开头;它们可以包含重复项和未排序项元素。Setdown将自动对所有输入文件进行排序和消除重复,并将其转换为集合。
另一个重要点是相对性:具体来说,如果有一个.设置将其归档引用输入文件“some-elements.txt”,我从一个目录运行setdown可执行文件与目录不同.设置文件,然后设置在哪里查找some-elements.txt文件?答案是,我们总是查找与.设置文件。这就是您编写定义的地方,因此路径与之相关。它是在年设计的这样,您可以从目录树中的任何位置运行setdown,并且仍然可以得到相同的结果结果。这是一个重要的设置设计,每次运行都会得到相同的结果。设置被设计为当前工作目录不变,而不是许多其他命令行程序。请记住这一点。
设置操作和精度
在设置语言中,有许多支持的运算符:
例如,它们可以以下列方式使用:
定义:(A-B)\/(C/\D)
你可能想知道操作员精确度setdown语言使用,答案是:相反,根本没有操作员的精确性必须明确指定嵌套的精度带括号的表达式。这非常重要,因为它将导致分析错误否则。要解释显式运算符优先级的推理:
--下面是一个简单的表达式定义:A/\B\/C--现在,应该将其解析为:定义V1:(A/\B)\/C--或作为:定义V2:A/\(B\/C)--如果你假设B是空集(E),那么你可以看到这些表达式计算--完全不同。如果我们用这个假设来简化它们,那么它们就会变成:默认V1-空:EdefV2-bempty:A/\C
正如您所见,操作顺序对集合操作非常重要。因为它太关键了括号的使用是强制性的。
在设置语言中,您可以通过写双破折号(--),然后写注释到行尾。以下评论有效:
--这是a的定义,因为我们想做XA: “y.txt”-“z.txt”--这是一个注释在表达式中间的示例B: (A\/C)--\/D这仍然是一个注释,并且\/D从未发生过
您可以使用注释为可能在中阅读您的设置定义的任何人留言未来。这可能有助于向他们解释你想做什么。
写下自己的定义
在设置语言中,您可以按以下格式编写定义:
<定义名称>:<表达式>
其中定义名称是您为该表达式提供的标识符。表达式是对标识符或文件应用set操作。这是一个实际的例子应该有助于巩固这一含义。这是一个有效的设置文件:
--A是文件b-1.out和集合b的交点A: “b-1.out”/\b--B是文件a-1.out和a-2.out的并集B: “a-1.out”\/“a-2.out”--C是文件b-1.out和集合b的差值C: “b-1.输出”-b
通常,当您编写这些定义时,会将它们放在后缀为的文件中.设置.然后,您可以将此文件输入设置可执行文件,如下所示:
setdown路径/to/mydefinitions.setdown
有关可以传递给设置可执行文件的选项的更多信息,请尝试运行
setdown--帮助
祝你好运!
构建代码
要构建此项目的代码,只需Haskell已安装和阴谋集团然后:
新成立的阴谋集团
这应该在您的机器上构建代码。然后,如果修改代码,只需使用cabal run运行setdown:
阴谋集团下台--帮助阴谋集团下台--mydefinitions.setdown
这就是一切!
使用nix进行本地开发
如果要使用nix在本地安装setdown以进行本地开发,请执行以下操作:
$nix-shell$cabal沙盒初始化$cabal安装
这应该在本地以开发模式安装设置。
为沉降项目作出贡献
如果您希望为抵销项目做出贡献,请:
- 提出您打算解决/改进的问题。
- 等待罗伯特·马西奥利回复你,竖起大拇指。如果你抓到罗伯特Massaoli的“合并批准”意味着,如果你写的代码让Roberts满意然后将其合并。
- 编写代码。
- 提出公关并请罗伯特·马萨奥利(Robert Massaioli)审查。(也许可以反复一点,以便清理干净)
- 将其合并到中。
- 庆祝一下!
我很想为这个项目做出贡献,即使它看起来很复杂过程只是遵循它,因为它是为了让你和我的生活更轻松。干杯!