From a583a4f7073d096921a8bdbf52b43b679bc5dd36 Mon Sep 17 00:00:00 2001 From: Tenebris Noctua <172976441+TenebrisNoctua@users.noreply.github.com> Date: Sat, 12 Apr 2025 17:02:47 +0300 Subject: [PATCH] Delete docs/variadic-user-defined-type-functions.md --- docs/variadic-user-defined-type-functions.md | 54 -------------------- 1 file changed, 54 deletions(-) delete mode 100644 docs/variadic-user-defined-type-functions.md diff --git a/docs/variadic-user-defined-type-functions.md b/docs/variadic-user-defined-type-functions.md deleted file mode 100644 index d613cc2..0000000 --- a/docs/variadic-user-defined-type-functions.md +++ /dev/null @@ -1,54 +0,0 @@ -# Variadic User-Defined Type Functions - -## Summary - -Add support for variadic arguments for user-defined type functions. - -## Motivation - -Today, user-defined type functions can only take a pre-defined set of parameters. This limits the usage in a way that makes it not possible to make the function variadic, where the user can supply -the function as many arguments as provided. - -By adding support for variadic functions, we allow users to call user-defined type functions with as many arguments as they wish, providing a more dynamic system. - -## Design - -The syntax for variadic type functions would be exactly the same as normal variadic functions where `...` can only be legal as the last argument of the function. -Utilizing either `table.pack(...)` method or `{...}`, the user would recieve a table of `type`s to use within their code. - -### Examples - -Creating a variadic type function: - -```luau -type function f(...) - local packed = {...} -- {type} - for _, type in packed do - -- Use the provided types. - end -end - -type a = f -``` - -Calling a variadic type function from a type alias: - -```luau -type function f(...) - local packed = {...} - local firstArg = packed[1] -- tag: string - local secondArg = packed[2] -- tag: number - local thirdArg = packed[3] -- tag: table -end - -type a = f -type b = a -``` - -## Drawbacks - -It's unclear if this proposal has any drawbacks. - -## Alternatives - -Do nothing, and force type functions to only take pre-defined set of parameters.