Programming style (or: too clever by half?)

Graham Klyne gk at ninebynine.org
Wed Nov 12 14:54:32 EST 2003


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



More information about the Haskell-Cafe mailing list