pattern-guards

    1熱度

    2回答

    我是Scala的新手。作爲一個練習,我試圖在帶有警衛的元組列表上寫一個匹配語句。我知道一張地圖可以解決這個問題,但我正試圖獲得對模式匹配的理解。 我試圖編寫一個以List[(Char, Int)]作爲參數的函數。該函數對條目進行排序,如果兩個條目具有相同的鍵值,則將它們相加。所以下面的參數List(('q', 1'), ('a', 1), ('c', 2), ('a', 2), ('c', 1))

    3熱度

    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)))]

    2熱度

    4回答

    有沒有可能寫使用模式匹配/守衛功能a? {-# LANGUAGE PatternGuards #-} import Control.Monad.State.Strict(State, gets, runStateT) data MyState = MyState { counter :: Int } deriving (Show) a :: State MyState

    2熱度

    1回答

    我在樹上寫了一些解析代碼。 (即在斯坦福NLP依賴關係樹) 基本上我有這樣的功能: m :: DepTree -> Logic m (w, [E "nsubj" nsubj, E "dobj" dobj]) = ... m (w, [E "nsubj" nsubj, E "prep" prep]) = ... m (w, [E "nsubj" nsubj]) = ... m (_, [])

    0熱度

    1回答

    再回到我的動物,例如不同的方程式: 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

    21熱度

    1回答

    我使用模式與模式匹配警衛觀察時,一個有趣的現象,所有的警告開啓 {-# OPTIONS_GHC -Wall #-} module Mood where data Mood = Happy | Indifferent | Sad deriving Show flipMood :: Mood -> Mood flipMood Happy = Sa

    4熱度

    2回答

    夥伴計算器, 我目前正在學習Erlang。 有人可以指點我爲什麼我得到一個illegal guard expression與這個警衛? add_new_prime(Idx, Primes, Ref) when length(Primes) =:= 0 ; math:sqrt(Idx) < hd(Primes) -> Ref ++ [Idx]; 如果我 「未優化」 它這樣做只是add_new_pri

    7熱度

    1回答

    我經歷Learn you a haskell書,並在第8章有一小段代碼,看起來像這樣 data LockerState = Taken | Free deriving (Eq, Show) type Code = String type LockerMap = Map.Map Int (LockerState, Code) lookup' :: Int -> LockerMap -> Ei

    0熱度

    2回答

    爲什麼不是除了模式守衛之外還有一個謂詞守衛? {-# LANGUAGE MultiWayIf, LambdaCase #-} module Main where import System.Info (os) import Control.Applicative ((<$>)) import Data.Char (toLower) import Data.List (is

    1熱度

    1回答

    我開始編寫Haskell代碼。 我嘗試使用衛兵寫一個斐波納契函數 - fibo :: (Num z, Ord z) => z -> z fibo d | d <= 0 = 0 | d == 1 = 1 | otherwise = fibo (d-1) + fibo (d-2) 我得到這個錯誤: - 非法類型簽名: '(民Z,奧德Z)=>ž - >žFIB