init commit again

This commit is contained in:
Peter
2023-11-01 09:29:33 +01:00
parent 448147e7da
commit d6c745207b
250 changed files with 15552 additions and 1 deletions

View File

@@ -0,0 +1,87 @@
### Booleans
[
Datatype booleans Alias bools
Funcon true
Funcon false
Funcon not
Funcon implies
Funcon and
Funcon or
Funcon exclusive-or Alias xor
]
Datatype
booleans ::= true | false
Alias
bools = booleans
Funcon
not(_:booleans) : =>booleans
/*
`not(B)` is logical negation.
*/
Rule
not(false) ~> true
Rule
not(true) ~> false
Funcon
implies(_:booleans, _:booleans) : =>booleans
/*
`implies(B1, B2)` is logical implication.
*/
Rule
implies(false, false) ~> true
Rule
implies(false, true) ~> true
Rule
implies(true, true) ~> true
Rule
implies(true, false) ~> false
Funcon
and(_:booleans*) : =>booleans
/*
`and(B, ...)` is logical conjunction of any number of Boolean values.
*/
Rule
and( ) ~> true
Rule
and(false, _*:booleans*) ~> false
Rule
and(true, B*:booleans*) ~> and(B*)
Funcon
or(_:booleans*) : =>booleans
/*
`or(B, ...)` is logical disjunction of any number of Boolean values.
*/
Rule
or( ) ~> false
Rule
or(true, _*:booleans*) ~> true
Rule
or(false, B*:booleans*) ~> or(B*)
Funcon
exclusive-or(_:booleans, _:booleans) : =>booleans
Alias
xor = exclusive-or
/*
`exclusive-or(B1, B2)` is exclusive disjunction.
*/
Rule
exclusive-or(false, false) ~> false
Rule
exclusive-or(false, true) ~> true
Rule
exclusive-or(true, false) ~> true
Rule
exclusive-or(true, true) ~> false

View File

@@ -0,0 +1,128 @@
---
layout: default
title: "Booleans"
parent: Primitive
ancestor: Funcons-beta
---
[Funcons-beta] : [Booleans.cbs]
-----------------------------
### Booleans
<div class="highlighter-rouge"><pre class="highlight"><code>[
<i class="keyword">Datatype</i> <span class="name"><a href="#Name_booleans">booleans</a></span> <i class="keyword">Alias</i> <span class="name"><a href="#Name_bools">bools</a></span>
<i class="keyword">Funcon</i> <span class="name"><a href="#Name_true">true</a></span>
<i class="keyword">Funcon</i> <span class="name"><a href="#Name_false">false</a></span>
<i class="keyword">Funcon</i> <span class="name"><a href="#Name_not">not</a></span>
<i class="keyword">Funcon</i> <span class="name"><a href="#Name_implies">implies</a></span>
<i class="keyword">Funcon</i> <span class="name"><a href="#Name_and">and</a></span>
<i class="keyword">Funcon</i> <span class="name"><a href="#Name_or">or</a></span>
<i class="keyword">Funcon</i> <span class="name"><a href="#Name_exclusive-or">exclusive-or</a></span> <i class="keyword">Alias</i> <span class="name"><a href="#Name_xor">xor</a></span>
]</code></pre></div>
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Datatype</i>
<span class="name"><span id="Name_booleans">booleans</span></span> ::= <span id="Name_true">true</span> | <span id="Name_false">false</span>
<i class="keyword">Alias</i>
<span class="name"><span id="Name_bools">bools</span></span> = <span class="name"><a href="#Name_booleans">booleans</a></span></code></pre></div>
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Funcon</i>
<span class="name"><span id="Name_not">not</span></span>(_:<span class="name"><a href="#Name_booleans">booleans</a></span>) : =><span class="name"><a href="#Name_booleans">booleans</a></span></code></pre></div>
<code><span class="name"><a href="#Name_not">not</a></span>(<i class="var">B</i>)</code> is logical negation.
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Rule</i>
<span class="name"><a href="#Name_not">not</a></span>(<span class="name"><a href="#Name_false">false</a></span>) ~> <span class="name"><a href="#Name_true">true</a></span>
<i class="keyword">Rule</i>
<span class="name"><a href="#Name_not">not</a></span>(<span class="name"><a href="#Name_true">true</a></span>) ~> <span class="name"><a href="#Name_false">false</a></span></code></pre></div>
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Funcon</i>
<span class="name"><span id="Name_implies">implies</span></span>(_:<span class="name"><a href="#Name_booleans">booleans</a></span>, _:<span class="name"><a href="#Name_booleans">booleans</a></span>) : =><span class="name"><a href="#Name_booleans">booleans</a></span></code></pre></div>
<code><span class="name"><a href="#Name_implies">implies</a></span>(<i class="var">B<sub class="sub">1</sub></i>, <i class="var">B<sub class="sub">2</sub></i>)</code> is logical implication.
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Rule</i>
<span class="name"><a href="#Name_implies">implies</a></span>(<span class="name"><a href="#Name_false">false</a></span>, <span class="name"><a href="#Name_false">false</a></span>) ~> <span class="name"><a href="#Name_true">true</a></span>
<i class="keyword">Rule</i>
<span class="name"><a href="#Name_implies">implies</a></span>(<span class="name"><a href="#Name_false">false</a></span>, <span class="name"><a href="#Name_true">true</a></span>) ~> <span class="name"><a href="#Name_true">true</a></span>
<i class="keyword">Rule</i>
<span class="name"><a href="#Name_implies">implies</a></span>(<span class="name"><a href="#Name_true">true</a></span>, <span class="name"><a href="#Name_true">true</a></span>) ~> <span class="name"><a href="#Name_true">true</a></span>
<i class="keyword">Rule</i>
<span class="name"><a href="#Name_implies">implies</a></span>(<span class="name"><a href="#Name_true">true</a></span>, <span class="name"><a href="#Name_false">false</a></span>) ~> <span class="name"><a href="#Name_false">false</a></span></code></pre></div>
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Funcon</i>
<span class="name"><span id="Name_and">and</span></span>(_:<span class="name"><a href="#Name_booleans">booleans</a></span><sup class="sup">*</sup>) : =><span class="name"><a href="#Name_booleans">booleans</a></span></code></pre></div>
<code><span class="name"><a href="#Name_and">and</a></span>(<i class="var">B</i>, ...)</code> is logical conjunction of any number of Boolean values.
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Rule</i>
<span class="name"><a href="#Name_and">and</a></span>( ) ~> <span class="name"><a href="#Name_true">true</a></span>
<i class="keyword">Rule</i>
<span class="name"><a href="#Name_and">and</a></span>(<span class="name"><a href="#Name_false">false</a></span>, _*:<span class="name"><a href="#Name_booleans">booleans</a></span><sup class="sup">*</sup>) ~> <span class="name"><a href="#Name_false">false</a></span>
<i class="keyword">Rule</i>
<span class="name"><a href="#Name_and">and</a></span>(<span class="name"><a href="#Name_true">true</a></span>, <span id="Variable369_B*"><i class="var">B<sup class="sup">*</sup></i></span>:<span class="name"><a href="#Name_booleans">booleans</a></span><sup class="sup">*</sup>) ~> <span class="name"><a href="#Name_and">and</a></span>(<a href="#Variable369_B*"><i class="var">B<sup class="sup">*</sup></i></a>)</code></pre></div>
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Funcon</i>
<span class="name"><span id="Name_or">or</span></span>(_:<span class="name"><a href="#Name_booleans">booleans</a></span><sup class="sup">*</sup>) : =><span class="name"><a href="#Name_booleans">booleans</a></span></code></pre></div>
<code><span class="name"><a href="#Name_or">or</a></span>(<i class="var">B</i>, ...)</code> is logical disjunction of any number of Boolean values.
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Rule</i>
<span class="name"><a href="#Name_or">or</a></span>( ) ~> <span class="name"><a href="#Name_false">false</a></span>
<i class="keyword">Rule</i>
<span class="name"><a href="#Name_or">or</a></span>(<span class="name"><a href="#Name_true">true</a></span>, _*:<span class="name"><a href="#Name_booleans">booleans</a></span><sup class="sup">*</sup>) ~> <span class="name"><a href="#Name_true">true</a></span>
<i class="keyword">Rule</i>
<span class="name"><a href="#Name_or">or</a></span>(<span class="name"><a href="#Name_false">false</a></span>, <span id="Variable494_B*"><i class="var">B<sup class="sup">*</sup></i></span>:<span class="name"><a href="#Name_booleans">booleans</a></span><sup class="sup">*</sup>) ~> <span class="name"><a href="#Name_or">or</a></span>(<a href="#Variable494_B*"><i class="var">B<sup class="sup">*</sup></i></a>)</code></pre></div>
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Funcon</i>
<span class="name"><span id="Name_exclusive-or">exclusive-or</span></span>(_:<span class="name"><a href="#Name_booleans">booleans</a></span>, _:<span class="name"><a href="#Name_booleans">booleans</a></span>) : =><span class="name"><a href="#Name_booleans">booleans</a></span>
<i class="keyword">Alias</i>
<span class="name"><span id="Name_xor">xor</span></span> = <span class="name"><a href="#Name_exclusive-or">exclusive-or</a></span></code></pre></div>
<code><span class="name"><a href="#Name_exclusive-or">exclusive-or</a></span>(<i class="var">B<sub class="sub">1</sub></i>, <i class="var">B<sub class="sub">2</sub></i>)</code> is exclusive disjunction.
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Rule</i>
<span class="name"><a href="#Name_exclusive-or">exclusive-or</a></span>(<span class="name"><a href="#Name_false">false</a></span>, <span class="name"><a href="#Name_false">false</a></span>) ~> <span class="name"><a href="#Name_false">false</a></span>
<i class="keyword">Rule</i>
<span class="name"><a href="#Name_exclusive-or">exclusive-or</a></span>(<span class="name"><a href="#Name_false">false</a></span>, <span class="name"><a href="#Name_true">true</a></span>) ~> <span class="name"><a href="#Name_true">true</a></span>
<i class="keyword">Rule</i>
<span class="name"><a href="#Name_exclusive-or">exclusive-or</a></span>(<span class="name"><a href="#Name_true">true</a></span>, <span class="name"><a href="#Name_false">false</a></span>) ~> <span class="name"><a href="#Name_true">true</a></span>
<i class="keyword">Rule</i>
<span class="name"><a href="#Name_exclusive-or">exclusive-or</a></span>(<span class="name"><a href="#Name_true">true</a></span>, <span class="name"><a href="#Name_true">true</a></span>) ~> <span class="name"><a href="#Name_false">false</a></span></code></pre></div>
____
From the [PLanCompS Project] | [CBS-beta issues...] | [Suggest an improvement...]
[Booleans.cbs]: Booleans.cbs
"CBS SOURCE FILE"
[Funcons-beta]: /CBS-beta/docs/Funcons-beta
"FUNCONS-BETA"
[Unstable-Funcons-beta]: /CBS-beta/docs/Unstable-Funcons-beta
"UNSTABLE-FUNCONS-BETA"
[Languages-beta]: /CBS-beta/docs/Languages-beta
"LANGUAGES-BETA"
[Unstable-Languages-beta]: /CBS-beta/docs/Unstable-Languages-beta
"UNSTABLE-LANGUAGES-BETA"
[CBS-beta]: /CBS-beta "CBS-BETA"
[PLanCompS Project]: https://plancomps.github.io
"PROGRAMMING LANGUAGE COMPONENTS AND SPECIFICATIONS PROJECT HOME PAGE"
[CBS-beta issues...]: https://github.com/plancomps/CBS-beta/issues
"CBS-BETA ISSUE REPORTS ON GITHUB"
[Suggest an improvement...]: mailto:plancomps@gmail.com?Subject=CBS-beta%20-%20comment&Body=Re%3A%20CBS-beta%20specification%20at%20Values/Primitive/Booleans/Booleans.cbs%0A%0AComment/Query/Issue/Suggestion%3A%0A%0A%0ASignature%3A%0A
"GENERATE AN EMAIL TEMPLATE"

View File

@@ -0,0 +1,20 @@
general {
funcon-term: sequential (
check-true(and( ))
, check-true(and(true))
, check-true(and(true,true))
, check-true(and(true,true,true))
, check-true(not and(false))
, check-true(not and(false,true))
, check-true(not and(true,false))
, check-true(not and(false,true,true))
, check-true(not and(true,true,false))
, check-true(not and(true,true,false,true))
, print "OK"
);
}
tests {
result-term : null-value;
standard-out : ["OK"];
}

View File

@@ -0,0 +1,14 @@
general {
funcon-term: sequential (
check-true(exclusive-or(false, true))
, check-true(exclusive-or(true, false))
, check-true(not exclusive-or(false, false))
, check-true(not exclusive-or(true, true))
, print "OK"
);
}
tests {
result-term : null-value;
standard-out : ["OK"];
}

View File

@@ -0,0 +1,14 @@
general {
funcon-term: sequential (
check-true(implies(false, false))
, check-true(implies(false, true))
, check-true(implies(true, true))
, check-true(not implies(true, false))
, print "OK"
);
}
tests {
result-term : null-value;
standard-out : ["OK"];
}

View File

@@ -0,0 +1,12 @@
general {
funcon-term: sequential (
check-true(is-equal(not false, true))
, check-true(is-equal(not true, false))
, print "OK"
);
}
tests {
result-term : null-value;
standard-out : ["OK"];
}

View File

@@ -0,0 +1,17 @@
general {
funcon-term: sequential (
check-true(or(true))
, check-true(or(true, false))
, check-true(or(false, true))
, check-true(or(false, false, true))
, check-true(or(false, false, true, false))
, check-true(not or( ))
, check-true(not or(false))
, print "OK"
);
}
tests {
result-term : null-value;
standard-out : ["OK"];
}

View File

