Try:

type FilterType = TypeInt (NumberFilter Int)

and so on.

The way you have it now, the TypeInt constructor takes two arguments, one
of which is a NumFilter, and the other of which is an Int. But this is an
error, since NumFilter isn't a type, it's a type constructor.

I think there actually might be a bug here, since your type declaration is
incorrect (NumFilter is not a type, but you use it as a type), so that
should be reported before we ever get to the pattern match.

On Fri, May 20, 2016 at 3:19 PM, surfncode <[email protected]> wrote:

>
> Hello,
>
> I seem unable to pattern match on this nested union. Here is the relevant
> code. The try it function is just here to test if the FIlterType union
> works (which doesn't seem to be the case so far)
> type FilterType = TypeInt NumberFilter Int | TypeFloat NumberFilter Float
> | TypeDate DateFilter | TypeEnum EnumFilter | TypeBool BoolFilter
>     | TypeGroupBy Int | TypeFiles TextFilter | TypeText TextFilter
>
> type NumberFilter number= NumberIsEmpty  | NumberIsNotEmpty | NumberIs
> number | NumberIsNot number | NumberLessThan number | NumberGreaterThan
> number
>     | NumberLessOrEqualThan number | NumberGreaterOrEqualThan number |
> NumberGroupMinimum | NumberGroupMaximum
>     | NumberGroupLowest Int | NumberGroupHighest Int
>
> tryIt : FilterType -> Bool
> tryIt ft =
>     case ft of
>         TypeText f -> processTextFilter f (Just "toto")
>         TypeFiles f -> processTextFilter f (Just "titi")
>         TypeInt f o ->
>             case f of
>                 NumberIs _ -> o==2  -- This is the error line
>                 NumberIsNot _ -> o/=2
>                 NumberIsEmpty -> False
>                 _ -> False
>         _ -> False
>
> I run into this compilation error:
>
> ==== error in src/Model/Filter.elm:66:17: ====
> Tag `Model.Filter.NumberIs` is causing problems in this pattern match.
> This pattern matches things of type:
>     NumberFilter
> But the values it will actually be trying to match are:
>     NumberFilter number
>
> I'm confused. I have tried quite a few variations but none of them work.
>
> Any ideas ?
>
> --
> You received this message because you are subscribed to the Google Groups
> "Elm Discuss" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups "Elm 
Discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to