6. AN OVER-SIMPLIFIED COMPARISON...
FUNCTIONAL
LANGUAGES
- NO SIDE EFFECTS
DUE TO LEXICAL
SCOPING
- IMMUTABLE OBJECTS
- MONADIC FUNCTIONS
(1-ARITY)
- ITERATION THROUGH
RECURSION
7. AN OVER-SIMPLIFIED COMPARISON…
FUNCTIONAL JAVASCRIPT /
LANGUAGES COFFEESCRIPT
- NO SIDE EFFECTS - SIDE EFFECTS IF YOU
DUE TO LEXICAL WANT THEM, UGH!
SCOPING - VERY FEW
- IMMUTABLE OBJECTS IMMUTABLE OBJECTS
- MONADIC FUNCTIONS - N-ARITY, VARIADIC
(1-ARITY) FUNCTIONS
- ITERATION THROUGH - ITERATION TYPICALLY
RECURSION THROUGH CURSORS
10. A GROSSLY OVER-SIMPLIFIED COMPARISON…
IMPERATIVELY LANGUAGES
(HOW)
- USING FREE HAND,
PICK UP PORK
SANDWICH
11. A GROSSLY OVER-SIMPLIFIED COMPARISON…
IMPERATIVELY LANGUAGES
(HOW)
- USING FREE HAND,
PICK UP PORK
SANDWICH
- RAISE HAND TO
MOUTH
12. A GROSSLY OVER-SIMPLIFIED COMPARISON…
IMPERATIVELY LANGUAGES
(HOW)
- USING FREE HAND,
PICK UP PORK
SANDWICH
- RAISE HAND TO
MOUTH
- OPEN MOUTH
13. A GROSSLY OVER-SIMPLIFIED COMPARISON…
IMPERATIVELY LANGUAGES
(HOW)
- USING FREE HAND,
PICK UP PORK
SANDWICH
- RAISE HAND TO
MOUTH
- OPEN MOUTH
- PLACE PORK
SANDWICH IN MOUTH
14. A GROSSLY OVER-SIMPLIFIED COMPARISON…
IMPERATIVELY LANGUAGES
(HOW)
- USING FREE HAND, PICK
UP PORK SANDWICH
- RAISE HAND TO MOUTH
- OPEN MOUTH
- PLACE PORK SANDWICH
IN MOUTH
- RELEASE PORK
SANDWICH
15. A GROSSLY OVER-SIMPLIFIED COMPARISON…
IMPERATIVELY LANGUAGES
(HOW)
- USING FREE HAND, PICK
UP PORK SANDWICH
- RAISE HAND TO MOUTH
- OPEN MOUTH
- PLACE PORK SANDWICH
IN MOUTH
- RELEASE PORK
SANDWICH
- REMOVE HAND FROM
MOUTH
16. A GROSSLY OVER-SIMPLIFIED COMPARISON…
IMPERATIVELY LANGUAGES
(HOW)
- USING FREE HAND, PICK UP
PORK SANDWICH
- RAISE HAND TO MOUTH
- OPEN MOUTH
- PLACE PORK SANDWICH IN
MOUTH
- RELEASE PORK SANDWICH
- REMOVE HAND FROM
MOUTH
- CLOSE MOUTH
17. A GROSSLY OVER-SIMPLIFIED COMPARISON…
IMPERATIVELY LANGUAGES
(HOW)
- USING FREE HAND, PICK UP
PORK SANDWICH
- RAISE HAND TO MOUTH
- OPEN MOUTH
- PLACE PORK SANDWICH IN
MOUTH
- RELEASE PORK SANDWICH
- REMOVE HAND FROM
MOUTH
- CLOSE MOUTH
- OPEN MOUTH
18. A GROSSLY OVER-SIMPLIFIED COMPARISON…
IMPERATIVELY LANGUAGES
(HOW)
- USING FREE HAND, PICK UP
PORK SANDWICH
- RAISE HAND TO MOUTH
- OPEN MOUTH
- PLACE PORK SANDWICH IN
MOUTH
- RELEASE PORK SANDWICH
- REMOVE HAND FROM MOUTH
- CLOSE MOUTH
- OPEN MOUTH
- CLOSE MOUTH
19. A GROSSLY OVER-SIMPLIFIED COMPARISON…
IMPERATIVELY LANGUAGES
(HOW)
- USING FREE HAND, PICK UP PORK
SANDWICH
- RAISE HAND TO MOUTH
- OPEN MOUTH
- PLACE PORK SANDWICH IN MOUTH
- RELEASE PORK SANDWICH
- REMOVE HAND FROM MOUTH
- CLOSE MOUTH
- OPEN MOUTH
- CLOSE MOUTH
- OPEN MOUTH
20. A GROSSLY OVER-SIMPLIFIED COMPARISON…
IMPERATIVELY LANGUAGES
(HOW)
- USING FREE HAND, PICK UP PORK
SANDWICH
- RAISE HAND TO MOUTH
- OPEN MOUTH
- PLACE PORK SANDWICH IN MOUTH
- RELEASE PORK SANDWICH
- REMOVE HAND FROM MOUTH
- CLOSE MOUTH
- OPEN MOUTH
- CLOSE MOUTH
- OPEN MOUTH
- CLOSE MOUTH
21. A GROSSLY OVER-SIMPLIFIED COMPARISON…
IMPERATIVELY LANGUAGES
(HOW)
- USING FREE HAND, PICK UP PORK
SANDWICH
- RAISE HAND TO MOUTH
- OPEN MOUTH
- PLACE PORK SANDWICH IN MOUTH
- RELEASE PORK SANDWICH
- REMOVE HAND FROM MOUTH
- CLOSE MOUTH
- OPEN MOUTH
- CLOSE MOUTH
- OPEN MOUTH
- CLOSE MOUTH
- SWALLOW
22. A GROSSLY OVER-SIMPLIFIED COMPARISON…
IMPERATIVELY LANGUAGES DECLARATIVE LANGUAGES
(HOW) (WHAT)
- USING FREE HAND, PICK UP PORK
SANDWICH
- RAISE HAND TO MOUTH
- OPEN MOUTH
- PLACE PORK SANDWICH IN MOUTH
- RELEASE PORK SANDWICH
- REMOVE HAND FROM MOUTH
- CLOSE MOUTH
- OPEN MOUTH
- CLOSE MOUTH
- OPEN MOUTH
- CLOSE MOUTH
- SWALLOW
23. A GROSSLY OVER-SIMPLIFIED COMPARISON…
IMPERATIVELY LANGUAGES DECLARATIVE LANGUAGES
(HOW) (WHAT)
- USING FREE HAND, PICK UP PORK
SANDWICH - EAT PORK SANDWICH
- RAISE HAND TO MOUTH
- OPEN MOUTH
- PLACE PORK SANDWICH IN MOUTH
- RELEASE PORK SANDWICH
- REMOVE HAND FROM MOUTH
- CLOSE MOUTH
- OPEN MOUTH
- CLOSE MOUTH
- OPEN MOUTH
- CLOSE MOUTH
- SWALLOW
24. A GROSSLY OVER-SIMPLIFIED COMPARISON…
IMPERATIVELY LANGUAGES DECLARATIVE LANGUAGES
(HOW) (WHAT)
- USING FREE HAND, PICK UP PORK
SANDWICH - EAT PORK SANDWICH
- RAISE HAND TO MOUTH
- OPEN MOUTH
(I SAID “GROSSLY”)
- PLACE PORK SANDWICH IN MOUTH
- RELEASE PORK SANDWICH
- REMOVE HAND FROM MOUTH
- CLOSE MOUTH
- OPEN MOUTH
- CLOSE MOUTH
- OPEN MOUTH
- CLOSE MOUTH
- SWALLOW
30. PROBLEM 1†
IF WE LIST ALL THE NATURAL NUMBERS BELOW 10 THAT ARE MULTIPLES OF 3 OR 5,
WE GET 3, 5, 6 AND 9. THE SUM OF THESE MULTIPLES IS 23.
FIND THE SUM OF ALL THE MULTIPLES OF 3 OR 5 BELOW 1000.
† HTTP://PROJECTEULER.NET/PROBLEM=1
31. PROBLEM 1†
IF WE LIST ALL THE NATURAL NUMBERS BELOW 10 THAT ARE MULTIPLES OF 3 OR 5,
WE GET 3, 5, 6 AND 9. THE SUM OF THESE MULTIPLES IS 23.
FIND THE SUM OF ALL THE MULTIPLES OF 3 OR 5 BELOW 1000.
(VOLUNTEERS?)
† HTTP://PROJECTEULER.NET/PROBLEM=1
32. PROBLEM 1†
IF WE LIST ALL THE NATURAL NUMBERS BELOW 10 THAT ARE MULTIPLES OF 3 OR 5,
WE GET 3, 5, 6 AND 9. THE SUM OF THESE MULTIPLES IS 23.
FIND THE SUM OF ALL THE MULTIPLES OF 3 OR 5 BELOW 1000.
FUNCTIONS WE’LL USE: FILTER, REDUCE
† HTTP://PROJECTEULER.NET/PROBLEM=1
37. PROBLEM 2†
THE SUM OF THE SQUARES OF THE FIRST TEN NATURAL NUMBERS IS,
1^2 + 2^2 + ... + 10^2 = 385
THE SQUARE OF THE SUM OF THE FIRST TEN NATURAL NUMBERS IS,
(1 + 2 + ... + 10)^2 = 55^2 = 3025
HENCE THE DIFFERENCE BETWEEN THE SUM OF THE SQUARES OF THE FIRST TEN
NATURAL NUMBERS AND THE SQUARE OF THE SUM IS 3025 - 385 = 2640.
FIND THE DIFFERENCE BETWEEN THE SUM OF THE SQUARES OF THE FIRST ONE
HUNDRED NATURAL NUMBERS AND THE SQUARE OF THE SUM.
† HTTP://PROJECTEULER.NET/PROBLEM=6
38. PROBLEM 2†
THE SUM OF THE SQUARES OF THE FIRST TEN NATURAL NUMBERS IS,
1^2 + 2^2 + ... + 10^2 = 385
THE SQUARE OF THE SUM OF THE FIRST TEN NATURAL NUMBERS IS,
(1 + 2 + ... + 10)^2 = 55^2 = 3025
HENCE THE DIFFERENCE BETWEEN THE SUM OF THE SQUARES OF THE FIRST TEN
NATURAL NUMBERS AND THE SQUARE OF THE SUM IS 3025 - 385 = 2640.
FIND THE DIFFERENCE BETWEEN THE SUM OF THE SQUARES OF THE FIRST ONE
HUNDRED NATURAL NUMBERS AND THE SQUARE OF THE SUM.
(VOLUNTEERS?)
† HTTP://PROJECTEULER.NET/PROBLEM=6
39. PROBLEM 2†
THE SUM OF THE SQUARES OF THE FIRST TEN NATURAL NUMBERS IS,
1^2 + 2^2 + ... + 10^2 = 385
THE SQUARE OF THE SUM OF THE FIRST TEN NATURAL NUMBERS IS,
(1 + 2 + ... + 10)^2 = 55^2 = 3025
HENCE THE DIFFERENCE BETWEEN THE SUM OF THE SQUARES OF THE FIRST TEN
NATURAL NUMBERS AND THE SQUARE OF THE SUM IS 3025 - 385 = 2640.
FIND THE DIFFERENCE BETWEEN THE SUM OF THE SQUARES OF THE FIRST ONE
HUNDRED NATURAL NUMBERS AND THE SQUARE OF THE SUM.
FUNCTIONS WE’LL USE: MAP, REDUCE
† HTTP://PROJECTEULER.NET/PROBLEM=6
43. PROBLEM 3†
A PALINDROMIC NUMBER READS THE SAME BOTH WAYS. THE LARGEST PALINDROME
MADE FROM THE PRODUCT OF TWO 2-DIGIT NUMBERS IS 9009 = 91 X 99.
FIND THE LARGEST PALINDROME MADE FROM THE PRODUCT OF TWO 3-DIGIT
NUMBERS.
† HTTP://PROJECTEULER.NET/PROBLEM=4
44. PROBLEM 3†
A PALINDROMIC NUMBER READS THE SAME BOTH WAYS. THE LARGEST PALINDROME
MADE FROM THE PRODUCT OF TWO 2-DIGIT NUMBERS IS 9009 = 91 X 99.
FIND THE LARGEST PALINDROME MADE FROM THE PRODUCT OF TWO 3-DIGIT
NUMBERS.
(VOLUNTEERS?)
† HTTP://PROJECTEULER.NET/PROBLEM=4
45. PROBLEM 3†
A PALINDROMIC NUMBER READS THE SAME BOTH WAYS. THE LARGEST PALINDROME
MADE FROM THE PRODUCT OF TWO 2-DIGIT NUMBERS IS 9009 = 91 X 99.
FIND THE LARGEST PALINDROME MADE FROM THE PRODUCT OF TWO 3-DIGIT
NUMBERS.
FUNCTIONS WE’LL USE: MAP, FILTER, REDUCE
† HTTP://PROJECTEULER.NET/PROBLEM=4
49. REALISTIC PROBLEM
ASSUME WE HAVE A BUNCH OF DOCUMENTS, REPRESENTED AS STRINGS (YES, AN
ANEMIC DOMAIN. I SAID IT’D BE REALISTIC).
DESIGN A DOCUMENT DATABASE THAT TAKES A COLLECTION OF DOCUMENTS AND
RETURNS THE SIZE OF THE LARGEST ONE
50. REALISTIC PROBLEM
ASSUME WE HAVE A BUNCH OF DOCUMENTS, REPRESENTED AS STRINGS (YES, AN
ANEMIC DOMAIN. I SAID IT’D BE REALISTIC).
DESIGN A DOCUMENT DATABASE THAT TAKES A COLLECTION OF DOCUMENTS AND
RETURNS THE SIZE OF THE LARGEST ONE
(VOLUNTEERS?)
56. PAIRING CHALLENGE
A COLLATZ SEQUENCE TAKES A NUMBER. IF THAT NUMBER IS EVEN, IT’S DIVIDED BY
BY 2. IF IT’S ODD, IT’S MULTIPLIED BY 3 AND ADDED TO 1. THE RESULTING
NUMBER IS THEN REAPPLIED TO THE COLLATZ FORMULA, UNTIL WE GET BACK
THE NUMBER 1, AT WHICH POINT THE COLLATZ SEQUENCE TERMINATES.
FOR ALL STARTING NUMBERS BETWEEN 1 AND 100, HOW MANY COLLATZ
SEQUENCES HAVE A LENGTH GREATER THAN 15?