3 ms·
My point is that treating it as the tree it is, is the only way to really make it impossible to produce invalid HTML. You could also actually validate not just
by 1718627440 11mo ago
My point is that treating it as the tree it is, is the only way to really make it impossible to produce invalid HTML. You could also actually validate not just syntax, but also semantic.
> Not a lot of tree oriented output as you make it libraries.
That was actually the point of my library, although I must admit, I haven't implemented actually streaming the HTML output out, before having composed the whole tree. It isn't actually that complicated, what I would need to implement would be to make part of the tree immutable, so that the HTML for it can already be generated.
- nextaccountic 11mo agoThere was a system with dependent types that ruled out invalid html at compile time, even dynamically generated html (rather than a runtime error, you would get a compile error if your code did something wrong) https://github.com/urweb/urweb https://github.com/urweb/urweb http://www.impredicative.com/ur/ http://www.impredicative.com/ur/ Needless to say it wasn't very practical. But there was one commercial site written in it https://github.com/bazqux/bazqux-urweb https://github.com/bazqux/bazqux-urweb (the site still exists but not sure if it's still written in ur/web)
- vshabanov 11mo agoIt's still written in Ur/Web. And the type-safety of Ur/Web is the reason I started writing it -- I couldn't imagine myself using untyped JavaScript. Ur/Web is not very practical for reasons other than type safety: the lack of libraries and slow compilation when the project gets big. The language itself is good, though. Nowadays, I would probably choose OCaml. It doesn't have Ur/Web's high-level features, but it's typed and compiles quckly.
- nextaccountic 11mo agoWhoa, that's cool! What do you think about Typescript? I mean it's unsound but - it sounds like an ok compromise
- vshabanov 11mo agoDidn't use TypeScript, so can't say much. I guess some types are better than no types, and it's easier to use for JavaScript developers. Personally, I'd prefer a fully typed language.