gpt4 book ai didi

haskell - Haskell 中的多平台开发

转载 作者:行者123 更新时间:2023-12-02 15:46:33 25 4
gpt4 key购买 nike

我需要使程序的一些小块在不同平台上表现不同。看来GHC不太擅长交叉编译,所以我打算在Linux和Windows上编译相同的代码。

推荐的方法是什么?我是否必须编写一个模块的多个版本,或者可以将预处理器指令之类的东西放入我的代码中以有条件地编译一个或另一个代码块?

P.S.我使用 GHC 和 Cabal 进行管理。

最佳答案

GHC 支持 running your code through a C preprocessor 。这不是一个非常 Haskelly 的解决方案,但它是在必要时在实践中使用的。

编辑:Zeta 指出有一个针对每个文件的语言选项(我确实知道,但上面的链接中没有提到):

{-# LANGUAGE CPP #-}

对于 Cabal,您可以 use the extensions field 。引用一下,因为它提到了这个用例:

extensions: identifier list

A list of Haskell extensions used by every module. Extension names are the constructors of the Extension type. These determine corresponding compiler options. In particular, CPP specifies that Haskell source files are to be preprocessed with a C preprocessor.

Extensions used only by one module may be specified by placing a LANGUAGE pragma in the source file affected, e.g.:{-# LANGUAGE CPP, MultiParamTypeClasses #-}

关于haskell - Haskell 中的多平台开发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26511622/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com