2cl (pronounce "toccle") is a functional programming extension for C++
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

37 lines
644 B

#pragma once
#include "combinations/curry.hpp"
namespace cl
{
template<typename fn, typename a>
auto curry(fn func, a p);
template <typename a>
class function{
a me;
public:
function(a value)
: me(value)
{}
template<typename ...b>
auto operator()(b ...Args){
return me(Args...);
}
template<typename cur, typename ...b>
auto operator()(cur arg){
return curry(me, arg);
}
};
template<typename fn, typename a>
auto curry(fn func, a p)
{
return function(curry_t(func, p));
}
template<typename invokable, typename ret, typename ...Args>
ret invoke(invokable fn, Args ...args)
{
return fn(args...);
}
}