2017-02-24 12 views
1

私は、ハスケルとの勢いを拾い始めて、lensのような私が毎日実行する抽象を愛しています。APIとのインターフェイスのためのHTTPレンズ?

私は、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 

私はそれがATの仮定しています適用上の問題が少なかったり、おそらくMonadが必要なのでしょうか?

私は、このレンズがレンズの法則を満たしていることを想像することができました(ある意味では、まだ私にとってはあまりにもぼやけています)が、レンズには文字列を出すハードウェアがあります。このような他のデータ構造。

これは追求する価値のある旅ですか?

+1

'wreq'をチェックしましたか? – Sibi

答えて

1

いいえ、これは残念ながらレンズとは関係ありません。レンズはそれはあなたがそれだけでこのトピックに関連されることはありません、あなたが探している出力を生成するためにHaskellで書くでしょういくつかの巧妙なものがありますが可能です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 

を満たすものです。

+0

'view' =' GET'、 'set' =' POST'または 'PUT'、レンズに酷似して見えますが間違っていますか? –

+0

あなたは単に記憶と検索というもっと一般的な設定でレンズを考えているようです。レンズは、具体的には、上記の法律に示されているように相互作用する機能に関するものです。これらの法律は、実際の関数の適用を指しており、REST APIとやりとりするような行動の一般的な概念ではありません。 – glguy

関連する問題