[Haskell-cafe] dynamic web form generation for algebraic data types

Georgi Lyubenov godzbanebane at gmail.com
Thu Mar 2 13:51:43 UTC 2023


Hey Olaf,

This is not an answer to your question, but I was reminded of Grace[0], 
which is a language
with a "browser"[1] that allows you to type in terms and get back 
webpages based on those terms
"automagically", which sounds like exactly what you need. I don't know 
how it's implemented, so I don't know if
it is actually relevant to you, but it is worth noting that Grace itself 
is implemented in Haskell.

Cheers,
Georgi

[0] https://github.com/Gabriella439/grace
[1] https://trygrace.dev/

On 3/2/23 12:54, Olaf Klinke wrote:
> Dear Cafe,
>
> has anyone ever attempted (and maybe succeeded) in building dynamic
> forms using one of the Haskell web frameworks (Yesod,Servant,...)?
> By "dynamic" form I mean a form that changes the number of fields based
> on selections the user makes in other fields of the form.
>
> For example, say one has an algebraic data type
>
>      data T = Number Int | Check Bool T
>
> A form for such a type would initially consist of radio buttons or a
> drop-down list with options "Number" and "Check" that lets the user
> select the constructor. When "Number" is selected, an <input
> type="number"> field is shown. When "Check" is selected, an <input
> type="checkbox"> is displayed next to another form of this kind.
>
> In the end, one would use the GHC.Generics machinery to generate forms
> for a wide range of algebraic data types. I've seen this in the Clean
> language's iTask library [1] and it's very convenient.
> Of course this would involve a lot of JavaScript like
> document.createElement() as well as book-keeping how to re-asseble the
> fields into a T value upon submission. At least the latter is already
> handled by libraries such as yesod-form.
>
> Olaf
>
> [1] https://cloogle.org/src/#itasks/iTasks/UI/Editor/Generic
> [2] https://github.com/haskell-servant/servant-swagger/issues/80
>
> _______________________________________________
> Haskell-Cafe mailing list
> To (un)subscribe, modify options or view archives go to:
> http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
> Only members subscribed via the mailman list are allowed to post.


More information about the Haskell-Cafe mailing list