In an effort to both (1) reduce boilerplate code, and (2) promote 
cross-platform reusability I propose that we implement the following Import 
Conditional Operators: 

`||` and `&&`

Currently, import conditionals must be implemented like so:

#if os(Linux) || os(FreeBSD)
        import Glibc
        import Darwin

With import conditional operators this would be condensed to:

import Glibc || Darwin

The first library/framework (Glibc) would be imported if found and the the 
second (Darwin) only in the event the first should fail.

Other Caveats:

(A) —  we could limit this to one conditional operator per import line OR we 
could implement order of operations. Obviously, there are tradeoffs of both 
that we should discuss.

(B) — if-conditional statements currently explicitly show the import conditions 
(i.e., os(Linux) || os(FreeBSD)) this would be a detriment to this new feature. 
I would argue that the reduction of boilerplate code would in itself be worth 
this abstraction.

Sean Alling

swift-evolution mailing list

Reply via email to