{"id":17333535,"url":"https://github.com/lukechu10/nopo","last_synced_at":"2025-04-14T18:33:00.057Z","repository":{"id":210458359,"uuid":"599027094","full_name":"lukechu10/nopo","owner":"lukechu10","description":"An interpreted functional programming language","archived":false,"fork":false,"pushed_at":"2024-12-30T05:52:04.000Z","size":377,"stargazers_count":3,"open_issues_count":1,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-28T07:02:40.667Z","etag":null,"topics":["functional-programming","interpreter","language"],"latest_commit_sha":null,"homepage":"","language":"Rust","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/lukechu10.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":"2023-02-08T09:51:28.000Z","updated_at":"2024-12-30T05:52:08.000Z","dependencies_parsed_at":null,"dependency_job_id":"21e3afa6-47ed-44b7-93e2-5a16155c62d4","html_url":"https://github.com/lukechu10/nopo","commit_stats":null,"previous_names":["lukechu10/nopo"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lukechu10%2Fnopo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lukechu10%2Fnopo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lukechu10%2Fnopo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lukechu10%2Fnopo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lukechu10","download_url":"https://codeload.github.com/lukechu10/nopo/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248937012,"owners_count":21186144,"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":["functional-programming","interpreter","language"],"created_at":"2024-10-15T15:01:22.311Z","updated_at":"2025-04-14T18:33:00.030Z","avatar_url":"https://github.com/lukechu10.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Nopo Language\n\n## Specification\n\n### Grammar\n\n_Root_: _Item_*\n\n_Item_: _LetItem_ | _TypeItem_\n\n_LetItem_: `let` _Ident_ _Arg_* (`:` _Type_)? `=` _Expr_ \\\n_Arg_: _Ident_ | `(` _Ident_ `:` _Type_ `)`\n\n_TypeItem_: `type` _Ident_ _TypeArg_* `=` _Type_ \\\n_TypeArg_: _Ident_ **(TODO: add type bounds?)**\n\n_Type_: _TypePath_ | _Fn_ | _Record_ | _Enum_ | _Tuple_ \\\n_TypePath_: _Ident_ (`.` _Ident_)* _TypeArg_* \\\n_Fn_: _Type_ `-\u003e` _Type_ \\\n_Record_: `{` (_Ident_ `:` _Type_ `,`)* `}`) \\\n_Enum_: _EnumVar_ (`|` _EnumVar_)* **(TODO: allow empty enums?)** \\\n_EnumVar_: _Ident_ _Type_? \\\n_Tuple_: `(` (_Type_ `,`)* `)`\n\n_Expr_: _Call_ | _Binop_ | _Unary_ | _TupleExpr_ | _RecordExpr_ | _Lambda_ | _Index_ | _IfElse_ | _For_ | _While_ | _Block_ | _Lit_ | _Update_ | _Paren_ \\\n_ExprPath_: _Ident_ (`.` _Ident_)* \\\n_ExprParened_: _ExprPath_ | _Block_ | _Lit_ | _Paren_ \\\n_Call_: _ExprPath_ _ExprParened_* \\\n_Index_: _ExprParened_ `[` _Expr_ `]` \\\n_Binop_, _Unary_, **use pratt parsing with corresponding operator precedence** \\\n_Block_: `{` _ExprStmt_* `}` \\\n_IfElse_: `if` _Expr_ `then` _Expr_ (`else` _Expr_)? \\\n_For_: `for` _Ident_ in _Expr_ _Block_ \\\n_While_: `while` _Expr_ _Block_ \\\n_Lambda_: `\\` _Ident_* `=` _Expr_ \\\n_TupleExpr_: `(` (_Expr_ `,`)* `)` \\\n_RecordExpr_: `{` (_Ident_ `:` _Expr_ `,`)* `}` \\\n_Update_: _ExprPath_ `:=` _Expr_\n\n_Paren_: `(` _Expr_ `)`\n\n_ExprStmt_: _Expr_ | _Item_\n\n_Lit_: _IntLit_ | _FlaotLit_ | _StringLit_ | `true` | `false` **(define bool as an enum?)**\n\n_Ident_: **refer to unicode-xid**\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flukechu10%2Fnopo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flukechu10%2Fnopo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flukechu10%2Fnopo/lists"}