You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
В результате сдачи экстеншенов накопилось несколько исправлений, которые хотелось бы внести.
Убрать раздел Types, в котором сейчас 1 вопрос: "Что такое кайнд?". Это спрашивается в DataKinds, хотя там про конкретный кайнд *, а здесь общий вопрос. Можно и перенести.
вопрос про standalone deriving предлагаю поставить после гадтов и экзистенциалов. Дока по StandaloneDeriving довольно большая и описывает дерайвинг для гадтов, что важно. Поэтому до изучения гадтов читать ее менее полезно, хуже запомнится.
непонятен вопрос про inconvenience between term level & type level of promoted kinds. Кажется, имелось в виду, можно ли написать функцию из значений в соответствующие promoted types или наоборот. Предлагаю так и сформулировать.
трудно ответить на вопрос, как constraint kinds помогают generic programming, если не умеешь дженерики. Дженерики это тема на мидле. В Упрощение карты на 3го джуна #287 предложил перенести весь ConstraintKinds на мидла. Если будет решено оставить раздел как есть, тогда предлагаю удалить вопрос или переформулировать так, чтобы его было куда пристроить на мидле.
Я думаю оба стоит включить, они простые и довольно просто объясняют хотя бы базово для чего тайп-фэмили. Надо бы так же добавить ссылку на доку по тайп-фэмили.
добавить thunk:thunk в список выражений, для которых надо определить, в какой они форме
вопрос про strict functions лучше переформулировать - тут имеются в виду функции с включенным расширением Strict.
Make examples when bang pattern has less power, than it could be supposed - вопрос непонятен, можно спросить о том, до какой формы вычисляется bang pattern.
Я запутался в куче синонимов для разных стратегий: outside in, inside out, lazy, call by value/name/need, нормальный порядок, аппликативный порядок, стратегии вызова (и чем они отличаются от стратегий вычисления?). По хорошему, достаточно 5 терминов: две редукции (нормальная, аппликативная), 2 стратегии вычисления и еще неиспользуемый call by name. А остальные термины свести к этим 5, если они обозначают то же самое.
Добавить вопрос про (a+b) ``seq`` expr.
Убрать ответ из последнего вопроса, где про Maybe :)
Еще нужно добавить вопрос, выявляющий знание, что let/where top level pattern bindings ленивые (irrefutable). Это единственный случай, когда паттерны ленивые по умолчанию, без знака ~. И когда узнаешь факт того, что что-то ленивое по дефолту, это очень нервирует, приходится искать, вдруг они ленивые где-нибудь еще. Возможно, это надо спрашивать даже на jun2 или 1.
Убрать ответ из последнего вопроса, где про Maybe :)
А там это не вопрос, там это объяснение задачи :) Может просто кривая формулировка "There is a ! inside a Maybe, which is inside a let expression, and let expressions are lazy:", здесь имеется в виду, что надо обратить внимание на ! внутри паттерн матчинга и как он себя ведет учитывая, что let-ы ленивые
Это и есть ответ, не нужно этого писать :). "Вот есть bang pattern внутри let, форсирует ли он вычисление переменной?". Когда интервьюируемый добрался до этого вопроса, он усвоил, что bang patterns форсируют все подряд, а это вопрос-ловушка на исключение из данного правила, не надо подсказывать.
* RankNTypes и экзистенциалы я бы поставил раньше гадтов и type families, потому что экзистенциалы упоминаются в описании гадтов и их проще понять
Субъективно. Мне намного труднее дались RankNTypes, я бы оставил.
* вопрос про standalone deriving предлагаю поставить после гадтов и экзистенциалов
По-моему лучше оставить как есть. Вроде спрашиваем сначала идейно, пока проблем не возникало. Ну и если перенести получится такая же ситуация, только наоборот. Придётся при изучении сложных экстеншенов читать про дерайвинг.
@antonkalinin-ml можешь предложение по laziness в отдельное ишью вынести?) А то тут по экстеншенам задача, и она уже сделана, мне кажется сюда никто не зайдёт уже, чтобы обсудить твоё предложение :)
Activity
vkpgwt commentedon Feb 28, 2021
vkpgwt commentedon Mar 2, 2021
What is a "rank" of a function?предложили то ли убрать, то ли переформулировать.kelizarov commentedon Mar 2, 2021
Я думаю оба стоит включить, они простые и довольно просто объясняют хотя бы базово для чего тайп-фэмили. Надо бы так же добавить ссылку на доку по тайп-фэмили.
vkpgwt commentedon Mar 3, 2021
Предложили поправить laziness:
Make examples when bang pattern has less power, than it could be supposed- вопрос непонятен, можно спросить о том, до какой формы вычисляется bang pattern.vkpgwt commentedon Mar 11, 2021
Laziness.
(a+b) ``seq`` expr.~. И когда узнаешь факт того, что что-то ленивое по дефолту, это очень нервирует, приходится искать, вдруг они ленивые где-нибудь еще. Возможно, это надо спрашивать даже на jun2 или 1.Znack commentedon Mar 12, 2021
А там это не вопрос, там это объяснение задачи :) Может просто кривая формулировка "There is a ! inside a Maybe, which is inside a let expression, and let expressions are lazy:", здесь имеется в виду, что надо обратить внимание на ! внутри паттерн матчинга и как он себя ведет учитывая, что let-ы ленивые
vkpgwt commentedon Mar 12, 2021
Это и есть ответ, не нужно этого писать :). "Вот есть bang pattern внутри let, форсирует ли он вычисление переменной?". Когда интервьюируемый добрался до этого вопроса, он усвоил, что bang patterns форсируют все подряд, а это вопрос-ловушка на исключение из данного правила, не надо подсказывать.
Znack commentedon Mar 12, 2021
Неее, это всё таки не ответ, но то что жирный намёк я согласен :) давай уберём :)
olgaklimenko commentedon Mar 13, 2021
PolyKindsресурс: https://kseo.github.io/posts/2017-01-15-data-proxy.htmlType Familyhttps://wapxmas.github.io/haskell-injectivity/olegromashin commentedon Mar 22, 2021
Субъективно. Мне намного труднее дались RankNTypes, я бы оставил.
По-моему лучше оставить как есть. Вроде спрашиваем сначала идейно, пока проблем не возникало. Ну и если перенести получится такая же ситуация, только наоборот. Придётся при изучении сложных экстеншенов читать про дерайвинг.
С остальным согласен.
olgaklimenko commentedon Mar 22, 2021
Экзистенциалы все же луше перенести повыше,
rankNTypesсоглашусь, можноо ставить где они есть.Еще:
Эти два вопроса можно смержить, и поставить после RankNTypes.
olegromashin commentedon Mar 22, 2021
Ага, уже смёрджил, забыл упомянуть)
olgaklimenko commentedon Apr 7, 2021
@antonkalinin-ml можешь предложение по laziness в отдельное ишью вынести?) А то тут по экстеншенам задача, и она уже сделана, мне кажется сюда никто не зайдёт уже, чтобы обсудить твоё предложение :)
antonkalinin-ml commentedon Apr 7, 2021
@olgaklimenko @olegromashin перенес в #309 , можно данную таску закрывать.