{-# OPTIONS --cubical --safe --guardedness #-}

module Data.PolyP.Currying where

open import Prelude hiding (_⟨_⟩_)
open import Data.Vec.Iterated

open import Data.PolyP.Universe

Curriedⁿ :   Type₁
Curriedⁿ zero    = Type
Curriedⁿ (suc n) = Type  Curriedⁿ n

_~_ :  {n}  (Params n  Type)  Curriedⁿ n
_~_ {n = zero}  f = f []
_~_ {n = suc n} f A = _~_ {n = n} (f  (A ∷_))