@@ -0,0 +1,171 @@
### Characters
[
Type characters Alias chars
Datatype unicode-characters Alias unicode-chars
Type unicode-points
Funcon unicode-character Alias unicode-char
Funcon unicode-point Alias unicode
Type basic-multilingual-plane-characters Alias bmp-chars
Type basic-multilingual-plane-points
Type iso-latin-1-characters Alias latin-1-chars
Type iso-latin-1-points
Type ascii-characters Alias ascii-chars
Type ascii-points
Funcon ascii-character Alias ascii-char
Funcon utf-8
Funcon utf-16
Funcon utf-32
Funcon backspace
Funcon horizontal-tab
Funcon line-feed
Funcon form-feed
Funcon carriage-return
Funcon double-quote
Funcon single-quote
Funcon backslash
]
Built-in Type
characters <: values
/*
Literal characters can be written `'C'` where `C` is any visible character
other than a `single-quote` or `backslash` character, which need to be
escaped as `'\''` and `'\\'`.
*/
Alias
chars = characters
#### Unicode character set
/*
The set of Unicode characters and allocated points is open to extension.
See https://en.wikipedia.org/wiki/Plane_(Unicode)
*/
Built-in Datatype
unicode-characters <: characters
Alias
unicode-chars = unicode-characters
Built-in Type
unicode-points <: bounded-integers(0, unsigned-bit-vector-maximum(21))
Built-in Funcon
unicode-character(_:unicode-points) : unicode-characters
Alias
unicode-char = unicode-character
/*
The values in `unicode-characters` are the values of
`unicode-character(UP:unicode-points)`.
*/
Funcon
unicode-point(_:unicode-characters) : =>unicode-points
Alias
unicode = unicode-point
Rule
unicode-point(unicode-character(UP:unicode-points)) ~> UP
#### Unicode basic multilingual plane
/*
The set of Unicode BMP characters and allocated points is open to extension.
*/
Built-in Datatype
basic-multilingual-plane-characters <: unicode-characters
Alias
bmp-chars = basic-multilingual-plane-characters
Built-in Type
basic-multilingual-plane-points <:
bounded-integers(0, unsigned-bit-vector-maximum(17))
/*
The values in `basic-multilingual-plane-characters` are the values of
`unicode-character(BMPP:basic-multilingual-plane-points)`.
*/
#### ISO Latin-1 character set
Built-in Datatype
iso-latin-1-characters <: basic-multilingual-plane-characters
Alias
latin-1-chars = iso-latin-1-characters
Type
iso-latin-1-points ~> bounded-integers(0, unsigned-bit-vector-maximum(8))
/*
The values in `iso-latin-1-characters` are the values of
`unicode-character(ILP:iso-latin-1-points)`.
*/
#### ASCII character set
Built-in Type
ascii-characters <: iso-latin-1-characters
Alias
ascii-chars = ascii-characters
Type
ascii-points ~> bounded-integers(0, unsigned-bit-vector-maximum(7))
/*
The values in `ascii-characters` are the values of
`unicode-character(AP:ascii-points)`.
*/
Funcon
ascii-character(_:strings) : =>ascii-characters?
Alias
ascii-char = ascii-character
/*
`ascii-character"C"` takes a string. When it consists of a single ASCII
character `C` it gives the character, otherwise `( )`.
*/
Rule
ascii-character[C:ascii-characters] ~> C
Rule
C : ~ ascii-characters
------------------------------------
ascii-character[C:characters] ~> ( )
Rule
length(C*) =/= 1
--------------------------------------
ascii-character[C*:characters*] ~> ( )
#### Character point encodings
/*
See https://en.wikipedia.org/wiki/Character_encoding
*/
Built-in Funcon
utf-8(_:unicode-points) : =>(bytes, (bytes, (bytes, bytes?)? )? )
Built-in Funcon
utf-16(_:unicode-points) : =>(bit-vectors(16), (bit-vectors(16))? )
Built-in Funcon
utf-32(_:unicode-points) : =>bit-vectors(32)
#### Control characters
Funcon
backspace : =>ascii-characters
~> unicode-character(hexadecimal-natural"0008")
Funcon
horizontal-tab : =>ascii-characters
~> unicode-character(hexadecimal-natural"0009")
Funcon
line-feed : =>ascii-characters
~> unicode-character(hexadecimal-natural"000a")
Funcon
form-feed : =>ascii-characters
~> unicode-character(hexadecimal-natural"000c")
Funcon
carriage-return : =>ascii-characters
~> unicode-character(hexadecimal-natural"000d")
Funcon
double-quote : =>ascii-characters
~> unicode-character(hexadecimal-natural"0022")
Funcon
single-quote : =>ascii-characters
~> unicode-character(hexadecimal-natural"0027")
Funcon
backslash : =>ascii-characters
~> unicode-character(hexadecimal-natural"005c")

View File

@@ -0,0 +1,225 @@
---
layout: default
title: "Characters"
parent: Primitive
ancestor: Funcons-beta
---
[Funcons-beta] : [Characters.cbs]
-----------------------------
### Characters
<div class="highlighter-rouge"><pre class="highlight"><code>[
<i class="keyword">Type</i> <span class="name"><a href="#Name_characters">characters</a></span> <i class="keyword">Alias</i> <span class="name"><a href="#Name_chars">chars</a></span>
<i class="keyword">Datatype</i> <span class="name"><a href="#Name_unicode-characters">unicode-characters</a></span> <i class="keyword">Alias</i> <span class="name"><a href="#Name_unicode-chars">unicode-chars</a></span>
<i class="keyword">Type</i> <span class="name"><a href="#Name_unicode-points">unicode-points</a></span>
<i class="keyword">Funcon</i> <span class="name"><a href="#Name_unicode-character">unicode-character</a></span> <i class="keyword">Alias</i> <span class="name"><a href="#Name_unicode-char">unicode-char</a></span>
<i class="keyword">Funcon</i> <span class="name"><a href="#Name_unicode-point">unicode-point</a></span> <i class="keyword">Alias</i> <span class="name"><a href="#Name_unicode">unicode</a></span>
<i class="keyword">Type</i> <span class="name"><a href="#Name_basic-multilingual-plane-characters">basic-multilingual-plane-characters</a></span> <i class="keyword">Alias</i> <span class="name"><a href="#Name_bmp-chars">bmp-chars</a></span>
<i class="keyword">Type</i> <span class="name"><a href="#Name_basic-multilingual-plane-points">basic-multilingual-plane-points</a></span>
<i class="keyword">Type</i> <span class="name"><a href="#Name_iso-latin-1-characters">iso-latin-1-characters</a></span> <i class="keyword">Alias</i> <span class="name"><a href="#Name_latin-1-chars">latin-1-chars</a></span>
<i class="keyword">Type</i> <span class="name"><a href="#Name_iso-latin-1-points">iso-latin-1-points</a></span>
<i class="keyword">Type</i> <span class="name"><a href="#Name_ascii-characters">ascii-characters</a></span> <i class="keyword">Alias</i> <span class="name"><a href="#Name_ascii-chars">ascii-chars</a></span>
<i class="keyword">Type</i> <span class="name"><a href="#Name_ascii-points">ascii-points</a></span>
<i class="keyword">Funcon</i> <span class="name"><a href="#Name_ascii-character">ascii-character</a></span> <i class="keyword">Alias</i> <span class="name"><a href="#Name_ascii-char">ascii-char</a></span>
<i class="keyword">Funcon</i> <span class="name"><a href="#Name_utf-8">utf-8</a></span>
<i class="keyword">Funcon</i> <span class="name"><a href="#Name_utf-16">utf-16</a></span>
<i class="keyword">Funcon</i> <span class="name"><a href="#Name_utf-32">utf-32</a></span>
<i class="keyword">Funcon</i> <span class="name"><a href="#Name_backspace">backspace</a></span>
<i class="keyword">Funcon</i> <span class="name"><a href="#Name_horizontal-tab">horizontal-tab</a></span>
<i class="keyword">Funcon</i> <span class="name"><a href="#Name_line-feed">line-feed</a></span>
<i class="keyword">Funcon</i> <span class="name"><a href="#Name_form-feed">form-feed</a></span>
<i class="keyword">Funcon</i> <span class="name"><a href="#Name_carriage-return">carriage-return</a></span>
<i class="keyword">Funcon</i> <span class="name"><a href="#Name_double-quote">double-quote</a></span>
<i class="keyword">Funcon</i> <span class="name"><a href="#Name_single-quote">single-quote</a></span>
<i class="keyword">Funcon</i> <span class="name"><a href="#Name_backslash">backslash</a></span>
]</code></pre></div>
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Built-in</i> <i class="keyword">Type</i>
<span class="name"><span id="Name_characters">characters</span></span> <: <span class="name"><a href="../../Value-Types/index.html#Name_values">values</a></span></code></pre></div>
Literal characters can be written <code><b class="atom">'C'</b></code> where <code><i class="var">C</i></code> is any visible character
other than a <code><span class="name"><a href="#Name_single-quote">single-quote</a></span></code> or <code><span class="name"><a href="#Name_backslash">backslash</a></span></code> character, which need to be
escaped as <code><b class="atom">'\''</b></code> and <code><b class="atom">'\\'</b></code>.
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Alias</i>
<span class="name"><span id="Name_chars">chars</span></span> = <span class="name"><a href="#Name_characters">characters</a></span></code></pre></div>
#### Unicode character set
The set of Unicode characters and allocated points is open to extension.
See https://en.wikipedia.org/wiki/Plane_(Unicode)
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Built-in</i> <i class="keyword">Datatype</i>
<span class="name"><span id="Name_unicode-characters">unicode-characters</span></span> <: <span class="name"><a href="#Name_characters">characters</a></span>
<i class="keyword">Alias</i>
<span class="name"><span id="Name_unicode-chars">unicode-chars</span></span> = <span class="name"><a href="#Name_unicode-characters">unicode-characters</a></span></code></pre></div>
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Built-in</i> <i class="keyword">Type</i>
<span class="name"><span id="Name_unicode-points">unicode-points</span></span> <: <span class="name"><a href="../Integers/index.html#Name_bounded-integers">bounded-integers</a></span>(0, <span class="name"><a href="../../Composite/Bits/index.html#Name_unsigned-bit-vector-maximum">unsigned-bit-vector-maximum</a></span>(21))</code></pre></div>
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Built-in</i> <i class="keyword">Funcon</i>
<span class="name"><span id="Name_unicode-character">unicode-character</span></span>(_:<span class="name"><a href="#Name_unicode-points">unicode-points</a></span>) : <span class="name"><a href="#Name_unicode-characters">unicode-characters</a></span>
<i class="keyword">Alias</i>
<span class="name"><span id="Name_unicode-char">unicode-char</span></span> = <span class="name"><a href="#Name_unicode-character">unicode-character</a></span></code></pre></div>
The values in <code><span class="name"><a href="#Name_unicode-characters">unicode-characters</a></span></code> are the values of
<code><span class="name"><a href="#Name_unicode-character">unicode-character</a></span>(<i class="var">UP</i>:<span class="name"><a href="#Name_unicode-points">unicode-points</a></span>)</code>.
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Funcon</i>
<span class="name"><span id="Name_unicode-point">unicode-point</span></span>(_:<span class="name"><a href="#Name_unicode-characters">unicode-characters</a></span>) : =><span class="name"><a href="#Name_unicode-points">unicode-points</a></span>
<i class="keyword">Alias</i>
<span class="name"><span id="Name_unicode">unicode</span></span> = <span class="name"><a href="#Name_unicode-point">unicode-point</a></span></code></pre></div>
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Rule</i>
<span class="name"><a href="#Name_unicode-point">unicode-point</a></span>(<span class="name"><a href="#Name_unicode-character">unicode-character</a></span>(<span id="Variable362_UP"><i class="var">UP</i></span>:<span class="name"><a href="#Name_unicode-points">unicode-points</a></span>)) ~> <a href="#Variable362_UP"><i class="var">UP</i></a></code></pre></div>
#### Unicode basic multilingual plane
The set of Unicode BMP characters and allocated points is open to extension.
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Built-in</i> <i class="keyword">Datatype</i>
<span class="name"><span id="Name_basic-multilingual-plane-characters">basic-multilingual-plane-characters</span></span> <: <span class="name"><a href="#Name_unicode-characters">unicode-characters</a></span>
<i class="keyword">Alias</i>
<span class="name"><span id="Name_bmp-chars">bmp-chars</span></span> = <span class="name"><a href="#Name_basic-multilingual-plane-characters">basic-multilingual-plane-characters</a></span></code></pre></div>
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Built-in</i> <i class="keyword">Type</i>
<span class="name"><span id="Name_basic-multilingual-plane-points">basic-multilingual-plane-points</span></span> <:
<span class="name"><a href="../Integers/index.html#Name_bounded-integers">bounded-integers</a></span>(0, <span class="name"><a href="../../Composite/Bits/index.html#Name_unsigned-bit-vector-maximum">unsigned-bit-vector-maximum</a></span>(17))</code></pre></div>
The values in <code><span class="name"><a href="#Name_basic-multilingual-plane-characters">basic-multilingual-plane-characters</a></span></code> are the values of
<code><span class="name"><a href="#Name_unicode-character">unicode-character</a></span>(<i class="var">BMPP</i>:<span class="name"><a href="#Name_basic-multilingual-plane-points">basic-multilingual-plane-points</a></span>)</code>.
#### ISO Latin-1 character set
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Built-in</i> <i class="keyword">Datatype</i>
<span class="name"><span id="Name_iso-latin-1-characters">iso-latin-1-characters</span></span> <: <span class="name"><a href="#Name_basic-multilingual-plane-characters">basic-multilingual-plane-characters</a></span>
<i class="keyword">Alias</i>
<span class="name"><span id="Name_latin-1-chars">latin-1-chars</span></span> = <span class="name"><a href="#Name_iso-latin-1-characters">iso-latin-1-characters</a></span></code></pre></div>
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Type</i>
<span class="name"><span id="Name_iso-latin-1-points">iso-latin-1-points</span></span> ~> <span class="name"><a href="../Integers/index.html#Name_bounded-integers">bounded-integers</a></span>(0, <span class="name"><a href="../../Composite/Bits/index.html#Name_unsigned-bit-vector-maximum">unsigned-bit-vector-maximum</a></span>(8))</code></pre></div>
The values in <code><span class="name"><a href="#Name_iso-latin-1-characters">iso-latin-1-characters</a></span></code> are the values of
<code><span class="name"><a href="#Name_unicode-character">unicode-character</a></span>(<i class="var">ILP</i>:<span class="name"><a href="#Name_iso-latin-1-points">iso-latin-1-points</a></span>)</code>.
#### ASCII character set
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Built-in</i> <i class="keyword">Type</i>
<span class="name"><span id="Name_ascii-characters">ascii-characters</span></span> <: <span class="name"><a href="#Name_iso-latin-1-characters">iso-latin-1-characters</a></span>
<i class="keyword">Alias</i>
<span class="name"><span id="Name_ascii-chars">ascii-chars</span></span> = <span class="name"><a href="#Name_ascii-characters">ascii-characters</a></span></code></pre></div>
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Type</i>
<span class="name"><span id="Name_ascii-points">ascii-points</span></span> ~> <span class="name"><a href="../Integers/index.html#Name_bounded-integers">bounded-integers</a></span>(0, <span class="name"><a href="../../Composite/Bits/index.html#Name_unsigned-bit-vector-maximum">unsigned-bit-vector-maximum</a></span>(7))</code></pre></div>
The values in <code><span class="name"><a href="#Name_ascii-characters">ascii-characters</a></span></code> are the values of
<code><span class="name"><a href="#Name_unicode-character">unicode-character</a></span>(<i class="var">AP</i>:<span class="name"><a href="#Name_ascii-points">ascii-points</a></span>)</code>.
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Funcon</i>
<span class="name"><span id="Name_ascii-character">ascii-character</span></span>(_:<span class="name"><a href="../../Composite/Strings/index.html#Name_strings">strings</a></span>) : =><span class="name"><a href="#Name_ascii-characters">ascii-characters</a></span><sup class="sup">?</sup>
<i class="keyword">Alias</i>
<span class="name"><span id="Name_ascii-char">ascii-char</span></span> = <span class="name"><a href="#Name_ascii-character">ascii-character</a></span></code></pre></div>
<code><span class="name"><a href="#Name_ascii-character">ascii-character</a></span>"C"</code> takes a string. When it consists of a single ASCII
character <code><i class="var">C</i></code> it gives the character, otherwise <code>( )</code>.
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Rule</i>
<span class="name"><a href="#Name_ascii-character">ascii-character</a></span>[<span id="Variable749_C"><i class="var">C</i></span>:<span class="name"><a href="#Name_ascii-characters">ascii-characters</a></span>] ~> <a href="#Variable749_C"><i class="var">C</i></a>
<i class="keyword">Rule</i>
<a href="#Variable787_C"><i class="var">C</i></a> : ~ <span class="name"><a href="#Name_ascii-characters">ascii-characters</a></span>
------------------------------------
<span class="name"><a href="#Name_ascii-character">ascii-character</a></span>[<span id="Variable787_C"><i class="var">C</i></span>:<span class="name"><a href="#Name_characters">characters</a></span>] ~> ( )
<i class="keyword">Rule</i>
<span class="name"><a href="../../Composite/Sequences/index.html#Name_length">length</a></span>(<a href="#Variable830_C*"><i class="var">C<sup class="sup">*</sup></i></a>) =/= 1
--------------------------------------
<span class="name"><a href="#Name_ascii-character">ascii-character</a></span>[<span id="Variable830_C*"><i class="var">C<sup class="sup">*</sup></i></span>:<span class="name"><a href="#Name_characters">characters</a></span><sup class="sup">*</sup>] ~> ( )</code></pre></div>
#### Character point encodings
See https://en.wikipedia.org/wiki/Character_encoding
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Built-in</i> <i class="keyword">Funcon</i>
<span class="name"><span id="Name_utf-8">utf-8</span></span>(_:<span class="name"><a href="#Name_unicode-points">unicode-points</a></span>) : =>(<span class="name"><a href="../../Composite/Bits/index.html#Name_bytes">bytes</a></span>, (<span class="name"><a href="../../Composite/Bits/index.html#Name_bytes">bytes</a></span>, (<span class="name"><a href="../../Composite/Bits/index.html#Name_bytes">bytes</a></span>, <span class="name"><a href="../../Composite/Bits/index.html#Name_bytes">bytes</a></span><sup class="sup">?</sup>)<sup class="sup">?</sup> )<sup class="sup">?</sup> )</code></pre></div>
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Built-in</i> <i class="keyword">Funcon</i>
<span class="name"><span id="Name_utf-16">utf-16</span></span>(_:<span class="name"><a href="#Name_unicode-points">unicode-points</a></span>) : =>(<span class="name"><a href="../../Composite/Bits/index.html#Name_bit-vectors">bit-vectors</a></span>(16), (<span class="name"><a href="../../Composite/Bits/index.html#Name_bit-vectors">bit-vectors</a></span>(16))<sup class="sup">?</sup> )</code></pre></div>
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Built-in</i> <i class="keyword">Funcon</i>
<span class="name"><span id="Name_utf-32">utf-32</span></span>(_:<span class="name"><a href="#Name_unicode-points">unicode-points</a></span>) : =><span class="name"><a href="../../Composite/Bits/index.html#Name_bit-vectors">bit-vectors</a></span>(32)</code></pre></div>
#### Control characters
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Funcon</i>
<span class="name"><span id="Name_backspace">backspace</span></span> : =><span class="name"><a href="#Name_ascii-characters">ascii-characters</a></span>
~> <span class="name"><a href="#Name_unicode-character">unicode-character</a></span>(<span class="name"><a href="../Integers/index.html#Name_hexadecimal-natural">hexadecimal-natural</a></span>"0008")</code></pre></div>
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Funcon</i>
<span class="name"><span id="Name_horizontal-tab">horizontal-tab</span></span> : =><span class="name"><a href="#Name_ascii-characters">ascii-characters</a></span>
~> <span class="name"><a href="#Name_unicode-character">unicode-character</a></span>(<span class="name"><a href="../Integers/index.html#Name_hexadecimal-natural">hexadecimal-natural</a></span>"0009")</code></pre></div>
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Funcon</i>
<span class="name"><span id="Name_line-feed">line-feed</span></span> : =><span class="name"><a href="#Name_ascii-characters">ascii-characters</a></span>
~> <span class="name"><a href="#Name_unicode-character">unicode-character</a></span>(<span class="name"><a href="../Integers/index.html#Name_hexadecimal-natural">hexadecimal-natural</a></span>"000a")</code></pre></div>
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Funcon</i>
<span class="name"><span id="Name_form-feed">form-feed</span></span> : =><span class="name"><a href="#Name_ascii-characters">ascii-characters</a></span>
~> <span class="name"><a href="#Name_unicode-character">unicode-character</a></span>(<span class="name"><a href="../Integers/index.html#Name_hexadecimal-natural">hexadecimal-natural</a></span>"000c")</code></pre></div>
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Funcon</i>
<span class="name"><span id="Name_carriage-return">carriage-return</span></span> : =><span class="name"><a href="#Name_ascii-characters">ascii-characters</a></span>
~> <span class="name"><a href="#Name_unicode-character">unicode-character</a></span>(<span class="name"><a href="../Integers/index.html#Name_hexadecimal-natural">hexadecimal-natural</a></span>"000d")</code></pre></div>
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Funcon</i>
<span class="name"><span id="Name_double-quote">double-quote</span></span> : =><span class="name"><a href="#Name_ascii-characters">ascii-characters</a></span>
~> <span class="name"><a href="#Name_unicode-character">unicode-character</a></span>(<span class="name"><a href="../Integers/index.html#Name_hexadecimal-natural">hexadecimal-natural</a></span>"0022")</code></pre></div>
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Funcon</i>
<span class="name"><span id="Name_single-quote">single-quote</span></span> : =><span class="name"><a href="#Name_ascii-characters">ascii-characters</a></span>
~> <span class="name"><a href="#Name_unicode-character">unicode-character</a></span>(<span class="name"><a href="../Integers/index.html#Name_hexadecimal-natural">hexadecimal-natural</a></span>"0027")</code></pre></div>
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Funcon</i>
<span class="name"><span id="Name_backslash">backslash</span></span> : =><span class="name"><a href="#Name_ascii-characters">ascii-characters</a></span>
~> <span class="name"><a href="#Name_unicode-character">unicode-character</a></span>(<span class="name"><a href="../Integers/index.html#Name_hexadecimal-natural">hexadecimal-natural</a></span>"005c")</code></pre></div>
____
From the [PLanCompS Project] | [CBS-beta issues...] | [Suggest an improvement...]
[Characters.cbs]: Characters.cbs
"CBS SOURCE FILE"
[Funcons-beta]: /CBS-beta/docs/Funcons-beta
"FUNCONS-BETA"
[Unstable-Funcons-beta]: /CBS-beta/docs/Unstable-Funcons-beta
"UNSTABLE-FUNCONS-BETA"
[Languages-beta]: /CBS-beta/docs/Languages-beta
"LANGUAGES-BETA"
[Unstable-Languages-beta]: /CBS-beta/docs/Unstable-Languages-beta
"UNSTABLE-LANGUAGES-BETA"
[CBS-beta]: /CBS-beta "CBS-BETA"
[PLanCompS Project]: https://plancomps.github.io
"PROGRAMMING LANGUAGE COMPONENTS AND SPECIFICATIONS PROJECT HOME PAGE"
[CBS-beta issues...]: https://github.com/plancomps/CBS-beta/issues
"CBS-BETA ISSUE REPORTS ON GITHUB"
[Suggest an improvement...]: mailto:plancomps@gmail.com?Subject=CBS-beta%20-%20comment&Body=Re%3A%20CBS-beta%20specification%20at%20Values/Primitive/Characters/Characters.cbs%0A%0AComment/Query/Issue/Suggestion%3A%0A%0A%0ASignature%3A%0A
"GENERATE AN EMAIL TEMPLATE"

