jabrena

Type Problems — Development skill for Claude Code

Development community

A set of problems to improve your skills with TyDD, Type Driven Development with Java and some additional Functional libraries.

How to install Type Problems

This entry records only its repository, not the path inside it, so there is no exact command to give. Open jabrena/type-problems and copy the folder into ~/.claude/skills/, or the file into ~/.claude/agents/.

What Type Problems does

A set of problems to improve your skills with TyDD, Type Driven Development with Java and some additional Functional libraries.

Alternatives in Development

  • Jdtls Lsp — Java /plugin install jdtls-lsp@claude-plugins-official 14k ★
  • Contributing — Thanks for your interest in contributing to Marketing Skills 13.8k ★
  • AWorld — Search, understand, reproduce, and improve an idea with ease 1.2k ★

README

Type problems

A set of problems to improve your skills with `TyDD, Type Driven Development` with Java and some additional Functional libraries.

Motivation

Using Java, the developers implements the solutions, transforming data with different nature. We will consider that data as `Values`. That values will be encapsulated into Objects. For the design of your values, you will use [Java primitives](https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html) or [Java wrapper classes](https://en.wikipedia.org/wiki/Primitive_wrapper_class):

![](docs/images/javaTypes.png)

From Java 8, you can use `Monads`, a parameterized Types to wrap values into a context and apply functions on it. What Monads are available in Java 8+?

Using third party libraries like VAVR, you could add new `Monads` like:

Or you could use new ones from Reactor to model your Reactive problems:

The following problems was designed to improve your skills modeling solutions.

Null safety

Java accept `null` values when you assign to a Type although it is harmful. Using `JSR-305` meta-annotations like `@NonNull` or using `JSR 303` & `JSR 380` Bean validations, you could indicate that your programs only accept Non null values. Another alternative to mitigate the usage of `null` values in your programs is with the usage of the M