{"id":19489342,"url":"https://github.com/redprl/sml-typed-abts","last_synced_at":"2026-03-04T10:01:39.130Z","repository":{"id":2504903,"uuid":"43110081","full_name":"RedPRL/sml-typed-abts","owner":"RedPRL","description":"second-order abstract syntax","archived":false,"fork":false,"pushed_at":"2021-09-15T22:47:00.000Z","size":361,"stargazers_count":31,"open_issues_count":10,"forks_count":9,"subscribers_count":15,"default_branch":"master","last_synced_at":"2025-02-25T19:33:50.586Z","etag":null,"topics":["abstract-syntax","binding","syntax"],"latest_commit_sha":null,"homepage":"","language":"Standard ML","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/RedPRL.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}},"created_at":"2015-09-25T04:42:41.000Z","updated_at":"2022-05-11T16:24:00.000Z","dependencies_parsed_at":"2022-09-06T23:31:16.925Z","dependency_job_id":null,"html_url":"https://github.com/RedPRL/sml-typed-abts","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/RedPRL/sml-typed-abts","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RedPRL%2Fsml-typed-abts","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RedPRL%2Fsml-typed-abts/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RedPRL%2Fsml-typed-abts/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RedPRL%2Fsml-typed-abts/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/RedPRL","download_url":"https://codeload.github.com/RedPRL/sml-typed-abts/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RedPRL%2Fsml-typed-abts/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30078306,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-04T08:01:56.766Z","status":"ssl_error","status_checked_at":"2026-03-04T08:00:42.919Z","response_time":59,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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"}},"keywords":["abstract-syntax","binding","syntax"],"created_at":"2024-11-10T21:08:09.840Z","updated_at":"2026-03-04T10:01:34.871Z","avatar_url":"https://github.com/RedPRL.png","language":"Standard ML","funding_links":[],"categories":[],"sub_categories":[],"readme":"### sml-typed-abts\n\nThis is an implementation of Abstract Binding Trees from [Robert\nHarper](https://www.cs.cmu.edu/~rwh/)'s book, [Practical Foundations for\nProgramming Languages](https://www.cs.cmu.edu/~rwh/plbook/2nded.pdf).\n\nIn particular, this differs from many implementations of ABTs in the following\nrespects:\n\n- Unlike Nuprl-style ABTs, this is a library for *many-sorted* abstract binding\n  trees.\n\n### Getting Started\n#### Prerequisites\n\nYou need either SML/NJ or MLton. Either [download the binary SML/NJ\ninstaller](http://www.smlnj.org/) or, on OS X, use homebrew:\n\n    brew update \u0026\u0026 brew install smlnj\n\n#### Downloading the repository\n\nRecursively clone the repo:\n\n    git clone --recursive https://github.com/jonsterling/sml-typed-abts.git\n\nNote: whenever you pull anew from this repository, be sure to refresh the\nsubmodules:\n\n    git submodule update --init --recursive\n\n#### Running the example with MLton\n\nTo run the example with MLton, use the included script, and then run the\nresulting executable:\n\n    ./scripts/mlton.sh\n    ./example.out\n\nEventually, a prompt should appear at which you can parse and sort-check/infer\nABT expressions. Here's an example session:\n\n    Type an expression at the prompt\n\n    \u003e \\x. x\n    lam([x@10].x@10)\n\n    \u003e (\\f. f 3) (\\x. x)\n    Error: Fail: expected exp == nat\n\n    \u003e (\\f. f #3) (\\x. x)\n    ap(lam([f@31].ap(f@31; num(3))); lam([x@32].x@32))\n\nThe printer is in \"debug mode\", which means that all variables are\nannotated with a unique index; this is useful for convincing oneself that\nvariables are being bound properly.\n\n#### Running the example in SML/NJ\n\nStart the SML REPL:\n\n    cd sml-typed-abts\n    rlwrap sml\n    Standard ML of New Jersey v110.78 [built: Sun Apr 26 01:06:11 2015]\n    -\n\nAt the `-` prompt, type:\n\n    - CM.make \"example.cm\";\n\nYou should see a lot of compilation messages and then, the prompt should\nappear:\n\n    Type an expression at the prompt\n\n    \u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fredprl%2Fsml-typed-abts","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fredprl%2Fsml-typed-abts","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fredprl%2Fsml-typed-abts/lists"}