#include <iostream>
#include <functional>
using namespace std;

void LowPassFilter(float *samples,int size,function<float(int)> cutoffProducer)
{
    for(int i=0;i<size;i++)
    {
        cout << "For sample " << i << " cutoff is " << cutoffProducer(i) << endl;
    }
}

std::function<float(int)> Const(float cutoff)
{
    return [=](int) { return cutoff; };
}

std::function<float(int)> Linear(float coefficient)
{
    return [=](int i) { return coefficient * i; };
}

int main() {
	LowPassFilter(0, 10, Const(42));
	LowPassFilter(0, 10, Linear(.5));
	return 0;
}