Описание тега discriminated-union
Дискриминированное объединение или непересекающееся объединение - это структура данных, используемая для хранения значения, которое может принимать несколько разных, но фиксированных типов. В теории типов они также известны как "типы суммы". Вместо [ocaml] используйте [вариант].
1
ответ
Общая функция F#: Как получить Тип F# Дискриминационного Союза?
Пример кода: http://www.tryfsharp.org/create/dutts/Generics.fsx У меня есть некоторый код отображения в моем F#, который берет объект C# и оборачивает его в различимый союз. module MyModule = type MappedThings = | DoThings of External.Things.DoThing…
16 фев '15 в 09:22
1
ответ
Как использовать член дискриминируемого объединения F# от участника записи
Я пытаюсь сделать запись с дискриминированными профсоюзами в качестве членов, но после создания записи "API" у меня есть доступ только к профсоюзам, а не к тому, что я в них вставил.... type DefaultExpr = Expr<int -> Ref<int> -> int -…
22 фев '14 в 14:50
3
ответа
Невозможно сериализовать Дискриминационный Союз в F# Chiron
Если у меня есть: type a = B | C Как мне написать статические члены ToJson и FromJson? Я знаю, как написать его для типа записи (который показан в примерах на Chiron: JSON + Ducks + Monads), но я не могу найти никаких примеров для DU. РЕДАКТИРОВАТЬ …
18 май '16 в 14:55
2
ответа
Списки дискриминируемых союзов в fsharp
Кто-нибудь может объяснить, почему следующие 2 оператора let не работают? type Rank = | Two | Three | Four | Five | Six | Seven | Eight | Nine | Ten type Face = | Jack | Queen | King | Ace type Suit = | Diamonds | Clubs | Hearts | Spades type Card =…
06 фев '12 в 14:17
3
ответа
Доступ к конкретному случаю из F# DU
Предположим, у меня есть следующий DU: type Something = | A of int | B of string * int Теперь я использую его в такой функции: let UseSomething = function | A(i) -> DoSomethingWithA i | B(s, i) -> DoSomethingWithB s i Это работает, но мне приш…
15 мар '13 в 08:22
2
ответа
Есть ли способ для меня, чтобы полностью определить дискриминационный путь союза?
Есть ли способ для меня, чтобы полностью определить дискриминационный путь союза? В настоящее время у меня есть это: type PostionOfScott = | ScottOnFirst | ScottOnSecond | ScottOnThird type PostionOfBrian = | BrianOnFirst | BrianOnSecond | BrianOnTh…
10 май '16 в 03:07
1
ответ
Можно ли иметь полиморфную фабрику для типов, унаследованных от интерфейса?
Следуя советам в SO и других местах, я попытался реализовать полиморфизм, используя интерфейсы, как в следующем упрощенном примере. type IFace = // abstract methods abstract member foo: int -> int type X(i: int) = // some code interface IFace wit…
07 май '17 в 14:59
2
ответа
Сравнение случаев дискриминационного объединения с <и> в F#
Я изучаю F# и строю быстрый набор функций, которые сравнивают две покерные руки и определяют победителя. Я сделал этот дискриминационный союз, чтобы представлять категории покерных рук: type Category = | HighCard | OnePair | TwoPair | ThreeOfAKind |…
14 авг '14 в 20:36
1
ответ
F#: постоянный номер тега объединения
Каждый случай объединения в различаемом типе объединения получает номер тега type Result<'TSuccess,'TFailure> = | Success of 'TSuccess | Failure of 'TFailure let cases = FSharpType.GetUnionCases typedefof<Result<_,_>> for case in c…
31 июл '14 в 16:13
2
ответа
Записи против единичных дискриминированных союзов
Какие плюсы и минусы использования type Complex = { real: float; imag: float; } или же type Complex = Complex of real: float * imag: float Я особенно заинтересован в удобочитаемости и обработке в разных ситуациях.И в меньшей степени производительнос…
06 апр '17 в 09:35
7
ответов
Идиоматический способ представления типа суммы (Either a b) в Clojure
Ред. Теперь у меня вопрос: какие идиоматические конструкции Clojure обычно используются вместо типов суммы в языках статических типов? До сих пор достигнут консенсус: используйте протоколы, если поведение можно унифицировать, в противном случае испо…
08 июн '12 в 11:05
2
ответа
Имена, связанные как с разложенными компонентами различимого объединения, так и с исходным составным значением
Я не могу найти документацию по этому вопросу. Мне нужно разбить значение "Дискриминационный союз" на некоторые его компоненты, но мне также нужно использовать элемент целиком в теле функции. я могу сделать let matcher = function MyDU(_,b,_) -> b…
10 ноя '14 в 17:05
17
ответов
Дискриминационный союз в C#
[Примечание: у этого вопроса было первоначальное название "объединение стилей C (ish) в C#", но, как сообщил мне комментарий Джеффа, очевидно, что эта структура называется "дискриминационным объединением"] Извините за многословность этого вопроса. В…
30 июн '10 в 17:18
2
ответа
Сжатое сопоставление с образцом на единственном распознаваемом объединении в F#
Скажем, у меня есть следующий единый случай дискриминированного союза: type OrderId = OrderId of string В какой-то момент мне нужна актуальная строка. Я нашел способ извлечь это: let id = match orderId with OrderId x -> x Есть ли более краткий сп…
01 сен '12 в 23:14
1
ответ
Машинописный теговый союз в общем
Как сделать эту компиляцию без ошибок? Мы используем TypeScript 2.9.1. interface IFoo { type: 'foo'; foo: string; } interface IBar { type: 'bar'; bar: string; } type FooBar = IFoo | IBar; class Getter<T extends FooBar> { private data: T; const…
12 июн '18 в 14:41
2
ответа
Как я могу разложить дискриминационный союз, который является типом?
Предположим, у меня есть следующее (основное и немного бессмысленное) F#... type Point = Point of int * int type MyUnion = | MyInt of int | MyString of string | MyTwoStrings of string * string | MyPoint of Point ... тогда я могу написать такую фун…
08 апр '18 в 21:53
1
ответ
Схема XML для Tagged Union
У меня есть документ XML, который включает в себя повторяющиеся серии адресов, фактическое содержание которых зависит от значения включенного перечисления. Я полагаю, это тип "тегового союза" [или "дискриминационного союза"?]: { <AddressList> …
04 июн '17 в 16:03
0
ответов
Передача различимых объединений в атрибуты InlineData
Я пытаюсь выполнить модульный тест синтаксического анализатора, который анализирует строку и возвращает соответствующее абстрактное синтаксическое дерево (представленное в виде дискриминированного объединения). Я подумал, что было бы довольно компак…
31 дек '14 в 20:30
1
ответ
Можете ли вы распаковать дискриминированные союзы без файла подписи?
Проектирование с единичными типами DU type DoB = | DoB of System.DateTime let DoB (dt:DateTime) = // shadow constructor if(dt.Year>1914) // business defines what a min Date of Birth should be then Some(DoB dt) else None И я вижу через ответы на …
18 июн '14 в 19:06
1
ответ
Тестирование равенства с Dicricted union в списке
Я определил различные типы: type TypeNull() = class end type MyType1 = { a:int; b:int } type MyType2 = { a:string; b:int } type MyType3 = { a:string; b:DateTime } и разные униженные объединения, которые их используют: type myDU = | A of int | B of s…
01 мар '16 в 16:50