gpt4 book ai didi

haskell - 我怎样才能内联这个函数?

转载 作者:行者123 更新时间:2023-12-02 02:46:11 26 4
gpt4 key购买 nike

我有两个函数,但其​​中一个函数只能从另一个函数调用,所以我想内联辅助函数。我的代码如下所示:

data PoS =  N | V | Adj | Adv | Phr

posEntity :: Parser PoS
posEntity =
do pos <- string "N." <|>
string "V." <|>
string "Adj." <|>
string "Adv." <|>
string "Phr."
return (posToPoS pos)
<?> "part of speech"

posToPoS pos
| pos == "N." = N
| pos == "V." = V
| pos == "Adj." = Adj
| pos == "Adv." = Adv
| pos == "Phr." = Phr

显然 posToPoS 应该内联,但我不确定执行此类操作所需的语法。

谢谢!

最佳答案

您可以将定义中的字符串内联到 posToPos:

posToPoS "N." = N
posToPoS "V." = V
-- ... etc

或者,您可以直接在解析器中使用以下方法:

import Control.Applicative hiding (<|>)

posEntity :: Parser PoS
posEntity =
(string "N." *> pure N <|>
string "V." *> pure V <|>
string "Adj." *> pure Adj <|>
string "Adv." *> pure Adv <|>
string "Phr." *> pure Phr)<?> "part of speech"

(您可能需要在 string "foo"*> pure Foo 部分加上括号,我忘记了运算符优先级是什么)

关于haskell - 我怎样才能内联这个函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11125469/

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