Yes, you can store the system value (or indeed any other object capability) in a list.
If a function takes in a List[NodeSystem] parameter, then the function can perform side effects through the methods on NodeSystem.
However, if a function takes in a List[T] where T is a type parameter, then that is not enough to perform side effects, even if that function is later called with a List[NodeSystem] argument. There is no way for the function to access the methods of the concrete type of T.
Hence, you can tell whether or not a function may have side effects from the function signature alone.
Yes, you can store the system value (or indeed any other object capability) in a list.
If a function takes in a List[NodeSystem] parameter, then the function can perform side effects through the methods on NodeSystem.
However, if a function takes in a List[T] where T is a type parameter, then that is not enough to perform side effects, even if that function is later called with a List[NodeSystem] argument. There is no way for the function to access the methods of the concrete type of T.
Hence, you can tell whether or not a function may have side effects from the function signature alone.