View File

@@ -0,0 +1,230 @@
### Floats
[
Datatype float-formats
Funcon binary32
Funcon binary64
Funcon binary128
Funcon decimal64
Funcon decimal128
Type floats
Funcon float
Funcon quiet-not-a-number Alias qNaN
Funcon signaling-not-a-number Alias sNaN
Funcon positive-infinity Alias pos-inf
Funcon negative-infinity Alias neg-inf
Funcon float-convert
Funcon decimal-float
Funcon float-equal
Funcon float-is-less
Funcon float-is-less-or-equal
Funcon float-is-greater
Funcon float-is-greater-or-equal
Funcon float-negate
Funcon float-absolute-value
Funcon float-add
Funcon float-subtract
Funcon float-multiply
Funcon float-multiply-add
Funcon float-divide
Funcon float-remainder
Funcon float-sqrt
Funcon float-integer-power
Funcon float-float-power
Funcon float-round-ties-to-even
Funcon float-round-ties-to-infinity
Funcon float-floor
Funcon float-ceiling
Funcon float-truncate
Funcon float-pi
Funcon float-e
Funcon float-log
Funcon float-log10
Funcon float-exp
Funcon float-sin
Funcon float-cos
Funcon float-tan
Funcon float-asin
Funcon float-acos
Funcon float-atan
Funcon float-sinh
Funcon float-cosh
Funcon float-tanh
Funcon float-asinh
Funcon float-acosh
Funcon float-atanh
Funcon float-atan2
]
/*
Floating-point numbers according to the IEEE 754 Standard (2008).
See:
- http://doi.org/10.1109/IEEESTD.2008.4610935
- https://en.wikipedia.org/wiki/IEEE_754
*/
Datatype
float-formats ::= binary32 | binary64 | binary128 | decimal64 | decimal128
Built-in Type
floats(_:float-formats)
/*
Note that for distinct formats `FF1`, `FF2`, the types `floats(FF1)` and
`floats(FF2)` are not necessarily disjoint.
*/
Built-in Funcon
float(FF:float-formats,
_:bounded-integers(0, 1), _:natural-numbers, _:integers) : =>floats(FF)
/*
Each finite number is described by three integers:
* s = a sign (zero or one),
* c = a significand (or 'coefficient'),
* q = an exponent.
The numerical value of a finite number is (-1)^s * c * b^q
where b is the base (2 or 10), also called radix.
The possible finite values that can be represented in a format
are determined by the base b, the number of digits in the significand
(precision p), and the exponent parameter emax:
* c must be an integer in the range zero through (b^p)-1
(e.g., if b=10 and p=7 then c is 0 through 9999999);
* q must be an integer such that 1-emax <= q+p-1 <= emax
(e.g., if p=7 and emax=96 then q is -101 through 90).
Note that `float(FF, S, C, Q)` is not a 1-1 operation.
*/
Built-in Funcon
quiet-not-a-number(FF:float-formats) : floats(FF)
Alias
qNaN = quiet-not-a-number
Built-in Funcon
signaling-not-a-number(FF:float-formats) : floats(FF)
Alias
sNaN = signaling-not-a-number
Built-in Funcon
positive-infinity(FF:float-formats) : floats(FF)
Alias
pos-inf = positive-infinity
Built-in Funcon
negative-infinity(FF:float-formats) : floats(FF)
Alias
neg-inf = negative-infinity
#### Conversions
Built-in Funcon
float-convert(FF1:float-formats,
FF2:float-formats, F:floats(FF1)) : =>floats(FF2)
Built-in Funcon
decimal-float(FF:float-formats,
_:strings, _:strings, _:strings) : =>floats(FF)
/*
`decimal-float(F, "M", "N", "E")` is an approximation in `floats(FF)` to the
value of 'M.N' times 10 to the power 'E', where "M.N" is decimal notation
(optionally-signed) for a fixed-point number and "E" is decimal notation
(optionally signed) for an integer. When any argument string is invalid,
the result is `quiet-not-a-number(F)`.
*/
#### Comparison
Built-in Funcon
float-equal(FF:float-formats,
_:floats(FF), _:floats(FF)) : =>booleans
Built-in Funcon
float-is-less(FF:float-formats,
_:floats(FF), _:floats(FF)) : =>booleans
Built-in Funcon
float-is-less-or-equal(FF:float-formats,
_:floats(FF), _:floats(FF)) : =>booleans
Built-in Funcon
float-is-greater(FF:float-formats,
_:floats(FF), _:floats(FF)) : =>booleans
Built-in Funcon
float-is-greater-or-equal(FF:float-formats,
_:floats(FF), _:floats(FF)) : =>booleans
#### Arithmetic
Built-in Funcon
float-negate(FF:float-formats, _:floats(FF)) : =>floats(FF)
Built-in Funcon
float-absolute-value(FF:float-formats, _:floats(FF)) : =>floats(FF)
Built-in Funcon
float-add(FF:float-formats, _:floats(FF), _:floats(FF)) : =>floats(FF)
Built-in Funcon
float-subtract(FF:float-formats, _:floats(FF), _:floats(FF)) : =>floats(FF)
Built-in Funcon
float-multiply(FF:float-formats, _:floats(FF), _:floats(FF)) : =>floats(FF)
Built-in Funcon
float-multiply-add(FF:float-formats,
_:floats(FF), _:floats(FF), _:floats(FF)) : =>floats(FF)
Built-in Funcon
float-divide(FF:float-formats, _:floats(FF), _:floats(FF)) : =>floats(FF)
Built-in Funcon
float-remainder(FF:float-formats, _:floats(FF), _:floats(FF)) : =>floats(FF)
Built-in Funcon
float-sqrt(FF:float-formats, _:floats(FF)) : =>floats(FF)
Built-in Funcon
float-integer-power(FF:float-formats, _:floats(FF), _:integers) : =>floats(FF)
Built-in Funcon
float-float-power(FF:float-formats, _:floats(FF), _:floats(FF)) : =>floats(FF)
#### Rounding
Built-in Funcon
float-round-ties-to-even(FF:float-formats, _:floats(FF)) : =>integers
Built-in Funcon
float-round-ties-to-infinity(FF:float-formats, _:floats(FF)) : =>integers
Built-in Funcon
float-floor(FF:float-formats, _:floats(FF)) : =>integers
Built-in Funcon
float-ceiling(FF:float-formats, _:floats(FF)) : =>integers
Built-in Funcon
float-truncate(FF:float-formats, _:floats(FF)) : =>integers
#### Miscellaneous
Built-in Funcon
float-pi(FF:float-formats) : =>floats(FF)
Built-in Funcon
float-e(FF:float-formats) : =>floats(FF)
Built-in Funcon
float-log(FF:float-formats, _:floats(FF)) : =>floats(FF)
Built-in Funcon
float-log10(FF:float-formats, _:floats(FF)) : =>floats(FF)
Built-in Funcon
float-exp(FF:float-formats, _:floats(FF)) : =>floats(FF)
Built-in Funcon
float-sin(FF:float-formats, _:floats(FF)) : =>floats(FF)
Built-in Funcon
float-cos(FF:float-formats, _:floats(FF)) : =>floats(FF)
Built-in Funcon
float-tan(FF:float-formats, _:floats(FF)) : =>floats(FF)
Built-in Funcon
float-asin(FF:float-formats, _:floats(FF)) : =>floats(FF)
Built-in Funcon
float-acos(FF:float-formats, _:floats(FF)) : =>floats(FF)
Built-in Funcon
float-atan(FF:float-formats, _:floats(FF)) : =>floats(FF)
Built-in Funcon
float-sinh(FF:float-formats, _:floats(FF)) : =>floats(FF)
Built-in Funcon
float-cosh(FF:float-formats, _:floats(FF)) : =>floats(FF)
Built-in Funcon
float-tanh(FF:float-formats, _:floats(FF)) : =>floats(FF)
Built-in Funcon
float-asinh(FF:float-formats, _:floats(FF)) : =>floats(FF)
Built-in Funcon
float-acosh(FF:float-formats, _:floats(FF)) : =>floats(FF)
Built-in Funcon
float-atanh(FF:float-formats, _:floats(FF)) : =>floats(FF)
Built-in Funcon
float-atan2(FF:float-formats, _:floats(FF), _:floats(FF)) : =>floats(FF)

