У меня есть следующее для тега шрифта HTML:
data Color = HexColor Int | RGBColor Int Int Int | ColorString String deriving Show
data FontAttribute = Size Int | Face String | FontColor Color deriving Show
data Font = Font [FontAttribute] deriving Show
Я строю так:
Font [Size 23,Face "Arial",Color (RGBColor 240 23 43)]
Меня беспокоит то, что конструктору данных/значений FontColor
, который имеет тип FontAttribute, требуется тип Color в качестве аргумента. Это означает, что Color является общим атрибутом типа для любого типа тега, а конкретный тег имеет определенное подмножество атрибутов (в данном случае Font имеет FontAttribute, который может быть Size, Face или FontColor). Есть ли более ясный способ выразить это, или моя реализация верна?
Font
, описываемые любым числом и комбинацией, илиFontAttribute
?Font [Face "Arial", Face "Impact"]
не кажется очень полезным... - person   schedule 11.03.2012FontColor Color
, есть ли более четкий способ выразить, что FontColor является цветом, а также FontAttribute. Я не уверен. - person Aram Kocharyan   schedule 12.03.2012