{"id":224127,"name":"references","ecosystem":"hackage","description":"References are data accessors that can read, write or update the accessed infromation through their context. They are first-class values, can be passed in functions, transformed, combined. References generalize lenses, folds and traversals for haskell (see: https://hackage.haskell.org/package/lens).\n\nReferences are more general than field selectors in traditional languages.\n\nReferences are first-class values. If there is a struct in C, for example, with an int field fl, then fl can only be used as part of an expression. One can not generalize a function to take a field selector and transform the selected data or use it in other ways.\n\nThey can have different meanings, while field accessors can only represent data-level containment. They can express uncertain containment (like field selectors of C unions), different viewpoints of the same data, and other concepts.\n\nThere are two things that references can do but the previously mentioned access methods don't.\n\nReferences can cooperate with monads, for example IO. This opens many new applications.\n\nReferences can be added using the \u0026+\u0026 operator, to create new lenses more easily.\n\nBasic idea taken from the currently not maintained package https://hackage.haskell.org/package/yall.\n\nAn example use of the references (a logger application that spawns new threads to update a global log):\n\nThere are a bunch of predefined references for datatypes included in standard libraries.\n\nNew references can be created in several ways:\n\nFrom getter, setter and updater, using the reference function.\n\nFrom getter and setter, using one of the simplified functions (lens, simplePartial, partial, ...).\n\nUsing the Data.Traversal instance on a datatype to generate a traversal of each element.\n\nUsing lenses from Control.Lens package. There are a lot of packages defining lenses, folds and traversals\nfor various data structures, so it is very useful that all of them can simply be converted into a reference.\n\nGenerating references for newly defined datatypes using the makeReferences Template Haskell function.","homepage":"https://github.com/lazac/references","licenses":"BSD-3-Clause","normalized_licenses":["BSD-3-Clause"],"repository_url":"https://github.com/lazac/references","keywords_array":["bsd3","control","library","Propose Tags"],"namespace":null,"versions_count":14,"first_release_published_at":"2014-07-23T09:35:50.000Z","latest_release_published_at":"2017-11-28T00:57:57.000Z","latest_release_number":"0.3.3.1","last_synced_at":"2026-09-18T22:52:48.567Z","created_at":"2022-04-06T00:42:30.959Z","updated_at":"2026-09-22T04:17:22.394Z","registry_url":"https://hackage.haskell.org/package/references","install_command":"cabal install references","documentation_url":null,"metadata":{},"repo_metadata":{"id":18877529,"uuid":"22094814","full_name":"nboldi/references","owner":"nboldi","description":"First-class functional references generalized for monadic and IO computations.","archived":false,"fork":false,"pushed_at":"2023-03-08T15:50:09.000Z","size":126,"stargazers_count":4,"open_issues_count":6,"forks_count":10,"subscribers_count":4,"default_branch":"master","last_synced_at":"2026-08-27T19:41:56.414Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"http://hackage.haskell.org/package/references","language":"Haskell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nboldi.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,"governance":null}},"created_at":"2014-07-22T07:25:23.000Z","updated_at":"2018-10-10T13:25:20.000Z","dependencies_parsed_at":"2023-07-12T15:52:00.197Z","dependency_job_id":null,"html_url":"https://github.com/nboldi/references","commit_stats":null,"previous_names":["lazac/references"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/nboldi/references","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nboldi%2Freferences","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nboldi%2Freferences/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nboldi%2Freferences/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nboldi%2Freferences/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nboldi","download_url":"https://codeload.github.com/nboldi/references/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nboldi%2Freferences/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":341189360,"owners_count":37577216,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-08-22T15:14:58.755Z","status":"online","status_checked_at":"2026-09-22T02:00:07.665Z","response_time":55,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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"},"owner_record":{"login":"nboldi","name":"Boldizsár Németh","uuid":"2959869","kind":"user","description":null,"email":"","website":null,"location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/2959869?u=2cda509a0d47eb0f9a416b207b81561d78f9d81f\u0026v=4","repositories_count":25,"last_synced_at":"2023-05-30T05:30:37.306Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/nboldi","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2022-11-05T06:13:43.044Z","updated_at":"2023-05-30T05:30:37.313Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nboldi","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nboldi/repositories"},"tags":[{"name":"0.3","sha":"ce3c73a721e3014e6e8874ac8ae5d5da9e7d8381","kind":"commit","published_at":"2014-10-19T19:17:58.000Z","download_url":"https://codeload.github.com/nboldi/references/tar.gz/0.3","html_url":"https://github.com/nboldi/references/releases/tag/0.3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/nboldi/references@0.3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nboldi%2Freferences/tags/0.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nboldi%2Freferences/tags/0.3/manifests"},{"name":"0.2.1.2","sha":"9a0149742c49b1bae6c5c51f56971af80eecea87","kind":"commit","published_at":"2014-09-19T08:30:30.000Z","download_url":"https://codeload.github.com/nboldi/references/tar.gz/0.2.1.2","html_url":"https://github.com/nboldi/references/releases/tag/0.2.1.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/nboldi/references@0.2.1.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nboldi%2Freferences/tags/0.2.1.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nboldi%2Freferences/tags/0.2.1.2/manifests"},{"name":"0.2","sha":"7f845d0efafefc00f85f61e452e7debcbe11702f","kind":"commit","published_at":"2014-08-14T12:19:47.000Z","download_url":"https://codeload.github.com/nboldi/references/tar.gz/0.2","html_url":"https://github.com/nboldi/references/releases/tag/0.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/nboldi/references@0.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nboldi%2Freferences/tags/0.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nboldi%2Freferences/tags/0.2/manifests"}]},"repo_metadata_updated_at":"2026-09-22T04:17:22.394Z","dependent_packages_count":0,"downloads":11527,"downloads_period":"total","dependent_repos_count":15,"rankings":{"downloads":14.133936140152587,"dependent_repos_count":14.817745125741736,"dependent_packages_count":19.27098050296694,"stargazers_count":31.477818592822832,"forks_count":17.733823113873974,"docker_downloads_count":null,"average":19.486860695111613},"purl":"pkg:hackage/references","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/hackage/references","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/hackage/references","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/hackage/references/dependencies","status":null,"funding_links":[],"critical":false,"issue_metadata":{"last_synced_at":"2025-08-15T17:39:56.081Z","issues_count":27,"pull_requests_count":3,"avg_time_to_close_issue":6956842.318181818,"avg_time_to_close_pull_request":130.5,"issues_closed_count":22,"pull_requests_closed_count":2,"pull_request_authors_count":3,"issue_authors_count":3,"avg_comments_per_issue":0.7407407407407407,"avg_comments_per_pull_request":0.0,"merged_pull_requests_count":1,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":0,"past_year_pull_requests_count":0,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":null,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":0,"past_year_pull_request_authors_count":0,"past_year_issue_authors_count":0,"past_year_avg_comments_per_issue":null,"past_year_avg_comments_per_pull_request":null,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":0,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/nboldi%2Freferences/issues","maintainers":[{"login":"nboldi","count":26,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/nboldi"}],"active_maintainers":[]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/hackage.haskell.org/packages/references/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/hackage.haskell.org/packages/references/version_numbers","latest_version_url":"https://packages.ecosyste.ms/api/v1/registries/hackage.haskell.org/packages/references/latest_version","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/hackage.haskell.org/packages/references/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/hackage.haskell.org/packages/references/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/hackage.haskell.org/packages/references/codemeta","maintainers":[{"uuid":"lazac","login":"lazac","name":null,"email":null,"url":null,"packages_count":19,"html_url":"https://hackage.haskell.org/user/lazac","role":null,"created_at":"2022-11-14T19:28:42.432Z","updated_at":"2022-11-14T19:28:42.432Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/hackage.haskell.org/maintainers/lazac/packages"}]}