Вопросы по теме 'discriminated-union'

Совпадение по размеченному объединению
Первое использование F # в производственной среде и небольшая помощь. Пожалуйста, посмотрите этот код, где я добавил предупреждения, которые получаю в виде комментариев к каждой строке: type AssetClass = | Corp | Corp_SME | Res_Mort...
694 просмотров

Взаимно ссылающиеся случаи в размеченных союзах разрешены в F #?
Не удается скомпилировать следующий размеченный союз: type Expression = | Identifier of string | Integer of int | Assignment of Identifier * Expression с показанной ошибкой The type "Identifier" is not defined. по последнему...
169 просмотров

Преобразование абстрактного синтаксического дерева (AST) в F#
Я пытаюсь разработать AST для таблицы логики решений. Одна из вещей, которую я хотел бы сделать с размеченным объединением, которое представляет мой AST, — это преобразовать его части по разным причинам. Для наглядности приведу пример Таблица...
958 просмотров

F #: объединение различаемых объединений и иерархий классов?
Скажем, у меня есть значительная иерархия классов: Tag ControlFlowTag IfTag ForTag JumpTag HTMLTag DivTag и я хочу составить список с вкраплениями этих и строк. let MyList = [tagA, tagB, "some text",...
681 просмотров
schedule 15.08.2022

F #: вложенные дискриминируемые объединения и сопоставление
У меня есть 2 вложенных дискриминируемых союза: type ServiceTypes = | Contexts | Context of int | Producers type ServiceActions = | Get of ServiceTypes | Update of ServiceTypes И вложенный оператор соответствия: let...
1720 просмотров

списки дискриминируемых объединений в fsharp
Может ли кто-нибудь объяснить, почему следующие два оператора let не работают? type Rank = | Two | Three | Four | Five | Six | Seven | Eight | Nine | Ten type Face = | Jack | Queen | King | Ace type Suit = | Diamonds | Clubs |...
1356 просмотров
schedule 27.04.2023

Добавление полей констант в размеченные объединения F #
Можно ли добавить значения постоянных полей в размеченные объединения F #? Могу я сделать что-то подобное? type Suit | Clubs("C") | Diamonds("D") | Hearts("H") | Spades("S") with override this.ToString() = // print out the...
783 просмотров
schedule 02.07.2023

Сопоставьте все значения в размеченном объединении
Скажем, у меня есть дискриминированный союз: type card = Smithy | Cellar | Chapel И функция, которая сопоставляет размеченное объединение с некоторым значением: let initialCardCount = function Smithy -> 4 Cellar -> 6 Chapel...
656 просмотров
schedule 01.06.2023

Как указать предложение объединения с общей единицей измерения в F #?
Можно ли как-то определить DU, в предложениях которого используются общие единицы измерения? например type MyDU = | A of int<_> | B of float<_> этот код не компилируется, но я могу указать обычную функцию, которая принимает...
190 просмотров
schedule 31.08.2022

Краткое сопоставление с образцом для единственного размеченного объединения в F #
Скажем, у меня есть следующий размеченный союз единственного случая: type OrderId = OrderId of string В какой-то момент мне нужна настоящая строка. Я нашел способ его извлечения: let id = match orderId with OrderId x -> x Есть...
2195 просмотров

Параметризованный размеченный союз в F #
Возможный дубликат: типизированное абстрактное синтаксическое дерево с приложение функции Я хотел бы иметь следующее type t<'a>= | Val of 'a | Apply of (('a -> 'b) -> t<'a> -> t<'b>) * t<'a> |...
118 просмотров
schedule 24.06.2023

Шаблон проектирования для расширения дискриминируемых союзов
Хорошо известно, что наследование классов - это «открытые» иерархии типов, а размеченные объединения - это «закрытые» иерархии типов. Однако, хотя добавлять новые подклассы легко, добавление новых виртуальных функций требует модификации всех...
152 просмотров
schedule 14.02.2023

Понимание вывода о дискриминируемых союзах
Рассмотрим следующий код ... type TypeOne () = member val Name = "" with get, set type TypeTwo () = member val Name = "" with get, set member val Property = 0 with get, set [<RequireQualifiedAccess>] type UnionType = |...
177 просмотров
schedule 15.03.2023

Создание дискриминированных данных объединения из файла / базы данных
У меня есть размеченный союз для таких выражений (EQ =; GT>; и т. Д.) (AND (OR (EQ X 0) (GT X 10)) (OR (EQ Y 0) (GT Y 10))) Я хочу создать экземпляры DU из таких выражений, сохраненных в файле / базе данных....
358 просмотров
schedule 08.10.2022

операция динамического множества UNION принимает два непересекающихся множества S1 и S2 в качестве входных данных.
Это мой домашний вопрос, который я пытался решить, просто нужно, чтобы кто-нибудь посмотрел и сказал мне, правильно ли я это делаю или изношен. Операция динамического множества UNION принимает на вход два непересекающихся множества S1 и S2 и...
1544 просмотров

Использование типов Discriminated Union в привязках переменных
Я сделал собственный тип и хотел бы создать 2 переменные, которые доказывают, что мой тип работает должным образом. type number = A of int | B of float;; let a = 0;; let b = 0.0;; Как мне изменить объявления переменных, чтобы заставить их...
92 просмотров
schedule 10.07.2022

Рекурсивные размеченные союзы и карта
Мне нужен тип дерева и карта на них, поэтому я делаю это: type 'a grouping = G of ('a * 'a grouping) list with member g.map f = let (G gs) = g gs |> List.map (fun (s, g) -> f s, g.map f) |> G...
168 просмотров
schedule 02.07.2022

Можно ли передавать размеченные теги объединения в качестве аргументов?
Можно ли передать тип размеченного тега объединения другой функции, чтобы она могла использовать его для сопоставления с образцом? Нерабочий пример того, что я имею в виду: type Animal = Pig of string | Cow of string | Fish of string let...
1904 просмотров

Может ли компилятор F# использовать каррирование для разделения путей кода в зависимости от типа?
Может ли компилятор F# отделить пути кода, каррируя функцию, в которой разные типы подразумевают разные пути через последующие вызываемые функции? Рассмотрим следующий размеченный союз. Есть 2 возможности, которые теоретически относятся к разным...
104 просмотров

пользовательский атрибут класса для случая размеченного союза
В приведенном ниже коде Success и Failure скомпилированы в 2 отдельных класса. Как я могу предоставить настраиваемые атрибуты для успехов и неудач? type Result<'TSuccess,'TFailure> = | Success of 'TSuccess | Failure of 'TFailure...
541 просмотров
schedule 30.12.2022