Ski*_*gys 6 haskell applicative
我正在编写一个xml-conduit解析器,我更喜欢使用monadic的应用语法.有很多论据可以结合起来,但我在应用程序中有些迷失了.我当前的问题是8个参数,我只想使用第4个和第6个来构造结果.
我能使它发挥作用的唯一方法是:虽然平面解决方案应该有奇特的星星排列:
import Control.Applicative
a1 :: Applicative Text
a2 :: Applicative Text
a3 :: Applicative Text
a4 :: Applicative Text
a5 :: Applicative Text
a6 :: Applicative Text
a7 :: Applicative Text
a8 :: Applicative Text
data Data = Data Text Text
f :: Text -> Text -> Data
parser :: Applicative Data
parser = a1 *> a2 *> a3 *> (f <$> a4 <* a5 <*> a6) <* a7 <* a8
Run Code Online (Sandbox Code Playgroud)
有没有括号的形式的任何方式?
parser = f <$> a1 ?? a2 ?? a3 ?? a4 ?? a5 ?? a6 ?? a7 ?? a8
Run Code Online (Sandbox Code Playgroud)
Aha,建议链接使用两个参数的构造函数的Applicative样式解析器引导我得到答案:使用(<$),不要使用(*>).
parser = f <$ a1 <* a2 <* a3 <*> a4 <* a5 <*> a6 <* a7 <* a8
Run Code Online (Sandbox Code Playgroud)