SlideShare a Scribd company logo
Derek Morr, Penn State
@derekmorr
Functional Programming with
Demo code is at
https://github.com/derekmorr/webconf2015
What’s your background?
● Java? C#? C++?
● Python, Ruby, JavaScript?
● Haskell, ML, Erlang, Lisp?
● F#? Scala? Clojure?
● Anything else?
Intro to Functional Programming with Scala - #psuweb
Stack Overflow
Developer Survey
2015
Stack Overflow
Developer Survey
2015
Is this valid?
x = x + 1
x = x + 1
if x is 5, then:
5 = 5 + 1
5 = 6
no, 5 ≠ 6
Intro to Functional Programming with Scala - #psuweb
Purity
// impure
var a = 1
def incr() = {
a += 1
}
// pure
def incr(a: Int) = {
a + 1
}
An example
find . -type f | grep foo | sort | uniq
What’s a side effect?
A lot of stuff we do now:
● Reassigning variables
● Modifying data in-place
● Throwing exceptions
● Interacting w/ the external environment
What’s it like?
Immutability
Value In, Value Out
Emphasis on data flow
Descriptive, not imperative
Immutability
OO makes code understandable by
encapsulating moving parts.
FP makes code understandable by
minimizing moving parts.
— Michael Feathers
An Example
def firstLarger(data: List[Int], threshold: Int): Int = ???
An Example
def firstLarger(data: List[Int], threshold: Int): Int = ???
val numbers = List(3, 2, 4, 7, 9, 8, 1)
firstLarger(numbers, 5) // returns 7
firstLarger(numbers, 10) // returns ?
Method Signatures & Error Signaling
public int firstLarger(final int[] data,
final int threshold) throws NoSuchElementException
Method Signatures & Error Signaling
/**
* ...
* @return null on error
*/
public Integer firstLarger(final int[] data, final int threshold)
“My Billion Dollar Mistake”
“I call it my billion-dollar mistake. It was the invention of the null
reference in 1965... This has led to innumerable errors,
vulnerabilities, and system crashes, which have probably
caused a billion dollars of pain and damage in the last forty
years.”
- Sir Tony Hoare (2009)
Null References: The Billion Dollar Mistake
Use the type system
Option[T]
Some(value: T) None
Option
sealed abstract class Option[T]
// wrapper around a value
final class Some[T](value: T) extends Option[T]
// Singleton marker for no value
// Not null. Safe to dereference.
object None extends Option
Scala Map
val people = Map("Frank" -> "N. Furter",
"Lady" -> "Gaga")
val frank = people.get("Frank")
frank: Option[String] = Some(N. Furter)
val bob = people.get("Bob")
bob: Option[String] = None
Signature
val numbers = List(3, 2, 4, 7, 9, 8, 1)
def firstLarger(data: List[Int], threshold: Int): Option[Int] = ???
firstLarger(numbers, 5) // Some(5)
firstLarger(numbers, 10) // None
Demo
A Detour - Functional Lists
List(1,2,3)
A Detour - Functional Lists
1 :: 2 :: 3 :: Nil
synonym for empty
list
A Detour - Functional Lists
1 :: 2 :: 3 :: Nil
pronounced “cons”
A Detour - Functional Lists
1 :: 2 :: 3 :: Nil
A Detour - Functional Lists
1 :: 2 :: 3 :: Nil
A Detour - Functional Lists
1 :: 2 :: 3 :: NilList(1,2,3) =
A Detour - Functional Lists
1 :: 2 :: 3 :: Nil
head
tail
(also a List)
A Detour - Functional Lists
1 :: 2 :: 3 :: Nil
head
tail
A Detour - Functional Lists
1 :: 2 :: 3 :: Nil
head
tail
A Detour - Functional Lists
1 :: 2 :: 3 :: Nil
A nice overview of Scala
If you want to learn FP - short
FP for OO folks
If you want to learn FP - long
Two good books
First 11 chapters online for free. Some chapters online for free.
40% off at
manning.com
w/ code tsfp14
Pattern Matching
Slides: Czech Scala Enthusiasts: Pattern
Matching and Case Classes (1h45)
See also their blog.
Questions?

