fun length [] = 0 | length (head::tail) = 1 + length tail; #### sub length { return 0 unless @_; # manual pattern matching of the array here my ($head, @tail) = @_; return 1 + length(@tail); } #### member (X, []) -> false; member (X, [X|_]) -> true; member (X, [_|T]) -> member(X, T). #### sub member { my ($X, $head, @tail) = @_; return 0 unless defined($head) && scalar @tail; return 1 if $X == $head; return member($X, @tail) if $X != $head; }