E= q      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnop )(c) David Johnson, Konstantin Zudov, 2014djohnson.m@gmail.com experimentalPOSIX Safe-InferredqConvert r to stConvert u constrained a to vw"Turns empty monoids into Nothing  listToMaybe generalized for monoidsqtwqtwqtw(c) David Johnson, 2014djohnson.m@gmail.com experimentalPOSIXNonexPerson ID for a y Objecty Person ObjectzJSON Instancesx{y|}~zx{y|}~x{y |}~z(c) David Johnson, 2014djohnson.m@gmail.com experimentalPOSIXNone Error Types Core TypeHackerNews 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  ObjectComment 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 experimentalPOSIXNone6/TopStories List2 ID0 ID for a 22 Story ObjectJSON instances /JSON InstancesEndpoint Instances for  TopStoriesID & /Endpoint Instances for StoryID & 2/0123456789:;<=/0123456789:;<=/012 3456789:;<= )(c) David Johnson, Konstantin Zudov, 2014djohnson.m@gmail.com experimentalPOSIXNone6>User ID for a @ Object@@ ObjectJSON InstancesEndpoint instances>?@ABCDEFGHI >?@ABCDEFGHI>?@ ABCDEFGHI )(c) David Johnson, Konstantin Zudov, 2014djohnson.m@gmail.com experimentalPOSIXNone6Update ID for an Updated ObjectJ Update ObjectJSON InstancesEndpoint Instances JKLMNOJKLMNOJKLMNO )(c) David Johnson, Konstantin Zudov, 2014djohnson.m@gmail.com experimentalPOSIXNone6P ID for a R typeRTypesJSON InstancesEndpoint InstancesPQRSTUVWXYZ[\]PQRSTUVWXYZ[\]PQR STUVWXYZ[\] )(c) David Johnson, Konstantin Zudov, 2014djohnson.m@gmail.com experimentalPOSIXNone6^ Max Item IntMax Item ID for a a_Item ID for a a objecta Item TypeJSON MaxItem InstanceJSON InstancesEndpoint Instances for _ & aEndpoint Instances for  and ^^_`abcdef ^_`abcdef^_`afedcb )(c) David Johnson, Konstantin Zudov, 2014djohnson.m@gmail.com experimentalPOSIXNonem  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdef)(c) David Johnson, Konstantin Zudov, 2014djohnson.m@gmail.com experimentalPOSIXNone g Retrieve a a by _h Retrieve a 2 by 0i Retrieve a  by j Retrieve a " by k Retrieve a  by l Retrieve a @ by >mRetrieve a Jobn'Retrieve the Top Stories on Hacker NewsoRetrieve the largest ItemIdpRetrieve the latest updates ghijklmnopq  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqghijklmnopafedcb_` "#$%&'()*+,-. !23456789:;<=01@ABCDEFGHI>?RSTUVWXYZ[\]PQJKLMNO^/ ghijklmnop  !!"#$%&'()*++,-./012345678899:;<=>?@ABC D D E E F G H I J K L M N N O P Q R S S T T U V W X Y Z [ \ ] ^ _ ` ` a b c d e fghijklmnopqrstuvwxyz{|}~7    _ hackernews-0.3.0.0Web.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 RequestError 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.0Data.Text.InternalText monoidToMaybePersonIdPerson$fFromJSONPersonpersonBypersonId personKids personScore personTime personTitle personType personUrl personDeleted personDeadbuildHNRequestEndpoint itemEndpoint getEndpointendpoint$fFromJSONComment$fEndpointCommentIdComment$fFromJSONPollOpt$fFromJSONPoll$fEndpointPollIdPoll$fEndpointPollOptIdPollOpt TopStoriesId$fFromJSONTopStories$fFromJSONStory $fEndpointTopStoriesIdTopStories$fEndpointStoryIdStory$fFromJSONUser$fEndpointUserIdUserUpdateId$fFromJSONUpdate$fEndpointUpdateIdUpdate $fFromJSONJob$fEndpointJobIdJob MaxItemId$fFromJSONMaxItem$fFromJSONItem$fEndpointItemIdItem$fEndpointMaxItemIdMaxItem