packages feed

atomo-0.2.2: prelude/core.atomo

macro (x match: (ts: Block))
  `Match new: (ts contents map: { `(~p -> ~e) | p -> e expand }) on: x

operator right 0 = :=

macro (p = e)
  `Set new: p to: e

macro (p := e)
  `Define new: p as: e

@(parse-error: d) describe-error :=
  "parse error:\n" .. (d indent: 2)

@(did-not-understand: m) describe-error :=
  "message not understood: " .. m show

@(pattern: p did-not-match: v) describe-error :=
  v show .. " did not match pattern: " .. p show

@(unknown-hint-error: d) describe-error :=
  "unknown hint error:\n" .. (d indent: 2)

@(wont-compile: es) describe-error :=
  "Haskell source won't compile:\n" .. es (map: @(indent: 2)) (join: "\n\n")

@(not-allowed: e) describe-error :=
  "not allowed: " .. e

@(ghc-exception: e) describe-error :=
  "GHC exception: " .. e

@(file-not-found: f) describe-error :=
  "file not found: " .. f

@(particle-needed: n given: g) describe-error :=
  "particle needed " .. n show .. " values to complete, given " .. g show

@(block-expected: e given: g) describe-error :=
  "block expected " .. e show .. " arguments, given " .. g show

@no-expressions describe-error := "no expressions to evaluate"

@(could-not-find: t in: v) describe-error :=
  "could not find a " .. t .. " in: " .. v show

@(dynamic-needed: t) describe-error :=
  "expecting Haskell value of type " .. t