View File

@@ -0,0 +1,262 @@
---
layout: default
title: "Floats"
parent: Primitive
ancestor: Funcons-beta
---
[Funcons-beta] : [Floats.cbs]
-----------------------------
### Floats
<div class="highlighter-rouge"><pre class="highlight"><code>[
<i class="keyword">Datatype</i> <span class="name"><a href="#Name_float-formats">float-formats</a></span>
<i class="keyword">Funcon</i> <span class="name"><a href="#Name_binary32">binary32</a></span>
<i class="keyword">Funcon</i> <span class="name"><a href="#Name_binary64">binary64</a></span>
<i class="keyword">Funcon</i> <span class="name"><a href="#Name_binary128">binary128</a></span>
<i class="keyword">Funcon</i> <span class="name"><a href="#Name_decimal64">decimal64</a></span>
<i class="keyword">Funcon</i> <span class="name"><a href="#Name_decimal128">decimal128</a></span>
<i class="keyword">Type</i> <span class="name"><a href="#Name_floats">floats</a></span>
<i class="keyword">Funcon</i> <span class="name"><a href="#Name_float">float</a></span>
<i class="keyword">Funcon</i> <span class="name"><a href="#Name_quiet-not-a-number">quiet-not-a-number</a></span> <i class="keyword">Alias</i> <span class="name"><a href="#Name_qNaN">qNaN</a></span>
<i class="keyword">Funcon</i> <span class="name"><a href="#Name_signaling-not-a-number">signaling-not-a-number</a></span> <i class="keyword">Alias</i> <span class="name"><a href="#Name_sNaN">sNaN</a></span>
<i class="keyword">Funcon</i> <span class="name"><a href="#Name_positive-infinity">positive-infinity</a></span> <i class="keyword">Alias</i> <span class="name"><a href="#Name_pos-inf">pos-inf</a></span>
<i class="keyword">Funcon</i> <span class="name"><a href="#Name_negative-infinity">negative-infinity</a></span> <i class="keyword">Alias</i> <span class="name"><a href="#Name_neg-inf">neg-inf</a></span>
<i class="keyword">Funcon</i> <span class="name"><a href="#Name_float-convert">float-convert</a></span>
<i class="keyword">Funcon</i> <span class="name"><a href="#Name_decimal-float">decimal-float</a></span>
<i class="keyword">Funcon</i> <span class="name"><a href="#Name_float-equal">float-equal</a></span>
<i class="keyword">Funcon</i> <span class="name"><a href="#Name_float-is-less">float-is-less</a></span>
<i class="keyword">Funcon</i> <span class="name"><a href="#Name_float-is-less-or-equal">float-is-less-or-equal</a></span>
<i class="keyword">Funcon</i> <span class="name"><a href="#Name_float-is-greater">float-is-greater</a></span>
<i class="keyword">Funcon</i> <span class="name"><a href="#Name_float-is-greater-or-equal">float-is-greater-or-equal</a></span>
<i class="keyword">Funcon</i> <span class="name"><a href="#Name_float-negate">float-negate</a></span>
<i class="keyword">Funcon</i> <span class="name"><a href="#Name_float-absolute-value">float-absolute-value</a></span>
<i class="keyword">Funcon</i> <span class="name"><a href="#Name_float-add">float-add</a></span>
<i class="keyword">Funcon</i> <span class="name"><a href="#Name_float-subtract">float-subtract</a></span>
<i class="keyword">Funcon</i> <span class="name"><a href="#Name_float-multiply">float-multiply</a></span>
<i class="keyword">Funcon</i> <span class="name"><a href="#Name_float-multiply-add">float-multiply-add</a></span>
<i class="keyword">Funcon</i> <span class="name"><a href="#Name_float-divide">float-divide</a></span>
<i class="keyword">Funcon</i> <span class="name"><a href="#Name_float-remainder">float-remainder</a></span>
<i class="keyword">Funcon</i> <span class="name"><a href="#Name_float-sqrt">float-sqrt</a></span>
<i class="keyword">Funcon</i> <span class="name"><a href="#Name_float-integer-power">float-integer-power</a></span>
<i class="keyword">Funcon</i> <span class="name"><a href="#Name_float-float-power">float-float-power</a></span>
<i class="keyword">Funcon</i> <span class="name"><a href="#Name_float-round-ties-to-even">float-round-ties-to-even</a></span>
<i class="keyword">Funcon</i> <span class="name"><a href="#Name_float-round-ties-to-infinity">float-round-ties-to-infinity</a></span>
<i class="keyword">Funcon</i> <span class="name"><a href="#Name_float-floor">float-floor</a></span>
<i class="keyword">Funcon</i> <span class="name"><a href="#Name_float-ceiling">float-ceiling</a></span>
<i class="keyword">Funcon</i> <span class="name"><a href="#Name_float-truncate">float-truncate</a></span>
<i class="keyword">Funcon</i> <span class="name"><a href="#Name_float-pi">float-pi</a></span>
<i class="keyword">Funcon</i> <span class="name"><a href="#Name_float-e">float-e</a></span>
<i class="keyword">Funcon</i> <span class="name"><a href="#Name_float-log">float-log</a></span>
<i class="keyword">Funcon</i> <span class="name"><a href="#Name_float-log10">float-log10</a></span>
<i class="keyword">Funcon</i> <span class="name"><a href="#Name_float-exp">float-exp</a></span>
<i class="keyword">Funcon</i> <span class="name"><a href="#Name_float-sin">float-sin</a></span>
<i class="keyword">Funcon</i> <span class="name"><a href="#Name_float-cos">float-cos</a></span>
<i class="keyword">Funcon</i> <span class="name"><a href="#Name_float-tan">float-tan</a></span>
<i class="keyword">Funcon</i> <span class="name"><a href="#Name_float-asin">float-asin</a></span>
<i class="keyword">Funcon</i> <span class="name"><a href="#Name_float-acos">float-acos</a></span>
<i class="keyword">Funcon</i> <span class="name"><a href="#Name_float-atan">float-atan</a></span>
<i class="keyword">Funcon</i> <span class="name"><a href="#Name_float-sinh">float-sinh</a></span>
<i class="keyword">Funcon</i> <span class="name"><a href="#Name_float-cosh">float-cosh</a></span>
<i class="keyword">Funcon</i> <span class="name"><a href="#Name_float-tanh">float-tanh</a></span>
<i class="keyword">Funcon</i> <span class="name"><a href="#Name_float-asinh">float-asinh</a></span>
<i class="keyword">Funcon</i> <span class="name"><a href="#Name_float-acosh">float-acosh</a></span>
<i class="keyword">Funcon</i> <span class="name"><a href="#Name_float-atanh">float-atanh</a></span>
<i class="keyword">Funcon</i> <span class="name"><a href="#Name_float-atan2">float-atan2</a></span>
]</code></pre></div>
Floating-point numbers according to the IEEE 754 Standard (2008).
See:
- http://doi.org/10.1109/IEEESTD.2008.4610935
- https://en.wikipedia.org/wiki/IEEE_754
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Datatype</i>
<span class="name"><span id="Name_float-formats">float-formats</span></span> ::= <span id="Name_binary32">binary32</span> | <span id="Name_binary64">binary64</span> | <span id="Name_binary128">binary128</span> | <span id="Name_decimal64">decimal64</span> | <span id="Name_decimal128">decimal128</span></code></pre></div>
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Built-in</i> <i class="keyword">Type</i>
<span class="name"><span id="Name_floats">floats</span></span>(_:<span class="name"><a href="#Name_float-formats">float-formats</a></span>)</code></pre></div>
Note that for distinct formats <code><i class="var">FF<sub class="sub">1</sub></i></code>, <code><i class="var">FF<sub class="sub">2</sub></i></code>, the types <code><span class="name"><a href="#Name_floats">floats</a></span>(<i class="var">FF<sub class="sub">1</sub></i>)</code> and
<code><span class="name"><a href="#Name_floats">floats</a></span>(<i class="var">FF<sub class="sub">2</sub></i>)</code> are not necessarily disjoint.
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Built-in</i> <i class="keyword">Funcon</i>
<span class="name"><span id="Name_float">float</span></span>(<span id="Variable372_FF"><i class="var">FF</i></span>:<span class="name"><a href="#Name_float-formats">float-formats</a></span>,
_:<span class="name"><a href="../Integers/index.html#Name_bounded-integers">bounded-integers</a></span>(0, 1), _:<span class="name"><a href="../Integers/index.html#Name_natural-numbers">natural-numbers</a></span>, _:<span class="name"><a href="../Integers/index.html#Name_integers">integers</a></span>) : =><span class="name"><a href="#Name_floats">floats</a></span>(<span id="Variable425_FF"><i class="var">FF</i></span>)</code></pre></div>
Each finite number is described by three integers:
* s = a sign (zero or one),
* c = a significand (or 'coefficient'),
* q = an exponent.
The numerical value of a finite number is (-1)^s * c * b^q
where b is the base (2 or 10), also called radix.
The possible finite values that can be represented in a format
are determined by the base b, the number of digits in the significand
(precision p), and the exponent parameter emax:
* c must be an integer in the range zero through (b^p)-1
(e.g., if b=10 and p=7 then c is 0 through 9999999);
* q must be an integer such that 1-emax <= q+p-1 <= emax
(e.g., if p=7 and emax=96 then q is -101 through 90).
Note that <code><span class="name"><a href="#Name_float">float</a></span>(<i class="var">FF</i>, <i class="var">S</i>, <i class="var">C</i>, <i class="var">Q</i>)</code> is not a 1-1 operation.
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Built-in</i> <i class="keyword">Funcon</i>
<span class="name"><span id="Name_quiet-not-a-number">quiet-not-a-number</span></span>(<span id="Variable527_FF"><i class="var">FF</i></span>:<span class="name"><a href="#Name_float-formats">float-formats</a></span>) : <span class="name"><a href="#Name_floats">floats</a></span>(<span id="Variable542_FF"><i class="var">FF</i></span>)
<i class="keyword">Alias</i>
<span class="name"><span id="Name_qNaN">qNaN</span></span> = <span class="name"><a href="#Name_quiet-not-a-number">quiet-not-a-number</a></span></code></pre></div>
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Built-in</i> <i class="keyword">Funcon</i>
<span class="name"><span id="Name_signaling-not-a-number">signaling-not-a-number</span></span>(<span id="Variable560_FF"><i class="var">FF</i></span>:<span class="name"><a href="#Name_float-formats">float-formats</a></span>) : <span class="name"><a href="#Name_floats">floats</a></span>(<span id="Variable575_FF"><i class="var">FF</i></span>)
<i class="keyword">Alias</i>
<span class="name"><span id="Name_sNaN">sNaN</span></span> = <span class="name"><a href="#Name_signaling-not-a-number">signaling-not-a-number</a></span></code></pre></div>
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Built-in</i> <i class="keyword">Funcon</i>
<span class="name"><span id="Name_positive-infinity">positive-infinity</span></span>(<span id="Variable593_FF"><i class="var">FF</i></span>:<span class="name"><a href="#Name_float-formats">float-formats</a></span>) : <span class="name"><a href="#Name_floats">floats</a></span>(<span id="Variable608_FF"><i class="var">FF</i></span>)
<i class="keyword">Alias</i>
<span class="name"><span id="Name_pos-inf">pos-inf</span></span> = <span class="name"><a href="#Name_positive-infinity">positive-infinity</a></span></code></pre></div>
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Built-in</i> <i class="keyword">Funcon</i>
<span class="name"><span id="Name_negative-infinity">negative-infinity</span></span>(<span id="Variable626_FF"><i class="var">FF</i></span>:<span class="name"><a href="#Name_float-formats">float-formats</a></span>) : <span class="name"><a href="#Name_floats">floats</a></span>(<span id="Variable641_FF"><i class="var">FF</i></span>)
<i class="keyword">Alias</i>
<span class="name"><span id="Name_neg-inf">neg-inf</span></span> = <span class="name"><a href="#Name_negative-infinity">negative-infinity</a></span></code></pre></div>
#### Conversions
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Built-in</i> <i class="keyword">Funcon</i>
<span class="name"><span id="Name_float-convert">float-convert</span></span>(<span id="Variable679_FF1"><i class="var">FF<sub class="sub">1</sub></i></span>:<span class="name"><a href="#Name_float-formats">float-formats</a></span>,
<span id="Variable689_FF2"><i class="var">FF<sub class="sub">2</sub></i></span>:<span class="name"><a href="#Name_float-formats">float-formats</a></span>, <span id="Variable698_F"><i class="var">F</i></span>:<span class="name"><a href="#Name_floats">floats</a></span>(<span id="Variable704_FF1"><i class="var">FF<sub class="sub">1</sub></i></span>)) : =><span class="name"><a href="#Name_floats">floats</a></span>(<span id="Variable728_FF2"><i class="var">FF<sub class="sub">2</sub></i></span>)</code></pre></div>
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Built-in</i> <i class="keyword">Funcon</i>
<span class="name"><span id="Name_decimal-float">decimal-float</span></span>(<span id="Variable744_FF"><i class="var">FF</i></span>:<span class="name"><a href="#Name_float-formats">float-formats</a></span>,
_:<span class="name"><a href="../../Composite/Strings/index.html#Name_strings">strings</a></span>, _:<span class="name"><a href="../../Composite/Strings/index.html#Name_strings">strings</a></span>, _:<span class="name"><a href="../../Composite/Strings/index.html#Name_strings">strings</a></span>) : =><span class="name"><a href="#Name_floats">floats</a></span>(<span id="Variable787_FF"><i class="var">FF</i></span>)</code></pre></div>
<code><span class="name"><a href="#Name_decimal-float">decimal-float</a></span>(<i class="var">F</i>, "M", "N", "E")</code> is an approximation in <code><span class="name"><a href="#Name_floats">floats</a></span>(<i class="var">FF</i>)</code> to the
value of 'M.N' times 10 to the power 'E', where "M.N" is decimal notation
(optionally-signed) for a fixed-point number and "E" is decimal notation
(optionally signed) for an integer. When any argument string is invalid,
the result is <code><span class="name"><a href="#Name_quiet-not-a-number">quiet-not-a-number</a></span>(<i class="var">F</i>)</code>.
#### Comparison
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Built-in</i> <i class="keyword">Funcon</i>
<span class="name"><span id="Name_float-equal">float-equal</span></span>(<span id="Variable889_FF"><i class="var">FF</i></span>:<span class="name"><a href="#Name_float-formats">float-formats</a></span>,
_:<span class="name"><a href="#Name_floats">floats</a></span>(<span id="Variable902_FF"><i class="var">FF</i></span>), _:<span class="name"><a href="#Name_floats">floats</a></span>(<span id="Variable920_FF"><i class="var">FF</i></span>)) : =><span class="name"><a href="../Booleans/index.html#Name_booleans">booleans</a></span></code></pre></div>
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Built-in</i> <i class="keyword">Funcon</i>
<span class="name"><span id="Name_float-is-less">float-is-less</span></span>(<span id="Variable949_FF"><i class="var">FF</i></span>:<span class="name"><a href="#Name_float-formats">float-formats</a></span>,
_:<span class="name"><a href="#Name_floats">floats</a></span>(<span id="Variable962_FF"><i class="var">FF</i></span>), _:<span class="name"><a href="#Name_floats">floats</a></span>(<span id="Variable980_FF"><i class="var">FF</i></span>)) : =><span class="name"><a href="../Booleans/index.html#Name_booleans">booleans</a></span></code></pre></div>
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Built-in</i> <i class="keyword">Funcon</i>
<span class="name"><span id="Name_float-is-less-or-equal">float-is-less-or-equal</span></span>(<span id="Variable1009_FF"><i class="var">FF</i></span>:<span class="name"><a href="#Name_float-formats">float-formats</a></span>,
_:<span class="name"><a href="#Name_floats">floats</a></span>(<span id="Variable1022_FF"><i class="var">FF</i></span>), _:<span class="name"><a href="#Name_floats">floats</a></span>(<span id="Variable1040_FF"><i class="var">FF</i></span>)) : =><span class="name"><a href="../Booleans/index.html#Name_booleans">booleans</a></span></code></pre></div>
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Built-in</i> <i class="keyword">Funcon</i>
<span class="name"><span id="Name_float-is-greater">float-is-greater</span></span>(<span id="Variable1069_FF"><i class="var">FF</i></span>:<span class="name"><a href="#Name_float-formats">float-formats</a></span>,
_:<span class="name"><a href="#Name_floats">floats</a></span>(<span id="Variable1082_FF"><i class="var">FF</i></span>), _:<span class="name"><a href="#Name_floats">floats</a></span>(<span id="Variable1100_FF"><i class="var">FF</i></span>)) : =><span class="name"><a href="../Booleans/index.html#Name_booleans">booleans</a></span></code></pre></div>
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Built-in</i> <i class="keyword">Funcon</i>
<span class="name"><span id="Name_float-is-greater-or-equal">float-is-greater-or-equal</span></span>(<span id="Variable1129_FF"><i class="var">FF</i></span>:<span class="name"><a href="#Name_float-formats">float-formats</a></span>,
_:<span class="name"><a href="#Name_floats">floats</a></span>(<span id="Variable1142_FF"><i class="var">FF</i></span>), _:<span class="name"><a href="#Name_floats">floats</a></span>(<span id="Variable1160_FF"><i class="var">FF</i></span>)) : =><span class="name"><a href="../Booleans/index.html#Name_booleans">booleans</a></span></code></pre></div>
#### Arithmetic
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Built-in</i> <i class="keyword">Funcon</i>
<span class="name"><span id="Name_float-negate">float-negate</span></span>(<span id="Variable1202_FF"><i class="var">FF</i></span>:<span class="name"><a href="#Name_float-formats">float-formats</a></span>, _:<span class="name"><a href="#Name_floats">floats</a></span>(<span id="Variable1215_FF"><i class="var">FF</i></span>)) : =><span class="name"><a href="#Name_floats">floats</a></span>(<span id="Variable1237_FF"><i class="var">FF</i></span>)</code></pre></div>
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Built-in</i> <i class="keyword">Funcon</i>
<span class="name"><span id="Name_float-absolute-value">float-absolute-value</span></span>(<span id="Variable1253_FF"><i class="var">FF</i></span>:<span class="name"><a href="#Name_float-formats">float-formats</a></span>, _:<span class="name"><a href="#Name_floats">floats</a></span>(<span id="Variable1266_FF"><i class="var">FF</i></span>)) : =><span class="name"><a href="#Name_floats">floats</a></span>(<span id="Variable1288_FF"><i class="var">FF</i></span>)</code></pre></div>
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Built-in</i> <i class="keyword">Funcon</i>
<span class="name"><span id="Name_float-add">float-add</span></span>(<span id="Variable1304_FF"><i class="var">FF</i></span>:<span class="name"><a href="#Name_float-formats">float-formats</a></span>, _:<span class="name"><a href="#Name_floats">floats</a></span>(<span id="Variable1317_FF"><i class="var">FF</i></span>), _:<span class="name"><a href="#Name_floats">floats</a></span>(<span id="Variable1335_FF"><i class="var">FF</i></span>)) : =><span class="name"><a href="#Name_floats">floats</a></span>(<span id="Variable1358_FF"><i class="var">FF</i></span>)</code></pre></div>
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Built-in</i> <i class="keyword">Funcon</i>
<span class="name"><span id="Name_float-subtract">float-subtract</span></span>(<span id="Variable1374_FF"><i class="var">FF</i></span>:<span class="name"><a href="#Name_float-formats">float-formats</a></span>, _:<span class="name"><a href="#Name_floats">floats</a></span>(<span id="Variable1387_FF"><i class="var">FF</i></span>), _:<span class="name"><a href="#Name_floats">floats</a></span>(<span id="Variable1405_FF"><i class="var">FF</i></span>)) : =><span class="name"><a href="#Name_floats">floats</a></span>(<span id="Variable1428_FF"><i class="var">FF</i></span>)</code></pre></div>
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Built-in</i> <i class="keyword">Funcon</i>
<span class="name"><span id="Name_float-multiply">float-multiply</span></span>(<span id="Variable1444_FF"><i class="var">FF</i></span>:<span class="name"><a href="#Name_float-formats">float-formats</a></span>, _:<span class="name"><a href="#Name_floats">floats</a></span>(<span id="Variable1457_FF"><i class="var">FF</i></span>), _:<span class="name"><a href="#Name_floats">floats</a></span>(<span id="Variable1475_FF"><i class="var">FF</i></span>)) : =><span class="name"><a href="#Name_floats">floats</a></span>(<span id="Variable1498_FF"><i class="var">FF</i></span>)</code></pre></div>
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Built-in</i> <i class="keyword">Funcon</i>
<span class="name"><span id="Name_float-multiply-add">float-multiply-add</span></span>(<span id="Variable1514_FF"><i class="var">FF</i></span>:<span class="name"><a href="#Name_float-formats">float-formats</a></span>,
_:<span class="name"><a href="#Name_floats">floats</a></span>(<span id="Variable1527_FF"><i class="var">FF</i></span>), _:<span class="name"><a href="#Name_floats">floats</a></span>(<span id="Variable1545_FF"><i class="var">FF</i></span>), _:<span class="name"><a href="#Name_floats">floats</a></span>(<span id="Variable1563_FF"><i class="var">FF</i></span>)) : =><span class="name"><a href="#Name_floats">floats</a></span>(<span id="Variable1587_FF"><i class="var">FF</i></span>)</code></pre></div>
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Built-in</i> <i class="keyword">Funcon</i>
<span class="name"><span id="Name_float-divide">float-divide</span></span>(<span id="Variable1603_FF"><i class="var">FF</i></span>:<span class="name"><a href="#Name_float-formats">float-formats</a></span>, _:<span class="name"><a href="#Name_floats">floats</a></span>(<span id="Variable1616_FF"><i class="var">FF</i></span>), _:<span class="name"><a href="#Name_floats">floats</a></span>(<span id="Variable1634_FF"><i class="var">FF</i></span>)) : =><span class="name"><a href="#Name_floats">floats</a></span>(<span id="Variable1657_FF"><i class="var">FF</i></span>)</code></pre></div>
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Built-in</i> <i class="keyword">Funcon</i>
<span class="name"><span id="Name_float-remainder">float-remainder</span></span>(<span id="Variable1673_FF"><i class="var">FF</i></span>:<span class="name"><a href="#Name_float-formats">float-formats</a></span>, _:<span class="name"><a href="#Name_floats">floats</a></span>(<span id="Variable1686_FF"><i class="var">FF</i></span>), _:<span class="name"><a href="#Name_floats">floats</a></span>(<span id="Variable1704_FF"><i class="var">FF</i></span>)) : =><span class="name"><a href="#Name_floats">floats</a></span>(<span id="Variable1727_FF"><i class="var">FF</i></span>)</code></pre></div>
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Built-in</i> <i class="keyword">Funcon</i>
<span class="name"><span id="Name_float-sqrt">float-sqrt</span></span>(<span id="Variable1743_FF"><i class="var">FF</i></span>:<span class="name"><a href="#Name_float-formats">float-formats</a></span>, _:<span class="name"><a href="#Name_floats">floats</a></span>(<span id="Variable1756_FF"><i class="var">FF</i></span>)) : =><span class="name"><a href="#Name_floats">floats</a></span>(<span id="Variable1778_FF"><i class="var">FF</i></span>)</code></pre></div>
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Built-in</i> <i class="keyword">Funcon</i>
<span class="name"><span id="Name_float-integer-power">float-integer-power</span></span>(<span id="Variable1794_FF"><i class="var">FF</i></span>:<span class="name"><a href="#Name_float-formats">float-formats</a></span>, _:<span class="name"><a href="#Name_floats">floats</a></span>(<span id="Variable1807_FF"><i class="var">FF</i></span>), _:<span class="name"><a href="../Integers/index.html#Name_integers">integers</a></span>) : =><span class="name"><a href="#Name_floats">floats</a></span>(<span id="Variable1838_FF"><i class="var">FF</i></span>)</code></pre></div>
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Built-in</i> <i class="keyword">Funcon</i>
<span class="name"><span id="Name_float-float-power">float-float-power</span></span>(<span id="Variable1854_FF"><i class="var">FF</i></span>:<span class="name"><a href="#Name_float-formats">float-formats</a></span>, _:<span class="name"><a href="#Name_floats">floats</a></span>(<span id="Variable1867_FF"><i class="var">FF</i></span>), _:<span class="name"><a href="#Name_floats">floats</a></span>(<span id="Variable1885_FF"><i class="var">FF</i></span>)) : =><span class="name"><a href="#Name_floats">floats</a></span>(<span id="Variable1908_FF"><i class="var">FF</i></span>)</code></pre></div>
#### Rounding
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Built-in</i> <i class="keyword">Funcon</i>
<span class="name"><span id="Name_float-round-ties-to-even">float-round-ties-to-even</span></span>(<span id="Variable1943_FF"><i class="var">FF</i></span>:<span class="name"><a href="#Name_float-formats">float-formats</a></span>, _:<span class="name"><a href="#Name_floats">floats</a></span>(<span id="Variable1956_FF"><i class="var">FF</i></span>)) : =><span class="name"><a href="../Integers/index.html#Name_integers">integers</a></span></code></pre></div>
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Built-in</i> <i class="keyword">Funcon</i>
<span class="name"><span id="Name_float-round-ties-to-infinity">float-round-ties-to-infinity</span></span>(<span id="Variable1984_FF"><i class="var">FF</i></span>:<span class="name"><a href="#Name_float-formats">float-formats</a></span>, _:<span class="name"><a href="#Name_floats">floats</a></span>(<span id="Variable1997_FF"><i class="var">FF</i></span>)) : =><span class="name"><a href="../Integers/index.html#Name_integers">integers</a></span></code></pre></div>
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Built-in</i> <i class="keyword">Funcon</i>
<span class="name"><span id="Name_float-floor">float-floor</span></span>(<span id="Variable2025_FF"><i class="var">FF</i></span>:<span class="name"><a href="#Name_float-formats">float-formats</a></span>, _:<span class="name"><a href="#Name_floats">floats</a></span>(<span id="Variable2038_FF"><i class="var">FF</i></span>)) : =><span class="name"><a href="../Integers/index.html#Name_integers">integers</a></span></code></pre></div>
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Built-in</i> <i class="keyword">Funcon</i>
<span class="name"><span id="Name_float-ceiling">float-ceiling</span></span>(<span id="Variable2066_FF"><i class="var">FF</i></span>:<span class="name"><a href="#Name_float-formats">float-formats</a></span>, _:<span class="name"><a href="#Name_floats">floats</a></span>(<span id="Variable2079_FF"><i class="var">FF</i></span>)) : =><span class="name"><a href="../Integers/index.html#Name_integers">integers</a></span></code></pre></div>
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Built-in</i> <i class="keyword">Funcon</i>
<span class="name"><span id="Name_float-truncate">float-truncate</span></span>(<span id="Variable2107_FF"><i class="var">FF</i></span>:<span class="name"><a href="#Name_float-formats">float-formats</a></span>, _:<span class="name"><a href="#Name_floats">floats</a></span>(<span id="Variable2120_FF"><i class="var">FF</i></span>)) : =><span class="name"><a href="../Integers/index.html#Name_integers">integers</a></span></code></pre></div>
#### Miscellaneous
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Built-in</i> <i class="keyword">Funcon</i>
<span class="name"><span id="Name_float-pi">float-pi</span></span>(<span id="Variable2161_FF"><i class="var">FF</i></span>:<span class="name"><a href="#Name_float-formats">float-formats</a></span>) : =><span class="name"><a href="#Name_floats">floats</a></span>(<span id="Variable2177_FF"><i class="var">FF</i></span>)</code></pre></div>
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Built-in</i> <i class="keyword">Funcon</i>
<span class="name"><span id="Name_float-e">float-e</span></span>(<span id="Variable2193_FF"><i class="var">FF</i></span>:<span class="name"><a href="#Name_float-formats">float-formats</a></span>) : =><span class="name"><a href="#Name_floats">floats</a></span>(<span id="Variable2209_FF"><i class="var">FF</i></span>)</code></pre></div>
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Built-in</i> <i class="keyword">Funcon</i>
<span class="name"><span id="Name_float-log">float-log</span></span>(<span id="Variable2225_FF"><i class="var">FF</i></span>:<span class="name"><a href="#Name_float-formats">float-formats</a></span>, _:<span class="name"><a href="#Name_floats">floats</a></span>(<span id="Variable2238_FF"><i class="var">FF</i></span>)) : =><span class="name"><a href="#Name_floats">floats</a></span>(<span id="Variable2260_FF"><i class="var">FF</i></span>)</code></pre></div>
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Built-in</i> <i class="keyword">Funcon</i>
<span class="name"><span id="Name_float-log10">float-log10</span></span>(<span id="Variable2276_FF"><i class="var">FF</i></span>:<span class="name"><a href="#Name_float-formats">float-formats</a></span>, _:<span class="name"><a href="#Name_floats">floats</a></span>(<span id="Variable2289_FF"><i class="var">FF</i></span>)) : =><span class="name"><a href="#Name_floats">floats</a></span>(<span id="Variable2311_FF"><i class="var">FF</i></span>)</code></pre></div>
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Built-in</i> <i class="keyword">Funcon</i>
<span class="name"><span id="Name_float-exp">float-exp</span></span>(<span id="Variable2327_FF"><i class="var">FF</i></span>:<span class="name"><a href="#Name_float-formats">float-formats</a></span>, _:<span class="name"><a href="#Name_floats">floats</a></span>(<span id="Variable2340_FF"><i class="var">FF</i></span>)) : =><span class="name"><a href="#Name_floats">floats</a></span>(<span id="Variable2362_FF"><i class="var">FF</i></span>)</code></pre></div>
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Built-in</i> <i class="keyword">Funcon</i>
<span class="name"><span id="Name_float-sin">float-sin</span></span>(<span id="Variable2378_FF"><i class="var">FF</i></span>:<span class="name"><a href="#Name_float-formats">float-formats</a></span>, _:<span class="name"><a href="#Name_floats">floats</a></span>(<span id="Variable2391_FF"><i class="var">FF</i></span>)) : =><span class="name"><a href="#Name_floats">floats</a></span>(<span id="Variable2413_FF"><i class="var">FF</i></span>)</code></pre></div>
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Built-in</i> <i class="keyword">Funcon</i>
<span class="name"><span id="Name_float-cos">float-cos</span></span>(<span id="Variable2429_FF"><i class="var">FF</i></span>:<span class="name"><a href="#Name_float-formats">float-formats</a></span>, _:<span class="name"><a href="#Name_floats">floats</a></span>(<span id="Variable2442_FF"><i class="var">FF</i></span>)) : =><span class="name"><a href="#Name_floats">floats</a></span>(<span id="Variable2464_FF"><i class="var">FF</i></span>)</code></pre></div>
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Built-in</i> <i class="keyword">Funcon</i>
<span class="name"><span id="Name_float-tan">float-tan</span></span>(<span id="Variable2480_FF"><i class="var">FF</i></span>:<span class="name"><a href="#Name_float-formats">float-formats</a></span>, _:<span class="name"><a href="#Name_floats">floats</a></span>(<span id="Variable2493_FF"><i class="var">FF</i></span>)) : =><span class="name"><a href="#Name_floats">floats</a></span>(<span id="Variable2515_FF"><i class="var">FF</i></span>)</code></pre></div>
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Built-in</i> <i class="keyword">Funcon</i>
<span class="name"><span id="Name_float-asin">float-asin</span></span>(<span id="Variable2531_FF"><i class="var">FF</i></span>:<span class="name"><a href="#Name_float-formats">float-formats</a></span>, _:<span class="name"><a href="#Name_floats">floats</a></span>(<span id="Variable2544_FF"><i class="var">FF</i></span>)) : =><span class="name"><a href="#Name_floats">floats</a></span>(<span id="Variable2566_FF"><i class="var">FF</i></span>)</code></pre></div>
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Built-in</i> <i class="keyword">Funcon</i>
<span class="name"><span id="Name_float-acos">float-acos</span></span>(<span id="Variable2582_FF"><i class="var">FF</i></span>:<span class="name"><a href="#Name_float-formats">float-formats</a></span>, _:<span class="name"><a href="#Name_floats">floats</a></span>(<span id="Variable2595_FF"><i class="var">FF</i></span>)) : =><span class="name"><a href="#Name_floats">floats</a></span>(<span id="Variable2617_FF"><i class="var">FF</i></span>)</code></pre></div>
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Built-in</i> <i class="keyword">Funcon</i>
<span class="name"><span id="Name_float-atan">float-atan</span></span>(<span id="Variable2633_FF"><i class="var">FF</i></span>:<span class="name"><a href="#Name_float-formats">float-formats</a></span>, _:<span class="name"><a href="#Name_floats">floats</a></span>(<span id="Variable2646_FF"><i class="var">FF</i></span>)) : =><span class="name"><a href="#Name_floats">floats</a></span>(<span id="Variable2668_FF"><i class="var">FF</i></span>)</code></pre></div>
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Built-in</i> <i class="keyword">Funcon</i>
<span class="name"><span id="Name_float-sinh">float-sinh</span></span>(<span id="Variable2684_FF"><i class="var">FF</i></span>:<span class="name"><a href="#Name_float-formats">float-formats</a></span>, _:<span class="name"><a href="#Name_floats">floats</a></span>(<span id="Variable2697_FF"><i class="var">FF</i></span>)) : =><span class="name"><a href="#Name_floats">floats</a></span>(<span id="Variable2719_FF"><i class="var">FF</i></span>)</code></pre></div>
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Built-in</i> <i class="keyword">Funcon</i>
<span class="name"><span id="Name_float-cosh">float-cosh</span></span>(<span id="Variable2735_FF"><i class="var">FF</i></span>:<span class="name"><a href="#Name_float-formats">float-formats</a></span>, _:<span class="name"><a href="#Name_floats">floats</a></span>(<span id="Variable2748_FF"><i class="var">FF</i></span>)) : =><span class="name"><a href="#Name_floats">floats</a></span>(<span id="Variable2770_FF"><i class="var">FF</i></span>)</code></pre></div>
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Built-in</i> <i class="keyword">Funcon</i>
<span class="name"><span id="Name_float-tanh">float-tanh</span></span>(<span id="Variable2786_FF"><i class="var">FF</i></span>:<span class="name"><a href="#Name_float-formats">float-formats</a></span>, _:<span class="name"><a href="#Name_floats">floats</a></span>(<span id="Variable2799_FF"><i class="var">FF</i></span>)) : =><span class="name"><a href="#Name_floats">floats</a></span>(<span id="Variable2821_FF"><i class="var">FF</i></span>)</code></pre></div>
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Built-in</i> <i class="keyword">Funcon</i>
<span class="name"><span id="Name_float-asinh">float-asinh</span></span>(<span id="Variable2837_FF"><i class="var">FF</i></span>:<span class="name"><a href="#Name_float-formats">float-formats</a></span>, _:<span class="name"><a href="#Name_floats">floats</a></span>(<span id="Variable2850_FF"><i class="var">FF</i></span>)) : =><span class="name"><a href="#Name_floats">floats</a></span>(<span id="Variable2872_FF"><i class="var">FF</i></span>)</code></pre></div>
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Built-in</i> <i class="keyword">Funcon</i>
<span class="name"><span id="Name_float-acosh">float-acosh</span></span>(<span id="Variable2888_FF"><i class="var">FF</i></span>:<span class="name"><a href="#Name_float-formats">float-formats</a></span>, _:<span class="name"><a href="#Name_floats">floats</a></span>(<span id="Variable2901_FF"><i class="var">FF</i></span>)) : =><span class="name"><a href="#Name_floats">floats</a></span>(<span id="Variable2923_FF"><i class="var">FF</i></span>)</code></pre></div>
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Built-in</i> <i class="keyword">Funcon</i>
<span class="name"><span id="Name_float-atanh">float-atanh</span></span>(<span id="Variable2939_FF"><i class="var">FF</i></span>:<span class="name"><a href="#Name_float-formats">float-formats</a></span>, _:<span class="name"><a href="#Name_floats">floats</a></span>(<span id="Variable2952_FF"><i class="var">FF</i></span>)) : =><span class="name"><a href="#Name_floats">floats</a></span>(<span id="Variable2974_FF"><i class="var">FF</i></span>)</code></pre></div>
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Built-in</i> <i class="keyword">Funcon</i>
<span class="name"><span id="Name_float-atan2">float-atan2</span></span>(<span id="Variable2990_FF"><i class="var">FF</i></span>:<span class="name"><a href="#Name_float-formats">float-formats</a></span>, _:<span class="name"><a href="#Name_floats">floats</a></span>(<span id="Variable3003_FF"><i class="var">FF</i></span>), _:<span class="name"><a href="#Name_floats">floats</a></span>(<span id="Variable3021_FF"><i class="var">FF</i></span>)) : =><span class="name"><a href="#Name_floats">floats</a></span>(<span id="Variable3044_FF"><i class="var">FF</i></span>)</code></pre></div>
____
From the [PLanCompS Project] | [CBS-beta issues...] | [Suggest an improvement...]
[Floats.cbs]: Floats.cbs
"CBS SOURCE FILE"
[Funcons-beta]: /CBS-beta/docs/Funcons-beta
"FUNCONS-BETA"
[Unstable-Funcons-beta]: /CBS-beta/docs/Unstable-Funcons-beta
"UNSTABLE-FUNCONS-BETA"
[Languages-beta]: /CBS-beta/docs/Languages-beta
"LANGUAGES-BETA"
[Unstable-Languages-beta]: /CBS-beta/docs/Unstable-Languages-beta
"UNSTABLE-LANGUAGES-BETA"
[CBS-beta]: /CBS-beta "CBS-BETA"
[PLanCompS Project]: https://plancomps.github.io
"PROGRAMMING LANGUAGE COMPONENTS AND SPECIFICATIONS PROJECT HOME PAGE"
[CBS-beta issues...]: https://github.com/plancomps/CBS-beta/issues
"CBS-BETA ISSUE REPORTS ON GITHUB"
[Suggest an improvement...]: mailto:plancomps@gmail.com?Subject=CBS-beta%20-%20comment&Body=Re%3A%20CBS-beta%20specification%20at%20Values/Primitive/Floats/Floats.cbs%0A%0AComment/Query/Issue/Suggestion%3A%0A%0A%0ASignature%3A%0A
"GENERATE AN EMAIL TEMPLATE"

