{"id":20078772,"url":"https://github.com/nasso/hal","last_synced_at":"2025-06-24T06:06:57.514Z","repository":{"id":92714554,"uuid":"408191986","full_name":"nasso/hal","owner":"nasso","description":"A Scheme interpreter in Haskell.","archived":false,"fork":false,"pushed_at":"2022-01-16T01:52:22.000Z","size":176,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-06-24T06:06:55.841Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","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/nasso.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,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-09-19T17:28:06.000Z","updated_at":"2024-09-10T21:14:31.000Z","dependencies_parsed_at":"2023-03-21T03:33:11.507Z","dependency_job_id":null,"html_url":"https://github.com/nasso/hal","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/nasso/hal","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nasso%2Fhal","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nasso%2Fhal/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nasso%2Fhal/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nasso%2Fhal/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nasso","download_url":"https://codeload.github.com/nasso/hal/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nasso%2Fhal/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261618123,"owners_count":23185094,"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-11-13T15:16:33.368Z","updated_at":"2025-06-24T06:06:57.489Z","avatar_url":"https://github.com/nasso.png","language":"Haskell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# hal\n\nA Scheme interpreter in Haskell.\n\n## Features\n\n- Macro definitions with `define-syntax` and `syntax-rules`\n- A bare bones [standard library](lang/base.scm)\n- Syntax error messages with line and column numbers\n- Continuations with `call/cc`\n- Multiple values with `values`\n- Exact integers, rationals and floating point numbers\n- REPL with multi-line support\n\n### Builtins and standard library\n\n| Name               | Kind      |\n| ------------------ | --------- |\n| `-`                | procedure |\n| `*`                | procedure |\n| `/`                | procedure |\n| `+`                | procedure |\n| `\u003c`                | procedure |\n| `\u003c=`               | procedure |\n| `=`                | procedure |\n| `\u003e`                | procedure |\n| `\u003e=`               | procedure |\n| `abs`              | procedure |\n| `and`              | syntax    |\n| `append`           | procedure |\n| `apply`            | procedure |\n| `atom?`            | procedure |\n| `begin`            | syntax    |\n| `boolean?`         | procedure |\n| `call-with-values` | procedure |\n| `call/cc`          | procedure |\n| `car` .. `caaaar`  | procedure |\n| `case`             | syntax    |\n| `cdr` .. `cddddr`  | procedure |\n| `char?`            | procedure |\n| `complex?`         | procedure |\n| `cond`             | syntax    |\n| `cons*`            | procedure |\n| `cons`             | procedure |\n| `define-syntax`    | syntax    |\n| `define`           | syntax    |\n| `display`          | procedure |\n| `div`              | procedure |\n| `dump-heap`        | procedure |\n| `eq?`              | procedure |\n| `equal?`\\*         | procedure |\n| `eqv?`\\*           | procedure |\n| `error`\\*          | procedure |\n| `even?`            | procedure |\n| `exact?`           | procedure |\n| `expand`           | procedure |\n| `filter`           | procedure |\n| `fold-left`        | procedure |\n| `fold-right`       | procedure |\n| `if`               | syntax    |\n| `inexact?`         | procedure |\n| `lambda`           | syntax    |\n| `let*`             | syntax    |\n| `let`              | syntax    |\n| `letrec*`          | syntax    |\n| `letrec`\\*         | syntax    |\n| `list`             | procedure |\n| `map`              | procedure |\n| `max`              | procedure |\n| `min`              | procedure |\n| `mod`              | procedure |\n| `negative?`        | procedure |\n| `newline`          | procedure |\n| `not`              | procedure |\n| `null?`            | procedure |\n| `number?`          | procedure |\n| `odd?`             | procedure |\n| `or`               | syntax    |\n| `pair?`            | procedure |\n| `positive?`        | procedure |\n| `quote`            | syntax    |\n| `rational?`        | procedure |\n| `real?`            | procedure |\n| `set!`             | syntax    |\n| `string?`          | procedure |\n| `symbol?`          | procedure |\n| `syntax-rules`\\*   | syntax    |\n| `values`           | procedure |\n| `void`             | procedure |\n| `zero?`            | procedure |\n\n\\*implementation not fully compliant with the [r6rs] standard.\n\n## Installation\n\nMake sure [stack] is installed, then run:\n\n```sh\nstack install hal\n```\n\nThis will generate a `hal` executable in the current directory.\n\n## Usage\n\n```txt\nhal [FILES...] [-i]\n```\n\n- `FILES`: files to run\n- `-i`: interactive mode (implied when no files are given)\n\nThe global environment is initialized with the standard library before running\nthe first file and is not cleared after running each file. That means all files\nare run as if they were one single top-level program. After running all files,\nthe value of the last expression of the last file is displayed.\n\n## Examples\n\nSee the [examples](examples) directory.\n\n[r6rs]: http://www.r6rs.org/\n[stack]: https://docs.haskellstack.org/en/stable/README/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnasso%2Fhal","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnasso%2Fhal","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnasso%2Fhal/lists"}