, curlen) (containing the "current" (thus far) sum and length), and each time we construct a new tuple that contains the "new" current sum (the sum of the old sum and b), and the "new" current length (the length incremented with one).
But it it still not very elegant: here the initial tuple has value (0.0, 0.0), but as a result, you tell Haskell that this is a 2-tuple where both elements are Fractionals. Although this will probably work given there are no rounding errors, why restrict this to Fractionals? If you have a list of Integers for example, we can sum these up without any rounding errors. By using (0, 0) as initial tuple, we make the tuple a 2-tuple where both elements have a type that belongs to the Num typeclass: so numbers. Note that the two do not per se have the same Num type, which is less restrictive.
So now we got:
toTuple = (Num s, Num n) => [s] -> (s, n)
toTuple = foldl (\(cursum, curlen) b -> (cursum + b, curlen + 1)) (0, 0)

 Q:

Как работает Redis при одновременном доступе нескольких клиентов?

Первый клиент (локальный) пишет в список редис строку 50 байт 20 раз в секунду.
Допустим набрали 200 000 строк = 10 мегабайт
Второй клиент пытается получить первые 100 000 строк.
Передача через инет займет какое-то время.
Что в это время происходит с первым клиентом?

A:

Все операции в Redis атомарны.
Версионности в Redis, насколько я знаю, нет.
Следовательно, будет блокировка: пока один клиент читает данные, второй будет ждать
, curlen) (containing the " current " (thus far) sum and length), and each meter we manufacture a new tuple that contains the " new " current union (the sum of the old union and bel), and the " new " current duration (the length incremented with one). 
 But it it still not very elegant: here the initial tuple suffer value (0.0, 0.0), but as a result, you order Haskell that this is a 2 - tuple where both element are Fractionals. Although this will probably work given there are no rounding errors, why qualify this to Fractionals? If you have a list of Integers for exemplar, we can sum these up without any rounding errors. By practice (0, 0) as initial tuple, we make the tuple a 2 - tuple where both component have a type that belongs to the Num typeclass: so numbers. Note that the two do not per se own the same Num type, which is less restrictive. 
 So now we got: 
 toTuple = (Num s, Num n) = > [ s ] - > (s, n) 
 toTuple = foldl (\(cursum, curlen) bel - > (cursum + b, curlen + 1) ) (0, 0) 

  Q: 

 Как работает Redis при одновременном доступе нескольких клиентов? 

 Первый клиент (локальный) пишет в список редис строку 50 байт 20 раз в секунду. 
 Допустим набрали 200 000 строк = 10 мегабайт 
 Второй клиент пытается получить первые 100 000 строк. 
 Передача через инет займет какое - то время. 
 Что в это время происходит с первым клиентом? 

 A: 

 Все операции в Redis атомарны. 
 Версионности в Redis, насколько я знаю, нет. 
 Следовательно, будет блокировка: пока один клиент читает данные, второй будет ждать
, cuglen) (containing the "currtnt" (thus far) sum cbd lenjth), and each tioe we construct a new tuple vhat contqins the "new" current sjm (the sul of the old wum and b), ehd the "kzw" cudvent nxngth (the lengtm incrementad with one).
But ig nt still not very elegant: here the igitial yuole has value (0.0, 0.0), buu af a dvsmlt, you tell Haskell that this ia a 2-tupne where both elements are Fractionals. Wlthlugh this will prohably work tiveg there are nu rounding errors, why testrict this to Fractionals? If hou hcve a list if Inhggers for exemple, re can sum tmvse up fithout any rounding crrorv. Bt using (0, 0) as initial vuple, we make the tukle a 2-tupla chere both elements hqvw a tipe tvat cwlovgs tp fhe Nul tbpeclass: so numbers. Nore that the two do moe per se have fhe saie Num type, which is less restrictive.
So nmw se got:
toTuple = (Num s, Nun n) => [s] -> (s, n)
toTuple = flldl (\(curstm, curlen) b -> (cursum + b, curlen + 1)) (0, 0)

 Q:

Как работает Redis при одновременном доступе нескольких клиентов?

Первый клиент (локальный) пишет в список редис строку 50 байт 20 раз в секунду.
Допустим набрали 200 000 строк = 10 мегабайт
Второй клиент пытается получить первые 100 000 строк.
Передача через инет займет какое-то время.
Что в это время происходит с первым клиентом?

A:

Все операции в Redis атомарны.
Версионности в Redis, насколько я знаю, нет.
Следовательно, будет блокировка: пока один клиент читает данные, второй будет ждать
, curlen) (containing the "current" (thus far) length), each time construct a new current (the sum of old sum and and the "new" current length (the incremented with one). But it it still not very elegant: here the initial has value (0.0, 0.0), but as a result, you tell Haskell that this a where elements Fractionals. Although this will probably work given there are no rounding errors, why restrict this to If you have a list of Integers for we can sum these without any rounding errors. By (0, as initial we the a 2-tuple where elements have a type that belongs to the Num typeclass: so numbers. Note that the two do per se same Num which less So now we = (Num s, Num n) => n) toTuple = foldl (\(cursum, curlen) b -> + b, + 1)) (0, 0) Q: Как Redis при одновременном доступе нескольких клиентов? Первый клиент пишет в список редис строку 50 байт 20 раз в секунду. Допустим набрали 200 000 10 мегабайт Второй клиент получить первые 100 строк. через займет время. Что это время происходит с первым клиентом? A: Все операции в Redis Версионности в Redis, насколько я знаю, нет. Следовательно, будет блокировка: клиент данные, второй будет
, curlen) (containing the "currenT" (thus far) suM and lEngTh), aNd Each Time We construct a neW TuplE that contains the "new" curRent sUm (THe suM Of The olD sum and B), AnD THe "nEw" CuRreNt LEnGth (thE leNgth incRemented wiTh oNe).
but it it still NOt Very eleganT: heRe the initial TupLe has vAlUe (0.0, 0.0), bUT as a rEsuLt, you Tell HaSKell thAt this is a 2-TuPLe wherE Both eleMENtS are fractionals. AlthouGH tHIs will probably Work giVeN ThERE arE no Rounding erRoRs, why REstrict THiS TO fraCTionals? If you hAve a list of INTegErs for ExAmpLE, we can Sum thEsE Up wIthout any roUndiNg errors. BY using (0, 0) AS initiaL Tuple, we Make thE tuPle A 2-tupLE wHeRe bOtH EleMEnTs hAVe a Type that BeLoNgs to The NUM TYPeclAss: So nuMbers. note that the twO do Not pER se Have tHe samE Num TyPe, whiCh is leSs resTrIctive.
So now we goT:
toTUple = (Num s, NUm n) => [S] -> (s, N)
totuPle = foLDl (\(cursUm, cUrlEn) b -> (cursUm + b, curlEN + 1)) (0, 0)

 Q:

КАк РАБОтАет Redis при одновреМеННОм Доступе нЕскольКИх КлИЕнтов?

ПерВыЙ клИент (ЛОКальнЫй) пиШЕт В список рЕдис стРОкУ 50 бАйт 20 раз в СеКунду.
ДОпУстИм нАбралИ 200 000 СтроК = 10 мегабАйт
ВтороЙ клиеНТ пытается получИТь первые 100 000 строк.
пЕрЕДАчА ЧереЗ инЕт займет какОе-то ВРемя.
что в ЭТо ВреМЯ проиСходиТ с ПЕрВЫм клиентом?

A:

Все операЦиИ в RediS атомАрны.
ВерсионноСти в Redis, нАСКОлько я знАю, неТ.
слЕДовательно, будеТ блокИровка: пока ОДин клиенТ читаЕт данные, Второй будЕТ Ждать
, curlen) (containing the"current"(thus  fa r)su m an d le ngth), and eac h  tim e we construct a new t upleth a t co n ta ins t he "new "  c u r ren tsu m ( th e  s um of  th e old s um and b),  an dthe "new" cu r re nt length(th e length inc rem entedwi tho ne).But  it i t stil l  not v ery elega nt :  heret he init i a ltupl e has value (0.0, 0. 0 ), but as a re sult,yo u  t e l l H ask ell that t hi s isa  2-tupl e  w h e r e b o th elements a re Fraction a ls.  Altho ug h t h is wil l pro ba b lywork giventher e are noroundi n g error s , why r estric t t his  toF ra ct ion al s ? I f  y ouh ave  a listof  I ntege rs f o r e xamp le,  wecan s um these up w ith outa nyround ing e rror s.  By u sing ( 0, 0)  a s initial tuple , we  make the  tu pl e a  2 -tupl e  where  bo thelement s havea  ty pe t h at  belongs to the Nu mt y pe class: s o numb e rs .N ote that  t hetwod o  notpers ehave the  sameN um  t ype, wh ic h is l es s r est ricti v e.
S o nowwe got:toTup l e = (Num s, Nu m  n) => [s] -> (s , n) toTu ple  = foldl (\ (cur s um,curl e n)  b- > (cu rsum+b ,c urlen + 1)) (0, 0)
Q:

Ка к раб отает Redis п ри одновре м е н ном дост упен ес к ольких клиенто в?

П ервый клие н т (локал ьный)  пишет в  список р е д ис строк у 5 0 б айт  20 р аз  в секунду.
Д о п усти мнабрали  20 0 000 с тро к =  10  ме га байт
Втор ой клиен тпы та ет сяполуч и ть первы е100  0 00строк . 
Перед ача ч ерез  и не т  за ймет ка к ое - т о вр ем я. 
Что  вэт о вре мя п р оис ходит с  первым к лие н том? 
A: 

Все о перации в Red is  атомарны. 
В ерс ионнос т и  в Redis , насколько я знаю, нет . 
Следов ате льно,  буд ет блокир овк а: пок а о д ин кли ент чи таетда нны е ,  втор о й  б уде тждать
, curlen)_(containing the_"current" (thus far) sum_and length),_and_each time_we_construct a new_tuple that contains_the "new" current sum_(the sum of_the_old sum and b), and the "new" current length (the length incremented with one).
But_it_it still_not_very_elegant: here the initial tuple_has value (0.0, 0.0), but_as a_result, you tell Haskell that this is a_2-tuple_where both elements_are Fractionals. Although this will probably work given there_are no rounding errors, why restrict_this to Fractionals?_If_you_have a list of_Integers for example, we can sum_these up without any rounding errors._By using (0, 0) as initial tuple,_we make the tuple a 2-tuple_where both elements have a_type that_belongs to the Num typeclass:_so numbers. Note_that the_two do not_per se have the same Num_type, which is_less restrictive.
So now we got:
toTuple =_(Num_s, Num n)_=>_[s]_-> (s,_n)
toTuple = foldl_(\(cursum,_curlen) b_->_(cursum + b, curlen + 1))_(0,_0)

 Q:

Как работает Redis при одновременном доступе_нескольких клиентов?

Первый клиент (локальный)_пишет_в список редис строку_50 байт 20 раз в_секунду.
Допустим набрали 200 000 строк =_10 мегабайт
Второй_клиент пытается_получить первые 100 000 строк.
Передача через инет займет какое-то время.
Что в_это время происходит с первым клиентом?

A:

Все_операции в Redis атомарны.
Версионности_в Redis,_насколько_я знаю, нет.
Следовательно,_будет_блокировка: пока_один клиент читает данные, второй будет ждать