jun3/haskell: исправление laziness
Прочее:
- [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 по умолчанию, вопроса нет. Мне кажется, это надо спустить куда-то на джуна, это хоть и мелкая, но важная часть языка, которая может стать ловушкой, если о ней не знать.
Про определения и синонимы: может в начале явно дисклеймер написать, что считаем синонимами, а что нет? И по тому, что нет сразу вопросы добавить чем их разница?
И по тому, что нет сразу вопросы добавить чем их разница?
Такой вопрос есть, о разнице между стратегией вычисления и стратегией редукции.
Про определения и синонимы: может в начале явно дисклеймер написать, что считаем синонимами, а что нет?
Т.е. написать, что термины A, B, C это одно и то же? Я не уверен, что это общая проблема, а не лично моя :). Хотел сперва узнать мнение других.
Я не уверен, что это общая проблема, а не лично моя :). Хотел сперва узнать мнение других.
Ну в целом про такого рода проблемы мне много раз говорили и фронтендеры, у них темы другие, а проблемы те же :) Поэтому я уже сразу могу сказать, что проблема актуальна и её решение — полезная штука
Это общая проблема :) Список синонимов мне бы очень помог при подготовке)