Escurre los frijoles remojados, colócalos en una olla con el agua y cuécelos a fuego medio durante 60 a 75 minutos, hasta que estén completamente tiernos y se puedan aplastar con facilidad.
Mientras se cocinan los frijoles, hierve la batata en agua aparte durante 15 a 20 minutos, hasta que un tenedor entre sin resistencia. Escúrrela bien.
Licúa los frijoles cocidos con aproximadamente 500 ml de su líquido de cocción hasta obtener una crema uniforme. Cuela el puré para retirar pieles y fibras.
Vierte el puré colado en una olla limpia y añade la batata cocida, la leche de coco, la leche evaporada, el azúcar, la canela, los clavos y la sal. Tritura con una batidora de inmersión o licúa por tandas hasta que la batata quede integrada.
Cocina la mezcla a fuego bajo durante 25 a 30 minutos, removiendo con frecuencia, hasta que cubra la parte posterior de una cuchara y caiga lentamente. Evita el hervor fuerte para que la leche no se pegue ni se corte.
Retira las ramas de canela y los clavos, incorpora la vainilla y las pasas, y cocina 5 minutos más. Prueba y ajusta el azúcar o la sal si hace falta.
Deja reposar 15 minutos, sirve tibias o refrigera durante al menos 4 horas. Acompaña con galletas de leche al momento de servir.