2

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

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

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

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

我知道有功能params,但我找不到任何关于如何使用它的例子。

4

1 回答 1

3

param <key>和都是params镜头:

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

无需过多介绍细节,您可以将镜头想象为聚焦某些东西,例如param "foo"聚焦在[Text]属于Options参数foo(*) 的某些部分。然后,您可以使用正确的功能更改/查询/操作这些值(请参阅镜头包)。

您已经习惯(.~)了替换当前值,您可以再次使用它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% 正确的,因为镜头可以让你做各种各样的事情,但对于这种情况来说已经足够了。

于 2016-02-29T09:42:13.503 回答