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 > <email@example.com> 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 > firstname.lastname@example.org > https://lists.swift.org/mailman/listinfo/swift-evolution
_______________________________________________ swift-evolution mailing list email@example.com https://lists.swift.org/mailman/listinfo/swift-evolution