Size: a a a

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

2017 June 05

AK

Anton Kotenko in Elm Lang сообщество разработчиков
не, мне нужно именно список, который состоит *только* из элементов типа TypeOne
источник

AK

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

AP

Aleksei (astynax) Pirogov in Elm Lang сообщество разработчиков
Указанный тип-суммы не может такое запретить. Нужен другой тип
источник

AP

Aleksei (astynax) Pirogov in Elm Lang сообщество разработчиков
Т.е. даже если сфильтровать List MyUnionType и оставить там только TypeOne, то ничто не помешает добавить туда TypeTwo, ибо тип списка такое позволяет.
источник

AW

Arthur Welf in Elm Lang сообщество разработчиков
Тогда смотрите функцию List.all
источник

AW

Arthur Welf in Elm Lang сообщество разработчиков
all : (a -> Bool) -> List a -> Bool
источник

AP

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

AP

Aleksei (astynax) Pirogov in Elm Lang сообщество разработчиков
> нужно именно список, который состоит *только* из элементов типа TypeOne

all тут не поможет
источник

AK

Anton Kotenko in Elm Lang сообщество разработчиков
в смысле, вроде одно и то же :)
источник

AW

Arthur Welf in Elm Lang сообщество разработчиков
all - это не предикат. Он ПРИНИМАЕТ предикат, проверяющий, что в списке все значения типа TypeOne и возвращает True либо False
источник

AP

Aleksei (astynax) Pirogov in Elm Lang сообщество разработчиков
> список, который состоит *только* из элементов типа TypeOne

это List TypeOne грубо говоря. Иначе это максимум "список, который сейчас содержит только TypeOne" :)
источник

AP

Aleksei (astynax) Pirogov in Elm Lang сообщество разработчиков
Arthur Welf
all - это не предикат. Он ПРИНИМАЕТ предикат, проверяющий, что в списке все значения типа TypeOne и возвращает True либо False
принимает предикат и возвращает предикат
источник

AK

Anton Kotenko in Elm Lang сообщество разработчиков
это да, вот и List TypeOne тоже не сказать
источник

AK

Anton Kotenko in Elm Lang сообщество разработчиков
по аналогии с List String например
источник

AP

Aleksei (astynax) Pirogov in Elm Lang сообщество разработчиков
type TypeOne = TypeOne
type TypeTwo = TypeTwo
type Union = One TypeOne | Two TypeTwo

onlyOnes : List Union -> List TypeOne
источник

AP

Aleksei (astynax) Pirogov in Elm Lang сообщество разработчиков
так можно
источник

AK

Anton Kotenko in Elm Lang сообщество разработчиков
а в purescript такое есть из коробки? :)
источник

AP

Aleksei (astynax) Pirogov in Elm Lang сообщество разработчиков
Какое "такое"?
источник

AW

Arthur Welf in Elm Lang сообщество разработчиков
Тогда я не понимаю, что нужно-то. Если есть несколько списков и нужно из них выбрать только тот, в котором все значения типа TypeOne, то проверяете все списки при помощи all isTypeOne list - и получаете желаемый список (или списки). Вроде же так задача формулировалась...
источник

AK

Anton Kotenko in Elm Lang сообщество разработчиков
Aleksei (astynax) Pirogov
type TypeOne = TypeOne
type TypeTwo = TypeTwo
type Union = One TypeOne | Two TypeTwo

onlyOnes : List Union -> List TypeOne
ну вот это извращение какое-то
источник