scratch/content/html/en/blog/Higher-order-function-in-zsh.md
Yann Esposito (Yogsototh) cd3448b73a Regen after devel-clean
2011-09-27 17:11:40 +02:00

1.7 KiB

isHidden menupriority kind created_at title author_name author_uri
false 1 article 2011-09-27T15:15:23+02:00 Higher order function in zsh Yann Esposito yannesposito.com

<%= blogimage("main.png","Title image") %>

begindiv(intro)

<%= tldr %> some simple implementation of higher order function for zsh.

enddiv

# for each directory in projects dir for toProject in /path/to/projects/*(/N); do # toProject is /path/to/projects/foo # project become foo (:t for tail) project=${toProject:t} for toResource in $toProject/resources/*.gif(.N); do convert $toResource ${toResource:r}.png \rm -f $toResource done done gif_to_png() { convert $1 ${1:r}.png && \rm -f $1 } handle_resources() { map gif_to_png $1/resources/*.gif(.N) } map handle_resources /path/to/projects/*(/N) for toProject in Projects/*; do project=$toProject:t if print -- project | grep -v s >/dev/null then print $project for toResource in $toProject/*(.N); do if print -- ${toResource:t} | grep $project >/dev/null; then print -- "X $toResource" fi done fi done

After =>

contain_no_s() { print $1 | grep -v s } function verify_file_name { local project=$1:t contains_project_name() { print $1:t | grep $project } map "print -- X" $(filter contains_project_name $1/*(.N)) } map show_project_matchin_file $( filter contain_no_s Projects/* )

Also, the first verstion is a bit easier to read. But the second one is clearly far superior in architecture. Why?