/* type variables */ type t('a) = list('a); let f = (a: list('a)): 'a => List.hd(a); /* polymorphic variants */ type t = [ | `A | `B]; /* variants */ type result = | Sat | Unsat | Unknown; /* module and module types */ module type S = {let compute: unit => unit;}; module Impl: S = { let compute = () => (); }; /* types with attributes */ [@bs.deriving jsConverter] type action = [ | `Click | [@bs.as "submit"] `Submit | `Cancel];