-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathnotes
76 lines (61 loc) · 2.64 KB
/
notes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
why not steal from Dave Gurnell:
https://github.com/underscoreio/shapeless-guide-code
https://github.com/underscoreio/shapeless-guide/tree/develop/src
https://github.com/davegurnell?utf8=%E2%9C%93&tab=repositories&q=shapeless&type=&language=
other shapeless presentations
https://www.youtube.com/watch?v=JKaCCYZYBWo
https://gist.github.com/vil1/29f2d155679c703edfbe402f067962f6
shapeless
intro
the type astronaut's guide to shapeless
https://github.com/underscoreio/shapeless-guide
what shapeless is
according to github repo
generic programming
is a type class and dependent type based generic programming library
helps you abstract over arities, scrape boilerplate
libs using shapeless
circe
Encoder and Decoder derivation
finch
endpoint composition, :: and :+:
refined
stricter types
slickless (for slick)
type safe db queries
scalacheck-shapeless
TLP= type level programming (computations at compile time)
generic type class derivation
ifs, loops, Nat
compute types
http://wheaties.github.io/Presentations/Scala-Dep-Types/dependent-types.html#/ (ifs, loops, compile-time logic)
http://www.michaelpollmeier.com/presentations/2013-11-28-typelevel-programming-scala/#/ (ifs, nat)
http://slick.lightbend.com/talks/scalaio2014/Type-Level_Computations.pdf (syntax translation value => type, ifs, nat, operations)
dependent types
http://gigiigig.github.io/tlp-step-by-step/introduction.html (dependent types, aux)
macros (used by shapeless under the hood)
compile time reflection
AST => AST (abstract syntax tree)
https://pt.slideshare.net/johanandren/macros-and-reflection-in-scala-210
program at compile time
add type safety (e.g.: validate string literal at compile time)
add performance (e.g.: assertion, logging, ...)
macro vs shapeless
https://github.com/davegurnell/macros-vs-shapeless
core concepts
HList, Generic
Coproduct, ADTs
putting in practice
type classes
Generic.Aux[T, Gen]
debugging
exercise
csv
https://meta.plasm.us/posts/2015/11/08/type-classes-and-generic-derivation/
more
LabelledGeneric, json
type classes for operations on HLists & Coproducts
Lazy, Aux, Poly, Nat
prolog
George Leontiev: https://www.youtube.com/watch?v=iYCR2wzfdUs
Edoardo Vacchi: https://vimeo.com/171939792