[swift-evolution] Optional Argument Chaining

Elviro Rocca retired.hunter.djura at gmail.com
Mon Dec 18 01:41:55 CST 2017


While it's definitely worth knowing, it's not a really usable substitute for higher-kinded types in production code, and still requires a lot of code generation, which is eased in Kotlin thanks to its annotation/metaprogramming features.

Event the Kategory people recognized that the emulation approach is a temporary solution, waiting for the approval of a proposal for the addition of HKTs to Kotlin itself.

Unfortunately, if we don't get HKTs in Swift we're simply going to miss on a barrage of extremely useful abstractions, upon that many contemporary languages have started to rely, because they are simply the best known solutions to many problems in many contexts.

The huge amount of work that's been done in academia in the last 15 years (and it's still going) about applicatives - and also profunctor optics, another thing that requires HKTs - is mostly going to elude Swift due to its crucial lack of expressivity.

We're on the right track with the approval of the conditional conformance proposal, but my fear is that the ABI stability requirement for Swift 5 is going to lock the language interfaces in a state where it's going to be impossible for these kinds of sophistications to be added to the language at a later stage... I hope to be proven wrong here.


Elviro 

> Il giorno 14 dic 2017, alle ore 15:40, Matthew Johnson via swift-evolution <swift-evolution at swift.org> ha scritto:
> 
> 
> Thanks for jumping in and elaborating on a more general approach!  I don’t want to sidetrack the thread, but it actually is possible to encode higher-kindred types and protocols requiring them in Swift today.  It’s a bit clunky and requires some boilerplate but the technique is worth knowing.  https://gist.github.com/anandabits/f12a77c49fc002cf68a5f1f62a0ac9c4 <https://gist.github.com/anandabits/f12a77c49fc002cf68a5f1f62a0ac9c4>
> 
> Some Kotlin folks have created a pretty robust FP library using the same technique: http://kategory.io/ <http://kategory.io/>.
> 
> _______________________________________________
> swift-evolution mailing list
> swift-evolution at swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20171218/f75d97b9/attachment.html>


More information about the swift-evolution mailing list