#1 : Shorthand notations for lambdas
This commit is contained in:
parent
adfe8ec68b
commit
c1ae19f270
2 changed files with 21 additions and 4 deletions
12
src/fun.sh
12
src/fun.sh
|
@ -66,10 +66,22 @@ lambda() {
|
||||||
}
|
}
|
||||||
|
|
||||||
map() {
|
map() {
|
||||||
|
if [[ $1 != "λ" ]] && [[ $1 != "lambda" ]]; then
|
||||||
|
|
||||||
|
local has_dollar=$(list $@ | grep '\$' | wc -l)
|
||||||
|
|
||||||
|
if [[ $has_dollar -ne 0 ]]; then
|
||||||
|
args=$(echo $@ | sed -e 's/\$/\$a/g')
|
||||||
|
map λ a . $args
|
||||||
|
else
|
||||||
|
map λ a . "$@"' $a'
|
||||||
|
fi
|
||||||
|
else
|
||||||
local x
|
local x
|
||||||
while read x; do
|
while read x; do
|
||||||
echo "$x" | "$@"
|
echo "$x" | "$@"
|
||||||
done
|
done
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
foldl() {
|
foldl() {
|
||||||
|
|
|
@ -30,4 +30,9 @@ testFlatMap() {
|
||||||
assertEquals "d e h l l l o o r w" "$(list hello world | map lambda x . 'command fold -w 1 <<< $x' | sort | unlist)"
|
assertEquals "d e h l l l o o r w" "$(list hello world | map lambda x . 'command fold -w 1 <<< $x' | sort | unlist)"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
testMapNoLambdaSyntax() {
|
||||||
|
assertEquals "1 2 3" "$(list 1 2 3 | map echo | unlist)"
|
||||||
|
assertEquals "1 is a number 2 is a number 3 is a number" "$(list 1 2 3 | map 'echo $ is a number' | unlist)"
|
||||||
|
}
|
||||||
|
|
||||||
. ./shunit2-init.sh
|
. ./shunit2-init.sh
|
Loading…
Reference in a new issue