beark / ftl

C++ template library for fans of functional programming

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Truly generalised Functor, Applicative, and Monad

beark opened this issue · comments

Presently, functions generalised to the above mentioned concepts must be implemented twice to be truly general. This is because some data types match the signature

template<template<typename> class F, typename A, typename B>
void example(F<A> a, F<B> b);

while others instead match

template<
    template<typename,typename...> class F,
    typename A,
    typename B,
    typename...Ts>
void example(F<A,Ts...> a, F<B,Ts...> b);

Something should be worked out to solve this, having to write duplicates of every function is not acceptable.