exercism / haskell

Exercism exercises in Haskell.
https://exercism.org/tracks/haskell
MIT License
495 stars 194 forks source link

Add key features #938

Closed ErikSchierboom closed 2 years ago

ErikSchierboom commented 3 years ago

This issue is part of the migration to v3. You can read full details about the various changes here.

In Exercism v3, each track must specify exactly six "key features". Exercism uses these features to highlight the most interesting, unique or "best" features of a language to a student.

Key features are specified in the top-level "key_features" field in the track's config.json file and are defined as an array of objects, as specified in the spec.

Goal

The "key_features" field in the config.json file should be updated to describe the six "key features" of this track. See the spec.

Example

{
  "key_features": [
    {
      "icon": "features-oop",
      "title": "Modern",
      "content": "C# is a modern, fast-evolving language."
    },
    {
      "icon": "features-strongly-typed",
      "title": "Cross-platform",
      "content": "C# runs on almost any platform and chipset."
    },
    {
      "icon": "features-functional",
      "title": "Multi-paradigm",
      "content": "C# is primarily an object-oriented language, but also has lots of functional features."
    },
    {
      "icon": "features-lazy",
      "title": "General purpose",
      "content": "C# can be used for a wide variety of workloads, like websites, console applications, and even games."
    },
    {
      "icon": "features-declarative",
      "title": "Tooling",
      "content": "C# has excellent tooling, with linting and advanced refactoring options built-in."
    },
    {
      "icon": "features-generic",
      "title": "Documentation",
      "content": "Documentation is excellent and exhaustive, making it easy to get started with C#."
    }
  ]
}

Tracking

https://github.com/exercism/v3-launch/issues/5

sshine commented 3 years ago

So this invites for a discussion of what key_features best characterise Haskell.

The format is:

{
    "title": "Adjective",
    "content": "Some catchphrase about adjective",
    "icon": "some-icon-name"
}

There is still no list of icons.

As inspiration, https://github.com/exercism/haskell/blob/main/docs/ABOUT.md contains a description that has a list of adjectives:

Haskell is a general-purpose programming language known for being purely functional, non-strict with strong static typing and for having type inference.

Purely functional means that you don't update variables or modify state. Pure functions will always return the same value given the same input and will do nothing else. Functions that are referentially transparent are more predictable and more composable. Non-strict (somewhat like lazy) means that you can express infinite data structures. Strong static typing means that a lot of program errors are caught during compilation. Type inference means that the compiler can often figure out the type of a value by itself. The compiler can also tell you if a value has conflicting types in different parts of the code.

Going with this, we could pick:

We could also pick general-purpose, but since that appears to be a criteria for having a track on Exercism, perhaps this is implied.

Since the track structure demands exactly six, that leaves room for two more.

Reading Haskell's Wikipedia page, here are two more: