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

Как использовать символы / знаки препинания в дискриминируемых союзах
Я пытаюсь создать размеченное объединение для части речевых тегов и других меток, возвращаемых анализатором естественного языка. В C # / Java для них обычно используются строки или перечисления, но размеченные объединения кажутся более подходящими...
381 просмотров
schedule 13.03.2022

Преобразование между типами в дискриминируемых союзах
У меня есть функция, которая может возвращать разные типы, и для этого я использую размеченное объединение . Что мне нужно, так это преобразование одного типа в размеченное объединение в другой тип. Также некоторые типы могут быть преобразованы во...
2364 просмотров
schedule 12.02.2024

Использование ключевого слова and в F # в дискриминируемых союзах
Сегодня я столкнулся со следующими декларациями DU: type Grammar = Definition list and Definition = Def of string * Expression and Range = | Char of char | Range of char * char Зачем здесь использовать ключевое слово and...
2203 просмотров

Размеченные объединения F# и иерархии классов C#
У меня есть следующий код: public abstract class A ... public class B : A ... public class C : A ... void my_fct(A x) { if (x is B) { block_1 } else if (x is C) { block_2 } else { block_3 } } и мне интересно, хороший ли это перевод с...
903 просмотров

Сравнение дискриминируемых союзов
Я новичок в F # и играю с FParsec. Я бы использовал FParsec для создания AST. Я хотел бы использовать FsUnit, чтобы написать несколько тестов для различных частей парсера, чтобы гарантировать правильную работу. У меня проблемы с синтаксисом...
1727 просмотров
schedule 09.07.2022

Цель единичного случая дискриминации союза
Я определяю монадический наблюдаемый/реактивный парсер. Это ведет себя совершенно иначе, чем обычный анализатор, поскольку это непрерывный запрос. Базовый тип: IObservable<'a> -> IObservable<'b> Глядя на различные реализации...
1563 просмотров
schedule 26.11.2022

Как свернуть размеченный союз
Я пытаюсь реализовать свертку над дискриминированным объединением. DU называется Expr и представляет собой программное выражение, часто рекурсивное. Я пытаюсь написать свертку, рекурсивно накапливающую результат операции над Exprs. Ниже моя попытка...
492 просмотров

Список типов объединения F#
Мне нужен список отчетов. Отчет может быть типа «Подробно» или «Раздел». module Data type Section = { Header: string; Lines: string list; Total: string } type Detail = { State: string;...
854 просмотров
schedule 27.11.2022

Когда использовать дискриминацию объединения и типа записи в F#
Я пытаюсь понять основы F#, прежде чем переходить к сложным примерам. В материале, который я изучаю, представлены как типы Discriminate Unions, так и Record. Я просмотрел материал для обоих, но мне все еще неясно, почему мы должны использовать один...
3875 просмотров
schedule 15.01.2023

Расширение типа для размеченного объединения в F #
Я определил следующий размеченный союз: type Expr = | Con of Num | Var of Name | Add of Expr * Expr | Sub of Expr * Expr | Mult of Expr * Expr | Div of Expr * Expr | Pow of Expr * Expr Затем я создал функцию...
3764 просмотров
schedule 13.03.2023

Скомпилированная форма именованных полей объединения в v3.1
Во-первых, доступна ли спецификация F# 3.1 в Интернете? Если да, то ответ на этот вопрос должно быть достаточно легко найти. Мне интересно, если скомпилированная форма дискриминированных союзов с именованные поля (добавлены в 3.1) будут включать...
241 просмотров
schedule 06.05.2022

Как проверить случай дискриминируемого союза с FsUnit?
Я хотел бы проверить, что значение относится к конкретному случаю размеченного союза, без необходимости также проверять какие-либо включенные данные. Моя мотивация состоит в том, чтобы тестировать только одну вещь с каждым модульным тестом. Пример...
2526 просмотров
schedule 21.03.2023

Встроенное сравнение размеченных объединений в f #
Отвечая на этот вопрос , я обнаружил следующее поведение compare о дискриминируемых союзах. type T = A | B | C | D compare A B (* val it : int = -1 *) compare A C (* val it : int = -2 *) compare A D (* val it : int = -3 *) Меня это...
733 просмотров

Упрощение сопоставления вложенных шаблонов F#
Я пишу простой синтаксический анализатор выражений на F#, и для каждого оператора я хочу поддерживать только определенное количество операндов (например, два по модулю, три для If). Вот что у меня есть: type Operator = | Modulo | Equals...
330 просмотров

Почему неправильно использовать типы опций в дискриминированном объединении?
Я пытаюсь создать тип данных узла дерева, используя размеченное объединение. Однако компилятор выдает мне ошибку, говоря, что «переменные анонимного типа не разрешены в этом объявлении». Что вызывает ошибку? type TreeNode = | TreeNode of int...
139 просмотров
schedule 27.08.2022

f #: постоянный номер тега случая объединения
Каждому случаю объединения в дискриминированном типе объединения присваивается номер тега type Result<'TSuccess,'TFailure> = | Success of 'TSuccess | Failure of 'TFailure let cases = FSharpType.GetUnionCases...
118 просмотров
schedule 09.05.2022

Как переопределить GetHashCode и CompareTo для дискриминируемого союза в F #?
У меня есть простое размеченное объединение F #, которое объединяет логическое значение, строку и число с плавающей запятой. Я хочу переопределить Object.Equals (arg) этого объединения, чтобы я мог добавить эпсилон для учета ошибок точности при...
803 просмотров

Ограничение универсальной функции F # типом объединения?
Согласно заголовку, есть ли способ ограничить общую функцию F # типом объединения? Пока я использую: let toDomain<'T> external: 'T option = assert FSharpType.IsUnion(typeof<'T>) ... Который терпит неудачу во время...
294 просмотров
schedule 06.03.2023

Как создать тип Union в F#, который является типом значения?
Обычные размеченные объединения F# являются ссылочными типами. Как создать простой (нерекурсивный и только с полями типа значения) тип объединения в F#, который является типом значения? Основываясь на некоторых поисках в Интернете, моя текущая...
1571 просмотров
schedule 30.03.2022

заменить неактивные члены данных std::unique_ptr на объединение
Дан союз: #include <iostream> #include <memory> #include <type_traits> #include <vector> #include <cassert> #include <cstdlib> struct A { int a; }; struct B { int b; }; template< typename X > struct S...
310 просмотров