View File

@@ -0,0 +1,230 @@
### Integers
[
Type integers Alias ints
Type integers-from Alias from
Type integers-up-to Alias up-to
Type bounded-integers Alias bounded-ints
Type positive-integers Alias pos-ints
Type negative-integers Alias neg-ints
Type natural-numbers Alias nats
Funcon natural-successor Alias nat-succ
Funcon natural-predecessor Alias nat-pred
Funcon integer-add Alias int-add
Funcon integer-subtract Alias int-sub
Funcon integer-multiply Alias int-mul
Funcon integer-divide Alias int-div
Funcon integer-modulo Alias int-mod
Funcon integer-power Alias int-pow
Funcon integer-absolute-value Alias int-abs
Funcon integer-negate Alias int-neg
Funcon integer-is-less Alias is-less
Funcon integer-is-less-or-equal Alias is-less-or-equal
Funcon integer-is-greater Alias is-greater
Funcon integer-is-greater-or-equal Alias is-greater-or-equal
Funcon binary-natural Alias binary
Funcon octal-natural Alias octal
Funcon decimal-natural Alias decimal
Funcon hexadecimal-natural Alias hexadecimal
Funcon integer-sequence
]
Built-in Type
integers
Alias
ints = integers
/*
`integers` is the type of unbounded integers. Decimal notation is used to
express particular integer values.
*/
#### Subtypes of integers
Built-in Type
integers-from(_:integers) <: integers
Alias
from = integers-from
/*
`integers-from(M)` is the subtype of integers greater than or equal to `M`.
*/
Built-in Type
integers-up-to(_:integers) <: integers
Alias
up-to = integers-up-to
/*
`integers-up-to(N)` is the subtype of integers less than or equal to `N`.
*/
Type
bounded-integers(M:integers, N:integers)
~> integers-from(M) & integers-up-to(N)
Alias
bounded-ints = bounded-integers
/*
`bounded-integers(M,N)` is the subtype of integers from `M` to `N`, inclusive.
*/
Type
positive-integers ~> integers-from(1)
Alias
pos-ints = positive-integers
Type
negative-integers ~> integers-up-to(-1)
Alias
neg-ints = negative-integers
#### Natural numbers
Type
natural-numbers ~> integers-from(0)
Alias
nats = natural-numbers
Built-in Funcon
natural-successor(N:natural-numbers) : =>natural-numbers
Alias
nat-succ = natural-successor
Built-in Funcon
natural-predecessor(_:natural-numbers) : =>natural-numbers?
Alias
nat-pred = natural-predecessor
Assert
natural-predecessor(0) == ( )
#### Arithmetic
Built-in Funcon
integer-add(_:integers*) : =>integers
Alias
int-add = integer-add
Built-in Funcon
integer-subtract(_:integers, _:integers) : =>integers
Alias
int-sub = integer-subtract
Built-in Funcon
integer-multiply(_:integers*) : =>integers
Alias
int-mul = integer-multiply
Built-in Funcon
integer-divide(_:integers, _:integers) : =>integers?
Alias
int-div = integer-divide
Assert
integer-divide(_:integers, 0) == ( )
Built-in Funcon
integer-modulo(_:integers, _:integers) : =>integers?
Alias
int-mod = integer-modulo
Assert
integer-modulo(_:integers, 0) == ( )
Built-in Funcon
integer-power(_:integers, _:natural-numbers) : =>integers
Alias
int-pow = integer-power
Built-in Funcon
integer-absolute-value(_:integers) : =>natural-numbers
Alias
int-abs = integer-absolute-value
Funcon
integer-negate(N:integers) : =>integers
~> integer-subtract(0, N)
Alias
int-neg = integer-negate
#### Comparison
Built-in Funcon
integer-is-less(_:integers, _:integers) : =>booleans
Alias
is-less = integer-is-less
Built-in Funcon
integer-is-less-or-equal(_:integers, _:integers) : =>booleans
Alias
is-less-or-equal = integer-is-less-or-equal
Built-in Funcon
integer-is-greater(_:integers, _:integers) : =>booleans
Alias
is-greater = integer-is-greater
Built-in Funcon
integer-is-greater-or-equal(_:integers, _:integers) : =>booleans
Alias
is-greater-or-equal = integer-is-greater-or-equal
#### Conversion
Built-in Funcon
binary-natural(_:strings) : =>natural-numbers?
Alias
binary = binary-natural
Built-in Funcon
octal-natural(_:strings) : =>natural-numbers?
Alias
octal = octal-natural
Built-in Funcon
decimal-natural(_:strings) : =>natural-numbers?
Alias
decimal = decimal-natural
/*
Literal natural numbers `N` are equivalent to `decimal-natural"N"`.
*/
Built-in Funcon
hexadecimal-natural(_:strings) : =>natural-numbers?
Alias
hexadecimal = hexadecimal-natural
Funcon
integer-sequence(_:integers, _:integers) : =>integers*
/*
`integer-sequence(M, N)` is the seqeunce of integers from `M` to `N`,
except that if `M` is greater than `N`, it is the empty sequence.
*/
Rule
is-greater(M, N) == false
------------------------------------------------
integer-sequence(M:integers, N:integers)
~> (M, integer-sequence(integer-add(M, 1), N))
Rule
is-greater(M, N) == true
-----------------------------------------------
integer-sequence(M:integers, N:integers) ~> ( )

