or run

npx @tessl/cli init
Log in

Version

Files

docs

function-utilities.mdindex.mdlist-operations.mdmathematical-operations.mdobject-operations.mdstring-processing.md
tile.json

rubric.jsonevals/scenario-7/

{
  "context": "Evaluates whether the solution leverages prelude.ls list-position helpers to implement the boundary summary, outer-trim, positional lookup, and emptiness checks described in the spec. Points reward direct use of the library APIs instead of manual indexing or bespoke length logic.",
  "type": "weighted_checklist",
  "checklist": [
    {
      "name": "Prelude import",
      "description": "Imports the needed helpers from `prelude-ls` (e.g., `List.head`/`first`, `List.last`, `List.tail`, `List.initial`, `List.at`, `List.empty`) rather than recreating them locally.",
      "max_score": 10
    },
    {
      "name": "Bookend helpers",
      "description": "`bookendSummary` derives starting and ending values via `List.head`/`first` and `List.last` instead of array index math or manual loops.",
      "max_score": 25
    },
    {
      "name": "Empty check",
      "description": "Uses `List.empty` to detect no-items cases (for bookend and empty-check behaviors) rather than checking `length` or comparing to `[]`.",
      "max_score": 15
    },
    {
      "name": "Trim with tails",
      "description": "`trimOuter` removes the first and last elements by combining `List.tail` and `List.initial` (or `List.initial(List.tail(...))`) instead of slicing or manual splicing.",
      "max_score": 25
    },
    {
      "name": "Indexed access",
      "description": "`pickAt` relies on `List.at` for both positive and negative index lookups, avoiding custom offset arithmetic.",
      "max_score": 25
    }
  ]
}