相关疑难解决方法(0)

计算列表中的唯一元素

是否有标准高阶函数的直接组合来计算列表中的唯一元素?

例如,结果为

[1, 1, 4, 0, 4, 4]
Run Code Online (Sandbox Code Playgroud)

会是这样的

[(1,2), (4,3), (0,1)]
Run Code Online (Sandbox Code Playgroud)

haskell list unique

12
推荐指数
4
解决办法
6943
查看次数

计算列表中每个元素的频率

我尝试编写一个程序,它将计算列表中每个元素的频率.

    In: "aabbcabb"
    Out: [("a",3),("b",4),("c",1)]
Run Code Online (Sandbox Code Playgroud)

您可以在以下链接中查看我的代码:http://codepad.org/nyIECIT2 在此代码中,唯一函数的输出将是这样的

     In: "aabbcabb"
     Out: "abc"
Run Code Online (Sandbox Code Playgroud)

使用唯一的输出我们将计算目标列表的频率.你也可以在这里看到代码:

    frequencyOfElt xs=ans
       where ans=countElt(unique xs) xs
          unique []=[]
      unique xs=(head xs):(unique (filter((/=)(head xs))xs))
      countElt ref target=ans'
             where ans'=zip ref lengths
            lengths=map length $ zipWith($)(map[(=='a'),(==',b'),(==',c')](filter.(==))ref)(repeat target)

    Error:Syntax error in input (unexpected symbol "unique") 
Run Code Online (Sandbox Code Playgroud)

但在ghci 6.13中也出现了其他类型的错误

很少有人问我使用[(=='a'),(==',b'),(==',c')]的目的是什么.我的期望:如果ref ="abc"和target ="aabbaacc"那么

    zipWith($) (map filter ref)(repeat target)
Run Code Online (Sandbox Code Playgroud)

将显示["aaaa","bb","cc"]然后我可以使用这里的地图长度来获得频率这里的过滤列表根据ref我使用[(=='a'),(==' ,b '),(==',C')]

我假设一些逻辑错误在于[(=='a'),(==',b'),(==',c')]这里..

haskell pointfree

7
推荐指数
2
解决办法
8162
查看次数

标签 统计

haskell ×2

list ×1

pointfree ×1

unique ×1