22 May
2001
22 May
'01
1:23 a.m.
I'm having trouble understanding recursive types (e.g., as described in Functional Programming with Overloading and Higher-Order Polymorphism by Jones. He gives as an example
data Mu f = In (f (Mu f))
data NatF s = Zero | Succ s type Nat = Mu NatF
Among the things I don't get are: 1. Comparing this to the non-higher-order type:
data NatX = Zero | Succ NatX
What are the advantages of the higher-order type? What are the disadvantages (incl. runtime costs)? 2. How are values of type Nat represented? (It helps me to think about these things concretely.) Thanks! -- Dave