module Examples.DSP where

import Data.Profunctor
import Data.Profunctor.Rep

blur :: Costar ((->) Int) Int Float
blur :: Costar ((->) Int) Int Float
blur = (Corep (Costar ((->) Int)) Int -> Float)
-> Costar ((->) Int) Int Float
forall (p :: * -> * -> *) d c.
Corepresentable p =>
(Corep p d -> c) -> p d c
cotabulate Corep (Costar ((->) Int)) Int -> Float
(Int -> Int) -> Float
go
  where
    go :: (Int -> Int) -> Float
    go :: (Int -> Int) -> Float
go f :: Int -> Int
f = Int -> Float
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int -> Int
f (-1) Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int -> Int
f 0 Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int -> Int
f 1) Float -> Float -> Float
forall a. Fractional a => a -> a -> a
/ 3


-- sample :: Monoid e => Costar ((->) e) a b -> e -> (e -> a) -> b
-- sample (Costar f) = f