developers-roadmap icon indicating copy to clipboard operation
developers-roadmap copied to clipboard

jun3/haskell: исправление laziness

Open antonkalinin-ml opened this issue 4 years ago • 4 comments

Прочее:

  • [x] Вопрос What is a "rank" of a function? на сдаче предложили убрать или переформулировать. Точное определение ранга слишком сложное и на практике неполезно. В доках ghc есть примеры функций разного ранга, но это примеры, а не определение. На практике, я думаю, нам требуется лишь различать функции первого и не первого ранга. Я бы спросил: что такое функции высшего ранга?

Laziness:

  • [x] добавить thunk:thunk в список выражений, для которых надо определить, в какой они форме
  • [x] в вопросе Why strict functions in Haskell evaluate values to WHNF and not NF? нужно переделать строгие функции в функции при включенном расширении Strict. Это не одно и то же.
  • [x] Make examples when bang pattern has less power, than it could be supposed - непонятно, что имеется в виду. Я бы спросил: до какой формы вычисляет bang pattern? В каком объеме вычислится список x в паттерне f !x?
  • [ ] мне не нравится обилие синонимов стратегий вычисления/редукции: outside in, outermost, normal - это все одна стратегия. normal не встречал в источниках jun3, но вообще она так тоже называется. Стратегия вызова и стратегия вычисления - в чем разница? Вроде ни в чем. Вот между вычислением и редукцией разница есть. Синонимы раздражают, потому что первое время кажется, что разница есть, а я просто ее не замечаю, приходится перечитывать текст по 10 раз и искать детали. Но я не знаю, что с этим сделать, так как эти термины встречаются в источниках. Мы хотели проредить источники, может тогда и получится.
  • [x] Добавить вопрос про (a+b) ``seq`` expr.
  • [x] Убрать подсказку про lazy let из вопроса There is a ! inside a Maybe, which is inside a let expression, and let expressions are lazy: let (Just !a) = x in 1 + 1
  • [x] добавить вопрос, выявляющий знание, что let/where top level pattern bindings являются irrefutable. Не целиком irrefutable, а только верхний уровень. И where это тоже касается, хотя в Haskell Report их называют let-bound pattern bindings. Это единственный случай, когда паттерны irrefutable по умолчанию, без знака ~. Вопрос про irrefutable patterns есть на мидле, но когда они irrefutable по умолчанию, вопроса нет. Мне кажется, это надо спустить куда-то на джуна, это хоть и мелкая, но важная часть языка, которая может стать ловушкой, если о ней не знать.

antonkalinin-ml avatar Apr 07 '21 09:04 antonkalinin-ml

Про определения и синонимы: может в начале явно дисклеймер написать, что считаем синонимами, а что нет? И по тому, что нет сразу вопросы добавить чем их разница?

Znack avatar Apr 08 '21 04:04 Znack

И по тому, что нет сразу вопросы добавить чем их разница?

Такой вопрос есть, о разнице между стратегией вычисления и стратегией редукции.

Про определения и синонимы: может в начале явно дисклеймер написать, что считаем синонимами, а что нет?

Т.е. написать, что термины A, B, C это одно и то же? Я не уверен, что это общая проблема, а не лично моя :). Хотел сперва узнать мнение других.

antonkalinin-ml avatar Apr 08 '21 06:04 antonkalinin-ml

Я не уверен, что это общая проблема, а не лично моя :). Хотел сперва узнать мнение других.

Ну в целом про такого рода проблемы мне много раз говорили и фронтендеры, у них темы другие, а проблемы те же :) Поэтому я уже сразу могу сказать, что проблема актуальна и её решение — полезная штука

Znack avatar Apr 08 '21 06:04 Znack

Это общая проблема :) Список синонимов мне бы очень помог при подготовке)

olgaklimenko avatar Apr 12 '21 07:04 olgaklimenko