Comments 14
Промежуток [0; 1) – множество всех чисел, которые меньше 1 и не больше 0.
Извините, могу быть не прав, но промежуток от 0 (включая 0) до 1 (не включая 1).
Автору статьи не удалось придумать более
подходящее имя, чтобы оно помогало понять код, а не запутывало.
Любое имя длиннее двух букв помогало бы. Например multiply, multiplyDelefate, multiplyAndFloor
Применение функции не ко всем её параметрам, а лишь к первым называется каррированием.
По-моему не самая лучшая формулировка - функция-то в любом случае применяется ко всем параметрам. Это скорее получение новой функции из старой с помощью фиксации определённых параметров
Вообще впечатление от языка такое, будто это bash. Есть какая-то причина для динамической типизации в языке?
Вообще впечатление от языка такое, будто это bash. Есть какая-то причина для динамической типизации в языке?
Она статическая
Хорошо, когда язык позволяет избежать придумывания "одноразового" имени. Тем не менее благодарю за предложенные имена.
Мне кажется, синтаксис этого языка проще освоить, если принять, что в языке не поддерживаются применения функции к нескольким параметрам сразу. Всегда применяется только к одному параметру, но потом результат применения может быть применён к следующему параметру (а может и не быть).
Но при этом следует иметь в виду, что если применения "записаны" через основной оператор применения, то сначала вычисляются все параметры, а затем происходят применения. В следующем выражении
функция ( выражениеДляПараметра1 ) ( выражениеДляПараметра2 )
сначала будут вычислены ( выражениеДляПараметра1 ) и ( выражениеДляПараметра2 ), а затем функция будет применена к результату выраженияДляПараметра1, после чего результат этого применения будет применён к результату выраженияДляПараметра2.
Проверить это можно только на функции с побочными эффектами с одним параметром, которая также выдаёт функцию с побочными эффектами и с одним параметром.
Однако остальные операторы применения не обладают таким свойством:
функция ( выражениеДляПараметра1 ) <| ( выражениеДляПараметра2 )
Здесь выражениеДляПараметра2 будет вычислено лишь после применения функции к результату выраженияДляПараметра1 .
Стало интересно, как же выглядит график такой функции
Для решения совсем уж в лоб можно руками (т.е. глазами) подсчитать количество горизонтальных участков, или попросить это сделать какой-нибудь ИИ
F# на примере решения олимпиадной математической задачи