Commit 5bbb0b70 authored by sof's avatar sof
Browse files

[project @ 1999-05-05 08:31:00 by sof]

Allow record pattern "F{}" on any old constructor, not just with those
that have labelled fields.
parent 5c2f3f1d
......@@ -460,12 +460,22 @@ tidy1 v (LazyPat pat) match_result
tidy1 v (RecPat data_con pat_ty tvs dicts rpats) match_result
= returnDs (ConPat data_con pat_ty tvs dicts pats, match_result)
pats = map mk_pat tagged_arg_tys
Special case to handle C{}, where C is a constructor
that hasn't got any labelled fields - the Haskell98 report
doesn't seem to make that constraint (not that I think it
-- sof 5/99
| null con_flabels = map (WildPat) con_arg_tys'
| otherwise = map mk_pat tagged_arg_tys
-- Boring stuff to find the arg-tys of the constructor
(_, inst_tys, _) = splitAlgTyConApp pat_ty
con_arg_tys' = dataConArgTys data_con inst_tys
tagged_arg_tys = con_arg_tys' `zip` (dataConFieldLabels data_con)
con_flabels = dataConFieldLabels data_con
tagged_arg_tys = con_arg_tys' `zip` con_flabels
-- mk_pat picks a WildPat of the appropriate type for absent fields,
-- and the specified pattern for present fields
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment