
--- Tom Pledger wrote:
It could get more convenient, though, if we have data-constructors-as-class-members and move the familiar list constructors into the List class. (The following might need to be built into the compiler, because of the special [] syntax.)
J.Garrett.Morris@Dartmouth.EDU (J. Garrett Morris) writes:
Changing the subject very slightly, this brings up two questions: 1) Wouldn't implementing the Views proposal allow this?
I think the answer is yes.
2) Why haven't views been implemented (and why are they a "never" in the HaskellTwo discussion in HaWiki)?
I can't speak to the 'never', but there /is/ an implementation in ghc of something closely resembling Views, called Pattern Guards. http://research.microsoft.com/Users/simonpj/Papers/pat.htm As an example, instead of the following list-only code, f :: List a -> ... f [] = ... f (h:t) = ... you could write this more general version, which assumes only some class Sequence with operations null, head, tail, etc. f :: Sequence s => s a -> ... f list | null list = ... | h <- head list, t <- tail list = ... Although slightly more verbose, it still achieves something like the clarity of pattern-matching. Regards, Malcolm