diff --git a/chaiscript/chaiscript_prelude.hpp b/chaiscript/chaiscript_prelude.hpp index 6c6bcf1a..8bc35675 100644 --- a/chaiscript/chaiscript_prelude.hpp +++ b/chaiscript/chaiscript_prelude.hpp @@ -58,6 +58,15 @@ def take(container, num) : call_exists(range, container) { \n\ } \n\ retval \n\ } \n\ +def take_while(container, f) : call_exists(range, container) { \n\ + var r = range(container); \n\ + var retval = Vector(); \n\ + while ((!r.empty()) && f(r.front())) { \n\ + retval.push_back(r.front()); \n\ + r.pop_front(); \n\ + } \n\ + retval \n\ +} \n\ def drop(container, num) : call_exists(range, container) { \n\ var r = range(container); \n\ var i = num; \n\ @@ -72,6 +81,18 @@ def drop(container, num) : call_exists(range, container) { \n\ } \n\ retval \n\ } \n\ +def drop_while(container, f) : call_exists(range, container) { \n\ + var r = range(container); \n\ + var retval = Vector(); \n\ + while ((!r.empty())&& f(r.front())) { \n\ + r.pop_front(); \n\ + } \n\ + while (!r.empty()) { \n\ + retval.push_back(r.front()); \n\ + r.pop_front(); \n\ + } \n\ + retval \n\ +} \n\ def reduce(container, func) : container.size() >= 2 && call_exists(range, container) { \n\ var r = range(container); \n\ var retval = r.front(); \n\