Pull to refresh

Comments 14

Промежуток [0; 1) – множество всех чисел, которые меньше 1 и не больше 0.

Извините, могу быть не прав, но промежуток от 0 (включая 0) до 1 (не включая 1).

Первая и единственная мысль возникла, что это именно так. Интересно будет узнать, что это может быть не так

а, там по контексту подходит " и не меньше 0"

Автору статьи не удалось придумать более
подходящее имя, чтобы оно помогало понять код, а не запутывало.

Любое имя длиннее двух букв помогало бы. Например multiply, multiplyDelefate, multiplyAndFloor

Применение функции не ко всем её параметрам, а лишь к первым называется каррированием.

По-моему не самая лучшая формулировка - функция-то в любом случае применяется ко всем параметрам. Это скорее получение новой функции из старой с помощью фиксации определённых параметров

Вообще впечатление от языка такое, будто это bash. Есть какая-то причина для динамической типизации в языке?

Вообще впечатление от языка такое, будто это bash. Есть какая-то причина для динамической типизации в языке?

Она статическая

Да, каюсь, она неявная

Можно явно указать, а в некоторых случаях нужно.

Но bash сложнее, гораздо сложнее :). А в F# всё логично и просто.

Ни в коем случае не спорю. bash вызывает скорее неприятные воспоминания, а F# - уже полноценный язык

Хорошо, когда язык позволяет избежать придумывания "одноразового" имени. Тем не менее благодарю за предложенные имена.

Мне кажется, синтаксис этого языка проще освоить, если принять, что в языке не поддерживаются применения функции к нескольким параметрам сразу. Всегда применяется только к одному параметру, но потом результат применения может быть применён к следующему параметру (а может и не быть).

Но при этом следует иметь в виду, что если применения "записаны" через основной оператор применения, то сначала вычисляются все параметры, а затем происходят применения. В следующем выражении

функция ( выражениеДляПараметра1 ) ( выражениеДляПараметра2 )

сначала будут вычислены ( выражениеДляПараметра1 ) и ( выражениеДляПараметра2 ), а затем функция будет применена к результату выраженияДляПараметра1, после чего результат этого применения будет применён к результату выраженияДляПараметра2.

Проверить это можно только на функции с побочными эффектами с одним параметром, которая также выдаёт функцию с побочными эффектами и с одним параметром.

Однако остальные операторы применения не обладают таким свойством:

функция ( выражениеДляПараметра1 ) <| ( выражениеДляПараметра2 )

Здесь выражениеДляПараметра2 будет вычислено лишь после применения функции к результату выраженияДляПараметра1 .

Стало интересно, как же выглядит график такой функции


График

image


Для решения совсем уж в лоб можно руками (т.е. глазами) подсчитать количество горизонтальных участков, или попросить это сделать какой-нибудь ИИ

Можно сдвинуть график на пиксель влево, сделать and с исходным вариантом и посчитать к-во начал отрезков (перепад 0->1).

Или даже просто посчитать к-во левых верхних углов (нет соседей слева и сверху).

Sign up to leave a comment.

Articles