Проблема, по-видимому, в вашей функции consecutive?
.Например, вызов
(straight? [[6 :S] [2 :C] [3 :H] [4 :S] [5 :S]])
возвращает false
, но не в том случае, если карты уже отсортированы.
(похоже, вы встроили небольшие модульные тесты в свой код и разместили их в комментарияхout, что замечательно. К сожалению, в ваших тестах на «истинный» стрит-стрит-флеш карты уже были отсортированы. Хорошо подумать о множестве случаев - например, один случайный, другой случайный, а другой обратный.)
В остальном, молодец!