// FOR LOOP IN Java / C / C++ ///////////////////////////// int f( int x, int y ) { int c; int d; int result; result = 0; for (c = 1; c <= x; c++) { for (d = x; d <= y; d++) { if (c % 2 == 0 && d % 2 == 0) { result += c + d; } } } return result; } -- FOR LOOP IN Haskell ---------------------- f x y = foldr1 (+) [c+d | c <- [1..x], d <- [x..y], mod c 2 == 0, mod d c == 0] % FOR LOOP IN Prolog %%%%%%%%%%%%%%%%%%%% listsum( [], 0 ) :- !. listsum( [A|As], S ) :- listsum( As, S1 ), S is A + S1. loopbody( X, Y, Sum ) :- for( C, 1, X ), for( D, X, Y ), 0 is C mod 2, 0 is D mod C, Sum is C + D. f( X, Y, Result ) :- bagof( S, loopbody( X, Y, S ), Lst ), listsum( Lst, Result ). //////////////////////////////////////////////////////////////////////////////// -------------------------------------------------------------------------------- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% // IF-THEN IN Java / C / C++ (version 1) //////////////////////////////////////// int ifthen( int x ) { int y; if (p(x)) { y = 1; } else { y = 2; } return y; } // IF-THEN IN Java / C / C++ (version 2) //////////////////////////////////////// int ifthen( int x ) { int y; y = (p(x) ? 1 : 2); return y; } -- IF-THEN IN Haskell --------------------- ifthen x = y where y = if (p x) then 1 else 2 %% IF-THEN IN Prolog (version 1) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ifthen( X, Y ) :- ((p( X ), Y = 1, !); Y = 2). %% IF-THEN IN Prolog (version 2) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ifthen( X, Y ) :- (p( X ) -> Y = 1 ; Y = 2). //////////////////////////////////////////////////////////////////////////////// -------------------------------------------------------------------------------- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% // SWITCH / CASE IN Java / C / C++ ////////////////////////////////// int f( int x ) { int y; switch (x) { case 1: y = 2; break; case 2: y = 4; break; default: y = 0; } return y; } -- SWITCH / CASE IN Haskell (version 1) --------------------------------------- f 1 = 2 f 2 = 4 f _ = 0 (or) f x | x == 1 = 2 | x == 2 = 4 | otherwise = 0 -- SWITCH / CASE IN Haskell (version 2) --------------------------------------- f x = case x of 1 -> 2 2 -> 4 _ -> 0 %% SWITCH / CASE IN Prolog (version 1) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% f( 1, 2 ) :- !. f( 2, 4 ) :- !. f( _, 0 ). %% SWITCH / CASE IN Prolog (version 2) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% f( X, Y ) :- % ... , ((X is 1, Y is 2, !); (X is 2, Y is 4, !); Y is 0).