如何在Haskell中列出sum类型的所有值

问题描述 投票:0回答:1

问题:

我想从 Haskell 中的类型生成 HTML 表单。

Color = Green | Yellow | Red

Fruit = Apple Color Int
      | Banana Color Int String

用户应选择一个下拉列表,其中包含(“Apple”,“Banana”)或(“Green”,“Yellow”,“Red”)选项

问题:

但是如何将

ALL
/
Fruit
类型的
Color
值获取到 HTML 呢?像这样的东西:

[ toHtml v <-  Fruit.values() ]
-- render "Apple" to html
-- render "Banana" to html
haskell algebraic-data-types
1个回答
0
投票

Data
类在这里有帮助,例如

data Color = Green | Yellow | Red deriving Data

colorStrings :: [String]
colorStrings = map show $ dataTypeConstrs (dataTypeOf Green :: DataType)

要让

Fruit
工作(也有字段),您必须更加努力,但所需的信息应该在
DataType
数据类型中可用。

© www.soinside.com 2019 - 2024. All rights reserved.