Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Goals

Felico has clear goals that guide its development, prioritized in order:

1. Fun

Programming should be fun.

Both using and creating the language and infrastructure should be fun. Fun comes in all shapes and sizes: it may be humour, whimsy, a challenging problem to solve or a job well done.

How Felico achieves this:

  • Quick feedback loops for rapid iteration
  • Playful language design with cat mascots 😺 😻
  • Enjoyable error messages that don’t feel like punishment
  • Simple, clear syntax that doesn’t get in your way

2. Friendly

Programming should be friendly.

The language, as well as its ecosystem and community should be friendly. This means welcoming of new ideas, mutual understanding and assuming good intentions. We all make mistakes, and that is ok.

A friendly environment is fun to work in, which neatly ties into the first goal.

How Felico achieves this:

  • Helpful, educational error messages
  • Clear documentation with examples
  • Welcoming community guidelines
  • Gentle learning curve
  • Forgiving syntax that reads naturally

3. Fast

Programming should be fast.

Fast feedback loops are essential for a fun development environment. This holds for the actual writing of code as well as compilation, test and execution times.

Fast feedback loops are more fun, and more friendly to me as a user since they respect my time.

How Felico achieves this:

  • Extremely fast compilation times
  • Quick test execution
  • Responsive IDE integration
  • Incremental compilation
  • Minimal startup overhead

Feature Goals

Desired Features

  • Extremely fast feedback: Sub-second compile times even for large projects
  • Friendly error messages: Clear, actionable, educational diagnostics
  • Compile time type checks: Catch bugs early with static typing
  • Light-weight effect type system: Track side effects without function coloring

Undesired Features

  • Function coloring: No async/await split that creates incompatible function types
  • Implementation inheritance: Avoid complex class hierarchies; prefer composition

Success Metrics

Felico will be considered successful when:

  1. Developers actively choose it for fun projects
  2. Newcomers can write their first program within 5 minutes
  3. Compile-test-run cycles complete in under a second
  4. Error messages regularly help solve problems on first reading
  5. The community remains welcoming and supportive

Future Aspirations

As the language matures, we hope to add:

  • Standard library with common utilities
  • Package manager for sharing code
  • Language server for IDE integration
  • Online playground for trying Felico in the browser
  • Rich ecosystem of community libraries

But these will only be pursued if they align with our core values of Fun, Friendly, and Fast.