import { Generic , Repr } from "tshkt" ; export class Identity < A > { [ Generic . repr ] : Generic < IdentityRepr , A > ; constructor ( private value ) { } get ( ) { return this . value ; } } interface IdentityRepr extends Repr { type : Identity < this [ "argument" ] > ; }