2
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的輸出:Haskell中:數據/類型構造器在範圍上,而是一個數據構造是在範圍
[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,我不明白爲什麼我需要它 - 在我的舊版Linux上編譯相同的代碼盒,沒有DataKinds擴展名,但它似乎不適用於新環境。我現在主要依賴portage庫,而舊環境更依賴cabal庫,我想知道這是否會導致差異?這裏有什麼問題?數據類型構造函數存在於正在導入的Graphics.Rendering.OpenGL中 - ghc如何在這裏不能使用它?
檢查你使用的庫的版本。這兩個系統之間可能會有一些API變化。 – Satvik