>>92#include "void.h" //gist.github.com/FrozenVoid/87e6ad6212ac9ce496e0#file-void-h"
#define add5(x) x+5
#define fv5(...) apply(add5,__VA_ARGS__)
#define add4(x) x+4
#define fv4(...) apply(add4,__VA_ARGS__)
#define add3(x) x+3
#define fv3(...) apply(add3,__VA_ARGS__)
#define add2(x) x+2
#define fv2(...) apply(add2,__VA_ARGS__)
#define add1(x) x+1
#define fv1(...) apply(add1,revargs(__VA_ARGS__))
#define product(...) opapply(*,original,__VA_ARGS__)
#define sum(...) opapply(+,original,__VA_ARGS__)
#define substracted(...) opapply(-,original,__VA_ARGS__)
#define revsliceargs(slicestart,slicedist,...) sliceargs(slicestart,slicedist,revargs(__VA_ARGS__))
#define fv0(dist1,len2,...) "fv1 result:", __VA_ARGS__,"\n ",len2 ,"numbers in reverse order starting from ",dist1,"th to last from fv1 were:\n",sliceargs(dist1,len2,revargs(__VA_ARGS__))," and their product minus their sum:",substracted(product(revsliceargs(dist1,len2,__VA_ARGS__)), sum(revsliceargs(dist1,len2,revargs(__VA_ARGS__))))
#define numbers genargs(7)
#define genfunc(x) merge(fv,x)
#define functions apply(genfunc,genargs(5))
STDSTART
p(fv0(2,3,fapply(functions,numbers))) /* expected:
fv1 result: 22 21 20 19 18 17 16
3 numbers in reverse order starting from 2 th to last from fv1 were:
18 19 20 and their product minus their sum: 6783
*/
STDEND