defined function toDoubleException res0_1: Double = 1.0 res0_2: Double = 4.2
Meeting 22 - Encapsulating Effects
What questions does your neighbor have?
Links
Announcements
- Remainder of the Semester
- HW 5 and Lab 5 before Thanksgiving break
- Unit 6 (probably one combined assignment) after Thanksgiving break
- Exam 5-6 in the last week of classes before the Final
- Possible extra credit project opportunity
- Exam 3-4 grading in progress
- See how the Review Exercises/Practice Exam translates to the exam.
- Some questions were even exactly the same (1e on giving the small-step rules for
const x = e1; e2
)
- Come see us to make a study plan
- e.g., via the redo policy
- see the Final Exam as an opportunity to show growth from mid-semester exams.
- 25 minutes per unit x 6 units = 150 minutes
Today
- Encapsulating Effects
- Triage Your Questions
- Exam 3-4
Questions?
- Review:
- What is soundness (or unsoundness) of static typing?
Questions?
Error Effects
Exceptions
Option
defined function toDoubleOption
defined function toDoubleNoNaNOption
defined function toDoubleOption res3_1: Option[Double] = Some(value = 1.0) res3_2: Option[Double] = Some(value = 4.2) res3_3: Option[Double] = None
defined function toDoubleNoNaNOption res4_1: Option[Double] = None res4_2: Option[Double] = None res4_3: Option[Double] = None res4_4: Option[Double] = None
defined function addToDoubleOption res5_1: Option[Double] = Some(value = 5.2) res5_2: Option[Double] = None res5_3: Option[Double] = None
Option as a Collection
defined function toDoubleNoNaNOption
defined function addToDoubleOption
defined function toDoubleNoNaNOption
defined function addToDoubleOption res9_1: Option[Double] = Some(value = 5.2) res9_2: Option[Double] = None res9_3: Option[Double] = None
Map, Filter, FlatMap
Exercise 1 Implement map
for Option[A]
s:
defined function map
Exercise 2 Implement filter
for Option[A]
s:
defined function filter
Exercise 3 Implement flatMap
for Option[A]
s:
defined function flatMap
Comprehensions
defined function addToDoubleOption
defined function addToDoubleOption res14_1: Option[Double] = Some(value = 5.2) res14_2: Option[Double] = None res14_3: Option[Double] = None
Either and Try
defined function toDoubleEither defined function addToDoubleEither
import scala.util.Try defined function toDoubleTry defined function addToDoubleTry
defined function toDoubleEither
import scala.util.Try defined function toDoubleTry
Mutation Effects
defined function freshVarImperative
defined function freshVar
counter: Int = 3
defined function freshVarImperative
x0: String = "x0"
x1: String = "x1"
x2: String = "x2"
freshVar: Int => (Int, String) = ammonite.$sess.cmd22$Helper$$Lambda$2244/0x0000000800b87840@3d5721bd counter: Int = 0 counter_: Int = 1 x0: String = "x0" counter__: Int = 2 x1: String = "x1" counter___: Int = 3 x2: String = "x2"
counter: Int = 0 x0: String = "x0" x1: String = "x1" x2: String = "x2"
Encapsulating Mutation Effects
defined type DoWith
res25: Int => (Int, String) = ammonite.$sess.cmd22$Helper$$Lambda$2244/0x0000000800b87840@3d5721bd
defined function map
defined function flatMap
counter: Int = 0
defined function map
defined function flatMap
counter: Int = 0 counter___: Int = 3 x0: String = "x0" x1: String = "x1" x2: String = "x2"
DoWith
defined class DoWith defined object DoWith import DoWith._
defined function freshVar
counter: Int = 0
defined function freshVar res35_1: (Int, String) = (1, "x0")
defined function freshVar res36_1: (Int, String) = (1, "x0")
counter: Int = 0 counter___: Int = 3 x0: String = "x0" x1: String = "x1" x2: String = "x2"
counter: Int = 0 counter___: Int = 3 x0: String = "x0" x1: String = "x1" x2: String = "x2"