用于与API连接的HTTP镜头?

时间:2017-02-24 23:13:26

标签: haskell monads lens lenses

我刚开始接受Haskell的动力,并喜欢我每天遇到的抽象,例如lens

我认为REST API镜头对我们来说很有用,但在我花费数小时发现它之前是不可能的......是吗?

我看到的主要问题是我不是直接访问数据结构,而是输出所请求的字符串(我的镜头语法可能不对):

λ> over (user "robertplant") . set favoritesong

POST http://...com/api/user/robertplant/favoritesong
{
  ...
}

----

λ> over (user "robertplant") . view _1

GET http://...com/api/user/robertplant/favoritesong/123

我认为这至少是一个应用问题,或者可能需要一个Monad?

我的意思是,我可以想象这个镜头满足镜头规律(在某种意义上......它对我来说仍然有点模糊),但我还没有看到镜头有硬件用于输出琴弦/其他像这样的数据结构。

这是值得追求的旅程吗?

1 个答案:

答案 0 :(得分:0)

不,不幸的是,这与镜片没有任何关系。镜头是满足lens laws

的东西
view l (set l v s) ≡ v
set l (view l s) s ≡ s
set l v' (set l v s) ≡ set l v' s

你可能会在Haskell写一些聪明的东西来产生你正在寻找的输出,它只是与这个话题无关。