429 lines
32 KiB
HTML
429 lines
32 KiB
HTML
|
<!DOCTYPE html>
|
||
|
<html>
|
||
|
<!-- Created by GNU Texinfo 7.1, https://www.gnu.org/software/texinfo/ -->
|
||
|
<head>
|
||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||
|
<!-- This manual documents Guile version 3.0.10.
|
||
|
|
||
|
Copyright (C) 1996-1997, 2000-2005, 2009-2023 Free Software Foundation,
|
||
|
Inc.
|
||
|
|
||
|
Copyright (C) 2021 Maxime Devos
|
||
|
|
||
|
Copyright (C) 2024 Tomas Volf
|
||
|
|
||
|
|
||
|
Permission is granted to copy, distribute and/or modify this document
|
||
|
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||
|
any later version published by the Free Software Foundation; with no
|
||
|
Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
|
||
|
copy of the license is included in the section entitled "GNU Free
|
||
|
Documentation License." -->
|
||
|
<title>Characters (Guile Reference Manual)</title>
|
||
|
|
||
|
<meta name="description" content="Characters (Guile Reference Manual)">
|
||
|
<meta name="keywords" content="Characters (Guile Reference Manual)">
|
||
|
<meta name="resource-type" content="document">
|
||
|
<meta name="distribution" content="global">
|
||
|
<meta name="Generator" content=".texi2any-real">
|
||
|
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||
|
|
||
|
<link href="index.html" rel="start" title="Top">
|
||
|
<link href="Concept-Index.html" rel="index" title="Concept Index">
|
||
|
<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
|
||
|
<link href="Data-Types.html" rel="up" title="Data Types">
|
||
|
<link href="Character-Sets.html" rel="next" title="Character Sets">
|
||
|
<link href="Numbers.html" rel="prev" title="Numbers">
|
||
|
<style type="text/css">
|
||
|
<!--
|
||
|
a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
|
||
|
div.example {margin-left: 3.2em}
|
||
|
span:hover a.copiable-link {visibility: visible}
|
||
|
strong.def-name {font-family: monospace; font-weight: bold; font-size: larger}
|
||
|
-->
|
||
|
</style>
|
||
|
<link rel="stylesheet" type="text/css" href="https://www.gnu.org/software/gnulib/manual.css">
|
||
|
|
||
|
|
||
|
</head>
|
||
|
|
||
|
<body lang="en">
|
||
|
<div class="subsection-level-extent" id="Characters">
|
||
|
<div class="nav-panel">
|
||
|
<p>
|
||
|
Next: <a href="Character-Sets.html" accesskey="n" rel="next">Character Sets</a>, Previous: <a href="Numbers.html" accesskey="p" rel="prev">Numerical data types</a>, Up: <a href="Data-Types.html" accesskey="u" rel="up">Data Types</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Concept-Index.html" title="Index" rel="index">Index</a>]</p>
|
||
|
</div>
|
||
|
<hr>
|
||
|
<h4 class="subsection" id="Characters-1"><span>6.6.3 Characters<a class="copiable-link" href="#Characters-1"> ¶</a></span></h4>
|
||
|
<a class="index-entry-id" id="index-Characters"></a>
|
||
|
|
||
|
<p>In Scheme, there is a data type to describe a single character.
|
||
|
</p>
|
||
|
<p>Defining what exactly a character <em class="emph">is</em> can be more complicated
|
||
|
than it seems. Guile follows the advice of R6RS and uses The Unicode
|
||
|
Standard to help define what a character is. So, for Guile, a
|
||
|
character is anything in the Unicode Character Database.
|
||
|
</p>
|
||
|
<a class="index-entry-id" id="index-code-point"></a>
|
||
|
<a class="index-entry-id" id="index-Unicode-code-point"></a>
|
||
|
|
||
|
<p>The Unicode Character Database is basically a table of characters
|
||
|
indexed using integers called ’code points’. Valid code points are in
|
||
|
the ranges 0 to <code class="code">#xD7FF</code> inclusive or <code class="code">#xE000</code> to
|
||
|
<code class="code">#x10FFFF</code> inclusive, which is about 1.1 million code points.
|
||
|
</p>
|
||
|
<a class="index-entry-id" id="index-designated-code-point"></a>
|
||
|
<a class="index-entry-id" id="index-code-point_002c-designated"></a>
|
||
|
|
||
|
<p>Any code point that has been assigned to a character or that has
|
||
|
otherwise been given a meaning by Unicode is called a ’designated code
|
||
|
point’. Most of the designated code points, about 200,000 of them,
|
||
|
indicate characters, accents or other combining marks that modify
|
||
|
other characters, symbols, whitespace, and control characters. Some
|
||
|
are not characters but indicators that suggest how to format or
|
||
|
display neighboring characters.
|
||
|
</p>
|
||
|
<a class="index-entry-id" id="index-reserved-code-point"></a>
|
||
|
<a class="index-entry-id" id="index-code-point_002c-reserved"></a>
|
||
|
|
||
|
<p>If a code point is not a designated code point – if it has not been
|
||
|
assigned to a character by The Unicode Standard – it is a ’reserved
|
||
|
code point’, meaning that they are reserved for future use. Most of
|
||
|
the code points, about 800,000, are ’reserved code points’.
|
||
|
</p>
|
||
|
<p>By convention, a Unicode code point is written as
|
||
|
“U+XXXX” where “XXXX” is a hexadecimal number. Please note that
|
||
|
this convenient notation is not valid code. Guile does not interpret
|
||
|
“U+XXXX” as a character.
|
||
|
</p>
|
||
|
<p>In Scheme, a character literal is written as <code class="code">#\<var class="var">name</var></code> where
|
||
|
<var class="var">name</var> is the name of the character that you want. Printable
|
||
|
characters have their usual single character name; for example,
|
||
|
<code class="code">#\a</code> is a lower case <code class="code">a</code>.
|
||
|
</p>
|
||
|
<p>Some of the code points are ’combining characters’ that are not meant
|
||
|
to be printed by themselves but are instead meant to modify the
|
||
|
appearance of the previous character. For combining characters, an
|
||
|
alternate form of the character literal is <code class="code">#\</code> followed by
|
||
|
U+25CC (a small, dotted circle), followed by the combining character.
|
||
|
This allows the combining character to be drawn on the circle, not on
|
||
|
the backslash of <code class="code">#\</code>.
|
||
|
</p>
|
||
|
<p>Many of the non-printing characters, such as whitespace characters and
|
||
|
control characters, also have names.
|
||
|
</p>
|
||
|
<p>The most commonly used non-printing characters have long character
|
||
|
names, described in the table below.
|
||
|
</p>
|
||
|
<table class="multitable">
|
||
|
<tbody><tr><td>Character Name</td><td>Codepoint</td></tr>
|
||
|
<tr><td><code class="code">#\nul</code></td><td>U+0000</td></tr>
|
||
|
<tr><td><code class="code">#\alarm</code></td><td>U+0007</td></tr>
|
||
|
<tr><td><code class="code">#\backspace</code></td><td>U+0008</td></tr>
|
||
|
<tr><td><code class="code">#\tab</code></td><td>U+0009</td></tr>
|
||
|
<tr><td><code class="code">#\linefeed</code></td><td>U+000A</td></tr>
|
||
|
<tr><td><code class="code">#\newline</code></td><td>U+000A</td></tr>
|
||
|
<tr><td><code class="code">#\vtab</code></td><td>U+000B</td></tr>
|
||
|
<tr><td><code class="code">#\page</code></td><td>U+000C</td></tr>
|
||
|
<tr><td><code class="code">#\return</code></td><td>U+000D</td></tr>
|
||
|
<tr><td><code class="code">#\esc</code></td><td>U+001B</td></tr>
|
||
|
<tr><td><code class="code">#\space</code></td><td>U+0020</td></tr>
|
||
|
<tr><td><code class="code">#\delete</code></td><td>U+007F</td></tr>
|
||
|
</tbody>
|
||
|
</table>
|
||
|
|
||
|
<p>There are also short names for all of the “C0 control characters”
|
||
|
(those with code points below 32). The following table lists the short
|
||
|
name for each character.
|
||
|
</p>
|
||
|
<table class="multitable">
|
||
|
<tbody><tr><td width="25%">0 = <code class="code">#\nul</code></td><td width="25%">1 = <code class="code">#\soh</code></td><td width="25%">2 = <code class="code">#\stx</code></td><td width="25%">3 = <code class="code">#\etx</code></td></tr>
|
||
|
<tr><td width="25%">4 = <code class="code">#\eot</code></td><td width="25%">5 = <code class="code">#\enq</code></td><td width="25%">6 = <code class="code">#\ack</code></td><td width="25%">7 = <code class="code">#\bel</code></td></tr>
|
||
|
<tr><td width="25%">8 = <code class="code">#\bs</code></td><td width="25%">9 = <code class="code">#\ht</code></td><td width="25%">10 = <code class="code">#\lf</code></td><td width="25%">11 = <code class="code">#\vt</code></td></tr>
|
||
|
<tr><td width="25%">12 = <code class="code">#\ff</code></td><td width="25%">13 = <code class="code">#\cr</code></td><td width="25%">14 = <code class="code">#\so</code></td><td width="25%">15 = <code class="code">#\si</code></td></tr>
|
||
|
<tr><td width="25%">16 = <code class="code">#\dle</code></td><td width="25%">17 = <code class="code">#\dc1</code></td><td width="25%">18 = <code class="code">#\dc2</code></td><td width="25%">19 = <code class="code">#\dc3</code></td></tr>
|
||
|
<tr><td width="25%">20 = <code class="code">#\dc4</code></td><td width="25%">21 = <code class="code">#\nak</code></td><td width="25%">22 = <code class="code">#\syn</code></td><td width="25%">23 = <code class="code">#\etb</code></td></tr>
|
||
|
<tr><td width="25%">24 = <code class="code">#\can</code></td><td width="25%">25 = <code class="code">#\em</code></td><td width="25%">26 = <code class="code">#\sub</code></td><td width="25%">27 = <code class="code">#\esc</code></td></tr>
|
||
|
<tr><td width="25%">28 = <code class="code">#\fs</code></td><td width="25%">29 = <code class="code">#\gs</code></td><td width="25%">30 = <code class="code">#\rs</code></td><td width="25%">31 = <code class="code">#\us</code></td></tr>
|
||
|
<tr><td width="25%">32 = <code class="code">#\sp</code></td></tr>
|
||
|
</tbody>
|
||
|
</table>
|
||
|
|
||
|
<p>The short name for the “delete” character (code point U+007F) is
|
||
|
<code class="code">#\del</code>.
|
||
|
</p>
|
||
|
<p>The R7RS name for the “escape” character (code point U+001B) is
|
||
|
<code class="code">#\escape</code>.
|
||
|
</p>
|
||
|
<p>There are also a few alternative names left over for compatibility with
|
||
|
previous versions of Guile.
|
||
|
</p>
|
||
|
<table class="multitable">
|
||
|
<tbody><tr><td>Alternate</td><td>Standard</td></tr>
|
||
|
<tr><td><code class="code">#\nl</code></td><td><code class="code">#\newline</code></td></tr>
|
||
|
<tr><td><code class="code">#\np</code></td><td><code class="code">#\page</code></td></tr>
|
||
|
<tr><td><code class="code">#\null</code></td><td><code class="code">#\nul</code></td></tr>
|
||
|
</tbody>
|
||
|
</table>
|
||
|
|
||
|
<p>Characters may also be written using their code point values. They can
|
||
|
be written with as an octal number, such as <code class="code">#\10</code> for
|
||
|
<code class="code">#\bs</code> or <code class="code">#\177</code> for <code class="code">#\del</code>.
|
||
|
</p>
|
||
|
<p>If one prefers hex to octal, there is an additional syntax for character
|
||
|
escapes: <code class="code">#\xHHHH</code> – the letter ’x’ followed by a hexadecimal
|
||
|
number of one to eight digits.
|
||
|
</p>
|
||
|
<a class="index-entry-id" id="index-char_003f-3"></a>
|
||
|
<dl class="first-deffn">
|
||
|
<dt class="deffn" id="index-char_003f"><span class="category-def">Scheme Procedure: </span><span><strong class="def-name">char?</strong> <var class="def-var-arguments">x</var><a class="copiable-link" href="#index-char_003f"> ¶</a></span></dt>
|
||
|
<dt class="deffnx def-cmd-deffn" id="index-scm_005fchar_005fp"><span class="category-def">C Function: </span><span><strong class="def-name">scm_char_p</strong> <var class="def-var-arguments">(x)</var><a class="copiable-link" href="#index-scm_005fchar_005fp"> ¶</a></span></dt>
|
||
|
<dd><p>Return <code class="code">#t</code> if <var class="var">x</var> is a character, else <code class="code">#f</code>.
|
||
|
</p></dd></dl>
|
||
|
|
||
|
<p>Fundamentally, the character comparison operations below are
|
||
|
numeric comparisons of the character’s code points.
|
||
|
</p>
|
||
|
<a class="index-entry-id" id="index-char_003d_003f-2"></a>
|
||
|
<dl class="first-deffn">
|
||
|
<dt class="deffn" id="index-char_003d_003f"><span class="category-def">Scheme Procedure: </span><span><strong class="def-name">char=?</strong> <var class="def-var-arguments">x y</var><a class="copiable-link" href="#index-char_003d_003f"> ¶</a></span></dt>
|
||
|
<dd><p>Return <code class="code">#t</code> if code point of <var class="var">x</var> is equal to the code point
|
||
|
of <var class="var">y</var>, else <code class="code">#f</code>.
|
||
|
</p></dd></dl>
|
||
|
|
||
|
<a class="index-entry-id" id="index-char_003c_003f-2"></a>
|
||
|
<dl class="first-deffn">
|
||
|
<dt class="deffn" id="index-char_003c_003f"><span class="category-def">Scheme Procedure: </span><span><strong class="def-name">char<?</strong> <var class="def-var-arguments">x y</var><a class="copiable-link" href="#index-char_003c_003f"> ¶</a></span></dt>
|
||
|
<dd><p>Return <code class="code">#t</code> if the code point of <var class="var">x</var> is less than the code
|
||
|
point of <var class="var">y</var>, else <code class="code">#f</code>.
|
||
|
</p></dd></dl>
|
||
|
|
||
|
<a class="index-entry-id" id="index-char_003c_003d_003f-2"></a>
|
||
|
<dl class="first-deffn">
|
||
|
<dt class="deffn" id="index-char_003c_003d_003f"><span class="category-def">Scheme Procedure: </span><span><strong class="def-name">char<=?</strong> <var class="def-var-arguments">x y</var><a class="copiable-link" href="#index-char_003c_003d_003f"> ¶</a></span></dt>
|
||
|
<dd><p>Return <code class="code">#t</code> if the code point of <var class="var">x</var> is less than or equal
|
||
|
to the code point of <var class="var">y</var>, else <code class="code">#f</code>.
|
||
|
</p></dd></dl>
|
||
|
|
||
|
<a class="index-entry-id" id="index-char_003e_003f-2"></a>
|
||
|
<dl class="first-deffn">
|
||
|
<dt class="deffn" id="index-char_003e_003f"><span class="category-def">Scheme Procedure: </span><span><strong class="def-name">char>?</strong> <var class="def-var-arguments">x y</var><a class="copiable-link" href="#index-char_003e_003f"> ¶</a></span></dt>
|
||
|
<dd><p>Return <code class="code">#t</code> if the code point of <var class="var">x</var> is greater than the
|
||
|
code point of <var class="var">y</var>, else <code class="code">#f</code>.
|
||
|
</p></dd></dl>
|
||
|
|
||
|
<a class="index-entry-id" id="index-char_003e_003d_003f-2"></a>
|
||
|
<dl class="first-deffn">
|
||
|
<dt class="deffn" id="index-char_003e_003d_003f"><span class="category-def">Scheme Procedure: </span><span><strong class="def-name">char>=?</strong> <var class="def-var-arguments">x y</var><a class="copiable-link" href="#index-char_003e_003d_003f"> ¶</a></span></dt>
|
||
|
<dd><p>Return <code class="code">#t</code> if the code point of <var class="var">x</var> is greater than or
|
||
|
equal to the code point of <var class="var">y</var>, else <code class="code">#f</code>.
|
||
|
</p></dd></dl>
|
||
|
|
||
|
<a class="index-entry-id" id="index-case-folding"></a>
|
||
|
|
||
|
<p>Case-insensitive character comparisons use <em class="emph">Unicode case
|
||
|
folding</em>. In case folding comparisons, if a character is lowercase
|
||
|
and has an uppercase form that can be expressed as a single character,
|
||
|
it is converted to uppercase before comparison. All other characters
|
||
|
undergo no conversion before the comparison occurs. This includes the
|
||
|
German sharp S (Eszett) which is not uppercased before conversion
|
||
|
because its uppercase form has two characters. Unicode case folding
|
||
|
is language independent: it uses rules that are generally true, but,
|
||
|
it cannot cover all cases for all languages.
|
||
|
</p>
|
||
|
<a class="index-entry-id" id="index-char_002dci_003d_003f-2"></a>
|
||
|
<dl class="first-deffn">
|
||
|
<dt class="deffn" id="index-char_002dci_003d_003f"><span class="category-def">Scheme Procedure: </span><span><strong class="def-name">char-ci=?</strong> <var class="def-var-arguments">x y</var><a class="copiable-link" href="#index-char_002dci_003d_003f"> ¶</a></span></dt>
|
||
|
<dd><p>Return <code class="code">#t</code> if the case-folded code point of <var class="var">x</var> is the same
|
||
|
as the case-folded code point of <var class="var">y</var>, else <code class="code">#f</code>.
|
||
|
</p></dd></dl>
|
||
|
|
||
|
<a class="index-entry-id" id="index-char_002dci_003c_003f-2"></a>
|
||
|
<dl class="first-deffn">
|
||
|
<dt class="deffn" id="index-char_002dci_003c_003f"><span class="category-def">Scheme Procedure: </span><span><strong class="def-name">char-ci<?</strong> <var class="def-var-arguments">x y</var><a class="copiable-link" href="#index-char_002dci_003c_003f"> ¶</a></span></dt>
|
||
|
<dd><p>Return <code class="code">#t</code> if the case-folded code point of <var class="var">x</var> is less
|
||
|
than the case-folded code point of <var class="var">y</var>, else <code class="code">#f</code>.
|
||
|
</p></dd></dl>
|
||
|
|
||
|
<a class="index-entry-id" id="index-char_002dci_003c_003d_003f-2"></a>
|
||
|
<dl class="first-deffn">
|
||
|
<dt class="deffn" id="index-char_002dci_003c_003d_003f"><span class="category-def">Scheme Procedure: </span><span><strong class="def-name">char-ci<=?</strong> <var class="def-var-arguments">x y</var><a class="copiable-link" href="#index-char_002dci_003c_003d_003f"> ¶</a></span></dt>
|
||
|
<dd><p>Return <code class="code">#t</code> if the case-folded code point of <var class="var">x</var> is less
|
||
|
than or equal to the case-folded code point of <var class="var">y</var>, else
|
||
|
<code class="code">#f</code>.
|
||
|
</p></dd></dl>
|
||
|
|
||
|
<a class="index-entry-id" id="index-char_002dci_003e_003f-2"></a>
|
||
|
<dl class="first-deffn">
|
||
|
<dt class="deffn" id="index-char_002dci_003e_003f"><span class="category-def">Scheme Procedure: </span><span><strong class="def-name">char-ci>?</strong> <var class="def-var-arguments">x y</var><a class="copiable-link" href="#index-char_002dci_003e_003f"> ¶</a></span></dt>
|
||
|
<dd><p>Return <code class="code">#t</code> if the case-folded code point of <var class="var">x</var> is greater
|
||
|
than the case-folded code point of <var class="var">y</var>, else <code class="code">#f</code>.
|
||
|
</p></dd></dl>
|
||
|
|
||
|
<a class="index-entry-id" id="index-char_002dci_003e_003d_003f-2"></a>
|
||
|
<dl class="first-deffn">
|
||
|
<dt class="deffn" id="index-char_002dci_003e_003d_003f"><span class="category-def">Scheme Procedure: </span><span><strong class="def-name">char-ci>=?</strong> <var class="def-var-arguments">x y</var><a class="copiable-link" href="#index-char_002dci_003e_003d_003f"> ¶</a></span></dt>
|
||
|
<dd><p>Return <code class="code">#t</code> if the case-folded code point of <var class="var">x</var> is greater
|
||
|
than or equal to the case-folded code point of <var class="var">y</var>, else
|
||
|
<code class="code">#f</code>.
|
||
|
</p></dd></dl>
|
||
|
|
||
|
<a class="index-entry-id" id="index-char_002dalphabetic_003f-2"></a>
|
||
|
<dl class="first-deffn">
|
||
|
<dt class="deffn" id="index-char_002dalphabetic_003f"><span class="category-def">Scheme Procedure: </span><span><strong class="def-name">char-alphabetic?</strong> <var class="def-var-arguments">chr</var><a class="copiable-link" href="#index-char_002dalphabetic_003f"> ¶</a></span></dt>
|
||
|
<dt class="deffnx def-cmd-deffn" id="index-scm_005fchar_005falphabetic_005fp"><span class="category-def">C Function: </span><span><strong class="def-name">scm_char_alphabetic_p</strong> <var class="def-var-arguments">(chr)</var><a class="copiable-link" href="#index-scm_005fchar_005falphabetic_005fp"> ¶</a></span></dt>
|
||
|
<dd><p>Return <code class="code">#t</code> if <var class="var">chr</var> is alphabetic, else <code class="code">#f</code>.
|
||
|
</p></dd></dl>
|
||
|
|
||
|
<a class="index-entry-id" id="index-char_002dnumeric_003f-2"></a>
|
||
|
<dl class="first-deffn">
|
||
|
<dt class="deffn" id="index-char_002dnumeric_003f"><span class="category-def">Scheme Procedure: </span><span><strong class="def-name">char-numeric?</strong> <var class="def-var-arguments">chr</var><a class="copiable-link" href="#index-char_002dnumeric_003f"> ¶</a></span></dt>
|
||
|
<dt class="deffnx def-cmd-deffn" id="index-scm_005fchar_005fnumeric_005fp"><span class="category-def">C Function: </span><span><strong class="def-name">scm_char_numeric_p</strong> <var class="def-var-arguments">(chr)</var><a class="copiable-link" href="#index-scm_005fchar_005fnumeric_005fp"> ¶</a></span></dt>
|
||
|
<dd><p>Return <code class="code">#t</code> if <var class="var">chr</var> is numeric, else <code class="code">#f</code>.
|
||
|
</p></dd></dl>
|
||
|
|
||
|
<a class="index-entry-id" id="index-char_002dwhitespace_003f-2"></a>
|
||
|
<dl class="first-deffn">
|
||
|
<dt class="deffn" id="index-char_002dwhitespace_003f"><span class="category-def">Scheme Procedure: </span><span><strong class="def-name">char-whitespace?</strong> <var class="def-var-arguments">chr</var><a class="copiable-link" href="#index-char_002dwhitespace_003f"> ¶</a></span></dt>
|
||
|
<dt class="deffnx def-cmd-deffn" id="index-scm_005fchar_005fwhitespace_005fp"><span class="category-def">C Function: </span><span><strong class="def-name">scm_char_whitespace_p</strong> <var class="def-var-arguments">(chr)</var><a class="copiable-link" href="#index-scm_005fchar_005fwhitespace_005fp"> ¶</a></span></dt>
|
||
|
<dd><p>Return <code class="code">#t</code> if <var class="var">chr</var> is whitespace, else <code class="code">#f</code>.
|
||
|
</p></dd></dl>
|
||
|
|
||
|
<a class="index-entry-id" id="index-char_002dupper_002dcase_003f-2"></a>
|
||
|
<dl class="first-deffn">
|
||
|
<dt class="deffn" id="index-char_002dupper_002dcase_003f"><span class="category-def">Scheme Procedure: </span><span><strong class="def-name">char-upper-case?</strong> <var class="def-var-arguments">chr</var><a class="copiable-link" href="#index-char_002dupper_002dcase_003f"> ¶</a></span></dt>
|
||
|
<dt class="deffnx def-cmd-deffn" id="index-scm_005fchar_005fupper_005fcase_005fp"><span class="category-def">C Function: </span><span><strong class="def-name">scm_char_upper_case_p</strong> <var class="def-var-arguments">(chr)</var><a class="copiable-link" href="#index-scm_005fchar_005fupper_005fcase_005fp"> ¶</a></span></dt>
|
||
|
<dd><p>Return <code class="code">#t</code> if <var class="var">chr</var> is uppercase, else <code class="code">#f</code>.
|
||
|
</p></dd></dl>
|
||
|
|
||
|
<a class="index-entry-id" id="index-char_002dlower_002dcase_003f-2"></a>
|
||
|
<dl class="first-deffn">
|
||
|
<dt class="deffn" id="index-char_002dlower_002dcase_003f"><span class="category-def">Scheme Procedure: </span><span><strong class="def-name">char-lower-case?</strong> <var class="def-var-arguments">chr</var><a class="copiable-link" href="#index-char_002dlower_002dcase_003f"> ¶</a></span></dt>
|
||
|
<dt class="deffnx def-cmd-deffn" id="index-scm_005fchar_005flower_005fcase_005fp"><span class="category-def">C Function: </span><span><strong class="def-name">scm_char_lower_case_p</strong> <var class="def-var-arguments">(chr)</var><a class="copiable-link" href="#index-scm_005fchar_005flower_005fcase_005fp"> ¶</a></span></dt>
|
||
|
<dd><p>Return <code class="code">#t</code> if <var class="var">chr</var> is lowercase, else <code class="code">#f</code>.
|
||
|
</p></dd></dl>
|
||
|
|
||
|
<dl class="first-deffn">
|
||
|
<dt class="deffn" id="index-char_002dis_002dboth_003f"><span class="category-def">Scheme Procedure: </span><span><strong class="def-name">char-is-both?</strong> <var class="def-var-arguments">chr</var><a class="copiable-link" href="#index-char_002dis_002dboth_003f"> ¶</a></span></dt>
|
||
|
<dt class="deffnx def-cmd-deffn" id="index-scm_005fchar_005fis_005fboth_005fp"><span class="category-def">C Function: </span><span><strong class="def-name">scm_char_is_both_p</strong> <var class="def-var-arguments">(chr)</var><a class="copiable-link" href="#index-scm_005fchar_005fis_005fboth_005fp"> ¶</a></span></dt>
|
||
|
<dd><p>Return <code class="code">#t</code> if <var class="var">chr</var> is either uppercase or lowercase, else
|
||
|
<code class="code">#f</code>.
|
||
|
</p></dd></dl>
|
||
|
|
||
|
<dl class="first-deffn">
|
||
|
<dt class="deffn" id="index-char_002dgeneral_002dcategory"><span class="category-def">Scheme Procedure: </span><span><strong class="def-name">char-general-category</strong> <var class="def-var-arguments">chr</var><a class="copiable-link" href="#index-char_002dgeneral_002dcategory"> ¶</a></span></dt>
|
||
|
<dt class="deffnx def-cmd-deffn" id="index-scm_005fchar_005fgeneral_005fcategory"><span class="category-def">C Function: </span><span><strong class="def-name">scm_char_general_category</strong> <var class="def-var-arguments">(chr)</var><a class="copiable-link" href="#index-scm_005fchar_005fgeneral_005fcategory"> ¶</a></span></dt>
|
||
|
<dd><p>Return a symbol giving the two-letter name of the Unicode general
|
||
|
category assigned to <var class="var">chr</var> or <code class="code">#f</code> if no named category is
|
||
|
assigned. The following table provides a list of category names along
|
||
|
with their meanings.
|
||
|
</p>
|
||
|
<table class="multitable">
|
||
|
<tbody><tr><td width="10%">Lu</td><td width="40%">Uppercase letter</td><td width="10%">Pf</td><td width="40%">Final quote punctuation</td></tr>
|
||
|
<tr><td width="10%">Ll</td><td width="40%">Lowercase letter</td><td width="10%">Po</td><td width="40%">Other punctuation</td></tr>
|
||
|
<tr><td width="10%">Lt</td><td width="40%">Titlecase letter</td><td width="10%">Sm</td><td width="40%">Math symbol</td></tr>
|
||
|
<tr><td width="10%">Lm</td><td width="40%">Modifier letter</td><td width="10%">Sc</td><td width="40%">Currency symbol</td></tr>
|
||
|
<tr><td width="10%">Lo</td><td width="40%">Other letter</td><td width="10%">Sk</td><td width="40%">Modifier symbol</td></tr>
|
||
|
<tr><td width="10%">Mn</td><td width="40%">Non-spacing mark</td><td width="10%">So</td><td width="40%">Other symbol</td></tr>
|
||
|
<tr><td width="10%">Mc</td><td width="40%">Combining spacing mark</td><td width="10%">Zs</td><td width="40%">Space separator</td></tr>
|
||
|
<tr><td width="10%">Me</td><td width="40%">Enclosing mark</td><td width="10%">Zl</td><td width="40%">Line separator</td></tr>
|
||
|
<tr><td width="10%">Nd</td><td width="40%">Decimal digit number</td><td width="10%">Zp</td><td width="40%">Paragraph separator</td></tr>
|
||
|
<tr><td width="10%">Nl</td><td width="40%">Letter number</td><td width="10%">Cc</td><td width="40%">Control</td></tr>
|
||
|
<tr><td width="10%">No</td><td width="40%">Other number</td><td width="10%">Cf</td><td width="40%">Format</td></tr>
|
||
|
<tr><td width="10%">Pc</td><td width="40%">Connector punctuation</td><td width="10%">Cs</td><td width="40%">Surrogate</td></tr>
|
||
|
<tr><td width="10%">Pd</td><td width="40%">Dash punctuation</td><td width="10%">Co</td><td width="40%">Private use</td></tr>
|
||
|
<tr><td width="10%">Ps</td><td width="40%">Open punctuation</td><td width="10%">Cn</td><td width="40%">Unassigned</td></tr>
|
||
|
<tr><td width="10%">Pe</td><td width="40%">Close punctuation</td><td width="10%"></td><td width="40%"></td></tr>
|
||
|
<tr><td width="10%">Pi</td><td width="40%">Initial quote punctuation</td><td width="10%"></td><td width="40%"></td></tr>
|
||
|
</tbody>
|
||
|
</table>
|
||
|
</dd></dl>
|
||
|
|
||
|
<a class="index-entry-id" id="index-char_002d_003einteger-2"></a>
|
||
|
<dl class="first-deffn">
|
||
|
<dt class="deffn" id="index-char_002d_003einteger"><span class="category-def">Scheme Procedure: </span><span><strong class="def-name">char->integer</strong> <var class="def-var-arguments">chr</var><a class="copiable-link" href="#index-char_002d_003einteger"> ¶</a></span></dt>
|
||
|
<dt class="deffnx def-cmd-deffn" id="index-scm_005fchar_005fto_005finteger"><span class="category-def">C Function: </span><span><strong class="def-name">scm_char_to_integer</strong> <var class="def-var-arguments">(chr)</var><a class="copiable-link" href="#index-scm_005fchar_005fto_005finteger"> ¶</a></span></dt>
|
||
|
<dd><p>Return the code point of <var class="var">chr</var>.
|
||
|
</p></dd></dl>
|
||
|
|
||
|
<a class="index-entry-id" id="index-integer_002d_003echar-2"></a>
|
||
|
<dl class="first-deffn">
|
||
|
<dt class="deffn" id="index-integer_002d_003echar"><span class="category-def">Scheme Procedure: </span><span><strong class="def-name">integer->char</strong> <var class="def-var-arguments">n</var><a class="copiable-link" href="#index-integer_002d_003echar"> ¶</a></span></dt>
|
||
|
<dt class="deffnx def-cmd-deffn" id="index-scm_005finteger_005fto_005fchar"><span class="category-def">C Function: </span><span><strong class="def-name">scm_integer_to_char</strong> <var class="def-var-arguments">(n)</var><a class="copiable-link" href="#index-scm_005finteger_005fto_005fchar"> ¶</a></span></dt>
|
||
|
<dd><p>Return the character that has code point <var class="var">n</var>. The integer <var class="var">n</var>
|
||
|
must be a valid code point. Valid code points are in the ranges 0 to
|
||
|
<code class="code">#xD7FF</code> inclusive or <code class="code">#xE000</code> to <code class="code">#x10FFFF</code> inclusive.
|
||
|
</p></dd></dl>
|
||
|
|
||
|
<a class="index-entry-id" id="index-char_002dupcase-2"></a>
|
||
|
<dl class="first-deffn">
|
||
|
<dt class="deffn" id="index-char_002dupcase"><span class="category-def">Scheme Procedure: </span><span><strong class="def-name">char-upcase</strong> <var class="def-var-arguments">chr</var><a class="copiable-link" href="#index-char_002dupcase"> ¶</a></span></dt>
|
||
|
<dt class="deffnx def-cmd-deffn" id="index-scm_005fchar_005fupcase"><span class="category-def">C Function: </span><span><strong class="def-name">scm_char_upcase</strong> <var class="def-var-arguments">(chr)</var><a class="copiable-link" href="#index-scm_005fchar_005fupcase"> ¶</a></span></dt>
|
||
|
<dd><p>Return the uppercase character version of <var class="var">chr</var>.
|
||
|
</p></dd></dl>
|
||
|
|
||
|
<a class="index-entry-id" id="index-char_002ddowncase-2"></a>
|
||
|
<dl class="first-deffn">
|
||
|
<dt class="deffn" id="index-char_002ddowncase"><span class="category-def">Scheme Procedure: </span><span><strong class="def-name">char-downcase</strong> <var class="def-var-arguments">chr</var><a class="copiable-link" href="#index-char_002ddowncase"> ¶</a></span></dt>
|
||
|
<dt class="deffnx def-cmd-deffn" id="index-scm_005fchar_005fdowncase"><span class="category-def">C Function: </span><span><strong class="def-name">scm_char_downcase</strong> <var class="def-var-arguments">(chr)</var><a class="copiable-link" href="#index-scm_005fchar_005fdowncase"> ¶</a></span></dt>
|
||
|
<dd><p>Return the lowercase character version of <var class="var">chr</var>.
|
||
|
</p></dd></dl>
|
||
|
|
||
|
<a class="index-entry-id" id="index-char_002dtitlecase-2"></a>
|
||
|
<dl class="first-deffn">
|
||
|
<dt class="deffn" id="index-char_002dtitlecase"><span class="category-def">Scheme Procedure: </span><span><strong class="def-name">char-titlecase</strong> <var class="def-var-arguments">chr</var><a class="copiable-link" href="#index-char_002dtitlecase"> ¶</a></span></dt>
|
||
|
<dt class="deffnx def-cmd-deffn" id="index-scm_005fchar_005ftitlecase"><span class="category-def">C Function: </span><span><strong class="def-name">scm_char_titlecase</strong> <var class="def-var-arguments">(chr)</var><a class="copiable-link" href="#index-scm_005fchar_005ftitlecase"> ¶</a></span></dt>
|
||
|
<dd><p>Return the titlecase character version of <var class="var">chr</var> if one exists;
|
||
|
otherwise return the uppercase version.
|
||
|
</p>
|
||
|
<p>For most characters these will be the same, but the Unicode Standard
|
||
|
includes certain digraph compatibility characters, such as <code class="code">U+01F3</code>
|
||
|
“dz”, for which the uppercase and titlecase characters are different
|
||
|
(<code class="code">U+01F1</code> “DZ” and <code class="code">U+01F2</code> “Dz” in this case,
|
||
|
respectively).
|
||
|
</p></dd></dl>
|
||
|
|
||
|
<a class="index-entry-id" id="index-scm_005ft_005fwchar"></a>
|
||
|
<dl class="first-deftypefn">
|
||
|
<dt class="deftypefn" id="index-scm_005fc_005fupcase"><span class="category-def">C Function: </span><span><code class="def-type">scm_t_wchar</code> <strong class="def-name">scm_c_upcase</strong> <code class="def-code-arguments">(scm_t_wchar <var class="var">c</var>)</code><a class="copiable-link" href="#index-scm_005fc_005fupcase"> ¶</a></span></dt>
|
||
|
<dt class="deftypefnx def-cmd-deftypefn" id="index-scm_005fc_005fdowncase"><span class="category-def">C Function: </span><span><code class="def-type">scm_t_wchar</code> <strong class="def-name">scm_c_downcase</strong> <code class="def-code-arguments">(scm_t_wchar <var class="var">c</var>)</code><a class="copiable-link" href="#index-scm_005fc_005fdowncase"> ¶</a></span></dt>
|
||
|
<dt class="deftypefnx def-cmd-deftypefn" id="index-scm_005fc_005ftitlecase"><span class="category-def">C Function: </span><span><code class="def-type">scm_t_wchar</code> <strong class="def-name">scm_c_titlecase</strong> <code class="def-code-arguments">(scm_t_wchar <var class="var">c</var>)</code><a class="copiable-link" href="#index-scm_005fc_005ftitlecase"> ¶</a></span></dt>
|
||
|
<dd>
|
||
|
<p>These C functions take an integer representation of a Unicode
|
||
|
codepoint and return the codepoint corresponding to its uppercase,
|
||
|
lowercase, and titlecase forms respectively. The type
|
||
|
<code class="code">scm_t_wchar</code> is a signed, 32-bit integer.
|
||
|
</p></dd></dl>
|
||
|
|
||
|
<p>Characters also have “formal names”, which are defined by Unicode.
|
||
|
These names can be accessed in Guile from the <code class="code">(ice-9 unicode)</code>
|
||
|
module:
|
||
|
</p>
|
||
|
<div class="example">
|
||
|
<pre class="example-preformatted">(use-modules (ice-9 unicode))
|
||
|
</pre></div>
|
||
|
|
||
|
<dl class="first-deffn">
|
||
|
<dt class="deffn" id="index-char_002d_003eformal_002dname"><span class="category-def">Scheme Procedure: </span><span><strong class="def-name">char->formal-name</strong> <var class="def-var-arguments">chr</var><a class="copiable-link" href="#index-char_002d_003eformal_002dname"> ¶</a></span></dt>
|
||
|
<dd><p>Return the formal all-upper-case Unicode name of <var class="var">ch</var>,
|
||
|
as a string, or <code class="code">#f</code> if the character has no name.
|
||
|
</p></dd></dl>
|
||
|
|
||
|
<dl class="first-deffn">
|
||
|
<dt class="deffn" id="index-formal_002dname_002d_003echar"><span class="category-def">Scheme Procedure: </span><span><strong class="def-name">formal-name->char</strong> <var class="def-var-arguments">name</var><a class="copiable-link" href="#index-formal_002dname_002d_003echar"> ¶</a></span></dt>
|
||
|
<dd><p>Return the character whose formal all-upper-case Unicode name is
|
||
|
<var class="var">name</var>, or <code class="code">#f</code> if no such character is known.
|
||
|
</p></dd></dl>
|
||
|
|
||
|
</div>
|
||
|
<hr>
|
||
|
<div class="nav-panel">
|
||
|
<p>
|
||
|
Next: <a href="Character-Sets.html">Character Sets</a>, Previous: <a href="Numbers.html">Numerical data types</a>, Up: <a href="Data-Types.html">Data Types</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Concept-Index.html" title="Index" rel="index">Index</a>]</p>
|
||
|
</div>
|
||
|
|
||
|
|
||
|
|
||
|
</body>
|
||
|
</html>
|