Size: a a a

2018 April 03

AV

Alexander Vershilov in fprog_spb
скорее всего тут ошибки, в асбтракциях и то, где что находится придётся потасовать пока пишешь код
источник

AV

Alexander Vershilov in fprog_spb
изивиняюсь, что сходу не могу выдать полное решение, это мне придётся 1/6 игры реализовывать
источник

n

neFormal in fprog_spb
ну, по данным у меня такое же получилось
но тут нет реюза кода. непонятно, как оно будет осуществляться
источник

AV

Alexander Vershilov in fprog_spb
у меня было примерно так
fire (Player angle) (MachineGun) =
 let [b] = fire (Player angle Pistol)
 in [step i b | i <- [1..3]]
fire p (Modified (ModAmplifier d) v) = increaseDamage d <$> fire p v
источник

AV

Alexander Vershilov in fprog_spb
автомат это такой пистолет который выстреливает 3 патрона, amplifier увеличивает дамаг чего бы то ни было
источник

AV

Alexander Vershilov in fprog_spb
а tripple делает из патрона 3 развернутые в разные стороны
источник

AV

Alexander Vershilov in fprog_spb
но тут есть проблемы, если я захочу сделать патрон летающий по синусоиде, то мне придётся вводить новый мод, с каким-то состоянием
источник

AV

Alexander Vershilov in fprog_spb
тогда вместо приятного World [Object] Player, мне придётся делать стейт машины вместо объектов, наверное
источник

AV

Alexander Vershilov in fprog_spb
про ООП в haskell есть прикольная статья http://www.well-typed.com/blog/2018/03/oop-in-haskell/
источник

AV

Alexander Vershilov in fprog_spb
как объекты через fixed point делаются и как сделать overloading и абстрактные методы
источник

AV

Alexander Vershilov in fprog_spb
(с другой стороны это ещё и Пирса было, но тут модно и с линзами, и для haskell а не в целом)
источник

AV

Alexander Vershilov in fprog_spb
Rigidus кстати этой статье тоже есть про evaluation генерация того, как код выполняется, примерно как в stgi но на уровень выше, может там написано что за пакет
источник

AV

Alexander Vershilov in fprog_spb
@ne_formal вообще интересная задачка, я бы наверное даже хотел сесть и полностью написать решение, но жалко времени, т.е. я там не вижу больших проблем с т.з. наличия отсуствия типизации
источник

AV

Alexander Vershilov in fprog_spb
с другой стороны всякие HList и т.п. в статьях про ОО-Haskell появились именно в таком контексте
источник

n

neFormal in fprog_spb
если игнорить проблемы реюза и доступа к данным, то всё просто. но жёпа именно в этом
источник

n

neFormal in fprog_spb
если думать вокруг композиции, то можно было бы на этапе объявления типа указывать, какие части хочешь использовать.
и тут получаются либо очень мелкие ECS-компоненты, либо что-то похожее
источник

n

neFormal in fprog_spb
это вроде приводит к тому, что логика каждой ф-ции может частично или полностью определяться в типе.
мне так что-то показалось
источник

AV

Alexander Vershilov in fprog_spb
мне кстати тяжело, т.к. я не представляю конкретные примеры оружий и т.п. и как следствие реюза, в тех структурах что выше пока все складывается
источник

AV

Alexander Vershilov in fprog_spb
но я наверняка какой-то аспект упускаю
источник

AV

Alexander Vershilov in fprog_spb
вариант с HList для полей и констрейнта вида (Has "damage" x, Has "graphics " x) => x вполне работает
источник