Merge pull request #2 from ssledz/feature-#1

#1 : Shorthand notations for lambdas
This commit is contained in:
Slawomir Sledz 2019-08-31 01:54:16 +02:00 committed by GitHub
commit 79e6873e8e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 21 additions and 4 deletions

View file

@ -66,10 +66,22 @@ lambda() {
} }
map() { map() {
local x if [[ $1 != "λ" ]] && [[ $1 != "lambda" ]]; then
while read x; do
echo "$x" | "$@" local has_dollar=$(list $@ | grep '\$' | wc -l)
done
if [[ $has_dollar -ne 0 ]]; then
args=$(echo $@ | sed -e 's/\$/\$a/g')
map λ a . $args
else
map λ a . "$@"' $a'
fi
else
local x
while read x; do
echo "$x" | "$@"
done
fi
} }
foldl() { foldl() {

View file

@ -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