On 05/09/2015 03:21 AM, Andrew Barnert via Python-ideas wrote:
I suppose you could write (root @ mean @ (map square)) (xs),
Actually, you can't. You could write (root @ mean @ partial(map, square))(xs), but that's pretty clearly less readable than root(mean(map(square, xs))) or root(mean(x*x for x in xs). And that's been my main argument: Without a full suite of higher-level operators and related syntax, compose alone doesn't do you any good except for toy examples.
How about an operator for partial? root @ mean @ map $ square(xs) Actually I'd rather reuse the binary operators. (I'd be happy if they were just methods on bytes objects BTW.) compose(root, mean, map(square, xs)) root ^ mean ^ map & square (xs) root ^ mean ^ map & square ^ xs () Read this as... compose root, of mean, of map with square, of xs Or... apply(map(square, xs), mean, root) map & square | mean | root (xs) xs | map & square | mean | root () Read this as... apply xs, to map with square, to mean, to root These are kind of cool, but does it make python code easier to read? That seems like it may be subjective depending on the amount of programming experience someone has. Cheers, Ron