[Haskell-cafe] Extensible states

Alberto G. Corona agocorona at gmail.com
Tue May 5 21:03:20 UTC 2015


Thanks all of you.

So there is no trick that can make extensible records O(1) for field
access, like the native haskell records?. I didn´t know that all the
extensible records have  O(n) or O(log n) at most.

That is not better than my State monad with a Data.Map.  It is not possible
to use HList-like records like the one that Adam mentioned since the type
signature must not change when a new field is added.

2015-05-05 22:20 GMT+02:00 Marcin Mrotek <marcin.jan.mrotek at gmail.com>:

> Hello,
>
> I'm not sure if this is what you're looking for, but vinyl + lens state
> monad combinators let you write something like this:
>
> foo :: State (Rec Foo [B,C,F]) Bar
> foo = ...
>
> bar = State (Rec Foo [A,B,C,D,E,F]
> bar = do
>    ...
>    x <- zoom rsubset foo
>    ...
>    rlens SA .= 3
>    ...
>
> Unfortunately Vinyl has O(n) lookup (unless it gets optimized away by
> sufficiently glorious haskell compiler, I guess, but I have no idea whether
> it actually can happen). But I'm not sure if the speed impact is
> noticeable, compared to using monad transformer stacks, for example.
>
> http://hackage.haskell.org/package/vinyl
> http://hackage.haskell.org/package/vinyl-0.5.1/docs/Data-Vinyl-Lens.html
> http://hackage.haskell.org/package/lens
>
> https://www.fpcomplete.com/school/to-infinity-and-beyond/pick-of-the-week/a-little-lens-starter-tutorial
>
> Best regards,
> Marcin Mrotek
>
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
>
>


-- 
Alberto.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/haskell-cafe/attachments/20150505/d9461ae7/attachment.html>


More information about the Haskell-Cafe mailing list