Haskell Stack+;阴谋集团无视';主要是';选项,无法生成应用程序

Haskell Stack+;阴谋集团无视';主要是';选项,无法生成应用程序,haskell,cabal,haskell-stack,Haskell,Cabal,Haskell Stack,Q:如何调整cabal(stack?)设置,使app/LogAnalysis.hs最终被视为主日志? 下面是我如何得到这个错误的: 使用堆栈新xyz创建新项目 将app/Main.hs重命名为app/LogAnalysis.hs 调整后的main是xyz.cabal文件中的选项 问题是我输入的数据不正确,或者阴谋集团忽略了这个新值。以下是我得到的错误信息: Preprocessing executable 'WeekTwo-exe' for WeekTwo-0.1.0.0... <n

Q:如何调整cabal(stack?)设置,使
app/LogAnalysis.hs
最终被视为主日志?

下面是我如何得到这个错误的:

  • 使用
    堆栈新xyz创建新项目
  • app/Main.hs
    重命名为
    app/LogAnalysis.hs
  • 调整后的
    main是
    xyz.cabal
    文件中的
    选项
问题是我输入的数据不正确,或者阴谋集团忽略了这个新值。以下是我得到的错误信息:

Preprocessing executable 'WeekTwo-exe' for WeekTwo-0.1.0.0...

<no location info>: error:
    output was redirected with -o, but no output will be generated
because there is no Main module.
所讨论的模块是:

module LogAnalysis where
import Log

main :: IO ()
main = print (parseMessage "I 29 la la")
版本: 堆栈-版本1.3.2 GHC-7.15 阴谋集团-1.24.0.0


PS如果有兴趣,我将在Haskel课程CIS 194的第二周学习。

您是否可以将
模块主位置
更改为
模块日志分析位置
?如果你这样做了,你会得到这个错误


Main是
只是说检查此文件中的
Main
模块,但它必须仍然是
Main
模块,而不是
LogAnalysis
模块。这表明应该运行此文件中的主函数,而不是某些其他模块中可能存在的某些主函数。

GHC要求需要main
main::IO()
的模块命名为
main
。模块通常必须具有与模块名称相对应的文件路径。你必须再次将
LogAnalysis.hs
重命名为
Main.hs
。难道
Main
不应该覆盖这个吗?我认为
Main是
在有几个模块的情况下只能指向右边的
Main
模块。当我创建/重命名/调整您的模块时,这个项目对我有效。。。。然后
stack exec xyz exe
为我工作,打印“somefunc”。当您得到错误时,您正在运行什么命令?堆栈构建-查看已接受的答案。我误解了
main的意思是
,并认为它会让ghc查看不同的模块,而实际上它只告诉ghc在不同的文件中查找模块
main
,然后
main.hs
。您可以。您只需要告诉GHC您的主模块的名称。您可以在您的阴谋集团文件中使用:
ghc选项:-main is LogAnalysis
module LogAnalysis where
import Log

main :: IO ()
main = print (parseMessage "I 29 la la")