That is great feedback. I am actually working on creating a "functional" version of the 2048 game, along with my own implementation of the AI solver, as part of this series. Kinda goofy, and maybe not a "real world" situation as much, but should at least show the concepts being applied.
I also very much recommend this video by Brian Lonsdorf, titled "Hey Underscore, You're Doing It Wrong!:
It would also be helpful to have resources regarding the type notation that he uses. I imagine that the notation is the same regardless of the language you use to apply it, but I'm not in a position to be sure. E.g. http://learnyouahaskell.com/types-and-typeclasses
Yes he's borrowing the type notation from haskell to make his intentions clear, but of course this is only conceptual, and comments can be wrong - you'd need something like TypeScript to actually get feedback on types.
I also very much recommend this video by Brian Lonsdorf, titled "Hey Underscore, You're Doing It Wrong!:
https://www.youtube.com/watch?v=m3svKOdZijA