Combinatory Chemistry [0] is a great paper that is referenced. Using Combinatory Logic feels a lot cleaner than brainfuck IMO.<p>[0] <a href="https://arxiv.org/abs/2003.07916" rel="nofollow">https://arxiv.org/abs/2003.07916</a>
Brainfuck is a useful language for evolutionary programming because it is Turing complete, it has few instructions, the interpreter is easy to implement, and a mutation operator is also easy to implement.<p>There are different ways to deal with bounds checking when moving the tape: saturation, wrapping and invalidation. I often chose to invalidate a program that crosses bounds, as it usually generates a cleaner program that is more compatible with other interpreters as well.<p>In the paper the part that's interesting is that there was no explicit fitness functions. The higher fitness emerges in the form of the replicator. <a href="https://www.youtube.com/watch?v=eOHGBuZCswA" rel="nofollow">https://www.youtube.com/watch?v=eOHGBuZCswA</a>