{-# LANGUAGE TypeApplications #-}
import Data.Function.Variadic
import Data.Function.Variadic.Utils
import Test.Hspec
main :: IO ()
main = hspec $ do
describe "createFunction" $ do
it "constN " $ do
constN "one" () () `shouldBe` "one"
it "mappendN" $ do
mappendN [1] [2, 3] `shouldBe` [1, 2, 3]
describe "transformFunction" $ do
it "composeN" $ do
let f :: Int -> Int -> Int -> String
f = show `composeN` \a b c -> a + b + c
f 1 2 3 `shouldBe` "6"
it "composeN with inferred type" $ do
let f = show `composeN` \a b c -> (a + b + c :: Int)
f 1 2 3 `shouldBe` "6"