Comment by lilyball

3 years ago

Is it? My takeaway is "oh cool, first-class types". Experimenting with this, I can write the following:

  let ConfigOf : Type -> Type = \(type : Type) ->
        {- What happens if you add another field here? -}
        { home : type
        , privateKey : type
        , publicKey : type
        }
  
  let Config : Type = ConfigOf Text

and the rest of the example still works and evaluates the same.

Also in a later example it has the expression `generate 10 Config buildUser`, which also works because of first-class types. Instead of needing generics, you just take a type as a regular parameter.