{"id":17822168,"url":"https://github.com/samuelschlesinger/memoization","last_synced_at":"2025-04-02T10:34:05.850Z","repository":{"id":88732011,"uuid":"247459801","full_name":"SamuelSchlesinger/memoization","owner":"SamuelSchlesinger","description":"Explorations with memoization in Haskell","archived":false,"fork":false,"pushed_at":"2020-03-20T10:00:22.000Z","size":15,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-02-08T01:41:21.089Z","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":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SamuelSchlesinger.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-03-15T12:13:33.000Z","updated_at":"2020-03-20T19:49:06.000Z","dependencies_parsed_at":null,"dependency_job_id":"9f783b56-0d32-4b72-9671-05a764c5b4b1","html_url":"https://github.com/SamuelSchlesinger/memoization","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SamuelSchlesinger%2Fmemoization","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SamuelSchlesinger%2Fmemoization/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SamuelSchlesinger%2Fmemoization/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SamuelSchlesinger%2Fmemoization/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SamuelSchlesinger","download_url":"https://codeload.github.com/SamuelSchlesinger/memoization/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246798001,"owners_count":20835694,"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-27T17:36:29.288Z","updated_at":"2025-04-02T10:34:05.827Z","avatar_url":"https://github.com/SamuelSchlesinger.png","language":"Haskell","readme":"# Memoization and Dynamic Programming in Haskell\n\nTypically, when one thinks of memoization and dynamic programming, they think\nof hiding some sort of mutable data structure underneath a function call where\nthe function call checks if that particular cell has been populated yet, doing\nsome work to populate it if not.\n\nIn Haskell, we can lazily initialize the entire table, and then index into it\nimmediately without doing all of the work, which allows us to write dynamic\nprograms in a much more declarative way. The machinery to do this is contained\nin Memo, some examples are contained in Examples, and a cute little test suite\nis contained in Test.\n\nThis work was inspired by [Fun with Type Functions](https://www.cs.tufts.edu/comp/150FP/archive/simon-peyton-jones/typefun.pdf).\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsamuelschlesinger%2Fmemoization","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsamuelschlesinger%2Fmemoization","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsamuelschlesinger%2Fmemoization/lists"}