2013-03-08 6 views
3

OpenGL 튜토리얼을 사용하려고합니다. 나는이 "세척" "분명히", "ColorBuffer"와하스켈 OpenGl 및 GLUT 모호한 발생

Hello_World.hs:8:19: 
    Ambiguous occurrence `$=' 
    It could refer to either `Graphics.Rendering.OpenGL.$=', 
          imported from `Graphics.Rendering.OpenGL' at Hello_World.hs:1:1-32 
          (and originally defined in `Data.StateVar') 
          or `Graphics.UI.GLUT.$=', 
          imported from `Graphics.UI.GLUT' at Hello_World.hs:2:1-23 
          (and originally defined in `OpenGL-2.2.3.1:Graphics.Rendering.OpenGL.GL.StateVar') 

이 코드가 작동 된 반복되는 다음, 하스켈 플랫폼과에서라도이

import Graphics.Rendering.OpenGL 
import Graphics.UI.GLUT 

main :: IO() 
main = do 
    (progname, _) <- getArgsAndInitialize 
    createWindow "Hello World" 
    displayCallback $= display 

display :: IO() 
display = do 
    clear [ ColorBuffer ] 
    flush 

이 내가 점점 오전 오류가 설치 실행하고 전에, 그 후 나는 cabal install과 homebrew를 통해 패키지를 설치했다.

내가 여기에 패키지 할 수있는 뭔가가 있다고 생각하기 때문에

Cabal-1.14.0 
    GLUT-2.1.2.1 
    HTTP-4000.2.5 
    HUnit-1.2.5.1 
    OpenGL-2.2.3.1 
    QuickCheck-2.5.1.1 
    array-0.4.0.0 
    async-2.0.1.3 
    base-4.5.1.0 
    bin-package-db-0.0.0.0 
    binary-0.5.1.0 
    bytestring-0.9.2.1 
    cgi-3001.1.7.4 
    containers-0.4.2.1 
    deepseq-1.3.0.0 
    directory-1.1.0.2 
    extensible-exceptions-0.1.1.4 
    fgl-5.4.2.4 
    filepath-1.3.0.0 
    ghc-7.4.2 
    ghc-prim-0.2.0.0 
    haskell-platform-2012.4.0.0 
    haskell-src-1.0.1.5 
    haskell2010-1.1.0.1 
    haskell98-2.0.0.1 
    hoopl-3.8.7.3 
    hpc-0.5.1.1 
    html-1.0.1.2 
    integer-gmp-0.4.0.0 
    mtl-2.1.2 
    network-2.3.1.0 
    old-locale-1.0.0.4 
    old-time-1.1.0.0 
    parallel-3.2.0.3 
    parsec-3.1.3 
    pretty-1.1.1.0 
    primitive-0.5.0.1 
    process-1.1.0.1 
    random-1.0.1.1 
    regex-base-0.93.2 
    regex-compat-0.95.1 
    regex-posix-0.95.2 
    rts-1.0 
    split-0.2.1.1 
    stm-2.4 
    syb-0.3.7 
    template-haskell-2.7.0.0 
    text-0.11.2.3 
    time-1.4 
    transformers-0.3.0.0 
    unix-2.5.1.1 
    vector-0.10.0.1 
    xhtml-3000.2.1 
    zlib-0.5.4.0 
/Users/james/.ghc/x86_64-darwin-7.4.2/package.conf.d 
    Cabal-1.16.0.3 
    GLURaw-1.3.0.0 
    ObjectName-1.0.0.0 
    OpenGL-2.6.0.1 
    OpenGLRaw-1.3.0.0 
    StateVar-1.0.0.0 
    Tensor-1.0.0.1 
    aeson-0.6.1.0 
    ansi-terminal-0.6 
    ansi-wl-pprint-0.6.6 
    attoparsec-0.10.4.0 
    blaze-builder-0.3.1.0 
    blaze-html-0.5.1.3 
    blaze-markup-0.5.1.4 
    cairo-0.12.4 
    cpphs-1.16 
    data-default-0.5.0 
    dlist-0.5 
    fay-0.14.1.0 
    fay-base-0.14.1.0 
    ghc-paths-0.1.0.9 
    gio-0.12.4 
    glib-0.12.4 
    gtk-0.12.4 
    hashable-1.2.0.5 
    haskeline-0.7.0.3 
    haskell-lexer-1.0 
    haskell-src-exts-1.13.5 
    hostname-1.0 
    language-ecmascript-0.10 
    language-haskell-extract-0.2.4 
    optparse-applicative-0.5.2.1 
    pango-0.12.4 
    pretty-show-1.5 
    safe-0.3.3 
    terminfo-0.3.2.5 
    test-framework-0.8 
    test-framework-hunit-0.3.0 
    test-framework-th-0.2.4 
    uniplate-1.6.10 
    unordered-containers-0.2.3.0 
    utf8-string-0.3.7 
    xml-1.3.12 

답변

2

당신은이 두 가지를 가져온 (도움이 될 수 있습니다 단지 추가 정보 블록에 대한 미안) "GHC-PKG 목록"입니다 모듈

import Graphics.Rendering.OpenGL 
import Graphics.UI.GLUT 

각각은 ($=)이라는 함수를 내 보냅니다. 당신은 당신이 사용하고자하는 것을 알아 내야하고, 아마도 그것들 중 하나를 숨길 것입니다.

import Graphics.Rendering.OpenGL hiding (($=)) 

또는 qualified 이러한 라이브러리 중 하나 또는 둘 모두를 사용하십시오.

+0

이 문제는 아마도 붕대가 될 것입니다. 프로그램을 크게 만들면 큰 목록이됩니다. 편집 : 나는 그것을 시도, 컴파일하지만 실행되지 않습니다, 오류가 주어집니다. – Lazydancer

2

두 가지 문제가있었습니다. 나는 이미 OpenGL을 설치했기 때문에 에러가 발생했다고 생각한다. 두번째는 "mainLoop"코드가 빠져서 프로그램이 정말 빨리 멈출 것이기 때문이다. 방금 haskell 플랫폼을 다시 설치했습니다.

고맙습니다.