#pragma once #include #include #include namespace hpr { template constexpr T sum(const Sequence& s) { return std::accumulate(s.begin(), s.end(), T()); } template constexpr T prod(const Sequence& s) { return std::accumulate(s.begin(), s.end(), T(), std::multiplies()); } template constexpr bool contain(const Sequence& s, const T& val) { for (const T& el : s) if (el == val) return true; return false; } template constexpr Sequence unique(const Sequence& s) { darray seq; for (const T& el : s) if (!contain(seq, el)) seq.push(el); return seq; } }