Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当使用-F-pgmF调用Haskell自定义预处理器时,前两个参数之间的区别是什么?_Haskell_Ghc - Fatal编程技术网

当使用-F-pgmF调用Haskell自定义预处理器时,前两个参数之间的区别是什么?

当使用-F-pgmF调用Haskell自定义预处理器时,前两个参数之间的区别是什么?,haskell,ghc,Haskell,Ghc,发件人: 使用-pgmF cmd选择要用作预处理器的程序。什么时候 调用时,cmd预处理器上至少有三个参数 它的命令行:第一个参数是原始文件的名称 源文件,第二个是保存输入的文件的名称,以及 第三个是cmd应该在其中写入其输出的文件名 对 我试图编写一个示例预处理器,以了解传递给预处理器的三个参数之间的区别 我有以下两个文件: Main.hs {-#OPTIONS_GHC-F-pgmF preprocess.sh} 预处理.sh #/垃圾箱/垃圾箱 echo$1“-原始源文件” echo$2“

发件人:

使用-pgmF cmd选择要用作预处理器的程序。什么时候 调用时,cmd预处理器上至少有三个参数 它的命令行:第一个参数是原始文件的名称 源文件,第二个是保存输入的文件的名称,以及 第三个是cmd应该在其中写入其输出的文件名 对

我试图编写一个示例预处理器,以了解传递给预处理器的三个参数之间的区别

我有以下两个文件:

Main.hs

{-#OPTIONS_GHC-F-pgmF preprocess.sh}
预处理.sh

#/垃圾箱/垃圾箱
echo$1“-原始源文件”
echo$2“-保存输入的文件”
echo$3”--cmd应将其输出写入的文件
echo“{-#第1行\“$2\”#-}\n main=return()”>$3
当我使用
ghc
编译Haskell文件时,我得到以下输出:

Main.hs  -- the original source file
Main.hs  -- file holding the input
/tmp/ghc13496_0/ghc_1.hspp  -- the file where cmd should write its output to

前两个参数是否应该始终相同?在哪些情况下,它们可以有不同的值?

我打赌在堆叠预处理器时它们会有所不同。@Carl您能提供一个如何堆叠预处理器的示例吗?例如,启用
CPP
扩展。