xkcd: College Athletes
Programming is Mathematics
This is why I respect the Functional Programming movement: they get it. Functional Programmers understand that (at a minimum) 50 years of research and refinement is a pretty good thing to stake your data types on. Stick to actual mathematics. You'll have to learn it eventually, you may as well not cloud your own thinking in the process. Mathematics is the simplest and most precise language mankind has ever invented, and you should be able to speak it.
Rob Napier’s Swift/Haskell post
A paradigm is sneaking in when you aren’t paying attention. Pay attention. There’s a chance here to influence development practice for decades We really can have languages that give the benefits of tomorrow without losing all the working components of today. I think Swift can be one of those languages. Much of that, I believe, is education.
Bartosz’s category-theoretic post on applicative functors
Unlike monads, which came into programming straight from category theory, applicative functors have their origins in programming. McBride and Paterson introduced applicative functors as a programmi…
Advanced Functional Programming ’18’s course materials
An implementation of `Func.dimap`
The intuition here is pre-composing on the input and post-composition on the output.
Semantic’s “Why Haskell?” Document
While no level of type safety is sufficient to ensure all programs' correctness, the fact that the Semantic Code team spends the majority of its time working on features rather than debugging production crashes is truly remarkable—and this can largely be attributed to our choice of language. but in Haskell: its brevity, power, and focus on correctness lets researchers focus on the nature of the problem rather than the onerous task of fitting advanced research into conventional languages. Writing in Haskell allows us to build on top of the work of others rather than getting stuck in a cycle of reading, porting, and bug-fixing. a reputation for being difficult to learn. Some of that is well deserved, but half of it has more to do with how many of us first learned imperative programming and the switch to a functional paradigm takes some patience.
zurry and unzurry
When working with a monad, you work in its Kleisli category which is another example of a CCC. The above discussion relating function evaluation to function composition, would then relate Kleisli evaluation (=) to Kleisli composition (=). Woah, is `bind` just monadic function evaluation?
Applicatives in Swift
Definition of a co-effect
Video: https://www.youtube.com/watch?v=A0VaIKK2ijM
“I can’t be the only one who has to stop and think which “direction” filter() goes. Am I filtering in or out?”
I can’t be the only one who has to stop and think which “direction” filter() goes. Am I filtering in or out?
Lenses in Swift
On Compositionality
reasoning about the system should be done recursively on its structure. good software design is ultimately an art. another example of reasoning via an interface. I suspect that interfaces are in fact synonymous with compositionality. That is, compositionality is not just the ability to compose objects, but the ability to work with an object after intentionally forgetting how it was built. can interact in complex ways that block understanding More generally, I claim that the opposite of compositionality is emergent effects. The common definition of emergence is a system being ‘more than the sum of its parts’, and so it is easy to see that such a system cannot be understood only in terms of its parts, i.e. it is not compositional. Moreover I claim that non-compositionality is a barrier to scientific understanding, because it breaks the reductionist methodology of always dividing a system into smaller components and translating explanations into lower levels.
Lenses (and Prisms) in Swift
http://2015.funswiftconf.com