Scala

From bibbleWiki
Jump to navigation Jump to search

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

def getFruits(basket: List[Fruilt], filterByFruit: Fruit => Boolean) = for (fruit <- basket if filterByFruit(fruit)) yield fruit

VS Code

I used https://shunsvineyard.info/2020/11/20/setting-up-vs-code-for-scala-development-on-wsl/ for installing with VS Code.