mirror of
https://github.com/python/cpython.git
synced 2025-08-03 16:39:00 +00:00
Kill reduce(). A coproduction of John Reese, Jacques Frechet, and Alex M.
This commit is contained in:
parent
6cefeb0e81
commit
89da5d7c3d
10 changed files with 25 additions and 144 deletions
|
@ -106,24 +106,26 @@ class _SimpleBinder:
|
|||
# _state_subsets gives for each combination of modifiers, or *state*,
|
||||
# a list of the states which are a subset of it. This list is ordered by the
|
||||
# number of modifiers is the state - the most specific state comes first.
|
||||
# XXX rewrite without overusing functional primitives :-)
|
||||
_states = range(1 << len(_modifiers))
|
||||
_state_names = [reduce(lambda x, y: x + y,
|
||||
[_modifiers[i][0]+'-' for i in range(len(_modifiers))
|
||||
if (1 << i) & s],
|
||||
"")
|
||||
_state_names = [''.join(m[0]+'-'
|
||||
for i, m in enumerate(_modifiers)
|
||||
if (1 << i) & s)
|
||||
for s in _states]
|
||||
_state_subsets = map(lambda i: filter(lambda j: not (j & (~i)), _states),
|
||||
_states)
|
||||
_states)
|
||||
for l in _state_subsets:
|
||||
l.sort(lambda a, b, nummod = lambda x: len(filter(lambda i: (1<<i) & x,
|
||||
range(len(_modifiers)))):
|
||||
nummod(b) - nummod(a))
|
||||
# _state_codes gives for each state, the portable code to be passed as mc_state
|
||||
_state_codes = [reduce(lambda x, y: x | y,
|
||||
[_modifier_masks[i] for i in range(len(_modifiers))
|
||||
if (1 << i) & s],
|
||||
0)
|
||||
for s in _states]
|
||||
_state_codes = []
|
||||
for s in _states:
|
||||
r = 0
|
||||
for i in range(len(_modifiers)):
|
||||
if (1 << i) & s:
|
||||
r |= _modifier_masks[i]
|
||||
_state_codes.append(r)
|
||||
|
||||
class _ComplexBinder:
|
||||
# This class binds many functions, and only unbinds them when it is deleted.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue