mirror of
https://github.com/c-cube/ocaml-containers.git
synced 2025-12-06 11:15:31 -05:00
458 lines
No EOL
127 KiB
HTML
458 lines
No EOL
127 KiB
HTML
<html><head>
|
|
<link rel="stylesheet" href="style.css" type="text/css">
|
|
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
|
|
<link rel="Start" href="index.html">
|
|
<link title="Index of types" rel=Appendix href="index_types.html">
|
|
<link title="Index of exceptions" rel=Appendix href="index_exceptions.html">
|
|
<link title="Index of values" rel=Appendix href="index_values.html">
|
|
<link title="Index of class methods" rel=Appendix href="index_methods.html">
|
|
<link title="Index of class types" rel=Appendix href="index_class_types.html">
|
|
<link title="Index of modules" rel=Appendix href="index_modules.html">
|
|
<link title="Index of module types" rel=Appendix href="index_module_types.html">
|
|
<link title="CCVector" rel="Chapter" href="CCVector.html">
|
|
<link title="CCPrint" rel="Chapter" href="CCPrint.html">
|
|
<link title="CCError" rel="Chapter" href="CCError.html">
|
|
<link title="CCHeap" rel="Chapter" href="CCHeap.html">
|
|
<link title="CCList" rel="Chapter" href="CCList.html">
|
|
<link title="CCOpt" rel="Chapter" href="CCOpt.html">
|
|
<link title="CCPair" rel="Chapter" href="CCPair.html">
|
|
<link title="CCFun" rel="Chapter" href="CCFun.html">
|
|
<link title="CCHash" rel="Chapter" href="CCHash.html">
|
|
<link title="CCInt" rel="Chapter" href="CCInt.html">
|
|
<link title="CCBool" rel="Chapter" href="CCBool.html">
|
|
<link title="CCFloat" rel="Chapter" href="CCFloat.html">
|
|
<link title="CCArray" rel="Chapter" href="CCArray.html">
|
|
<link title="CCRef" rel="Chapter" href="CCRef.html">
|
|
<link title="CCSet" rel="Chapter" href="CCSet.html">
|
|
<link title="CCOrd" rel="Chapter" href="CCOrd.html">
|
|
<link title="CCRandom" rel="Chapter" href="CCRandom.html">
|
|
<link title="CCString" rel="Chapter" href="CCString.html">
|
|
<link title="CCHashtbl" rel="Chapter" href="CCHashtbl.html">
|
|
<link title="CCMap" rel="Chapter" href="CCMap.html">
|
|
<link title="CCFormat" rel="Chapter" href="CCFormat.html">
|
|
<link title="CCIO" rel="Chapter" href="CCIO.html">
|
|
<link title="CCInt64" rel="Chapter" href="CCInt64.html">
|
|
<link title="CCChar" rel="Chapter" href="CCChar.html">
|
|
<link title="CCResult" rel="Chapter" href="CCResult.html">
|
|
<link title="Containers" rel="Chapter" href="Containers.html">
|
|
<link title="CCKTree" rel="Chapter" href="CCKTree.html">
|
|
<link title="CCKList" rel="Chapter" href="CCKList.html">
|
|
<link title="CCLazy_list" rel="Chapter" href="CCLazy_list.html">
|
|
<link title="CCMultiMap" rel="Chapter" href="CCMultiMap.html">
|
|
<link title="CCMultiSet" rel="Chapter" href="CCMultiSet.html">
|
|
<link title="CCTrie" rel="Chapter" href="CCTrie.html">
|
|
<link title="CCFlatHashtbl" rel="Chapter" href="CCFlatHashtbl.html">
|
|
<link title="CCCache" rel="Chapter" href="CCCache.html">
|
|
<link title="CCPersistentHashtbl" rel="Chapter" href="CCPersistentHashtbl.html">
|
|
<link title="CCDeque" rel="Chapter" href="CCDeque.html">
|
|
<link title="CCFQueue" rel="Chapter" href="CCFQueue.html">
|
|
<link title="CCBV" rel="Chapter" href="CCBV.html">
|
|
<link title="CCMixtbl" rel="Chapter" href="CCMixtbl.html">
|
|
<link title="CCMixmap" rel="Chapter" href="CCMixmap.html">
|
|
<link title="CCRingBuffer" rel="Chapter" href="CCRingBuffer.html">
|
|
<link title="CCIntMap" rel="Chapter" href="CCIntMap.html">
|
|
<link title="CCPersistentArray" rel="Chapter" href="CCPersistentArray.html">
|
|
<link title="CCMixset" rel="Chapter" href="CCMixset.html">
|
|
<link title="CCHashconsedSet" rel="Chapter" href="CCHashconsedSet.html">
|
|
<link title="CCGraph" rel="Chapter" href="CCGraph.html">
|
|
<link title="CCHashSet" rel="Chapter" href="CCHashSet.html">
|
|
<link title="CCBitField" rel="Chapter" href="CCBitField.html">
|
|
<link title="CCHashTrie" rel="Chapter" href="CCHashTrie.html">
|
|
<link title="CCBloom" rel="Chapter" href="CCBloom.html">
|
|
<link title="CCWBTree" rel="Chapter" href="CCWBTree.html">
|
|
<link title="CCRAL" rel="Chapter" href="CCRAL.html">
|
|
<link title="CCAllocCache" rel="Chapter" href="CCAllocCache.html">
|
|
<link title="CCImmutArray" rel="Chapter" href="CCImmutArray.html">
|
|
<link title="CCHet" rel="Chapter" href="CCHet.html">
|
|
<link title="Containers_string" rel="Chapter" href="Containers_string.html">
|
|
<link title="CCKMP" rel="Chapter" href="CCKMP.html">
|
|
<link title="CCLevenshtein" rel="Chapter" href="CCLevenshtein.html">
|
|
<link title="CCApp_parse" rel="Chapter" href="CCApp_parse.html">
|
|
<link title="CCParse" rel="Chapter" href="CCParse.html">
|
|
<link title="CCBigstring" rel="Chapter" href="CCBigstring.html">
|
|
<link title="CCArray1" rel="Chapter" href="CCArray1.html">
|
|
<link title="CCPool" rel="Chapter" href="CCPool.html">
|
|
<link title="CCLock" rel="Chapter" href="CCLock.html">
|
|
<link title="CCSemaphore" rel="Chapter" href="CCSemaphore.html">
|
|
<link title="CCThread" rel="Chapter" href="CCThread.html">
|
|
<link title="CCBlockingQueue" rel="Chapter" href="CCBlockingQueue.html">
|
|
<link title="CCTimer" rel="Chapter" href="CCTimer.html">
|
|
<link title="Containers_advanced" rel="Chapter" href="Containers_advanced.html">
|
|
<link title="CCLinq" rel="Chapter" href="CCLinq.html">
|
|
<link title="CCBatch" rel="Chapter" href="CCBatch.html">
|
|
<link title="CCCat" rel="Chapter" href="CCCat.html">
|
|
<link title="CCMonadIO" rel="Chapter" href="CCMonadIO.html">
|
|
<link title="Containers_io_is_deprecated" rel="Chapter" href="Containers_io_is_deprecated.html">
|
|
<link title="CCUnix" rel="Chapter" href="CCUnix.html">
|
|
<link title="CCSexp" rel="Chapter" href="CCSexp.html">
|
|
<link title="CCSexpM" rel="Chapter" href="CCSexpM.html"><title>Containers doc : CCArray1</title>
|
|
</head>
|
|
<body>
|
|
<code class="code"><span class="keyword">sig</span><br>
|
|
<span class="keyword">type</span> <span class="keywordsign">'</span>a printer = <span class="constructor">Format</span>.formatter <span class="keywordsign">-></span> <span class="keywordsign">'</span>a <span class="keywordsign">-></span> unit<br>
|
|
<span class="keyword">type</span> <span class="keywordsign">'</span>a sequence = (<span class="keywordsign">'</span>a <span class="keywordsign">-></span> unit) <span class="keywordsign">-></span> unit<br>
|
|
<span class="keyword">type</span> <span class="keywordsign">'</span>a or_error = [ <span class="keywordsign">`</span><span class="constructor">Error</span> <span class="keyword">of</span> string <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">Ok</span> <span class="keyword">of</span> <span class="keywordsign">'</span>a ]<br>
|
|
<span class="keyword">type</span> random = <span class="constructor">Random</span>.<span class="constructor">State</span>.t<br>
|
|
<span class="keyword">type</span> json =<br>
|
|
[ <span class="keywordsign">`</span><span class="constructor">Assoc</span> <span class="keyword">of</span> (string * <span class="constructor">CCArray1</span>.json) list<br>
|
|
<span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">Bool</span> <span class="keyword">of</span> bool<br>
|
|
<span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">Float</span> <span class="keyword">of</span> float<br>
|
|
<span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">Int</span> <span class="keyword">of</span> int<br>
|
|
<span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">List</span> <span class="keyword">of</span> <span class="constructor">CCArray1</span>.json list<br>
|
|
<span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">Null</span><br>
|
|
<span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">String</span> <span class="keyword">of</span> string ]<br>
|
|
<span class="keyword">type</span> <span class="keywordsign">'</span>a to_json = <span class="keywordsign">'</span>a <span class="keywordsign">-></span> <span class="constructor">CCArray1</span>.json<br>
|
|
<span class="keyword">type</span> <span class="keywordsign">'</span>a of_json = <span class="constructor">CCArray1</span>.json <span class="keywordsign">-></span> <span class="keywordsign">'</span>a <span class="constructor">CCArray1</span>.or_error<br>
|
|
<span class="keyword">type</span> (<span class="keywordsign">'</span>a, <span class="keywordsign">'</span>b, <span class="keywordsign">'</span>c) t <span class="keyword">constraint</span> <span class="keywordsign">'</span>c = [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> ]<br>
|
|
<span class="keyword">type</span> (<span class="keywordsign">'</span>a, <span class="keywordsign">'</span>b, <span class="keywordsign">'</span>c) array_ = (<span class="keywordsign">'</span>a, <span class="keywordsign">'</span>b, <span class="keywordsign">'</span>c) <span class="constructor">CCArray1</span>.t<br>
|
|
<span class="keyword">constraint</span> <span class="keywordsign">'</span>c = [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> ]<br>
|
|
<span class="keyword">exception</span> <span class="constructor">WrongDimension</span><br>
|
|
<span class="keyword">val</span> make :<br>
|
|
?x:<span class="keywordsign">'</span>a <span class="keywordsign">-></span><br>
|
|
kind:(<span class="keywordsign">'</span>a, <span class="keywordsign">'</span>b) <span class="constructor">Bigarray</span>.kind <span class="keywordsign">-></span> int <span class="keywordsign">-></span> (<span class="keywordsign">'</span>a, <span class="keywordsign">'</span>b, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> ]) <span class="constructor">CCArray1</span>.t<br>
|
|
<span class="keyword">val</span> make_int : int <span class="keywordsign">-></span> (int, <span class="constructor">Bigarray</span>.int_elt, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> ]) <span class="constructor">CCArray1</span>.t<br>
|
|
<span class="keyword">val</span> make_char :<br>
|
|
int <span class="keywordsign">-></span> (char, <span class="constructor">Bigarray</span>.int8_unsigned_elt, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> ]) <span class="constructor">CCArray1</span>.t<br>
|
|
<span class="keyword">val</span> make_int8s :<br>
|
|
int <span class="keywordsign">-></span> (int, <span class="constructor">Bigarray</span>.int8_signed_elt, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> ]) <span class="constructor">CCArray1</span>.t<br>
|
|
<span class="keyword">val</span> make_int8u :<br>
|
|
int <span class="keywordsign">-></span> (int, <span class="constructor">Bigarray</span>.int8_unsigned_elt, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> ]) <span class="constructor">CCArray1</span>.t<br>
|
|
<span class="keyword">val</span> make_int16s :<br>
|
|
int <span class="keywordsign">-></span> (int, <span class="constructor">Bigarray</span>.int16_signed_elt, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> ]) <span class="constructor">CCArray1</span>.t<br>
|
|
<span class="keyword">val</span> make_int16u :<br>
|
|
int <span class="keywordsign">-></span> (int, <span class="constructor">Bigarray</span>.int16_unsigned_elt, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> ]) <span class="constructor">CCArray1</span>.t<br>
|
|
<span class="keyword">val</span> make_int32 :<br>
|
|
int <span class="keywordsign">-></span> (int32, <span class="constructor">Bigarray</span>.int32_elt, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> ]) <span class="constructor">CCArray1</span>.t<br>
|
|
<span class="keyword">val</span> make_int64 :<br>
|
|
int <span class="keywordsign">-></span> (int64, <span class="constructor">Bigarray</span>.int64_elt, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> ]) <span class="constructor">CCArray1</span>.t<br>
|
|
<span class="keyword">val</span> make_native :<br>
|
|
int <span class="keywordsign">-></span> (nativeint, <span class="constructor">Bigarray</span>.nativeint_elt, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> ]) <span class="constructor">CCArray1</span>.t<br>
|
|
<span class="keyword">val</span> make_float32 :<br>
|
|
int <span class="keywordsign">-></span> (float, <span class="constructor">Bigarray</span>.float32_elt, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> ]) <span class="constructor">CCArray1</span>.t<br>
|
|
<span class="keyword">val</span> make_float64 :<br>
|
|
int <span class="keywordsign">-></span> (float, <span class="constructor">Bigarray</span>.float64_elt, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> ]) <span class="constructor">CCArray1</span>.t<br>
|
|
<span class="keyword">val</span> make_complex32 :<br>
|
|
int <span class="keywordsign">-></span> (<span class="constructor">Complex</span>.t, <span class="constructor">Bigarray</span>.complex32_elt, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> ]) <span class="constructor">CCArray1</span>.t<br>
|
|
<span class="keyword">val</span> make_complex64 :<br>
|
|
int <span class="keywordsign">-></span> (<span class="constructor">Complex</span>.t, <span class="constructor">Bigarray</span>.complex64_elt, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> ]) <span class="constructor">CCArray1</span>.t<br>
|
|
<span class="keyword">val</span> init :<br>
|
|
kind:(<span class="keywordsign">'</span>a, <span class="keywordsign">'</span>b) <span class="constructor">Bigarray</span>.kind <span class="keywordsign">-></span><br>
|
|
f:(int <span class="keywordsign">-></span> <span class="keywordsign">'</span>a) <span class="keywordsign">-></span> int <span class="keywordsign">-></span> (<span class="keywordsign">'</span>a, <span class="keywordsign">'</span>b, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> ]) <span class="constructor">CCArray1</span>.t<br>
|
|
<span class="keyword">val</span> of_bigarray :<br>
|
|
(<span class="keywordsign">'</span>a, <span class="keywordsign">'</span>b, <span class="constructor">Bigarray</span>.c_layout) <span class="constructor">Bigarray</span>.<span class="constructor">Array1</span>.t <span class="keywordsign">-></span><br>
|
|
(<span class="keywordsign">'</span>a, <span class="keywordsign">'</span>b, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> ]) <span class="constructor">CCArray1</span>.t<br>
|
|
<span class="keyword">val</span> to_bigarray :<br>
|
|
(<span class="keywordsign">'</span>a, <span class="keywordsign">'</span>b, [ <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> ]) <span class="constructor">CCArray1</span>.t <span class="keywordsign">-></span><br>
|
|
(<span class="keywordsign">'</span>a, <span class="keywordsign">'</span>b, <span class="constructor">Bigarray</span>.c_layout) <span class="constructor">Bigarray</span>.<span class="constructor">Array1</span>.t<br>
|
|
<span class="keyword">val</span> ro :<br>
|
|
(<span class="keywordsign">'</span>a, <span class="keywordsign">'</span>b, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">R</span> ]) <span class="constructor">CCArray1</span>.t <span class="keywordsign">-></span> (<span class="keywordsign">'</span>a, <span class="keywordsign">'</span>b, [ <span class="keywordsign">`</span><span class="constructor">R</span> ]) <span class="constructor">CCArray1</span>.t<br>
|
|
<span class="keyword">val</span> wo :<br>
|
|
(<span class="keywordsign">'</span>a, <span class="keywordsign">'</span>b, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">W</span> ]) <span class="constructor">CCArray1</span>.t <span class="keywordsign">-></span> (<span class="keywordsign">'</span>a, <span class="keywordsign">'</span>b, [ <span class="keywordsign">`</span><span class="constructor">W</span> ]) <span class="constructor">CCArray1</span>.t<br>
|
|
<span class="keyword">val</span> length : (<span class="keywordsign">'</span>a, <span class="keywordsign">'</span>b, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">R</span> ]) <span class="constructor">CCArray1</span>.t <span class="keywordsign">-></span> int<br>
|
|
<span class="keyword">val</span> set : (<span class="keywordsign">'</span>a, <span class="keywordsign">'</span>b, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">W</span> ]) <span class="constructor">CCArray1</span>.t <span class="keywordsign">-></span> int <span class="keywordsign">-></span> <span class="keywordsign">'</span>a <span class="keywordsign">-></span> unit<br>
|
|
<span class="keyword">val</span> get : (<span class="keywordsign">'</span>a, <span class="keywordsign">'</span>b, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">R</span> ]) <span class="constructor">CCArray1</span>.t <span class="keywordsign">-></span> int <span class="keywordsign">-></span> <span class="keywordsign">'</span>a<br>
|
|
<span class="keyword">val</span> fill : (<span class="keywordsign">'</span>a, <span class="keywordsign">'</span>b, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">W</span> ]) <span class="constructor">CCArray1</span>.t <span class="keywordsign">-></span> <span class="keywordsign">'</span>a <span class="keywordsign">-></span> unit<br>
|
|
<span class="keyword">val</span> sub :<br>
|
|
(<span class="keywordsign">'</span>a, <span class="keywordsign">'</span>b, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> ] <span class="keyword">as</span> <span class="keywordsign">'</span>c) <span class="constructor">CCArray1</span>.t <span class="keywordsign">-></span><br>
|
|
int <span class="keywordsign">-></span> int <span class="keywordsign">-></span> (<span class="keywordsign">'</span>a, <span class="keywordsign">'</span>b, <span class="keywordsign">'</span>c) <span class="constructor">CCArray1</span>.t<br>
|
|
<span class="keyword">val</span> blit :<br>
|
|
(<span class="keywordsign">'</span>a, <span class="keywordsign">'</span>b, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">R</span> ]) <span class="constructor">CCArray1</span>.t <span class="keywordsign">-></span><br>
|
|
(<span class="keywordsign">'</span>a, <span class="keywordsign">'</span>b, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">W</span> ]) <span class="constructor">CCArray1</span>.t <span class="keywordsign">-></span> unit<br>
|
|
<span class="keyword">val</span> copy :<br>
|
|
(<span class="keywordsign">'</span>a, <span class="keywordsign">'</span>b, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">R</span> ]) <span class="constructor">CCArray1</span>.t <span class="keywordsign">-></span><br>
|
|
(<span class="keywordsign">'</span>a, <span class="keywordsign">'</span>b, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> ]) <span class="constructor">CCArray1</span>.t<br>
|
|
<span class="keyword">val</span> iter : f:(<span class="keywordsign">'</span>a <span class="keywordsign">-></span> unit) <span class="keywordsign">-></span> (<span class="keywordsign">'</span>a, <span class="keywordsign">'</span>b, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">R</span> ]) <span class="constructor">CCArray1</span>.t <span class="keywordsign">-></span> unit<br>
|
|
<span class="keyword">val</span> iteri :<br>
|
|
f:(int <span class="keywordsign">-></span> <span class="keywordsign">'</span>a <span class="keywordsign">-></span> unit) <span class="keywordsign">-></span> (<span class="keywordsign">'</span>a, <span class="keywordsign">'</span>b, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">R</span> ]) <span class="constructor">CCArray1</span>.t <span class="keywordsign">-></span> unit<br>
|
|
<span class="keyword">val</span> foldi :<br>
|
|
(<span class="keywordsign">'</span>b <span class="keywordsign">-></span> int <span class="keywordsign">-></span> <span class="keywordsign">'</span>a <span class="keywordsign">-></span> <span class="keywordsign">'</span>b) <span class="keywordsign">-></span><br>
|
|
<span class="keywordsign">'</span>b <span class="keywordsign">-></span> (<span class="keywordsign">'</span>a, <span class="keywordsign">'</span>c, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">R</span> ]) <span class="constructor">CCArray1</span>.t <span class="keywordsign">-></span> <span class="keywordsign">'</span>b<br>
|
|
<span class="keyword">val</span> for_all :<br>
|
|
f:(<span class="keywordsign">'</span>a <span class="keywordsign">-></span> bool) <span class="keywordsign">-></span> (<span class="keywordsign">'</span>a, <span class="keywordsign">'</span>b, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">R</span> ]) <span class="constructor">CCArray1</span>.t <span class="keywordsign">-></span> bool<br>
|
|
<span class="keyword">val</span> exists :<br>
|
|
f:(<span class="keywordsign">'</span>a <span class="keywordsign">-></span> bool) <span class="keywordsign">-></span> (<span class="keywordsign">'</span>a, <span class="keywordsign">'</span>b, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">R</span> ]) <span class="constructor">CCArray1</span>.t <span class="keywordsign">-></span> bool<br>
|
|
<span class="keyword">val</span> pp :<br>
|
|
<span class="keywordsign">'</span>a <span class="constructor">CCArray1</span>.printer <span class="keywordsign">-></span><br>
|
|
(<span class="keywordsign">'</span>a, <span class="keywordsign">'</span>b, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">R</span> ]) <span class="constructor">CCArray1</span>.t <span class="constructor">CCArray1</span>.printer<br>
|
|
<span class="keyword">module</span> <span class="constructor">Bool</span> :<br>
|
|
<span class="keyword">sig</span><br>
|
|
<span class="keyword">type</span> (<span class="keywordsign">'</span>b, <span class="keywordsign">'</span>a) t = (int, <span class="keywordsign">'</span>b, <span class="keywordsign">'</span>a) <span class="constructor">CCArray1</span>.array_<br>
|
|
<span class="keyword">constraint</span> <span class="keywordsign">'</span>a = [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> ]<br>
|
|
<span class="keyword">val</span> get : (<span class="keywordsign">'</span>a, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">R</span> ]) <span class="constructor">CCArray1</span>.<span class="constructor">Bool</span>.t <span class="keywordsign">-></span> int <span class="keywordsign">-></span> bool<br>
|
|
<span class="keyword">val</span> set :<br>
|
|
(<span class="keywordsign">'</span>a, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">W</span> ]) <span class="constructor">CCArray1</span>.<span class="constructor">Bool</span>.t <span class="keywordsign">-></span> int <span class="keywordsign">-></span> bool <span class="keywordsign">-></span> unit<br>
|
|
<span class="keyword">val</span> zeroes :<br>
|
|
int <span class="keywordsign">-></span> (<span class="constructor">Bigarray</span>.int8_unsigned_elt, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> ]) <span class="constructor">CCArray1</span>.<span class="constructor">Bool</span>.t<br>
|
|
<span class="keyword">val</span> ones :<br>
|
|
int <span class="keywordsign">-></span> (<span class="constructor">Bigarray</span>.int8_unsigned_elt, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> ]) <span class="constructor">CCArray1</span>.<span class="constructor">Bool</span>.t<br>
|
|
<span class="keyword">val</span> iter_zeroes :<br>
|
|
f:(int <span class="keywordsign">-></span> unit) <span class="keywordsign">-></span> (<span class="keywordsign">'</span>a, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">R</span> ]) <span class="constructor">CCArray1</span>.<span class="constructor">Bool</span>.t <span class="keywordsign">-></span> unit<br>
|
|
<span class="keyword">val</span> iter_ones :<br>
|
|
f:(int <span class="keywordsign">-></span> unit) <span class="keywordsign">-></span> (<span class="keywordsign">'</span>a, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">R</span> ]) <span class="constructor">CCArray1</span>.<span class="constructor">Bool</span>.t <span class="keywordsign">-></span> unit<br>
|
|
<span class="keyword">val</span> cardinal : (<span class="keywordsign">'</span>a, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">R</span> ]) <span class="constructor">CCArray1</span>.<span class="constructor">Bool</span>.t <span class="keywordsign">-></span> int<br>
|
|
<span class="keyword">val</span> pp : (<span class="keywordsign">'</span>a, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">R</span> ]) <span class="constructor">CCArray1</span>.<span class="constructor">Bool</span>.t <span class="constructor">CCArray1</span>.printer<br>
|
|
<span class="keyword">val</span> or_ :<br>
|
|
?res:(<span class="keywordsign">'</span>b, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">W</span> ] <span class="keyword">as</span> <span class="keywordsign">'</span>a) <span class="constructor">CCArray1</span>.<span class="constructor">Bool</span>.t <span class="keywordsign">-></span><br>
|
|
(<span class="keywordsign">'</span>b, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">R</span> ]) <span class="constructor">CCArray1</span>.<span class="constructor">Bool</span>.t <span class="keywordsign">-></span><br>
|
|
(<span class="keywordsign">'</span>b, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">R</span> ]) <span class="constructor">CCArray1</span>.<span class="constructor">Bool</span>.t <span class="keywordsign">-></span> (<span class="keywordsign">'</span>b, <span class="keywordsign">'</span>a) <span class="constructor">CCArray1</span>.<span class="constructor">Bool</span>.t<br>
|
|
<span class="keyword">val</span> and_ :<br>
|
|
?res:(<span class="keywordsign">'</span>b, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">W</span> ] <span class="keyword">as</span> <span class="keywordsign">'</span>a) <span class="constructor">CCArray1</span>.<span class="constructor">Bool</span>.t <span class="keywordsign">-></span><br>
|
|
(<span class="keywordsign">'</span>b, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">R</span> ]) <span class="constructor">CCArray1</span>.<span class="constructor">Bool</span>.t <span class="keywordsign">-></span><br>
|
|
(<span class="keywordsign">'</span>b, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">R</span> ]) <span class="constructor">CCArray1</span>.<span class="constructor">Bool</span>.t <span class="keywordsign">-></span> (<span class="keywordsign">'</span>b, <span class="keywordsign">'</span>a) <span class="constructor">CCArray1</span>.<span class="constructor">Bool</span>.t<br>
|
|
<span class="keyword">val</span> not_ :<br>
|
|
?res:(<span class="keywordsign">'</span>b, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">W</span> ] <span class="keyword">as</span> <span class="keywordsign">'</span>a) <span class="constructor">CCArray1</span>.<span class="constructor">Bool</span>.t <span class="keywordsign">-></span><br>
|
|
(<span class="keywordsign">'</span>b, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">R</span> ]) <span class="constructor">CCArray1</span>.<span class="constructor">Bool</span>.t <span class="keywordsign">-></span> (<span class="keywordsign">'</span>b, <span class="keywordsign">'</span>a) <span class="constructor">CCArray1</span>.<span class="constructor">Bool</span>.t<br>
|
|
<span class="keyword">val</span> mix :<br>
|
|
?res:(<span class="keywordsign">'</span>b, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">W</span> ] <span class="keyword">as</span> <span class="keywordsign">'</span>a) <span class="constructor">CCArray1</span>.<span class="constructor">Bool</span>.t <span class="keywordsign">-></span><br>
|
|
(<span class="keywordsign">'</span>b, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">R</span> ]) <span class="constructor">CCArray1</span>.<span class="constructor">Bool</span>.t <span class="keywordsign">-></span><br>
|
|
(<span class="keywordsign">'</span>b, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">R</span> ]) <span class="constructor">CCArray1</span>.<span class="constructor">Bool</span>.t <span class="keywordsign">-></span> (<span class="keywordsign">'</span>b, <span class="keywordsign">'</span>a) <span class="constructor">CCArray1</span>.<span class="constructor">Bool</span>.t<br>
|
|
<span class="keyword">val</span> convolution :<br>
|
|
?res:(<span class="keywordsign">'</span>b, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">W</span> ] <span class="keyword">as</span> <span class="keywordsign">'</span>a) <span class="constructor">CCArray1</span>.<span class="constructor">Bool</span>.t <span class="keywordsign">-></span><br>
|
|
(<span class="keywordsign">'</span>b, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">R</span> ]) <span class="constructor">CCArray1</span>.<span class="constructor">Bool</span>.t <span class="keywordsign">-></span><br>
|
|
by:(<span class="keywordsign">'</span>b, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">R</span> ]) <span class="constructor">CCArray1</span>.<span class="constructor">Bool</span>.t <span class="keywordsign">-></span><br>
|
|
(<span class="keywordsign">'</span>b, <span class="keywordsign">'</span>a) <span class="constructor">CCArray1</span>.<span class="constructor">Bool</span>.t<br>
|
|
<span class="keyword">end</span><br>
|
|
<span class="keyword">val</span> map :<br>
|
|
?res:(<span class="keywordsign">'</span>a, <span class="keywordsign">'</span>b, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">W</span> ] <span class="keyword">as</span> <span class="keywordsign">'</span>c) <span class="constructor">CCArray1</span>.t <span class="keywordsign">-></span><br>
|
|
f:(<span class="keywordsign">'</span>a <span class="keywordsign">-></span> <span class="keywordsign">'</span>a) <span class="keywordsign">-></span><br>
|
|
(<span class="keywordsign">'</span>a, <span class="keywordsign">'</span>b, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">R</span> ]) <span class="constructor">CCArray1</span>.t <span class="keywordsign">-></span> (<span class="keywordsign">'</span>a, <span class="keywordsign">'</span>b, <span class="keywordsign">'</span>c) <span class="constructor">CCArray1</span>.t<br>
|
|
<span class="keyword">val</span> map2 :<br>
|
|
?res:(<span class="keywordsign">'</span>a, <span class="keywordsign">'</span>b, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">W</span> ] <span class="keyword">as</span> <span class="keywordsign">'</span>c) <span class="constructor">CCArray1</span>.t <span class="keywordsign">-></span><br>
|
|
f:(<span class="keywordsign">'</span>a <span class="keywordsign">-></span> <span class="keywordsign">'</span>a2 <span class="keywordsign">-></span> <span class="keywordsign">'</span>a) <span class="keywordsign">-></span><br>
|
|
(<span class="keywordsign">'</span>a, <span class="keywordsign">'</span>b, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">R</span> ]) <span class="constructor">CCArray1</span>.t <span class="keywordsign">-></span><br>
|
|
(<span class="keywordsign">'</span>a2, <span class="keywordsign">'</span>d, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">R</span> ]) <span class="constructor">CCArray1</span>.t <span class="keywordsign">-></span> (<span class="keywordsign">'</span>a, <span class="keywordsign">'</span>b, <span class="keywordsign">'</span>c) <span class="constructor">CCArray1</span>.t<br>
|
|
<span class="keyword">val</span> append :<br>
|
|
?res:(<span class="keywordsign">'</span>a, <span class="keywordsign">'</span>b, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">W</span> ] <span class="keyword">as</span> <span class="keywordsign">'</span>c) <span class="constructor">CCArray1</span>.t <span class="keywordsign">-></span><br>
|
|
(<span class="keywordsign">'</span>a, <span class="keywordsign">'</span>b, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">R</span> ]) <span class="constructor">CCArray1</span>.t <span class="keywordsign">-></span><br>
|
|
(<span class="keywordsign">'</span>a, <span class="keywordsign">'</span>b, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">R</span> ]) <span class="constructor">CCArray1</span>.t <span class="keywordsign">-></span> (<span class="keywordsign">'</span>a, <span class="keywordsign">'</span>b, <span class="keywordsign">'</span>c) <span class="constructor">CCArray1</span>.t<br>
|
|
<span class="keyword">val</span> filter :<br>
|
|
?res:(<span class="constructor">Bigarray</span>.int8_unsigned_elt, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">W</span> ] <span class="keyword">as</span> <span class="keywordsign">'</span>c)<br>
|
|
<span class="constructor">CCArray1</span>.<span class="constructor">Bool</span>.t <span class="keywordsign">-></span><br>
|
|
f:(<span class="keywordsign">'</span>a <span class="keywordsign">-></span> bool) <span class="keywordsign">-></span><br>
|
|
(<span class="keywordsign">'</span>a, <span class="keywordsign">'</span>b, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">R</span> ]) <span class="constructor">CCArray1</span>.t <span class="keywordsign">-></span><br>
|
|
(<span class="constructor">Bigarray</span>.int8_unsigned_elt, <span class="keywordsign">'</span>c) <span class="constructor">CCArray1</span>.<span class="constructor">Bool</span>.t<br>
|
|
<span class="keyword">module</span> <span class="keyword">type</span> <span class="constructor">S</span> =<br>
|
|
<span class="keyword">sig</span><br>
|
|
<span class="keyword">type</span> elt<br>
|
|
<span class="keyword">type</span> (<span class="keywordsign">'</span>a, <span class="keywordsign">'</span>b) t = (<span class="constructor">CCArray1</span>.<span class="constructor">S</span>.elt, <span class="keywordsign">'</span>a, <span class="keywordsign">'</span>b) <span class="constructor">CCArray1</span>.array_<br>
|
|
<span class="keyword">constraint</span> <span class="keywordsign">'</span>b = [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> ]<br>
|
|
<span class="keyword">val</span> add :<br>
|
|
?res:(<span class="keywordsign">'</span>a, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">W</span> ] <span class="keyword">as</span> <span class="keywordsign">'</span>b) <span class="constructor">CCArray1</span>.<span class="constructor">S</span>.t <span class="keywordsign">-></span><br>
|
|
(<span class="keywordsign">'</span>a, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">R</span> ]) <span class="constructor">CCArray1</span>.<span class="constructor">S</span>.t <span class="keywordsign">-></span><br>
|
|
(<span class="keywordsign">'</span>a, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">R</span> ]) <span class="constructor">CCArray1</span>.<span class="constructor">S</span>.t <span class="keywordsign">-></span> (<span class="keywordsign">'</span>a, <span class="keywordsign">'</span>b) <span class="constructor">CCArray1</span>.<span class="constructor">S</span>.t<br>
|
|
<span class="keyword">val</span> mult :<br>
|
|
?res:(<span class="keywordsign">'</span>a, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">W</span> ] <span class="keyword">as</span> <span class="keywordsign">'</span>b) <span class="constructor">CCArray1</span>.<span class="constructor">S</span>.t <span class="keywordsign">-></span><br>
|
|
(<span class="keywordsign">'</span>a, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">R</span> ]) <span class="constructor">CCArray1</span>.<span class="constructor">S</span>.t <span class="keywordsign">-></span><br>
|
|
(<span class="keywordsign">'</span>a, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">R</span> ]) <span class="constructor">CCArray1</span>.<span class="constructor">S</span>.t <span class="keywordsign">-></span> (<span class="keywordsign">'</span>a, <span class="keywordsign">'</span>b) <span class="constructor">CCArray1</span>.<span class="constructor">S</span>.t<br>
|
|
<span class="keyword">val</span> scalar_add :<br>
|
|
?res:(<span class="keywordsign">'</span>a, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">W</span> ] <span class="keyword">as</span> <span class="keywordsign">'</span>b) <span class="constructor">CCArray1</span>.<span class="constructor">S</span>.t <span class="keywordsign">-></span><br>
|
|
(<span class="keywordsign">'</span>a, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">R</span> ]) <span class="constructor">CCArray1</span>.<span class="constructor">S</span>.t <span class="keywordsign">-></span><br>
|
|
x:<span class="constructor">CCArray1</span>.<span class="constructor">S</span>.elt <span class="keywordsign">-></span> (<span class="keywordsign">'</span>a, <span class="keywordsign">'</span>b) <span class="constructor">CCArray1</span>.<span class="constructor">S</span>.t<br>
|
|
<span class="keyword">val</span> scalar_mult :<br>
|
|
?res:(<span class="keywordsign">'</span>a, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">W</span> ] <span class="keyword">as</span> <span class="keywordsign">'</span>b) <span class="constructor">CCArray1</span>.<span class="constructor">S</span>.t <span class="keywordsign">-></span><br>
|
|
(<span class="keywordsign">'</span>a, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">R</span> ]) <span class="constructor">CCArray1</span>.<span class="constructor">S</span>.t <span class="keywordsign">-></span><br>
|
|
x:<span class="constructor">CCArray1</span>.<span class="constructor">S</span>.elt <span class="keywordsign">-></span> (<span class="keywordsign">'</span>a, <span class="keywordsign">'</span>b) <span class="constructor">CCArray1</span>.<span class="constructor">S</span>.t<br>
|
|
<span class="keyword">val</span> sum_elt : (<span class="keywordsign">'</span>a, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">R</span> ]) <span class="constructor">CCArray1</span>.<span class="constructor">S</span>.t <span class="keywordsign">-></span> <span class="constructor">CCArray1</span>.<span class="constructor">S</span>.elt<br>
|
|
<span class="keyword">val</span> product_elt :<br>
|
|
(<span class="keywordsign">'</span>a, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">R</span> ]) <span class="constructor">CCArray1</span>.<span class="constructor">S</span>.t <span class="keywordsign">-></span> <span class="constructor">CCArray1</span>.<span class="constructor">S</span>.elt<br>
|
|
<span class="keyword">val</span> dot_product :<br>
|
|
(<span class="keywordsign">'</span>a, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">R</span> ]) <span class="constructor">CCArray1</span>.<span class="constructor">S</span>.t <span class="keywordsign">-></span><br>
|
|
(<span class="keywordsign">'</span>b, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">R</span> ]) <span class="constructor">CCArray1</span>.<span class="constructor">S</span>.t <span class="keywordsign">-></span> <span class="constructor">CCArray1</span>.<span class="constructor">S</span>.elt<br>
|
|
<span class="keyword">module</span> <span class="constructor">Infix</span> :<br>
|
|
<span class="keyword">sig</span><br>
|
|
<span class="keyword">val</span> ( * ) :<br>
|
|
(<span class="keywordsign">'</span>a, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">R</span> ]) <span class="constructor">CCArray1</span>.<span class="constructor">S</span>.t <span class="keywordsign">-></span><br>
|
|
(<span class="keywordsign">'</span>a, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">R</span> ]) <span class="constructor">CCArray1</span>.<span class="constructor">S</span>.t <span class="keywordsign">-></span><br>
|
|
(<span class="keywordsign">'</span>a, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> ]) <span class="constructor">CCArray1</span>.<span class="constructor">S</span>.t<br>
|
|
<span class="keyword">val</span> ( + ) :<br>
|
|
(<span class="keywordsign">'</span>a, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">R</span> ]) <span class="constructor">CCArray1</span>.<span class="constructor">S</span>.t <span class="keywordsign">-></span><br>
|
|
(<span class="keywordsign">'</span>b, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">R</span> ]) <span class="constructor">CCArray1</span>.<span class="constructor">S</span>.t <span class="keywordsign">-></span><br>
|
|
(<span class="keywordsign">'</span>a, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> ]) <span class="constructor">CCArray1</span>.<span class="constructor">S</span>.t<br>
|
|
<span class="keyword">val</span> ( *! ) :<br>
|
|
(<span class="keywordsign">'</span>a, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">R</span> ]) <span class="constructor">CCArray1</span>.<span class="constructor">S</span>.t <span class="keywordsign">-></span><br>
|
|
<span class="constructor">CCArray1</span>.<span class="constructor">S</span>.elt <span class="keywordsign">-></span> (<span class="keywordsign">'</span>a, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> ]) <span class="constructor">CCArray1</span>.<span class="constructor">S</span>.t<br>
|
|
<span class="keyword">val</span> ( +! ) :<br>
|
|
(<span class="keywordsign">'</span>a, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">R</span> ]) <span class="constructor">CCArray1</span>.<span class="constructor">S</span>.t <span class="keywordsign">-></span><br>
|
|
<span class="constructor">CCArray1</span>.<span class="constructor">S</span>.elt <span class="keywordsign">-></span> (<span class="keywordsign">'</span>a, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> ]) <span class="constructor">CCArray1</span>.<span class="constructor">S</span>.t<br>
|
|
<span class="keyword">end</span><br>
|
|
<span class="keyword">val</span> ( * ) :<br>
|
|
(<span class="keywordsign">'</span>a, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">R</span> ]) t <span class="keywordsign">-></span><br>
|
|
(<span class="keywordsign">'</span>a, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">R</span> ]) t <span class="keywordsign">-></span> (<span class="keywordsign">'</span>a, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> ]) t<br>
|
|
<span class="keyword">val</span> ( + ) :<br>
|
|
(<span class="keywordsign">'</span>a, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">R</span> ]) t <span class="keywordsign">-></span><br>
|
|
(<span class="keywordsign">'</span>b, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">R</span> ]) t <span class="keywordsign">-></span> (<span class="keywordsign">'</span>a, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> ]) t<br>
|
|
<span class="keyword">val</span> ( *! ) : (<span class="keywordsign">'</span>a, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">R</span> ]) t <span class="keywordsign">-></span> elt <span class="keywordsign">-></span> (<span class="keywordsign">'</span>a, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> ]) t<br>
|
|
<span class="keyword">val</span> ( +! ) : (<span class="keywordsign">'</span>a, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">R</span> ]) t <span class="keywordsign">-></span> elt <span class="keywordsign">-></span> (<span class="keywordsign">'</span>a, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> ]) t<br>
|
|
<span class="keyword">end</span><br>
|
|
<span class="keyword">module</span> <span class="constructor">Int</span> :<br>
|
|
<span class="keyword">sig</span><br>
|
|
<span class="keyword">type</span> elt = int<br>
|
|
<span class="keyword">type</span> (<span class="keywordsign">'</span>a, <span class="keywordsign">'</span>b) t = (elt, <span class="keywordsign">'</span>a, <span class="keywordsign">'</span>b) array_ <span class="keyword">constraint</span> <span class="keywordsign">'</span>b = [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> ]<br>
|
|
<span class="keyword">val</span> add :<br>
|
|
?res:(<span class="keywordsign">'</span>a, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">W</span> ] <span class="keyword">as</span> <span class="keywordsign">'</span>b) t <span class="keywordsign">-></span><br>
|
|
(<span class="keywordsign">'</span>a, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">R</span> ]) t <span class="keywordsign">-></span> (<span class="keywordsign">'</span>a, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">R</span> ]) t <span class="keywordsign">-></span> (<span class="keywordsign">'</span>a, <span class="keywordsign">'</span>b) t<br>
|
|
<span class="keyword">val</span> mult :<br>
|
|
?res:(<span class="keywordsign">'</span>a, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">W</span> ] <span class="keyword">as</span> <span class="keywordsign">'</span>b) t <span class="keywordsign">-></span><br>
|
|
(<span class="keywordsign">'</span>a, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">R</span> ]) t <span class="keywordsign">-></span> (<span class="keywordsign">'</span>a, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">R</span> ]) t <span class="keywordsign">-></span> (<span class="keywordsign">'</span>a, <span class="keywordsign">'</span>b) t<br>
|
|
<span class="keyword">val</span> scalar_add :<br>
|
|
?res:(<span class="keywordsign">'</span>a, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">W</span> ] <span class="keyword">as</span> <span class="keywordsign">'</span>b) t <span class="keywordsign">-></span><br>
|
|
(<span class="keywordsign">'</span>a, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">R</span> ]) t <span class="keywordsign">-></span> x:elt <span class="keywordsign">-></span> (<span class="keywordsign">'</span>a, <span class="keywordsign">'</span>b) t<br>
|
|
<span class="keyword">val</span> scalar_mult :<br>
|
|
?res:(<span class="keywordsign">'</span>a, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">W</span> ] <span class="keyword">as</span> <span class="keywordsign">'</span>b) t <span class="keywordsign">-></span><br>
|
|
(<span class="keywordsign">'</span>a, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">R</span> ]) t <span class="keywordsign">-></span> x:elt <span class="keywordsign">-></span> (<span class="keywordsign">'</span>a, <span class="keywordsign">'</span>b) t<br>
|
|
<span class="keyword">val</span> sum_elt : (<span class="keywordsign">'</span>a, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">R</span> ]) t <span class="keywordsign">-></span> elt<br>
|
|
<span class="keyword">val</span> product_elt : (<span class="keywordsign">'</span>a, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">R</span> ]) t <span class="keywordsign">-></span> elt<br>
|
|
<span class="keyword">val</span> dot_product :<br>
|
|
(<span class="keywordsign">'</span>a, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">R</span> ]) t <span class="keywordsign">-></span> (<span class="keywordsign">'</span>b, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">R</span> ]) t <span class="keywordsign">-></span> elt<br>
|
|
<span class="keyword">module</span> <span class="constructor">Infix</span> :<br>
|
|
<span class="keyword">sig</span><br>
|
|
<span class="keyword">val</span> ( * ) :<br>
|
|
(<span class="keywordsign">'</span>a, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">R</span> ]) t <span class="keywordsign">-></span><br>
|
|
(<span class="keywordsign">'</span>a, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">R</span> ]) t <span class="keywordsign">-></span> (<span class="keywordsign">'</span>a, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> ]) t<br>
|
|
<span class="keyword">val</span> ( + ) :<br>
|
|
(<span class="keywordsign">'</span>a, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">R</span> ]) t <span class="keywordsign">-></span><br>
|
|
(<span class="keywordsign">'</span>b, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">R</span> ]) t <span class="keywordsign">-></span> (<span class="keywordsign">'</span>a, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> ]) t<br>
|
|
<span class="keyword">val</span> ( *! ) :<br>
|
|
(<span class="keywordsign">'</span>a, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">R</span> ]) t <span class="keywordsign">-></span> elt <span class="keywordsign">-></span> (<span class="keywordsign">'</span>a, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> ]) t<br>
|
|
<span class="keyword">val</span> ( +! ) :<br>
|
|
(<span class="keywordsign">'</span>a, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">R</span> ]) t <span class="keywordsign">-></span> elt <span class="keywordsign">-></span> (<span class="keywordsign">'</span>a, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> ]) t<br>
|
|
<span class="keyword">end</span><br>
|
|
<span class="keyword">val</span> ( * ) :<br>
|
|
(<span class="keywordsign">'</span>a, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">R</span> ]) t <span class="keywordsign">-></span><br>
|
|
(<span class="keywordsign">'</span>a, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">R</span> ]) t <span class="keywordsign">-></span> (<span class="keywordsign">'</span>a, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> ]) t<br>
|
|
<span class="keyword">val</span> ( + ) :<br>
|
|
(<span class="keywordsign">'</span>a, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">R</span> ]) t <span class="keywordsign">-></span><br>
|
|
(<span class="keywordsign">'</span>b, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">R</span> ]) t <span class="keywordsign">-></span> (<span class="keywordsign">'</span>a, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> ]) t<br>
|
|
<span class="keyword">val</span> ( *! ) : (<span class="keywordsign">'</span>a, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">R</span> ]) t <span class="keywordsign">-></span> elt <span class="keywordsign">-></span> (<span class="keywordsign">'</span>a, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> ]) t<br>
|
|
<span class="keyword">val</span> ( +! ) : (<span class="keywordsign">'</span>a, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">R</span> ]) t <span class="keywordsign">-></span> elt <span class="keywordsign">-></span> (<span class="keywordsign">'</span>a, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> ]) t<br>
|
|
<span class="keyword">end</span><br>
|
|
<span class="keyword">module</span> <span class="constructor">Float</span> :<br>
|
|
<span class="keyword">sig</span><br>
|
|
<span class="keyword">type</span> elt = float<br>
|
|
<span class="keyword">type</span> (<span class="keywordsign">'</span>a, <span class="keywordsign">'</span>b) t = (elt, <span class="keywordsign">'</span>a, <span class="keywordsign">'</span>b) array_ <span class="keyword">constraint</span> <span class="keywordsign">'</span>b = [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> ]<br>
|
|
<span class="keyword">val</span> add :<br>
|
|
?res:(<span class="keywordsign">'</span>a, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">W</span> ] <span class="keyword">as</span> <span class="keywordsign">'</span>b) t <span class="keywordsign">-></span><br>
|
|
(<span class="keywordsign">'</span>a, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">R</span> ]) t <span class="keywordsign">-></span> (<span class="keywordsign">'</span>a, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">R</span> ]) t <span class="keywordsign">-></span> (<span class="keywordsign">'</span>a, <span class="keywordsign">'</span>b) t<br>
|
|
<span class="keyword">val</span> mult :<br>
|
|
?res:(<span class="keywordsign">'</span>a, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">W</span> ] <span class="keyword">as</span> <span class="keywordsign">'</span>b) t <span class="keywordsign">-></span><br>
|
|
(<span class="keywordsign">'</span>a, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">R</span> ]) t <span class="keywordsign">-></span> (<span class="keywordsign">'</span>a, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">R</span> ]) t <span class="keywordsign">-></span> (<span class="keywordsign">'</span>a, <span class="keywordsign">'</span>b) t<br>
|
|
<span class="keyword">val</span> scalar_add :<br>
|
|
?res:(<span class="keywordsign">'</span>a, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">W</span> ] <span class="keyword">as</span> <span class="keywordsign">'</span>b) t <span class="keywordsign">-></span><br>
|
|
(<span class="keywordsign">'</span>a, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">R</span> ]) t <span class="keywordsign">-></span> x:elt <span class="keywordsign">-></span> (<span class="keywordsign">'</span>a, <span class="keywordsign">'</span>b) t<br>
|
|
<span class="keyword">val</span> scalar_mult :<br>
|
|
?res:(<span class="keywordsign">'</span>a, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">W</span> ] <span class="keyword">as</span> <span class="keywordsign">'</span>b) t <span class="keywordsign">-></span><br>
|
|
(<span class="keywordsign">'</span>a, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">R</span> ]) t <span class="keywordsign">-></span> x:elt <span class="keywordsign">-></span> (<span class="keywordsign">'</span>a, <span class="keywordsign">'</span>b) t<br>
|
|
<span class="keyword">val</span> sum_elt : (<span class="keywordsign">'</span>a, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">R</span> ]) t <span class="keywordsign">-></span> elt<br>
|
|
<span class="keyword">val</span> product_elt : (<span class="keywordsign">'</span>a, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">R</span> ]) t <span class="keywordsign">-></span> elt<br>
|
|
<span class="keyword">val</span> dot_product :<br>
|
|
(<span class="keywordsign">'</span>a, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">R</span> ]) t <span class="keywordsign">-></span> (<span class="keywordsign">'</span>b, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">R</span> ]) t <span class="keywordsign">-></span> elt<br>
|
|
<span class="keyword">module</span> <span class="constructor">Infix</span> :<br>
|
|
<span class="keyword">sig</span><br>
|
|
<span class="keyword">val</span> ( * ) :<br>
|
|
(<span class="keywordsign">'</span>a, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">R</span> ]) t <span class="keywordsign">-></span><br>
|
|
(<span class="keywordsign">'</span>a, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">R</span> ]) t <span class="keywordsign">-></span> (<span class="keywordsign">'</span>a, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> ]) t<br>
|
|
<span class="keyword">val</span> ( + ) :<br>
|
|
(<span class="keywordsign">'</span>a, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">R</span> ]) t <span class="keywordsign">-></span><br>
|
|
(<span class="keywordsign">'</span>b, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">R</span> ]) t <span class="keywordsign">-></span> (<span class="keywordsign">'</span>a, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> ]) t<br>
|
|
<span class="keyword">val</span> ( *! ) :<br>
|
|
(<span class="keywordsign">'</span>a, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">R</span> ]) t <span class="keywordsign">-></span> elt <span class="keywordsign">-></span> (<span class="keywordsign">'</span>a, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> ]) t<br>
|
|
<span class="keyword">val</span> ( +! ) :<br>
|
|
(<span class="keywordsign">'</span>a, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">R</span> ]) t <span class="keywordsign">-></span> elt <span class="keywordsign">-></span> (<span class="keywordsign">'</span>a, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> ]) t<br>
|
|
<span class="keyword">end</span><br>
|
|
<span class="keyword">val</span> ( * ) :<br>
|
|
(<span class="keywordsign">'</span>a, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">R</span> ]) t <span class="keywordsign">-></span><br>
|
|
(<span class="keywordsign">'</span>a, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">R</span> ]) t <span class="keywordsign">-></span> (<span class="keywordsign">'</span>a, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> ]) t<br>
|
|
<span class="keyword">val</span> ( + ) :<br>
|
|
(<span class="keywordsign">'</span>a, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">R</span> ]) t <span class="keywordsign">-></span><br>
|
|
(<span class="keywordsign">'</span>b, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">R</span> ]) t <span class="keywordsign">-></span> (<span class="keywordsign">'</span>a, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> ]) t<br>
|
|
<span class="keyword">val</span> ( *! ) : (<span class="keywordsign">'</span>a, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">R</span> ]) t <span class="keywordsign">-></span> elt <span class="keywordsign">-></span> (<span class="keywordsign">'</span>a, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> ]) t<br>
|
|
<span class="keyword">val</span> ( +! ) : (<span class="keywordsign">'</span>a, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">R</span> ]) t <span class="keywordsign">-></span> elt <span class="keywordsign">-></span> (<span class="keywordsign">'</span>a, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> ]) t<br>
|
|
<span class="keyword">end</span><br>
|
|
<span class="keyword">val</span> to_list : (<span class="keywordsign">'</span>a, <span class="keywordsign">'</span>b, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">R</span> ]) <span class="constructor">CCArray1</span>.t <span class="keywordsign">-></span> <span class="keywordsign">'</span>a list<br>
|
|
<span class="keyword">val</span> to_array : (<span class="keywordsign">'</span>a, <span class="keywordsign">'</span>b, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">R</span> ]) <span class="constructor">CCArray1</span>.t <span class="keywordsign">-></span> <span class="keywordsign">'</span>a array<br>
|
|
<span class="keyword">val</span> to_seq : (<span class="keywordsign">'</span>a, <span class="keywordsign">'</span>b, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">R</span> ]) <span class="constructor">CCArray1</span>.t <span class="keywordsign">-></span> <span class="keywordsign">'</span>a <span class="constructor">CCArray1</span>.sequence<br>
|
|
<span class="keyword">val</span> of_array :<br>
|
|
kind:(<span class="keywordsign">'</span>a, <span class="keywordsign">'</span>b) <span class="constructor">Bigarray</span>.kind <span class="keywordsign">-></span><br>
|
|
<span class="keywordsign">'</span>a array <span class="keywordsign">-></span> (<span class="keywordsign">'</span>a, <span class="keywordsign">'</span>b, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> ]) <span class="constructor">CCArray1</span>.t<br>
|
|
<span class="keyword">val</span> to_yojson :<br>
|
|
<span class="keywordsign">'</span>a <span class="constructor">CCArray1</span>.to_json <span class="keywordsign">-></span><br>
|
|
(<span class="keywordsign">'</span>a, <span class="keywordsign">'</span>b, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">R</span> ]) <span class="constructor">CCArray1</span>.t <span class="constructor">CCArray1</span>.to_json<br>
|
|
<span class="keyword">val</span> of_yojson :<br>
|
|
kind:(<span class="keywordsign">'</span>a, <span class="keywordsign">'</span>b) <span class="constructor">Bigarray</span>.kind <span class="keywordsign">-></span><br>
|
|
<span class="keywordsign">'</span>a <span class="constructor">CCArray1</span>.of_json <span class="keywordsign">-></span> (<span class="keywordsign">'</span>a, <span class="keywordsign">'</span>b, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> ]) <span class="constructor">CCArray1</span>.t <span class="constructor">CCArray1</span>.of_json<br>
|
|
<span class="keyword">val</span> int_to_yojson : int <span class="constructor">CCArray1</span>.to_json<br>
|
|
<span class="keyword">val</span> int_of_yojson : int <span class="constructor">CCArray1</span>.of_json<br>
|
|
<span class="keyword">val</span> float_to_yojson : float <span class="constructor">CCArray1</span>.to_json<br>
|
|
<span class="keyword">val</span> float_of_yojson : float <span class="constructor">CCArray1</span>.of_json<br>
|
|
<span class="keyword">module</span> <span class="constructor">View</span> :<br>
|
|
<span class="keyword">sig</span><br>
|
|
<span class="keyword">type</span> <span class="keywordsign">'</span>a t<br>
|
|
<span class="keyword">val</span> of_array :<br>
|
|
(<span class="keywordsign">'</span>a, <span class="keywordsign">'</span>b, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">R</span> ]) <span class="constructor">CCArray1</span>.array_ <span class="keywordsign">-></span> <span class="keywordsign">'</span>a <span class="constructor">CCArray1</span>.<span class="constructor">View</span>.t<br>
|
|
<span class="keyword">val</span> get : <span class="keywordsign">'</span>a <span class="constructor">CCArray1</span>.<span class="constructor">View</span>.t <span class="keywordsign">-></span> int <span class="keywordsign">-></span> <span class="keywordsign">'</span>a<br>
|
|
<span class="keyword">val</span> length : <span class="keywordsign">'</span>a <span class="constructor">CCArray1</span>.<span class="constructor">View</span>.t <span class="keywordsign">-></span> int<br>
|
|
<span class="keyword">val</span> map : f:(<span class="keywordsign">'</span>a <span class="keywordsign">-></span> <span class="keywordsign">'</span>b) <span class="keywordsign">-></span> <span class="keywordsign">'</span>a <span class="constructor">CCArray1</span>.<span class="constructor">View</span>.t <span class="keywordsign">-></span> <span class="keywordsign">'</span>b <span class="constructor">CCArray1</span>.<span class="constructor">View</span>.t<br>
|
|
<span class="keyword">val</span> map2 :<br>
|
|
f:(<span class="keywordsign">'</span>a <span class="keywordsign">-></span> <span class="keywordsign">'</span>b <span class="keywordsign">-></span> <span class="keywordsign">'</span>c) <span class="keywordsign">-></span><br>
|
|
<span class="keywordsign">'</span>a <span class="constructor">CCArray1</span>.<span class="constructor">View</span>.t <span class="keywordsign">-></span> <span class="keywordsign">'</span>b <span class="constructor">CCArray1</span>.<span class="constructor">View</span>.t <span class="keywordsign">-></span> <span class="keywordsign">'</span>c <span class="constructor">CCArray1</span>.<span class="constructor">View</span>.t<br>
|
|
<span class="keyword">val</span> select :<br>
|
|
idx:(int, <span class="keywordsign">'</span>b, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">R</span> ]) <span class="constructor">CCArray1</span>.array_ <span class="keywordsign">-></span><br>
|
|
<span class="keywordsign">'</span>a <span class="constructor">CCArray1</span>.<span class="constructor">View</span>.t <span class="keywordsign">-></span> <span class="keywordsign">'</span>a <span class="constructor">CCArray1</span>.<span class="constructor">View</span>.t<br>
|
|
<span class="keyword">val</span> select_a :<br>
|
|
idx:int array <span class="keywordsign">-></span> <span class="keywordsign">'</span>a <span class="constructor">CCArray1</span>.<span class="constructor">View</span>.t <span class="keywordsign">-></span> <span class="keywordsign">'</span>a <span class="constructor">CCArray1</span>.<span class="constructor">View</span>.t<br>
|
|
<span class="keyword">val</span> select_view :<br>
|
|
idx:int <span class="constructor">CCArray1</span>.<span class="constructor">View</span>.t <span class="keywordsign">-></span> <span class="keywordsign">'</span>a <span class="constructor">CCArray1</span>.<span class="constructor">View</span>.t <span class="keywordsign">-></span> <span class="keywordsign">'</span>a <span class="constructor">CCArray1</span>.<span class="constructor">View</span>.t<br>
|
|
<span class="keyword">val</span> foldi : (<span class="keywordsign">'</span>b <span class="keywordsign">-></span> int <span class="keywordsign">-></span> <span class="keywordsign">'</span>a <span class="keywordsign">-></span> <span class="keywordsign">'</span>b) <span class="keywordsign">-></span> <span class="keywordsign">'</span>b <span class="keywordsign">-></span> <span class="keywordsign">'</span>a <span class="constructor">CCArray1</span>.<span class="constructor">View</span>.t <span class="keywordsign">-></span> <span class="keywordsign">'</span>b<br>
|
|
<span class="keyword">val</span> iteri : f:(int <span class="keywordsign">-></span> <span class="keywordsign">'</span>a <span class="keywordsign">-></span> unit) <span class="keywordsign">-></span> <span class="keywordsign">'</span>a <span class="constructor">CCArray1</span>.<span class="constructor">View</span>.t <span class="keywordsign">-></span> unit<br>
|
|
<span class="keyword">module</span> <span class="keyword">type</span> <span class="constructor">S</span> =<br>
|
|
<span class="keyword">sig</span><br>
|
|
<span class="keyword">type</span> elt<br>
|
|
<span class="keyword">val</span> mult :<br>
|
|
<span class="constructor">CCArray1</span>.<span class="constructor">View</span>.<span class="constructor">S</span>.elt <span class="constructor">CCArray1</span>.<span class="constructor">View</span>.t <span class="keywordsign">-></span><br>
|
|
<span class="constructor">CCArray1</span>.<span class="constructor">View</span>.<span class="constructor">S</span>.elt <span class="constructor">CCArray1</span>.<span class="constructor">View</span>.t <span class="keywordsign">-></span><br>
|
|
<span class="constructor">CCArray1</span>.<span class="constructor">View</span>.<span class="constructor">S</span>.elt <span class="constructor">CCArray1</span>.<span class="constructor">View</span>.t<br>
|
|
<span class="keyword">val</span> add :<br>
|
|
<span class="constructor">CCArray1</span>.<span class="constructor">View</span>.<span class="constructor">S</span>.elt <span class="constructor">CCArray1</span>.<span class="constructor">View</span>.t <span class="keywordsign">-></span><br>
|
|
<span class="constructor">CCArray1</span>.<span class="constructor">View</span>.<span class="constructor">S</span>.elt <span class="constructor">CCArray1</span>.<span class="constructor">View</span>.t <span class="keywordsign">-></span><br>
|
|
<span class="constructor">CCArray1</span>.<span class="constructor">View</span>.<span class="constructor">S</span>.elt <span class="constructor">CCArray1</span>.<span class="constructor">View</span>.t<br>
|
|
<span class="keyword">val</span> sum :<br>
|
|
<span class="constructor">CCArray1</span>.<span class="constructor">View</span>.<span class="constructor">S</span>.elt <span class="constructor">CCArray1</span>.<span class="constructor">View</span>.t <span class="keywordsign">-></span> <span class="constructor">CCArray1</span>.<span class="constructor">View</span>.<span class="constructor">S</span>.elt<br>
|
|
<span class="keyword">val</span> prod :<br>
|
|
<span class="constructor">CCArray1</span>.<span class="constructor">View</span>.<span class="constructor">S</span>.elt <span class="constructor">CCArray1</span>.<span class="constructor">View</span>.t <span class="keywordsign">-></span> <span class="constructor">CCArray1</span>.<span class="constructor">View</span>.<span class="constructor">S</span>.elt<br>
|
|
<span class="keyword">val</span> add_scalar :<br>
|
|
<span class="constructor">CCArray1</span>.<span class="constructor">View</span>.<span class="constructor">S</span>.elt <span class="constructor">CCArray1</span>.<span class="constructor">View</span>.t <span class="keywordsign">-></span><br>
|
|
x:<span class="constructor">CCArray1</span>.<span class="constructor">View</span>.<span class="constructor">S</span>.elt <span class="keywordsign">-></span> <span class="constructor">CCArray1</span>.<span class="constructor">View</span>.<span class="constructor">S</span>.elt <span class="constructor">CCArray1</span>.<span class="constructor">View</span>.t<br>
|
|
<span class="keyword">val</span> mult_scalar :<br>
|
|
<span class="constructor">CCArray1</span>.<span class="constructor">View</span>.<span class="constructor">S</span>.elt <span class="constructor">CCArray1</span>.<span class="constructor">View</span>.t <span class="keywordsign">-></span><br>
|
|
x:<span class="constructor">CCArray1</span>.<span class="constructor">View</span>.<span class="constructor">S</span>.elt <span class="keywordsign">-></span> <span class="constructor">CCArray1</span>.<span class="constructor">View</span>.<span class="constructor">S</span>.elt <span class="constructor">CCArray1</span>.<span class="constructor">View</span>.t<br>
|
|
<span class="keyword">end</span><br>
|
|
<span class="keyword">module</span> <span class="constructor">Int</span> :<br>
|
|
<span class="keyword">sig</span><br>
|
|
<span class="keyword">type</span> elt = int<br>
|
|
<span class="keyword">val</span> mult : elt t <span class="keywordsign">-></span> elt t <span class="keywordsign">-></span> elt t<br>
|
|
<span class="keyword">val</span> add : elt t <span class="keywordsign">-></span> elt t <span class="keywordsign">-></span> elt t<br>
|
|
<span class="keyword">val</span> sum : elt t <span class="keywordsign">-></span> elt<br>
|
|
<span class="keyword">val</span> prod : elt t <span class="keywordsign">-></span> elt<br>
|
|
<span class="keyword">val</span> add_scalar : elt t <span class="keywordsign">-></span> x:elt <span class="keywordsign">-></span> elt t<br>
|
|
<span class="keyword">val</span> mult_scalar : elt t <span class="keywordsign">-></span> x:elt <span class="keywordsign">-></span> elt t<br>
|
|
<span class="keyword">end</span><br>
|
|
<span class="keyword">module</span> <span class="constructor">Float</span> :<br>
|
|
<span class="keyword">sig</span><br>
|
|
<span class="keyword">type</span> elt = float<br>
|
|
<span class="keyword">val</span> mult : elt t <span class="keywordsign">-></span> elt t <span class="keywordsign">-></span> elt t<br>
|
|
<span class="keyword">val</span> add : elt t <span class="keywordsign">-></span> elt t <span class="keywordsign">-></span> elt t<br>
|
|
<span class="keyword">val</span> sum : elt t <span class="keywordsign">-></span> elt<br>
|
|
<span class="keyword">val</span> prod : elt t <span class="keywordsign">-></span> elt<br>
|
|
<span class="keyword">val</span> add_scalar : elt t <span class="keywordsign">-></span> x:elt <span class="keywordsign">-></span> elt t<br>
|
|
<span class="keyword">val</span> mult_scalar : elt t <span class="keywordsign">-></span> x:elt <span class="keywordsign">-></span> elt t<br>
|
|
<span class="keyword">end</span><br>
|
|
<span class="keyword">val</span> raw :<br>
|
|
length:((<span class="keywordsign">'</span>a, <span class="keywordsign">'</span>b, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">R</span> ]) <span class="constructor">CCArray1</span>.array_ <span class="keywordsign">-></span> int) <span class="keywordsign">-></span><br>
|
|
get:((<span class="keywordsign">'</span>a, <span class="keywordsign">'</span>b, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">R</span> ]) <span class="constructor">CCArray1</span>.array_ <span class="keywordsign">-></span> int <span class="keywordsign">-></span> <span class="keywordsign">'</span>a) <span class="keywordsign">-></span><br>
|
|
(<span class="keywordsign">'</span>a, <span class="keywordsign">'</span>b, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">R</span> ]) <span class="constructor">CCArray1</span>.array_ <span class="keywordsign">-></span> <span class="keywordsign">'</span>a <span class="constructor">CCArray1</span>.<span class="constructor">View</span>.t<br>
|
|
<span class="keyword">val</span> to_array :<br>
|
|
?res:(<span class="keywordsign">'</span>a, <span class="keywordsign">'</span>b, [< <span class="keywordsign">`</span><span class="constructor">R</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">W</span> > <span class="keywordsign">`</span><span class="constructor">W</span> ] <span class="keyword">as</span> <span class="keywordsign">'</span>c) <span class="constructor">CCArray1</span>.array_ <span class="keywordsign">-></span><br>
|
|
?kind:(<span class="keywordsign">'</span>a, <span class="keywordsign">'</span>b) <span class="constructor">Bigarray</span>.kind <span class="keywordsign">-></span><br>
|
|
<span class="keywordsign">'</span>a <span class="constructor">CCArray1</span>.<span class="constructor">View</span>.t <span class="keywordsign">-></span> (<span class="keywordsign">'</span>a, <span class="keywordsign">'</span>b, <span class="keywordsign">'</span>c) <span class="constructor">CCArray1</span>.array_<br>
|
|
<span class="keyword">end</span><br>
|
|
<span class="keyword">end</span></code></body></html> |