Diferencia entre hsc2hs y c2hs?

¿Cuál es la diferencia entre hsc2hs y c2hs?

Sé qué hsc2hs es un preprocesador, pero ¿qué hace exactamente?

Y c2hs puede hacer módulos Haskell a partir de código C, pero ¿necesito hsc2hs para esto?