Opinions on this syntax for enums?
Opinions on this syntax for enums?
I'm making a language with a lot of inspiration from rust and was experimenting with alternative enum syntax. It relies on literals to be types in order to convey information on the different options.
I don't really get on well with Typescript but having the ability to use literals as types is something I really liked as a lot of the times I use static string literals as errors. and having all the variants upcast through types makes it easier to do pattern matching.
Plain-text transcription of the image:
undefined
// using rust like enum syntax Option<T> ( | "Some" T | "None" ) fn match_demo() { let some_option = Option "Some" "text"; let none_option = Option "None"; match some_option { "Some" "hello" => print("oh hi there"), "Some" text => print("Option is {text}"), "None" => print("Option is {text}"), } } // Or maybe more experimental syntax Option<T> ( | T | () ) fn match_demo2() { let opt = Option "something"; match opt { "text" => "matching directly", var => "bind to variable", () => "nothing", } }