Код на Haskell с Gloss lib не компилируется

Я переключился с C++ на Haskell и использую Gloss для создания игр. Я написал этот действительный код в main.hs:

import Graphics.Gloss.Interface.Pure.Game

events (EventKey (Char 'a') Down _ _) _ = RectangleWire 10 10
events _ x = x

main = play (InWindow "GameEvent" (700, 100) (10, 10))
    white
    100
    (Circle 10.0)
    id
    events
    (\_ world -> world)

Тогда команда ghc main.hs ответил:

[1 of 1] Compiling Main             ( main.hs, main.o )

main.hs:3:43: Not in scope: data constructor `RectangleWire'

Кажется, что некоторые функции отсутствуют в моей библиотеке Gloss, хотя у меня установлена ​​последняя версия. Например, этот код, "Game Event" из пакета gloss-examples, компилируется и отлично работает (очень красиво):

import Graphics.Gloss

-- | Display the last event received as text.
main
 = play (InWindow "GameEvent" (700, 100) (10, 10))
        white
        100
        ""
        (\str     -> Translate (-340) 0 $ Scale 0.1 0.1 $ Text str)
        (\event _ -> show event)
        (\_ world -> world)

1 ответ

Решение

Ваш код не компилируется, потому что конструктор данных, на который вы ссылаетесь, RectangleWire не входит в сферу. Ошибка указывает на это:

main.hs:3:43: Not in scope: data constructor `RectangleWire'

Сканируя документацию на Gloss, похоже, что вы ищете

rectangleWire :: Float -> Float -> PictureSource

Каркасный прямоугольник с центром в начале координат, с заданной шириной и высотой. Экспортируется из Graphics.Gloss.Data.Picture,

Другие вопросы по тегам