Dear all,

Conor wrote:

> You forgot to define the term behaviour also. Pattern synonyms may be
> used to construct as well as to match values.

Conor and I discussed this over lunch.

Specifically, we talked about whether the right hand side of a pattern
synonym would be any Haskell pattern (including "_", "~", possibly "!"),
or restricted to the intersection between the patterns and terms, as
Conor propose that pattern synonyms also be used for construction.

By adopting some simple conventions, like replacing "_" by "undefined"
when a synonym is used as a term for construction, it is clear that one
can be a bit more liberal than a strict intersection between the pattern
and current expression syntax.

Incidentally, this would be consistent with the way record patterns
and record construction currently works. E.g.

   data Foo = MkFoo {l1 :: T1, l2 :: T2}

A pattern "MkFoo {}" expands to "MkFoo _ _", a term "MkFoo {}" expands
to "MkFoo undefined undefined".

Moreover, didn't someone (John Mecham?) propose that "_" be a valid
term anyway, standing for "undefined" (with an explicit requirement
of keeping track of the source code position)?

Maybe "~" (and "!") wouldn't cause much trouble either.

I like the idea, but it would be nice if the RHS of a pattern
synonym definition really coudl be any Haskell pattern, without any
additional restriction (except that it has to be acyclic).

All the best,

/Henrik

--
Henrik Nilsson
School of Computer Science and Information Technology
The University of Nottingham
[EMAIL PROTECTED]


This message has been checked for viruses but the contents of an attachment
may still contain software viruses, which could damage your computer system:
you are advised to perform your own checks. Email communications with the
University of Nottingham may be monitored as permitted by UK legislation.

_______________________________________________
Haskell-prime mailing list
Haskell-prime@haskell.org
http://haskell.org/mailman/listinfo/haskell-prime

Reply via email to