finos / morphir-elm / Morphir.SDK.List

Extra utilities on lists.

innerJoin : List b -> (a -> b -> Basics.Bool) -> List a -> List ( a, b )

Simulates a SQL inner-join.

dataSetA =
    [ ( 1, "a" ), ( 2, "b" ) ]

dataSetB =
    [ ( 3, "C" ), ( 2, "B" ) ]

dataSetA
    |> innerJoin dataSetB
        (\a b ->
           Tuple.first a == Tuple.first b
        ) ==
        [ ( ( 2, "b" ), ( 2, "B" ) )
        ]

leftJoin : List b -> (a -> b -> Basics.Bool) -> List a -> List ( a, Maybe b )

Simulates a SQL left-outer-join.

dataSetA =
    [ ( 1, "a" ), ( 2, "b" ) ]

dataSetB =
    [ ( 3, "C" ), ( 2, "B" ) ]

dataSetA
    |> leftJoin dataSetB
        (\a b ->
           Tuple.first a == Tuple.first b
        ) ==
        [ ( ( 1, "a" ), Nothing )
        , ( ( 2, "b" ), Just ( 2, "B" ) )
        ]