Scala: Difference between revisions
Jump to navigation
Jump to search
Line 15: | Line 15: | ||
**Impure may not have the same output | **Impure may not have the same output | ||
*High Order Functions are function which take functions as an argument | *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> | ||
Line 29: | Line 28: | ||
for (fruit <- basket if filterByFruit(fruit)) yield fruit | for (fruit <- basket if filterByFruit(fruit)) yield fruit | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<br> | |||
Scala provide many other HOFs or KnightRider such as | |||
*map | |||
*reduce | |||
*filter | |||
*fold | |||
=VS Code= | =VS Code= | ||
I used https://shunsvineyard.info/2020/11/20/setting-up-vs-code-for-scala-development-on-wsl/ for installing with VS Code. | I used https://shunsvineyard.info/2020/11/20/setting-up-vs-code-for-scala-development-on-wsl/ for installing with VS Code. |
Revision as of 11:23, 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 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 or 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.