More Related Content

What's hot (20)

Java and Data Structure (October - 2016) [Revised Course | Question Paper]
Java and Data Structure (October - 2016) [Revised Course | Question Paper]Java and Data Structure (October - 2016) [Revised Course | Question Paper]
Java and Data Structure (October - 2016) [Revised Course | Question Paper]
Mumbai B.Sc.IT Study
 
Modern Compiler Design
Modern Compiler DesignModern Compiler Design
Modern Compiler Design
nextlib
 
[Question Paper] Web Technology (Revised Course) [September / 2013]
[Question Paper] Web Technology (Revised Course) [September / 2013][Question Paper] Web Technology (Revised Course) [September / 2013]
[Question Paper] Web Technology (Revised Course) [September / 2013]
Mumbai B.Sc.IT Study
 
[Question Paper] Network Security (Revised Syllabus) [April / 2015]
[Question Paper] Network Security (Revised Syllabus) [April / 2015][Question Paper] Network Security (Revised Syllabus) [April / 2015]
[Question Paper] Network Security (Revised Syllabus) [April / 2015]
Mumbai B.Sc.IT Study
 
CSC Millionaire
CSC MillionaireCSC Millionaire
CSC Millionaire
cruzanboy21
 
[Question Paper] Web Technology (Revised Course) [June / 2014]
[Question Paper] Web Technology (Revised Course) [June / 2014][Question Paper] Web Technology (Revised Course) [June / 2014]
[Question Paper] Web Technology (Revised Course) [June / 2014]
Mumbai B.Sc.IT Study
 
[Question Paper] Advanced SQL (Revised Course) [June / 2016]
[Question Paper] Advanced SQL (Revised Course) [June / 2016][Question Paper] Advanced SQL (Revised Course) [June / 2016]
[Question Paper] Advanced SQL (Revised Course) [June / 2016]
Mumbai B.Sc.IT Study
 
Some basic FP concepts
Some basic FP conceptsSome basic FP concepts
Some basic FP concepts
Falko Riemenschneider
 
2011-09-19 Regex Day
2011-09-19 Regex Day2011-09-19 Regex Day
2011-09-19 Regex Day
Staffan Nöteberg
 
[Question Paper] Web Technology (Revised Course) [October / 2016]
[Question Paper] Web Technology (Revised Course) [October / 2016][Question Paper] Web Technology (Revised Course) [October / 2016]
[Question Paper] Web Technology (Revised Course) [October / 2016]
Mumbai B.Sc.IT Study
 
Network Security (Revised Syllabus) [QP / April - 2015]
Network Security (Revised Syllabus) [QP / April - 2015]Network Security (Revised Syllabus) [QP / April - 2015]
Network Security (Revised Syllabus) [QP / April - 2015]
Mumbai B.Sc.IT Study
 
Internet Technology (May – 2016) [Revised Syllabus | Question Paper]
Internet Technology (May – 2016) [Revised Syllabus | Question Paper]Internet Technology (May – 2016) [Revised Syllabus | Question Paper]
Internet Technology (May – 2016) [Revised Syllabus | Question Paper]
Mumbai B.Sc.IT Study
 
Getting started with R
Getting started with RGetting started with R
Getting started with R
CCAFS | CGIAR Research Program on Climate Change, Agriculture and Food Security
 
