/ app / Main.hs
Main.hs
 1  module Main where
 2  
 3  import Core
 4  
 5  -- import Parse
 6  
 7  main :: IO ()
 8  main = pure ()
 9  
10  -- let Nat  : * = forall N:*. (N -> N) -> (N -> N);
11  -- let add  : Nat -> Nat -> Nat = \a b N s z. a N s (b N s z);
12  church_add :: Term
13  church_add =
14    let
15      n_to_n = Pi (Var 1) (Var 1)
16      nton_to_nton = Pi n_to_n n_to_n
17      church_nat = Pi (U 0) nton_to_nton
18    in
19      Let 0 (U 0) church_nat $
20        Let
21          0
22          ( Pi
23              (Pi (Var 1) (Var 2))
24              (Var 1)
25          )
26          ( Lam $
27              Lam $
28                Lam $
29                  Lam $
30                    Lam $
31                      (Var 4)
32                        `App` (Var 2)
33                        `App` (Var 1)
34                        `App` ((Var 3) `App` (Var 2) `App` (Var 1) `App` (Var 0))
35          )
36          (Var 0)