
On Fri, 14 Jul 2006, Christian Maeder wrote:
Henning Thielemann schrieb:
in haskell-prime list there was a proposal to use '?' for such things:
(1,2,?)
only problem is what it's hard to define exactly where the lambda should arise:
the placeholder '?' becomes part of a new implicit identifier (that exceeds Haskell's identifier syntax). If we have:
(,,) :: a -> b -> c -> (a, b, c)
we get a bunch of new identifiers:
(?,,) :: b -> c -> a -> (a, b, c) (,?,) :: a -> c -> b -> (a, b, c) (,,?) :: a -> b -> c -> (a, b, c)
And maybe also: (?,?,) :: c -> a -> b -> (a, b, c)
and so on. For infix ops this looks natural to me.
I see. It would require that ? belongs to tuples exclusively and that it will never be used elsewhere, say for lists like in [1,2,?]. Because then the expression [(1,?)] becomes ambigous. Like with every kind of syntactic sugar, I fear that the next thing that people request, are expressions like (1,2,3+?) for \x -> (1,2,3+x)
Yes that's a really evil problem that I already encountered in mathematics. Some mathematicians like to write f(·) or even f(·-k) which exhibits exactly the ambiguity you mention. Such placeholders are a really bad idea.
"f(?)" should not make sense in Haskell, since the parens do not belong to the identifier "f". (It's also not necessary: \ x -> f(x) = f)
Necessary or not, applied mathematicians don't care about redundancy. :-) I have seen $f(\cdot)$ instead of $f$ really often, as well as $f(\cdot-k)$ for \x -> f(x-k).