Igor
Брагилевский кстати кажется сильно схуднул (или он просто в youtube толще кажется)
Анна
Не знаю, я вот только сегодня имела честь познакомиться
Анна
тусич уже удался, я считаю :)
Vitaly
Hog
Vitaly
Не, просто в марте к врачу сходил
Hog
Vitaly
Типа того
Hog
научи!!!
Vitaly
Ну просто врач должен подробно описать, чем это всё грозит, сразу отличная мотивация
Romɑn
Hog
Фил Ранжин
Православно ли называть модуль и тип одинаково?
Фил Ранжин
в F# разумеется
Hog
конечно
Hog
List, Array - вот это вот всё
Vladislav
Фил Ранжин
Кажется у меня большие проблемы с пониманием функционального дизайна.
Вот у меня есть мой тип, который сейчас просто алиас к двумерному массиву. И я хочу, что бы во всех частях системы, которыя используют этот мой тип, возможно было использовать только методы, которые я решил допустимыми по отношению к этому типу, а не все методы двумерных массивов. И вот как это сделать по-функциональному?
Hog
One case DU
Hog
+ модуль с фциями декомпозиции и вызова соответствующей фции Array2D.
Hog
Или я неправильно тебя понял?
Фил Ранжин
функции декомпозиции?
Vladislav
Vladislav
И модуль который с du работает
Фил Ранжин
так, окей
Фил Ранжин
но вот в чём проблема
Фил Ранжин
если клентский код сам декомпозирует мой DU, и начнёт работоть с тем типом, который я в нём спрятал
Фил Ранжин
а я потом захочу поменять этот тип на другой
Фил Ранжин
то этот клиентский код придётся модифицировать
Max
- доктор, когда я так делаю, у меня болит.
- не делайте так
Max
это я к тому что не надо значит давать клиентскому коду декомпозировать
Фил Ранжин
Я тебя понял
- делаешь либу
- отыскиваешь всех, кто использует её не так, как ты задумал
- раздаешь им пиздюлей
Фил Ранжин
благо, поиск по гитхабу есть
Фил Ранжин
серьёзно, как быть?
Max
я не настоящий сварщик, но может есть способы спрятать твой однокейсный DU. специалисты должны знать.
Roman
я чёт батхертнул
Почему? Я например использую винформс тоже по этим причинам.
Max
серьёзно, как быть?
https://stackoverflow.com/a/19933517/79386 вот например тут 6 лет назад говорили, что есть синтаксис для приватных конструкторов для DU
Vladislav
Vladislav
Я проверял
Фил Ранжин
DU приватный? А как тогда клиентский код будет им оперировать?
Фил Ранжин
я к чему - какая тут общепринятая практика?
Vladislav
Vladislav
(Мне так кажется)
Vladislav
Но я сам не стесняю типы использовать как есть не оборачивая
Roman
Я что то не понял. А зачем DU и потом прятать внутренний тип. Какой юзкейс?
Roman
Если тот что выше описан, то враппер написать ОО
Фил Ранжин
юзкейс такой
вот у меня есть состояние, которое сейчас хорошо описывается простым двумерным массивом
и вот есть код, которому для работы нужно это состояние
но этому коду от состояния нужно только несколько методов
Я хочу написать
type State = State of MyAwesomeType[,]
let private value (State state) = state
// тут те методы, которые хочу предложить клиентам
let tryGet index state =
let i1, i2 = index
let arr = value state
match contains index arr with
| true -> Some arr.[i1, i2]
| false -> None
и
let clientFunc (st: State) =
tryGet (0, 0) st
что бы потом, если я захочу уйти от двумерного массива, и использовать что-нибудь более сложное, клиентский код не сломался
Roman
Обычный враппер класс. И это будет вполне функционально ))
Shub
юзкейс такой
вот у меня есть состояние, которое сейчас хорошо описывается простым двумерным массивом
и вот есть код, которому для работы нужно это состояние
но этому коду от состояния нужно только несколько методов
Я хочу написать
type State = State of MyAwesomeType[,]
let private value (State state) = state
// тут те методы, которые хочу предложить клиентам
let tryGet index state =
let i1, i2 = index
let arr = value state
match contains index arr with
| true -> Some arr.[i1, i2]
| false -> None
и
let clientFunc (st: State) =
tryGet (0, 0) st
что бы потом, если я захочу уйти от двумерного массива, и использовать что-нибудь более сложное, клиентский код не сломался
класс надо
Hog
module Fill =
let fill Fill(f) = ... а тут f это уже твой int[,]
Hog
Пишу по памяти, но как-то вот так
x
x
это какая-то новая прилага от убера для РБ. реально дешевле
Анна
Это временные скидосы
Romɑn
Romɑn
https://hh.ru/vacancy/29847031
Обязанности:
Вы будете работать, плакать и смеяться в команде страстных экспертов в области роботизации, функционального программирования, машинного обучения и сетевого взаимодействия, моделирования сложных процессов, распределенных систем, вопросов безопасности и систем устойчивых к ошибкам.
Анна
x
x
👍👍👍
Anonymous
Haskel 🤔
x
зато у них всё чисто и теоретично!
x
вряд ли там код для микроконтроллеров приводов
x
а хай левел - почему нет?
x
мы в универе что-то типа бейсика юзали
Pavel
бейсик он в 16К работает без вопросов.
Aleksandr
всякая мотиматика
Aleksandr
не относится к приводам
Aleksandr
но относится к роботам
Aleksandr
Робот должен заниматься каким-то анализом, что-то высчитывать
x
Pavel
и? ну насчиталась математика. данные для нее еще получить надо от сенсоров того же робота. дальше все одно роботом управлять надо
Pavel
Aleksandr
я думаю, дрова они возьмут уже готовые
Aleksandr
или напишут на другом языке. дотнет все стерпит
Pavel
Aleksandr
а гугл это тупо нули и единицы в серверном компьютере