45 lines
1.2 KiB
ABAP
45 lines
1.2 KiB
ABAP
report z_catamorphism.
|
|
|
|
data(numbers) = value int4_table( ( 1 ) ( 2 ) ( 3 ) ( 4 ) ( 5 ) ).
|
|
|
|
write: |numbers = { reduce string(
|
|
init output = `[`
|
|
index = 1
|
|
for number in numbers
|
|
next output = cond string(
|
|
when index eq lines( numbers )
|
|
then |{ output }, { number } ]|
|
|
when index > 1
|
|
then |{ output }, { number }|
|
|
else |{ output } { number }| )
|
|
index = index + 1 ) }|, /.
|
|
|
|
write: |sum(numbers) = { reduce int4(
|
|
init result = 0
|
|
for number in numbers
|
|
next result = result + number ) }|, /.
|
|
|
|
write: |product(numbers) = { reduce int4(
|
|
init result = 1
|
|
for number in numbers
|
|
next result = result * number ) }|, /.
|
|
|
|
data(strings) = value stringtab( ( `reduce` ) ( `in` ) ( `ABAP` ) ).
|
|
|
|
write: |strings = { reduce string(
|
|
init output = `[`
|
|
index = 1
|
|
for string in strings
|
|
next output = cond string(
|
|
when index eq lines( strings )
|
|
then |{ output }, { string } ]|
|
|
when index > 1
|
|
then |{ output }, { string }|
|
|
else |{ output } { string }| )
|
|
index = index + 1 ) }|, /.
|
|
|
|
write: |concatenation(strings) = { reduce string(
|
|
init text = ``
|
|
for string in strings
|
|
next text = |{ text } { string }| ) }|, /.
|