# vinyl-loeb
This package defines a version of loeb's theorem for
[vinyl](https://hackage.haskell.org/package/vinyl).
```{.haskell}
rloeb :: RMap xs => Rec ((->) (Rec f xs) :. f) xs -> Rec f xs
rloeb x = go where go = rmap (($ go) . getCompose) x
```
This can be used to fill up an extensible record lazily using
data from the result of the record itself.
```{.haskell}
type F = [Text, Text]
k :: Rec Thunk F -> Text
k (Thunk f :& _) = f <> "bar"
f :: Rec ((->) (Rec Thunk F) :. Thunk) F
f = (Compose $ const $ Thunk $ "foo") :& Compose (Thunk . k) :& RNil
-- > rloeb f
-- {"foo", "foobar"}
```