[web-devel] Setting variables in hamlet forall

Mark Bradley barkmadley at gmail.com
Fri Apr 8 01:41:19 CEST 2011


On Fri, Apr 8, 2011 at 2:37 AM,  <vagif.verdi at gmail.com> wrote:
> On Thursday, April 07, 2011 02:51:40 AM you wrote:
>> put me in the opposed category.
>>
>> You can just as easily put:
>>   let formId rs = fromMaybe "" $ lookup $...
>>
>> in the haskell function that loads the hamlet file t
>
> You are missing the point. I cannot put anything inside haskell for a loop
> that is defined inside hamlet. Variable binding must happen inside forall loop,
> and variable is different for each iteration of the loop. It's just used in
> several places inside the loop block. There's no way to help it from the
> outside of the loop.

the suggestion was for you to define a function that can be applied to
the loop variable to make the code shorter.

>
> That's why i am asking for binding only for $forall, because in all other
> cases we can indeed define all often used variables in haskell code.
>
>> hen you just have to
>> put #{formId rs}
>>
>> in the hamlet.  I think adding syntax should be done only when very
>> necessary.  seems like a very small win here at a big cost.
>>
>> yes, if you have a situation where many handlers are calling the same
>> hamlet file, there might be some duplication, but then you can always
>> raise the formId function to a top-level function.
>>
>> max
>>
>>  On Apr 7, 2011, at 5:15 PM, Michael Snoyman wrote:
>> > I've been very hesitant about adding more features to Hamlet, especially
>> > ones that are already implemented in Haskell. That's been my reasoning
>> > for avoiding any kind of variable definitions until now. However, this
>> > does seem like a compelling use case.
>> >
>> > I don't think it would make sense to limit it to foralls: it makes as
>> > much sense in maybes, and I think it would be confusing if it only
>> > applied in some cases. As for syntax, how about:
>> >
>> > $forall row <- rs
>> >
>> >     $let formId = fromMaybe "" $ IntMap.lookup $ getInt "form_id" row
>> >     ...
>> >
>> > I'm not 100% sold on this yet, what does everyone else think?
>> >
>> > One last note: I'm probably going to be announcing a feature freeze on
>> > Yesod 0.8 *very* soon, and making a beta release to Yackage so that
>> > people can test. If you have any last-minute input, now's the time. I'm
>> > planning on giving the beta test period about a week, and then releasing
>> > to Hackage.
>> >
>> > Michael
>> >
>> > On Thu, Apr 7, 2011 at 2:57 AM, <vagif.verdi at gmail.com> wrote:
>> > I noticed a pattern that in hamlet $forall i often retrieve the same
>> > value from a map, Sometimes 3,4 times.
>> >
>> >    $forall row <- rs
>> >
>> >            <td><a href=@{FormR (getInt "form_id" row)}>#{getStr
>> >            "form_name"
>> >
>> > row}
>> >
>> >            <td>#{getStr "docname" row}
>> >            ...
>> >            <td>#{fromMaybe "" (IntMap.lookup (getInt "form_id" row)
>> >
>> > counties)}
>> >
>> >            <td>#{fromMaybe "" (IntMap.lookup (getInt "form_id" row)
>> >
>> > customers)}
>> >
>> > Would it be possible to allow let statement in forall for often used
>> > values ?
>> >
>> > Regards,
>> > Vagif Verdi
>> >
>> > _______________________________________________
>> > web-devel mailing list
>> > web-devel at haskell.org
>> > http://www.haskell.org/mailman/listinfo/web-devel
>> >
>> > _______________________________________________
>> > web-devel mailing list
>> > web-devel at haskell.org
>> > http://www.haskell.org/mailman/listinfo/web-devel
>
> _______________________________________________
> web-devel mailing list
> web-devel at haskell.org
> http://www.haskell.org/mailman/listinfo/web-devel
>



-- 
-barkmadley
sent from an internet enabled device



More information about the web-devel mailing list