import Data.List.Split
import Data.List(nub, groupBy)
z = splitOn "+" "x^2+2*x^3+x^2"
y = map (splitOn "*") z
x = map head y
toInt :: [String] -> [Int]
toInt = map read
u1 = filter ((< 2) . length) y
u2 = filter ((> 1) . length) y
v = map ("1" :) u1
q = u2 ++ v
q2 = zip toInt(map head q) (map last q)
q6 = groupBy nub(map tail q) q
q3 = map tail q
q5 = nub(q3)
q1 = map head q
1.对于
zip toInt(map head q) (map last q)
我想在将头部转换为整数后将头部添加回尾部结果应该是[[1,"x^3"],[2,"x^2"],[1,"x^2"]]
我可以
*Main Data.List> zip [2,1,1] ["x^3","x^2","x^2"]
[(2,"x^3"),(1,"x^2"),(1,"x^2")]
但上面不能,我注意到有一个区别是,这是()
,不是[]
2.如何写groupBy
在一个列表上,我已经通过了distinct elements forgroupBy
分组后,是为了添加他们的头部
groupBy (nub(map tail q)) q
:1:10: 无法匹配预期类型a0 -> a0 -> Bool'
with actual type
[a1]' 在nub'
In the first argument of
groupBy' 的调用的返回类型中,即 `(nub (map tail q))' 在表达式中:groupBy (nub (map tail q)) q
q 就像一个哈希表,似乎不能按第二个元素分组