возможно) https://medium.com/carwow-product-engineering/phantom-builder-pattern-in-elm-2fcb950a4e36
эти примеры и для хаскеля подойдут
напрямую нет, потому что в хаскеле нет вот этих row-типов которые являются чем-то вроде тайплевел мапы в этом примере но можно это сделать на списках с функцией удаления, которая будет ругаться если удалять нечего альтернативно сигнатуру можно написать и так withIcon :: String -> Button a -> Button (Remove CanHaveIcon a)
но вообще довольно бессмысленный пример какой-то, потому что для текста и цвета такая же проблема как для иконок, а если делать все то же самое для цвета и текста, то это ничем не отличается от просто заполнения рекорда со всеми полями
по идее да, но могут ещё быть всякие конструкторы с пред-заполненными полями
Вводят как будто линзы пытаются переизобрести
шрифт Fira Code?
Обсуждают сегодня