{-# LANGUAGE FlexibleContexts, FlexibleInstances, TypeSynonymInstances #-}
weird
:: (Num (a
-> a
), Num a
) => a
-> (a
-> a
) -> a
-> a
weird x g = (x +) * g
instance Enum DiffInt
where
instance Num DiffInt
where n + m = n . m
test :: DiffInt
test' :: DiffInt
ey0jIExBTkdVQUdFIEZsZXhpYmxlQ29udGV4dHMsIEZsZXhpYmxlSW5zdGFuY2VzLCBUeXBlU3lub255bUluc3RhbmNlcyAjLX0KCndlaXJkIDo6IChOdW0gKGEgLT4gYSksIE51bSBhKSA9PiBhIC0+IChhIC0+IGEpIC0+IGEgLT4gYQp3ZWlyZCB4IGcgPSAoeCArKSAqIGcKCnR5cGUgRGlmZkludCA9IEludCAtPiBJbnQKCmluc3RhbmNlIEVudW0gRGlmZkludCB3aGVyZQoJdG9FbnVtICAgbiA9IChuICspCglmcm9tRW51bSBuID0gbiAwCgppbnN0YW5jZSBOdW0gRGlmZkludCB3aGVyZQoJbiArIG0gPSBuIC4gbQoJbiAqIG0gPSBmb2xkciAoKykgaWQgJCByZXBsaWNhdGUgKGZyb21FbnVtIG4pIG0KCnRlc3QgOjogRGlmZkludAp0ZXN0ID0gdG9FbnVtIDMgKiB0b0VudW0gNAoKdGVzdCcgOjogRGlmZkludAp0ZXN0JyA9IHdlaXJkIDMgKHRvRW51bSA0KQoKbWFpbiA9IHByaW50ICQgZnJvbUVudW0gdGVzdCc=