dhall 无效的替代类型
dhall Invalid alternative type
我定义了一个包含两个元素的联合类型,如下所示:
FunctionCode.dhall
{- Function Code union -}
let StaticFC = ./StaticFunctionCode.dhall
let DynamicFC = ./DynamicFunctionCode.dhall
in < Static : StaticFC | Dynamic : DynamicFC >
StaticFC和DynamicFC两种类型定义如下:
静态FunctionCode.dhall
let FieldList = ./FieldList.dhall
let FunctionCodeType = ./FunctionCodeType.dhall
in
{ Type =
{ dlc : Natural
, fields : FieldList
, telemjson : Text
, fct : Natural
, timestamp : Optional Text
}
, default = { timestamp = None Text, fct = FunctionCodeType.Static }
}
动态FunctionCode.dhall
let FieldTypeID = ./FieldTypeID.dhall
let OptionList = ./OptionList.dhall
let FunctionCodeType = ./FunctionCodeType.dhall
in
{ Type =
{ idtype : FieldTypeID
, idindex : Natural
, options : OptionList
, fct : Natural
, timestamp : Optional Text
}
, default = { timestamp = None Text, fct = FunctionCodeType.Dynamic }
}
忽略其他定义的类型,下面是我尝试使用此联合编写 let 语句的方式:
let fc1 =
FunctionCode.Dynamic FunctionCode.Dynamic::{
idtype = FieldTypeID.U8
, idindex = 0
, options = [...]
}
in {fc1}
当我 运行 dhall-to-json
时,我收到以下错误:
Error: Invalid alternative type
6| < Static : StaticFC | Dynamic : DynamicFC >
FunctionCode.dhall:6:4
我尝试了一些不同的组合来使用这个已定义的联合,但没有成功。我错过了什么?
问题是 StaticFC
和 DynamicFC
是值,而不是类型。但是需要类型来定义 FunctionCodeType
联合类型。
您可以通过访问 StaticFC
和 DynamicFC
中包含的 Type
字段轻松解决此问题:
let StaticFC = ./StaticFunctionCode.dhall
let DynamicFC = ./DynamicFunctionCode.dhall
in < Static : StaticFC.Type | Dynamic : DynamicFC.Type >
我定义了一个包含两个元素的联合类型,如下所示:
FunctionCode.dhall
{- Function Code union -}
let StaticFC = ./StaticFunctionCode.dhall
let DynamicFC = ./DynamicFunctionCode.dhall
in < Static : StaticFC | Dynamic : DynamicFC >
StaticFC和DynamicFC两种类型定义如下:
静态FunctionCode.dhall
let FieldList = ./FieldList.dhall
let FunctionCodeType = ./FunctionCodeType.dhall
in
{ Type =
{ dlc : Natural
, fields : FieldList
, telemjson : Text
, fct : Natural
, timestamp : Optional Text
}
, default = { timestamp = None Text, fct = FunctionCodeType.Static }
}
动态FunctionCode.dhall
let FieldTypeID = ./FieldTypeID.dhall
let OptionList = ./OptionList.dhall
let FunctionCodeType = ./FunctionCodeType.dhall
in
{ Type =
{ idtype : FieldTypeID
, idindex : Natural
, options : OptionList
, fct : Natural
, timestamp : Optional Text
}
, default = { timestamp = None Text, fct = FunctionCodeType.Dynamic }
}
忽略其他定义的类型,下面是我尝试使用此联合编写 let 语句的方式:
let fc1 =
FunctionCode.Dynamic FunctionCode.Dynamic::{
idtype = FieldTypeID.U8
, idindex = 0
, options = [...]
}
in {fc1}
当我 运行 dhall-to-json
时,我收到以下错误:
Error: Invalid alternative type
6| < Static : StaticFC | Dynamic : DynamicFC >
FunctionCode.dhall:6:4
我尝试了一些不同的组合来使用这个已定义的联合,但没有成功。我错过了什么?
问题是 StaticFC
和 DynamicFC
是值,而不是类型。但是需要类型来定义 FunctionCodeType
联合类型。
您可以通过访问 StaticFC
和 DynamicFC
中包含的 Type
字段轻松解决此问题:
let StaticFC = ./StaticFunctionCode.dhall
let DynamicFC = ./DynamicFunctionCode.dhall
in < Static : StaticFC.Type | Dynamic : DynamicFC.Type >