Описание тега polymorphic-variants
2
ответа
Можно ли комментировать составленный полиморфный вариант типа?
Я использую полиморфные варианты для обработки ошибок с типами результатов (взяты из http://keleshev.com/composable-error-handling-in-ocaml), и это отлично подходит для исчерпывающей проверки. Недавно я столкнулся с необходимостью аннотировать тип р…
25 дек '18 в 07:44
1
ответ
Разница между дюной утопом и утопом
Если я загружу следующий код в utop, после #require "mparser", принимается на верхнем уровне и ставит подпись ниже open MParser let infix p op = Infix (p |>> (fun _ a b -> (`Binop (op, a, b))), Assoc_left) let operators = [ [ infix (char '*…
10 ноя '18 в 12:30
1
ответ
Как сделать полиморфные варианты Ocaml приватными
Я хотел бы переключить некоторые из моих типов на использование полиморфных вариантов Ocaml, учитывая их с открытой рекурсией, сохраняя при этом соблюдение моих существующих частных неполиморфных типов, а также проверку исчерпывающей информации о со…
04 сен '18 в 11:18
1
ответ
Типы вариантов как ограничения сигнатур модулей / функторов в ocaml
Я пытаюсь использовать модули / функторы, чтобы иметь более общий дизайн кода. Для упрощения у меня есть два интерфейса: module type T1 = sig type t end;; module type T2 = sig type t end;; и я хотел бы так создать T2.t с типом варианта на основе T1.…
14 дек '17 в 06:49
1
ответ
Полиморфный вариант ограничения в определении варианта
Предположим, что я хочу смоделировать простой тип выражения в OCaml: type expr = | `Int of int | `Str of string | `IntAdd of expr * expr | `StrAdd of expr * expr Можно ли ограничить expr в expr * expr для конкретных конструкторов expr сам (то есть я…
10 ноя '18 в 02:56
1
ответ
Полиморфный вариант реализации подтипа не соответствует сигнатуре
У меня есть следующий код: module Test : sig type +'a t val make : int -> [< `a | `b] t end = struct type 'a t = Foo of int | Bar of string let make = function | 0 -> (Foo 0 : [`a] t) | _ -> (Bar "hi" : [`a] t) end Как вы можете заметить…
13 янв '18 в 06:23
0
ответов
Можно ли динамически создавать полиморфный вариантный тип с использованием модулей?
Я пытаюсь систематизировать и повторно использовать свой код reasonML. У меня есть типы моделей модулей, которые выглядят следующим образом: module Diet = { let schema = `DietSchema; type idType = [`DietId(UUID.t)]; type idAsType('a) = [> | `Diet…
01 дек '18 в 20:08
2
ответа
Перекрывающее ограничение подтипа шаблонного шаблона в полиморфном варианте
Учитывая эти типы type a = [ `A ] type b = [ a | `B | `C ] и эта функция let pp: [< b] -> string = function | `A -> "A" | `B -> "B" | `C -> "C" применяя значение типа a работает без проблем, как и ожидалось: let a: a = `A let _ = pp a…
09 ноя '17 в 21:45
1
ответ
Моделирование грамматики с помощью GADT, но параметр типа не унифицируется
Я подумал, что нашел изящный способ моделирования грамматик с использованием GADT, предоставив каждому конструктору (например, Char) параметр возвращаемого типа, который является полиморфным вариантом (например, [`Char] t), а затем с помощью фун…
22 ноя '19 в 02:10
2
ответа
Смоделировать полиморфные варианты в F#?
Я новичок в F#, поэтому заранее простите меня, если это глупый вопрос или если синтаксис может быть немного неправильным. Надеюсь, в любом случае удастся понять суть вопроса. Чего я бы хотел добиться, так это возможности сочинять, например, Result(и…
08 мар '20 в 13:42
2
ответа
ocaml полиморфный вариант тип предполагаемый тип слишком общий
У меня есть этот код let my_fun: [`X | `Y | `Z] -> [`Z | `Y] = function | `X -> `Y | x -> x Он не компилируется с сообщением 11 | | x -> x ^ Error: This expression has type [ `X | `Y | `Z ] but an expression was expected of type [ `Y | `…
15 ноя '19 в 01:40
2
ответа
Полиморфные варианты и let%bind type error
Я пытаюсь использовать технику составной обработки ошибок в OCaml (тип результата с полиморфными вариантами ошибок) для некоторого кода, который я написал. Типы функций, которые я пытаюсь использовать, выглядят так: val parse : parser -> token li…
02 июн '20 в 18:43
1
ответ
Полиморфные варианты и сигнатуры типов
(Это расширение / дистилляция полиморфных вариантов и допускает ошибку типа% связывания) Рассмотрим следующий код: Версия 1: let x : [> `Error1 ] = (`Error1 : [> `Error1 ]) let y : [> `Error1 | `Error2 ] = x Версия 2: let x : [> `Error1 …
03 июн '20 в 17:56
1
ответ
В каком диапазоне caml_hash_varian возвращает значения?
Подраздел " 20.3.6 Полиморфные варианты" описывает, как определить значение полиморфного варианта в C (* Он содержит ошибку: должно бытьcaml_hash_variant вместо того hash_variant) Я хочу напрямую использовать эти хеш-значения как коды ошибок в C++. …
23 июл '20 в 01:52
1
ответ
Сочетание параметрического полиморфизма и полиморфных вариантов (типы обратных кавычек)
Предположим, у меня есть тип, состоящий из нескольких (ковариантно) полиморфных вариантов, например следующих: [> `Ok of int | `Error of string] Далее предположим, что я хочу разложить это определение на какой-то конструктор типа и конкретный тип…
21 янв '20 в 02:41
1
ответ
Как сопоставить частный полиморфный вариантный тип вне содержащего модуля?
Я могу закрыть возможность создания экземпляра вариантного типа вне содержащего модуля с помощью private ключевое слово. module Ordinary : sig type t = private X | Y val x : t end = struct type t = X | Y let x = X end Я не могу создавать экземпляры …
17 июл '20 в 20:56
1
ответ
Объединение списков вариантов разных типов в purescript
Я играл с Purescript как средством экспериментов с программированием на языке, подобном Haskell, с полиморфизмом строк и столбцов. В частности, используя вариантный пакет Purescript, я пытался написать операцию для последовательного объединения двух…
11 ноя '20 в 03:08
0
ответов
ReasonML Полиморфный вариант при захвате Union в GraphQL ppx
У меня проблемы с союзами в ppx, интерпретирующими полиморфные варианты. В моем браузере с помощью Js.log Я нахожу предмет, похожий на {__typename: "MultipleChoiceQuestion", id: "91d7d8ec-a581-56ef-8467-ca4d54da1dd7", questionBas…
18 окт '20 в 23:30
1
ответ
Полиморфный вариант -> GADT?
Я пишу систему на Прологе и использую полиморфные варианты для представления терминов Пролога. В частности, я использую полиморфные варианты (вместо обычных), поэтому я могу создавать подтипы, обеспечивая при этом превосходную проверку полноты соотв…
11 ноя '20 в 16:42