Вопросы по теме '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 просмотров
schedule
03.04.2022
Размеченные объединения 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 просмотров
schedule
16.08.2022
Сравнение дискриминируемых союзов
Я новичок в F # и играю с FParsec. Я бы использовал FParsec для создания AST. Я хотел бы использовать FsUnit, чтобы написать несколько тестов для различных частей парсера, чтобы гарантировать правильную работу.
У меня проблемы с синтаксисом...
1727 просмотров
schedule
09.07.2022
Цель единичного случая дискриминации союза
Я определяю монадический наблюдаемый/реактивный парсер. Это ведет себя совершенно иначе, чем обычный анализатор, поскольку это непрерывный запрос. Базовый тип:
IObservable<'a> -> IObservable<'b>
Глядя на различные реализации...
1563 просмотров
schedule
26.11.2022
Как свернуть размеченный союз
Я пытаюсь реализовать свертку над дискриминированным объединением. DU называется Expr и представляет собой программное выражение, часто рекурсивное. Я пытаюсь написать свертку, рекурсивно накапливающую результат операции над Exprs. Ниже моя попытка...
492 просмотров
schedule
22.04.2022
Список типов объединения 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 просмотров
schedule
16.08.2022
Упрощение сопоставления вложенных шаблонов F#
Я пишу простой синтаксический анализатор выражений на F#, и для каждого оператора я хочу поддерживать только определенное количество операндов (например, два по модулю, три для If). Вот что у меня есть:
type Operator =
| Modulo
| Equals...
330 просмотров
schedule
11.03.2022
Почему неправильно использовать типы опций в дискриминированном объединении?
Я пытаюсь создать тип данных узла дерева, используя размеченное объединение.
Однако компилятор выдает мне ошибку, говоря, что «переменные анонимного типа не разрешены в этом объявлении».
Что вызывает ошибку?
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 просмотров
schedule
11.05.2023
Ограничение универсальной функции 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 просмотров
schedule
19.01.2023