Esempio n. 1
0
def _get_data_pids(tag_tree):
    '''
    Returns an iterator over data PIDs from metadata
    '''
    def pids(t):
        '''
        Get data 'PIDs' from OAI-DC and IDA
        '''
        for p in t('identifier', recursive=False):
            yield p.string

    pids1, pids2 = tee(pids(tag_tree), 2)
    pred = lambda x: re.search('urn', x, flags=re.I)
    return chain(filter(pred, pids1), filterfalse(pred, pids2))
Esempio n. 2
0
def _get_data_pids(tag_tree):
    '''
    Returns an iterator over data PIDs from metadata
    '''
    def pids(t):
        '''
        Get data 'PIDs' from OAI-DC and IDA
        '''
        for p in t('identifier', recursive=False):
            yield p.string

    pids1, pids2 = tee(pids(tag_tree), 2)
    pred = lambda x: re.search('urn', x, flags=re.I)
    return chain(filter(pred, pids1), filterfalse(pred, pids2))
def double_evens3(xs):
    return doubles(filter(even1, xs))
def double_evens2(xs):
    return doubles(filter(F(eq, 0) << F(flip(mod), 2), xs))
def double_evens1(xs):
    return doubles(filter(_ % 2 == 0, xs))
def double_evens(xs):
    return doubles(filter(lambda x: x % 2 == 0, xs))
    else:
        return []


def filter3(pred, xs):
    return [x for x in xs if pred(x)]


def filter4(pred, xs):
    return reduce(lambda ys, y: ys + [y] if pred(y) else ys, xs, [])
    # Needs a different data type to be in O(n). Or at least an append which
    # returns the list. Better would be a list which allows to create a new
    # list with a given value as head and a given list as tail.


falsify("filter vs filter1", lambda xs: list(filter(even, xs)) == filter1(even, xs), [int])
falsify("filter1 vs filter2", lambda xs: filter1(even, xs) == filter2(even, xs), [int])
falsify("filter2 vs filter3", lambda xs: filter2(even, xs) == filter3(even, xs), [int])
falsify("filter3 vs filter4", lambda xs: filter3(even, xs) == list(filter4(even, xs)), [int])


def map4(f, xs):
    return reduce(lambda ys, y: ys + [f(y)], xs, [])


falsify("map3 vs map4", lambda xs: map3(F(mul, 2), xs) == map4(F(mul, 2), xs), [int])


fac2 = F(flip(F(reduce, mul)), 1) << F(range, 1) << F(add, 1)