Earlier quoted context omitted.
abstract class Fruit: prop name: string prop rotten: bool class Apple (Fruit): prop name: string = "apple" prop rotten: bool = False class Orange (Fruit): prop name: string = "orange" prop rotten: bool = False func add (a: List , b: List ) -> List : return foldl(lambda l, f: l.append(f), a, b) func filter (p: Func , l: List ) -> List : return [f for f in l if p(f)] func is_rotten (f: Fruit) -> bool: return f.rotten a…
This does nothing to elucidate the problem. 1/3 apples + 1/3 oranges could be 2/6 fruits, or 2/781 fruits, or any other number you want. In normal mathematical notation, 1/3 is interpreted as 1/3 of 1, and in that case 1/3 apple + 1/3 orange is 2/3 fruit. And of course this only works if 1 apple = 1 orange = 1 fruit, which means that they are the same unit of measure, or, equivalently they are of substitutable types.…
> In normal mathematical notation, 1/3 is interpreted as 1/3 of 1
Why would you deny the possibility of 1 being 1 list of fruits rather than 1 fruit?
In the original example, it was 1 table of students, not 1 student.
Everything you say after that is based on this broken assumption.