1234567891011121314151617181920212223(** [Data.S] is an interface specifying data that is processed by a digital component. *)open!ImportmoduletypeS=sigtypet[@@derivingsexp_of]includeEqual.Swithtypet:=tvalundefined:tendmoduletypeData=sigmoduletypeS=Stype'dt=(moduleSwithtypet='d)moduleBool:Swithtypet=boolmoduleInt:Swithtypet=intmoduleString:Swithtypet=stringmoduleUnit:Swithtypet=unitmodulePair(D1:S)(D2:S):Swithtypet=D1.t*D2.tend