Size: a a a

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

2017 June 05

AP

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

AK

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

AK

Anton Kotenko in Elm Lang сообщество разработчиков
Aleksei (astynax) Pirogov
Это просто три типа
является ли суб-тип юнион-типа типом сам по себе?
источник

AW

Arthur Welf in Elm Lang сообщество разработчиков
all это и есть синтаксический сахар, позволяющий вам не писать эту функцию самостоятельно из примитивов
источник

AP

Aleksei (astynax) Pirogov in Elm Lang сообщество разработчиков
Вы хотите из типа-суммы достать слагаемое и при этом сохранить тип равный типу-сумме, но при этом гарантировать, что из суммы останется только одно слагаемое?
источник

AP

Aleksei (astynax) Pirogov in Elm Lang сообщество разработчиков
type Union = TypeOne | TypeTwo - здесь не два типа, ровно один
источник

AP

Aleksei (astynax) Pirogov in Elm Lang сообщество разработчиков
TypeOne - это не тип, это значение (конструктор, на самом деле, но всё конструктор значения)
источник

AP

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

AK

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

AP

Aleksei (astynax) Pirogov in Elm Lang сообщество разработчиков
Т.е. UnionType в данном случае - никакой не union.
источник

QZ

Quet Zal in Elm Lang сообщество разработчиков
для того чтобы доставать из списка элементы только одного типа нужна сначала поддержка гетерогенных списков, а этого в элме нет )
источник

AP

Aleksei (astynax) Pirogov in Elm Lang сообщество разработчиков
Union, это type Both = S String | I Int
источник

QZ

Quet Zal in Elm Lang сообщество разработчиков
в том что сейчас - они и так одного типа
источник

AP

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

QZ

Quet Zal in Elm Lang сообщество разработчиков
я и не утверждал что они типы
источник

QZ

Quet Zal in Elm Lang сообщество разработчиков
я говорил что для того чтобы получить только список с элементами T нужна поддержка списков где можно держать более одного типа
иначе задача смысла не имеет
источник

AP

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

о_О
источник

AP

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

А! Теперь понял :)
источник

AP

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

AK

Anton Kotenko in Elm Lang сообщество разработчиков
Aleksei (astynax) Pirogov
Union, это type Both = S String | I Int
хочу так сделать:

doSomething : List Both -> Result Int Int
doSomething myList =
  case myList of
    List S allStrings -> Err -1
    List I allNums -> Ok (List.map (+) allNums)
    _ -> Err -1
источник