<div dir="rtl"><div dir="ltr">Hello cafe,</div><div dir="ltr"><br></div><div dir="ltr">I have a custom data type:</div><div dir="ltr"><font face="monospace">data Foo = Foo | Bar | Baz</font></div><div dir="ltr"><font face="monospace">    deriving (Show, Bounded, Enum)</font></div><div dir="ltr">In my yesod app I need to have two forms, one that get two Foo and a second that recieve three Foo. From What I've seen online I need to create two new data types:</div><div dir="ltr"><font face="monospace">data Foo2 = { foo1 :: Foo, foo2 :: Foo }</font></div><div dir="ltr"><font face="monospace">data Foo3 = { foo1 :: Foo, foo2 :: Foo, foo3 :: Foo }</font></div><div dir="ltr"><br class="inbox-inbox-Apple-interchange-newline">This is tedious and very much ad-hoc. In my actual app it goes up to Foo6 :( Is there a better way to do it?</div><div dir="ltr"><br></div><div dir="ltr">This is how I defined the forms: <font face="monospace"><br></font></div><div dir="ltr"><div dir="ltr" style="font-family:monospace">foo2AForm :: AForm Handler Foo2</div><div dir="ltr" style="font-family:monospace">foo2AForm = Foo2</div><div dir="ltr" style="font-family:monospace">    <$> areq (selectFieldList foos) "foo1" Nothing</div><div dir="ltr" style="font-family:monospace">    <*> areq (selectFieldList foos) "foo2" Nothing</div><div dir="ltr" style="font-family:monospace">  where</div><div dir="ltr" style="font-family:monospace">    foos:: [(Text, Role)]</div><div dir="ltr" style="font-family:monospace">    foos= map (pack . show &&& id) [minBound..]</div><div dir="ltr" style="font-family:monospace"><br></div><div dir="ltr" style="font-family:monospace">foo2Form :: Html -> MForm Handler (FormResult Foo2, Widget)</div><div dir="ltr" style="font-family:monospace">foo2Form = renderTable teamAForm</div><div dir="ltr" style="font-family:monospace"><br></div><div dir="ltr"><div dir="ltr" style="font-family:monospace"><span class="inbox-inbox-gr_ inbox-inbox-gr_1177 inbox-inbox-gr-alert inbox-inbox-gr_gramm inbox-inbox-gr_inline_cards inbox-inbox-gr_run_anim inbox-inbox-Style inbox-inbox-multiReplace" id="inbox-inbox-1177" style="display:inline;border-bottom:2px solid transparent;background-repeat:no-repeat;background-image:url("");color:inherit;font-size:inherit">foo3AForm :</span>: AForm Handler Foo3</div><div dir="ltr" style="font-family:monospace"><span class="inbox-inbox-gr_ inbox-inbox-gr_1178 inbox-inbox-gr-alert inbox-inbox-gr_spell inbox-inbox-gr_inline_cards inbox-inbox-gr_run_anim inbox-inbox-ContextualSpelling inbox-inbox-ins-del inbox-inbox-multiReplace" id="inbox-inbox-1178" style="display:inline;border-bottom:2px solid transparent;background-repeat:no-repeat;background-image:url("");color:inherit;font-size:inherit">foo3AForm</span> = Foo3</div><div dir="ltr" style="font-family:monospace">    <$> areq (selectFieldList foos) "foo1" Nothing</div><font face="monospace">    <*> areq (selectFieldList foos) "foo2" Nothing</font><br class="inbox-inbox-Apple-interchange-newline"><font face="monospace">    <*> areq (selectFieldList foos) "foo3" Nothing</font><div dir="ltr" style="font-family:monospace">  where</div><div dir="ltr" style="font-family:monospace">    foos:: [(Text, Role)]</div><div dir="ltr" style="font-family:monospace">    foos= map (pack . show &&& id) [minBound..]</div><div dir="ltr" style="font-family:monospace"><br></div><div dir="ltr" style="font-family:monospace">foo3Form :: Html -> MForm Handler (FormResult Foo2, Widget)</div><div dir="ltr" style="font-family:monospace">foo3Form = renderTable teamAForm</div><div dir="ltr" style="font-family:monospace"><br></div><div>Thanks</div></div></div><div dir="ltr"><br></div></div>