Sou (realmente) novato em programação funcional (na verdade, só tive contato com ele usando python), mas parece ser uma boa abordagem para algumas tarefas que exigem muita lista em um ambiente shell.
Eu adoraria fazer algo assim:
$ [ git clone $host/$repo for repo in repo1 repo2 repo3 ]
Existe algum shell Unix com esse tipo de recurso? Ou talvez algum recurso para permitir acesso fácil ao shell (comandos, env / vars, readline, etc ...) de dentro do python (a idéia é usar o interpretador interativo do python como um substituto para o bash).
EDITAR:
Talvez um exemplo comparativo esclareça. Digamos que eu tenho uma lista composta de dir / file :
$ FILES=( build/project.rpm build/project.src.rpm )
E eu quero fazer uma tarefa muito simples: copiar todos os arquivos para dist / AND instalá-lo no sistema (faz parte de um processo de compilação):
Usando o bash:
$ cp $ {files [*]} dist / $ cd dist && rpm -Uvh $ (para f em $ {files [*]}; faça o nome da base $ f; done))
Usando uma abordagem de "casca pitônica" (cuidado: este é um código imaginário):
$ cp [os.path.join ('dist', os.path.basename (file)) para o arquivo em FILES] 'dist'
Você consegue ver a diferença? É disso que estou falando. Como ainda não é possível sair de um shell com esse tipo de material? É uma verdadeira dor lidar com listas no shell, mesmo sendo uma tarefa tão comum: lista de arquivos, lista de PIDs, lista de tudo.
E um ponto muito, muito importante: usando sintaxe / ferramentas / recursos que todo mundo já conhece: sh e python.
O IPython parece estar em uma boa direção, mas está inchado: se o nome do var começar com '$', ele fará isso, se '$$' fizer isso. Sua sintaxe não é "natural", existem muitas regras e "soluções alternativas" ( [ ln.upper() for ln in !ls ]
-> erro de sintaxe)