Note that there are some explanatory texts on larger screens.

plurals
  1. USMike A
    primarykey
    data
    text
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. COFinal note for now: I note there are several comments that simply dismiss these concepts out-of-hand, lobbing the odd insult (and some are just insults). I would point out that these concepts are not my own. I discovered them by reading widely on C2 and many other sites. I would invite these masterminds to construct reasoned arguments or suggest they develop their commenting abilities starting at forums more appropriate to their level, such as YouTube or Yahoo Answers.
      singulars
    2. COAlso, for the FP programmers, consider this: unless you are using a pure FP language, you can't rule out side-effects, so in any case you are fighting a losing battle. And guess what? Side-effects are really useful! One generally useful example is profiling code. Do I really worry that the profiler is going to update its log? Of course not, I want that. Do I have to create a Monadic type system for profiling? Yeuch! Sure the logging might upset my other code, but I'll live with that tiny chance.
      singulars
    3. COSeems confusion exists about what I want to say here. I'll try to be clearer, and please try to read clearly. I emphasised Tell-don't-ask, i.e. stop asking for state. This stops state moving away from where it is managed. The main counter-examples involve "it's simple to do x = f(y) using a return statement, but it's hard to do that without a return statement.". So the "asking" (function call) is still there, but the "reply" (return statement) part is gone. So of course that is hard. But that's not my point. My point is that we shouldn't be asking at all. We should be sending messages.
      singulars
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload