package bistro

  1. Overview
  2. Docs
Legend:
Page
Library
Module
Module type
Parameter
Class
Class type
Source

Source file template.ml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
open Base

type 'a token =
  | S of string
  | D of 'a
  | F of 'a token list
  | DEST
  | TMP
  | NP
  | MEM

type 'a t = 'a token list

let rec deps tmpl ~compare =
  List.map tmpl ~f:(function
      | D r -> [ r ]
      | F toks -> deps ~compare toks
      | S _ | DEST | TMP | NP | MEM -> []
    )
  |> List.concat
  |> List.dedup_and_sort ~compare

let rec map_token x ~f = match x with
  | S s -> S s
  | D dep -> D (f dep)
  | F toks -> F (List.map toks ~f:(map_token ~f))
  | DEST -> DEST
  | TMP -> TMP
  | NP -> NP
  | MEM -> MEM

let map toks ~f = List.map toks ~f:(map_token ~f)
OCaml

Innovation. Community. Security.