module test import StdGeneric generic g a :: a g{|OBJECT|} g = OBJECT g g{|CONS|} g = CONS g derive g T, S, Int //kind *->* :: S a = S a //kind (*->*)->* :: T a = T (a Int) Start :: T S Start = g{|*|}