// Code from Hansen and Rischel: Functional Programming using F# 16/12 2012 // Chapter 2: Values, operators, expressions and functions. let even n = n % 2 = 0;; let isLowerCaseVowel ch = ch='a' || ch='e' || ch='i' || ch='o' || ch='u';; let isLowerCaseConsonant ch = System.Char.IsLower ch && not (isLowerCaseVowel ch);; isLowerCaseVowel 'i' && not (isLowerCaseConsonant 'i');; isLowerCaseVowel 'I' || isLowerCaseConsonant 'I';; not (isLowerCaseVowel 'z') && isLowerCaseConsonant 'z';; let nameAge(name,age) = name + " is " + (string age) + " years old";; let adjString s = if even(String.length s) then s else " " + s;; let square x = x * x;; let rec power = function | (x, 0) -> 1.0 (* 1 *) | (x, n) -> x * power(x,n-1) (* 2 *);; let plusThree = (+) 3;; let f = fun y -> y+3;; // f(y) = y+3 let g = fun x -> x*x;; // g(x) = x*x let h = f << g;; // h = (f o g) let weight ro = fun s -> ro * s ** 3.0;; let waterWeight = weight 1000.0;; let methanolWeight = weight 786.5;; let weight1 ro s = ro * s ** 3.0;; let (.||.) p q = (p || q) && not(p && q);; let (~%%) x = 1.0 / x;; let eqText x y = if x = y then "equal" else "not equal";; let ordText x y = if x > y then "greater" else if x = y then "equal" else "less";; let ordText1 x y = match compare x y with | t when t > 0 -> "greater" | 0 -> "equal" | _ -> "less";;