推薦一個項目, Pipe,以及一些思考
剛剛看到一個項目, 推薦一下,pipe in Python。
JulienPalard/Pipe
我看到時人都傻了,就一個__ror__ meta method, 居然能有500+ star。
其實我有時在想啊,為什麼我寫的東西就不能火呢... 對吧,Linq.py, 這個設計比起這個500+ star應該還是巧妙了不少。
這個思路在當時python-idea討論flowpython時就有人提過,還給了一樣的例子(我懷疑可能就是這個庫的作者,不過不確定。我outlook沒找到8月17前收到的郵件,應該刪了,去mailing list翻太麻煩了),不知道為什麼,我一直不屑一顧。我當時還是堅定地認為應該支持語法層面的Arrow Transform和Pipeline,現在看來好像挺傻了,因為我發現基於__ror__的pipeline框架,稍作改進之後,就真的可以在設計上也碾壓Linq.py。
Linq.py的優勢是什麼呢,
- 對特定類型,能夠動態添加的extension methods.
- 參數的解構.
- new 一個 新的Linq對象(class Flow)的代價很小.
- 所有的擴展方法放在一個哈希表(模塊名=>類型名=>函數對象引用)中存儲,便於作為自動補全的依據.
然而這個之前我看不起的__ror__,除開前倆優勢沒有之外,首先根本不需要new對象,而且補全也是不需要做特殊處理的.
但是,我想了想發現,我可以隨時把前兩個優勢給他加上去.
還可以用我那個testing codes generator分分鐘給他把coverage刷到90%+.
唉,人都傻了。
不過我還是覺得Linq.py是非常巧妙的,以那麼短的核心代碼實現那些東西,那麼簡潔輕量的元編程,怎麼就差距這麼大。。。
也許是考慮到__or__方法兼容性過強時,__ror__方法失效的可能性。可能我是有點精神潔癖吧。
class c: def __or__(self, x): return xclass s: def __ror__(self, x): return xassert isinstance(c() | s(), s)
但我指出漏洞也沒啥用...
我感覺我缺些東西,但我至今應該尚未意識到。
推薦閱讀:
※Google 編程之夏(GSoC)中的Vert.x子項目
※目前有哪些開源飛控板可玩性比較好?這些飛控板又有什麼優缺點!?
※如何開發並維護一個開源的 React 組件?
※OIer對於開源的態度如何?
※開源許可證都有什麼區別,一般開源項目用什麼許可證?