[Question Paper] Data Communication and Network Standards (Revised Course) [J...
[Question Paper] Data Communication and Network Standards (Revised Course) [J...[Question Paper] Data Communication and Network Standards (Revised Course) [J...
[Question Paper] Data Communication and Network Standards (Revised Course) [J...
Mumbai B.Sc.IT Study
 
Introduction to clojure
Introduction to clojureIntroduction to clojure
Introduction to clojure
Abhishek Mahawar
 
Introduction to Python
Introduction to Python Introduction to Python
Introduction to Python
C. ASWINI
 
Lec216
Lec216Lec216
Lec216
Kudzai Gregory Mavhunga
 
Reduce course notes class xii
Reduce course notes class xiiReduce course notes class xii
Reduce course notes class xii
Syed Zaid Irshad
 
Logic Programming and Prolog
Logic Programming and PrologLogic Programming and Prolog
Logic Programming and Prolog
Sadegh Dorri N.
 
[Question Paper] Advanced SQL (Revised Course) [January / 2017]
[Question Paper] Advanced SQL (Revised Course) [January / 2017][Question Paper] Advanced SQL (Revised Course) [January / 2017]
[Question Paper] Advanced SQL (Revised Course) [January / 2017]
Mumbai B.Sc.IT Study
 
Java and Data Structure (October - 2016) [Revised Course | Question Paper]
Java and Data Structure (October - 2016) [Revised Course | Question Paper]Java and Data Structure (October - 2016) [Revised Course | Question Paper]
Java and Data Structure (October - 2016) [Revised Course | Question Paper]
Mumbai B.Sc.IT Study
 
Modern Compiler Design
Modern Compiler DesignModern Compiler Design
Modern Compiler Design
nextlib
 
[Question Paper] Web Technology (Revised Course) [September / 2013]
[Question Paper] Web Technology (Revised Course) [September / 2013][Question Paper] Web Technology (Revised Course) [September / 2013]
[Question Paper] Web Technology (Revised Course) [September / 2013]
Mumbai B.Sc.IT Study
 
[Question Paper] Network Security (Revised Syllabus) [April / 2015]
[Question Paper] Network Security (Revised Syllabus) [April / 2015][Question Paper] Network Security (Revised Syllabus) [April / 2015]
[Question Paper] Network Security (Revised Syllabus) [April / 2015]
Mumbai B.Sc.IT Study
 
[Question Paper] Web Technology (Revised Course) [June / 2014]
[Question Paper] Web Technology (Revised Course) [June / 2014][Question Paper] Web Technology (Revised Course) [June / 2014]
[Question Paper] Web Technology (Revised Course) [June / 2014]
Mumbai B.Sc.IT Study
 
[Question Paper] Advanced SQL (Revised Course) [June / 2016]
[Question Paper] Advanced SQL (Revised Course) [June / 2016][Question Paper] Advanced SQL (Revised Course) [June / 2016]
[Question Paper] Advanced SQL (Revised Course) [June / 2016]
Mumbai B.Sc.IT Study
 
[Question Paper] Web Technology (Revised Course) [October / 2016]
[Question Paper] Web Technology (Revised Course) [October / 2016][Question Paper] Web Technology (Revised Course) [October / 2016]
[Question Paper] Web Technology (Revised Course) [October / 2016]
Mumbai B.Sc.IT Study
 
Network Security (Revised Syllabus) [QP / April - 2015]
Network Security (Revised Syllabus) [QP / April - 2015]Network Security (Revised Syllabus) [QP / April - 2015]
Network Security (Revised Syllabus) [QP / April - 2015]
Mumbai B.Sc.IT Study
 
Internet Technology (May – 2016) [Revised Syllabus | Question Paper]
Internet Technology (May – 2016) [Revised Syllabus | Question Paper]Internet Technology (May – 2016) [Revised Syllabus | Question Paper]
Internet Technology (May – 2016) [Revised Syllabus | Question Paper]
Mumbai B.Sc.IT Study
 
[Question Paper] Data Communication and Network Standards (Revised Course) [J...
[Question Paper] Data Communication and Network Standards (Revised Course) [J...[Question Paper] Data Communication and Network Standards (Revised Course) [J...
[Question Paper] Data Communication and Network Standards (Revised Course) [J...
Mumbai B.Sc.IT Study
 
Introduction to Python
Introduction to Python Introduction to Python
Introduction to Python
C. ASWINI
 
Reduce course notes class xii
Reduce course notes class xiiReduce course notes class xii
Reduce course notes class xii
Syed Zaid Irshad
 
Logic Programming and Prolog
Logic Programming and PrologLogic Programming and Prolog
Logic Programming and Prolog
Sadegh Dorri N.
 
[Question Paper] Advanced SQL (Revised Course) [January / 2017]
[Question Paper] Advanced SQL (Revised Course) [January / 2017][Question Paper] Advanced SQL (Revised Course) [January / 2017]
[Question Paper] Advanced SQL (Revised Course) [January / 2017]
Mumbai B.Sc.IT Study
 

Similar to Intro to Functional Programming with Scala - #psuweb (20)

Functional programming
Functional programmingFunctional programming
Functional programming
Prashant Kalkar
 
Functional Programming in Scala: Notes
Functional Programming in Scala: NotesFunctional Programming in Scala: Notes
Functional Programming in Scala: Notes
Roberto Casadei
 
Intro to Functional Programming
Intro to Functional ProgrammingIntro to Functional Programming
Intro to Functional Programming
Jordan Parmer
 
Scala for curious
Scala for curiousScala for curious
Scala for curious
Tim (dev-tim) Zadorozhniy
 
A taste of Functional Programming
A taste of Functional ProgrammingA taste of Functional Programming
A taste of Functional Programming
Jordan Open Source Association
 
The joy of functional programming
The joy of functional programmingThe joy of functional programming
The joy of functional programming
Steve Zhang
 
Teach Yourself some Functional Programming with Scala
Teach Yourself some Functional Programming with ScalaTeach Yourself some Functional Programming with Scala
Teach Yourself some Functional Programming with Scala
Damian Jureczko
 
Functional programming is the most extreme programming
Functional programming is the most extreme programmingFunctional programming is the most extreme programming
Functional programming is the most extreme programming
samthemonad
 
Functional Programming 101 for Java 7 Developers
Functional Programming 101 for Java 7 DevelopersFunctional Programming 101 for Java 7 Developers
Functional Programming 101 for Java 7 Developers
Jayaram Sankaranarayanan
 
Scala Introduction
Scala IntroductionScala Introduction
Scala Introduction
Constantine Nosovsky
 
Functional programming in Scala
Functional programming in ScalaFunctional programming in Scala
Functional programming in Scala
Damian Jureczko
 
How to start functional programming (in Scala): Day1
How to start functional programming (in Scala): Day1How to start functional programming (in Scala): Day1
How to start functional programming (in Scala): Day1
Taisuke Oe
 
Intro to functional programming - Confoo
Intro to functional programming - ConfooIntro to functional programming - Confoo
Intro to functional programming - Confoo
felixtrepanier
 
Gentle Introduction to Scala
Gentle Introduction to ScalaGentle Introduction to Scala
Gentle Introduction to Scala
Fangda Wang
 
Demystifying functional programming with Scala
Demystifying functional programming with ScalaDemystifying functional programming with Scala
Demystifying functional programming with Scala
Denis
 
Functional Programming Essentials
Functional Programming EssentialsFunctional Programming Essentials
Functional Programming Essentials
Kelley Robinson
 
Fp for the oo programmer
Fp for the oo programmerFp for the oo programmer
Fp for the oo programmer
Shawn Button
 
Introduction to Scala
Introduction to ScalaIntroduction to Scala
Introduction to Scala
Sujith Sudhakaran
 
Scala Introduction - Synerzip
Scala Introduction - SynerzipScala Introduction - Synerzip
Scala Introduction - Synerzip
Synerzip
 
Ankara Jug - Practical Functional Programming with Scala
Ankara Jug - Practical Functional Programming with ScalaAnkara Jug - Practical Functional Programming with Scala
Ankara Jug - Practical Functional Programming with Scala
Ensar Basri Kahveci
 
Functional Programming in Scala: Notes
Functional Programming in Scala: NotesFunctional Programming in Scala: Notes
Functional Programming in Scala: Notes
Roberto Casadei
 
Intro to Functional Programming
Intro to Functional ProgrammingIntro to Functional Programming
Intro to Functional Programming
Jordan Parmer
 
The joy of functional programming
The joy of functional programmingThe joy of functional programming
The joy of functional programming
Steve Zhang
 
Teach Yourself some Functional Programming with Scala
Teach Yourself some Functional Programming with ScalaTeach Yourself some Functional Programming with Scala
Teach Yourself some Functional Programming with Scala
Damian Jureczko
 
Functional programming is the most extreme programming
Functional programming is the most extreme programmingFunctional programming is the most extreme programming
Functional programming is the most extreme programming
samthemonad
 
Functional Programming 101 for Java 7 Developers
Functional Programming 101 for Java 7 DevelopersFunctional Programming 101 for Java 7 Developers
Functional Programming 101 for Java 7 Developers
Jayaram Sankaranarayanan
 
Functional programming in Scala
Functional programming in ScalaFunctional programming in Scala
Functional programming in Scala
Damian Jureczko
 
How to start functional programming (in Scala): Day1
How to start functional programming (in Scala): Day1How to start functional programming (in Scala): Day1
How to start functional programming (in Scala): Day1
Taisuke Oe
 
Intro to functional programming - Confoo
Intro to functional programming - ConfooIntro to functional programming - Confoo
Intro to functional programming - Confoo
felixtrepanier
 
Gentle Introduction to Scala
Gentle Introduction to ScalaGentle Introduction to Scala
Gentle Introduction to Scala
Fangda Wang
 
Demystifying functional programming with Scala
Demystifying functional programming with ScalaDemystifying functional programming with Scala
Demystifying functional programming with Scala
Denis
 
Functional Programming Essentials
Functional Programming EssentialsFunctional Programming Essentials
Functional Programming Essentials
Kelley Robinson
 
Fp for the oo programmer
Fp for the oo programmerFp for the oo programmer
Fp for the oo programmer
Shawn Button
 
Scala Introduction - Synerzip
Scala Introduction - SynerzipScala Introduction - Synerzip
Scala Introduction - Synerzip
Synerzip
 
Ankara Jug - Practical Functional Programming with Scala
Ankara Jug - Practical Functional Programming with ScalaAnkara Jug - Practical Functional Programming with Scala
Ankara Jug - Practical Functional Programming with Scala
Ensar Basri Kahveci
 
Ad

Recently uploaded (20)

Down the Rabbit Hole – Solving 5 Training Roadblocks
Down the Rabbit Hole – Solving 5 Training RoadblocksDown the Rabbit Hole – Solving 5 Training Roadblocks
Down the Rabbit Hole – Solving 5 Training Roadblocks
Rustici Software
 
FCF- Getting Started in Cybersecurity 3.0
FCF- Getting Started in Cybersecurity 3.0FCF- Getting Started in Cybersecurity 3.0
FCF- Getting Started in Cybersecurity 3.0
RodrigoMori7
 
Developing Schemas with FME and Excel - Peak of Data & AI 2025
Developing Schemas with FME and Excel - Peak of Data & AI 2025Developing Schemas with FME and Excel - Peak of Data & AI 2025
Developing Schemas with FME and Excel - Peak of Data & AI 2025
Safe Software
 
Introduction to Internet of things .ppt.
Introduction to Internet of things .ppt.Introduction to Internet of things .ppt.
Introduction to Internet of things .ppt.
hok12341073
 
Domino IQ – Was Sie erwartet, erste Schritte und Anwendungsfälle
Domino IQ – Was Sie erwartet, erste Schritte und AnwendungsfälleDomino IQ – Was Sie erwartet, erste Schritte und Anwendungsfälle
Domino IQ – Was Sie erwartet, erste Schritte und Anwendungsfälle
panagenda
 
Mastering AI Workflows with FME - Peak of Data & AI 2025
Mastering AI Workflows with FME - Peak of Data & AI 2025Mastering AI Workflows with FME - Peak of Data & AI 2025
Mastering AI Workflows with FME - Peak of Data & AI 2025
Safe Software
 
GIS and FME: The Foundation to Improve the Locate Process of Utilities
GIS and FME: The Foundation to Improve the Locate Process of UtilitiesGIS and FME: The Foundation to Improve the Locate Process of Utilities
GIS and FME: The Foundation to Improve the Locate Process of Utilities
Safe Software
 
Introduction to Typescript - GDG On Campus EUE
Introduction to Typescript - GDG On Campus EUEIntroduction to Typescript - GDG On Campus EUE
Introduction to Typescript - GDG On Campus EUE
Google Developer Group On Campus European Universities in Egypt
 
TimeSeries Machine Learning - PyData London 2025
TimeSeries Machine Learning - PyData London 2025TimeSeries Machine Learning - PyData London 2025
TimeSeries Machine Learning - PyData London 2025
Suyash Joshi
 
Improving Developer Productivity With DORA, SPACE, and DevEx
Improving Developer Productivity With DORA, SPACE, and DevExImproving Developer Productivity With DORA, SPACE, and DevEx
Improving Developer Productivity With DORA, SPACE, and DevEx
Justin Reock
 
TrustArc Webinar - 2025 Global Privacy Survey
TrustArc Webinar - 2025 Global Privacy SurveyTrustArc Webinar - 2025 Global Privacy Survey
TrustArc Webinar - 2025 Global Privacy Survey
TrustArc
 
Scaling GenAI Inference From Prototype to Production: Real-World Lessons in S...
Scaling GenAI Inference From Prototype to Production: Real-World Lessons in S...Scaling GenAI Inference From Prototype to Production: Real-World Lessons in S...
Scaling GenAI Inference From Prototype to Production: Real-World Lessons in S...
Anish Kumar
 
FME Beyond Data Processing Creating A Dartboard Accuracy App
FME Beyond Data Processing Creating A Dartboard Accuracy AppFME Beyond Data Processing Creating A Dartboard Accuracy App
FME Beyond Data Processing Creating A Dartboard Accuracy App
Safe Software
 
Agentic AI: Beyond the Buzz- LangGraph Studio V2
Agentic AI: Beyond the Buzz- LangGraph Studio V2Agentic AI: Beyond the Buzz- LangGraph Studio V2
Agentic AI: Beyond the Buzz- LangGraph Studio V2
Shashikant Jagtap
 
Boosting MySQL with Vector Search -THE VECTOR SEARCH CONFERENCE 2025 .pdf
Boosting MySQL with Vector Search -THE VECTOR SEARCH CONFERENCE 2025 .pdfBoosting MySQL with Vector Search -THE VECTOR SEARCH CONFERENCE 2025 .pdf
Boosting MySQL with Vector Search -THE VECTOR SEARCH CONFERENCE 2025 .pdf
Alkin Tezuysal
 
cnc-drilling-dowel-inserting-machine-drillteq-d-510-english.pdf
cnc-drilling-dowel-inserting-machine-drillteq-d-510-english.pdfcnc-drilling-dowel-inserting-machine-drillteq-d-510-english.pdf
cnc-drilling-dowel-inserting-machine-drillteq-d-510-english.pdf
AmirStern2
 
Integration of Utility Data into 3D BIM Models Using a 3D Solids Modeling Wor...
Integration of Utility Data into 3D BIM Models Using a 3D Solids Modeling Wor...Integration of Utility Data into 3D BIM Models Using a 3D Solids Modeling Wor...
Integration of Utility Data into 3D BIM Models Using a 3D Solids Modeling Wor...
Safe Software
 
“How Qualcomm Is Powering AI-driven Multimedia at the Edge,” a Presentation f...
“How Qualcomm Is Powering AI-driven Multimedia at the Edge,” a Presentation f...“How Qualcomm Is Powering AI-driven Multimedia at the Edge,” a Presentation f...
“How Qualcomm Is Powering AI-driven Multimedia at the Edge,” a Presentation f...
Edge AI and Vision Alliance
 
Azure vs AWS Which Cloud Platform Is Best for Your Business in 2025
Azure vs AWS  Which Cloud Platform Is Best for Your Business in 2025Azure vs AWS  Which Cloud Platform Is Best for Your Business in 2025
Azure vs AWS Which Cloud Platform Is Best for Your Business in 2025
Infrassist Technologies Pvt. Ltd.
 
Creating an Accessible Future-How AI-powered Accessibility Testing is Shaping...
Creating an Accessible Future-How AI-powered Accessibility Testing is Shaping...Creating an Accessible Future-How AI-powered Accessibility Testing is Shaping...
Creating an Accessible Future-How AI-powered Accessibility Testing is Shaping...
Impelsys Inc.
 
Down the Rabbit Hole – Solving 5 Training Roadblocks
Down the Rabbit Hole – Solving 5 Training RoadblocksDown the Rabbit Hole – Solving 5 Training Roadblocks
Down the Rabbit Hole – Solving 5 Training Roadblocks
Rustici Software
 
FCF- Getting Started in Cybersecurity 3.0
FCF- Getting Started in Cybersecurity 3.0FCF- Getting Started in Cybersecurity 3.0
FCF- Getting Started in Cybersecurity 3.0
RodrigoMori7
 
Developing Schemas with FME and Excel - Peak of Data & AI 2025
Developing Schemas with FME and Excel - Peak of Data & AI 2025Developing Schemas with FME and Excel - Peak of Data & AI 2025
Developing Schemas with FME and Excel - Peak of Data & AI 2025
Safe Software
 
Introduction to Internet of things .ppt.
Introduction to Internet of things .ppt.Introduction to Internet of things .ppt.
Introduction to Internet of things .ppt.
hok12341073
 
Domino IQ – Was Sie erwartet, erste Schritte und Anwendungsfälle
Domino IQ – Was Sie erwartet, erste Schritte und AnwendungsfälleDomino IQ – Was Sie erwartet, erste Schritte und Anwendungsfälle
Domino IQ – Was Sie erwartet, erste Schritte und Anwendungsfälle
panagenda
 
Mastering AI Workflows with FME - Peak of Data & AI 2025
Mastering AI Workflows with FME - Peak of Data & AI 2025Mastering AI Workflows with FME - Peak of Data & AI 2025
Mastering AI Workflows with FME - Peak of Data & AI 2025
Safe Software
 
GIS and FME: The Foundation to Improve the Locate Process of Utilities
GIS and FME: The Foundation to Improve the Locate Process of UtilitiesGIS and FME: The Foundation to Improve the Locate Process of Utilities
GIS and FME: The Foundation to Improve the Locate Process of Utilities
Safe Software
 
TimeSeries Machine Learning - PyData London 2025
TimeSeries Machine Learning - PyData London 2025TimeSeries Machine Learning - PyData London 2025
TimeSeries Machine Learning - PyData London 2025
Suyash Joshi
 
Improving Developer Productivity With DORA, SPACE, and DevEx
Improving Developer Productivity With DORA, SPACE, and DevExImproving Developer Productivity With DORA, SPACE, and DevEx
Improving Developer Productivity With DORA, SPACE, and DevEx
Justin Reock
 
TrustArc Webinar - 2025 Global Privacy Survey
TrustArc Webinar - 2025 Global Privacy SurveyTrustArc Webinar - 2025 Global Privacy Survey
TrustArc Webinar - 2025 Global Privacy Survey
TrustArc
 
Scaling GenAI Inference From Prototype to Production: Real-World Lessons in S...
Scaling GenAI Inference From Prototype to Production: Real-World Lessons in S...Scaling GenAI Inference From Prototype to Production: Real-World Lessons in S...
Scaling GenAI Inference From Prototype to Production: Real-World Lessons in S...
Anish Kumar
 
FME Beyond Data Processing Creating A Dartboard Accuracy App
FME Beyond Data Processing Creating A Dartboard Accuracy AppFME Beyond Data Processing Creating A Dartboard Accuracy App
FME Beyond Data Processing Creating A Dartboard Accuracy App
Safe Software
 
Agentic AI: Beyond the Buzz- LangGraph Studio V2
Agentic AI: Beyond the Buzz- LangGraph Studio V2Agentic AI: Beyond the Buzz- LangGraph Studio V2
Agentic AI: Beyond the Buzz- LangGraph Studio V2
Shashikant Jagtap
 
Boosting MySQL with Vector Search -THE VECTOR SEARCH CONFERENCE 2025 .pdf
Boosting MySQL with Vector Search -THE VECTOR SEARCH CONFERENCE 2025 .pdfBoosting MySQL with Vector Search -THE VECTOR SEARCH CONFERENCE 2025 .pdf
Boosting MySQL with Vector Search -THE VECTOR SEARCH CONFERENCE 2025 .pdf
Alkin Tezuysal
 
cnc-drilling-dowel-inserting-machine-drillteq-d-510-english.pdf
cnc-drilling-dowel-inserting-machine-drillteq-d-510-english.pdfcnc-drilling-dowel-inserting-machine-drillteq-d-510-english.pdf
cnc-drilling-dowel-inserting-machine-drillteq-d-510-english.pdf
AmirStern2
 
Integration of Utility Data into 3D BIM Models Using a 3D Solids Modeling Wor...
Integration of Utility Data into 3D BIM Models Using a 3D Solids Modeling Wor...Integration of Utility Data into 3D BIM Models Using a 3D Solids Modeling Wor...
Integration of Utility Data into 3D BIM Models Using a 3D Solids Modeling Wor...
Safe Software
 
“How Qualcomm Is Powering AI-driven Multimedia at the Edge,” a Presentation f...
“How Qualcomm Is Powering AI-driven Multimedia at the Edge,” a Presentation f...“How Qualcomm Is Powering AI-driven Multimedia at the Edge,” a Presentation f...
“How Qualcomm Is Powering AI-driven Multimedia at the Edge,” a Presentation f...
Edge AI and Vision Alliance
 
Azure vs AWS Which Cloud Platform Is Best for Your Business in 2025
Azure vs AWS  Which Cloud Platform Is Best for Your Business in 2025Azure vs AWS  Which Cloud Platform Is Best for Your Business in 2025
Azure vs AWS Which Cloud Platform Is Best for Your Business in 2025
Infrassist Technologies Pvt. Ltd.
 
Creating an Accessible Future-How AI-powered Accessibility Testing is Shaping...
Creating an Accessible Future-How AI-powered Accessibility Testing is Shaping...Creating an Accessible Future-How AI-powered Accessibility Testing is Shaping...
Creating an Accessible Future-How AI-powered Accessibility Testing is Shaping...
Impelsys Inc.
 
Ad

Intro to Functional Programming with Scala - #psuweb

Editor's Notes

  • #4: ask what they want to get out of talk, langs used, who’s used underscore ?
  • #5: Scala is #14 #25 in TIOBE
  • #7: F#, Scala, Clojure are functional. Rust has functional elements.
  • #10: pure function. value in value out. no side effects. side effects = reach outside box for variable access or io. or exceptions.
  • #12: No state. Not mutating a variable, we’re streaming data thru functions. Data isn’t changed during processing.
  • #17: Btw, ??? is valid scala - it’s a symbolic method name for undefined methods. Handy in code instead of TODO
  • #20: Famous computer scientist. Invented Quicksort. Won Turing Award, John von Neumann Medal, Kyoto Prize, Fellow of Royal Society & Royal Academy of Engineering. Even in “null-safe” languages like Ruby, nil is a bad idea - http://www.sandimetz.com/blog/2014/12/19/suspicions-of-nil Also, NULLs in SQL are a bad idea: https://www.youtube.com/watch?v=BC-OBmreMHY
  • #22: explain “sealed” keyword