1,913 karma · joined March 29, 2016
It's important to appreciate how useful it might be to make math "tangible". Sure, someone who can define a manifold by saying "oh, put charts on it, locally diffeo blah blah" probably has a good set of mental models that help them find analogies and even "tangibilize" (word?) new ideas. Once you learn the way abstraction works, broadly speaking, you can take the training wheels off: but lots of people never get past that stage. On one hand, I see a lot of people on HN talk about how the complicated notation of academic math/CS keep people out (and there is an understandable amount of resentment at people keeping "outsiders" out with this), and on the other hand, I sort of reflexively bristle (it's gotten lesser now) at people integrating the notion of an inner product into a vector space, because it is important to not stumble later when you find out your basic intuition for something is broken[3]. (Of course, intuition can be incrementally "patched": Terence Tao's essay[3] talks about this, from the perspective of someone who is a brilliant educator in addition to also being one of the most versatile mathematicians around.)
Maybe presentations of basic mathematics that are
- simple
- rigorous
- free of half-truths
can be made accessible by using such visualizations and interactive techniques to decrease the perceived unfamiliarity of the ideas? I don't think there are many[2] treatments of mathematical topics that satisfy these criteria and yet manage to be approachable: one either skimps on a clean presentation (Khan Academy), or assumes a lot of mathematical maturity (shoutout to Aluffi!) from the reader. "Manipulable resources" might help fill this gap. It's an exciting time!
--
In the section where they give examples of matrix inverses, to give people a sense of how important multiplication order is, they give an example of RHR'H' (using a prime for inverse, R for a rotation matrix, and H for a shear matrix). One of the most beautiful illustrations[1] in the book follows, with the four corners of a square moving independently in circles, and then the book states that
It is quite close, but it is not at all useful.
While I understand the need to clarify the importance of multiplying matrices in the correct order, maybe a short aside on the unreasonable (practical!) effectiveness of commutators[0] would be useful?[0]: https://en.wikipedia.org/wiki/Commutator
[1]: http://immersivemath.com/ila/ch06_matrices/ch06.html ("Example 6.12: Matrix Product Inverse au Faux")
[2]: Visual Complex Analysis is brilliant, though.
[3]: https://terrytao.wordpress.com/career-advice/there%E2%80%99s...
I've been using Alacritty myself for a couple of weeks now. It's not too bad: the htop header bar won't render properly and catting random binary files crashes the terminal pretty quickly, but it's smooth and does everything a good "tmux VM" should do well.
I understand iterm2 on macOS is a significantly improved experience?
E: I meant to reply to a a sibling.
Right now I have a few big org files that are already surprisingly helpful: I can use ag (SPC s a p on my Spacemacs config, I haven't bothered to rebind it properly yet) to search for, say, "pigeon", which leads me to Skinner's experiment.
In other words, my thesis is that if you aren't familiar with State, both State s and State fooAppStateType are fairly opaque.
In any case, most of the time one works with a specialized instance, for instance, one might have something likr
newtype AppState a =
AppState {
runAppState ::
ReaderT Config
(StateT AppState IO)
a
}
and then there's no problem at all.If you're trying to understand how a library works when you're not very fluent in the language, that's what the documentation is there for! Any good library (and this is an area where's lots of room for improvement) should document the types it uses and the idioms that it lends itself to, and as one accrues experience, the whole "learning to see common patterns" takes over. The great thing about a helpful compiler of the Rust/Haskell ilk is that you make fewer mistakes in between (modulo occasionally horrific error messages).
And I'm willing to vouch for this not being expert (ha) blindness - I have only recently become comfortable enough with these things to talk about them.
m >>= k = ...
In a somewhat more esoteric vein, I love the use of w for comonads: the rationale is apparently that it looks like an upside-down m.> Of course, Edward Kmett had a story about winding up with his code telling him `i m a s t a b u`...
Is that an indexed lens ... parameterized over a monadic type? I'd like a link to the video/article.
See [0] for a good example of well-commented but idiomatic Haskell (a snippet from the popular Megaparsec parser library), which includes things like:
data ParsecT e s m a
ParsecT e s m a is a parser with
custom data component of error e,
stream type s, underlying monad m
and return type a.
Admitted, that is a monad transformer, but one-character type variables with human-readable docs are both good for newcomers as well as low-friction for people who are used to the library in question.(Strawman alert.) It is significantly more work to parse (ha) something like
ExceptT fooException (StateT fooWorldState underlyingMonad) a
when compared to ExceptT e (StateT s m) a
[0]: https://hackage.haskell.org/package/megaparsec-5.2.0/docs/Te...Thanks for the recommendations!
Also, your matrices for empty and type 1 each have an extra dot after the E on the first row (I think).
(Not that I'm discounting things like the excellent low-level questions on things like cache misses/alignment/"why are sorted lists faster to process", but I think they're rarer.)
If anyone here knows their way around the StackOverflow API and has some time, I think it could lead to an interesting couple of hours.
E: ah, TIL. https://en.m.wikipedia.org/wiki/Rubber-hose_cryptanalysis
(Eek, weird sentence. No awkward grammar fixes welcome.)
But Pavel would not be deterred
In any case, saying that Haskell 98 is the One True Haskell(TM) isn't accurate. Almost all code (beyond the LYAH level) written today uses a few Haskell 2010 extensions, mostly for ergonomics (things like OverloadedStrings are a good example of this), not to mention all the extensions that make mtl let you write "lift whatever" instead of "lift . lift . lift ..." and infer how "high" you want to go up the monad transformer stack.
https://downloads.haskell.org/~ghc/7.0.1/docs/html/users_gui...
Yogurt is usually churned into buttermilk: lassi, as it's called, is excellent, especially if you make the yogurt (dahi, or variations on that: in Bengali it's doi) at home: you take some milk, put a small amount of the yogurt you made the day before in it to "bootstrap" the culture, and off you go. But lassi going with every meal is, to my knowledge, a characteristically north Indian/Pakistani thing.
Mangoes (assuming you mean ripe ones, not green) are a summer thing, and you do find roadside stalls doing "mango lassi" as part of their lists (which are impressive for their length, in addition to being $deity-sends when preceded by a suitably exhausting experience on public transport). I have the feeling, though, that it's probably something one is more likely to find outside of India.
(I'm from Kolkata, btw. Thanks for the chance to go on this unintended happy-rant.)
because there aren't any around to blame it on you? :)