[Haskell-cafe] Church vs Boehm-Berarducci encoding of Lists
wren ng thornton
wren at freegeek.org
Thu Sep 20 02:36:07 CEST 2012
On 9/18/12 4:27 AM, oleg at okmij.org wrote:
> There has been a recent discussion of ``Church encoding'' of lists and
> the comparison with Scott encoding.
>
> I'd like to point out that what is often called Church encoding is
> actually Boehm-Berarducci encoding. That is, often seen
>
>> newtype ChurchList a =
>> CL { cataCL :: forall r. (a -> r -> r) -> r -> r }
>
> (in http://community.haskell.org/%7Ewren/list-extras/Data/List/Church.hs )
>
> is _not_ Church encoding. First of all, Church encoding is not typed
> and it is not tight.
I know that Church encodings were explored in the untyped setting (and
hence cannot be tight); but I was unaware of a citation for the typed
version of the same encoding. I've since corrected the names of the
above module.
N.B., for folks following along at home, the above module and the Scott
version aren't actually in list-extras yet. I just dumped them there for
lack of somewhere else to stash the code from last time this comparison
came up.
> P.S. It is actually possible to write zip function using Boehm-Berarducci
> encoding:
> http://okmij.org/ftp/ftp/Algorithms.html#zip-folds
Of course it is; I just never got around to doing it :)
--
Live well,
~wren
More information about the Haskell-Cafe
mailing list