<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">Currently if you have the following enum:<div class=""><br class=""></div><div class="">enum E<T> {<br class=""><span class="Apple-tab-span" style="white-space:pre">        </span>case c(T)<br class="">}</div><div class=""><br class=""></div><div class="">then if T is Void, you have to write one of the following:</div><div class=""><br class=""></div><div class=""><font face="Inconsolata" class="">let x: E<Void> = .c(Void())</font></div><div class=""><font face="Inconsolata" class="">let y: E<Void> = .c(())</font></div><div class=""><br class=""></div><div class="">Looks awkward, no? In this case you can omit `<Void>` after `E` because it can be inferred, but if writing a (non-generic) function taking an argument of type `E<Void>`, then the `<Void>` cannot be omitted, and you still have to write `.c(())` for the case name.</div><div class=""><br class=""></div><div class="">Iām proposing that for enum cases with a single associated value of Void type, or of a generic type that is equal to Void in some instance, you may omit the parentheses altogether and merely write</div><div class=""><br class=""></div><div class="">let x: E<Void> = .c</div><div class=""><br class=""></div><div class="">The rationale is twofold: first, double parentheses just looks bad; second, there is only a single value of type Void, which means the associated value of `.c` is trivially inferable, and hence should be omissible.</div><div class=""><br class=""></div><div class="">I am not proposing that a bare `E.c` imply a type of `E<Void>` ā `E.c` should still be illegal in the absence of specification of the generic type ā only that when the type is known to be `E<Void>`, `.c` can replace `.c(())`.</div><div class=""><br class=""></div><div class="">Thoughts?</div></body></html>