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