问:
我想从Haskell中的类型生成一个HTML表单。
Color = Green | Yellow | Red | ....
Fruit = Apple Color Int
| Banana Color Int String
| ....
字符串
用户应选择具有(“苹果”、“香蕉”)或(“绿色”、“黄色”、“红色”)选项的列表
问:
但是如何将Fruit
/Color
类型的ALL
值转换为HTML?类似于:
[ toHtml v <- Fruit.values() ]
-- render "Apple" to html
-- render "Banana" to html
型
预期:
<dropdown> : values :apple/banana...
<dropdown> : values of green/yellow...
<input text> : for Int
<input text> : for String(if Banana was selected
型
3条答案
按热度按时间m4pnthwp1#
Data
类在这里有帮助,例如字符串
要获得
Fruit
,其中数据构造函数也有字段,您必须更加努力,但所需的信息应该在DataType
数据类型中可用。3z6pesqy2#
不如这样吧:
字符串
这将产生输出:
型
我的
html
rust 得很厉害,希望这很近。更近了?
从Haskell的Angular 来看,棘手的部分是使用列表解析和
[Green ..]
的fromEnum
语法糖来获得Fruit
和Color
的组合。要使用范围语法,Fruit
和Color
必须是Enum
和Bounded
。这些类型类很容易派生。我省略了
Int
和String
元素,因为我仍然不理解这部分问题。5kgi1eie3#
我必须做几个假设来回答这个问题。起初我以为你在寻找
Fruit
的所有可能值,但显然这是不实际的,因为有无限多的Int
和String
的组合。我还假设你不是试图自动生成菜单,因为你没有提到获取Int
或String
的值。所以我假设用户正在生成一个水果记录列表,可能是一个农产品部分的库存。所以当你开始显示库存时,你已经创建了一个值列表。在这里,我创建了一个简短的值列表,并实现了一个列表转换,将它们转换为
Html
字符串。字符串
我希望这能回答你的问题。