小编bhe*_*ilr的帖子

计算句子haskell中特定单词的出现次数

我是Haskell的新手,我想写一个简单的函数来计算字符串中子字符串的出现次数.

例如:"There is an apple"我想计算"is"句子中的次数,在这种情况下结果应该是1.

这就是我尝试过的:

countOf :: String -> Int
countOf x = length [n | n <- words x, filter "is" x]
Run Code Online (Sandbox Code Playgroud)

根据我所研究的它应该有效,但事实并非如此.我真的不知道如何解决问题,也不知道我得到的错误信息是什么意思:

input:1:41:
     Couldn't match expected type `Bool' with actual type `[a0]'
     In the return type of a call of `filter'
     In the expression: filter "a" x
     In a stmt of a list comprehension: filter "a" x
Run Code Online (Sandbox Code Playgroud)

haskell

2
推荐指数
1
解决办法
779
查看次数

Haskell将空字符传递给函数

我在Haskell中使用两个功能:

基本上我想在匹配给定字符串中的特定字符之前获取字符

这是我的代码:

before :: Char -> [Char] -> Char
before x str = trackelement x ' ' str

trackelement :: Char -> Char -> [Char] -> Char
trackelement x y (z:zs)
    | x == z = y
    | otherwise = trackelement x z (zs) 
Run Code Online (Sandbox Code Playgroud)

我的问题是当我尝试: before 'l' "luis"

答案是:(' '当然,在'l'没有任何东西之前),我想成为''Nothing

我尝试通过trackelement x '' str而不是trackelement x ' ' str但我遇到此错误Syntax error on ''str

你能给我一些建议吗?

string haskell char

2
推荐指数
1
解决办法
6431
查看次数

如何确定调用哪个运算符实例?

我有一个名为MyDatahas has __mul____rmul__defined 的类(以及所有其他算术运算符).无论何时使用这些方法,它都应该返回一个类型的值MyData.但是,我发现它a * myDataObj不一样myDataObj * a,取决于它的类型a.具体来说,如果aint,它工作正常,但如果a是,float那么第一个配置返回一个数组(我的对象有一个numpy数组作为成员,并MyData.__getitem__返回该数组的切片),第二个配置返回正确的类型值MyData.

有没有办法在这样的表达式中确定运算符的调用顺序?

python operators python-2.7

1
推荐指数
1
解决办法
111
查看次数

Haskell列表理解和模式匹配

我正在寻找一个函数,例如,它给了我所有匹配的字母数字 giveNumber "D" [("D", 5), ("A", 4) ("D", 25)] = [5,25]

giveNumber :: String -> [(String, a)] -> [a]
giveNumber letter (x:xs) = [snd x | x <- xs | fst x == letter]
Run Code Online (Sandbox Code Playgroud)

我得到一个解析器错误...谢谢

haskell list-comprehension pattern-matching

1
推荐指数
2
解决办法
1138
查看次数

定义的数据类型未定义?

我需要一些帮助,试图理解为什么这些定义

data SegmentList
    = SegmentList SegmentlistHeader [Segment]
    | AugmentedSegmentList SegmentlistHeader [AugmentedSegment]
    deriving (Show)

data SegmentlistHeader
    = SegmentlistHeader DatabaseName Query LabelType TimeStamp
    deriving (Show)

data Segment
    = Segment SegmentLabel SegmentStart SegmentEnd Session Checksum
    | AugmentedSegment SegmentLabel SegmentStart SegmentEnd Session Checksum Metadata
    deriving (Show)

type DatabaseName = String
type SegmentLabel = String
type SegmentStart = Double
type SegmentEnd = Double
type Session = String
type LabelType = String
type Query = String
type TimeStamp = String
type Checksum = String
type Metadata …
Run Code Online (Sandbox Code Playgroud)

haskell custom-data-type

1
推荐指数
1
解决办法
103
查看次数

Haskell实现中国剩余定理的问题

所以我在尝试将中国剩余定理实现到Haskell时遇到了问题.到目前为止我有这个:

minv :: Integer -> Integer -> Integer
minv a m = let (1, x, _) = extGCD a m
           in x `mod` m


crt :: [Integer] -> [Integer] -> Integer
crt as ms = let
                    prod = product ms
                    big_m = [div prod i| i <- ms]
            in (zip as ms (\(ai,mi)) ((ai * big_m * (minv mi big_m)) `mod` prod))
Run Code Online (Sandbox Code Playgroud)

好的,所以我知道这个minv功能有效(我已多次测试过),但我无法使用该crt功能.所以这就是我想要做的:

我需要压缩列表asms在一起,然后应用二进制文件中的每一个,实际上认定中国剩余定理公式.但是我需要先处理二进制文件然后应用于`mod` prod我从所有二进制文件中获得的整数.

希望这会产生某种形式的意义.

提前致谢.

haskell crt

1
推荐指数
1
解决办法
559
查看次数

Haskell - 要么只映射一个

我想编写一个消耗Either值的函数和两个函数.它仅应用基于哪一个与内部类型兼容的功能.完全努力实施这一个.

mapAorB :: (x -> z) -> (y -> w) -> Either x y -> Either z w
Run Code Online (Sandbox Code Playgroud)

haskell functional-programming

1
推荐指数
1
解决办法
258
查看次数

理解符号和绑定

我是haskell的新手,我正在尝试理解本文档中用于创建Monadic解析器的方法https://www.cs.nott.ac.uk/~gmh/pearl.pdf

我没有完全遵循它,而是试图以不同的方式做到这一点,以便正确理解它,因此,我最终得到了这段代码

newtype Parser a = Parser (String -> Maybe (a, String))

item :: Parser Char
item = Parser (\cs -> case cs of
            "" -> Nothing
            (c:cs) -> Just (c, cs))

getParser (Parser x) = x

instance Monad Parser where
    return x = Parser (\cs -> Just (x,cs))
    (Parser p) >>= f  = Parser (\cs -> let result = p cs in
                  case result of
                    Nothing -> Nothing
                    Just (c,cs') -> getParser (f c) cs')

takeThreeDropSecond :: Parser …
Run Code Online (Sandbox Code Playgroud)

monads haskell do-notation

1
推荐指数
1
解决办法
134
查看次数

Haskell多线互动模式

在python中,有许多IDE可以让你这样做.

>>> if (a==5):
      print "Yes"
else:
      print "No"
Run Code Online (Sandbox Code Playgroud)

但是在haskell的GHCi中:

Prelude> do

<interactive>:2:1: Empty 'do' block
Run Code Online (Sandbox Code Playgroud)

这是行不通的.是否有任何IDE允许您以交互模式执行多行命令.

注意:我知道:{和:}命令,但您输入后无法编辑上面的行.

ide haskell ghci

0
推荐指数
1
解决办法
181
查看次数

使用Haskell接受字符串并删除重复的字符

我正在新学习Haskell,并且在之前提出的类似问题的帮助下,我达到了以下代码,但是我收到了一个错误 -

Couldn't match type ' [ ] ' with ' IO '.
Expected type - IO Char
Actual type - [Char]
Run Code Online (Sandbox Code Playgroud)
import Data.Set

removeDups :: Ord a => [a] -> Set a -> [a]
removeDups [] sofar = []
removeDups (x:rest) sofar
     | member x sofar = (removeDups rest sofar)
     | otherwise      = x:(removeDups rest (insert x sofar))
main = do
  name <- getLine
  removeDups name empty
Run Code Online (Sandbox Code Playgroud)

haskell

0
推荐指数
1
解决办法
497
查看次数