Haskell 如何部分解析产品类型 data Config=Config{ a::布尔, b::类型1, c::类型2 } 解析布尔 pB::解析器类型1 分析器类型2 pConfig::解析器配置 pConfig=Config-pA-pB-pC opts::ParserInfo配置 opts=info(pConfig助手) (fullDesc progDesc“我的CLI”标题“CLI可执行文件”) main::IO() main=do (Config a b c)

Haskell 如何部分解析产品类型 data Config=Config{ a::布尔, b::类型1, c::类型2 } 解析布尔 pB::解析器类型1 分析器类型2 pConfig::解析器配置 pConfig=Config-pA-pB-pC opts::ParserInfo配置 opts=info(pConfig助手) (fullDesc progDesc“我的CLI”标题“CLI可执行文件”) main::IO() main=do (Config a b c),haskell,optparse-applicative,Haskell,Optparse Applicative,Config pA pB pC符号不关心Config是构造函数;您可以使用任何类型的函数Bool->Type1->Type2->Config。如果不想解析Type2,可以使用Bool->Type1->Config类型的任何函数 config':Bool->Type1->config config'abc=配置absomeDefaultType2 pConfig::解析器配置 pConfig=config'pA pB 同样地,您使用Config构造函数,但将pure值而不是解析器连接到其第三个参

Config pA pB pC符号不关心
Config
是构造函数;您可以使用任何类型的函数
Bool->Type1->Type2->Config
。如果不想解析
Type2
,可以使用
Bool->Type1->Config
类型的任何函数

config':Bool->Type1->config
config'abc=配置absomeDefaultType2
pConfig::解析器配置
pConfig=config'pA pB
同样地,您使用
Config
构造函数,但将
pure
值而不是解析器连接到其第三个参数

pConfig::解析器配置
pConfig=Config pA pB pure someDefaultType2
(无论哪种方式,如果您想获得
配置
,您都需要提供
类型2
的值。)

配置pA pB pC符号不关心
配置
是构造函数;您可以使用任何类型的函数
Bool->Type1->Type2->Config
。如果不想解析
Type2
,可以使用
Bool->Type1->Config
类型的任何函数

config':Bool->Type1->config
config'abc=配置absomeDefaultType2
pConfig::解析器配置
pConfig=config'pA pB
同样地,您使用
Config
构造函数,但将
pure
值而不是解析器连接到其第三个参数

pConfig::解析器配置
pConfig=Config pA pB pure someDefaultType2

(无论哪种方式,如果您想获得
配置
,您都需要提供
类型2
的值。)

创建一个
Parser-Config'
并定义
Config'
只包含
a
b
,然后创建一个
f::Config'->配置,用默认值填充c值……您需要提供一些
pC
,但不必是解析任何实际字符串的东西;它可能只是一个硬编码的常量解析器,比如
pC=pure someValueOfType2
@chepner我试过了,但对于涉及的类型,我无法让它工作,或者可能是我没有用这种方法进行足够的努力。@Bakuriu我现在有类似的东西,它确实工作。我想知道是否有一个更干净的方法已经提供了不知何故我失踪。我确实试过浏览文档。在最坏的情况下,可以使用
pC=pure(错误“unparsed Type2”)
。不过,我会先尝试其他方法。制作一个
Parser-Config'
,并定义
Config'
只包含
a
b
,然后创建一个
f::Config'->Config
,用默认值填充c值……您需要提供一些
pC
,但这不一定是解析任何实际字符串的东西;它可能只是一个硬编码的常量解析器,比如
pC=pure someValueOfType2
@chepner我试过了,但对于涉及的类型,我无法让它工作,或者可能是我没有用这种方法进行足够的努力。@Bakuriu我现在有类似的东西,它确实工作。我想知道是否有一个更干净的方法已经提供了不知何故我失踪。我确实试过浏览文档。在最坏的情况下,可以使用
pC=pure(错误“unparsed Type2”)
。不过我还是先试试其他方法。谢谢。我采用了第二种方法使其发挥作用。我曾经尝试过这种方法,但我想当我第一次尝试的时候,一定是我弄乱了类型。谢谢。我采用了第二种方法使其发挥作用。我曾经尝试过这种方法,但我想当我第一次尝试的时候,一定是我弄乱了类型。