Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
7 of 8 tasks
antonkalinin-ml opened this issue Apr 7, 2021 · 4 comments
Open
7 of 8 tasks

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

antonkalinin-ml opened this issue Apr 7, 2021 · 4 comments
Assignees
Labels
backend Related to back-end developer roadmap

Comments

@antonkalinin-ml
Copy link
Contributor

antonkalinin-ml commented Apr 7, 2021

Прочее:

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

Laziness:

  • добавить thunk:thunk в список выражений, для которых надо определить, в какой они форме
  • в вопросе Why strict functions in Haskell evaluate values to WHNF and not NF? нужно переделать строгие функции в функции при включенном расширении Strict. Это не одно и то же.
  • 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 раз и искать детали. Но я не знаю, что с этим сделать, так как эти термины встречаются в источниках. Мы хотели проредить источники, может тогда и получится.
  • Добавить вопрос про (a+b) ``seq`` expr.
  • Убрать подсказку про 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
  • добавить вопрос, выявляющий знание, что let/where top level pattern bindings являются irrefutable. Не целиком irrefutable, а только верхний уровень. И where это тоже касается, хотя в Haskell Report их называют let-bound pattern bindings. Это единственный случай, когда паттерны irrefutable по умолчанию, без знака ~. Вопрос про irrefutable patterns есть на мидле, но когда они irrefutable по умолчанию, вопроса нет. Мне кажется, это надо спустить куда-то на джуна, это хоть и мелкая, но важная часть языка, которая может стать ловушкой, если о ней не знать.
@Znack
Copy link
Contributor

Znack commented Apr 8, 2021

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

@antonkalinin-ml
Copy link
Contributor Author

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

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

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

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

@Znack
Copy link
Contributor

Znack commented Apr 8, 2021

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

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

@olgaklimenko
Copy link
Contributor

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

@antonkalinin-ml antonkalinin-ml added the backend Related to back-end developer roadmap label Nov 28, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
backend Related to back-end developer roadmap
Projects
None yet
Development

No branches or pull requests

3 participants