Мне кажется, что вы пытаетесь написать правила Game of Life слишком прямо.
Я думаю, что-то вроде этого подойдет:
const nextGeneration = (col, count) => count == 3 || (col && count == 2)
Возвращает логическое значение, а не true
| null
. Это кажется мне чище, но если вы хотите ноль, просто добавьте || null
в конце.
Это не использует Рамда. Я не вижу причин делать это здесь (отказ от ответственности: я - автор Ramda). Но если бы вы захотели, я уверен, что мы могли бы превратить это в какую-то версию Ramda без очков, но она, вероятно, была бы намного менее читаемой.
Кстати, похоже, что-то не так с любой из ваших версий. Что должно означать 2 > count > 3
? Даже если бы это расширилось до 2 > count && count > 3
в JS, чего не происходит, это никогда не будет правдой, поскольку 2 <3. </p>