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() {
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
while read x; do
echo "$x" | "$@"
done
fi
}
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)"
}
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