Size: a a a

Elm Lang сообщество разработчиков

2018 April 30

NK

ID:536005385 in Elm Lang сообщество разработчиков
Программирование на elm это сплошной рефакторинг, благо компилятор помогает. Переделываешь здесь, там потом еще раз и еще. Я как то над кодом думал наверное неделю не получается красиво и все тут.  Красиво это 1. Минималистично но не более чем нужно.  2. Ортогональные данные. Это как нормализация данных в SQL. Не уверен что могу правильно объяснить.
источник
2018 May 01

AK

Anton Kotenko in Elm Lang сообщество разработчиков
ID:536005385
https://ellie-app.com/gSm4NpZc7a1/2 вторая версия, мне кажется лучше
Да, норм вариант.

Только Shape <-> BaseShape, Cirlce <-> CircleData, такие повторения путают спустя время, особенно shape внутри Shape. Лучше придумать новое имя для вложенных данных. Типа вместо ShapeForm, и тогда условиться, что Form это граф. объект + позиция (и там дальше добавится поворот, масштаб и пр.), а Shape — это сам графический объект.

Типа так: https://ellie-app.com/kYxJ2dLSka1/1
источник

к

кана in Elm Lang сообщество разработчиков
очевидно что у Shape (фигуры) нет позиции, это же фигура
источник

NK

ID:536005385 in Elm Lang сообщество разработчиков
Shape и BaseShape подчеркивают наследование.  Circle и CircleData то что один контейнер другого, здесь все ок. Вот shape как поле Shape да,    пожалуй как то много shape. Надо тип Shape переименовать во что то более общее типа GraphObject ;) form режет глаза, обычно это html form куча полей ввода для сбора данных.
источник

С

Сергей Ufocoder in Elm Lang сообщество разработчиков
хм, но на самом деле это не совсем то что я описывал
источник

С

Сергей Ufocoder in Elm Lang сообщество разработчиков
мне нужно реализовать типа Rounded Form, если пример выше брать
источник

С

Сергей Ufocoder in Elm Lang сообщество разработчиков
я хочу сделать типа такого
type alias Rounded a = { a | shape: Circle }
type alias Ball = Rounded Form
источник

С

Сергей Ufocoder in Elm Lang сообщество разработчиков
или я так понял, что так не получится и лучше типы по другому собрать?
источник

к

кана in Elm Lang сообщество разработчиков
Сергей Ufocoder
я хочу описать физическое тело и описать физическое тело заданной формы, и хочу определить функцию, которая будет работать с физическим телом (менять координты например) вне зависимости от конкретизации его формы
в этой задаче нет ничего про Rounded
источник

к

кана in Elm Lang сообщество разработчиков
если правильно сформулировать задачу, она сама превратится в решение
источник

NK

ID:536005385 in Elm Lang сообщество разработчиков
Да все получится, вопрос в цене при обработке такого типа, сколько придется делать destructure
источник

С

Сергей Ufocoder in Elm Lang сообщество разработчиков
кана
если правильно сформулировать задачу, она сама превратится в решение
вроде разобрался
источник

С

Сергей Ufocoder in Elm Lang сообщество разработчиков
type alias Rounded a = { a | shape : CircleData }
источник

С

Сергей Ufocoder in Elm Lang сообщество разработчиков
если пример выше брать
источник

С

Сергей Ufocoder in Elm Lang сообщество разработчиков
спасибо, ребята)
источник

NK

ID:536005385 in Elm Lang сообщество разработчиков
Можно часть признаков из record вынести в union type. Но не уверен что надо сейчас это усложнять  ;)
источник

к

кана in Elm Lang сообщество разработчиков
тут Rounded лично мне ни о чем не говорит
источник

к

кана in Elm Lang сообщество разработчиков
rounded - закругленный
источник

к

кана in Elm Lang сообщество разработчиков
а определение - рекорд с полем shape
источник

к

кана in Elm Lang сообщество разработчиков
не вижу связи с названием
источник