roc-lang / roc

A fast, friendly, functional language.
https://roc-lang.org
Universal Permissive License v1.0
4.39k stars 308 forks source link

Using `..` for Open Record Patterns/Destructuring #7095

Open smores56 opened 1 month ago

smores56 commented 1 month ago

We want to start using the below syntax for open/constrained records:

{ a, b, .. } = data

and the following for closed records:

{ a, b } = data

This facilitates Roc devs being able to define closed records that will raise type errors if the destructured values get additional fields added. This is not possible in Roc today.

This change will probably break a good deal of existing Roc code that assumes that { a, b } destructures are open records, but the direction of this change precludes the ability to facilitate the transition with smart parsing + formatting.

mitulagr2 commented 1 week ago

I'll take this if you'd like!

smores56 commented 1 week ago

@mitulagr2 great! I've assigned it to you and thrown on the "Hacktoberfest" label. Let me know here or on the Zulip if you have any questions.