```
datatype 'a Multilist = 
   Node of 'a list
 | List of 'a Multilist list;

fun isGreaterThen x y = y > x;

fun multiFilter  f (List([])) = []  
  | multiFilter  f  (List(m::multil)) = 
    let fun flattenAuxiliray(Node(value)) = 
                   if (f value = true) then (value) else nil
          | flattenAuxiliray((List(nil))) = nil
          | flattenAuxiliray(List(m::mlist1)) = (flattenAuxiliray(m)) @ 
                   (flattenAuxiliray((List(mlist1)))) 
    in (flattenAuxiliray(m)) @ (multiFilter f (List(multil)))
    end;

```

I get error on this input:

```
val l = List [Node [3,5,18], Node [7]];
multiFilter (isGreaterThen 6) l;

stdIn:7.1-8.46 Error: operator and operand don't agree [tycon mismatch]
  operator domain: ('Z list -> bool) * 'Z list Multilist
  operand:         (int -> bool) * int list Multilist
  in expression:
    multiFilter (isGreaterThen 6,List (Node <exp> :: <exp> :: <exp>))

```

output:

```
val it = [18,7] : int list

```