<div dir="ltr">Hello all,<br><br>I&#39;m trying to use CPP-defined strings in a Haskell module, like this:<br><br>&nbsp;&nbsp; main :: IO ()<br>&nbsp;&nbsp; main = putStrLn FOO<br><br>This of course will not work:<br><br>
&nbsp;&nbsp; ghc -DFOO=&quot;hello world&quot; --make Main.hs -o test<br>
<br>You&#39;ll get this error message:<br><br>&nbsp;&nbsp; ./Main.hs:6:16: Not in scope: `hello&#39;<br>
&nbsp;&nbsp; ./Main.hs:6:22: Not in scope: `world&#39;<br>
<br>Either of these will do what I want:<br><br>&nbsp;&nbsp; ghc -DFOO=&quot;\&quot;hello world\&quot;&quot; --make Main.hs -o test<br><br>&nbsp;&nbsp; ghc -DFOO=&#39;&quot;hello world&quot;&#39; --make Main.hs -o test&nbsp; # (that&#39;s double quotes inside single quotes)<br>
<br>However, passing the same CPP definition via cabal does not work.<br><br>&nbsp;&nbsp; runhaskell Setup.hs build --ghc-options=-DFOO=&quot;\&quot;hello world\&quot;&quot;<br><br>&nbsp;&nbsp; runhaskell Setup.hs build --ghc-options=-DFOO=&#39;&quot;hello world&quot;&#39;<br>

<br>With either of these commands, I get the same error message as above.&nbsp; This is understandable, since cabal has to evaluate the string before sending it to GHC, so I lose my escaped quotes.<br><br>Any idea how I could change the Haskell module or the command line argument so that I get what I want?&nbsp; I&#39;ve tried many combinations of quotes and escaped quotes with no luck.<br>
<br>Thanks,<br>- Phil<br><br></div>