Repositório do projeto: https://github.com/fdaciuk/conduit-api
Especificação da API: https://gothinkster.github.io/realworld/docs/specs/backend-specs/introduction
Lidando com valores opcionais no React com fp-ts:
Haskell para programadores JavaScript (como programar de forma puramente funcional em JS):
Lazy evaluation do Haskell aplicado em JS:
Functional Architecture (Arquitetura Hexagonal):
Functional Design Patterns:
From Dependency Injection to dependency rejection:
Typed Functional Programming in TypeScript with fp-ts:
- Video: https://www.youtube.com/watch?v=UwCLmHQOWoY
- Slides: https://noti.st/robinpokorny/eayxlR/slides
Teoria das categorias
// Lazy é só uma função que retorna alguma coisa.
type Lazy<A> = () => A
// usamos Option quando temos tipos de dados possivelmente nulos.
type Some<A> = {
_tag: 'Some'
value: A
}
type None = {
_tag: 'None'
}
type Option<A> = Some<A> | None
// usamos Either quando temos algum valor síncrono que possivelmente vai disparar um erro
type Right<A> = {
_tag: 'Right'
right: A
}
type Left<E> = {
_tag: 'Left'
left: E
}
type Either<E, A> = Right<A> | Left<E>
// usamos Task para funções que retornam uma promise que nunca quebra
type Task<A> = Lazy<Promise<A>>
// usamos o TaskEither para funções que retornam uma Promise que possivelmente dispara um erro
type TaskEither<E, A> = Task<Either<E, A>>