私は(本当に)関数型プログラミングの初心者です(実際にはPythonを使用してのみ関数型プログラミングと接触していました)が、シェル環境でのリスト集約型のタスクには良いアプローチのようです。
私はこのようなことをしたいです:
$ [ git clone $host/$repo for repo in repo1 repo2 repo3 ]
この種の機能を持つUnixシェルはありますか?または、Python内から簡単なシェルアクセス(コマンド、env / vars、readlineなど)を許可する機能があるかもしれません(bashの代わりにpythonのインタラクティブインタープリターを使用することです)。
編集:
たぶん比較例が明らかになるでしょう。dir / fileで構成されるリストがあるとしましょう:
$ FILES=( build/project.rpm build/project.src.rpm )
そして、私は本当に簡単なタスクをしたい:すべてのファイルをdist /にコピーし、それをシステムにインストールします(ビルドプロセスの一部です):
bashの使用:
$ cp $ {files [*]} dist / $ cd dist && rpm -Uvh $($ {files [*]}のfの場合、do basename $ f; done))
「pythonic shell」アプローチの使用(注意:これは架空のコードです):
$ cp [FILES内のファイルのos.path.join( 'dist'、os.path.basename(file))] 'dist'
違いがわかりますか?それが私が話していることです。これらの種類のビルドインでシェルをまだ終了できないのはなぜですか?ファイルのリスト、PIDのリスト、すべてのリストなど、非常に一般的なタスクであっても、シェルでリストを処理するのは非常に苦痛です。
そして、本当に、本当に、重要なポイント:誰もが既に知っている構文/ツール/機能を使用する:shとpython。
IPythonは良い方向にあるように見えますが、肥大化しています。変数名が「$」で始まる場合はこれを行い、「$$」であればそれを行います。構文は「自然」ではないため、多くのルールと「回避策」([ ln.upper() for ln in !ls ]
->構文エラー)