{"id":17892335,"url":"https://github.com/trskop/tagged-exception-core","last_synced_at":"2025-03-23T00:32:33.585Z","repository":{"id":26481354,"uuid":"29933292","full_name":"trskop/tagged-exception-core","owner":"trskop","description":"Reflect exceptions using phantom types.","archived":false,"fork":false,"pushed_at":"2016-02-06T15:21:04.000Z","size":120,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-18T15:54:29.890Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Haskell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"ioniodi/Super-Mario","license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/trskop.png","metadata":{"files":{"readme":"README.md","changelog":"ChangeLog.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-01-27T20:24:55.000Z","updated_at":"2021-07-22T14:59:09.000Z","dependencies_parsed_at":"2022-08-20T23:40:14.051Z","dependency_job_id":null,"html_url":"https://github.com/trskop/tagged-exception-core","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trskop%2Ftagged-exception-core","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trskop%2Ftagged-exception-core/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trskop%2Ftagged-exception-core/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trskop%2Ftagged-exception-core/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/trskop","download_url":"https://codeload.github.com/trskop/tagged-exception-core/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245040235,"owners_count":20551297,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-28T14:35:53.022Z","updated_at":"2025-03-23T00:32:32.841Z","avatar_url":"https://github.com/trskop.png","language":"Haskell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Tagged Exception Core\n\n[![Hackage](http://img.shields.io/hackage/v/tagged-exception-core.svg)][Hackage: tagged-exception-core]\n[![Hackage Dependencies](https://img.shields.io/hackage-deps/v/tagged-exception-core.svg)](http://packdeps.haskellers.com/reverse/tagged-exception-core)\n[![Haskell Programming Language](https://img.shields.io/badge/language-Haskell-blue.svg)][Haskell.org]\n[![BSD3 License](http://img.shields.io/badge/license-BSD3-brightgreen.svg)][tl;dr Legal: BSD3]\n\n[![Build](https://travis-ci.org/trskop/tagged-exception-core.svg)](https://travis-ci.org/trskop/tagged-exception-core)\n\n\n## Description\n\nReflect exceptions using phantom types. This library provides core API and\nothers may build on top of it.\n\n\n## Usage Example\n\nExample of reflecting reised exception in type:\n\n```Haskell\n{-# LANGUAGE DeriveDataTypeable #-}\n\nimport Control.Exception (Exception)\n\nimport Control.Monad.TaggedException (Throws)\nimport qualified Control.Monad.TaggedException as E (liftT, throw)\nimport Data.Typeable (Typeable)\n\n\ndata NotReady = NotReady String\n    deriving (Show, Typeable)\n        -- Both required by Exception class\n\ninstance Exception NotReady\n\nmyFunction :: Input -\u003e Throws NotReady IO Output\nmyFunction input = do\n\n    -- ... some stuff ...\n\n    -- isReady :: Input -\u003e IO Bool\n    ready \u003c- E.liftT $ isReady input\n    unless ready\n        . E.throw $ NotReady \"Resource of myFunction is not ready.\"\n\n    -- ... some other stuff ...\n```\n\n## License\n\nThe BSD 3-Clause License, see [LICENSE][] file for details.\n\n\n## Contributions\n\nContributions, pull requests and bug reports are welcome! Please don't be\nafraid to contact author using GitHub or by e-mail.\n\n\n\n[Hackage: tagged-exception-core]:\n  http://hackage.haskell.org/package/tagged-exception-core\n  \"tagged-exception-core package on Hackage\"\n[Haskell.org]:\n  http://www.haskell.org\n  \"The Haskell Programming Language\"\n[LICENSE]:\n  https://github.com/trskop/tagged-exception-core/blob/master/LICENSE\n  \"License of endo package.\"\n[tl;dr Legal: BSD3]:\n  https://tldrlegal.com/license/bsd-3-clause-license-%28revised%29\n  \"BSD 3-Clause License (Revised)\"\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftrskop%2Ftagged-exception-core","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftrskop%2Ftagged-exception-core","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftrskop%2Ftagged-exception-core/lists"}