{"name":"slice_test.nu","source":"// slice_test.nu — Structs, slice literals, and foreach borrowing\n// Demonstrates:\n//   - Struct declaration and instantiation (@ Name { ... })\n//   - Slice literals ([ T | ... ])\n//   - Foreach element borrowing (~ IDENT expr { body })\n//   - Member access (. obj field)\n\n: Point { i x i y }\n\n@ dist_squared Point p → i {\n    ^ + * . p x . p x\n    * . p y . p y\n}\n\n@ main → i {\n    // Luodaan slice-literaali Point-structeista\n    : [Point points [Point |\n    @ Point { 3 4 }  // 3^2 + 4^2 = 25\n    @ Point { 5 12 }  // 5^2 + 12^2 = 169\n    @ Point { 8 15 }  // 8^2 + 15^2 = 289\n    ]\n\n    : ~ i total_dist 0\n\n    ( nurl_print `Calculating squared distances:\\n` )\n\n    // Foreach-silmukka lainaa (borrow) elementin 'p'\n    ~ p points {\n        : i d ( dist_squared p )\n\n        ( nurl_print `- Point (` )\n        ( nurl_print ( nurl_str_int . p x ) )\n        ( nurl_print `, ` )\n        ( nurl_print ( nurl_str_int . p y ) )\n        ( nurl_print `) -> ` )\n        ( nurl_print ( nurl_str_int d ) )\n        ( nurl_print `\\n` )\n\n        = total_dist + total_dist d\n    }\n\n    ( nurl_print `\\nTotal sum: ` )\n    ( nurl_print ( nurl_str_int total_dist ) )\n    ( nurl_print `\\n` )\n\n    ^ 0\n}\n","bytes":1194}