10.07.2015 Views

An Introduction to Functional Programming Through Lambda Calculus

An Introduction to Functional Programming Through Lambda Calculus

An Introduction to Functional Programming Through Lambda Calculus

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

- 231 -iii)def SIGN_+ X Y =if and (issigned X) (issigned Y)thenif iszero (sign_value X)then Yelseif sign_iszero (sign_value Y)then Xelseif and (sign X) (sign Y)then MAKE_SIGNED POS (MAKE_NUMB (add (sign_value X) (sign_value Y)))elseif and (not (sign X)) (not (sign Y))then MAKE_SIGNED NEG (MAKE_NUMB (add (sign_value X) (sign_value Y)))elseif not (sign X)thenif greater (sign_value X) (sign_value Y)then MAKE_SIGNED NEG (MAKE_NUMB (sub (sign_value X) (sign_value Y)))else MAKE_SIGNED POS (MAKE_NUMB (sub (sign_value Y) (sign_value X)))elseif GREATER (sign_value Y) (sign_value X)then MAKE_SIGNED NEG (sub (sign_value Y) (sign_value X))else MAKE_SIGNED POS (sub (sign_value X) (sign_value Y))else SIGN_ERRORChapter 61)2)def ATOMCONS A L =if isnil Lthen [A]elseif equal (type A) (type (HEAD L))then CONS A Lelse LIST_ERRORi) rec STARTS [] L = TRUEor STARTS L [] = FALSEor STARTS (H1::T1) (H2::T2) =IF CHAR_EQUALS H1 H2THEN STARTS T1 T2ELSE FALSEii) rec CONTAINS L [] = FALSEor CONTAINS L1 L2 =IF STARTS L1 L2THEN TRUEELSE CONTAINS L1 (TAIL L2)iii) rec COUNT L [] = 0or COUNT L1 L2 =

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!