Scala: Difference between revisions
Jump to navigation
Jump to search
Line 7: | Line 7: | ||
To get this to work I downloaded scala and intellij. | To get this to work I downloaded scala and intellij. | ||
=Functional Programming= | =Functional Programming= | ||
Some definitions | ==Some definitions== | ||
*Immutability is when we can not allowed to change a variable. Not changing a value means parallelism will work better | *Immutability is when we can not allowed to change a variable. Not changing a value means parallelism will work better | ||
*Expression are something yields a value. e.g. x+y and have not side effects | *Expression are something yields a value. e.g. x+y and have not side effects | ||
Line 14: | Line 14: | ||
**Pure always has the same output, easier to test, parallelisation | **Pure always has the same output, easier to test, parallelisation | ||
**Impure may not have the same output | **Impure may not have the same output | ||
==High Order Functions== | |||
High Order Functions are function which take functions as an argument | |||
High Order functions allow you to provide some of the method as an argument to extract the part which is different | High Order functions allow you to provide some of the method as an argument to extract the part which is different | ||
<br> | <br> |
Revision as of 11:27, 11 January 2021
Introduction
Some features of the language
- Functional and Object Orientated
- Use of immutable Data Structure
- Rich Collections Library
- Better Concurrency Support
To get this to work I downloaded scala and intellij.
Functional Programming
Some definitions
- Immutability is when we can not allowed to change a variable. Not changing a value means parallelism will work better
- Expression are something yields a value. e.g. x+y and have not side effects
- Statements is code which does something. e.g. do(something) and have side effects
- Function is a a relation between a set of inputs and a set of outputs with the property that each input is related to exactly one output.
- Pure always has the same output, easier to test, parallelisation
- Impure may not have the same output
High Order Functions
High Order Functions are function which take functions as an argument
High Order functions allow you to provide some of the method as an argument to extract the part which is different
So given the following to get apples
def getApples(basket: List[Fruilt]) = getFruits(fruitBasket,
(fruit: Fruit) => fruit.name = "apple")
Can be replaced with a more generic
def getFruits(basket: List[Fruilt], filterByFruit: Fruit => Boolean) =
for (fruit <- basket if filterByFruit(fruit)) yield fruit
Scala provide many other HOFs not KnightRider such as
- map
- reduce
- filter
- fold
VS Code
I used https://shunsvineyard.info/2020/11/20/setting-up-vs-code-for-scala-development-on-wsl/ for installing with VS Code.