{-# LANGUAGE UndecidableInstances #-}
{-# LANGUAGE NoFieldSelectors #-}

module WikiMusic.Functional
  ( uncurry2,
    curry2,
    curry3,
    uncurry3,
  )
where

import Relude

uncurry2 :: (a -> b -> c -> d) -> ((a, b), c) -> d
uncurry2 :: forall a b c d. (a -> b -> c -> d) -> ((a, b), c) -> d
uncurry2 = ((a, b) -> c -> d) -> ((a, b), c) -> d
forall a b c. (a -> b -> c) -> (a, b) -> c
uncurry (((a, b) -> c -> d) -> ((a, b), c) -> d)
-> ((a -> b -> c -> d) -> (a, b) -> c -> d)
-> (a -> b -> c -> d)
-> ((a, b), c)
-> d
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (a -> b -> c -> d) -> (a, b) -> c -> d
forall a b c. (a -> b -> c) -> (a, b) -> c
uncurry

curry2 :: (((a, b), c) -> d) -> a -> b -> c -> d
curry2 :: forall a b c d. (((a, b), c) -> d) -> a -> b -> c -> d
curry2 = ((a, b) -> c -> d) -> a -> b -> c -> d
forall a b c. ((a, b) -> c) -> a -> b -> c
curry (((a, b) -> c -> d) -> a -> b -> c -> d)
-> ((((a, b), c) -> d) -> (a, b) -> c -> d)
-> (((a, b), c) -> d)
-> a
-> b
-> c
-> d
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (((a, b), c) -> d) -> (a, b) -> c -> d
forall a b c. ((a, b) -> c) -> a -> b -> c
curry

uncurry3 :: (a -> b -> c -> d -> e) -> (((a, b), c), d) -> e
uncurry3 :: forall a b c d e. (a -> b -> c -> d -> e) -> (((a, b), c), d) -> e
uncurry3 = (((a, b), c) -> d -> e) -> (((a, b), c), d) -> e
forall a b c. (a -> b -> c) -> (a, b) -> c
uncurry ((((a, b), c) -> d -> e) -> (((a, b), c), d) -> e)
-> ((a -> b -> c -> d -> e) -> ((a, b), c) -> d -> e)
-> (a -> b -> c -> d -> e)
-> (((a, b), c), d)
-> e
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ((a, b) -> c -> d -> e) -> ((a, b), c) -> d -> e
forall a b c. (a -> b -> c) -> (a, b) -> c
uncurry (((a, b) -> c -> d -> e) -> ((a, b), c) -> d -> e)
-> ((a -> b -> c -> d -> e) -> (a, b) -> c -> d -> e)
-> (a -> b -> c -> d -> e)
-> ((a, b), c)
-> d
-> e
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (a -> b -> c -> d -> e) -> (a, b) -> c -> d -> e
forall a b c. (a -> b -> c) -> (a, b) -> c
uncurry

curry3 :: ((((a, b), c), d) -> e) -> a -> b -> c -> d -> e
curry3 :: forall a b c d e. ((((a, b), c), d) -> e) -> a -> b -> c -> d -> e
curry3 = ((a, b) -> c -> d -> e) -> a -> b -> c -> d -> e
forall a b c. ((a, b) -> c) -> a -> b -> c
curry (((a, b) -> c -> d -> e) -> a -> b -> c -> d -> e)
-> (((((a, b), c), d) -> e) -> (a, b) -> c -> d -> e)
-> ((((a, b), c), d) -> e)
-> a
-> b
-> c
-> d
-> e
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (((a, b), c) -> d -> e) -> (a, b) -> c -> d -> e
forall a b c. ((a, b) -> c) -> a -> b -> c
curry ((((a, b), c) -> d -> e) -> (a, b) -> c -> d -> e)
-> (((((a, b), c), d) -> e) -> ((a, b), c) -> d -> e)
-> ((((a, b), c), d) -> e)
-> (a, b)
-> c
-> d
-> e
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ((((a, b), c), d) -> e) -> ((a, b), c) -> d -> e
forall a b c. ((a, b) -> c) -> a -> b -> c
curry