【问题标题】:haskell wreq param listhaskell wreq 参数列表
【发布时间】:2016-02-29 09:24:55
【问题描述】:

在优秀的wreq Haskell 库中,很容易将一个或多个查询参数添加到 URL:

opts = defaults & param "key" .~ ["value"]

但是我正在努力做的是一次添加一个 list 参数:

params = [("key1", "value1"), ("key2", "value2"), ("key3", "value3")]

我知道有函数params,但我找不到任何关于如何使用它的示例。

【问题讨论】:

    标签: http haskell url wreq


    【解决方案1】:

    param <key>params 都是镜头:

    param  :: Text -> Lens' Options [Text] 
    params ::         Lens' Options [(Text, Text)]
    

    无需过多介绍细节,您可以考虑用镜头聚焦某些东西,例如param "foo" 重点关注Options 中属于参数foo (*) 的一些[Text]。然后,您可以使用正确的函数更改/查询/操作这些值(请参阅 lens 包)。

    您已经使用(.~) 替换了当前值,您可以再次使用params

    default & params .~ [("key1", "value1"), ("key2", "value2"), ("key3", "value3")]
    

    在这种情况下,您可以将(.~) 视为

    (.~) :: Lens' a b -> b -> a -> a
    -- concrete:
    (.~) :: Lens' Options [(Text, Text)] -> [(Text, Text)] -> Options -> Options
    

    (*) 这不是 100% 正确的,因为镜头可以让你做各种各样的事情,但对于这种情况来说已经足够了。

    【讨论】:

    • 非常感谢 Zeta,谁能想到会这么简单!平常的我,试图把简单的事情复杂化 -_- !
    • @SimoneTrubian 不客气。如果此答案让您满意,请确保 to accept it,否则它将在多个过滤器中保持为“未回答”。
    猜你喜欢
    • 1970-01-01
    • 2015-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多