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)
Config pA pB pC符号不关心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
是构造函数;您可以使用任何类型的函数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”)
。不过我还是先试试其他方法。谢谢。我采用了第二种方法使其发挥作用。我曾经尝试过这种方法,但我想当我第一次尝试的时候,一定是我弄乱了类型。谢谢。我采用了第二种方法使其发挥作用。我曾经尝试过这种方法,但我想当我第一次尝试的时候,一定是我弄乱了类型。