F$=zr      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopq )(c) David Johnson, Konstantin Zudov, 2014djohnson.m@gmail.com experimentalPOSIX Safe-InferredrConvert s to tuConvert v constrained a to wx"Turns empty monoids into Nothing  listToMaybe generalized for monoidsruxruxrux(c) David Johnson, 2014djohnson.m@gmail.com experimentalPOSIXNoneyPerson ID for a z Objectz Person Object{JSON Instancesy|z}~{y|z}~y|z }~{(c) David Johnson, 2014djohnson.m@gmail.com experimentalPOSIXNone Error Types Core Type Debug flagHackerNews API request methodRequest Builder for API )(c) David Johnson, Konstantin Zudov, 2014djohnson.m@gmail.com experimentalPOSIXNone68SEndpoint maps the id to the returned type on a type level The function dependency  id -> resp specifies that id uniquely determines resp Endpoint for Item$Generic function for making requestsTurn id" into path that points to resource((c) David Johnson, Konstantin Zudov 2014djohnson.m@gmail.com experimentalPOSIXNone6 for a   Object Comment ObjectJSON InstancesEndpoint instances    )(c) David Johnson, Konstantin Zudov, 2014djohnson.m@gmail.com experimentalPOSIXNone6Poll Id for a #Poll Option Id for a Poll Opt Object# Poll ObjectPoll JSON InstancesPoll JSON Instances Instance for  Instance for   !"#$%&'()*+,-./ !"#$%&'()*+,-./  !"# $%&'()*+,-./)(c) David Johnson, Konstantin Zudov, 2014djohnson.m@gmail.com experimentalPOSIXNone60TopStories List3 ID1 ID for a 33 Story ObjectJSON instances 0JSON InstancesEndpoint Instances for  TopStoriesID & 0Endpoint Instances for StoryID & 30123456789:;<=>0123456789:;<=>0123 456789:;<=> )(c) David Johnson, Konstantin Zudov, 2014djohnson.m@gmail.com experimentalPOSIXNone6?User ID for a A ObjectAA ObjectJSON InstancesEndpoint instances?@ABCDEFGHIJ ?@ABCDEFGHIJ?@A BCDEFGHIJ )(c) David Johnson, Konstantin Zudov, 2014djohnson.m@gmail.com experimentalPOSIXNone6Update ID for an Updated ObjectK Update ObjectJSON InstancesEndpoint Instances KLMNOPKLMNOPKLMNOP )(c) David Johnson, Konstantin Zudov, 2014djohnson.m@gmail.com experimentalPOSIXNone6Q ID for a S typeSTypesJSON InstancesEndpoint InstancesQRSTUVWXYZ[\]^QRSTUVWXYZ[\]^QRS TUVWXYZ[\]^ )(c) David Johnson, Konstantin Zudov, 2014djohnson.m@gmail.com experimentalPOSIXNone6_ Max Item IntMax Item ID for a b`Item ID for a b objectb Item TypeJSON MaxItem InstanceJSON InstancesEndpoint Instances for ` & bEndpoint Instances for  and __`abcdefg _`abcdefg_`abgfedc )(c) David Johnson, Konstantin Zudov, 2014djohnson.m@gmail.com experimentalPOSIXNonem  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefg)(c) David Johnson, Konstantin Zudov, 2014djohnson.m@gmail.com experimentalPOSIXNone h Retrieve a b by `i Retrieve a 3 by 1j Retrieve a   by k Retrieve a # by l Retrieve a  by m Retrieve a A by ?nRetrieve a Jobo'Retrieve the Top Stories on Hacker NewspRetrieve the largest ItemIdqRetrieve the latest updates hijklmnopqr  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrhijklmnopqbgfedc`a #$%&'()*+,-./ !"3456789:;<=>12ABCDEFGHIJ?@STUVWXYZ[\]^QRKLMNOP_0 hijklmnopq  !!""#$%&'()*+,,-./01234567899::;<=>?@ABCD E E F F G H I J K L M N O O P Q R S T T U U V W X Y Z [ \ ] ^ _ ` a a b c d e f ghijklmnopqrstuvwxyz{|}~8    ` hackernews-0.3.1.1Web.HackerNewsWeb.HackerNews.UtilWeb.HackerNews.PersonWeb.HackerNews.ClientWeb.HackerNews.EndpointWeb.HackerNews.CommentWeb.HackerNews.PollWeb.HackerNews.StoryWeb.HackerNews.UserWeb.HackerNews.UpdateWeb.HackerNews.JobWeb.HackerNews.ItemWeb.HackerNews.TypesHackerNewsError RequestErrorNotFound ParseErrorConnectionError HackerNews hackerNews CommentIdComment commentBy commentId commentKids commentParent commentText commentTime commentTypecommentDeleted commentDeadPollId PollOptIdPollOpt pollOptBy pollOptId pollOptParent pollOptScore pollOptText pollOptTime pollOptTypepollOptDeleted pollOptDeadPollpollBypollIdpollKids pollParts pollScorepollTextpollTime pollTitlepollType pollDeletedpollDead TopStoriesStoryIdStorystoryBystoryId storyKids storyScore storyTime storyTitle storyTypestoryUrl storyDeleted storyDeadUserIdUser userAbout userCreated userDelayuserId userKarma userSubmitted userDeleteduserDeadUpdate updateItemsupdateProfiles updateDeleted updateDeadJobIdJobjobByjobIdjobScorejobTextjobTimejobTitlejobTypejobUrl jobDeletedjobDeadMaxItemItemIdItemItemJob ItemStory ItemPollOptItemPoll ItemCommentgetItemgetStory getCommentgetPoll getPollOptgetUsergetJob getTopStories getMaxItem getUpdates fromSeconds integer-gmpGHC.Integer.TypeInteger time-1.4.2Data.Time.Clock.UTCUTCTimetoTextbaseGHC.ShowShow text-1.2.0.4Data.Text.InternalText monoidToMaybePersonIdPerson$fFromJSONPersonpersonBypersonId personKids personScore personTime personTitle personType personUrl personDeleted personDeaddebugbuildHNRequestEndpoint itemEndpoint getEndpointendpoint$fFromJSONComment$fEndpointCommentIdComment$fFromJSONPollOpt$fFromJSONPoll$fEndpointPollIdPoll$fEndpointPollOptIdPollOpt TopStoriesId$fFromJSONTopStories$fFromJSONStory $fEndpointTopStoriesIdTopStories$fEndpointStoryIdStory$fFromJSONUser$fEndpointUserIdUserUpdateId$fFromJSONUpdate$fEndpointUpdateIdUpdate $fFromJSONJob$fEndpointJobIdJob MaxItemId$fFromJSONMaxItem$fFromJSONItem$fEndpointItemIdItem$fEndpointMaxItemIdMaxItem