问题标签 [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 回答
645 浏览

haskell - 如何在 Dhall 中定义和使用类似 Haskell 的 sum 类型

如何在 Dhall 编程语言中定义类似于 Haskell 的 sum 类型的 sum 类型?

例如,如果在 Haskell 中我会定义

我的目的是在 Dhall 中定义一个记录,其中一个属性具有一组有限的可能值:

0 投票
1 回答
359 浏览

haskell - 如何在 dhall 中使用多态类型构造函数

我正在尝试在 Dhall 中定义多态类型。在 Haskell 中,它看起来像:

为此,我在 Dhall (mkMyType.dhall) 中定义了这个函数:

我还定义了一个函数,它返回该类型的构造函数,给定一个 (./mkMyTypeConstructor.dhall):

现在,为了使用它,我需要执行以下操作:

这是正确的方法吗?

最后,在我的用例中最理想的类型是对诸如“foo”之类的文本和自定义类型(例如 { somethingElse: {} })进行类型检查。这可能吗?

0 投票
1 回答
78 浏览

dhall - 如何避免 dhall-format 将自然语言文本转换为代码点?

我想在 dhall 文件中将日语句子写为文本。
但是 format 子命令将它们转换为代码点。

格式化的句子没有意义。
如何保持日文文本原样?
或者,我应该总是对日语句子使用原始文本功能吗?

0 投票
1 回答
357 浏览

dhall - `dhall format` 和 `dhall lint` 之间的区别

第一次玩dhall我看到它支持这两个选项:

两者有什么区别?从在我的示例项目上运行它们来看,它们似乎是同一件事。我本以为 linter 在某些方面比格式化更进一步(例如推荐“惯用的”dhall),但找不到任何信息。

0 投票
1 回答
345 浏览

dhall - 在 dhall 中拆分字符串

我在玩 dhall,想知道如何实现形式的字符串拆分功能

λ(text: Text) -> λ(delimiter: Text) -> List Text

但是,似乎 dhall没有代表单个字符的概念/类型。而Prelude中没有这个功能。

对 Text 值唯一能做的就是连接它们

所以……有可能吗?

0 投票
1 回答
524 浏览

haskell - 我如何在 dhall 中表示一个元组?

我想在 dhall 中表示 IPv4 地址,这样我就可以管理我的主机配置。

默认情况下,这被保存为文本;但这显然不能令人满意,因为它允许任何旧文本通过。我想将这些值保留为 8 位值的 4 元组。

我不认为 Dhall 可以本机允许这一点 - 我能看到的最接近的是 { a : Natural, b : Natural } 等的记录,但这在语法上很笨拙,并且仍然允许 0-255 之外的八位字节值。

假设我不能直接在 Dhall 中实现这一点,也许我可以在 Haskell 中定义一个类型,它可以自动从 Dhall 读取 4 长度的 Naturals 列表的值,

我的问题是:

  1. 我是否认为直接在 Dhall 中执行此操作是不可能的或异常困难的?
  2. 要在 Haskell 中定义这种类型,我需要定义一个Interpret;的实例吗?如果是这样,我如何定义一个实例,该实例将在 4 部分整数列表中读取,同时为错误构造(错误长度的列表、非整数列表或非列表)或输出提供有用的错误消息-of-bounds 值(不介于 0 和 255 之间的整数)。

这是我尝试过的:

但我正在努力寻找一种方法来表达可以读入的 dhall 值:

(我更愿意将 IP 表示为 [1,2,3,4];但遵循错误消息和文档pair似乎表明编号记录是要走的路)。

有没有办法实现我所追求的?

0 投票
1 回答
582 浏览

dhall - 如何处理 dhall 中的枚举?

我需要键入并生成一个包含字符串枚举值的配置。我设法定义了以下几行。最后,我需要将联合转换为字符串值。

这里包含联合/枚举的记录位于顶部,因此我可以很容易地访问它,但在最终配置中,ParameterObject si 嵌套得很深。

有没有办法

  • “遍历”任意记录结构并在任何适用的地方应用 locationToText ?
  • 或者用打印机提供 dhall-to-json/dhall-to-yaml 以获得这样的价值?
  • 还是更好的方法来定义我的枚举以更轻松地实现我的目标?
0 投票
1 回答
101 浏览

dhall - Dhall协会名单

我有一个联合类型,我希望一个字段成为关联列表。

在这里,我希望params成为一个关联列表,所以当我输入检查记录值时它会通过,例如

那么,应该是什么类型XXXBlah

0 投票
1 回答
54 浏览

dhall - 如何将关联列表作为异构列表处理?

我正在尝试使用 dhall 键入openapi 规范。按照开放 api 对象具有数组的安全要求对象的描述,我编写以下代码:

使用此代码,我 {"Foo":[],"AuthorizationHeader":[]}在尝试拥有 [{"Foo":[]},{"AuthorizationHeader":[]}]. 我怎样才能实现我的目标?

0 投票
1 回答
419 浏览

haskell - 如何在 Dhall 中表示“Data.Map Text Text”?

如果我在 Haskell 中有这样的类型:

我如何代表MyTypeDhall 的值?

我想要做的是MyType在 Dhall 中写入值,然后从 Haskell 中读取它并将其解组为MyType,如下所示:

我来自Data.AesonYAML,您可以在其中表示这样的地图:

(您可以使用MyTypeAeson's 将上述内容解析为类型decodeFileEither)。