usar programar instalar compilador como haskell platform-independent platform-specific

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 ...

  1. ¿Qué definiciones de preprocesador puedo usar para cambiar entre plataformas?

  2. ¿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.


  1. 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 GHC

  2. Agregue 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.