I think the first time I saw a connection to polymorphic recursion was in
Neil Mitchell's supero, which used it as a catch-all fallback plan.

http://community.haskell.org/~ndm/downloads/slides-haskell_with_go_faster_stripes-30_nov_2006.pdf

-Edward


On Thu, Jun 19, 2014 at 4:49 PM, Conal Elliott <co...@conal.net> wrote:

> Thanks, Ed. It hadn't occurred to me that defunctionalization might be
> useful for monomorphization. Do you know of a connection?
>
> I'm using a perfect leaf tree type similar to the one you mentioned but
> indexed by depth:
>
> > data Tree :: (* -> *) -> Nat -> * -> * where
> >   L :: a -> Tree k 0 a
> >   B :: Tree k n (k a) -> Tree k (1+n) a
>
> Similarly for "top-down" perfect leaf trees:
>
> > data Tree :: (* -> *) -> Nat -> * -> * where
> >   L :: a -> Tree k 0 a
> >   B :: k (Tree k n a) -> Tree k (1+n) a
>
> This way, after monomorphization, there won't be any sums remaining.
>
>   -- Conal
>
>
>
> On Thu, Jun 19, 2014 at 1:22 PM, Edward Kmett <ekm...@gmail.com> wrote:
>
>> Might you have more success with a Reynolds style defunctionalization
>> pass for the polymorphic recursion you can't eliminate?
>>
>> Then you wouldn't have to rule out things like
>>
>> data Complete a = S (Complete (a,a)) | Z a
>>
>> which don't pass that test.
>>
>> -Edward
>>
>>
>> On Thu, Jun 19, 2014 at 3:28 PM, Conal Elliott <co...@conal.net> wrote:
>>
>>>  Has anyone worked on a monomorphizing transformation for GHC Core? I
>>> understand that polymorphic recursion presents a challenge, and I do indeed
>>> want to work with polymorphic recursion but only on types for which the
>>> recursion bottoms out statically (i.e., each recursive call is on a smaller
>>> type). I'm aiming at writing high-level polymorphic code and generating
>>> monomorphic code on unboxed values. This work is part of a project for
>>> compiling Haskell to hardware, described on my blog (http://conal.net).
>>>
>>> Thanks,  - Conal
>>>
>>> _______________________________________________
>>> Glasgow-haskell-users mailing list
>>> Glasgow-haskell-users@haskell.org
>>> http://www.haskell.org/mailman/listinfo/glasgow-haskell-users
>>>
>>>
>>
>
_______________________________________________
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users

Reply via email to