programar - Cómo escribir código independiente de la plataforma en Haskell(ghc)
instalar haskell en ubuntu (1)
Hay algunas bibliotecas específicas de plataforma en Hackage que me gustaría usar (por ejemplo, inotify, kqueue). Sin embargo, la documentación sobre cómo cambiar entre plataformas usando la compilación condicional parece un poco escasa. Estoy teniendo algunos problemas para encontrar los documentos relevantes ...
¿Qué definiciones de preprocesador puedo usar para cambiar entre plataformas?
¿Cómo puedo configurar mi archivo cabal para incluir / excluir inotify / kqueue en linux / osx respectivamente?
Espero que tenerlo documentado aquí también sea útil para otros, así que valga la pena mencionar otras plataformas comunes. Es tonto buscar estas cosas por todo el lugar.
Eche un vistazo a los indicadores
os_HOST_OS
en combinación con la opción de preprocesador de C-cpp
(o utilizando{-# LANGUAGE CPP #-}
) como se indica en la documentación de GHCAgregue
extensions: CPP
a la descripción de su paquete como se muestra en la documentación de Cabal y defina una bandera personalizada como esta:if os(linux) cpp-options: -DINOTIFY if os(darwin) cpp-options: -DKQUEUE
Luego puedes usar #ifdef
en tu fuente.