Library
Module
Module type
Parameter
Class
Class type
Create a new implementation of Svg
, using the given underlying Xml
implementation. Will output a module of type Svg_sigs.T
with the various type equalities.
If your Xml
implementation uses a special function wrapping, use Make_with_wrapped_functions
.
module Xml : Xml_sigs.T with type ('a, 'b) W.ft = 'a -> 'b
type +'a elt = Xml.elt
SVG elements.
Element constructors are in section Elements. Most elements constructors are either nullary, unary or star, depending on the number of children they accept. Children are usually given as a list of elements. txt is used for text.
The type variable 'a
is used to track the element's type. This allows the OCaml typechecker to check SVG validity.
Note that the concrete implementation of this type can vary. See Xml
for details.
type doc = [ `Svg ] elt
A complete SVG document.
type +'a attrib = Xml.attrib
SVG attributes
Attribute constructors are in section Attributes and their name starts with a_
. Attributes are given to elements with the ~a
optional argument.
Similarly to elt, attributes use the OCaml type system to enforce Html validity.
In some cases, attributes have to be disambiguated. The max
attribute has two version, a_fill
and a_animation_fill
, depending on the element. Such disambiguated attribute will contain the name of the associated element.
module Xml :
Xml_sigs.T
with type 'a W.t = 'a Xml.W.t
with type 'a W.tlist = 'a Xml.W.tlist
with type ('a, 'b) W.ft = ('a, 'b) Xml.W.ft
with type uri = Xml.uri
with type event_handler = Xml.event_handler
with type mouse_event_handler = Xml.mouse_event_handler
with type keyboard_event_handler = Xml.keyboard_event_handler
with type touch_event_handler = Xml.touch_event_handler
with type attrib = Xml.attrib
with type elt = Xml.elt
Underlying XML data-structure
type 'a wrap = 'a Xml.W.t
wrap
is a container for elements and values.
In most cases, 'a wrap = 'a
. For R
modules (in eliom or js_of_ocaml), It will be React.S.t
.
type 'a list_wrap = 'a Xml.W.tlist
list_wrap
is a containre for list of elements.
In most cases, 'a list_wrap = 'a list
. For R
modules (in eliom or js_of_ocaml), It will be ReactiveData.RList.t
.
A nullary element is an element that doesn't have any children.
A unary element is an element that have exactly one children.
A star element is an element that has any number of children, including zero.
module Info : Xml_sigs.Info
Various information about SVG, such as the doctype, ...
type uri = Xml.uri
val a_x : Svg_types.coord wrap -> [> `X ] attrib
val a_y : Svg_types.coord wrap -> [> `Y ] attrib
val a_width : Svg_types.Unit.length wrap -> [> `Width ] attrib
val a_height : Svg_types.Unit.length wrap -> [> `Height ] attrib
val a_href : Svg_types.iri wrap -> [> `Xlink_href ] attrib
val a_xlink_href : Svg_types.iri wrap -> [> `Xlink_href ] attrib
val a_requiredFeatures :
Svg_types.spacestrings wrap ->
[> `RequiredFeatures ] attrib
val a_requiredExtensions :
Svg_types.spacestrings wrap ->
[> `RequiredExtension ] attrib
val a_systemLanguage :
Svg_types.commastrings wrap ->
[> `SystemLanguage ] attrib
val a_xml_base : Svg_types.iri wrap -> [> `Xml_Base ] attrib
val a_xml_lang : Svg_types.iri wrap -> [> `Xml_Lang ] attrib
val a_media : Svg_types.commastrings wrap -> [> `Media ] attrib
val a_class : Svg_types.spacestrings wrap -> [> `Class ] attrib
val a_transform : Svg_types.transforms wrap -> [> `Transform ] attrib
val a_viewBox : Svg_types.fourfloats wrap -> [> `ViewBox ] attrib
val a_rx : Svg_types.Unit.length wrap -> [> `Rx ] attrib
val a_ry : Svg_types.Unit.length wrap -> [> `Ry ] attrib
val a_cx : Svg_types.Unit.length wrap -> [> `Cx ] attrib
val a_cy : Svg_types.Unit.length wrap -> [> `Cy ] attrib
val a_r : Svg_types.Unit.length wrap -> [> `R ] attrib
val a_x1 : Svg_types.coord wrap -> [> `X1 ] attrib
val a_y1 : Svg_types.coord wrap -> [> `Y1 ] attrib
val a_x2 : Svg_types.coord wrap -> [> `X2 ] attrib
val a_y2 : Svg_types.coord wrap -> [> `Y2 ] attrib
val a_points : Svg_types.coords wrap -> [> `Points ] attrib
val a_x_list : Svg_types.lengths wrap -> [> `X_list ] attrib
val a_y_list : Svg_types.lengths wrap -> [> `Y_list ] attrib
val a_dx : Svg_types.number wrap -> [> `Dx ] attrib
val a_dy : Svg_types.number wrap -> [> `Dy ] attrib
val a_dx_list : Svg_types.lengths wrap -> [> `Dx_list ] attrib
val a_dy_list : Svg_types.lengths wrap -> [> `Dy_list ] attrib
val a_textLength : Svg_types.Unit.length wrap -> [> `TextLength ] attrib
val a_rotate : Svg_types.numbers wrap -> [> `Rotate ] attrib
val a_startOffset : Svg_types.Unit.length wrap -> [> `StartOffset ] attrib
val a_refX : Svg_types.coord wrap -> [> `RefX ] attrib
val a_refY : Svg_types.coord wrap -> [> `RefY ] attrib
val a_markerWidth : Svg_types.Unit.length wrap -> [> `MarkerWidth ] attrib
val a_markerHeight : Svg_types.Unit.length wrap -> [> `MarkerHeight ] attrib
val a_orient : Svg_types.Unit.angle option wrap -> [> `Orient ] attrib
val a_gradientTransform :
Svg_types.transforms wrap ->
[> `Gradient_Transform ] attrib
val a_fx : Svg_types.coord wrap -> [> `Fx ] attrib
val a_fy : Svg_types.coord wrap -> [> `Fy ] attrib
val a_offset :
[< `Number of Svg_types.number | `Percentage of Svg_types.percentage ] wrap ->
[> `Offset ] attrib
val a_patternTransform :
Svg_types.transforms wrap ->
[> `PatternTransform ] attrib
val a_filterRes :
Svg_types.number_optional_number wrap ->
[> `FilterResUnits ] attrib
val a_values : Svg_types.numbers wrap -> [> `Values ] attrib
val a_tableValues : Svg_types.numbers wrap -> [> `TableValues ] attrib
val a_intercept : Svg_types.number wrap -> [> `Intercept ] attrib
val a_amplitude : Svg_types.number wrap -> [> `Amplitude ] attrib
val a_exponent : Svg_types.number wrap -> [> `Exponent ] attrib
val a_transfer_offset : Svg_types.number wrap -> [> `Offset_transfer ] attrib
val a_k1 : Svg_types.number wrap -> [> `K1 ] attrib
val a_k2 : Svg_types.number wrap -> [> `K2 ] attrib
val a_k3 : Svg_types.number wrap -> [> `K3 ] attrib
val a_k4 : Svg_types.number wrap -> [> `K4 ] attrib
val a_order : Svg_types.number_optional_number wrap -> [> `Order ] attrib
val a_kernelMatrix : Svg_types.numbers wrap -> [> `KernelMatrix ] attrib
val a_divisor : Svg_types.number wrap -> [> `Divisor ] attrib
val a_bias : Svg_types.number wrap -> [> `Bias ] attrib
val a_kernelUnitLength :
Svg_types.number_optional_number wrap ->
[> `KernelUnitLength ] attrib
val a_surfaceScale : Svg_types.number wrap -> [> `SurfaceScale ] attrib
val a_diffuseConstant : Svg_types.number wrap -> [> `DiffuseConstant ] attrib
val a_scale : Svg_types.number wrap -> [> `Scale ] attrib
val a_stdDeviation :
Svg_types.number_optional_number wrap ->
[> `StdDeviation ] attrib
val a_radius : Svg_types.number_optional_number wrap -> [> `Radius ] attrib
val a_baseFrenquency :
Svg_types.number_optional_number wrap ->
[> `BaseFrequency ] attrib
val a_seed : Svg_types.number wrap -> [> `Seed ] attrib
val a_fill : Svg_types.paint wrap -> [> `Fill ] attrib
val a_animation_values : Svg_types.strings wrap -> [> `Valuesanim ] attrib
val a_keyTimes : Svg_types.strings wrap -> [> `KeyTimes ] attrib
val a_keySplines : Svg_types.strings wrap -> [> `KeySplines ] attrib
val a_keyPoints : Svg_types.numbers_semicolon wrap -> [> `KeyPoints ] attrib
val a_horiz_origin_x : Svg_types.number wrap -> [> `HorizOriginX ] attrib
val a_horiz_origin_y : Svg_types.number wrap -> [> `HorizOriginY ] attrib
val a_horiz_adv_x : Svg_types.number wrap -> [> `HorizAdvX ] attrib
val a_vert_origin_x : Svg_types.number wrap -> [> `VertOriginX ] attrib
val a_vert_origin_y : Svg_types.number wrap -> [> `VertOriginY ] attrib
val a_vert_adv_y : Svg_types.number wrap -> [> `VertAdvY ] attrib
val a_stemv : Svg_types.number wrap -> [> `Stemv ] attrib
val a_stemh : Svg_types.number wrap -> [> `Stemh ] attrib
val a_slope : Svg_types.number wrap -> [> `Slope ] attrib
val a_cap_height : Svg_types.number wrap -> [> `CapHeight ] attrib
val a_x_height : Svg_types.number wrap -> [> `XHeight ] attrib
val a_accent_height : Svg_types.number wrap -> [> `AccentHeight ] attrib
val a_ascent : Svg_types.number wrap -> [> `Ascent ] attrib
val a_ideographic : Svg_types.number wrap -> [> `Ideographic ] attrib
val a_alphabetic : Svg_types.number wrap -> [> `Alphabetic ] attrib
val a_mathematical : Svg_types.number wrap -> [> `Mathematical ] attrib
val a_hanging : Svg_types.number wrap -> [> `Hanging ] attrib
val a_videographic : Svg_types.number wrap -> [> `VIdeographic ] attrib
val a_v_alphabetic : Svg_types.number wrap -> [> `VAlphabetic ] attrib
val a_v_mathematical : Svg_types.number wrap -> [> `VMathematical ] attrib
val a_v_hanging : Svg_types.number wrap -> [> `VHanging ] attrib
val a_underline_position :
Svg_types.number wrap ->
[> `UnderlinePosition ] attrib
val a_underline_thickness :
Svg_types.number wrap ->
[> `UnderlineThickness ] attrib
val a_strikethrough_position :
Svg_types.number wrap ->
[> `StrikethroughPosition ] attrib
val a_strikethrough_thickness :
Svg_types.number wrap ->
[> `StrikethroughThickness ] attrib
val a_overline_position :
Svg_types.number wrap ->
[> `OverlinePosition ] attrib
val a_overline_thickness :
Svg_types.number wrap ->
[> `OverlineThickness ] attrib
val a_stop_color : Svg_types.color wrap -> [> `Stop_Color ] attrib
val a_stop_opacity : Svg_types.number wrap -> [> `Stop_Opacity ] attrib
val a_stroke : Svg_types.paint wrap -> [> `Stroke ] attrib
val a_stroke_width : Svg_types.Unit.length wrap -> [> `Stroke_Width ] attrib
val a_stroke_dasharray :
Svg_types.Unit.length list wrap ->
[> `Stroke_Dasharray ] attrib
val a_stroke_dashoffset :
Svg_types.Unit.length wrap ->
[> `Stroke_Dashoffset ] attrib
val a_onabort : Xml.event_handler -> [> `OnAbort ] attrib
val a_onactivate : Xml.event_handler -> [> `OnActivate ] attrib
val a_onbegin : Xml.event_handler -> [> `OnBegin ] attrib
val a_onend : Xml.event_handler -> [> `OnEnd ] attrib
val a_onerror : Xml.event_handler -> [> `OnError ] attrib
val a_onfocusin : Xml.event_handler -> [> `OnFocusIn ] attrib
val a_onfocusout : Xml.event_handler -> [> `OnFocusOut ] attrib
val a_onload : Xml.event_handler -> [> `OnLoad ] attrib
val a_onrepeat : Xml.event_handler -> [> `OnRepeat ] attrib
val a_onresize : Xml.event_handler -> [> `OnResize ] attrib
val a_onscroll : Xml.event_handler -> [> `OnScroll ] attrib
val a_onunload : Xml.event_handler -> [> `OnUnload ] attrib
val a_onzoom : Xml.event_handler -> [> `OnZoom ] attrib
val a_onclick : Xml.mouse_event_handler -> [> `OnClick ] attrib
val a_onmousedown : Xml.mouse_event_handler -> [> `OnMouseDown ] attrib
val a_onmouseup : Xml.mouse_event_handler -> [> `OnMouseUp ] attrib
val a_onmouseover : Xml.mouse_event_handler -> [> `OnMouseOver ] attrib
val a_onmouseout : Xml.mouse_event_handler -> [> `OnMouseOut ] attrib
val a_onmousemove : Xml.mouse_event_handler -> [> `OnMouseMove ] attrib
val a_ontouchstart : Xml.touch_event_handler -> [> `OnTouchStart ] attrib
Javascript touch events
val a_ontouchend : Xml.touch_event_handler -> [> `OnTouchEnd ] attrib
val a_ontouchmove : Xml.touch_event_handler -> [> `OnTouchMove ] attrib
val a_ontouchcancel : Xml.touch_event_handler -> [> `OnTouchCancel ] attrib
val txt : string wrap -> [> Svg_types.txt ] elt
val svg :
([< Svg_types.svg_attr ], [< Svg_types.svg_content ], [> Svg_types.svg ])
star
val g :
([< Svg_types.g_attr ], [< Svg_types.g_content ], [> Svg_types.g ]) star
val defs :
([< Svg_types.defs_attr ], [< Svg_types.defs_content ], [> Svg_types.defs ])
star
val desc :
([< Svg_types.desc_attr ], [< Svg_types.desc_content ], [> Svg_types.desc ])
unary
val title :
([< Svg_types.title_attr ],
[< Svg_types.title_content ],
[> Svg_types.title ])
unary
val symbol :
([< Svg_types.symbol_attr ],
[< Svg_types.symbol_content ],
[> Svg_types.symbol ])
star
val use :
([< Svg_types.use_attr ], [< Svg_types.use_content ], [> Svg_types.use ])
star
val image :
([< Svg_types.image_attr ],
[< Svg_types.image_content ],
[> Svg_types.image ])
star
val switch :
([< Svg_types.switch_attr ],
[< Svg_types.switch_content ],
[> Svg_types.switch ])
star
val style :
([< Svg_types.style_attr ],
[< Svg_types.style_content ],
[> Svg_types.style ])
unary
val path :
([< Svg_types.path_attr ], [< Svg_types.path_content ], [> Svg_types.path ])
star
val rect :
([< Svg_types.rect_attr ], [< Svg_types.rect_content ], [> Svg_types.rect ])
star
val circle :
([< Svg_types.circle_attr ],
[< Svg_types.circle_content ],
[> Svg_types.circle ])
star
val ellipse :
([< Svg_types.ellipse_attr ],
[< Svg_types.ellipse_content ],
[> Svg_types.ellipse ])
star
val line :
([< Svg_types.line_attr ], [< Svg_types.line_content ], [> Svg_types.line ])
star
val polyline :
([< Svg_types.polyline_attr ],
[< Svg_types.polyline_content ],
[> Svg_types.polyline ])
star
val polygon :
([< Svg_types.polygon_attr ],
[< Svg_types.polygon_content ],
[> Svg_types.polygon ])
star
val text :
([< Svg_types.text_attr ], [< Svg_types.text_content ], [> Svg_types.text ])
star
val tspan :
([< Svg_types.tspan_attr ],
[< Svg_types.tspan_content ],
[> Svg_types.tspan ])
star
val tref :
([< Svg_types.tref_attr ], [< Svg_types.tref_content ], [> Svg_types.tref ])
star
val textPath :
([< Svg_types.textpath_attr ],
[< Svg_types.textpath_content ],
[> Svg_types.textpath ])
star
val altGlyph :
([< Svg_types.altglyph_attr ],
[< Svg_types.altglyph_content ],
[> Svg_types.altglyph ])
unary
type altglyphdef_content = [
| `Ref of Svg_types.glyphref elt list
| `Item of Svg_types.altglyphitem elt list
]
val altGlyphDef :
([< Svg_types.altglyphdef_attr ],
[< altglyphdef_content ],
[> Svg_types.altglyphdef ])
unary
val altGlyphItem :
([< Svg_types.altglyphitem_attr ],
[< Svg_types.altglyphitem_content ],
[> Svg_types.altglyphitem ])
star
val glyphRef : ([< Svg_types.glyphref_attr ], [> Svg_types.glyphref ]) nullary
val marker :
([< Svg_types.marker_attr ],
[< Svg_types.marker_content ],
[> Svg_types.marker ])
star
val color_profile :
([< Svg_types.colorprofile_attr ],
[< Svg_types.colorprofile_content ],
[> Svg_types.colorprofile ])
star
val linearGradient :
([< Svg_types.lineargradient_attr ],
[< Svg_types.lineargradient_content ],
[> Svg_types.lineargradient ])
star
val radialGradient :
([< Svg_types.radialgradient_attr ],
[< Svg_types.radialgradient_content ],
[> Svg_types.radialgradient ])
star
val stop :
([< Svg_types.stop_attr ], [< Svg_types.stop_content ], [> Svg_types.stop ])
star
val pattern :
([< Svg_types.pattern_attr ],
[< Svg_types.pattern_content ],
[> Svg_types.pattern ])
star
val clipPath :
([< Svg_types.clippath_attr ],
[< Svg_types.clippath_content ],
[> Svg_types.clippath ])
star
val filter :
([< Svg_types.filter_attr ],
[< Svg_types.filter_content ],
[> Svg_types.filter ])
star
val feDistantLight :
([< Svg_types.fedistantlight_attr ],
[< Svg_types.fedistantlight_content ],
[> Svg_types.fedistantlight ])
star
val fePointLight :
([< Svg_types.fepointlight_attr ],
[< Svg_types.fepointlight_content ],
[> Svg_types.fepointlight ])
star
val feSpotLight :
([< Svg_types.fespotlight_attr ],
[< Svg_types.fespotlight_content ],
[> Svg_types.fespotlight ])
star
val feBlend :
([< Svg_types.feblend_attr ],
[< Svg_types.feblend_content ],
[> Svg_types.feblend ])
star
val feColorMatrix :
([< Svg_types.fecolormatrix_attr ],
[< Svg_types.fecolormatrix_content ],
[> Svg_types.fecolormatrix ])
star
val feComponentTransfer :
([< Svg_types.fecomponenttransfer_attr ],
[< Svg_types.fecomponenttransfer_content ],
[> Svg_types.fecomponenttransfer ])
star
val feFuncA :
([< Svg_types.fefunca_attr ],
[< Svg_types.fefunca_content ],
[> Svg_types.fefunca ])
star
val feFuncG :
([< Svg_types.fefuncg_attr ],
[< Svg_types.fefuncg_content ],
[> Svg_types.fefuncg ])
star
val feFuncB :
([< Svg_types.fefuncb_attr ],
[< Svg_types.fefuncb_content ],
[> Svg_types.fefuncb ])
star
val feFuncR :
([< Svg_types.fefuncr_attr ],
[< Svg_types.fefuncr_content ],
[> Svg_types.fefuncr ])
star
val feComposite :
([< Svg_types.fecomposite_attr ],
[< Svg_types.fecomposite_content ],
[> Svg_types.fecomposite ])
star
val feConvolveMatrix :
([< Svg_types.feconvolvematrix_attr ],
[< Svg_types.feconvolvematrix_content ],
[> Svg_types.feconvolvematrix ])
star
val feDiffuseLighting :
([< Svg_types.fediffuselighting_attr ],
[< Svg_types.fediffuselighting_content ],
[> Svg_types.fediffuselighting ])
star
val feDisplacementMap :
([< Svg_types.fedisplacementmap_attr ],
[< Svg_types.fedisplacementmap_content ],
[> Svg_types.fedisplacementmap ])
star
val feFlood :
([< Svg_types.feflood_attr ],
[< Svg_types.feflood_content ],
[> Svg_types.feflood ])
star
val feGaussianBlur :
([< Svg_types.fegaussianblur_attr ],
[< Svg_types.fegaussianblur_content ],
[> Svg_types.fegaussianblur ])
star
val feImage :
([< Svg_types.feimage_attr ],
[< Svg_types.feimage_content ],
[> Svg_types.feimage ])
star
val feMerge :
([< Svg_types.femerge_attr ],
[< Svg_types.femerge_content ],
[> Svg_types.femerge ])
star
val feMorphology :
([< Svg_types.femorphology_attr ],
[< Svg_types.femorphology_content ],
[> Svg_types.femorphology ])
star
val feOffset :
([< Svg_types.feoffset_attr ],
[< Svg_types.feoffset_content ],
[> Svg_types.feoffset ])
star
val feSpecularLighting :
([< Svg_types.fespecularlighting_attr ],
[< Svg_types.fespecularlighting_content ],
[> Svg_types.fespecularlighting ])
star
val feTile :
([< Svg_types.fetile_attr ],
[< Svg_types.fetile_content ],
[> Svg_types.fetile ])
star
val feTurbulence :
([< Svg_types.feturbulence_attr ],
[< Svg_types.feturbulence_content ],
[> Svg_types.feturbulence ])
star
val cursor :
([< Svg_types.cursor_attr ],
[< Svg_types.cursor_content ],
[> Svg_types.cursor ])
star
val a :
([< Svg_types.a_attr ], [< Svg_types.a_content ], [> Svg_types.a ]) star
val view :
([< Svg_types.view_attr ], [< Svg_types.view_content ], [> Svg_types.view ])
star
val script :
([< Svg_types.script_attr ],
[< Svg_types.script_content ],
[> Svg_types.script ])
unary
val animation :
([< Svg_types.animation_attr ],
[< Svg_types.animation_content ],
[> Svg_types.animation ])
star
val set :
([< Svg_types.set_attr ], [< Svg_types.set_content ], [> Svg_types.set ])
star
val animateMotion :
([< Svg_types.animatemotion_attr ],
[< Svg_types.animatemotion_content ],
[> Svg_types.animatemotion ])
star
val mpath :
([< Svg_types.mpath_attr ],
[< Svg_types.mpath_content ],
[> Svg_types.mpath ])
star
val animateColor :
([< Svg_types.animatecolor_attr ],
[< Svg_types.animatecolor_content ],
[> Svg_types.animatecolor ])
star
val animateTransform :
([< Svg_types.animatetransform_attr ],
[< Svg_types.animatetransform_content ],
[> Svg_types.animatetransform ])
star
val font :
([< Svg_types.font_attr ], [< Svg_types.font_content ], [> Svg_types.font ])
star
val glyph :
([< Svg_types.glyph_attr ],
[< Svg_types.glyph_content ],
[> Svg_types.glyph ])
star
val missing_glyph :
([< Svg_types.missingglyph_attr ],
[< Svg_types.missingglyph_content ],
[> Svg_types.missingglyph ])
star
val hkern : ([< Svg_types.hkern_attr ], [> Svg_types.hkern ]) nullary
val vkern : ([< Svg_types.vkern_attr ], [> Svg_types.vkern ]) nullary
val font_face :
([< Svg_types.font_face_attr ], [> Svg_types.font_face ]) nullary
val font_face_src :
([< Svg_types.font_face_src_attr ],
[< Svg_types.font_face_src_content ],
[> Svg_types.font_face_src ])
star
val font_face_uri :
([< Svg_types.font_face_uri_attr ],
[< Svg_types.font_face_uri_content ],
[> Svg_types.font_face_uri ])
star
val font_face_format :
([< Svg_types.font_face_format_attr ], [> Svg_types.font_face_format ])
nullary
val font_face_name :
([< Svg_types.font_face_name_attr ], [> Svg_types.font_face_name ]) nullary
val metadata :
?a:Svg_types.metadata_attr attrib list ->
Xml.elt list_wrap ->
[> Svg_types.metadata ] elt
val foreignObject :
?a:Svg_types.foreignobject_attr attrib list ->
Xml.elt list_wrap ->
[> Svg_types.foreignobject ] elt
val pcdata : string wrap -> [> Svg_types.txt ] elt
WARNING: These functions do not ensure HTML or SVG validity! You should always explicitly given an appropriate type to the output.
val of_seq : Xml_stream.signal Stdlib.Seq.t -> 'a elt list_wrap
import signal
converts the given XML signal into Tyxml elements. It can be used with HTML and SVG parsing libraries, such as Markup.
val to_xmlattribs : 'a attrib list -> Xml.attrib list
val to_attrib : Xml.attrib -> 'a attrib
module Unsafe : sig ... end
Unsafe features.