side (AttackInfo piece from victim to) =
remove victim (otherSide side) $
replace (from,piece) (to,piece) side board
attack _ _ MoveInfo {} = undefined
не позволяет обозначить тип в функции как AttackInfo ? почему - поскольку он не объявлен как отдельный тип на верхнем уровне ?
потому что AttackInfo — это не тип, а конструктор данных для типа MoveInfo
О как то есть при составлении типа через или все внутренние это не подтипы а конструкторы ? То есть никакой по сути структуры данных AttackInfo получается нет..
структура есть, но она не отдельный тип
система типов не отличает структуру MoveInfo{} и AttackInfo{} в данном случае
Обсуждают сегодня