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

В определениях функций с помощью предложений с сопоставлением с образцом защитные элементы по образцу допускают дополнительное сопоставление с образцом внутри защитных элементов, чтобы определить, какое предложение выбрано для выполнения. Для логических охранников используйте тег [guard-clause].
2 ответа

OCaml "с" охранником в сопоставлении с образцом

Я прочитал о шаблонных охранниках на code.google.com, где показан этот тип охранников: match x with | pat with g = y -> z | ... | pat with g = y -> z В OCaml 4.02 однако, похоже, не работает (Syntax error: pattern expected.), поэтому возникает…
2 ответа

Как мне указать, что я хочу, чтобы что-то присутствовало в Haskell

У меня есть охрана, и условие состоит в том, что поиск x list == что-то, то есть x находится в списке. Я старался: | lookup x list == _ = my code here Но при загрузке функции я получаю ошибку "шаблонный синтаксис в контексте выражения"?
22 ноя '13 в 16:15
1 ответ

Охрана, Pattern Matching и различные уравнения в Haskell

Возвращаясь к примеру с моими животными: type Pig = String type Lion = String type Feed = [(Char,Char)] type Visitors = [(Char,Char)] type Costs = (Int,Int,Int) data AnimalHome = Farm Pig Pig Pig Feed | Zoo Lion Lion Lion Feed Visitors orders :: Cha…
20 ноя '13 в 11:19
1 ответ

Не уверен, почему этот образец охранника соответствует

Изучаю Haskell, и я не уверен, почему я не получаю ожидаемый результат, учитывая эти определения: instance Ring Integer where addId = 0 addInv = negate mulId = 1 add = (+) mul = (*) class Ring a where addId :: a -- additive identity addInv :: a -&gt…
16 дек '14 в 18:10
2 ответа

Повторное использование шаблонов в шаблонах или выражениях

Мой проект на Haskell включает в себя оценщик выражений, который для целей этого вопроса можно упростить до: data Expression a where I :: Int -> Expression Int B :: Bool -> Expression Bool Add :: Expression Int -> Expression Int -> Expre…
14 авг '14 в 15:22
1 ответ

Отправка нечетких шаблонов в Haskell

Я пишу некоторый код разбора на дереве. (А именно, дерево зависимостей Stanford nlp) В основном у меня есть такая функция: m :: DepTree -> Logic m (w, [E "nsubj" nsubj, E "dobj" dobj]) = ... m (w, [E "nsubj" nsubj, E "prep" prep]) = ... m (w, [E …
3 ответа

Есть ли в Хаскеле что-то похожее на субгвардейцев?

Я пишу программу по классификации музыкальных интервалов. Концептуальная структура довольно сложна, и я хотел бы представить ее как можно более четко. Первые несколько строк кода представляют собой небольшой фрагмент, который работает правильно. Вто…
15 фев '15 в 13:52
2 ответа

Что делает запятая в синтаксисе guard?

В кодовой базе, которую я читаю, я нашел объявление функции, подобное этому (некоторые части отсутствуют): filepathNormalise :: BS.ByteString -> BS.ByteString filepathNormalise xs | isWindows, Just (a,xs) <- BS.uncons xs, sep a, Just (b,_) &lt…
01 окт '17 в 06:37
2 ответа

Почему не случай с охранниками предикатов в дополнение к шаблонным охранникам?

Почему не случай с охранниками предикатов в дополнение к шаблонным охранникам? {-# LANGUAGE MultiWayIf, LambdaCase #-} module Main where import System.Info (os) import Control.Applicative ((<$>)) import Data.Char (toLower) import Data.List (is…
1 ответ

Предупреждение о том, что шаблон защиты не является исчерпывающим, хотя это

Я наблюдаю интересное поведение при использовании сопоставления с шаблоном и защитой от шаблонов, и все предупреждения включены {-# OPTIONS_GHC -Wall #-} module Mood where data Mood = Happy | Indifferent | Sad deriving Show flipMood :: Mood -> Mo…
11 фев '15 в 12:51
2 ответа

Эрланг / эликсир стражи и арити

Есть ли способ увидеть охрану функции, не видя исходного кода? Дан пример функции (в Elixir): def divide(x, y) when y != 0 do x / y end Как можно выяснить, что существует защита на div /2 без доступа к исходному коду, и как найти информацию об этом …
12 мар '15 в 20:40
1 ответ

Haskell- Определение функции с гвардией

Я довольно новичок в Haskell и сейчас работаю над заданием, имитирующим шашки. У меня возникли трудности с определением правильного метода условной проверки выражения и обновления значений кортежа. У меня есть функция getPos, которая будет возвращат…
09 авг '14 в 15:19
2 ответа

Scala соответствия Список кортежей с охраной

Я новичок в Скале. В качестве упражнения я пытаюсь написать заявление о совпадении со списком кортежей с охраной. Я знаю, что карта решит проблему, но я пытаюсь понять соответствие шаблонам. Я пытаюсь написать функцию, которая принимает List[(Char, …
04 ноя '16 в 10:39
2 ответа

Как использовать сопоставление на уровне аргумента, это возможно? Guards?

Например let When true d = d let foo = () |> When false Так что у меня есть побочный эффект, который мне не нравится, потому что это ошибка: MatchFailureException Я знаю, что у меня может быть хороший побочный эффект здесь: let foo = if false the…
23 сен '14 в 11:26
2 ответа

Как вы соответствуете с охранниками в ракетке?

В Scala вы можете сделать что-то вроде этого: def times[A](item: A, number: Int): List[A] = number match { case n if n <= 0 => Nil // Nil = '() case _ => // equivalent to [_ (cons item (times item (- number 1)))] item :: times(item, number …
04 сен '14 в 09:46
1 ответ

Haskell - охранник внутри дела

Я изучаю книгу на Haskell, а в главе 8 приведен фрагмент кода, который выглядит следующим образом data LockerState = Taken | Free deriving (Eq, Show) type Code = String type LockerMap = Map.Map Int (LockerState, Code) lookup' :: Int -> LockerMap …
28 ноя '16 в 02:13
1 ответ

Haskell: где шаблон привязок совпадает

В данный момент я пытаюсь выучить Haskell с помощью онлайн-учебника Learn you a Haskell. В главе "Синтаксис в функциях" автор написал "Вы также можете использовать привязки к шаблону!". После этого есть часть примера кода, но я не знаю, где сопостав…
05 июл '18 в 22:01
1 ответ

Предлагаемые ScopedTypeVariables В шаблоне тип-подпись

Я начал писать код на Haskell. Я пытался написать функцию Фибоначчи, используя Guards - fibo :: (Num z, Ord z) => z -> z fibo d | d <= 0 = 0 | d == 1 = 1 | otherwise = fibo (d-1) + fibo (d-2) Я получил эту ошибку:- Подпись недопустимого тип…
19 сен '15 в 15:37
4 ответа

Как наклеить матч на поле государственной монады?

Можно ли написать написать функцию a используя паттены, соответствующие / охранники? {-# LANGUAGE PatternGuards #-} import Control.Monad.State.Strict(State, gets, runStateT) data MyState = MyState { counter :: Int } deriving (Show) a :: State MyStat…
3 ответа

Хаскелл говорит, что у моей гвардии есть ошибка разбора

Итак, я играл с Хаскеллом последние пару дней и решил, что сделаю базовое определение последовательности Фибоначчи. Итак, я написал этот код: main = do fib :: (Integral a) => Int -> Int fib x | x == 0 = 0 | x == 1 = 1 | x >= 2 = fib (x - 2)…
04 май '16 в 20:11