Functional Programming Principles: Difference between revisions
Adamcolton (talk | contribs) |
Adamcolton (talk | contribs) |
||
| Line 41: | Line 41: | ||
==== Tail Recursion ==== | ==== Tail Recursion ==== | ||
If a function calls itself as its last action, the function's stack frame can be reused. This is tail recursion. | If a function calls itself as its last action, the function's stack frame can be reused. This is tail recursion. | ||
=== Week 2: Higher Order Functions === | |||
==== Higher-Order Function ==== | |||
==== Currying ==== | |||
==== Example: Finding Fixed Points ==== | |||
==== Scala Syntax Summary ==== | |||
==== Functions and Data ==== | |||
==== More Fun with Rationals ==== | |||
==== Evaluation and Operators ==== | |||
== Footer == | == Footer == | ||
[[Category:Coursework]] | [[Category:Coursework]] | ||
[[Category:Notes]] | [[Category:Notes]] | ||
Revision as of 13:30, 9 October 2014
Video Lectors
Getting Started
Tutorial: Working on Assignments
Using Eclipse and SBT
Working from scala repl
InelliJ IDEA
Week 1: Functions & Evaluations
Programming Paradigms
Programming languages are tightly coupled with the Von Neumann architecture. Functional programming is a way to decouple this dependency. It's also good for scalable computing.
Elements of Programming
SBT: scala build tool
call-by-name vs call-by-value. CBV evaluates all values first, CBN does substitution first.
From the next lesson, a good example
def and(x:Boolean, y: =>Boolean): if (x) y else false
Now if we call and(false, loop) where loop is an infinite loop, it will not evaluate the second argument. If we were to write it as
def and(x:Boolean, y:Boolean): if (x) y else false
then it would try to evaluate the second arg and would loop forever.
Evaluation Strategies and Termination
CBV termination → CBN termination but CBN termination !→ CBV termination
Scala uses CBV but you can force CBN with =>
Conditionals and Value Definitions
if (a) b else c
but it's more like ternary.
Blocks and Lexical Scope
A block is delimited by braces. It returns any statement it evaluates.
Tail Recursion
If a function calls itself as its last action, the function's stack frame can be reused. This is tail recursion.