YoshikuniJujo on Nostr: infixr 6 `arrT` t1 `arrT` t2 = arrowT `appT` t1 `appT` t2 tupT ts = foldl appT ...
infixr 6 `arrT`
t1 `arrT` t2 = arrowT `appT` t1 `appT` t2
tupT ts = foldl appT (tupleT $ length ts) ts
tupT' = \case [t] -> t; ts -> tupT ts
tupP' = \case [p] -> p; ps -> tupP ps
tupE' = \case [e] -> e; es -> tupE es
infixr 8 `comE`
e1 `comE` e2 = infixE (Just e1) (varE '(.)) (Just e2)
t1 `arrT` t2 = arrowT `appT` t1 `appT` t2
tupT ts = foldl appT (tupleT $ length ts) ts
tupT' = \case [t] -> t; ts -> tupT ts
tupP' = \case [p] -> p; ps -> tupP ps
tupE' = \case [e] -> e; es -> tupE es
infixr 8 `comE`
e1 `comE` e2 = infixE (Just e1) (varE '(.)) (Just e2)