Skip to content

Implement tuples with (i32, string) syntax#289

Open
nbeerbower wants to merge 1 commit into
mainfrom
claude/implement-tuples-Tl5Nq
Open

Implement tuples with (i32, string) syntax#289
nbeerbower wants to merge 1 commit into
mainfrom
claude/implement-tuples-Tl5Nq

Conversation

@nbeerbower

Copy link
Copy Markdown
Collaborator

Add first-class tuple support across interpreter and compiler:

  • AST: Add TYPE_TUPLE and EXPR_TUPLE_LITERAL with element_types array
  • Parser: Parse tuple type syntax (type1, type2) and literal syntax (val1, val2)
  • Parser: Handle .0, .1 numeric property access for tuple indexing
  • Interpreter: Add VAL_TUPLE, Tuple struct, and tuple operations
  • Interpreter: Support tuple type coercion for function params/returns
  • Compiler: Add CHECKED_TUPLE, code generation for tuple literals and access
  • Runtime: Add HML_VAL_TUPLE, HmlTuple struct, and hml_tuple_get
  • Bundler: Handle EXPR_TUPLE_LITERAL in dependency collection
  • Parity test: tests/parity/language/tuples.hml covering all tuple features

Usage:
let pair = (42, "answer");
let typed: (i32, string) = (100, "hello");
print(pair.0); // 42
print(pair[1]); // answer
print(pair.length); // 2

Add first-class tuple support across interpreter and compiler:

- AST: Add TYPE_TUPLE and EXPR_TUPLE_LITERAL with element_types array
- Parser: Parse tuple type syntax (type1, type2) and literal syntax (val1, val2)
- Parser: Handle .0, .1 numeric property access for tuple indexing
- Interpreter: Add VAL_TUPLE, Tuple struct, and tuple operations
- Interpreter: Support tuple type coercion for function params/returns
- Compiler: Add CHECKED_TUPLE, code generation for tuple literals and access
- Runtime: Add HML_VAL_TUPLE, HmlTuple struct, and hml_tuple_get
- Bundler: Handle EXPR_TUPLE_LITERAL in dependency collection
- Parity test: tests/parity/language/tuples.hml covering all tuple features

Usage:
  let pair = (42, "answer");
  let typed: (i32, string) = (100, "hello");
  print(pair.0);      // 42
  print(pair[1]);     // answer
  print(pair.length); // 2
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants