Python + pipes

Monday, 18 April 2011 03:29
skiminok: (xkcd)
[personal profile] skiminok
Вот что значит гибкий язык.

Чтобы добавить в питон пайплайны, достаточно определить элементарный декоратор над iterables, переопределив в нем оператор "|". Взамен получаем просто-таки F#:
[1,2,3,4] | where(lambda x: x<=2) | as_list


При этом исходный код этого катастрофически сложного нововведения занимает 7 строчек. Не считая библиотеки стандартных комбинаторов.
class Pipe:
    def __init__(self, function):
        self.function = function

    def __ror__(self, other):
        return self.function(other)

    def __call__(self, *args, **kwargs):
        return Pipe(lambda x: self.function(x, *args, **kwargs))


Вообще, если бы в питоне была статическая типизация, я бы из него до конца жизни не вылезал.
From:
Anonymous
OpenID
Identity URL: 
User
Account name:
Password:
If you don't have an account you can create one now.
Subject:
HTML doesn't work in the subject.

Message:

 
Notice: This account is set to log the IP addresses of everyone who comments.
Links will be displayed as unclickable URLs to help prevent spam.

Profile

skiminok: (Default)
skiminok

Most Popular Tags

July 2011

S M T W T F S
     12
3456789
10111213141516
17181920212223
242526272829 30
31