Yeah, I guess I was wondering whether something like it already existed. Thinking about it some more, perhaps what I want is `tr` [1]. E.g.

  tr [Foo] [Bar]

Incorporating your suggestion would then yield a more general version like:

  trBy (== Foo) Bar





On Sat, Dec 22, 2012 at 6:46 AM, David Thomas <davidleothomas@gmail.com> wrote:
Seems like the function is easy to define:

replaceIfEq a b c = if c == a then b else c

Then the above can be written

   replaceIfEq Foo Bar value

Or the slightly more general (in exchange for slightly more verbosity at the call site)

replaceIf p r a = if p a then r else a

   replaceIf (== Foo) Bar value




On Fri, Dec 21, 2012 at 6:46 PM, Radical <radical@google.com> wrote:
Sometimes I'll need something like:

  if value == Foo then Bar else value

Or some syntactic variation thereof:

  case value of { Foo -> Bar; _ -> value }

Is there a better/shorter way to do it? I'm surprised that it's more complicated to substitute a value on its own than e.g. in a list, using filter. Or perhaps I'm missing the right abstraction?

Thanks,

Alvaro




_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe