▁Eq ▁{ [ ▁l ▁] } ▁( t 1 ▁u 1 ) ▁( t 2 ▁u 2 ) ▁▁▁▁ ▁eq ▁{ | ▁t ▁:: ▁k ▁| } ▁:: ▁Eq ▁{ [ ▁k ▁] } ▁t ▁t ▁▁▁ ▁eq ▁{ | ▁Unit ▁| } ▁_ ▁_ ▁= ▁True ▁▁▁ ▁eq ▁{ | ▁: + : ▁| } ▁eq A ▁eq B ▁( In l ▁a 1 ) ▁( In l ▁a 2 ) ▁= ▁eq A ▁a 1 ▁a 2 ▁▁▁ ▁eq ▁{ | ▁: + : ▁| } ▁eq A ▁eq B ▁( In r ▁b 1 ) ▁( In r ▁b 2 ) ▁= ▁eq B ▁b 1 ▁b 2 ▁▁▁ ▁eq ▁{ | ▁: + : ▁| } ▁eq A ▁eq B ▁_ ▁_ ▁= ▁False ▁▁▁ ▁eq ▁{ | ▁: * : ▁| } ▁eq A ▁eq B ▁( a 1 ▁: * : ▁b 1 ) ▁( a 2 ▁: * : ▁b 2 ) ▁= ▁eq A ▁a 1 ▁a 2 ▁&& ▁eq B ▁b 1 ▁b 2 ▁▁▁ ▁eq ▁{ | ▁Int ▁| } ▁= ▁( == ) ▁▁▁ ▁eq ▁{ | ▁Char ▁| } ▁= ▁( == ) ▁▁▁ ▁eq ▁{ | ▁Bool ▁| } ▁= ▁( == ) ▁ ▁C lean ▁ ▁C lean ▁offers ▁generic ▁programming ▁based ▁Poly P ▁and ▁the ▁generic ▁H askell ▁as ▁supported ▁by ▁the ▁G HC >= 6 . 0 . ▁It ▁paramet riz es ▁by ▁kind ▁as ▁those ▁but ▁offers ▁over loading . ▁ ▁Other ▁languages ▁The ▁ML ▁family