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")]
しかし、上記はできません、そして私が気づいた違いがあります、これは()
、ではありません[]
groupBy
2.リストへの書き方、groupBy
グループ化後、頭を追加するための個別の要素を渡しました
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はハッシュテーブルのようなもので、2番目の要素でグループ化できないようです