jq es un lenguaje funcional de muy alto nivel con soporte para backtracking y gestión de flujos de datos JSON. Está relacionado con los lenguajes de programación Icon y Haskell.

Sintaxis

El lenguaje jq está basado en los conceptos de flujos, tuberías y filtros familiares a los del Shell de Unix. Los filtros se pueden construir a partir de expresiones de JSON utilizando una sintaxis similar a la de JSON y se conectan con el caràcter "|". El filtro identidad es ".", y por ejemplo la expresión 1 | {"a": .} producirá el valor de JSON : {"a": 1}.

Este ejemplo muestra cómo definir un filtro con nombre para formatear un entero en cualquier base:

def tobase($b):
    def digit: "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"[.:. 1];
    def div: (. / $b) | floor;
    def mod: . % $b;
    def r: if . < $b then digit else (div | r)   (mod | digit) end;
    #
    select(2 <= $b and $b <= 36)
    | r
;

El siguiente ejemplo presenta el uso de generadores:

def send_more_money:
    def choose(m;n;used): ([range(m;n 1)] - used)[];
    label $pipe
    | 1 as $m
    | 0 as $o
    | choose(8;9;[]) as $s
    | choose(2;9;[$s]) as $e
    | choose(2;9;[$s,$e]) as $n
    | choose(2;9;[$s,$e,$n]) as $d
    | choose(2;9;[$s,$e,$n,$d]) as $r
    | choose(2;9;[$s,$e,$n,$d,$r]) as $y
    | select(num($s;$e;$n;$d)   num($m;$o;$r;$e) == num($m;$o;$n;$e;$y))
    | [$s,$e,$n,$d,$m,$o,$r,$e,$m,$o,$n,$e,$y],
      break $pipe
;

Véase también

  • Icon
  • Haskell

Referencias

El manual de jq y la wiki de jq son las principales referencias de jq.

Enlaces externos

  • Página principal de jq
  • wiki de jq
  • Código fuente de jq
  • Página del Lenguaje de Programación jq en la web Rosetta Code de tareas de programación comparadas



JQ schreiben Typ Logo Design vector Template. Abstract Letter JQ Logo

JQ Logo design (2372285)

jq Download Free (Mac) 1.5 Softpedia

Jq Más de 1,497 vectores de stock y arte vectorial con licencia libres

Premium Vector JQ LOGO