Талантливым людям, пишущим блоги про то насколько тайпклассы в скале лучше тайпклассов в хаскеле, хочется посоветовать спилить мушку
Обсуждение элегантности костылей, блин ‎· Размытое в синей футболке
Итого у нас есть полиморфическая рекурсия — но на уровне метода, не класса. Но поскольку никаких тайпклассов нет, а есть только костыли, полиморфная рекурсия не работает для тайпклассов — потому что надо сначала передать тот самый костыль, а костыля нужной формы нет. Хотя по идее костылю должно быть наплевать, потому что type erasure? Я не люблю это дело, вот. ‎· Размытое в синей футболке
Also, "эрекция," "эякуляция" ЕВПОЧЯ ‎· Размытое в синей футболке
И тут из-за плеча скалки подмигивает кровавый энтерпрайз: trait DequeLike[Q[_]] { def deque[E]: Deque[E, Q[E]] } ‎· Размытое в синей футболке
def empty[E, Q[_] : DequeLike]: Cat[E, Q] = Shallow[E, Q](implicitly[DequeLike[Q]].deque[E].empty) ‎· Размытое в синей футболке
Куда понятней чем empty = Shallow empty, и мощь чувствуется! ‎· Размытое в синей футболке
Надо начать спрашивать на собеседованиях про рекурсивный полиморфизм и разницу между функцией и методом. ‎· Размытое в синей футболке