不在范围内:类型构造函数或类

时间:2017-04-11 11:37:27

标签: haskell

我有一个游戏的Haskell代码,可以找到完整的here

以下是BoardMain.hs

{-# Language MultiParamTypeClasses, FunctionalDependencies #-}

import Control.Monad.Trans (liftIO)
import Graphics.UI.Gtk
import Graphics.UI.Gtk.Layout.BackgroundContainer
import Graphics.UI.Gtk.Board.BoardLink
import GtkPegSolitaire


attemptDragStart :: Board Int Tile Peg -> (Int, Int) ->  IO Bool
attemptDragStart _ _ = return True

当我运行时,我收到以下错误

 BoardMain.hs:39:21: error:
    Not in scope: type constructor or class ‘Board’

BoardMain.hs:39:31: error:
    Not in scope: type constructor or class ‘Tile’

BoardMain.hs:39:36: error:
    Not in scope: type constructor or class ‘Peg’

我知道我犯了一个小错误。任何帮助表示赞赏。

可以找到{p> GtkPegSolitaire.hsPegSolitaire.hs here

2 个答案:

答案 0 :(得分:2)

如上所述duplode,我忘了导入一些模块。 那么,所有应该做的就是将以下4行添加到BoardMain.hs

import PegSolitaire
import Graphics.UI.Gtk.Board.TiledBoard
import Data.Maybe
import Control.Monad

GtkPegSolitaire.hsPegSolitaire.hs是正确的。 此游戏的author已收到此问题的通知。 感谢duplode帮助我们。

答案 1 :(得分:1)

您的类型的定义位于PegSolitaire,但您不会在主模块中导入它。在那里,您只导入了GtkPegSolitaire和一些库模块。导入不可传递,因此您需要将import PegSolitaire添加到主模块。 (如果导入是可传递的,那么对于一个,库编写者就不可能将模块隐藏在公共API之外。)