data Foo
= Foo
{ key
, value
:: Int }
main = do
let foo = [Foo 2 1, Foo 1 2, Foo 5 3]
let range1 = find foo $ (== 1) . key
let range2 = find foo $ \x -> key x == 1
let range3 = [ x | x <- foo, key x == 1 ]
mapM_ writefln
[range1
, range2
, range3
] where
ZmluZCB4cyBmID0gZmlsdGVyIGYgeHMKCmRhdGEgRm9vID0gRm9vIHsga2V5LCB2YWx1ZSA6OiBJbnQgfQoKCgptYWluID0gZG8KCWxldCBmb28gPSBbRm9vIDIgMSwgRm9vIDEgMiwgRm9vIDUgM10KCWxldCByYW5nZTEgPSBmaW5kIGZvbyAkICg9PSAxKSAuIGtleQoJbGV0IHJhbmdlMiA9IGZpbmQgZm9vICQgXHggLT4ga2V5IHggPT0gMQoJbGV0IHJhbmdlMyA9IFsgeCB8IHggPC0gZm9vLCBrZXkgeCA9PSAxIF0KCW1hcE1fIHdyaXRlZmxuIFtyYW5nZTEsIHJhbmdlMiwgcmFuZ2UzXQoJd2hlcmUKCQl3cml0ZWZsbiB4cyA9IHB1dFN0ckxuICQgInZhbHVlIGZvciBrZXkgMSBpcyAiICsrIHNob3cgKHZhbHVlICQgaGVhZCB4cyk=