Added take_while and drop_while

This commit is contained in:
Jonathan Turner 2009-07-03 14:08:58 +00:00
parent f35c2908d7
commit 34983dbed2

View File

@ -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\