package neural_nets_lib
A from-scratch Deep Learning framework with an optimizing compiler, shape inference, concise syntax
Install
Dune Dependency
Authors
Maintainers
Sources
0.3.3.3.tar.gz
md5=9170d4d98422350c9a73a95adfb795dc
sha512=c1b024a69b1d0338af6e34508dbf6dccf3c2b6cc156e7628c3d7853c7040e225bdfc0a8731bb4db5a97edba90e26439987bfa505154d23af46f119c07ad809ed
doc/src/ppx_ocannl/ppx_shared.ml.html
Source file ppx_shared.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 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
open Base open Ppxlib type li = longident let string_expr ~loc s = Ast_helper.Exp.constant @@ Pconst_string (s, loc, None) let pat2string pat = let rec lident = function Lident s | Ldot (_, s) -> s | Lapply (_, i) -> lident i in let rec loop pat = match pat.ppat_desc with | Ppat_open (_, pat) | Ppat_lazy pat | Ppat_constraint (pat, _) -> loop pat | Ppat_alias (_, ident) -> ident.txt | Ppat_var ident -> ident.txt | Ppat_any -> "_" | Ppat_variant (s, _) | Ppat_constant (Pconst_string (s, _, _)) | Ppat_constant (Pconst_integer (s, _)) | Ppat_constant (Pconst_float (s, _)) -> s | Ppat_constant (Pconst_char c) -> Char.to_string c | Ppat_tuple pats -> "(" ^ String.concat ~sep:", " (List.map ~f:loop pats) ^ ")" | Ppat_array pats -> "[|" ^ String.concat ~sep:", " (List.map ~f:loop pats) ^ "|]" | Ppat_construct (c, _) -> lident c.txt | Ppat_interval (_, _) | Ppat_record (_, _) | Ppat_or (_, _) | Ppat_type _ | Ppat_unpack _ | Ppat_exception _ | Ppat_extension _ -> "" in string_expr ~loc:pat.ppat_loc @@ loop pat let opt_pat2string ~loc = function None -> [%expr None] | Some pat -> [%expr Some [%e pat2string pat]] let opt_pat2string_list ~loc = function None -> [%expr []] | Some pat -> [%expr [ [%e pat2string pat] ]] let opt_expr ~loc = function None -> [%expr None] | Some expr -> [%expr Some [%e expr]] let rec pat2expr pat = let module Ast = Ast_builder.Default in let loc = pat.ppat_loc in match pat.ppat_desc with | Ppat_constraint (pat', typ) -> Ast.pexp_constraint ~loc (pat2expr pat') typ | Ppat_alias (_, ident) | Ppat_var ident -> Ast.pexp_ident ~loc { ident with txt = Lident ident.txt } | Ppat_variant (ident, e_opt) -> Ast.pexp_variant ~loc ident @@ Option.map e_opt ~f:pat2expr | Ppat_constant c -> Ast.pexp_constant ~loc c | Ppat_construct (c, None) -> Ast.pexp_construct ~loc c None | Ppat_construct (c, Some ([], args)) -> Ast.pexp_construct ~loc c @@ Some (pat2expr args) | Ppat_record (fields, Asttypes.Closed) -> Ast.pexp_record ~loc (List.map fields ~f:(fun (label, field) -> (label, pat2expr field))) None | Ppat_tuple pats -> Ast.pexp_tuple ~loc @@ List.map pats ~f:pat2expr | Ppat_array pats -> Ast.pexp_array ~loc @@ List.map pats ~f:pat2expr | _ -> Ast.pexp_extension ~loc @@ Location.error_extensionf ~loc "ppx_ocannl does not recognize/support the pattern; maybe try using an `as` alias." let alphanum_regexp = Str.regexp "^[^a-zA-Z0-9]+$" let is_operator ident = Str.string_match alphanum_regexp ident 0 let is_assignment ident = String.length ident > 1 && Char.equal ident.[0] '=' && (not @@ List.mem [ "=="; "==="; "=>"; "==>"; "=>>" ] ident ~equal:String.equal) let let_opt ~loc vbs expr = if Map.is_empty vbs then expr else Ast_helper.Exp.let_ ~loc Nonrecursive (Map.data vbs) expr let no_vbs = Map.empty (module String) let reduce_vbss = List.reduce_exn ~f:(Map.merge_skewed ~combine:(fun ~key:_ _v1 v2 -> v2))
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>