shithub: MicroHs

ref: 79a65fa8bd327a76d1e6514faf091eb9ec43eae9
dir: /tests/PartRed.hs/

View raw version
module PartRed where
import Primitives

k2 :: Int -> Int -> Int -> Int
k2 x y z = x

f2 :: Int -> Int
f2 = k2 1 2

k3 :: Int -> Int -> Int -> Int -> Int
k3 x y z w = x

f3 :: Int -> Int
f3 = k3 1 2 3

f32 :: Int -> Int -> Int
f32 = k3 1 2

k4 :: Int -> Int -> Int -> Int -> Int -> Int
k4 x y z w v = x

f4 :: Int -> Int
f4 = k4 1 2 3 4

f42 :: Int -> Int -> Int -> Int
f42 = k4 1 2

f43 :: Int -> Int -> Int
f43 = k4 1 2 3


-----

type S a = (a->a, a->a)

sInt :: S Int
sInt = (id, primIntNeg)

j :: S a -> (a -> a) -> a -> a
j d x y = snd d (x y)

k :: (Int -> Int) -> Int -> Int
k = j sInt

---

c'b :: (Int -> Int -> Int) -> (Int -> Int) -> Int -> Int -> Int
c'b x y z w = x z (y w)

fc'b :: Int -> Int
fc'b = c'b primIntAdd primIntNeg 99

main :: IO ()
main = do
  cprint k2
  cprint f2
  cprint k3
  cprint f3
  cprint f32
  cprint k4
  cprint f4
  cprint f42
  cprint f43
  --
  cprint k
  --
  cprint c'b
  cprint fc'b


-- C'B x y z = B (x z) y
-- Z x y = K (x y)
-- R x y = C y x