What You've Learned

In this chapter, we used our knowledge of functional programming to develop a board game with AI. Along the way you learned the following:

  • Functional programming techniques allow you to write a game program with a “rule engine” that is separate from the rest of the code. You accomplish this by using function pipelining and building a game tree that is independently traversed by other parts of your game code as the game progresses.

  • You can create an AI player for a two-player game using the minimax algorithm. This algorithm is based on the truism “What is good for my enemy is bad for me.” It allows you to efficiently rate positions in a two-player board game.

  • Lexical variables (which we’ve been calling local variables) can live on past the form in which they were created if they are referenced by a lambda expression. Capturing variables in this way is called creating a closure.

  • Functional programs can be optimized using memoization, which requires you to cache previous results calculated by a function.

  • You can also improve functional programs by using tail call optimizations, which allow you to make sure the call stack isn’t abused. You do this by controlling which function appears in the tail call (final) position of your list-eater functions.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
3.21.104.183