View File

@@ -0,0 +1,263 @@
---
layout: default
title: "Integers"
parent: Primitive
ancestor: Funcons-beta
---
[Funcons-beta] : [Integers.cbs]
-----------------------------
### Integers
<div class="highlighter-rouge"><pre class="highlight"><code>[
<i class="keyword">Type</i> <span class="name"><a href="#Name_integers">integers</a></span> <i class="keyword">Alias</i> <span class="name"><a href="#Name_ints">ints</a></span>
<i class="keyword">Type</i> <span class="name"><a href="#Name_integers-from">integers-from</a></span> <i class="keyword">Alias</i> <span class="name"><a href="#Name_from">from</a></span>
<i class="keyword">Type</i> <span class="name"><a href="#Name_integers-up-to">integers-up-to</a></span> <i class="keyword">Alias</i> <span class="name"><a href="#Name_up-to">up-to</a></span>
<i class="keyword">Type</i> <span class="name"><a href="#Name_bounded-integers">bounded-integers</a></span> <i class="keyword">Alias</i> <span class="name"><a href="#Name_bounded-ints">bounded-ints</a></span>
<i class="keyword">Type</i> <span class="name"><a href="#Name_positive-integers">positive-integers</a></span> <i class="keyword">Alias</i> <span class="name"><a href="#Name_pos-ints">pos-ints</a></span>
<i class="keyword">Type</i> <span class="name"><a href="#Name_negative-integers">negative-integers</a></span> <i class="keyword">Alias</i> <span class="name"><a href="#Name_neg-ints">neg-ints</a></span>
<i class="keyword">Type</i> <span class="name"><a href="#Name_natural-numbers">natural-numbers</a></span> <i class="keyword">Alias</i> <span class="name"><a href="#Name_nats">nats</a></span>
<i class="keyword">Funcon</i> <span class="name"><a href="#Name_natural-successor">natural-successor</a></span> <i class="keyword">Alias</i> <span class="name"><a href="#Name_nat-succ">nat-succ</a></span>
<i class="keyword">Funcon</i> <span class="name"><a href="#Name_natural-predecessor">natural-predecessor</a></span> <i class="keyword">Alias</i> <span class="name"><a href="#Name_nat-pred">nat-pred</a></span>
<i class="keyword">Funcon</i> <span class="name"><a href="#Name_integer-add">integer-add</a></span> <i class="keyword">Alias</i> <span class="name"><a href="#Name_int-add">int-add</a></span>
<i class="keyword">Funcon</i> <span class="name"><a href="#Name_integer-subtract">integer-subtract</a></span> <i class="keyword">Alias</i> <span class="name"><a href="#Name_int-sub">int-sub</a></span>
<i class="keyword">Funcon</i> <span class="name"><a href="#Name_integer-multiply">integer-multiply</a></span> <i class="keyword">Alias</i> <span class="name"><a href="#Name_int-mul">int-mul</a></span>
<i class="keyword">Funcon</i> <span class="name"><a href="#Name_integer-divide">integer-divide</a></span> <i class="keyword">Alias</i> <span class="name"><a href="#Name_int-div">int-div</a></span>
<i class="keyword">Funcon</i> <span class="name"><a href="#Name_integer-modulo">integer-modulo</a></span> <i class="keyword">Alias</i> <span class="name"><a href="#Name_int-mod">int-mod</a></span>
<i class="keyword">Funcon</i> <span class="name"><a href="#Name_integer-power">integer-power</a></span> <i class="keyword">Alias</i> <span class="name"><a href="#Name_int-pow">int-pow</a></span>
<i class="keyword">Funcon</i> <span class="name"><a href="#Name_integer-absolute-value">integer-absolute-value</a></span> <i class="keyword">Alias</i> <span class="name"><a href="#Name_int-abs">int-abs</a></span>
<i class="keyword">Funcon</i> <span class="name"><a href="#Name_integer-negate">integer-negate</a></span> <i class="keyword">Alias</i> <span class="name"><a href="#Name_int-neg">int-neg</a></span>
<i class="keyword">Funcon</i> <span class="name"><a href="#Name_integer-is-less">integer-is-less</a></span> <i class="keyword">Alias</i> <span class="name"><a href="#Name_is-less">is-less</a></span>
<i class="keyword">Funcon</i> <span class="name"><a href="#Name_integer-is-less-or-equal">integer-is-less-or-equal</a></span> <i class="keyword">Alias</i> <span class="name"><a href="#Name_is-less-or-equal">is-less-or-equal</a></span>
<i class="keyword">Funcon</i> <span class="name"><a href="#Name_integer-is-greater">integer-is-greater</a></span> <i class="keyword">Alias</i> <span class="name"><a href="#Name_is-greater">is-greater</a></span>
<i class="keyword">Funcon</i> <span class="name"><a href="#Name_integer-is-greater-or-equal">integer-is-greater-or-equal</a></span> <i class="keyword">Alias</i> <span class="name"><a href="#Name_is-greater-or-equal">is-greater-or-equal</a></span>
<i class="keyword">Funcon</i> <span class="name"><a href="#Name_binary-natural">binary-natural</a></span> <i class="keyword">Alias</i> <span class="name"><a href="#Name_binary">binary</a></span>
<i class="keyword">Funcon</i> <span class="name"><a href="#Name_octal-natural">octal-natural</a></span> <i class="keyword">Alias</i> <span class="name"><a href="#Name_octal">octal</a></span>
<i class="keyword">Funcon</i> <span class="name"><a href="#Name_decimal-natural">decimal-natural</a></span> <i class="keyword">Alias</i> <span class="name"><a href="#Name_decimal">decimal</a></span>
<i class="keyword">Funcon</i> <span class="name"><a href="#Name_hexadecimal-natural">hexadecimal-natural</a></span> <i class="keyword">Alias</i> <span class="name"><a href="#Name_hexadecimal">hexadecimal</a></span>
<i class="keyword">Funcon</i> <span class="name"><a href="#Name_integer-sequence">integer-sequence</a></span>
]</code></pre></div>
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Built-in</i> <i class="keyword">Type</i>
<span class="name"><span id="Name_integers">integers</span></span>
<i class="keyword">Alias</i>
<span class="name"><span id="Name_ints">ints</span></span> = <span class="name"><a href="#Name_integers">integers</a></span></code></pre></div>
<code><span class="name"><a href="#Name_integers">integers</a></span></code> is the type of unbounded integers. Decimal notation is used to
express particular integer values.
#### Subtypes of integers
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Built-in</i> <i class="keyword">Type</i>
<span class="name"><span id="Name_integers-from">integers-from</span></span>(_:<span class="name"><a href="#Name_integers">integers</a></span>) <: <span class="name"><a href="#Name_integers">integers</a></span>
<i class="keyword">Alias</i>
<span class="name"><span id="Name_from">from</span></span> = <span class="name"><a href="#Name_integers-from">integers-from</a></span></code></pre></div>
<code><span class="name"><a href="#Name_integers-from">integers-from</a></span>(<i class="var">M</i>)</code> is the subtype of integers greater than or equal to <code><i class="var">M</i></code>.
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Built-in</i> <i class="keyword">Type</i>
<span class="name"><span id="Name_integers-up-to">integers-up-to</span></span>(_:<span class="name"><a href="#Name_integers">integers</a></span>) <: <span class="name"><a href="#Name_integers">integers</a></span>
<i class="keyword">Alias</i>
<span class="name"><span id="Name_up-to">up-to</span></span> = <span class="name"><a href="#Name_integers-up-to">integers-up-to</a></span></code></pre></div>
<code><span class="name"><a href="#Name_integers-up-to">integers-up-to</a></span>(<i class="var">N</i>)</code> is the subtype of integers less than or equal to <code><i class="var">N</i></code>.
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Type</i>
<span class="name"><span id="Name_bounded-integers">bounded-integers</span></span>(<span id="Variable385_M"><i class="var">M</i></span>:<span class="name"><a href="#Name_integers">integers</a></span>, <span id="Variable394_N"><i class="var">N</i></span>:<span class="name"><a href="#Name_integers">integers</a></span>)
~> <span class="name"><a href="#Name_integers-from">integers-from</a></span>(<a href="#Variable385_M"><i class="var">M</i></a>) & <span class="name"><a href="#Name_integers-up-to">integers-up-to</a></span>(<a href="#Variable394_N"><i class="var">N</i></a>)
<i class="keyword">Alias</i>
<span class="name"><span id="Name_bounded-ints">bounded-ints</span></span> = <span class="name"><a href="#Name_bounded-integers">bounded-integers</a></span></code></pre></div>
<code><span class="name"><a href="#Name_bounded-integers">bounded-integers</a></span>(<i class="var">M</i>,<i class="var">N</i>)</code> is the subtype of integers from <code><i class="var">M</i></code> to <code><i class="var">N</i></code>, inclusive.
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Type</i>
<span class="name"><span id="Name_positive-integers">positive-integers</span></span> ~> <span class="name"><a href="#Name_integers-from">integers-from</a></span>(1)
<i class="keyword">Alias</i>
<span class="name"><span id="Name_pos-ints">pos-ints</span></span> = <span class="name"><a href="#Name_positive-integers">positive-integers</a></span></code></pre></div>
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Type</i>
<span class="name"><span id="Name_negative-integers">negative-integers</span></span> ~> <span class="name"><a href="#Name_integers-up-to">integers-up-to</a></span>(-1)
<i class="keyword">Alias</i>
<span class="name"><span id="Name_neg-ints">neg-ints</span></span> = <span class="name"><a href="#Name_negative-integers">negative-integers</a></span></code></pre></div>
#### Natural numbers
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Type</i>
<span class="name"><span id="Name_natural-numbers">natural-numbers</span></span> ~> <span class="name"><a href="#Name_integers-from">integers-from</a></span>(0)
<i class="keyword">Alias</i>
<span class="name"><span id="Name_nats">nats</span></span> = <span class="name"><a href="#Name_natural-numbers">natural-numbers</a></span></code></pre></div>
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Built-in</i> <i class="keyword">Funcon</i>
<span class="name"><span id="Name_natural-successor">natural-successor</span></span>(<span id="Variable582_N"><i class="var">N</i></span>:<span class="name"><a href="#Name_natural-numbers">natural-numbers</a></span>) : =><span class="name"><a href="#Name_natural-numbers">natural-numbers</a></span>
<i class="keyword">Alias</i>
<span class="name"><span id="Name_nat-succ">nat-succ</span></span> = <span class="name"><a href="#Name_natural-successor">natural-successor</a></span></code></pre></div>
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Built-in</i> <i class="keyword">Funcon</i>
<span class="name"><span id="Name_natural-predecessor">natural-predecessor</span></span>(_:<span class="name"><a href="#Name_natural-numbers">natural-numbers</a></span>) : =><span class="name"><a href="#Name_natural-numbers">natural-numbers</a></span><sup class="sup">?</sup>
<i class="keyword">Alias</i>
<span class="name"><span id="Name_nat-pred">nat-pred</span></span> = <span class="name"><a href="#Name_natural-predecessor">natural-predecessor</a></span></code></pre></div>
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Assert</i>
<span class="name"><a href="#Name_natural-predecessor">natural-predecessor</a></span>(0) == ( )</code></pre></div>
#### Arithmetic
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Built-in</i> <i class="keyword">Funcon</i>
<span class="name"><span id="Name_integer-add">integer-add</span></span>(_:<span class="name"><a href="#Name_integers">integers</a></span><sup class="sup">*</sup>) : =><span class="name"><a href="#Name_integers">integers</a></span>
<i class="keyword">Alias</i>
<span class="name"><span id="Name_int-add">int-add</span></span> = <span class="name"><a href="#Name_integer-add">integer-add</a></span></code></pre></div>
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Built-in</i> <i class="keyword">Funcon</i>
<span class="name"><span id="Name_integer-subtract">integer-subtract</span></span>(_:<span class="name"><a href="#Name_integers">integers</a></span>, _:<span class="name"><a href="#Name_integers">integers</a></span>) : =><span class="name"><a href="#Name_integers">integers</a></span>
<i class="keyword">Alias</i>
<span class="name"><span id="Name_int-sub">int-sub</span></span> = <span class="name"><a href="#Name_integer-subtract">integer-subtract</a></span></code></pre></div>
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Built-in</i> <i class="keyword">Funcon</i>
<span class="name"><span id="Name_integer-multiply">integer-multiply</span></span>(_:<span class="name"><a href="#Name_integers">integers</a></span><sup class="sup">*</sup>) : =><span class="name"><a href="#Name_integers">integers</a></span>
<i class="keyword">Alias</i>
<span class="name"><span id="Name_int-mul">int-mul</span></span> = <span class="name"><a href="#Name_integer-multiply">integer-multiply</a></span></code></pre></div>
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Built-in</i> <i class="keyword">Funcon</i>
<span class="name"><span id="Name_integer-divide">integer-divide</span></span>(_:<span class="name"><a href="#Name_integers">integers</a></span>, _:<span class="name"><a href="#Name_integers">integers</a></span>) : =><span class="name"><a href="#Name_integers">integers</a></span><sup class="sup">?</sup>
<i class="keyword">Alias</i>
<span class="name"><span id="Name_int-div">int-div</span></span> = <span class="name"><a href="#Name_integer-divide">integer-divide</a></span></code></pre></div>
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Assert</i>
<span class="name"><a href="#Name_integer-divide">integer-divide</a></span>(_:<span class="name"><a href="#Name_integers">integers</a></span>, 0) == ( )</code></pre></div>
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Built-in</i> <i class="keyword">Funcon</i>
<span class="name"><span id="Name_integer-modulo">integer-modulo</span></span>(_:<span class="name"><a href="#Name_integers">integers</a></span>, _:<span class="name"><a href="#Name_integers">integers</a></span>) : =><span class="name"><a href="#Name_integers">integers</a></span><sup class="sup">?</sup>
<i class="keyword">Alias</i>
<span class="name"><span id="Name_int-mod">int-mod</span></span> = <span class="name"><a href="#Name_integer-modulo">integer-modulo</a></span></code></pre></div>
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Assert</i>
<span class="name"><a href="#Name_integer-modulo">integer-modulo</a></span>(_:<span class="name"><a href="#Name_integers">integers</a></span>, 0) == ( )</code></pre></div>
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Built-in</i> <i class="keyword">Funcon</i>
<span class="name"><span id="Name_integer-power">integer-power</span></span>(_:<span class="name"><a href="#Name_integers">integers</a></span>, _:<span class="name"><a href="#Name_natural-numbers">natural-numbers</a></span>) : =><span class="name"><a href="#Name_integers">integers</a></span>
<i class="keyword">Alias</i>
<span class="name"><span id="Name_int-pow">int-pow</span></span> = <span class="name"><a href="#Name_integer-power">integer-power</a></span></code></pre></div>
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Built-in</i> <i class="keyword">Funcon</i>
<span class="name"><span id="Name_integer-absolute-value">integer-absolute-value</span></span>(_:<span class="name"><a href="#Name_integers">integers</a></span>) : =><span class="name"><a href="#Name_natural-numbers">natural-numbers</a></span>
<i class="keyword">Alias</i>
<span class="name"><span id="Name_int-abs">int-abs</span></span> = <span class="name"><a href="#Name_integer-absolute-value">integer-absolute-value</a></span></code></pre></div>
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Funcon</i>
<span class="name"><span id="Name_integer-negate">integer-negate</span></span>(<span id="Variable921_N"><i class="var">N</i></span>:<span class="name"><a href="#Name_integers">integers</a></span>) : =><span class="name"><a href="#Name_integers">integers</a></span>
~> <span class="name"><a href="#Name_integer-subtract">integer-subtract</a></span>(0, <a href="#Variable921_N"><i class="var">N</i></a>)
<i class="keyword">Alias</i>
<span class="name"><span id="Name_int-neg">int-neg</span></span> = <span class="name"><a href="#Name_integer-negate">integer-negate</a></span></code></pre></div>
#### Comparison
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Built-in</i> <i class="keyword">Funcon</i>
<span class="name"><span id="Name_integer-is-less">integer-is-less</span></span>(_:<span class="name"><a href="#Name_integers">integers</a></span>, _:<span class="name"><a href="#Name_integers">integers</a></span>) : =><span class="name"><a href="../Booleans/index.html#Name_booleans">booleans</a></span>
<i class="keyword">Alias</i>
<span class="name"><span id="Name_is-less">is-less</span></span> = <span class="name"><a href="#Name_integer-is-less">integer-is-less</a></span></code></pre></div>
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Built-in</i> <i class="keyword">Funcon</i>
<span class="name"><span id="Name_integer-is-less-or-equal">integer-is-less-or-equal</span></span>(_:<span class="name"><a href="#Name_integers">integers</a></span>, _:<span class="name"><a href="#Name_integers">integers</a></span>) : =><span class="name"><a href="../Booleans/index.html#Name_booleans">booleans</a></span>
<i class="keyword">Alias</i>
<span class="name"><span id="Name_is-less-or-equal">is-less-or-equal</span></span> = <span class="name"><a href="#Name_integer-is-less-or-equal">integer-is-less-or-equal</a></span></code></pre></div>
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Built-in</i> <i class="keyword">Funcon</i>
<span class="name"><span id="Name_integer-is-greater">integer-is-greater</span></span>(_:<span class="name"><a href="#Name_integers">integers</a></span>, _:<span class="name"><a href="#Name_integers">integers</a></span>) : =><span class="name"><a href="../Booleans/index.html#Name_booleans">booleans</a></span>
<i class="keyword">Alias</i>
<span class="name"><span id="Name_is-greater">is-greater</span></span> = <span class="name"><a href="#Name_integer-is-greater">integer-is-greater</a></span></code></pre></div>
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Built-in</i> <i class="keyword">Funcon</i>
<span class="name"><span id="Name_integer-is-greater-or-equal">integer-is-greater-or-equal</span></span>(_:<span class="name"><a href="#Name_integers">integers</a></span>, _:<span class="name"><a href="#Name_integers">integers</a></span>) : =><span class="name"><a href="../Booleans/index.html#Name_booleans">booleans</a></span>
<i class="keyword">Alias</i>
<span class="name"><span id="Name_is-greater-or-equal">is-greater-or-equal</span></span> = <span class="name"><a href="#Name_integer-is-greater-or-equal">integer-is-greater-or-equal</a></span></code></pre></div>
#### Conversion
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Built-in</i> <i class="keyword">Funcon</i>
<span class="name"><span id="Name_binary-natural">binary-natural</span></span>(_:<span class="name"><a href="../../Composite/Strings/index.html#Name_strings">strings</a></span>) : =><span class="name"><a href="#Name_natural-numbers">natural-numbers</a></span><sup class="sup">?</sup>
<i class="keyword">Alias</i>
<span class="name"><span id="Name_binary">binary</span></span> = <span class="name"><a href="#Name_binary-natural">binary-natural</a></span></code></pre></div>
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Built-in</i> <i class="keyword">Funcon</i>
<span class="name"><span id="Name_octal-natural">octal-natural</span></span>(_:<span class="name"><a href="../../Composite/Strings/index.html#Name_strings">strings</a></span>) : =><span class="name"><a href="#Name_natural-numbers">natural-numbers</a></span><sup class="sup">?</sup>
<i class="keyword">Alias</i>
<span class="name"><span id="Name_octal">octal</span></span> = <span class="name"><a href="#Name_octal-natural">octal-natural</a></span></code></pre></div>
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Built-in</i> <i class="keyword">Funcon</i>
<span class="name"><span id="Name_decimal-natural">decimal-natural</span></span>(_:<span class="name"><a href="../../Composite/Strings/index.html#Name_strings">strings</a></span>) : =><span class="name"><a href="#Name_natural-numbers">natural-numbers</a></span><sup class="sup">?</sup>
<i class="keyword">Alias</i>
<span class="name"><span id="Name_decimal">decimal</span></span> = <span class="name"><a href="#Name_decimal-natural">decimal-natural</a></span></code></pre></div>
Literal natural numbers <code><i class="var">N</i></code> are equivalent to <code><span class="name"><a href="#Name_decimal-natural">decimal-natural</a></span>"N"</code>.
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Built-in</i> <i class="keyword">Funcon</i>
<span class="name"><span id="Name_hexadecimal-natural">hexadecimal-natural</span></span>(_:<span class="name"><a href="../../Composite/Strings/index.html#Name_strings">strings</a></span>) : =><span class="name"><a href="#Name_natural-numbers">natural-numbers</a></span><sup class="sup">?</sup>
<i class="keyword">Alias</i>
<span class="name"><span id="Name_hexadecimal">hexadecimal</span></span> = <span class="name"><a href="#Name_hexadecimal-natural">hexadecimal-natural</a></span></code></pre></div>
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Funcon</i>
<span class="name"><span id="Name_integer-sequence">integer-sequence</span></span>(_:<span class="name"><a href="#Name_integers">integers</a></span>, _:<span class="name"><a href="#Name_integers">integers</a></span>) : =><span class="name"><a href="#Name_integers">integers</a></span><sup class="sup">*</sup></code></pre></div>
<code><span class="name"><a href="#Name_integer-sequence">integer-sequence</a></span>(<i class="var">M</i>, <i class="var">N</i>)</code> is the seqeunce of integers from <code><i class="var">M</i></code> to <code><i class="var">N</i></code>,
except that if <code><i class="var">M</i></code> is greater than <code><i class="var">N</i></code>, it is the empty sequence.
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Rule</i>
<span class="name"><a href="#Name_is-greater">is-greater</a></span>(<a href="#Variable1410_M"><i class="var">M</i></a>, <a href="#Variable1418_N"><i class="var">N</i></a>) == <span class="name"><a href="../Booleans/index.html#Name_false">false</a></span>
------------------------------------------------
<span class="name"><a href="#Name_integer-sequence">integer-sequence</a></span>(<span id="Variable1410_M"><i class="var">M</i></span>:<span class="name"><a href="#Name_integers">integers</a></span>, <span id="Variable1418_N"><i class="var">N</i></span>:<span class="name"><a href="#Name_integers">integers</a></span>)
~> (<a href="#Variable1410_M"><i class="var">M</i></a>, <span class="name"><a href="#Name_integer-sequence">integer-sequence</a></span>(<span class="name"><a href="#Name_integer-add">integer-add</a></span>(<a href="#Variable1410_M"><i class="var">M</i></a>, 1), <a href="#Variable1418_N"><i class="var">N</i></a>))
<i class="keyword">Rule</i>
<span class="name"><a href="#Name_is-greater">is-greater</a></span>(<a href="#Variable1501_M"><i class="var">M</i></a>, <a href="#Variable1509_N"><i class="var">N</i></a>) == <span class="name"><a href="../Booleans/index.html#Name_true">true</a></span>
-----------------------------------------------
<span class="name"><a href="#Name_integer-sequence">integer-sequence</a></span>(<span id="Variable1501_M"><i class="var">M</i></span>:<span class="name"><a href="#Name_integers">integers</a></span>, <span id="Variable1509_N"><i class="var">N</i></span>:<span class="name"><a href="#Name_integers">integers</a></span>) ~> ( )</code></pre></div>
____
From the [PLanCompS Project] | [CBS-beta issues...] | [Suggest an improvement...]
[Integers.cbs]: Integers.cbs
"CBS SOURCE FILE"
[Funcons-beta]: /CBS-beta/docs/Funcons-beta
"FUNCONS-BETA"
[Unstable-Funcons-beta]: /CBS-beta/docs/Unstable-Funcons-beta
"UNSTABLE-FUNCONS-BETA"
[Languages-beta]: /CBS-beta/docs/Languages-beta
"LANGUAGES-BETA"
[Unstable-Languages-beta]: /CBS-beta/docs/Unstable-Languages-beta
"UNSTABLE-LANGUAGES-BETA"
[CBS-beta]: /CBS-beta "CBS-BETA"
[PLanCompS Project]: https://plancomps.github.io
"PROGRAMMING LANGUAGE COMPONENTS AND SPECIFICATIONS PROJECT HOME PAGE"
[CBS-beta issues...]: https://github.com/plancomps/CBS-beta/issues
"CBS-BETA ISSUE REPORTS ON GITHUB"
[Suggest an improvement...]: mailto:plancomps@gmail.com?Subject=CBS-beta%20-%20comment&Body=Re%3A%20CBS-beta%20specification%20at%20Values/Primitive/Integers/Integers.cbs%0A%0AComment/Query/Issue/Suggestion%3A%0A%0A%0ASignature%3A%0A
"GENERATE AN EMAIL TEMPLATE"

