Моделирование космического мусора.
Клонируйте репозиторий:
git clone https://github.com/cmc-haskell-2017/demo-space-junk.git
cd demo-space-junk
Соберите проект при помощи утилиты Stack:
stack setup
stack build
Собрать проект и запустить игру можно при помощи команды
stack build && stack exec demo-space-junk
В качестве задания к лекции «Классы типов» требуется
определить законы, которым должен удовлетворять класс Physical.
Запишите законы в комментариях к классу в виде проверяемых свойств:
-- prop> \(object :: Asteroid) -> <выражение типа Bool, которое использует object>В качестве примера такой формулировки законов, посмотрите на формулировки для функции move:
-- prop> \(object :: Asteroid) -> move 0 object == object
-- prop> \(object :: Asteroid) -> move x (move y object) ~= move (x + y) objectЧтобы проверить выполнение записанных вами законов, запустите тесты:
stack test
Свойства из комментариев будут автоматически проверяться на сгенерированных случайных объектах!
Если свойство не выполняется, на экран будут выведены значения object и всех свободных переменных (например, x и y во втором свойстве функции move), которые привели к нарушению свойства.
