On Thu, Jan 14, 2010 at 5:19 AM, Ozgur Akgun <ozgurak...@gmail.com> wrote:
> Can someone give an example of a "reasonable" function that never uses one
> of its parameters, and justify the existence of that parameter in this case,
> please?

As I mentioned, this is not only about parameters, but about type
variables.  From my own code:

data Signal y = <doesn't depend on y>
data ControlY -- phantom type
type Control = Signal ControlY
-- other phantom types follow

takes_specific_signal :: Control -> ...
takes_generic_signal :: Signal _y -> ...

> Because for this example,
> f :: _unused -> A -> B
> f _ a = b
> I think what I'd do is to write the function f without that first parameter,
> and call the funcrtion accordingly.

It's common (for me at least) to write 'modify' functions that look
like "modify_x :: (X -> X) -> SomeMonad ()".  You don't need to write
the 'set' variant if you have const.

That said, 'const' is already in the Prelude.  But ignored args also
turn up when you need a common signature, this also occurs a number of
times in my own code:

this_way :: X -> Y -> Z
that_way :: X -> _y -> Z -- doesn't need Ys
testing_way :: _x -> _y -> Z

...
modify_rec $ const $ rec { rec_doit = if do_this_way then this_way
else that_way }
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to