mbraceproject / MBrace.Design

Documentation on the MBrace design process
3 stars 6 forks source link

New CloudFlow combinators #12

Open leafgarland opened 9 years ago

leafgarland commented 9 years ago

As @dsyme suggested in mbraceproject/MBrace.Core#100, it would be good to add more functions to CloudFlow.

Here is a list of most of the F# 4.0 collection functions and which are already implemented for CloudFlow, if we could trim this to a list of functions that would be useful to add to CloudFlow then people could get started on implementing them.

Function CloudFlow Comment
append
averageBy
average
choose
chunkBySize
collect
compareWith
concat
contains
countBy
distinctBy
distinct
empty
exactlyOne
except
exists2
exists
filter
findBack
findIndexBack
findIndex
find
fold2
foldBack2
foldBack
fold
forall2
forall
groupBy
head
indexed
init
isEmpty
item
iter2
iter
iteri2
iteri
last
length
map2
map3
mapFoldBack
mapFold
map
mapi2
mapi
maxBy
max
minBy
min
nth
pairwise
permute
pick
reduceBack
reduce
replicate
rev
scanBack
scan
singleton
skipWhile
skip
sortByDescending
sortBy
sortDescending
sortWith
sort
splitInto
sumBy
sum
tail
takeWhile
take
truncate
tryFindBack
tryFindIndexBack
tryFindIndex
tryFind
tryHead
tryItem
tryLast
tryPick
unfold
where
windowed
zip3
zip
palladin commented 9 years ago

I'll start by removing some of them. The three main elimination criteria are 1) Sequentially 2) Global synchronization 3) On demand consumption (Pull based) In other words CloudFlow combinators must be Parallel and Distributed friendly and Push based by nature.

Hard-difficult combinators:

Easy combinators: compareWith, concat, contains, where, average, sumBy, mapFold, max, min, sort, append, truncate, chunkBySize

That's all for now!