{"id":15411092,"url":"https://github.com/7sharp9/write-you-an-inference-in-fsharp","last_synced_at":"2025-04-14T00:22:43.043Z","repository":{"id":54226025,"uuid":"121693377","full_name":"7sharp9/write-you-an-inference-in-fsharp","owner":"7sharp9","description":"Different type inference algorithms implemented in F#","archived":false,"fork":false,"pushed_at":"2021-03-02T12:59:22.000Z","size":113,"stargazers_count":163,"open_issues_count":0,"forks_count":8,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-03-27T14:21:56.499Z","etag":null,"topics":["fsharp","hindley-milner","polymorphism","typeinference","typesystems"],"latest_commit_sha":null,"homepage":null,"language":"F#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/7sharp9.png","metadata":{"files":{"readme":"README.md","changelog":null,"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":"2018-02-15T22:59:49.000Z","updated_at":"2025-02-20T16:42:55.000Z","dependencies_parsed_at":"2022-08-13T09:40:17.794Z","dependency_job_id":null,"html_url":"https://github.com/7sharp9/write-you-an-inference-in-fsharp","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/7sharp9%2Fwrite-you-an-inference-in-fsharp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/7sharp9%2Fwrite-you-an-inference-in-fsharp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/7sharp9%2Fwrite-you-an-inference-in-fsharp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/7sharp9%2Fwrite-you-an-inference-in-fsharp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/7sharp9","download_url":"https://codeload.github.com/7sharp9/write-you-an-inference-in-fsharp/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248800053,"owners_count":21163404,"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":["fsharp","hindley-milner","polymorphism","typeinference","typesystems"],"created_at":"2024-10-01T16:47:59.295Z","updated_at":"2025-04-14T00:22:42.947Z","avatar_url":"https://github.com/7sharp9.png","language":"F#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Write you an inference _in F#_\n\nThis repo is inspired by other great resources in this area but targeted at \nidiomatic and easy to follow F# code.  Saying that, type inference algorithms are not \nthe easiest to get your head round but this will be a place to describe different \ntypes and methods of doing type inference.  \n\nThe algorithms are split into pure and mutable Hindley-Milner type inference, and row polymorphism extension to it.\n\n## Hindley-Milner inference\n  * [Basic implementation based on Luca Cardellis paper](Hindley-Milner-Basic.md)  \n  * [Pure implmentation with combined constraints and solving](Hindley-Milner-Pure.md)\n  * [Pure implmentation with separate constraint gathering and solving](Hindley-Milner-Split-Solver.md)\n  * [Mutable implementation with rank optimisations](Hindley-Milner-Mutable.md)\n  \n## Hindley-Milner inference with row polymorphism\n  * [Mutable implementation with row polymorphism extension](Hindley-Milner-Mutable-Rowpolymorphism.md)\n  * [Pure implementation with row polymorphism extension](Hindley-Milner-Pure-Rowpolymorphism.md)\n\nThis repo grew out of a small language that I was tinkering with to test out various ideas around type systems, while reading one of the papers on rank n types I came across the following which is quite true:\n\n\u003eConsidering how many papers there are on type systems, there is surprising little \nliterature on type inference that is aimed unambiguously at implementors.\n  \nIf you have any suggestions or want to make any contributions please submit a PR, I would be happy to include new versions or improvements!\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F7sharp9%2Fwrite-you-an-inference-in-fsharp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F7sharp9%2Fwrite-you-an-inference-in-fsharp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F7sharp9%2Fwrite-you-an-inference-in-fsharp/lists"}