I just spotted a possible idiom for something that seems to pop up from time to time:

foldr const

But I can't help feeling that this code is perversely obscure.

Does it have any advantages over the more obvious form suggested below?

[[
headOrSomething = foldr const

headOrSomething1 _ (x:_) = x
headOrSomething1 x []    = x

h = headOrSomething
-- h = headOrSomething1

test1 = h 0 [1,2,3] == 1
test2 = h 0 []      == 0
test3 = h 0 (repeat 42) == 42
]]

This suggests, e.g., an alternative coding of Maybe.listToMaybe:
[[
altListToMaybe = foldr (const . Just) Nothing
]]

Opinions?

#g


------------ Graham Klyne For email: http://www.ninebynine.org/#Contact

_______________________________________________
Haskell-Cafe mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to