Описание тега pattern-synonyms

Абстракция шаблонов в смысле сопоставления с образцом
2 ответа

Соответствие шаблону Data.Sequence, как списки

Я использую Data.Sequence вместо списков для лучшей производительности. Со списками мы можем сделать следующее foo :: [Int] -> Int foo [] m = m foo (x:xs) m = ... Как это можно сделать с Data.Sequence, Я пробовал следующее: foo:: S.Seq Int -> …
0 ответов

Используйте алгоритм lesk для замены слов в предложении синонимами

Я пытаюсь заменить слова в предложении, используя алгоритм lesk. В настоящее время я сделал с Wordnet. Я не могу интегрировать lesk в этом. Может кто-то помочь мне с этим. from nltk.corpus import wordnet from nltk.tokenize import word_tokenize from …
1 ответ

Как я могу написать этот синоним шаблона без неоднозначных ошибок типа?

С помощью ViewPatterns а также Data.TypeableМне удалось написать функцию, которая позволяет мне написать что-то похожее на анализ случаев на типах. Заметим: {-# LANGUAGE GADTs, PatternSynonyms, RankNTypes, ScopedTypeVariables , TypeApplications, Typ…
19 янв '17 в 23:05
1 ответ

Объединение моделей

Рассмотрим следующие синонимы типа данных и шаблона: {-# LANGUAGE PatternSynonyms, NamedFieldPuns #-} data Foo = Foo { a :: Int , b :: String , c :: Maybe Bool } pattern Bar a b <- Foo { a, b } pattern Baz c <- Foo { c } Я хотел бы соответство…
10 авг '15 в 01:38
1 ответ

Используйте буквенные числа в шаблонах Fin

С одной стороны, я могу использовать #_ строить Fins из литералов: open import Data.Fin data I'mFinnish : Set where Mk : Fin 5 → I'mFinnish foo : I'mFinnish foo = Mk (# 3) С другой стороны, я могу использовать литералы для сопоставления с образцом н…
2 ответа

Сравнение паттернов Хаскелла по векторам

Можно ли использовать сопоставление шаблонов стиля списка на векторах? т.е. import qualified Data.Vector as V f :: V.Vector a -> a f (x:xs) = x выдает ошибку
03 май '16 в 00:54
1 ответ

Как сопоставить шаблон с пустым вектором в Haskell?

Скажем, я хочу реализовать функцию длины для списков, используя сопоставление с образцом, тогда я мог бы сделать что-то вроде этого: length' :: (Num b) => [a] -> b length' [] = 0 length' (_:xs) = 1 + length' xs Могу ли я сделать что-то подобно…
14 апр '16 в 15:15
1 ответ

Замена слова случайно выбранными синонимами в строке?

Я нашел следующий код в Python, который выполняет ту же работу, но он заменяет только выбранный вручную синоним. import nltk from nltk.corpus import wordnet synonyms = [] string="i love winter season" for syn in wordnet.synsets("love"): for l in syn…
21 ноя '18 в 12:10
1 ответ

Задание изоморфизмов вручную для синонима однонаправленного шаблона

Вероятно, нет способа сделать это, но я просто хотел спросить на всякий случай. У меня есть тип данных, это простой кортеж, как это: data Tup a = T a a У меня есть синоним шаблона как это: pattern (:?) :: () => Floating a => a -> a -> Tu…
26 апр '16 в 00:23
1 ответ

Использование ViewPatterns и PatternSynonyms для простого сопоставления с образцом

Допустим, у меня есть GADT для такого языка (мой настоящий язык гораздо более сложный, около 50 конструкторов, но это упрощенный пример): data Expr t where Add :: Expr t -> Expr t -> Expr t Sub :: Expr t -> Expr t -> Expr t Mult :: Expr …
08 май '17 в 01:38
2 ответа

Псевдонимы конструкторов Haskell

Есть ли способ создать что-то эквивалентное созданию псевдонимов конструктора в Haskell? Я думаю, что это похоже на псевдонимы типов, где вы можете дать типу другое имя, но он все равно ведет себя как псевдоним типа. Мой вариант использования - это …
28 сен '13 в 23:52
0 ответов

Образец синонимов производного чтения?

Синонимы шаблона обеспечивают краткий способ выражения значения; также они могут предоставить абстрактное имя, чтобы избежать взлома клиентским модулем данных. Вот не очень полезный пример для обсуждения: data MyNum = MkNum Int pattern Zero :: MyNum…
07 июн '18 в 09:48
2 ответа

Haskell - Использование константы в сопоставлении с образцом

Допустим, у меня есть следующий код (текст в <> это сокращение, а не часть кода): data A = <something> defaultA :: A defaultA = <Really complicated expression of type A> Теперь я хочу, чтобы функция соответствовала шаблону defaultA…
1 ответ

Почему все синонимы рекурсивного шаблона отклоняются?

{-# LANGUAGE PatternSynonyms, ViewPatterns #-} data Quun = Foo | Bar | Oink Quun fooey :: Quun -> Bool fooey Foo = True fooey (Oink Yum) = True fooey _ = False pattern Yum <- (fooey -> True) Это не компилируется (по крайней мере, в GHC-7.10…
5 ответов

Haskell Bytestrings: Как сопоставить шаблон?

Я новичок в Haskell, и у меня возникли проблемы с выяснением того, как шаблон соответствует ByteString, [Char] Версия моей функции выглядит так: dropAB :: String -> String dropAB [] = [] dropAB (x:[]) = x:[] dropAB (x:y:xs) = if x=='a' &&…
2 ответа

Проблема с синонимами типа Haskell

Это дает мне следующую ошибку Не в области: конструктор данных Blah Зачем? Я думал, что я могу использовать синоним типа везде, где я могу использовать Person data Person = Person { weight :: Int, height :: Int } type Blah = Person person1 :: Blah p…
05 фев '14 в 19:54
1 ответ

Почему я не могу сопоставить образец с соотношением в Haskell?

Я пытаюсь сопоставить образец с соотношением: isValid :: Ratio Int -> Bool isValid (num % den) = ... Тем не менее, это дает: Parse error in pattern: num % den Интересно, что Data.Ratio Пакет определяет numerator а также denominator таким образом,…
25 окт '15 в 01:55
1 ответ

Константы в Haskell и сопоставление с образцом

Как можно определить макрос константу в Haskell? В частности, я бы хотел, чтобы следующий фрагмент выполнялся без наложения второго сопоставления с образцом. someconstant :: Int someconstant = 3 f :: Int -> IO () f someconstant = putStrLn "Arg is…
15 фев '16 в 19:14
2 ответа

Как обрабатывать множество констант в Haskell?

Я работаю над библиотекой, позволяющей разработчику управлять Minitel (французский терминал видеотекса). У меня много постоянных значений, и я хотел бы знать, как лучше всего управлять ими с помощью Haskell. Это распространенный вопрос среди начинаю…
22 фев '15 в 15:57
1 ответ

Синоним шаблона не может объединять типы в списке на уровне типов

Я получаю сообщение об ошибке при попытке определить синоним шаблона на основе GADT, который имеет список уровня типа. Мне удалось свести это к следующему примеру: {-# LANGUAGE GADTs #-} {-# LANGUAGE KindSignatures #-} {-# LANGUAGE DataKinds #-} {-#…
30 мар '16 в 22:24