Size: a a a

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

2019 June 27

AK

Anton Komissarov in Elm Lang сообщество разработчиков
init : ( String, CruiseSail ) -> Dict String CruiseSail -> CruiseSails
init selectedCruiseSail dict =
   CruiseSails
       { selected = selectedCruiseSail
       , dict =
           Dict.remove
               (Tuple.first selectedCruiseSail)
               dict
       }
источник

AK

Anton Komissarov in Elm Lang сообщество разработчиков
type CruiseSails
   = CruiseSails
       { selected : ( String, CruiseSail )
       , dict : Dict String CruiseSail
       }
источник

AP

Aleksei (astynax) Pirogov in Elm Lang сообщество разработчиков
Не настолько и "в другую строну". Заменить в моём тексте "вхождение" на "не вхождение" и будет оно :)
источник

AK

Anton Komissarov in Elm Lang сообщество разработчиков
то что тут Dict это не сильно важно
источник

AK

Anton Komissarov in Elm Lang сообщество разработчиков
да
источник

AK

Anton Komissarov in Elm Lang сообщество разработчиков
так и есть
источник

AP

Aleksei (astynax) Pirogov in Elm Lang сообщество разработчиков
Приведённый тип — unsafe
источник

AK

Anton Komissarov in Elm Lang сообщество разработчиков
ладно, я в целом понял
источник

AP

Aleksei (astynax) Pirogov in Elm Lang сообщество разработчиков
отследить все места, где он конструироуется, сложно. И делать это нужно руками, потому что компилер не поможет
источник

AK

Anton Komissarov in Elm Lang сообщество разработчиков
я бы очень хотел запилить безопас тип
источник

AP

Aleksei (astynax) Pirogov in Elm Lang сообщество разработчиков
Заметьте, я не говорю, что smart constructors — плохой подход :) Он полезный. Но только когда иначе никак
источник

AK

Anton Komissarov in Elm Lang сообщество разработчиков
но в нашем случае, очень круто, что скрытый конструктор спасает нас от 5-6 невозможных состояний
источник

AK

Anton Komissarov in Elm Lang сообщество разработчиков
подход предельно прост, и отследить его очень легко. Скрытый конструктор/ init/add/remove функция
источник

AK

Anton Komissarov in Elm Lang сообщество разработчиков
и вуаля
источник

AK

Anton Komissarov in Elm Lang сообщество разработчиков
есть более умные варианты
источник

AK

Anton Komissarov in Elm Lang сообщество разработчиков
когда тип type
type alias = One payload | Two otherPayload | Three ...
источник

AP

Aleksei (astynax) Pirogov in Elm Lang сообщество разработчиков
Да как минимум в том же модуле, где объявлен тип и написаны эти самые функции для модификайции, можно ошибиться.
источник

AK

Anton Komissarov in Elm Lang сообщество разработчиков
Aleksei (astynax) Pirogov
Да как минимум в том же модуле, где объявлен тип и написаны эти самые функции для модификайции, можно ошибиться.
согласен, но на данный момент, это самое умное что мы придумали
источник

AP

Aleksei (astynax) Pirogov in Elm Lang сообщество разработчиков
Проблема в том, что в Elm нельзя свои типы в качестве ключей словаря использовать...
источник

AK

Anton Komissarov in Elm Lang сообщество разработчиков
даааа, это проблема
источник