Scala
https://gyazo.com/e871d83f6c4e6ed55906aa37888e2d34
文書
Scala 2
Tour of Scala
前書き | Scala Documentation
Introduction | Tour of Scala | Scala Documentation
Scala Book
Introduction | Scala Book | Scala Documentation
Martin Odersky, Kex Spoon, Bill Venners「Scalaスケーラブルプログラミング 第3版」長尾高弘譯 2016
Dean Wampler, Alex Payne「プログラミングScala」2011
Venkat Subramaniam "Pragmatic Scala" 2015
Michael Bevilacqua-Linn "Functional Programming Patterns in Scala and Clojure" 2013
Scala 3
Tour of Scala
Introduction | Tour of Scala | Scala Documentation
Scala Book
Introduction | Scala 3 — Book | Scala Documentation
a.k.a. Dotty
lampepfl/dotty: The Scala 3 compiler, also known as Dotty.
Scala.js
Scala.js
Scala Native
Scala Native — Scala Native 0.4.10 documentation
Richard Whaling "Modern Systems Programming with Scala Native" 2019
playground
Scastie
Scala 2、Scala 3 兩對應
libraries
library registry
Maven
Maven Repository: Search/Browse/Explore
Maven Central Repository Search
Scaladex
async, parallel
Akka
Akka: build concurrent, distributed, and resilient message-driven applications for Java and Scala | Akka
ErlangErlang.icon っぽいものが欲しかったから作ったらしいぞ
ZIO
ZIO | ZIO
zio/zio: ZIO — A type-safe, composable library for async and concurrent programming in Scala
WAF (Web application framework)
Play FrameworkPlay Framework.icon
RDB (relational database) mapper
Slick
Slick
slick/slick: Scala Language Integrated Connection Kit. Slick is a modern database query and access library for Scala
GraphQLGraphQL.icon
sangria-graphql/sangria: Scala GraphQL implementation
gRPCgRPC.icon
grpc/grpc-java: The Java gRPC implementation. HTTP/2 based RPC
ZIO gRPC: Write gRPC services and clients with ZIO | ZIO gRPC
typelevel/fs2-grpc: gRPC implementation for FS2/cats-effect
Akka gRPC
型 level programming
Cats
Cats
typelevel/cats: Lightweight, modular, and extensible library for functional programming.
Scala with Cats
猫番 — 猫番
Scalaz
Scalaz: Home
scalaz/scalaz: Principled Functional Programming in Scala
Paul Chiusano、Rúnar Bjarnason「Scala関数型デザイン&プログラミング―Scalazコントリビューターによる関数型徹底ガイド」株式会社クイープ譯 2015
独習 Scalaz — 独習 Scalaz
shapeless
milessabin/shapeless: Generic programming for Scala
入門⚡Shapeless
genaric programming
ジェネリックプログラミング - Wikipedia
Generic programming - Wikipedia
higher rank polymorphism
直積型
標準 library だと tuple
shapless だと HList (heterogeneous list)。cons cell HList :: HNil
HList に field 名を持たせると Record。("field 名" ->> 値) :: HNil
標準 library だと case class
Haskell.icon
HList: Heterogeneous lists
Type.Membership.Internal#HList
直和型
標準 library だと Either[L, R] や sealed trait
shapeless だと Coproduct (餘積)。cons cell Coproduct :+: CNil
Haskell.icon
Data.Category.Coproduct
Data.Functor.Coproduct
Data.Monoid.Coproduct
Slick に組み込む
underscoreio/slickless: Support for shapeless HLists/Generics in Slick.
refined
fthomas/refined: Refinement types for Scala
篩型
magnolia
softwaremill/magnolia: Easy, fast, transparent generic derivation of typeclass instances
derives typeclasses for case classes, case objects and sealed traits
offers a lightweight syntax for writing derivations without needing to understand complex parts of Scala
builds upon Scala 3's built-in generic derivation
works with recursive and mutually-recursive definitions
supports parameterized ADTs (GADTs), including those in recursive types
GADT (generalized algebraic data type。first-class phantom type。guarded recursive datatype。equality-qualified type)
代數的 data 型 (ADT)
幽靈型
supports typeclasses whose generic type parameter is used in either covariant and contravariant positions
$ scalac -Xshow-phases
ScalaのCompilerについて - Qiita
path 依存型
Scala の型階層
Scala を Emacs で開發するScala.iconEmacs.icon
Elixir をやってきた者が Scala を暫くやってみて同じ所と違ふ所を舉げるElixir.iconScala.icon
Scala で open class
Scala の深い indent を Try 型の for 式に書き換へる pattern
Scala の cake pattern