many years in programming has not cleared these cognitive burdens. 44 and counting. I mean sure, I'd love to stop being astonished, but the truth is I'm not. I had this in card decks and uplifted into glass ttys over time.
I have to re-read how to do lambdas more often than I care to try and remember. Every time I do, I ask myself why I'm doing it.
If you are one of the cogniscenti who don't suffer this cognitive burden please treat the rest of us kindly.
"oh, you mean you can't read music: how funny I can hear the entire orchestra"
At least about recursion I can say it only really clicked, after working through part of SICP and The Little Schemer. It is like avoiding to think about the potentially endlessly deep recursion, but thinking about the current level and what the meaning is.
Sometimes however, there will be a recursion, which dumbfounds me as well :) I still feel I improve though. Just the other day I came up with a pair of mutual recursive functions, as if it was nothing, to solve a specific problem, by splitting it into 2 subproblems (or maybe 2 states in an automaton).
Often there is a very clear idea behind a recursion, that, once one has heard it, becomes completely obvious. Maybe not always.
About ZIP: Imagine you wanted to work on 2-tuples made out of pairs of elements from 2 lists. That's what ZIP does. Maybe also works for more than 2 lists, I don't know.
If that imagine about zip was meant to help.. (truly, I do know what zip does. It's what zip does in context. Mapping your mental model of a list to a list of pairs in context is whats hard. And my head doesn't see lists as tuples any more than staring at an integral stops me internally screaming eeeee because giant E)
I have the same thing, but in the opposite direction: I can read recursion, map/filter/reduce/any kind of higher order function (even the wonky haskell ones, like traverse) just fine.
But the moment I start seeing mutation, or for loops complex than a for each over a data structure (like nested ones, or while, or weird indexing) my brain completely shuts down. In my first professional job (F# developer) I had to look up how to write classes every time we created one (not often, to be fair).
I think it's all a matter of habit and familiarity, although I'll admit that finding places that program functionally (where I'm most proficient) is really hard
I started out at the very beginning doing full stack JS, but at some point I started using Haskell for my personal projects, and my first job was in F#, so I think the combination of those two may just have impacted the way I think about programming a lot
I have to re-read how to do lambdas more often than I care to try and remember. Every time I do, I ask myself why I'm doing it.
If you are one of the cogniscenti who don't suffer this cognitive burden please treat the rest of us kindly.
"oh, you mean you can't read music: how funny I can hear the entire orchestra"