Pular para o conteúdo
Skillpedia
Código em geral48 mil · #3031

fp-pragmatic

Ajuda seu agente a explicar programação funcional de forma prática. Ensina a obter resultados sem complicação.

O que ela faz

Este guia ensina os conceitos essenciais da programação funcional de forma prática, focando no que realmente importa para melhorar seu código sem complicação.

Quando usar

  • ✓Para começar a usar programação funcional em TypeScript.
  • ✓Ao explorar ideias de programação funcional de forma rápida (80/20).
  • ✓Para entender quando a programação funcional ajuda e quando simplificar.

Exemplo do que pedir para a IA

“Como posso começar com programação funcional em TypeScript de forma simples?”

Quer saber mais? Abra as seções abaixo.

Como usar

O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.

Link da skill

https://github.com/sickn33/agentic-awesome-skills/blob/main/plugins/agentic-awesome-skills-claude/skills/fp-pragmatic/SKILL.md

Mensagem pronta para colar

Use esta skill para me ajudar: https://github.com/sickn33/agentic-awesome-skills/blob/main/plugins/agentic-awesome-skills-claude/skills/fp-pragmatic/SKILL.md Leia o arquivo SKILL.md desse link e siga as instruções dele na minha tarefa.
Como funciona

Ele foca em padrões úteis e evita jargões acadêmicos, mostrando como aplicar os conceitos que trazem resultados reais.

Instalação

Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.

No terminal (Claude Code, Codex, Cursor), na pasta do projeto:

npx skills add sickn33/agentic-awesome-skills --skill fp-pragmatic

Ou baixe só o arquivo:

curl -L https://raw.githubusercontent.com/sickn33/agentic-awesome-skills/main/plugins/agentic-awesome-skills-claude/skills/fp-pragmatic/SKILL.md -o SKILL.md
Conteúdo técnico (SKILL.md)

Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.

Programação Funcional Pragmática

Leia isto primeiro. Este guia elimina o jargão acadêmico e mostra o que realmente importa. Sem teoria de categorias. Sem bobagens abstratas. Apenas padrões que tornam seu código melhor.

Guia Detalhado

Leia o guia detalhado antes de executar esta habilidade. Ele retém o procedimento completo e o material de referência. Trate seus requisitos de segurança, pré-requisitos e validação como obrigatórios. Para trabalho focado, carregue as seções relevantes; para trabalho de ponta a ponta, leia o guia completamente.

Quando Usar

  • Você quer um ponto de partida pragmático para fp-ts ou programação funcional em TypeScript.
  • A tarefa é exploratória ou educacional e precisa de uma visão 80/20 do que realmente vale a pena adotar.
  • Você precisa de orientação sobre quando FP ajuda e quando é melhor manter o código simples.

Quando NÃO Usar FP

Programação funcional nem sempre é a resposta. Veja quando manter a simplicidade.

Verificações Simples de Nulo

// Just use optional chaining - it's built into the language
const city = user?.address?.city ?? 'Unknown'

// DON'T overcomplicate it
const city = pipe(
  O.fromNullable(user),
  O.flatMap(u => O.fromNullable(u.address)),
  O.flatMap(a => O.fromNullable(a.city)),
  O.getOrElse(() => 'Unknown')
)

Loops Simples

// A for loop is fine when you need early exit or complex logic
function findFirst(items: Item[], predicate: (i: Item) => boolean): Item | null {
  for (const item of items) {
    if (predicate(item)) return item
  }
  return null
}

// DON'T force FP when it doesn't help
const result = pipe(
  items,
  A.findFirst(predicate),
  O.toNullable
)

Código Crítico para Desempenho

// For hot paths, imperative is faster (no intermediate arrays)
function sumLarge(numbers: number[]): number {
  let sum = 0
  for (let i = 0; i < numbers.length; i++) {
    sum += numbers[i]
  }
  return sum
}

// fp-ts creates intermediate structures
const sum = pipe(numbers, A.reduce(0, (acc, n) => acc + n))

Quando Sua Equipe Não Conhece FP

Se você é o único que consegue ler o código, não é um bom código.

// If your team knows this pattern
async function getUser(id: string): Promise<User | null> {
  try {
    const response = await fetch(`/api/users/${id}`)
    if (!response.ok) return null
    return await response.json()
  } catch {
    return null
  }
}

// Don't force this on them
const getUser = (id: string): TE.TaskEither<Error, User> =>
  pipe(
    TE.tryCatch(() => fetch(`/api/users/${id}`), E.toError),
    TE.flatMap(r => r.ok ? TE.right(r) : TE.left(new Error('Not found'))),
    TE.flatMap(r => TE.tryCatch(() => r.json(), E.toError))
  )

Limitações

  • Use esta habilidade apenas quando a tarefa corresponder claramente ao escopo descrito acima.
  • Não trate a saída como substituta para validação específica do ambiente, testes ou revisão de especialistas.
  • Pare e peça esclarecimentos se faltarem entradas, permissões, limites de segurança ou critérios de sucesso necessários.
Perguntas frequentes

O que é programação funcional?

É um estilo de programar onde você constrói software pensando em funções que transformam dados, em vez de mudar o estado das coisas.

Quando NÃO devo usar programação funcional?

Evite quando um código simples resolve o problema (como checagens de nulo fáceis), ou se sua equipe não está familiarizada com o estilo.

Este guia ensina tudo sobre programação funcional?

Não, ele foca nos 20% dos conceitos que trazem 80% dos resultados, cortando o jargão acadêmico.

Detalhes

Descrição original do autor

A practical, jargon-free guide to functional programming - the 80/20 approach that gets results without the academic overhead

repo: sickn33/agentic-awesome-skills

Popularidade

Estrelas no GitHub
48 mil
Posição no ranking
#3031
Licença
MIT
Atualizada em
15/10/2026

Essa skill é útil?

0

Entre para votar.

Comentários

  • …

Mais skills deste repositório

Skills parecidas