
Sorry this should have been sent to the list.
---------- Forwarded message ----------
From: David McBride
David McBride
writes: Sorry that should have been command, not command_ which is very different.
On Sat, Jul 8, 2017 at 7:37 AM, David McBride
wrote: The easy option is to just use command instead of cmd. Variadic functions are always a little weird to type check.
command_ [] "pkg-config" ["glib-2.0","--cflags"]
That will *probably* solve the ambiguity in both lines, but I haven't tested.
Thank you for your replies.
This is what I have now:
"objects//*.o" %> \out -> do let c = dropDirectory1 $ out -<.> "cxx" let m = out -<.> "m" let i = command [] "pkg-config" ["glib-2.0","--cflags"] () <- cmd "c++ -c" [c] "-o" [out] "-MMD -MF" [m] [i] needMakefileDependencies m
That produces:
Build.hs:29:17: error: * Ambiguous type variable `r0' arising from a use of `command' prevents the constraint `(CmdResult r0)' from being solved. Relevant bindings include i :: Action r0 (bound at Build.hs:29:13) Probable fix: use a type annotation to specify what `r0' should be. These potential instances exist: instance CmdResult CmdLine -- Defined in `Development.Shake.Command' instance CmdResult CmdTime -- Defined in `Development.Shake.Command' instance CmdResult Exit -- Defined in `Development.Shake.Command' ...plus 9 others ...plus two instances involving out-of-scope types (use -fprint-potential-instances to see them all) * In the expression: command [] "pkg-config" ["glib-2.0", "--cflags"] In an equation for `i': i = command [] "pkg-config" ["glib-2.0", "--cflags"] In the expression: do { let c = dropDirectory1 $ out -<.> "cxx"; let m = out -<.> "m"; let i = command ... "pkg-config" ...; () <- cmd "c++ -c" [c] "-o" [out] "-MMD -MF" [m] [i]; .... }
Build.hs:30:15: error: * No instance for (Development.Shake.Command.Arg [Action r0]) arising from a use of `cmd' * In a stmt of a 'do' block: () <- cmd "c++ -c" [c] "-o" [out] "-MMD -MF" [m] [i] In the expression: do { let c = dropDirectory1 $ out -<.> "cxx"; let m = out -<.> "m"; let i = command ... "pkg-config" ...; () <- cmd "c++ -c" [c] "-o" [out] "-MMD -MF" [m] [i]; .... } In the second argument of `(%>)', namely `\ out -> do { let ...; let ...; .... }'
Thanks again, Roger