haskell 如何分類相加元組內元素?

時間 2021-06-04 21:52:22

1樓:

import

qualified

Data.Map

asMap

flist

=map

from

$Map

.toList

$Map

.fromListWith

merge

(map

tolist

)where

merge(a

,b,c

)(a',

b',c')

=(a,

b+b',

c+c')

to(a,

b,c,

d)=(

a,(b

,c,d

))from(a

,(b,

c,d))

=(a,

b,c,d)

2樓:張砸鍋

Prelude> :

Prelude> merge [("Norte",4,23,20),("Norte",4,3,2),("Norte",4,4,5),("Centro",6,0,0),("Sul",3,0,0)]

[("Norte",4,30,27),("Centro",6,0,0),("Sul",3,0,0)]

Prelude>

3樓:netcan

groupElemx=

letgroup

=groupBy(\

(a,_

,_,_

)(b,

_,_,

_)->a==

b)xin

map(

foldl(\

(name,a

,b,c

)(name',a'

,b',c'

)->(name',a'

,b+b'

,c+c'

))("",

0,0,

0))group

*Main

>groupElem

[("Norte",4

,23,20

),("Norte",4

,3,2

),("Norte",4

,4,5

),("Centro",6

,0,0

),("Sul",3

,0,0

)][(

"Norte",4

,30,27

),("Centro",6

,0,0

),("Sul",3

,0,0

)]第一步通過groupBy分組得到->[]:

[[("Norte",4

,23,20

),("Norte",4

,3,2

),("Norte",4

,4,5

)],[(

"Centro",6

,0,0

)],[(

"Sul",3

,0,0

)]]對分組的元素進行map,map操作的是[] ,進行fold對元素累加得到最終結果:

Python 如何實現月份相加?

奚衡 受邀答題,自己DIY了乙個計算這個的函式,思路大致 1 計算出這段指定時間的當天時間凌晨時間和疊加月後的凌晨時間 2 求出相差的天數 3 最後再加天數再指定的時間內疊加即可 usr bin env python coding utf 8 from datetime import datetim...

haskell 如何用fold分組

葉芝秋 我提供一種方法 groupBynxs snd foldr group 1,i quot n x i,x zip 0 xs where group i x j,yss i j i,x head yss tail yss otherwise i,x yss 演算法思想 首先從0開始列舉元素,並將...

Haskell 中如何描述 product 作為 的 category?

張智浩 首先這個問題表述確實不大清楚,至少不是嚴格的數學語言 或者說不大精確 我把問題重新表述如下 此處快速回憶範疇的定義,略 或可參見維基百科 性質 對任意三個物件 復合對映 是同構。不精確的問題 若乙個範疇滿足性質 我們能對它說些什麼嗎?從某些 可能沒用的 經驗來看,這種問題一般就取特殊值就完了...