Haskell:数据/类型构造函数不在范围内,但数据构造函数在范围内

疯狂的
module Main where

import           Graphics.Rendering.OpenGL

data Shaders = Shaders {  vertexShader   :: VertexShader
                    , fragmentShader :: FragmentShader
                    , program'       :: Program
                    , positionA      :: AttribLocation }

data Resources = Resources {  vertexBuffer  :: BufferObject
                        , elementBuffer :: BufferObject
                        , shaders       :: Shaders
                        , fadeFactor    :: GLfloat }


main :: IO ()
main = do
  putStrLn "test"

这是ghci输出:

[1 of 1] Compiling Main             ( /home/madjestic/Projects/Haskell/OpenGL/triangle_02/Main_test.hs, interpreted )

/home/madjestic/Projects/Haskell/OpenGL/triangle_02/Main_test.hs:11:45:
    Not in scope: type constructor or class `VertexShader'
    A data constructor of that name is in scope; did you mean -XDataKinds?

/home/madjestic/Projects/Haskell/OpenGL/triangle_02/Main_test.hs:12:45:
    Not in scope: type constructor or class `FragmentShader'
    A data constructor of that name is in scope; did you mean -XDataKinds?
Failed, modules loaded: none.

该错误指出类型或类构造函数不在范围内,但同时说“该名称的数据构造函数在范围内……”,但建议使用DataKinds,我不理解为什么我需要一个-在没有DataKinds扩展名的情况下,相同的代码可以在我的旧版Linux机器上编译正常,但是在新环境中似乎不起作用。我现在主要依靠portage库,而旧环境更多地依赖cabal库,我想知道这是否引起了差异?这里有什么问题?数据类型构造函数位于被导入的Graphics.Rendering.OpenGL中-为什么ghc在这里不能使用它?

shang

OpenGL库着色器API在2.8.0.0版和2.9.0.0版之间进行了更改。例如,旧版本使用单独的类型VertexShaderFragmentShader新版本仅使用简单Shader类型来存储两个程序。

你可以

  1. 更新您的程序以使用新的API
  2. 使用以下命令全局安装较早版本的OpenGL: cabal install OpenGL-2.8.0.0
  3. 为您的项目编写一个.cabal文件(如果还没有的话),并在依赖项中指定OpenGL版本为 < 2.9.0.0

如果要从操作系统的程序包管理器而不是cabal获取库依赖关系,那么您就只能使用选项1。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

数据构造函数不在范围内

来自分类Dev

Haskell错误不在范围内:数据构造函数

来自分类Dev

Haskell树:数据构造函数不在范围内

来自分类Dev

Haskell错误不在范围内:数据构造函数

来自分类Dev

Haskell:makeLenses - 数据构造函数不在范围内

来自分类Dev

不在范围内:数据构造器“ Song”-Haskell

来自分类Dev

用户定义类型的Show的Haskell实例-构造函数不在范围内

来自分类Dev

成功导入数据构造器不在范围内吗?

来自分类Dev

不在范围内:数据构造器“运动”

来自分类Dev

Yesod不在范围内:类型构造函数或类Form错误

来自分类Dev

生成自定义数据类型的随机列表,其中提供给数据构造函数的值以某种方式限制在范围内

来自分类Dev

不在范围内:键入构造函数或类“-”(以及反转列表时的其他错误)

来自分类Dev

不在Haskell范围内

来自分类Dev

从全局范围内的另一个函数调用函数构造函数的方法-Javascript

来自分类Dev

在范围内时通过回调函数传递数据

来自分类Dev

在两个函数范围内拟合数据

来自分类Dev

不在范围内:<*>

来自分类Dev

不在范围内

来自分类Dev

Haskell变量不在范围内

来自分类Dev

Haskell导入错误:不在范围内

来自分类Dev

Haskell:不在范围内:'listDirectory'

来自分类Dev

Haskell:变量不在范围内吗?

来自分类Dev

Haskell变量不在范围内

来自分类Dev

Haskell - 不在范围内:类 Gen

来自分类Dev

导入Prelude函数,doctest说“不在范围内”

来自分类Dev

C指向函数调用的指针不在范围内

来自分类Dev

类中的条件语句,但不在函数范围内

来自分类Dev

cpp函数调用中的“不在此范围内”错误

来自分类Dev

类变量不在类函数的范围内

Related 相关文章

热门标签

归档