[Haskell-cafe] Sugar for function application
Tillmann Rendel
rendel at informatik.uni-marburg.de
Wed Mar 24 05:30:12 EDT 2010
Brandon S. Allbery KF8NH wrote:
> On Mar 23, 2010, at 13:39 , Ertugrul Soeylemez wrote:
>> layout-style syntactic sugar for function application.
>> Here is an example of what it might look like:
>>
>> function $$ anArgument
>> sin (x^2)
>> anotherArgument
>> f $ x + 3
>
> Doesn't layout already do this?
>
> function arg1
> arg2
> arg3
The layout rule is only triggered by a limited set of keywords (like do,
where, let, ...), and Ertugrul's proposal is to add a keyword for
function applicaton to this set.
I like this idea, because it would enable non-monadic embedded DSLs to
use layout.
For example, consider setting properties in wxHaskell:
layoutSet myButton $$
text := "Ok"
on action := doSomething
instead of
set myButton
[ text := "Ok"
, on action := doSomething
]
Of course, this would need some type hackery à la PrintF to make set
accept multiple arguments, and the proliferation of such type hackery
may seem unfortunate. On the other hand, the hackery could possibly be
encapsulated in a combinator like
polyvariadic :: Poly a b c => ([a] -> b) -> c
so that layoutSet can be implemented as
layoutSet widget = polyvariadic (set widget).
Tillmann
More information about the Haskell-Cafe
mailing list