úÎFd=št      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrs )(c) David Johnson, Konstantin Zudov, 2014djohnson.m@gmail.com experimentalPOSIX Safe-InferredtConvert u to vwConvert x constrained a to yz"Turns empty monoids into Nothing  listToMaybe generalized for monoidstwztwztwz(c) David Johnson, 2014djohnson.m@gmail.com experimentalPOSIXNone{Person ID for a | Object| Person Object}JSON Instances{~|€‚ƒ„…†‡ˆ‰}{~|€‚ƒ„…†‡ˆ‰{~| €‚ƒ„…†‡ˆ‰}(c) David Johnson, 2014djohnson.m@gmail.com experimentalPOSIXNone  Error Types Core TypeŠ Debug flagHackerNews API request method‹Request Builder for API Š‹‹Š‹)(c) David Johnson, Konstantin Zudov, 2014djohnson.m@gmail.com experimentalPOSIXNone68ŒSEndpoint 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 requestsŒTurn id" into path that points to resourceŽŒŽŒŽ((c) David Johnson, Konstantin Zudov 2014djohnson.m@gmail.com experimentalPOSIXNone6 for a   Object Comment ObjectJSON Instances‘Endpoint instances ‘   ‘)(c) David Johnson, Konstantin Zudov, 2014djohnson.m@gmail.com experimentalPOSIXNone6Poll Id for a #Poll Option Id for a Poll Opt Object# Poll Object’Poll JSON Instances“Poll JSON Instances”Œ Instance for •Œ Instance for   !"#$%&'()*+,-./’“”• !"#$%&'()*+,-./  !"# $%&'()*+,-./’“”•)(c) David Johnson, Konstantin Zudov, 2014djohnson.m@gmail.com experimentalPOSIXNone60TopStories List–4 ID2 ID for a 44 Story Object—JSON instances 0˜JSON Instances™Endpoint Instances for  TopStoriesID & 0šEndpoint Instances for StoryID & 401–›23456789:;<=>?—˜™š01–›23456789:;<=>?01–›234 56789:;<=>?—˜™š )(c) David Johnson, Konstantin Zudov, 2014djohnson.m@gmail.com experimentalPOSIXNone6@User ID for a B ObjectBB ObjectœJSON InstancesEndpoint instances@ABCDEFGHIJKœ @ABCDEFGHIJK@AB CDEFGHIJKœ )(c) David Johnson, Konstantin Zudov, 2014djohnson.m@gmail.com experimentalPOSIXNone6žUpdate ID for an Updated ObjectL Update ObjectŸJSON Instances Endpoint Instances žĄLMNOPQŸ žĄLMNOPQžĄLMNOPQŸ  )(c) David Johnson, Konstantin Zudov, 2014djohnson.m@gmail.com experimentalPOSIXNone6R ID for a T typeTTypesĒJSON InstancesĢEndpoint InstancesRSTUVWXYZ[\]^_ĒĢRSTUVWXYZ[\]^_RST UVWXYZ[\]^_ĒĢ )(c) David Johnson, Konstantin Zudov, 2014djohnson.m@gmail.com experimentalPOSIXNone6` Max Item IntĪMax Item ID for a dbItem ID for a d objectd Item TypeĨJSON MaxItem InstanceĶJSON Instances§Endpoint Instances for b & dĻEndpoint Instances for Ī and ``aĪĐbcdefghiĨĶ§Ļ `aĪĐbcdefghi`aĪĐbcdihgfeĨĶ§Ļ )(c) David Johnson, Konstantin Zudov, 2014djohnson.m@gmail.com experimentalPOSIXNonemŒŽ  !"#$%&'()*+,-./01–›23456789:;<=>?@ABCDEFGHIJKžĄLMNOPQRSTUVWXYZ[\]^_`aĪĐbcdefghi)(c) David Johnson, Konstantin Zudov, 2014djohnson.m@gmail.com experimentalPOSIXNone j Retrieve a d by bk Retrieve a 4 by 2l Retrieve a   by m Retrieve a # by n Retrieve a  by o Retrieve a B by @pRetrieve a Jobq'Retrieve the Top Stories on Hacker NewsrRetrieve the largest ItemIdsRetrieve the latest updates jklmnopqrst  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstjklmnopqrsdihgfebc #$%&'()*+,-./ !"456789:;<=>?23BCDEFGHIJK@ATUVWXYZ[\]^_RSLMNOPQ`a01 jklmnopqrsŠ  !!""#$%&'()*+,,-./012345678899::;<=>?@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{|}~€‚ƒ‚„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžš Ÿ   Ą Ē Ģ Ą Ī Ĩ Ķ § Ļ Đ Š ĶŦhackernews-0.5.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 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.1.1Data.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