问题标签 [dhall]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
178 浏览

yaml - dhall-to-yaml:表示嵌套在结构化 yaml 中的非结构化块

我正在玩 dhall,试图代表我在 dhall 中拥有的现有大型 yaml 文件。

具体来说,我正在尝试为大厅管道定义构建 dhall 类型和助手。定义大厅管道的部分 yaml 看起来像我在这里编写的 yaml。我列表中的每个资源都包含一个名称、一个类型和一个源,其结构完全取决于资源的类型。

没有详尽的资源列表供我定义,因为明天有人可能会创建一个新的资源,而且我不想每次第三方创建新的源类型时都更新我的类型。

我为此拥有的 dhall 也在这里,但我不确定我该如何代表source。我曾考虑在我的类型中省略该字段并指示消费者使用 dhall 的//运算符添加源,但随后很难将resources 嵌入 a[resource]并仍然进行类型检查。

如何为包含非结构化字段的资源定义 dhall 类型。

0 投票
1 回答
304 浏览

haskell - 有没有办法从 haskell 数据类型生成 dhall 模式?

我正在尝试使用 dhall 重写 Haksell 应用程序中使用的 BIG yaml 配置文件。为此,我正在使用json-to-dhall它需要一个 SCHEMA ,它是结果表达式的类型。问题是实际模式几乎不可能手动编写,因为它涉及到大量的求和类型(和嵌套的求和类型)。我尝试通过手动将 yaml 的某些部分转换为 dhall 来生成模式,然后运行dhall type​​. 这给出了一个我可以使用的模式jston-to-dhall之后。这适用于简单类型,但现在我面临联合(联合)的问题。Dhall 需要类型注释来编写我用来生成类型的文件......所以我想知道有没有办法(使用工具或修改我的 haskell 应用程序)将 Haskell 数据转储到正确的 dhall 文件或至少从 Haskell 类型生成模式。

0 投票
1 回答
189 浏览

dhall - 在 Dhall 的多行字符串中转义字符串插值

例如,我将如何转义以下字符串中的插值?

非多行字符串放在\插值前面,例如,替换"Foo ${bar}""Foo \${bar}",但这似乎不适用于多行字符串。

谢谢。

0 投票
1 回答
168 浏览

dhall - Dynamic records key type

I'm trying to generate some YAML containing a map with dynamic keys, as described here. This works if I use Text keys, but not when the keys have any other type. I'd like to use a union type for the keys if possible.

I've tried using different types for mapKey, including a union type and Natural, but with no success. I can work around the problem by converting all mapKey values to Text, but this isn't ideal.

Here's a minimal example of what I'm trying to do:

I'd expect it to generate YAML to be:

but instead, the generated YAML looks like this:

0 投票
1 回答
52 浏览

dhall - 传递文件名作为参数读取

我的配置从文件中读取证书。

这是一个简单的方法:

我还没有找到/path/to/cert/ca.crt作为参数传递的方法。例如:

有可能吗?如果没有,已知的解决方法是什么?

0 投票
2 回答
227 浏览

dhall - 如何在 dhall 中模拟 Python 连接函数?

我是没有 Haskell 背景的 dhall 新手。如何将字符串列表转换为值以逗号分隔的单个字符串?例如

我尝试了 List/fold,但想不出一种惯用的方法来摆脱多余的逗号。

谢谢

0 投票
1 回答
161 浏览

json - 如何在 Dhall 中表示以下 JSON?

我使用以下 JSON 来表示我们的基础架构。这是一个大大简化的版本。

这可以映射到文件夹,并且很容易从代码中处理。

但是,我想使用 Dhall 生成此文件以将可能的键限制为列表。

Dhall 对此表示支持:

唯一的问题是我找不到将记录键作为空类型的支持,只有值可以限制为那些。

这使我拥有以下方式的基础设施:

从代码中处理生成的 JSON 有点困难,我不能像其他表示一样轻松地引用我们基础设施的子集。

有没有办法让 Dhall 拥有像枚举(空类型的联合)这样的键?

0 投票
1 回答
453 浏览

dhall - 将不同模式与联合值相关联的惯用方式是什么?

我正在尝试使用 Dhall 类型来表示 Zuul-CI 项目的管道系统:管道可以使用具有不同触发事件的不同连接。

我想提供一个默认管道,为每种类型的连接设置正确的触发事件,其方式是:

我不得不为 ConnectionTrigger 使用 Union,因为合并函数期望该值是单一类型。

有没有办法以某种方式将 GerritTrigger 与 ConnectionTypes.Gerrit 关联并避免在 CheckPipeline 定义中键入事件类型(例如删除 ConnectionTrigger.Gerrit 注释)?

提前致谢 :)

0 投票
1 回答
89 浏览

dhall - 如何使用与抽象类型的合并?

我正在尝试实现一个merge与抽象类型一起使用的通用过程,但它总是失败❰merge❱ expects a record of handlers,即使调用者传递了一个记录类型:

是否可以指示 configType 将是一个记录类型,以便可以解释这个通用方法?

0 投票
2 回答
97 浏览

dhall - 如何使用 dhall 验证配置的内部一致性?

我将从一个几乎代表特使代理配置的配置示例开始:)

规则是,必须定义该名称clusters列表必须定义为在route配置部分中使用。如果您仔细观察,此配置将无法加载,因为bodhi_webis not bodhi-web. 我将如何在 Dhall 中对其进行编码?

一方面,我可以clusters在 let 绑定中作为列表,这会有所帮助,但没有什么强迫我使用绑定,实际上我希望将其clusters视为cluster:字段的总和类型?依赖类型可以在这里帮助我吗(即我记得在纯脚本中做了类似的事情,它对依赖类型编程的能力有限)

还是我应该只创建一个构造函数/验证器函数并滥用断言来验证它?

还是我不应该?:)