Functional programming 需要帮助建模调色板类型吗
我正试图按照本文中的指导方针在Elm中创建一个调色板类型。我的第一个想法是:Functional programming 需要帮助建模调色板类型吗,functional-programming,elm,Functional Programming,Elm,我正试图按照本文中的指导方针在Elm中创建一个调色板类型。我的第一个想法是: type alias Palette = List Color 但这也有缺点。调色板是一个颜色列表,但它也必须有两种颜色,一种用于背景,一种用于前景 我的第二次尝试是创建一个记录类型: type alias Palette = { bg : Color , fg : List Color } 这样更好,但如何确保fg字段是至少包含一个元素的列表 关于如何从功能和功能上思考,有什么提示吗 谢谢 如果我正
type alias Palette = List Color
但这也有缺点。调色板是一个颜色列表,但它也必须有两种颜色,一种用于背景,一种用于前景
我的第二次尝试是创建一个记录类型:
type alias Palette =
{ bg : Color
, fg : List Color
}
这样更好,但如何确保fg
字段是至少包含一个元素的列表
关于如何从功能和功能上思考,有什么提示吗
谢谢 如果我正确理解了您的问题,那么您正在寻找表示至少包含一个元素的列表的数据类型。您可以使用以下内容定义自己的此类列表:
type NonEmptyList a=ListItem a(NonEmptyList a)| RootItem a
为了简化操作,您可以定义一些辅助函数,以便在普通Elm列表中进行转换:
toList:nonemptylista->List a
收费表=
病人名单
根项目x->[x]
ListItem x rest->x::toList rest
fromList:List a->Maybe(非空列表a)
fromList列表=
病人名单
[]->什么都没有
[x] ->仅(根项目x)
(x::xs)->maybay.map(列表项x)