countTo :: Expr
countTo = (Lam "y"
                (If (BinOp Equal (Ident "y") (Lit (LInt 1)))
                (Lit (LInt 1))
                (BinOp Plus
                        (App (Ident "countTo") (BinOp Minus (Ident "y") (Lit (LInt 1))))
                        (Lit (LInt 1))
                )
          ))
countTo :: Expr
countTo = (Lam "y"
                (If (BinOp Equal (Ident "y") (Lit (LInt 1)))
                (Lit (LInt 1))
                (BinOp Plus
                        (App (Ident "countTo") (BinOp Minus (Ident "y") (Lit (LInt 1))))
                        (Lit (LInt 1))
                )
          ))
countTo = (Lam "y"
                (If (BinOp Equal (Ident "y") (Lit (LInt 1)))
                (Lit (LInt 1))
                (BinOp Plus
                        (App (Ident "countTo") (BinOp Minus (Ident "y") (Lit (LInt 1))))
                        (Lit (LInt 1))
                )
          ))