From 00d9c3916c7b6439645d26e19c32e1134a0f05b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C5=82awomir=20=C5=9Aled=C5=BA?= Date: Wed, 23 Aug 2017 03:34:51 +0200 Subject: [PATCH] Minor fix + add some examples. --- examples/example.sh | 62 ++++++++++++++++++++++++++++++++++++++++++++- src/fun.sh | 7 ++--- 2 files changed, 65 insertions(+), 4 deletions(-) diff --git a/examples/example.sh b/examples/example.sh index 3fe7026..10e8b0e 100755 --- a/examples/example.sh +++ b/examples/example.sh @@ -57,4 +57,64 @@ curry add3 add 3 add3 9 list a b c d | foldl lambda acc el . 'echo -n $acc-$el' -list '' a b c d | foldr lambda acc el . 'if [[ ! -z $acc ]]; then echo -n $acc-$el; else echo -n $el; fi' \ No newline at end of file +list '' a b c d | foldr lambda acc el . 'if [[ ! -z $acc ]]; then echo -n $acc-$el; else echo -n $el; fi' + +seq 1 4 | foldl lambda acc el . 'echo $(($acc + $el))' + +#1 - 2 - 3 - 4 +seq 1 4 | foldl lambda acc el . 'echo $(($acc - $el))' +#1 - 4 - 3 - 2 +seq 1 4 | foldr lambda acc el . 'echo $(($acc - $el))' + +#1 + (1 + 1) * 2 + (4 + 1) * 3 + (15 + 1) * 4 = 64 + +seq 1 4 | foldl lambda acc el . 'echo $(mul $(($acc + 1)) $el)' + +#1 + (1 + 1) * 4 + (8 + 1) * 3 + (27 + 1) * 2 = 56 +seq 1 4 | foldr lambda acc el . 'echo $(mul $(($acc + 1)) $el)' + +tup a 1 +tupl $(tup a 1) +tupr $(tup a 1) +tup a 1 | tupl +tup a 1 | tupr + +seq 1 10 | buff lambda a b . 'echo $(($a + $b))' +echo 'XX' +seq 1 10 | buff lambda a b c d e . 'echo $(($a + $b + $c + $d + $e))' + +list a b c d e f | zip $(seq 1 10) + +echo +list a b c d e f | zip $(seq 1 10) | last | tupr + +arg='[key1=value1,key2=value2,key3=value3]' +get() { + local pidx=$1 + local idx=$2 + local arg=$3 + echo $arg | tr -d '[]' | cut -d',' -f$idx | cut -d'=' -f$pidx +} + +curry get_key get 1 +curry get_value get 2 + +get_key 1 $arg +get_value 1 $arg + +seq 1 3 | map lambda a . 'tup $(get_key $a $arg) $(get_value $a $arg)' + +echo 'ls /home' | try λ cmd status ret . 'echo $cmd [$status]; echo $ret' +echo '/home' | try λ cmd status ret . 'echo $cmd [$status]; echo $ret' + +seq 1 5 | scanl lambda a b . 'echo $(($a + $b))' +seq 1 5 | scanl lambda a b . 'echo $(($a + $b))' | last + +seq 2 3 | map lambda a . 'seq 1 $a' | join , [ ] +list a b c | map lambda a . 'echo $a; echo $a | tr a-z A-z' | join , [ ] + +echo 0 | cat - <(curl -s https://raw.githubusercontent.com/ssledz/bash-fun/v1.1.1/src/fun.sh) | \ + map lambda a . 'list $a' | foldl lambda acc el . 'echo $(($acc + 1))' + +echo 0 | cat - <(curl -s curl -s https://raw.githubusercontent.com/ssledz/bash-fun/v1.1.1/src/fun.sh) \ + | foldl lambda acc el . 'echo $(($acc + 1))' \ No newline at end of file diff --git a/src/fun.sh b/src/fun.sh index 14c5979..e3d0ba5 100755 --- a/src/fun.sh +++ b/src/fun.sh @@ -170,9 +170,10 @@ revers_str() { try() { local f="$@" local cmd=$(cat -) - ret="$(2>&1 $cmd)" - local status=$? - list "$cmd" $status $(list $ret | join \#) | $f + local ret=$(2>&1 eval "$cmd"; echo $?) + local cnt=$(list $ret | wc -l) + local status=$(list $ret | last) + list "$cmd" $status $(list $ret | take $((cnt - 1)) | join \#) | $f } ret() {