makeAdder f = f
makeGoodAdder = makeAdder (+)
makeBadAdder = makeAdder (*)
testAdder cons delta value = let adder = cons delta in
value + delta == adder value
main = do
print $ testAdder makeGoodAdder
2 3 print $ testAdder makeBadAdder
2 3
dHlwZSBBZGRlciA9IEludCAtPiBJbnQKCm1ha2VBZGRlciA6OiAoSW50IC0+IEludCAtPiBJbnQpIC0+IEludCAtPiBBZGRlcgptYWtlQWRkZXIgZiA9IGYKCm1ha2VHb29kQWRkZXIgPSBtYWtlQWRkZXIgKCspCm1ha2VCYWRBZGRlciAgPSBtYWtlQWRkZXIgKCopCgp0ZXN0QWRkZXIgY29ucyBkZWx0YSB2YWx1ZSA9IGxldCBhZGRlciA9IGNvbnMgZGVsdGEgaW4KCXZhbHVlICsgZGVsdGEgPT0gYWRkZXIgdmFsdWUKCm1haW4gPSBkbwoJcHJpbnQgJCB0ZXN0QWRkZXIgbWFrZUdvb2RBZGRlciAyIDMKCXByaW50ICQgdGVzdEFkZGVyIG1ha2VCYWRBZGRlciAgMiAzCg==