47 lines
785 B
Bash
47 lines
785 B
Bash
#!/bin/bash
|
|
# shellcheck disable=SC2155
|
|
if ! type "include" > /dev/null 2>&1; then
|
|
include() {
|
|
. "$(cd "$(dirname "$1")" && pwd)/${2}";
|
|
};
|
|
fi
|
|
include "${BASH_SOURCE[0]}" ../pragma_once.bash
|
|
if ! pragma_once ${BASH_SOURCE[0]}; then return 0; fi
|
|
include "${BASH_SOURCE[0]}" ./global_rely/export.bash
|
|
# shellcheck source=./global_rely/export.bash
|
|
|
|
|
|
|
|
|
|
square() {
|
|
echo $(($1 * $1))
|
|
}
|
|
|
|
cube() {
|
|
echo $(($1 * $1 * $1))
|
|
}
|
|
|
|
add() {
|
|
echo $(($1 + $2))
|
|
}
|
|
|
|
map() {
|
|
local fn=$1
|
|
while read value; do
|
|
$fn $value
|
|
done
|
|
}
|
|
|
|
reduce() {
|
|
local fn=$1
|
|
local result=${2:-0} # 初始值
|
|
while read value; do
|
|
result=$($fn $result $value)
|
|
done
|
|
echo $result
|
|
}
|
|
|
|
#seq 1 10 | map square | reduce add # 平方和:385
|
|
#seq 1 10 | map cube | reduce add # 立方和:3025
|
|
|
|
return 0 |