<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><br></div><div>The size, color, and layout of widgets has no effect on interaction semantics and is best pushed elsewhere, into a designer-friendly realm such as CSS.</div><br><div apple-content-edited="true"> <span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><div>Regards,</div><div><br></div><div>John A. De Goes</div><div>N-BRAIN, Inc.</div><div>The Evolution of Collaboration</div><div><br></div><div><a href="http://www.n-brain.net">http://www.n-brain.net</a> &nbsp; &nbsp;| &nbsp; &nbsp;877-376-2724 x 101</div></div></div></span></div></span></div></span></div></span> </div><br><div><div>On Feb 2, 2009, at 2:15 PM, Conal Elliott wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite">Could CSS give us semantic clarity?&nbsp; - Conal<br><br><div class="gmail_quote">On Mon, Feb 2, 2009 at 11:58 AM, John A. De Goes <span dir="ltr">&lt;<a href="mailto:john@n-brain.net">john@n-brain.net</a>></span> wrote:<br> <blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><br> The actual presentation and layout of widgets would be better handled by a DSL such as CSS (which is, in fact, declarative in nature), while event logic would be best handled purely in Haskell.<br> <br> Regards,<br> <br> John A. De Goes<br> N-BRAIN, Inc.<br> The Evolution of Collaboration<br> <br> <a href="http://www.n-brain.net" target="_blank">http://www.n-brain.net</a> &nbsp; &nbsp;| &nbsp; &nbsp;877-376-2724 x 101<div><div></div><div class="Wj3C7c"><br> <br> On Feb 2, 2009, at 12:39 PM, Creighton Hogg wrote:<br> <br> </div></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div><div></div><div class="Wj3C7c"> 2009/1/29 Conal Elliott &lt;<a href="mailto:conal@conal.net" target="_blank">conal@conal.net</a>>:<br> <blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"> Hi Achim,<br> <br> I came to the same conclusion: I want to sweep aside these OO, imperative<br> toolkits, and replace them with something "genuinely functional", which for<br> me means having a precise &amp; simple compositional (denotational) semantics.<br> Something meaningful, formally tractable, and powefully compositional from<br> the ground up. &nbsp;As long as we build on complex legacy libraries (Gtk,<br> wxWidgets, Qt, OpenGL/GLUT, ...), we'll be struggling against (or worse yet,<br> drawn into) their ad hoc mental models and system designs.<br> <br> As Meister Eckhart said, "Only the hand that erases can write the true<br> thing."<br> </blockquote> <br> I think working on a purely functional widget toolkit would actually<br> be a really cool project. &nbsp;Do you have any ideas, though, on what<br> should be the underlying primitives?<br> <br> The initial gut feeling I have is that one should just ignore any<br> notion of actually displaying widgets &amp; instead focus on a clean<br> algebra of how to 'add' &nbsp;widgets that relates the concepts of<br> inheritance &amp; relative position. &nbsp;What I mean by inheritance, here, is<br> how to direct a flow of 'events'. &nbsp;I don't necessarily mean events in<br> the Reactive sense, because I think it'd be important to make the<br> model completely independent of how time &amp; actual UI actions are<br> handled.<br> <br> Any thoughts to throw in, here?<br> <br> Cheers,<br> C<br></div></div><div class="Ih2E3d"> _______________________________________________<br> Haskell-Cafe mailing list<br> <a href="mailto:Haskell-Cafe@haskell.org" target="_blank">Haskell-Cafe@haskell.org</a><br> <a href="http://www.haskell.org/mailman/listinfo/haskell-cafe" target="_blank">http://www.haskell.org/mailman/listinfo/haskell-cafe</a><br> </div></blockquote><div><div></div><div class="Wj3C7c"> <br> _______________________________________________<br> Haskell-Cafe mailing list<br> <a href="mailto:Haskell-Cafe@haskell.org" target="_blank">Haskell-Cafe@haskell.org</a><br> <a href="http://www.haskell.org/mailman/listinfo/haskell-cafe" target="_blank">http://www.haskell.org/mailman/listinfo/haskell-cafe</a><br> </div></div></blockquote></div><br></blockquote></div><br></body></html>