Skip to content

[jun3/Haskell] Переместить вопрос из тайпклассов на мидла #311

Open

Description

@kelizarov

Предлагаю переместить вопрос: How the problem of orphans and overlapping is solved in other languages or by different overloading implementation techniques? на мидла-1.

Мне кажется вопрос слишком обширной для джуна, ибо предполагает какое-то знакомство с другими языками программирования, которые имеют систему подобную тайп-классом.

Activity

  1. antonkalinin-ml commented on Apr 12, 2021

    @antonkalinin-ml
    Contributor

    Вынос на мидла проблему не решит - оттого, что ты стал мидлом, у тебя в голове не появится знание другого языка :). Ну разве что Scheme, так как он есть в программе мидла, но в Scheme вроде бы нет перегрузки и орфанов.
    Мне показалось, этот вопрос необязательный, о личном опыте сотрудника, мол, а с каким решением проблемы оверлаппинга инстансов ты сталкивался в других языках. Ответ на него зависит от того, какие языки знает сотрудник. Если он знает только язык X, то он и ответит только про X, но не ответит про какой-то другой язык Y, который не знает и в котором другое решение проблемы оверлаппинга. Если он ни один язык не знает, кроме хаскеля, или знает только языки, в которых нет перегрузки - ну и что, это тоже ответ. Не неправильный.

  2. antonkalinin-ml commented on Apr 12, 2021

    @antonkalinin-ml
    Contributor

    Можно его переформулировать, чтобы подчеркнуть необязательность. Мол, знаешь - расскажи, а не знаешь, ничего страшного.

  3. kelizarov commented on Apr 13, 2021

    @kelizarov
    ContributorAuthor

    Тогда думаю мне кажется его вообще можно было выпилить. Я так подумал спрашивать о том как в других языках это устроено, при этом не давая контекста про какие языки идет речь и не давая ресурсы на это очень странный подход.

    Плюс мне кажется ответ на вопрос не сильно приближает к понимаю как устроена работа тайп-классов на самом хаскеле, и вопрос выглядит как из разряда "а вы знали, что ...?"

  4. antonkalinin-ml commented on Apr 20, 2021

    @antonkalinin-ml
    Contributor

    Да зачем сразу выпиливать? :) Этот вопрос ни к чему не обязывает. Хочешь - отвечай, не хочешь - не надо. Если из вопроса это неясно, можно переформулировать. Он небесполезный, при наличии опыта в других языках он интересен тем, что можно сравнить их с хаскелем. А там есть что сравнивать - тайпклассы это не совсем Java-интерфейсы, есть и общее, и различное.

    Мне вообще нравится идея необязательных вопросов. Это позволяет специализироваться на интересном тебе, докинуть в карту развития больше потенциально интересных тем, а не заставлять всех учить гору информации в обязаловку, которая, может быть, не понадобится. Правда, это вроде бы актуально больше для мидла.

  5. olgaklimenko commented on Apr 23, 2021

    @olgaklimenko
    Contributor

    По тому что выше обсуждали:

    Вообще сейчас всё что есть в карте обязывает это сдавать, может не сильно подробно, но все равно при подготовке нужно обратиться к ресурсам и изучить их (или подумать и попробовать примеры самому, если вопрос на подумать). Если оставляем, надо пометить вопрос как необязательный.

    Моё предложение:

    А вообще на 3м джуне есть ресурс https://dev.to/jvanbruegge/what-the-heck-is-polymorphism-nmh где описаны разные виды полиморфизма в хаскеле и других языках, он как раз предложен для изучения на этот вопрос (спойлер: прямого ответа на вопрос там нет). Там описаны разные виды полиморфизма, но на момент изучения в нашей карте упоминалось только 2 вида: параметрический и ad-hoc.
    Я предлагаю вынести этот ресурс на мидла, когда уже проще будет понять остальные виды полиморфизма (Kind, Higher-rank polymorphism и другие), и подвести итог, добавив вопросы на сравнение, что из этого есть не только в хаскеле и как оно сделано. И сюда же поставить вопрос про оверлаппинг и орфаны, который уже будет легко обдумать.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    backendRelated to back-end developer roadmap

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions