lue-bird/elm-linear-direction/2.0.0

NOTE: the latest version is 11.2.0

List.LinearDirection

transform

-> (element -> result -> result)
-> result
-> List element
-> result

Reduce a List in a direction.

List.fold FirstToLast (++) ""
    [ "l", "i", "v", "e" ]
--> "live"


List.fold LastToFirst (++) ""
    [ "l", "i", "v", "e" ]
--> "evil"
order : LinearDirection -> List a -> List a

Keep the order if FirstToLast, reverse if LastToFirst.

[ 1, 2, 3 ] |> List.order LastToFirst
--> [ 3, 2, 1 ]


[ 1, 2, 3 ] |> List.order FirstToLast
--> [ 1, 2, 3 ]

part

Int
-> List a
-> { groups : List (List a)
, less : List a
}

Split the Array into equal-sized chunks. The elements left over on one side are in less.

[ 1, 2, 3, 4, 5, 6, 7 ]
    |> List.group 3 FirstToLast
--> { groups = [ [ 1, 2, 3 ], [ 4, 5, 6 ] ]
--> , less = Array.fromList [ 7 ]
--> }


[ 1, 2, 3, 4, 5, 6, 7 ]
    |> List.group 3 LastToFirst
--> { less = [ 1 ]
--> , groups = [ [ 2, 3, 4 ], [ 5, 6, 7 ] ]
--> }