(define filter (lambda (f xs)
                   (cond ((null? xs)  '())
                         ((f (car xs)) (cons (car xs) (filter f (cdr xs))))
                         (else (filter f (cdr xs))))))
(define filter (lambda (f xs)
    (foldr (lambda (x xs) (if (and (not (null? x)) (f x)) (cons x xs) xs)) '() xs)))
filter _pred []    =  []
filter pred (x:xs)
  | pred x         = x : filter pred xs
  | otherwise      = filter pred xs
filter p xs = [ x | x <- xs, p x]
filter p  =  foldr f []
      f x xs
        | p x        =  x : xs
        | otherwise  =  xs
filter(P, [H|T]) ->
    case P(H) of
         true -> [H|filter(P, T)];
         false -> filter(P, T)
filter(P, []) -> [].

mutual recursion, n-arity helper, pattern-matching

filter(P, []) -> [];
filter(P, [H|T]) -> filter(P(H), H, P, T).

filter(true, H, P, T) -> [H|filter(P, T)];
filter(false, H, P, T) -> filter(P, T).

guarded list comprehension

filter(P, L) when is_function(P, 1) ->
    [E || E <- L, P(E)].
from typing import Callable, Iterable

def filter(fn: Callable, xs: Iterable) -> Iterable:
    return [x for x in xs if fn(x)]

python's generator comprehensions

(item for item in iterable if function(item))
Last modified 4 years ago Last modified on Feb 25, 2017, 1:49:36 PM
Note: See TracWiki for help on using the wiki.