Почему в стандартной библиотеке нет решеток и полурешеток?
Моё личное понимание, что в мире алгебраических структур есть вещи, которые хорошо ложатся на беззавтипное программирование, а есть те, что не очень.
Вещь, которая немного мешает хорошо лечь - это некоторые законы, которые слишком легко не соблюсти.
Например, ассоциативность мы не можем явно потребовать от имплементации, но легко можем структурно её достигнуть.
Свободные моноиды\полугруппы\монады\аппликативы легко получаются, если структуру "нормализовать" в какую-то сторону вдоль равенства в законе.
Так мы получаем списки, и монады, с длинным хвостом "справа".
С коммутативностью так уже не получается, поэтому хотя коммутативные структуры хотя и встречаются в виде Map\Set, но абтракции никто для них не делал, потому что рассуждать в рамках коммутативности сложновато, и она всегда получается зависит от сильных свойств ещё каких-то инстансов. Например, гарантии, что равные вещи неразличимы в инстансе Eq внутри Ord.
Примерно так же получается и с идемпотентностью в решётке, абстракция то сильная, но хорошо использовать её силу, следить за корректностью и конструировать автоматически в рамках языка без завтипов (а то и квошент типов) сложно