Haskell's "Maybe t" is essentially the same as ML's "'t option".
ECMA Eiffel has a distinction between "T" and "T?" types which
is related. The idea of a compiler system with multiple front-
ends for dissimilar languages goes back to Burroughs (where
type checking applied cross-language) and to Univac (where several
languages used the same back end) and with multiple source languages sharing a common IR with multiple target-specific
back ends goes back at least to the Amsterdam Compiler Kit. Back
in 1984 the idea of retaining code in an intermediate form until
it was about to be executed with so far from novel that I used it
in a design. JIT compiling goes back at least to Brown's "throw-
away compiling" for BASIC (compact IR, bulky native code compiled
into a smallish buffer at need and periodically thrown away) and
commercial Smalltalk systems. (And there is at least one Smalltalk
out there with Lisp and Prolog syntax on offer as well.) Then there
is the Poplog system, which incrementally compiled ML, Common Lisp
(CLtL1 vintage), Pop-11, and Prolog, all quite different looking
(and Pop-11 being arguably OO), into a common IR, with native code generation for multiple target processors.
There may well be innovative things in Swift, but nothing in this
thread would have seemed novel 30 years ago.