On Sat, 14 May 2011 15:06:51 +1000, Reiner Pope <reiner.p...@gmail.com> wrote:
> Hi all,
> 
> Is there a policy for strictness of datatypes in Yi, and what is it? 
> Specifically:
> 
>    1. When I write a datatype, which fields should I make strict? For
>       instance, all fields in Editor are strict, and all fields except
>       'height' and 'winRegion' in Window are strict. Is there some
>       reasoning underlying this?
>    2. What should I do to ensure strictness of lazy datatypes like [a]?
>       For instance, the 'bufAccessList :: ![BufferRef]' field of
>       'Window' is marked strict, but is a list. Is it the client's duty
>       to ensure that this list is fully evaluated?
> 
> Would there be any objections to using the 'deepseq' package to ensure 
> evaluation? The 'NFData' class is supported by Derive, so it might be 
> possible to generate many instances automatically.

I would recommend to use a strict-by-default datastructure instead of lazy
lists plus NFData. This is not against NFData which is very useful but it
traverses the whole list each time even when the list is already forced.
What about Data.Sequence or Data.FingerTree ?

Best regards,

-- 
Nicolas Pouillard
http://nicolaspouillard.fr

-- 
Yi development mailing list
yi-devel@googlegroups.com
http://groups.google.com/group/yi-devel

Reply via email to