Discrete Mathematics and Functional Programming (2016)
cs.wheaton.edu
cs.wheaton.edu
There is no answers to the exercises in the book (some selected solutions on the book homepage) but there is an appendix on various patterns and proof techniques, which turned out to be all I needed as many of the exercises you're just writing and checking a program. I assume there's no solutions because the exercises are used for a course. I've always wondered why authors don't have a self-study, Knuth like book with answers contained in it, then sell a seperate instructor pack or something with private exercises to other teachers.
Via http://www.smlnj.org/ ?
What book are you referring to? I guess I’m unsure if you’re talking about a book that exists or a book that should exist.
Maybe not in academia, but it sure is in the working world... and for good reason imho.
1. Functional programming is popular in academia (particularly in PLT) but so is just about every sort of programming. Lots of academics have carved out niches and worked on them for long times.
2. Your view of industry is somewhat biased. In the sort of tech companies talked about on HN (eg Bay Area style companies), functional programming methods are growing in popularity but it isn’t really functional programming languages but certain functional programming techniques (in particular mutating this as little as possible and in particular not all over the place). Outside of such companies everyone still uses java, C, C++, C#, or JavaScript with some people using react now which is somewhat popular.
Except that the goalposts keep moving all the time. It used to be the case that having first-class functions was enough to be considered FP, but even function objects in C++ or Java give you that. Then it was "no global mutability" - restrict mutation to a single well-defined "context" of execution (via things like the ST monad, in a functional language like Haskell) and make sure that anything that's shared more broadly is immutable. But Rust has now codified that rule-of-thumb as well, and with it the comprehensive use of such a "sharing or direct mutation, but not both" pattern. It will be interesting to see how this evolves in the future.
We have to let them think that they're in control... That their languages are "just happening" to slowly evolve into shitty variants of Haskell.
I don’t think this was ever really about first class functions (by which you really mean closures): C already had function pointers and a common pattern of function pointer plus a void * for some data which effectively gives you closures without the syntax. And java already had the ability to mint a class inside a function which closed over (final) variables which is basically the same as a lambda. Saying that functional programming means lambdas is like saying that FP is the same as having GC (or good static types, or dynamic types, or lots of parens, or ...). This isn’t true (again, see java, but when it was new) and there are examples of languages in each quadrant of the FP vs GC square.
The fact that C++/Java are picking up features from functional programming languages is sort-of irrelevant. I think it makes more sense to say that they are picking up useful features from all sorts of programming languages
My main point in this area is that despite the mood on HN, most programming done in industry is with the same big existing procedural/oop programs that have been around for ages and are likely not going to dramatically change or be rewritten just because FP has been coming back into fashion in the last 10 years. And the new programs written in industry will probably still be in the same languages to interoperate with the old programs (although perhaps written in a slightly more functional style depending on who writes the programs and which libraries they use).
Having said that I’m less sure about JS. I get the impression that it’s tending to a more functional style as a solution to managing complicated state and user interfaces, that many programs are written with new functional style libraries like react, and that programs are less likely to be old and big and more likely to be frequently rewritten. But maybe this impression is wrong and most JS programs are just using jquery.
Two actual changes are I think moving towards web based UIs instead of platform native ones, and moving to json instead of xml. But these have little to do with programming languages.
<style>
body{ font-family: "Calibri", Times, serif; margin: 75px; }
</style>
Discrete Mathematics Using a Computer
http://www.x.edu.uy/inet/Springer.pdf