These math-related predicates check for IF one value is equal, less than, or greater than another value and then report True or False (a Boolean value). Thus they are Predicate shaped. Blocks like Sum, Product, Minus, Mod, and more are also math related, but they don’t check whether something is true, they take some inputs and give an output based on those inputs. Given that these are math blocks, that output will be a number and not a Boolean, and thus these math blocks should and are Reporters. If we follow the pattern of the primitive blocks (which you are by no mean obliged to) your block should be a reporter too.
In the case of IF, the result of this math block won’t be useful. Because it will report a number, the IF block won’t know what to do and actually has a special behaviour for numbers: it treats 0 as false and everything else as true. This means that for your IF statement to not trigger, the value would have to be 0 which is only the case for the GCF of 0 and 0. Regardless, doing something only if the GCF isn’t 0 does not have a use case (that I can think of). As for the other blocks you mentioned (=,>,<), they don’t have Boolean inputs and can totally take things like the Sum block directly with no problem.
I would like to end this lengthy post by saying that you can totally use whatever organization method you want. I’m not trying to control that. I’m just trying to clarify what you may or may not already know about how Predicates versus Reporters are used by primitives and most people on the forum.
PS: I liked your elegant definition of the block using the Euclidean algorithm!









