How to resolve the algorithm Catamorphism step by step in the ALGOL 68 programming language

Published on 12 May 2024 09:40 PM

How to resolve the algorithm Catamorphism step by step in the ALGOL 68 programming language

Table of Contents

Problem Statement

Reduce is a function or method that is used to take the values in an array or a list and apply a function to successive members of the list to produce (or reduce them to), a single value.

Show how reduce (or foldl or foldr etc), work (or would be implemented) in your language.

Let's start with the solution:

Step by Step solution about How to resolve the algorithm Catamorphism step by step in the ALGOL 68 programming language

Source code in the algol programming language

# applies fn to successive elements of the array of values #
# the result is 0 if there are no values                   #
PROC reduce = ( []INT values, PROC( INT, INT )INT fn )INT:
     IF UPB values < LWB values
     THEN # no elements #
          0
     ELSE # there are some elements #
          INT result := values[ LWB values ];
          FOR pos FROM LWB values + 1 TO UPB values
          DO
              result := fn( result, values[ pos ] )
          OD;
          result
     FI; # reduce #

# test the reduce procedure #
BEGIN print( ( reduce( ( 1, 2, 3, 4, 5 ), ( INT a, b )INT: a + b ), newline ) ) # sum #
    ; print( ( reduce( ( 1, 2, 3, 4, 5 ), ( INT a, b )INT: a * b ), newline ) ) # product #
    ; print( ( reduce( ( 1, 2, 3, 4, 5 ), ( INT a, b )INT: a - b ), newline ) ) # difference #
END

  

You may also check:How to resolve the algorithm Sorting algorithms/Selection sort step by step in the BCPL programming language
You may also check:How to resolve the algorithm Levenshtein distance step by step in the PL/M programming language
You may also check:How to resolve the algorithm Spiral matrix step by step in the jq programming language
You may also check:How to resolve the algorithm Dijkstra's algorithm step by step in the J programming language
You may also check:How to resolve the algorithm Sort three variables step by step in the JavaScript programming language