Ini adalah solusi terpendek yang dapat saya pikirkan:
Diberikan fungsi-fungsi ini:
# List processing
map() { while IFS='' read -r x; do "$@" "$x"; done; }
filter() { while IFS='' read -r x; do "$@" "$x" >&2 && echo "$x"; done; }
foldr() { local f="$1"; local result="$2"; shift 2; while IFS='' read -r x; do result="$( "$f" "$@" "$x" "$result" )"; done; echo "$result"; }
foldl() { local f="$1"; local result="$2"; shift 2; while IFS='' read -r x; do result="$( "$f" "$@" "$result" "$x" )"; done; echo "$result"; }
# Helpers
re() { [[ "$2" =~ $1 ]]; }
Contoh:
# Example helpers
toLower() { tr '[:upper:]' '[:lower:]'; }
showStructure() { [[ "$1" == "--curly" ]] && echo "{$2; $3}" || echo "($1, $2)"; }
# All lib* directories, ignoring case, using regex
ls /usr | map toLower | filter re 'lib.*'
# All block devices. (Using test, for lack of a full bash [[ … ]].)
cd /dev; ls | filter test -b
# Show difference between foldr and foldl
$ ls / | foldr showStructure '()'
(var/, (usr/, (tmp/, (sys/, (sbin/, (run/, (root/, (proc/, (opt/, (mnt/, (media/, (lost+found/, (lib64/, (lib32/, (lib@, (home/, (etc/, (dev/, (daten/, (boot/, (bin/, ())))))))))))))))))))))
$ ls / | foldr showStructure '{}' --curly
{var/; {usr/; {tmp/; {sys/; {sbin/; {run/; {root/; {proc/; {opt/; {mnt/; {media/; {lost+found/; {lib64/; {lib32/; {lib@; {home/; {etc/; {dev/; {daten/; {boot/; {bin/; {}}}}}}}}}}}}}}}}}}}}}}
(Contoh-contoh ini tentu saja hanya contoh penggunaan, dan pada kenyataannya, gaya ini hanya masuk akal untuk kasus penggunaan yang lebih rumit.)
Secara umum, gaya berikut selalu dapat digunakan:
f() { something "$@" ; }; someList | map f
g() { something "$1" "$2" …; }; someCommand | filter g
⋮ ⋮ ⋮ ⋮
Ini tidak cukup lambda, tetapi sangat sangat dekat. Hanya beberapa karakter berlebih.
Tetapi singkatan kenyamanan berikut ini tidak berfungsi sejauh yang saya tahu:
λ() { [[ $@ ]]; } # fails on spaces
λ() { [[ "${@:-1}" ${@:1:-1} ]]; } # syntax error
alias λ=test # somehow ignored
Sayangnya, bash
tidak terlalu cocok untuk gaya ini, meskipun beberapa fitur-fiturnya memiliki gaya yang sangat fungsional.