package mula
ML's Universal Levenshtein Automata library
Install
dune-project
Dependency
Authors
Maintainers
Sources
mula-0.1.1.tbz
sha256=ee5333b6f30b68a26af55b7f2f5a1f4f1189c13f4b678735da5dbb4685d0e225
sha512=22f63d6a077b5825d0b1ce076fa23f39bf4ae4280befec0a8765079fb9f542de2858e9a51e86547d47017c646dfe2c9d1fdd1c99d9f4c30aebf4f7cc06cfe995
doc/src/mula.internal/stringOps.ml.html
Source file stringOps.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
module type S = sig type ch type t val length : t -> int val get : t -> int -> ch val equal : ch -> ch -> bool end module BitVecOps (St : S) = struct (* note that St.get is zero-indexed, so we define a one-indexed version of St.get *) let get xs n = St.get xs (n-1) (* assumes 1 <= index <= str_len + k *) let sizes k index str_len = let prefix = if index > k then 0 else (k + 1 - index) in let start = max 1 (index - k) in let end_ = min (index + k) str_len in let suffix = if index + k <= str_len then 0 else index + k - str_len in (prefix,start,end_,suffix) (* assumes 1 <= index <= str_len + k *) let bit_vec_of ch str ~index ~k = let (_pre_size,start,end_,suf_size) = sizes k index (St.length str) in let prefix_bv = BitVec.zero in let index_bv_len = (end_ + 1) - start in (* argh one indexing! *) (* 2 - 4. start = 2, end = 4, len = 3, n = 3,2,1... (end + 1)-n = 2,3,4 *) let index_bv = BitVec.pos_fold ~f:(fun n bv -> if St.equal (get str (end_ + 1 - n)) ch then BitVec.snoc_one bv else BitVec.snoc_zero bv ) ~init:prefix_bv index_bv_len in let suffix_bv = BitVec.snoc_zeros index_bv ~m:suf_size in suffix_bv (* assumes str_len < index <= str_len + k *) let bit_vec_of_sentinel ~str_len ~index ~k = let (pre_size,start,end_,suf_size) = sizes k index str_len in let prefix_bv = BitVec.snoc_ones BitVec.zero ~m:pre_size in let index_bv_len = (end_ + 1) - start in (* argh one indexing! *) (* 2 - 4. start = 2, end = 4, len = 3, n = 3,2,1... (end + 1)-n = 2,3,4 *) let index_bv = BitVec.snoc_zeros prefix_bv ~m:index_bv_len in let suffix_bv = BitVec.snoc_ones index_bv ~m:suf_size in suffix_bv end
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>