Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Haskell 获取追随者的所有推文_Haskell - Fatal编程技术网

Haskell 获取追随者的所有推文

Haskell 获取追随者的所有推文,haskell,Haskell,这是我尝试的allTweets功能 getBody1接受我的响应和IO(字符串[Tweets]) 我想获得列表中所有用户的tweet,但我只管理了头用户。 如何为列表中的所有用户获取 urldata2 :: String urldata2 = "https://api.twitter.com/1.1/statuses/user_timeline.json?screen_name=" allTweets :: [String] -> IO (Either String [Tweets])

这是我尝试的
allTweets
功能

getBody1接受我的响应和
IO(字符串[Tweets])

我想获得列表中所有用户的tweet,但我只管理了头用户。 如何为列表中的所有用户获取

urldata2 :: String
urldata2 = "https://api.twitter.com/1.1/statuses/user_timeline.json?screen_name="

allTweets :: [String] -> IO (Either String [Tweets])
allTweets listusers = do
    getWith authenticate (urldata2++(DL.head listusers) ) >>= \body1 -> getBody1 body1
正如Thomas建议的那样,我能够使用mapM解决我的问题。 我当时正面临map cause
(DL.map)的问题:(a->b)->[a]->[b]
它希望它在同一个容器中。
但是对于
mapM::(Monad m,Traversable t)=>(a->mb)->ta->m(tb)
我们可以用任何类似容器的格式发布它

你看过
mapM
吗?是的,我设法得到了它。谢谢你:)请随时发布并接受你的答案。请注意,你不需要这里的
do
关键字<代码>执行a==a。另外,我认为
mapM
实际上只是为了向后兼容而保留的,因为它只是
traverse
专用于monad,而不是所有的应用程序函子。@chepner它在
traverse
没有的地方肯定没有用处,但我认为
mapM
有时比
traverse
更具描述性。例如,
traverse print someValues
对我来说并不像
mapM print someValues
那么明显,尽管那里有YMMV@AdamSmith FWIW,我的里程确实不同:我真的很喜欢“traverse”这个名字。我认为它很好地捕捉到了“穿过一个结构,执行一个动作/计算/效果/你在每一步都做了什么”。它还唤起了方向感,这是
可遍历
(与
Functor
相反)的关键因素之一。
allTweets1 listusers =
    mapM (\listu -> (getWith authenticate (urldata2++(listu) ) >>= \body1 -> getBody1 body1)  ) listusers