Shub
определены на всех коллекциях, но Seq слегка чуть более лучше сделан
Shub
респект за эмакс, но ты не хотел бы сесть за более пристойное устройство? в коде проблема - у тебя все будет double, даже если список с другим типом. твои сигнатуры должны быть 'a list -> 'a
Nuxs🏴☠️
Shub
подсказки - это нормально
Shub
просто у тебя уровень овладения языком пока не позволяет решать такие задачи. чаще пости такие примеры сюда
Nuxs🏴☠️
У меня только час в день за ПК
Shub
рацион?
Nuxs🏴☠️
Маразм отца
Shub
хехе. ну час довольно жестко. хотя бы два
Nuxs🏴☠️
Он не принимает IT ни в какую
Shub
но видимо и не особо понимает, планшет-то оставил?
Nuxs🏴☠️
Это телефон
Shub
ну не суть.
Shub
короче, твоя первая функция есть в стдлибе. или тебе надо самому реализовать?
Nuxs🏴☠️
Лучше будет, если меньше велосипедов
Shub
ок, заменяй ее на Seq.average
Nuxs🏴☠️
Ага
Nuxs🏴☠️
Shub
разумеется, она берет на вход только нецелые типы. потому что деление у нас сильно типизировано. в ML нет понятия приведения типов, у нас преобразование типа возможно только через алгоритмическое конструирование
Nuxs🏴☠️
Nuxs🏴☠️
Я недопонял
Ilya
Попробуй купить блютус клавиатуру. Сможешь быстрее печатать.
Nuxs🏴☠️
Nuxs🏴☠️
Только мелкие ларьки с всякими китайскими телефонами и приблудами к ним
Ilya
Грусть.
Hog
Но интернет-то есть
Shub
В двух словах?
среднее реализовано как деление суммы на длину, так? гарантий, что результат будет целым - нет, поэтому оно всегда с плавающей точкой. отсюда два важных вывода: во-первых, возвращаемый тип всегда плавающий, во-вторых, тип элементов списка должен поддерживать нецелое деление (а так же +, но это отдельная тема). поэтому сигнатура у нее такая поехавшая - List.average : ^T list -> ^T (requires ^T with static member (+) and ^T with static member DivideByInt and ^T with static member Zero)
Hog
Ты сейчас товарищу взрыв мозга обеспечил.
Shub
если красненькое не читать, то ок
Shub
в общем, если тебе надо считать среднее для целочисленных списков, то придется задействовать вот это вот алгоритмическое конструирование. но Аллах в его бесконечной мудрости уже снабдил нас всем необходимым: в стдлибе есть функция float, а так же List.averageBy. первая функция очень простая - она берет целое и конструирует float (не такая уж тривиальная задача, как может показаться на первый взгляд, но для простоты просто возблагодарим всевышнего). вторая функция чуть интереснее
Shub
она берет дополнительный аргумент - функцию. эта функция будет применена к каждому элементу коллекции, а потом уже по этому результирующему списку считает среднее. мне кажется, что изначально она задумывалась для коллекций из составных элементов, тогда функция могла скажем извлечь какой-то элемент из скажем кортежа (как пример). но нам татарам что водка, что пиво - лишь бы с ног валило, поэтому мы банально передадим float в List.averageBy ;;
Shub
можешь сам проверить let myAvg l = List.averageBy float l
Shub
приблизительно такая же логика с median. кстати, ты видимо провел аналогии с крестами, где приведение выглядит как (float)? тут тема в том, что в ML\F# float - это функция, а не тип. а скобочки вообще не нужны, т.к здесь non-ambigous случай, т.е. записи
float a, (float)a и float(a) - эквивалентны, это вызов функции
Shub
в общем, с медианой тоже очевидно, что самый общий тип - это плавающая точка, пл
Shub
поэтому сигнатура будет 'a list -> float (на самом деле там будет то же пассаж из Некрономикона, но пока не будем об этом). поэтому первым делом нам придется сконструировать коллекцию из float
Nuxs🏴☠️
> В двух словах
Nuxs🏴☠️
Ты, наверное, специально
Nuxs🏴☠️
Я переслал эти сообщения себе, нет времени разбираться, потом разберусь
Nuxs🏴☠️
Я счас есть готовлю
Shub
вот твоя медиана
Shub
let myMedian (lst: int list): float =
let l = List.map float lst |> List.sort |> Seq.toArray
let len = List.length lst
if len % 2 = 0 then
(l.[len / 2 - 1] + l.[len / 2 + 1]) / 2.0
else
l.[len / 2 + 1]
Nuxs🏴☠️
Shub
это валидный идентификатор, если что
Nuxs🏴☠️
Я думал, это что-то значит
Shub
поправил
Anonymous
ачо, фаршик на ведро завезли?
Nuxs🏴☠️
Anonymous
докер штоле завезли?
Nuxs🏴☠️
Нет, это убунта
Anonymous
убунта на телефоне?
Nuxs🏴☠️
Да
Romɑn
https://twitter.com/shanselman/status/1241502736425742336?s=19
Romɑn
Romɑn
Nuxs🏴☠️
linux deploy прога, устанавливает контейнер какого хочешь размера, и на него можно установить какой-то дистр линукса
Nuxs🏴☠️
связь с контейнером может быть по ssh, vnc, xsdl и т.д.
Romɑn
Nuxs🏴☠️
Doge
Нашел неплохую картинку про то, зачем нужны линзы и т.п. оптики, может кто вдохновится.
Андрей
Anonymous
народ, чем это безобразие лечить?
Anonymous
при копипасте всё нормально копируется
Nuxs🏴☠️
Диёр
Anonymous
угу
Диёр
Тут где-то вроде обсуждали уже кракозябры на винде
Anonymous
а у меня латинские так показывает
Anonymous
@fvnever ткни, пожалуйста, куда копать
Dr. Friedrich
Dr. Friedrich
В чём вопрос?
Vasiliy
Dr. Friedrich
Dr. Friedrich
В чём вопрос?