gpt4 book ai didi

haskell - optparse-应用回溯

转载 作者:行者123 更新时间:2023-12-02 10:43:32 25 4
gpt4 key购买 nike

我正在尝试使用 optparse-applicative程序中的库应根据参数的数量执行不同的操作。

例如,计算周长的程序的参数解析:

module TestOpts where

import Options.Applicative

type Length = Double

data PerimeterCommand
= GeneralQuadranglePerimeter Length Length Length Length
| RectanglePerimeter Length Length

parsePerimeterCommand :: Parser PerimeterCommand
parsePerimeterCommand = parseQuadPerimeter <|> parseRectPerimeter

parseQuadPerimeter = GeneralQuadranglePerimeter <$>
parseLength "SIDE1" <*>
parseLength "SIDE2" <*>
parseLength "SIDE3" <*>
parseLength "SIDE4"

parseRectPerimeter = RectanglePerimeter <$>
parseLength "WIDTH" <*> parseLength "HEIGHT"

parseLength name = argument auto (metavar name)

<|> 的第一个参数将永远成功解析。我认为需要某种参数回溯,类似于 Parsec 的 try组合器。

当第一个替代方案可能消耗下一个替代方案的一些参数时,关于如何解析替代参数集有什么想法吗?

最佳答案

请注意:此答案由 optparse-applicative 作者 Paolo Capriotti 撰写。

您不能直接使用 optparse-applicative 来执行此操作。主要特点optparse-applicative 的特点是可以按任意顺序解析选项。如果你想主要使用参数(这是位置的),你是最好有两级解析器:在中使用many argumentoptparse-applicative,然后将结果数组传递给普通解析器(比如使用秒差距)。如果您只有有位置参数,那么optparse-applicative 不会给你带来太多好处,你可以只解析使用秒差距手动输入参数。

关于haskell - optparse-应用回溯,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25956558/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com