View File

@@ -0,0 +1,15 @@
### Null
[
Datatype null-type
Funcon null-value Alias null
]
Datatype
null-type ::= null-value
Alias
null = null-value
/*
The only element of the datatype `null-type` is `null-value`.
*/

View File

@@ -0,0 +1,52 @@
---
layout: default
title: "Null"
parent: Primitive
ancestor: Funcons-beta
---
[Funcons-beta] : [Null.cbs]
-----------------------------
### Null
<div class="highlighter-rouge"><pre class="highlight"><code>[
<i class="keyword">Datatype</i> <span class="name"><a href="#Name_null-type">null-type</a></span>
<i class="keyword">Funcon</i> <span class="name"><a href="#Name_null-value">null-value</a></span> <i class="keyword">Alias</i> <span class="name"><a href="#Name_null">null</a></span>
]</code></pre></div>
<div class="highlighter-rouge"><pre class="highlight"><code><i class="keyword">Datatype</i>
<span class="name"><span id="Name_null-type">null-type</span></span> ::= <span id="Name_null-value">null-value</span>
<i class="keyword">Alias</i>
<span class="name"><span id="Name_null">null</span></span> = <span class="name"><a href="#Name_null-value">null-value</a></span></code></pre></div>
The only element of the datatype <code><span class="name"><a href="#Name_null-type">null-type</a></span></code> is <code><span class="name"><a href="#Name_null-value">null-value</a></span></code>.
____
From the [PLanCompS Project] | [CBS-beta issues...] | [Suggest an improvement...]
[Null.cbs]: Null.cbs
"CBS SOURCE FILE"
[Funcons-beta]: /CBS-beta/docs/Funcons-beta
"FUNCONS-BETA"
[Unstable-Funcons-beta]: /CBS-beta/docs/Unstable-Funcons-beta
"UNSTABLE-FUNCONS-BETA"
[Languages-beta]: /CBS-beta/docs/Languages-beta
"LANGUAGES-BETA"
[Unstable-Languages-beta]: /CBS-beta/docs/Unstable-Languages-beta
"UNSTABLE-LANGUAGES-BETA"
[CBS-beta]: /CBS-beta "CBS-BETA"
[PLanCompS Project]: https://plancomps.github.io
"PROGRAMMING LANGUAGE COMPONENTS AND SPECIFICATIONS PROJECT HOME PAGE"
[CBS-beta issues...]: https://github.com/plancomps/CBS-beta/issues
"CBS-BETA ISSUE REPORTS ON GITHUB"
[Suggest an improvement...]: mailto:plancomps@gmail.com?Subject=CBS-beta%20-%20comment&Body=Re%3A%20CBS-beta%20specification%20at%20Values/Primitive/Null/Null.cbs%0A%0AComment/Query/Issue/Suggestion%3A%0A%0A%0ASignature%3A%0A
"GENERATE AN EMAIL TEMPLATE"