package tiny_languages
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>
Small languages from scratch: Scheme, Lisp, Smalltalk-80, Pascal, BASIC, JavaScript, HTML, CSS and more
Install
dune-project
Dependency
Authors
Maintainers
Sources
0.3.6.tar.gz
md5=7c636383d146d30ac6f2fa234a6253c8
sha512=c79f3823c5f8f57e5038eb640d487c61168b84aa07c61999d6622ef9fd0c890e2b03b4c6a7cdbbe9352a49e25dda00ac7bb14693cee8e3d7beeed251351a2af0
doc/src/tiny_languages.sexpr/Sexpr.ml.html
Source file Sexpr.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(* Claude Code * * Copyright (C) 2026 Yoann Padioleau * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public License * (LGPL) as published by the Free Software Foundation; either version * 2 of the License, or (at your option) any later version. *) (* See Sexpr.mli *) type span = { start : int; stop : int } type t = { datum : datum; span : span } and datum = | Int of int | Float of float | Str of string | Sym of string | Char of int | Bool of bool | List of t list * t option | Vector of t list let make (datum : datum) (span : span) : t = { datum; span } let sym (name : string) (span : span) : t = { datum = Sym name; span } let nowhere = { start = 0; stop = 0 } let rec to_string (x : t) : string = match x.datum with | Int n -> string_of_int n | Float f -> Printf.sprintf "%g" f | Str s -> Printf.sprintf "%S" s | Sym s -> s | Char c -> Printf.sprintf "#\\%c" (Char.chr (c land 255)) | Bool b -> if b then "#t" else "#f" | List ([ { datum = Sym "quote"; _ }; x ], None) -> "'" ^ to_string x | List (xs, tail) -> let tail = match tail with Some t -> " . " ^ to_string t | None -> "" in "(" ^ String.concat " " (List.map to_string xs) ^ tail ^ ")" | Vector xs -> "#(" ^ String.concat " " (List.map to_string xs) ^ ")"
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>