Size: a a a

F# Flood: я вас категорически приветствую!

2020 March 23

P

PoggiGoppi in F# Flood: я вас категорически приветствую!
источник

SN

Shub Niggurath in F# Flood: я вас категорически приветствую!
разумеется, она берет на вход только нецелые типы. потому что деление у нас сильно типизировано. в ML нет понятия приведения типов, у нас преобразование типа возможно только через алгоритмическое конструирование
источник

P

PoggiGoppi in F# Flood: я вас категорически приветствую!
Shub Niggurath
разумеется, она берет на вход только нецелые типы. потому что деление у нас сильно типизировано. в ML нет понятия приведения типов, у нас преобразование типа возможно только через алгоритмическое конструирование
В двух словах?
источник

P

PoggiGoppi in F# Flood: я вас категорически приветствую!
Я недопонял
источник

IC

Iλyα Che in F# Flood: я вас категорически приветствую!
Попробуй купить блютус клавиатуру. Сможешь быстрее печатать.
источник

P

PoggiGoppi in F# Flood: я вас категорически приветствую!
Iλyα Che
Попробуй купить блютус клавиатуру. Сможешь быстрее печатать.
У нас такое не продаётся
источник

IC

Iλyα Che in F# Flood: я вас категорически приветствую!
PoggiGoppi
У нас такое не продаётся
У вас dns магазинов нет?
источник

P

PoggiGoppi in F# Flood: я вас категорически приветствую!
Только мелкие ларьки с всякими китайскими телефонами и приблудами к ним
источник

IC

Iλyα Che in F# Flood: я вас категорически приветствую!
Грусть.
источник

оГ

отец Григорий in F# Flood: я вас категорически приветствую!
Но интернет-то есть
источник

SN

Shub Niggurath in F# Flood: я вас категорически приветствую!
PoggiGoppi
В двух словах?
среднее реализовано как деление суммы на длину, так? гарантий, что результат будет целым - нет, поэтому оно всегда с плавающей точкой. отсюда два важных вывода: во-первых, возвращаемый тип всегда плавающий, во-вторых, тип элементов списка должен поддерживать нецелое деление (а так же +, но это отдельная тема). поэтому сигнатура у нее такая поехавшая - List.average : ^T list -> ^T (requires ^T with static member (+) and ^T with static member DivideByInt and ^T with static member Zero)
источник

оГ

отец Григорий in F# Flood: я вас категорически приветствую!
Ты сейчас товарищу взрыв мозга обеспечил.
источник

SN

Shub Niggurath in F# Flood: я вас категорически приветствую!
если красненькое не читать, то ок
источник

SN

Shub Niggurath in F# Flood: я вас категорически приветствую!
в общем, если тебе надо считать среднее для целочисленных списков, то придется задействовать вот это вот алгоритмическое конструирование. но Аллах в его бесконечной мудрости уже снабдил нас всем необходимым: в стдлибе есть функция float, а так же List.averageBy. первая функция очень простая - она берет целое и конструирует float (не такая уж тривиальная задача, как может показаться на первый взгляд, но для простоты просто возблагодарим всевышнего). вторая функция чуть интереснее
источник

SN

Shub Niggurath in F# Flood: я вас категорически приветствую!
она берет дополнительный аргумент - функцию. эта функция будет применена к каждому элементу коллекции, а потом уже по этому результирующему списку считает среднее. мне кажется, что изначально она задумывалась для коллекций из составных элементов, тогда функция могла скажем извлечь какой-то элемент из скажем кортежа (как пример). но нам татарам что водка, что пиво - лишь бы с ног валило, поэтому мы банально передадим float в List.averageBy ;;
источник

SN

Shub Niggurath in F# Flood: я вас категорически приветствую!
можешь сам проверить let myAvg l = List.averageBy float l
источник

SN

Shub Niggurath in F# Flood: я вас категорически приветствую!
приблизительно такая же логика с median. кстати, ты видимо провел аналогии с крестами, где приведение выглядит как (float)? тут тема в том, что в ML\F# float - это функция, а не тип. а скобочки вообще не нужны, т.к здесь non-ambigous случай, т.е. записи
float a, (float)a и float(a) -  эквивалентны, это вызов функции
источник

SN

Shub Niggurath in F# Flood: я вас категорически приветствую!
в общем, с медианой тоже очевидно, что самый общий тип - это плавающая точка, пл
источник

SN

Shub Niggurath in F# Flood: я вас категорически приветствую!
поэтому сигнатура будет 'a list -> float (на самом деле там будет то же пассаж из Некрономикона, но пока не будем об этом). поэтому первым делом нам придется сконструировать коллекцию из float
источник

P

PoggiGoppi in F# Flood: я вас категорически приветствую!
> В двух словах
источник