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 

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.


> Il giorno 14 dic 2017, alle ore 15:40, Matthew Johnson via swift-evolution 
> <swift-evolution@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@swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution

swift-evolution mailing list

Reply via email to