packages feed

lol-apps-0.0.0.1: utils/Apply.hs

{-# LANGUAGE DataKinds, FlexibleInstances, MultiParamTypeClasses, PolyKinds, 
             TypeFamilies, TypeOperators #-}

-- applies functions to proxy arguments
module Apply where

class (params :: [k]) `Satisfy` (ctx :: *)  where
  data ArgsCtx ctx

  run :: proxy params
            -> (ArgsCtx ctx -> rnd res) 
            -> [rnd res]

instance '[] `Satisfy` ctx  where
  -- any implementation of ArgsCtx would conflict with concrete instances,
  -- so skip  
  run _ _ = []