在程序范围中包含其他文件

til*_*ois 4 haskell cabal leksah

我正试图进入haskell世界的第一步,为此我选择使用leksah IDE.但是我不确定这是否真的具有特定的leksah,但猜测它可能更像是一个阴谋/构建问题.

现在我正在尝试解决99个Haskell问题,为此我打开了一个新工作区并创建了一个新包.这使我基本上像以下目录结构:

dist/
  +--- (here be dragons... a lot of hopefully unrelated files)
scr/
  +--- Main.hs
  +--- 01_lists.hs   (<- now that's what I want)
99problems.cabal
Setup.lhs
Run Code Online (Sandbox Code Playgroud)

我的Main.hs文件如下所示:

module Main ( main ) where
main = putStrLn (show (myLast [1,2,3]) )
Run Code Online (Sandbox Code Playgroud)

这归咎于我,那Not in scope: myLast.我可以通过在定义上面编写定义解决这个问题,main = putStrLn ...但我想要的是将它拆分成不同的文件并将文件包含到我的作用域中.

这是怎么做到的?

猜猜它与caballeksah正在使用的东西有关,我必须以某种方式包含它,就像我:load 01_lists.hs在REPL中所做的那样.我已经在leksah中添加了文件,Package -> Extra Files但仅此一点没有成功.

我的环境是:

  • Fedora 20
  • Haskell-platform 2013.2.0.0就是这样
    • leksah 0.12.1.3
    • cabal 1.16.0.2(这是没有cabal repl来自Cabal 1.18的命令,很可能对我有帮助)

我倾向于认为这是一个简单的配置问题.有人愿意帮我借这个吗?

Mih*_*eac 5

让你01_lists.hs成为Euler01.hs并开始module Euler01.然后Main.hs,在顶部添加import Euler01

  • 对,对不起.模块必须以大写字母开头,并且应该位于具有相同名称的文件中,这就是我建议重命名的原因. (2认同)