From 88a2aedbb50c477294a39cadd3c05af16ae4ac3f Mon Sep 17 00:00:00 2001 From: Andrea Callea <3269984+gacallea@users.noreply.github.com> Date: Sat, 12 Nov 2022 21:55:06 +0100 Subject: [PATCH 1/2] update/complete haskell tags fixes https://github.com/exercism/exercism/issues/6610 fixes https://github.com/exercism/haskell/issues/939 --- config.json | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/config.json b/config.json index 79d1f5d14..64e7d4d34 100644 --- a/config.json +++ b/config.json @@ -1320,6 +1320,16 @@ } ], "tags": [ - "paradigm/functional" + "paradigm/declarative", + "paradigm/functional", + "typing/static", + "typing/strong", + "execution_mode/compiled", + "platform/windows", + "platform/mac", + "platform/linux", + "runtime/standalone_executable", + "used_for/backends", + "used_for/financial_systems" ] } From 896a02667c927e810b2a98d268469ac42345d24f Mon Sep 17 00:00:00 2001 From: Matthijs Blom <19817960+MatthijsBlom@users.noreply.github.com> Date: Sat, 12 Nov 2022 23:11:31 +0100 Subject: [PATCH 2/2] Add tag justifications --- TAGS.md | 58 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 TAGS.md diff --git a/TAGS.md b/TAGS.md new file mode 100644 index 000000000..468deb6c2 --- /dev/null +++ b/TAGS.md @@ -0,0 +1,58 @@ +# Tags + +This document aims to provide reasoning why `config.json` contains the `"tags"` it contains. + +## Paradigms + +- [x] `paradigm/declarative`: implied by `paradigm/functional`. +- [x] `paradigm/functional`: "purely functional" is Haskell's middle name. +- [ ] `paradigm/imperative`: even though Haskell is «the world's finest imperative programming language», the style is not prevalent. Unless you count `do`-notation. +- [ ] `paradigm/logic`: possible through DSL's, but not inherently supported. (Ignoring type class resolution.) +- [ ] `paradigm/object_oriented`: N/A +- [ ] `paradigm/procedural`: this would imply `paradigm/imperative`. + +## Typing + +- [x] `typing/static`: types are checked at compile time. +- [ ] `typing/dynamic`: types are erased at compile time and hence not available at run time. +- [x] `typing/strong`: as opposed to this term, types in Haskell are unambiguous. +- [ ] `typing/weak`: see `typing/strong`. + +## Execution mode + +- [x] `execution_mode/compiled`: this is the norm. +- [ ] `execution_mode/interpreted`: while possible (`runghc`), this is not the norm. + +## Platform + +- [x] `platform/windows`: entirely normal. +- [x] `platform/mac`: entirely normal. +- [x] `platform/linux`: entirely normal. +- [ ] `platform/ios`: unsure whether it has been done, so: no. +- [ ] `platform/android`: has been done, but is not the norm. +- [ ] `platform/web`: has been done, but is not the norm. + +## Runtime + +- [x] `runtime/standalone_executable`: the default. +- [ ] `runtime/language_specific`: 🤷 (of course it has – but is that notable?) +- [ ] `runtime/clr`: no support. +- [ ] `runtime/jvm`: no support. +- [ ] `runtime/beam`: no support. +- [ ] `runtime/wasmtime`: no support, but work is being done towards compiling Haskell to Wasm. + +## Used for + +- [ ] `used_for/artificial_intelligence`: +- [x] `used_for/backends`: +- [ ] `used_for/cross_platform_development`: +- [ ] `used_for/embedded_systems`: the large runtime and the garbage collection make this an ill fit. +- [x] `used_for/financial_systems`: Haskell is popular with banks and crypto (Cardano) folk. +- [ ] `used_for/frontends`: +- [ ] `used_for/games`: +- [ ] `used_for/guis`: +- [ ] `used_for/mobile`: too rarely. +- [ ] `used_for/robotics`: +- [ ] `used_for/scientific_calculations`: work is being done to make this nice, but it's not there yet. +- [ ] `used_for/scripts`: very possible, but uncommon. +- [ ] `used_for/web_development`: