- 01 β ΠΠ° ΠΊΡΡΡΠ°
- 02 β ΠΡΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π²ΡΠ² ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅ ΡΡΡ Scala [ΠΊΠΎΠ΄]
- Scala ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ
scala
,scalac
, REPL- sbt, ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ, ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½Π΅, ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ ΠΈ ΡΠ΅ΡΡΠ²Π°Π½Π΅
- Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ
- Π’ΠΈΠΏΠΎΠ²Π΅ ΠΈ Π»ΠΈΡΠ΅ΡΠ°Π»ΠΈ
- ΠΠ΅ΡΠΈΠ½ΠΈΡΠΈΠΈ β
val
,var
,def
,type
, ΡΡΠ½ΠΊΡΠΈΠΈ. Type inference - Π€Π°ΠΉΠ»ΠΎΠ²Π΅ ΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΈ
- Π‘ΡΠΎΠΉΠ½ΠΎΡΡΠΈΡΠ΅ ΠΊΠ°ΡΠΎ ΠΎΠ±Π΅ΠΊΡΠΈ (Ρ ΠΌΠ΅ΡΠΎΠ΄ΠΈ)
if
ΠΊΠΎΠ½ΡΡΠΎΠ»Π½Π° ΡΡΡΡΠΊΡΡΡΠ°- "ΠΡΠΈΡΠΊΠΎ Π΅ ΠΈΠ·ΡΠ°Π· ΠΈΠ»ΠΈ Π΄Π΅ΡΠΈΠ½ΠΈΡΠΈΡ". ΠΠΎΠ½ΡΡΠΎΠ»Π½ΠΈΡΠ΅ ΡΡΡΡΠΊΡΡΡΠΈ ΠΈ Π±Π»ΠΎΠΊΠ²Π΅ΡΠ΅ ΠΊΠ°ΡΠΎ ΠΈΠ·ΡΠ°Π·ΠΈ
- Π’ΠΈΠΏΠΎΠ²Π° ΠΉΠ΅Π°ΡΡ
ΠΈΡ.
Any
,AnyVal
,AnyRef
,Unit
,Null
,Nothing
- Java Memory Model
- ΠΠΎΠ½ΡΡΠΎΠ»Π½ΠΈ ΡΡΡΡΠΊΡΡΡΠΈ ΡΡΡ ΡΡΡΠ°Π½ΠΈΡΠ½ΠΈ Π΅ΡΠ΅ΠΊΡΠΈ β
while
,try/catch
(ΠΈ ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ),for
- ΠΡΠ΅ ΠΊΠΎΠ½ΡΡΠΎΠ»Π½ΠΈ ΡΡΡΡΠΊΡΡΡΠΈ Π±Π΅Π· ΡΡΡΠ°Π½ΠΈΡΠ½ΠΈ Π΅ΡΠ΅ΠΊΡΠΈ β pattern matching, (ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π΅Π½)
for
- Π‘ΡΡΡΠ°Π²Π½ΠΈ ΡΠΈΠΏΠΎΠ²Π΅
- Ρ Π΅ΡΠ΅ΡΠΎΠ³Π΅Π½Π½ΠΈ β Π½Π°ΡΠ΅Π΄Π΅Π½ΠΈ nβΡΠΎΡΠΊΠΈ (tuples)
- Ρ
ΠΎΠΌΠΎΠ³Π΅Π½Π½ΠΈ β
Range
,List[A]
,Set[A]
,Map[K, V]
- ΠΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π½Π°Π΄ Ρ
ΠΎΠΌΠΎΠ³Π΅Π½Π½ΠΈ ΠΊΠΎΠ»Π΅ΠΊΡΠΈΠΈ β
isEmpty
,head
,tail
,take
,drop
- ΠΠΎΠΌΠΎΡΠ΅Π½ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΠΏΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ
- ΡΠΈΠΏΠΎΠ²ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ (generics)
- overloading
- default ΡΡΠΉΠ½ΠΎΡΡΠΈ Π½Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ
- ΠΈΠΌΠ΅Π½ΡΠ²Π°Π½ΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΈ
- ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ² Π±ΡΠΎΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ
- Π€ΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅
- ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ
- ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎ ΡΡΠ΅ΡΡ ΠΈΠΌΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅
- Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ Π½Π° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΈΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈ
- Substitution ΠΌΠΎΠ΄Π΅Π» Π½Π° ΠΈΠ·ΡΠΈΡΠ»Π΅Π½ΠΈΠ΅. ΠΡΠ΅Π΄Π°Π²Π°Π½Π΅ Π½Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅ ΠΏΠΎ ΡΡΠΎΠΉΠ½ΠΎΡΡ ΠΈ ΠΏΠΎ ΠΈΠΌΠ΅
- Π Π΅ΡΠ΅ΡΠ΅Π½ΡΠ½Π° ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎΡΡ
- Scala ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ
- 03 β ΠΠΠ Π²ΡΠ² ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π΅Π½ Π΅Π·ΠΈΠΊ [ΠΊΠΎΠ΄]
- ΠΠ±Π΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠ°Π½ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅ ΠΊΠ°ΡΠΎ ΡΠΈΡΡΠ΅ΠΌΠ° ΠΎΡ ΠΎΠ±Π΅ΠΊΡΠΈ
- Π‘ΡΠΎΠ±ΡΠ΅Π½ΠΈΡ, Π΅Π½ΠΊΠ°ΠΏΡΡΠ»Π°ΡΠΈΡ ΠΈ late-binding
- ΠΠΠ ΠΊΠ°ΡΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ, ΠΎΡΡΠΎΠ³ΠΎΠ½Π°Π»Π½Π° Π½Π° Π€Π. ΠΠΠ Π² Scala
- ΠΠ΅ΡΠΈΠ½ΠΈΡΠ°Π½Π΅ Π½Π° ΠΊΠ»Π°Ρ. ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ Π½Π° ΠΊΠ»Π°Ρ (ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠΈ), ΡΠ»Π΅Π½ΠΎΠ²Π΅, ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΈ Π½Π° Π΄ΠΎΡΡΡΠΏ
- ΠΠ΅ΡΠΈΠ½ΠΈΡΠ°Π½Π΅ Π½Π° ΠΎΠ±Π΅ΠΊΡ
apply
ΠΌΠ΅ΡΠΎΠ΄. ΠΠ±Π΅ΠΊΡΠΈ, ΠΏΡΠΈΠ»ΠΎΠΆΠΈΠΌΠΈ ΠΊΠ°ΡΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ- ΠΡΠΈΠ΄ΡΡΠΆΠ°Π²Π°ΡΠΈ ΠΎΠ±Π΅ΠΊΡΠΈ
- implicit ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΠΈ
case
ΠΊΠ»Π°ΡΠΎΠ²Π΅ Π·Π° Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Π½Π΅ Π½Π° Π½Π΅ΠΈΠ·ΠΌΠΈΠ½ΠΈΠΌΠΈ value ΠΎΠ±Π΅ΠΊΡΠΈ- ΠΠ±ΡΡΡΠ°ΠΊΡΠ½ΠΈ ΡΠΈΠΏΠΎΠ²Π΅ β trait
- Uniform Access Principle
- ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅Π½ΠΎ Π½Π°ΡΠ»Π΅Π΄ΡΠ²Π°Π½Π΅
- ΠΏΠΎΠ΄ΡΠΈΠΏΠΎΠ² ΠΏΠΎΠ»ΠΈΠΌΠΎΡΡΠΈΠ·ΡΠΌ
import
ΠΈexport
ΠΊΠ»Π°ΡΠ·ΠΈ- ΠΠ±Π²ΠΈΠ²Π°ΡΠΈ
AnyVal
ΠΊΠ»Π°ΡΠΎΠ²Π΅. Type safety ΡΡΠ΅Π· ΠΎΠ±Π²ΠΈΠ²Π°Π½Π΅ Π½Π° ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈ ΡΠΈΠΏΠΎΠ²Π΅ - Π‘ΡΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡ Π½Π° ΡΠΈΠΏΠΎΠ²Π΅. ΠΠΎΠΌΠΈΠ½Π°Π»Π½ΠΎ ΠΈ Π‘ΡΡΡΠΊΡΡΡΠ½ΠΎ ΡΠΈΠΏΠΈΠ·ΠΈΡΠ°Π½Π΅
- Π‘ΡΡΡΠΊΡΡΡΠ½ΠΎ ΡΠΈΠΏΠΈΠ·ΠΈΡΠ°Π½Π΅ Π² Scala
- Π’ΠΈΠΏΠΎΠ²Π° Π°Π»Π³Π΅Π±ΡΠ°. ΠΠ±Π΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π½Π° ΡΠΈΠΏΠΎΠ²Π΅
- The Expression Problem Π² Scala. ΠΠΠ ΡΡΠ΅ΡΡ Π€Π ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ
- Extension ΠΌΠ΅ΡΠΎΠ΄ΠΈ β ΡΠ΅ΡΡΠΎΠ°ΠΊΡΠΈΠ²Π½ΠΎ Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ Π½Π° ΠΌΠ΅ΡΠΎΠ΄ΠΈ ΠΊΡΠΌ ΡΠΈΠΏ
- Π’Π΅ΡΡΠΎΠ²Π΅
- ΠΠ±Π΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠ°Π½ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅ ΠΊΠ°ΡΠΎ ΡΠΈΡΡΠ΅ΠΌΠ° ΠΎΡ ΠΎΠ±Π΅ΠΊΡΠΈ
- 04 β ΠΡΠ½ΠΎΠ²Π½ΠΈ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ΠΈ ΠΏΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅ [ΠΊΠΎΠ΄]
- Π Π΅ΠΊΡΡΡΠΈΡ
- ΠΈΡΠ΅ΡΠ°ΡΠΈΡ ΡΡΠ΅Π· ΡΠ΅ΠΊΡΡΡΠΈΡ
- ΡΠ΅ΠΊΡΡΡΠΈΡ ΠΈ substitution ΠΌΠΎΠ΄Π΅Π»Π°
- ΠΎΠΏΠ°ΡΠΊΠΎΠ²Π° ΡΠ΅ΠΊΡΡΡΠΈΡ. Π Π΅ΠΊΡΡΡΠΈΡ ΡΡΠ΅Π· Π°ΠΊΡΠΌΡΠ»Π°ΡΠΎΡΠΈ
- ΡΠ΅ΠΊΡΡΡΠΈΡ ΠΏΠΎ ΠΊΠΎΠ»Π΅ΠΊΡΠΈΠΈ
- ΠΠ΅ΠΈΠ·ΠΌΠ΅Π½ΠΈΠΌΠΎΡΡ ΠΈ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΠΈΠΌΠΈ ΡΡΡΡΠΊΡΡΡΠΈ ΠΎΡ Π΄Π°Π½Π½ΠΈ
- Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΠΈΠΌΠΈ ΠΎΠ±Π΅ΠΊΡΠΈ Π²ΡΠ² Π²ΡΠ΅ΠΌΠ΅ΡΠΎ
- persistence (ΠΏΠ΅ΡΡΠΈΡΡΠ΅Π½ΡΠ½ΠΎΡΡ) ΠΈ structural sharing. Π ΠΎΠ»Ρ Π½Π° Garbage Collector-Π°
- ΠΏΠ΅ΡΡΠΈΡΡΠ΅Π½ΡΠ½ΠΎΡΡ ΠΈ structural sharing ΠΏΡΠΈ ΡΠΏΠΈΡΡΠΊ (
List
) Vector
β ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ Π·Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»Π΅Π½ Π΄ΠΎΡΡΡΠΏ ΠΈ Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ Π½Π° Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈ Π² Π½Π°ΡΠ°Π»ΠΎΡΠΎ ΠΈ Π² ΠΊΡΠ°Ρ. ΠΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ½Π° ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ- ΡΠΈΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΈ ΡΡΡΡΠΊΡΡΡΠΈ ΠΎΡ Π΄Π°Π½Π½ΠΈ. ΠΠ΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎ ΡΠΏΠΎΠ΄Π΅Π»ΡΠ½Π΅ Π½Π° ΡΠ°ΠΊΠΈΠ²Π° ΡΡΡΡΠΊΡΡΡΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ ΠΈ Π½ΠΈΡΠΊΠΈ
Set
ΠΈMap
ΠΊΠ°ΡΠΎ ΡΠΈΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΈ ΡΡΡΡΠΊΡΡΡΠΈ
- Π€ΡΠ½ΠΊΡΠΈΠΈΡΠ΅ ΠΊΠ°ΡΠΎ ΠΏΡΡΠ²ΠΎΠΊΠ»Π°ΡΠ½ΠΈ ΠΎΠ±Π΅ΠΊΡΠΈ
- Π»Π°ΠΌΠ±Π΄Π° ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π΅Π½ ΡΠΈΠΏ
- ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π°Π½Π΅ Π½Π°
def
ΡΡΠ½ΠΊΡΠΈΠΈ/ΠΌΠ΅ΡΠΎΠ΄ΠΈ ΠΊΡΠΌ ΠΎΠ±Π΅ΠΊΡΠ½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ β eta expansion - ΡΠ°ΡΡΠΈΡΠ½ΠΎ ΠΏΡΠΈΠ»Π°Π³Π°Π½Π΅ Π½Π° Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΈ
- ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΡ ΠΏΠΎ-Π²ΠΈΡΠΎΠΊ ΡΠ΅Π΄.
filter
,map
,reduce
,fold
- ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡΠΈΡ Π½Π° ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΡ ΠΏΠΎ-Π²ΠΈΡΠΎΠΊ ΡΠ΅Π΄
- ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠΏΠΈΡΡΡΠΈ Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ.
- Π³ΡΡΠΏΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ
- type inference
- ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° ΡΠΎΠ±ΡΡΠ²Π΅Π½ΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ
- currying
- ΠΠΏΠ΅ΡΠ°ΡΠΈΠΈ Ρ ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΠΎΠΌΠΏΠΎΠ·ΠΈΡΠΈΡ, ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π°Π½Π΅ ΠΊΡΠΌ
curried
ΠΈΠ»ΠΈtupled
ΡΠΎΡΠΌΠΈ
- ΠΠΎΠΌΠΏΠΎΠ·ΠΈΡΠΈΡ Π½Π° ΡΡΠ½ΠΊΡΠΈΠΈ
- ΠΠ·ΡΠ°Π·ΡΠ²Π°Π½Π΅ ΡΡΠ΅Π· ΡΠΈΠΏΠΎΠ²Π΅
- Π Π΅ΠΊΡΡΡΠΈΡ
- 05 β Fold ΠΈ ΠΊΠΎΠ»Π΅ΠΊΡΠΈΠΈ
- ΠΠ±ΡΡΡΠ°ΠΊΡΠΈΡ ΡΡΠ΅Π·
fold
,foldLeft
ΠΈfoldRight
. ΠΠ·ΡΠ°Π·ΡΠ²Π°Π½Π΅ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΡΠ΅Π· ΡΡΡ - ΠΠ΅Π°ΡΡ
ΠΈΡ ΠΈ Π΄ΠΈΠ·Π°ΠΉΠ½ Π½Π° ΠΊΠΎΠ»Π΅ΠΊΡΠΈΠΈΡΠ΅ Π² Scala.
- Uniform Return Type principle
- ΠΠΎΠ»Π΅ΠΊΡΠΈΠΈΡΠ΅ ΠΊΠ°ΡΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ (ΠΏΡΠΈΠΌΠ΅ΡΠΈ Π·Π°
Seq
,Set
,Map
)
- Π§Π΅ΡΡΠΈΡΠ½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ. Π§Π°ΡΡΠΈΡΠ½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΡΠ΅Π·
case
Π±Π»ΠΎΠΊΠΎΠ²Π΅ - ΠΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π²ΡΡΡ
Ρ ΠΊΠΎΠ»Π΅ΠΊΡΠΈΠΈ β
partition
,span
,splitAt
;flatten
,flatMap
,zip
,groupBy
ΠΈ Π΄ΡΡΠ³ΠΈ - Π’Π°ΠΉΠ½Π°ΡΠ° Π·Π°
for
ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈΡΠ΅ β ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ½Π° Π·Π°Ρ Π°Ρ Π²ΡΡΡ Ρmap
,flatMap
ΠΈwithFilter
(filter
) - Lazy ΠΊΠΎΠ»Π΅ΠΊΡΠΈΠΈ
- Π½Π΅ΡΡΡΠΈΠΊΡΠ½ΠΈ view-ΡΠ° Π½Π° ΠΊΠΎΠ»Π΅ΠΊΡΠΈΠΈ
- lazy ΡΠΏΠΈΡΡΡΠΈ Ρ ΠΌΠ΅ΠΌΠΎΠΈΠ·Π°ΡΠΈΡ
- ΠΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Π½Π°
LazyList
- ΠΠ±ΡΡΡΠ°ΠΊΡΠΈΡ ΡΡΠ΅Π·
- 06 β Pattern matching ΠΈ Π°Π»Π³Π΅Π±ΡΠΈΡΠ½ΠΈ ΡΠΈΠΏΠΎΠ²Π΅ ΠΎΡ Π΄Π°Π½Π½ΠΈ (ADTs)
- Pattern matching. ΠΠ΅ΡΡΡΡΠΊΡΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΎΠ±Π΅ΠΊΡΠΈ
- Pattern matching Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΌΠ΅ΡΡΠ°
case
Π±Π»ΠΎΠΊΠΎΠ²Π΅ β ΠΏΡΠΈmatch
ΠΈΠ»ΠΈ Π½Π° ΠΌΡΡΡΠ°ΡΠ°, ΠΊΡΠ΄Π΅ΡΠΎ ΡΠ΅ ΠΎΡΠ°ΠΊΠ²Π°Ρ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΠ»ΠΈ ΡΠ°ΡΡΠΈΡΠ½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΡΠΈΠΌΠ΅ΡΠΈ Ρmap
ΠΈcollect
- pattern bindings β ΡΡΠΏΠΎΡΡΠ°Π²ΡΠ½Π΅ Ρ Π΅Π΄ΠΈΠ½ΠΈΡΠ΅Π½ pattern ΠΏΡΠΈ
for
(ΠΎΡΠ»ΡΠ²ΠΎ Π½Π° Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠΈ ΠΈ Π΄Π΅ΡΠΈΠ½ΠΈΡΠΈ) ΠΈ ΠΏΡΠΈval
Π΄Π΅ΡΠΈΠ½ΠΈΡΠΈΠΈ
- ΠΠ»Π³Π΅Π±ΡΠΈΡΠ½ΠΈ ΡΠΈΠΏΠΎΠ²Π΅ ΠΎΡ Π΄Π°Π½Π½ΠΈ. ΠΡΠΈΠΌΠ΅ΡΠΈ
- product ΡΠΈΠΏΠΎΠ²Π΅.
case
ΠΊΠ»Π°ΡΠΎΠ²Π΅, Π½Π°ΡΠ΅Π΄Π΅Π½ΠΈ n-ΡΠΎΡΠΊΠΈ ΠΈ Π΄ΡΡΠ³ΠΈ - sum ΡΠΈΠΏΠΎΠ²Π΅. ΠΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΡΡΠ΅Π·
sealed trait
ΠΈenum
- product ΡΠΈΠΏΠΎΠ²Π΅.
- Type bounds (ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ Π²ΡΡΡ Ρ ΡΠΈΠΏΠΎΠ²ΠΈΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ).
- ΠΠ°ΡΠΈΠ°Π½ΡΠ½ΠΎΡΡ. ΠΠΎΠ²Π°ΡΠΈΠ°Π½ΡΠ½ΠΎΡΡ ΠΈ ΠΊΠΎΠ½ΡΡΠ°Π²Π°ΡΠΈΠ°Π½ΡΠ½ΠΎΡΡ Π½Π° ΡΠΈΠΏΠΎΠ²Π΅. ΠΠ°ΡΠΈΠ°Π½ΡΠ½ΠΎΡΡ ΠΏΡΠΈ ΡΠΈΠΏΠΎΠ²Π΅ΡΠ΅ Π·Π° ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠΈ
- ΠΠ·ΡΠ°Π·ΡΠ²Π°Π½Π΅ Π½Π° ΠΎΠΏΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡ.
null
ΠΊΠ°ΡΠΎ Π³ΡΠ΅ΡΠΊΠ° Π·Π° ΠΌΠΈΠ»ΠΈΠ°ΡΠ΄ Π΄ΠΎΠ»Π°ΡΠ°. ΠΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Π½Π°Option
ΡΠΈΠΏ - ΠΠΎΠ»Π΅Π·Π½ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π²ΡΡΡ
Ρ
Option
. ΠΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π²ΠΌΠ΅ΡΡΠΎ pattern matching - ΠΠ΅ΡΡΡΡΠΊΡΡΡΠΈΡΠ°Π½Π΅ ΡΡΠ΅Π· Π΅ΠΊΡΡΡΠ°ΠΊΡΠΎΡΠΈ. ΠΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ ΠΈΠΌ Π² pattern matching ΡΡΠΊ
- 07 β ΠΡΠ΅ΠΊΡΠΈ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° Π³ΡΠ΅ΡΠΊΠΈ
- Π€ΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π΅Π½ Π΄ΠΈΠ·Π°ΠΉΠ½ β ΠΏΡΠ΅ΠΌΠ°Ρ Π²Π°Π½Π΅ Π½Π° Π½Π΅Π»Π΅Π³Π°Π»Π½ΠΈΡΠ΅ ΡΡΡΡΠΎΡΠ½ΠΈΡ
- ΠΡ ΡΠ°ΡΡΠΈΡΠ½ΠΈ ΠΊΡΠΌ ΡΠΎΡΠ°Π»Π½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ
- ΠΡΠ΅ΠΊΡΠΈ
- ΠΠΈΠ΄ΠΎΠ²Π΅ Π΅ΡΠ΅ΠΊΡΠΈ β ΡΠ°ΡΡΠΈΡΠ½ΠΎΡΡ, ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ/Π³ΡΠ΅ΡΠΊΠΈ, Π½Π΅Π΄Π΅ΡΠ΅ΡΠΌΠΈΠ½ΠΈΠ·ΡΠΌ, Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ/ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ, Π»ΠΎΠ³Π²Π°Π½Π΅, ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΠΎ ΡΡΡΡΠΎΡΠ½ΠΈΠ΅, Π²Ρ ΠΎΠ΄/ΠΈΠ·Ρ ΠΎΠ΄, Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎΡΡ, ΠΈ Π΄ΡΡΠ³ΠΈ. Π’ΠΈΠΏΠΎΠ²Π΅ Π·Π°Π΄ ΡΡΡ
- ΠΡΠΎΠ±Π»Π΅ΠΌΠΈΡΠ΅ ΠΏΡΠΈ ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½ΠΈΡΡΠ°
- ΠΠΎΠ΄Π΅Π»ΠΈΡΠ°Π½Π΅ Π½Π° Π³ΡΠ΅ΡΠ½ΠΈ ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ ΡΡΠ΅Π·
Option
,Try
ΠΈEither
- Π·Π°ΠΌΡΠ½Π° Π½Π° ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½ΠΈΡΡΠ° Ρ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΈ ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡΠ½ΠΈ Π΅ΡΠ΅ΠΊΡΠΈ
- ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠ°Π½Π΅ Π½Π° Π³ΡΠ΅ΡΠΊΠΈΡΠ΅ ΠΊΠ°ΡΠΎ Π΄ΠΎΠΌΠ΅ΠΉΠ½ ΡΡΡΡΠΊΡΡΡΠΈ ΠΈ Π΄ΠΎΠΌΠ΅ΠΉΠ½ Π»ΠΎΠ³ΠΈΠΊΠ°
- ΠΡΠ΅ΠΊΡ Π·Π° Π²Ρ ΠΎΠ΄/ΠΈΠ·Ρ ΠΎΠ΄. IO. ΠΡΠ΅Π΄ΠΈΠΌΡΡΠ²Π° Π½Π° IO
- Π Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° ΡΠΈΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡΠ½ΠΎ ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΏΠ»Π°Π½ (Π±Π΅Π· ΡΡΡΠ°Π½ΠΈΡΠ½ΠΈ Π΅ΡΠ΅ΠΊΡΠΈ) ΠΎΡ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΠ»Π°Π½Π° (Π²ΠΎΠ΄Π΅ΡΠΎ Π΄ΠΎ ΡΡΡΠ°Π½ΠΈΡΠ½ΠΈ Π΅ΡΠ΅ΠΊΡΠΈ)
- 08 β ΠΠΎΠ½ΠΊΡΡΠ΅Π½ΡΠ½ΠΎΡΡ [ΠΊΠΎΠ΄]
- Π’ΡΠ°Π½ΡΡΠΎΡΠΌΠΈΡΠ°ΡΠΈ, ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΈ ΠΈ ΡΠ΅Π°ΠΊΡΠΈΠ²Π½ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ
- Π₯Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ Π½Π° ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠ²ΡΡ
- Π¦Π΅Π»: ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈ, ΠΊΠΎΠΈΡΠΎ Π΄Π° ΡΠ° ΡΠ°ΡΡ ΠΎΡ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠ²ΡΡ ΠΈ Π΄Π° Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²Π°Ρ Ρ Π½Π΅Π³ΠΎ
- ΠΠΎΠ½ΠΊΡΡΠ΅Π½ΡΠ½ΠΎΡΡ ΠΈ ΠΏΠ°ΡΠ°Π»Π΅Π»ΠΈΠ»ΠΈΠ·ΡΠΌ β ΠΏΡΠΈΠΏΡΠΎΠΊΡΠΈΡΠΈΠ΅ ΠΈ ΡΠ°Π·Π»ΠΈΠΊΠΈ Π½Π° ΡΠ΅ΡΠΌΠΈΠ½ΠΈΡΠ΅
- ΠΠΈΡΡΡΠΈΠ±ΡΡΠΈΡΠ°Π½ΠΎΡΡ
- ΠΡΠΈΠΌΠ΅ΡΠΈ Π·Π° ΠΊΠΎΠ½ΠΊΡΡΠ΅Π½ΡΠ½ΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈ
- ΠΠ°ΠΊΠ²ΠΎ ΠΏΡΠ°Π²ΠΈ Π΅Π΄ΠΈΠ½ ΠΌΠΎΠ΄Π΅Π» ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡ? ΠΡΠΈΠΌΠ΅ΡΠ½ΠΈ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ
- ΠΡΠΆΠ΄Π° ΠΎΡ ΠΊΠΎΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠΎΠ½ΠΊΡΡΠ΅Π½ΡΠ½ΠΈ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²ΠΈ
- ΠΠΈΡΠΊΠΈ, ΠΊΠΎΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ Π½ΠΈΡΠΊΠΈ (ΡΡΠ΅Π· ΡΠΏΠΎΠ΄Π΅Π»Π΅Π½ΠΎ ΡΡΡΡΠΎΡΠ½ΠΈΠ΅), happens-before ΡΠ΅Π»Π°ΡΠΈΡ Π²ΡΡΡ Ρ JVM, ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ Π½Π° Π½ΠΈΡΠΊΠΈΡΠ΅
- Π Π΅Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡ ΠΈ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎΡΡ ΡΡΠ΅Π· callbacks. ΠΡΠ΅ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Π½ΠΈΡΠΊΠΈ ΡΡΠ΅Π· thread pool-ΠΎΠ²Π΅. ΠΡΠΎΠ±Π»Π΅ΠΌΠΈ Π½Π° callbacks
- Future β Π΅ΡΠ΅ΠΊΡ Π·Π° Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎΡΡ. ΠΠΎΠ΄Π΅Π»ΠΈΡΠ°Π½Π΅ Π½Π° Future, ΡΠ»Π΅Π΄Π²Π°ΠΉΠΊΠΈ ΠΏΠΎΠ»Π·ΠΈΡΠ΅ ΠΈ ΠΏΡΠΈΠ½ΡΠΈΠΏΠΈΡΠ΅ Π½Π° IO
- ΠΡΠ΅Ρ
Π²ΡΡΠ»ΡΠ½Π΅ Π½Π° ΡΠ²ΠΎΠΉΡΡΠ²Π°ΡΠ° Π½Π° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΈΡΠ΅ ΠΈΠ·ΡΠ°Π·ΠΈ Π²ΡΡΡ
Ρ Π΅ΡΠ΅ΠΊΡΠΈ.
map
,flatMap
,zip
ΠΈzipMap
ΠΊΠ°ΡΠΎ ΡΡΠ΅Π΄ΡΡΠ²ΠΎ Π·Π° ΠΎΠΏΠΈΡΠ²Π°Π½Π΅ Π½Π° Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Π²ΡΡΡ Ρ Π΅ΡΠ΅ΠΊΡΠΈ Π²ΠΌΠ΅ΡΡΠΎ Π²ΡΡΡ Ρ ΡΡΡΠΎΠ²ΠΈ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ - Eager ΠΈ lazy Future-ΠΈ
- ΠΠΈΠ·Π°ΠΉΠ½ ΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° eager Future. ΠΡΡΠ·ΠΊΠ° ΠΊΡΠΌ Π²ΡΠ½ΡΠ½ΠΈΡ β ΡΡΠ΅Π· Promise. ΠΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅
- ΠΠΎΠΌΠΏΠΎΠ·ΠΈΡΠ½ΠΎΡΡ, ΡΠ΅Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡ ΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ Π½Π° Future
- ΠΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΈ HTTP client ΠΈ HTTP server ΡΡΠ΅Π· Future
- ΠΠΎΠ½Π·ΠΎΠ»Π΅Π½ Π²Ρ ΠΎΠ΄/ΠΈΠ·Ρ ΠΎΠ΄ ΡΡΡ Future β ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΎΡΠ΄Π΅Π»Π΅Π½ thread pool Π·Π° Π±Π»ΠΎΠΊΠΈΡΠ°ΡΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ
- ΠΡΠΈΠΌΠ΅Ρ β web server Π·Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΎΡ ΠΊΠ½ΠΈΠ³ΠΈ ΡΡΡ web ΠΊΠ»ΠΈΠ΅Π½Ρ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°Ρ ΡΠ°Π·Π³Π»Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π° ΠΎΡ ΠΊΠ½ΠΈΠ³ΠΈ
- ΠΠΎΠΌΠΎΡΠ½ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π²ΡΡΡ
Ρ Future
- ΡΡΠ°Π½ΡΡΠΎΡΠΌΠ°ΡΠΈΡ Π½Π° ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Future-ΠΈ (
sequence
,firstCompletedOf
) - ΠΈ Π½Π° Π³ΡΠ΅ΡΠΊΠΈ (
recover
,recoverWith
,fallbackTo
ΠΈ Π΄ΡΡΠ³ΠΈ)
- ΡΡΠ°Π½ΡΡΠΎΡΠΌΠ°ΡΠΈΡ Π½Π° ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Future-ΠΈ (
- Lazy Future β ΡΠ΅ Π³ΠΎ ΠΊΡΡΡΡΠΈΠΌ lazy IO
- Π΄ΠΈΠ·Π°ΠΉΠ½ Π½Π° ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΡΠΏΠΎΡΠ΅Π΄ Π½ΡΠΆΠ½ΠΈΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ
- ΠΎΠΏΠΈΡΠ²Π°Π½Π΅ Π½Π° ΠΏΠ»Π°Π½ ΡΡΠ΅Π· ADT Π·Π° IO
- Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π΅Π½ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ Π½Π° IO
- ΡΠΈΠ½Ρ ΡΠΎΠ½Π΅Π½ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ Π½Π° IO
- ΠΡΠ΅Π΄ΠΈΠΌΡΡΠ²Π° Π½Π° lazy IO ΠΏΡΠ΅Π· eager Future
- 09 β Type classes [ΠΊΠΎΠ΄]
- ΠΠ±ΡΡΡΠ°ΠΊΡΠ½ΠΎΡΡ ΠΊΠ°ΡΠΎ ΠΏΠΎΠΌΠΎΡΠ½ΠΎ ΡΡΠ΅Π΄ΡΡΠ²ΠΎ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅ΡΠΎ. ΠΠ±ΡΡΡΠ°ΠΊΡΠ½ΠΎΡΡ Π² ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΠΊΠ°ΡΠ°
- ΠΠ°ΠΊΠ²ΠΎ Π΅ type class. ΠΡΠΈΠΌΠ΅Ρ ΡΡΠ΅Π· ΠΌΠΎΠ½ΠΎΠΈΠ΄
- ΠΠΎΠ½ΡΠ΅ΠΊΡΡ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ½ΠΈΡ ΠΊΠΎΠ΄. ΠΠΎΠ½ΡΠ΅ΠΊΡΡΠ½ΠΎΡΡ Π½Π° type class-ΠΎΠ²Π΅ΡΠ΅ Π² Scala
- Π₯Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ Π½Π° type class-ΠΎΠ²Π΅ΡΠ΅. ΠΠΏΠ΅ΡΠ°ΡΠΈΠΈ, ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡΠ½ΠΎΡΡ, Π°ΠΊΡΠΈΠΎΠΌΠΈ
- Context bound
- ΠΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈ ΠΈΠ·Π²ΠΎΠ΄ΠΈ ΠΏΡΠΈ ΡΡΡΡΠ΅Π½Π΅ Π½Π° implicit ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ, Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠ° ΡΠΈΠΏΠΎΠ²Π° ΡΠΈΡΡΠ΅ΠΌΠ°
- ΠΠ°ΡΠΎ ΡΠΏΠ°Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° Π°ΠΊΡΠΈΠΎΠΌΠΈΡΠ΅ Π΅ Π²Π°ΠΆΠ½ΠΎ. ΠΡΠΈΠΌΠ΅Ρ Ρ ΠΏΠ°ΡΠ°Π»Π΅Π»Π΅Π½
fold
- Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° type class-ΠΎΠ²Π΅ Π² Scala 3 ΡΡΠ΅Π·
given
- Π‘ΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΠΠΠ ΠΊΠ»Π°ΡΠΎΠ²Π΅ΡΠ΅ ΠΈ type class-ΠΎΠ²Π΅ΡΠ΅
- ΠΠΎΠ»ΠΈΠΌΠΎΡΡΠΈΠ·ΡΠΌ ΠΈ Π²ΠΈΠ΄ΠΎΠ²Π΅ ΠΏΠΎΠ»ΠΈΠΌΠΎΡΡΠΈΠ·ΡΠΌ. Static ΠΈ late binding. Π Π΅ΡΡΠΎΠ°ΠΊΡΠΈΠ²Π½ΠΎΡΡ
- ΠΡΠΈΠΌΠ΅ΡΠΈ Π·Π° type class-ΠΎΠ²Π΅ Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ½Π°ΡΠ° Π±ΠΈΠ±Π»ΠΈΡΠ΅ΠΊΠ° Π½Π° Scala β
Numeric
,Ordering
- ΠΡΠΈΠΌΠ΅ΡΠΈ Π² Π΄ΡΡΠ³ΠΈ Π΅Π·ΠΈΡΠΈ β Haskell ΠΈ Rust (ΠΈ ΠΎΡΠ΅ Rust). Π‘ΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ Π½Π° ΡΡΡ ΠΈ Scala
- ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π·Π° type class-ΠΎΠ²Π΅. Π’Π΅ΠΎΡΠΈΡ Π½Π° ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ
- Type class-ΠΎΠ²Π΅ Π·Π° ΡΠΎΡΠΌΠ°ΡΠΈΡΠ°Π½Π΅ ΠΈ ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ, ΠΏΡΠΈΠΌΠ΅Ρ Π·Π° JSON ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ
Monoid
ΠΈSemigroup
Π² Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° Cats- ΠΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠΈ (Π½Π΅ΠΏΠΎΠΊΡΠΈΡΠΈ Π½Π° Π»Π΅ΠΊΡΠΈΠΈΡΠ΅)
- Multiversal ΡΡΠ΅ΡΡ universal equality,
Eq
Π² Cats - ΠΡΠΈΠΌΠ΅Ρ Π·Π° type class-ΠΎΠ²Π΅ Π½Π° ΠΏΠΎΠ²Π΅ΡΠ΅ ΡΠΈΠΏΠΎΠ²Π΅, Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ Π² Spire
- Multiversal ΡΡΠ΅ΡΡ universal equality,
- 10 β ΠΠΎΠ½Π°Π΄ΠΈ ΠΈ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠ²ΠΈ [ΠΊΠΎΠ΄]
- ΠΡΠ΅ΠΊΡΠΈ. ΠΠ±ΡΡΡΠ°ΠΊΡΠΈΡ Π½Π°Π΄ ΠΎΠ±ΡΠΈΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π½Π° Π΅ΡΠ΅ΠΊΡΠΈ
- ΠΠΎΠΌΠΏΠΎΠ·ΠΈΡΠ°Π½Π΅ Π½Π° ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΠΊΡΠΈΠΎΠΌΠΈ
- ΠΡΠ΅ΠΊΡΠ½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ
- ΠΠΎΠ½Π°Π΄Π° β type class Π·Π° ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡΠ°Π½Π΅ Π½Π° Π΅ΡΠ΅ΠΊΡΠ½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ
- ΠΠ΅ΡΠΈΠ½ΠΈΡΠΈΡ Π½Π° ΠΌΠΎΠ½Π°Π΄Π° ΡΡΠ΅Π· compose ΠΈ unit. ΠΠΊΡΠΈΠΎΠΌΠΈ
- ΠΠ΅ΡΠΈΠ½ΠΈΡΠΈΡ ΡΡΠ΅Π· flatMap ΠΈ unit. ΠΠΊΡΠΈΠΎΠΌΠΈ
- ΠΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π½Π° ΠΌΠΎΠ½Π°Π΄ΠΈ.
map
,flatten
,zip
,map2
,sequence
ΠΈ Π΄ΡΡΠ³ΠΈ. ΠΠ»ΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΠΈ Π΄Π΅ΡΠΈΠ½ΠΈΡΠΈ - Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° type class Π·Π° ΠΌΠΎΠ½Π°Π΄Π°, Ρ ΠΏΠΎΠΌΠΎΡΠ½ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ
- ΠΠΎΠ½Π°Π΄Π½ΠΈ ΠΈΠ½ΡΡΠ°Π½ΡΠΈΠΈ Π½Π° ΠΎΡΠ½ΠΎΠ²Π½ΠΈ Π΅ΡΠ΅ΠΊΡΠ½ΠΈ ΡΠΈΠΏΠΎΠ²Π΅
- Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° Maybe (Π°Π»ΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΠΎ ΠΈΠΌΠ΅ Π½Π° Option), ΠΌΠΎΠ½Π°Π΄Π½Π° ΠΈΠ½ΡΡΠ°Π½ΡΠΈΡ ΠΊΡΠΌ Maybe ΠΈ ΠΏΡΠΈΠΌΠ΅Ρ Π·Π° ΡΠ°Π±ΠΎΡΠ° Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡΠ΅ ΠΌΠΎΠ½Π°Π΄Π½ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ
Id
ΠΌΠΎΠ½Π°Π΄Π°- State ΠΌΠΎΠ½Π°Π΄Π°
- Π€ΡΠ½ΠΊΡΠΎΡΠΈ ΠΊΠ°ΡΠΎ Π³Π΅Π½Π΅ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° ΠΌΠΎΠ½Π°Π΄ΠΈΡΠ΅. ΠΠΊΡΠΈΠΎΠΌΠΈ
- ΠΡΠ΅ΡΠ½ΠΈ ΡΡΡΡΠΎΡΠ½ΠΈΡ Π½Π° ΠΌΠΎΠ½Π°Π΄ΠΈ
- ΠΡΠΈΠΌΠ΅Ρ Π·Π° Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΡ Ρ Π½Π°ΡΡΡΠΏΠ²Π°Π½Π΅ Π½Π° Π³ΡΠ΅ΡΠΊΠΈΡΠ΅ Ρ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΌΠΎΠ½Π°Π΄Π° Π·Π°
Validated
- ΠΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠ². Π Π°Π·Π»ΠΈΠΊΠΈΡΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΠΌΠΎΠ½Π°Π΄Π° ΠΈ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠ².
- ΠΡΠΈΠΌΠ΅Ρ Π·Π° Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΡ Ρ Π½Π°ΡΡΡΠΏΠ²Π°Π½Π΅ Π½Π° Π³ΡΠ΅ΡΠΊΠΈ Ρ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠ²
- ΠΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠ²ΠΈ.
map3
,map4
,sequence
,traverse
. - ΠΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠ²Π½ΠΈ ΠΈΠ½ΡΡΠ°Π½ΡΠΈΠΈ Π½Π° ΠΎΡΠ½ΠΎΠ²Π½ΠΈ Π΅ΡΠ΅ΠΊΡΠ½ΠΈ ΡΠΈΠΏΠΎΠ²Π΅
Traversable
- Π³Π΅Π½Π΅ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π°sequence
ΠΈtraverse
- 11 β Cats ΠΈ Cats Effect [ΠΊΠΎΠ΄]
- Typelevel.scala Π΅ΠΊΠΎΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ°
- Cats β Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°, ΠΎΡΠΈΠ³ΡΡΡΠ²Π°ΡΠ° Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΈ Π·Π° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅
- type class-ΠΎΠ²Π΅
- ΡΠ΅Ρ Π½ΠΈ ΠΈΠ½ΡΡΠ°Π½ΡΠΈΠΈ
- ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ
- ΡΠΈΠΏΠΎΠ²Π΅ ΠΎΡ Π΄Π°Π½Π½ΠΈ
- ΡΠ΅ΡΡΠ²Π°Π½Π΅ Π½Π° Π°ΠΊΡΠΈΠΎΠΌΠΈ
- Π’ΠΈΠΏΠΎΠ²Π΅ ΠΎΡ Π΄Π°Π½Π½ΠΈ β
Chain
,Validated
,Id
,State
,FunctionK
(ΠΈΠ»ΠΈ ΠΎΡΠ΅~>
),Nested
- Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ Π·Π°
Option
,Either
, ΠΈValidated
- ΠΠ΅Π°ΡΡ ΠΈΡ ΠΎΡ type class-ΠΎΠ²Π΅
- Type class-ΠΎΠ²Π΅ Π·Π° ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΠΈ Π½Π°ΡΠ΅Π΄Π±Π° (
Eq
,Hash
,PartialOrder
,Order
). Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈ - ΠΠ»Π³Π΅Π±ΡΠΈΡΠ½ΠΈ type class-ΠΎΠ²Π΅.
Semigroup
ΠΈMonoid
. Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ - Π’Π΅ΡΡΠ²Π°Π½Π΅ Π½Π° Π°ΠΊΡΠΈΠΎΠΌΠΈ β ΠΏΡΠΈΠΌΠ΅Ρ Ρ ΠΌΠΎΠ½ΠΎΠΈΠ΄ Π·Π° ΡΠ°ΡΠΈΠΎΠ½Π°Π»Π½ΠΈ ΡΠΈΡΠ»Π°
- Type class-ΠΎΠ²Π΅ Π·Π° Π΅ΡΠ΅ΠΊΡΠΈ. ΠΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΈ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΠΊΡΠΌ Π²ΡΠ΅ΠΊΠΈ ΠΎΡ ΡΡΡ
Foldable
Functor
Apply
,Applicative
ΠΈTraverse
ApplicativeError
FlatMap
,Monad
ΠΈMonadError
Parallel
β type class Π·Π° ΡΠΈΠΏΠΎΠ²Π΅, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°ΡΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½Π° (ΠΌΠΎΠ½Π°Π΄Π½Π°) ΠΈ ΠΏΠ°ΡΠ°Π»Π΅Π»Π½Π° (Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠ²Π½Π°) ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°- ΠΏΡΠΈΠΌΠ΅ΡΠΈ Ρ ΠΈΠ½ΡΡΠ°Π½ΡΠΈΠΈ Π·Π°
IO
/IO.Par
,Either
/Validated
ΠΈList
/ZipList
- ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ Π·Π°
Parallel
- ΠΏΡΠΈΠΌΠ΅ΡΠΈ Ρ ΠΈΠ½ΡΡΠ°Π½ΡΠΈΠΈ Π·Π°
- ΠΠΎΠΌΠΏΠΎΠ·ΠΈΡΠ½ΠΎΡΡ Π½Π° ΡΡΠ½ΠΊΡΠΎΡ, Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠ² ΠΈ ΠΌΠΎΠ½Π°Π΄Π°
- ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡΠ°Π½Π΅ Π½Π° ΡΡΠ½ΠΊΡΠΎΡ ΠΈ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠ². Π’ΠΈΠΏ
Nested
- Π½Π΅Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡΠΈΡ Π½Π° ΠΌΠΎΠ½Π°Π΄ΠΈ Π² ΠΎΠ±ΡΠΈΡ ΡΠ»ΡΡΠ°ΠΉ. ΠΠΎΠΌΠΏΠΎΠ·ΠΈΡΠ½ΠΎΡΡ ΠΏΡΠΈ Π²Π»ΠΎΠΆΠ΅Π½ΠΈ Π΅ΡΠ΅ΠΊΡΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΈΠΌΠ°Ρ
sequence
(ΡΠΎΠ΅ΡΡ ΡΠ°Traverse
). Π’ΠΈΠΏΠΎΠ²Π΅OptionT
ΠΈEitherT
ΠΊΠ°ΡΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π·Π° ΡΠ΅Π·ΠΈ Π΄Π²Π° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΈ ΡΠΈΠΏΠ°
- ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡΠ°Π½Π΅ Π½Π° ΡΡΠ½ΠΊΡΠΎΡ ΠΈ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠ². Π’ΠΈΠΏ
- ΠΡΠΈΡΠΊΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠΈ Π·Π° Cats
- Cats Effect ΠΈ type class-ΠΎΠ²Π΅ Π·Π° ΠΊΠΎΠ½ΠΊΡΡΠ΅Π½ΡΠ½ΠΎΡΡ. ΠΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡΠ° ΠΈΠΌ Π² ΡΠΈΠΏΠ°
IO
- Cats Effect fibers. Thread pool-ΠΎΠ²Π΅. Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΡΠ΅Π·
IO
.IOApp
- Feature-ΠΈ Π½Π° Cats Effect ΡΠΏΠΎΡΠ΅Π΄ type class-ΠΎΠ²Π΅ΡΠ΅. ΠΠ΅Π°ΡΡ
ΠΈΡ Π½Π° type class-ΠΎΠ²Π΅ΡΠ΅
MonadCancel
β Π΄ΠΎΠ±Π°Π²Ρ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΠΊΠ°Π½ΡΠ΅Π»ΠΈΡΠ°Π½Π΅Spawn
β ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΊΠΎΠ½ΠΊΡΡΠ΅Π½ΡΠ½ΠΈ fiber-Π°Concurrent
β Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΠΎΠΏΠΈΡΠ²Π°Π½Π΅ Π½Π° Π±Π΅Π·ΠΎΠΏΠ°ΡΠ΅Π½ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ΡΠΏΠΎΠ΄Π΅Π»Π΅Π½ΠΈ ΡΠ΅ΡΡΡΡΠΈ (Ρ. Π½Π°Ρ. Ref) ΠΈ Π·Π° ΠΈΠ·ΡΠ°ΠΊΠ²Π°Π½Π΅ Π½Π° ΡΠ΅ΡΡΡΡΠΈ (Ρ. Π½Π°Ρ. Deferred)Clock
β ΠΎΠΏΠΈΡΠ²Π°Π½Π΅ Π½Π° Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ΡΠ΅ΠΊΡΡΠΎΡΠΎ Π²ΡΠ΅ΠΌΠ΅Temporal
β ΠΏΡΠΈΡΠΏΠΈΠ²Π°Π½Π΅ Π½Π° fiber Π·Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ Π²ΡΠ΅ΠΌΠ΅Unique
β Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ½ΠΈΠΊΠ°Π»Π½ΠΈ ΡΠΎΡΠΊΡΠ½ΠΈSync
β Π°Π΄Π°ΠΏΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΈ ΠΈΠ·ΡΠΈΡΠ»Π΅Π½ΠΈΡ (Π±Π»ΠΎΠΊΠΈΡΠ°ΡΠΈ ΠΈ Π½Π΅Π±Π»ΠΎΠΊΠΈΡΠ°ΡΠΈ) ΠΊΡΠΌ Π΅ΡΠ΅ΠΊΡΠ½ΠΈ (ΠΈ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΈ) ΡΠ°ΠΊΠΈΠ²Π°Async
β Π°Π΄Π°ΠΏΡΠΈΡΠ°Π½Π΅ Π½Π° callback-Π±Π°Π·ΠΈΡΠ°Π½ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π΅Π½ API ΠΊΡΠΌ Π΅ΡΠ΅ΠΊΡΠ΅Π½ ΡΠ°ΠΊΡΠ²- ΠΡΠΈΠΌΠ΅Ρ Π·Π° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎ ΠΎΠΏΠΈΡΠ²Π°Π½Π΅ Π½Π° ΠΏΠ»Π°Π½ ΡΡΠ΅Π· Π²ΡΠ΅ΠΊΠΈ ΠΎΡ type class-ΠΎΠ²Π΅ΡΠ΅. ΠΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΠ»Π°Π½Π° β ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ½ΠΈΡΠ΅ Π΅ΡΠ΅ΠΊΡΠΈ (ΡΡΠ΅Π·
unsafeRun*
ΠΌΠ΅ΡΠΎΠ΄ΠΈΡΠ΅).
- ΠΠ΅Π·ΠΎΠΏΠ°ΡΠ΅Π½ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ΡΠ΅ΡΡΡΡΠΈ, ΠΈΠ·ΠΈΡΠΊΠ²Π°ΡΠΈ Π·Π°ΡΠ²Π°ΡΡΠ½Π΅.
Resource
Π΅ΡΠ΅ΠΊΡ - ΠΡΠΈΡΠΊΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠΈ Π·Π° Cats Effect
- 12 β ΠΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Π½Π° Scala ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ [ΠΊΠΎΠ΄]
- ΠΠ°ΠΊΠ²ΠΎ ΠΏΠΎΡΡΠΈΠ³Π½Π°Ρ ΠΌΠ΅ Π΄ΠΎΡΠ΅Π³Π°? ΠΠ°ΠΊ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Π€Π ΠΏΡΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠ°Π½Π΅ Π½Π° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΈ Π΄ΠΎΠΌΠ΅ΠΉΠ½ΠΈ?
- ΠΠ·Π±ΠΎΡ Π½Π° IO Π΅ΡΠ΅ΠΊΡ
- Π‘ΡΡΡΠΊΡΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΊΠΎΠ΄Π°
- Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΈ dependency injection. Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΡΠ΅Π· ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ (Π½Π° ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΠ»ΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ Π½Π° ΠΊΠ»Π°Ρ). ΠΠΎΠ»Π·ΠΈ
- Π½Π°Π²ΡΡΠ·Π²Π°Π½Π΅ Π½Π° Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈΡΠ΅. Thin Cake Pattern
- ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π°
Resource
Π·Π° Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΈ Π·Π°ΡΠ²Π°ΡΡΠ½Π΅ Π½Π° Π³Π»ΠΎΠ±Π°Π»Π½ΠΈ ΠΈ Π»ΠΎΠΊΠ°Π»Π½ΠΈ ΡΠ΅ΡΡΡΡΠΈ
- KΠ°ΠΊ Π΄Π° ΡΠ°Π·Π΄Π΅Π»ΠΈΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ°ΡΠ° Π½ΠΈ Π½Π° ΠΌΠΎΠ΄ΡΠ»ΠΈ? Π Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎ Π΄ΠΎΠΌΠ΅ΠΉΠ½ Π²ΠΌΠ΅ΡΡΠΎ ΠΏΠΎ ΡΠ»ΠΎΠ΅Π²Π΅. ΠΠΎΠ»Π·ΠΈ
- ΠΡΡΠ·ΠΊΠ° ΡΡΡ SQL Π±Π°Π·Π° ΠΎΡ Π΄Π°Π½Π½ΠΈ ΡΡΠ΅Π· Doobie
ConnectionIO
Π΅ΡΠ΅ΠΊΡ ΠΈ ΠΏΡΠΎΠ±ΡΠ°Π·ΡΠ²Π°Π½Π΅ Π΄ΠΎIO.
Π’ΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ- ΠΏΡΠΈΠΌΠ΅ΡΠΈ Ρ Doobie.
- Π·Π°ΡΠ²ΠΊΠΈ
- ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° Π΄Π°Π½Π½ΠΈΡΠ΅ ΠΊΡΠΌ ΠΈ ΠΎΡ Π·Π°ΡΠ²ΠΊΠ°
- ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠΈ
- ΠΡΠ²Π΅ΠΆΠ΄Π°Π½Π΅ ΠΈ ΠΎΠ±Π½ΠΎΠ²ΡΠ²Π°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ β Π΅Π΄ΠΈΠ½ΠΈΡΠ½ΠΎ ΠΈ Π½Π° ΠΊΡΠΏ
- JSON ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΈ Π΄Π΅ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΡΠ΅Π· Circe
- Encoder-ΠΈ ΠΈ decoder-ΠΈ
- ΠΠΎΠ»ΡΠ°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½Π° Π΄Π΅ΡΠΈΠ²Π°ΡΠΈΡ encoder-ΠΈ ΠΈ decoder-ΠΈ ΡΡΠ΅Π· ΠΌΠ°ΠΊΡΠΎΡΠΈ
- ΠΡΠΈΠΌΠ΅ΡΠΈ ΡΡΡ Circe
- HTTP ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΡΠ΅Π· http4s
- HTTP ΠΊΠ°ΡΠΎ Π΅ΡΠ΅ΠΊΡΠ½Π° ΡΡΠ½ΠΊΡΠΈΡ ΠΎΡ
Request
ΠΊΡΠΌResponse
- HTTP server ΡΡΠ΅Π· http4s. Π‘ΡΠ°ΡΡΠΈΡΠ°Π½Π΅ ΠΊΠ°ΡΠΎ
IOApp
- HTTP routes β pattern matching ΠΏΠΎ
Request
-Π° - Π‘Π΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΈ Π΄Π΅ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° entity-ΡΠ°. ΠΡΡΡΠ°Π½Π΅ ΠΈ ΡΠ΅ΡΠ΅Π½Π΅ Π½Π° JSON ΡΡΠ΅Π· Circe
- ΠΠΎΠ±Π°Π²ΡΠ½Π΅ Π½Π° ΠΎΠ±ΡΠ° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡ ΡΡΠ΅Π· middlewares
- HTTP ΠΊΠ»ΠΈΠ΅Π½Ρ
- ΠΡΠΈΠΌΠ΅ΡΠΈ Ρ http4s
- HTTP ΠΊΠ°ΡΠΎ Π΅ΡΠ΅ΠΊΡΠ½Π° ΡΡΠ½ΠΊΡΠΈΡ ΠΎΡ
- Π€ΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΈ ΠΊΠΎΠ½ΠΊΡΡΠ΅Π½ΡΠ½ΠΈ ΠΏΠΎΡΠΎΡΠΈ ΡΡΠ΅Π· Fs2
- ΠΡ
LazyList
Π΄ΠΎ Π΅ΡΠ΅ΠΊΡΠ΅Π½Stream
- Π€ΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΈ ΡΡΠ°Π½ΡΡΠΎΠΌΡΠ°ΡΠΈΠΈ Π½Π° ΠΏΠΎΡΠΎΡΠΈ
- ΠΡΡΠ·ΠΊΠ° Ρ Π²Ρ ΠΎΠ΄/ΠΈΠ·Ρ ΠΎΠ΄ β ΡΠ°ΠΉΠ»ΠΎΠ²Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ°, TCP, UDP, ...
- ΠΠΎΡΠΎΡΠ½ΠΎ Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ΅Π·ΡΠ»ΡΠ°Ρ ΠΎΡ HTTP ΡΠ΅Π·ΡΠ»ΡΠ°Ρ. ΠΠΎΡΠΎΠΊ ΠΎΡ Doobie ΠΏΡΠ΅Π· http4s ΡΡΡΠ²ΡΡ Π΄ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ
- Web socket-ΠΈ ΡΡΠ΅Π· Fs2 ΠΈ http4s
- ΠΡΠΈΠΌΠ΅ΡΠΈ Ρ Fs2
- ΠΡ
- ΠΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΡΡ ΡΡΡΠ²ΡΡ ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ Π·Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°
- Π¦ΡΠ»ΠΎΡΡΠ½ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π·Π° ΡΠ΅Π± ΠΌΠ°Π³Π°Π·ΠΈΠ½
- Π’Π°Π±Π»ΠΈΡΠ° Π½Π° Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ΅, ΡΡΡΡΠ°Π²ΡΡΠΈ ΡΠΈΠΏΠΎΠ²Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° Π½Π° Scala
- ΠΠΎΠ³ΠΈΠΊΠ° Π½Π° Π½ΠΈΠ²ΠΎ ΡΠΈΠΏΠΎΠ²Π° ΡΠΈΡΡΠ΅ΠΌΠ° ΡΡΠ΅Π· implicit-ΠΈ
- Cheat sheet ΡΡΡ ΡΠΈΠΏΠΎΠ²Π΅ΡΠ΅ ΠΈ ΠΈΠ½ΡΡΠ°Π½ΡΠΈΠΈΡΠ΅ Π½Π° Cats
- ΠΠΎΠ½ΠΊΡΡΠ΅Π½ΡΠ½ΠΎΡΡ ΡΡΡ Akka [ΠΊΠΎΠ΄]
ΠΠΌΠ°ΡΠ΅ Π½ΡΠΆΠ΄Π° ΠΎΡ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½ pandoc.
ΠΡΠΎΠ΅ΠΊΡΡΡ ΠΈΠΌΠ° submodule Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ ΠΊΡΠΌ reveal.js. ΠΡΠΈ/ΡΠ»Π΅Π΄ ΠΊΠ»ΠΎΠ½ΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ΅ΠΏΠΎΡΠΎ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°ΠΉΡΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈΡΠ΅:
git submodule update βinit
Local with Reaveal + Markdown
To be able to successfully load .md files w/ the Markdown plugin and no co policy pass the βallow-file-access-from-files
flag for google chrome. If you use a real browser and not google chrome
you are clearly an adult and can figure out how to fix it for yourself.
cd lectures
./generate-presentation.sh <Π»Π΅ΠΊΡΠΈΡ>
cd lectures
./build.sh