-module(zf). -compile(export_all). %% Odd numbers. %%foo(L) -> [ X || X <- L, (X > X-1) == (X /= X-1) ]. boo() -> [X||X <- [1,2,a,3,4,b,5,6], X > 3]. boo1() -> [X||X <- [1,2,a,3,4,b,5,6], integer(X),X > 3]. boo2() -> [{X,Y} || X <- [1,2,3], Y <- [a,b]]. bar(L) -> [ X || X <- L, integer(X), gt(X, 3) ]. bar(L, M) -> [ Y || X <- L, integer(X), gt(X, 3), Y <- M, float(Y), gt(X, Y) ]. baz(L) -> [ X || X <- L, atom(X) ]. buz(L, Min) -> [ X || Min > 3, X <- L, X >= Min ]. gt(X, Y) when X > Y -> true; gt(X, Y) -> false. %% Return the Pythagorean triangles with sides %% of total length less than N pyth(N) -> [ {A,B,C} || A <- lists:seq(1,N), B <- lists:seq(1,N), C <- lists:seq(1,N), A+B+C =< N, A*A+B*B == C*C ]. %% Cut the search space a bit.. pyth2(N) -> [ {A,B,C} || A <- lists:seq(1,N), B <- lists:seq(1,N-A+1), C <- lists:seq(1,N-A-B+2), A+B+C =< N, A*A+B*B == C*C ]. %% Return the Cartesian product cp(A,B) -> [ {X,Y} || X <- A, Y <- B ]. %% Return all permutations of a list perms([]) -> [[]]; perms(L) -> [ [H|T] || H <- L, T <- perms(L--[H]) ]. %% Quick sort sort([X|Xs]) -> sort([ Y || Y <- Xs, Y < X ]) ++ [X] ++ sort([ Y || Y <- Xs, Y >= X ]); sort([]) -> []. %% append append(L) -> [X||L1<-L,X<-L1]. map(Fun, L) -> [Fun(X)||X<-L]. filter(Pred, L) -> [X||X<-L,Pred(X)]. select(X, L) -> [Y || {X1,Y} <- L, X == X1].