1
0
Fork 0
cl-sites/lisp-docs.github.io/cl-language-reference/chap-25/cf-b-the-external-environment.html

96 lines
39 KiB
HTML
Raw Normal View History

2024-03-13 23:00:32 +01:00
<!doctype html>
<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-chap-25/cf-b-the-external-environment" data-has-hydrated="false">
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.0.1">
<title data-rh="true">25.1 The External Environment | Common Lisp (New) Language Reference</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://lisp-docs.github.io/cl-language-reference/img/1024px-Lisp_logo.svg.png"><meta data-rh="true" name="twitter:image" content="https://lisp-docs.github.io/cl-language-reference/img/1024px-Lisp_logo.svg.png"><meta data-rh="true" property="og:url" content="https://lisp-docs.github.io/cl-language-reference/chap-25/cf-b-the-external-environment"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="google-site-verification" content="Vzaw013_bfdKeUVG89Ch3W1zC9_vH9ID2dPB9Dz0vr0"><meta data-rh="true" name="docusaurus_version" content="current"><meta data-rh="true" name="docusaurus_tag" content="docs-default-current"><meta data-rh="true" name="docsearch:version" content="current"><meta data-rh="true" name="docsearch:docusaurus_tag" content="docs-default-current"><meta data-rh="true" property="og:title" content="25.1 The External Environment | Common Lisp (New) Language Reference"><meta data-rh="true" name="description" content="25.1.1 Top level loop"><meta data-rh="true" property="og:description" content="25.1.1 Top level loop"><link data-rh="true" rel="icon" href="../img/favicon.ico"><link data-rh="true" rel="canonical" href="cf-b-the-external-environment.html"><link data-rh="true" rel="alternate" href="cf-b-the-external-environment.html" hreflang="en"><link data-rh="true" rel="alternate" href="cf-b-the-external-environment.html" hreflang="x-default"><link data-rh="true" rel="preconnect" href="https://C1F2Q5VM6X-dsn.algolia.net" crossorigin="anonymous"><link rel="preconnect" href="https://www.google-analytics.com">
<link rel="preconnect" href="https://www.googletagmanager.com">
<script async src="https://www.googletagmanager.com/gtag/js?id=G-8TJCE4NSF8"></script>
<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-8TJCE4NSF8",{})</script>
<link rel="search" type="application/opensearchdescription+xml" title="Common Lisp (New) Language Reference" href="../opensearch.xml"><link rel="stylesheet" href="../assets/css/styles.f13b59fe.css">
<script src="../assets/js/runtime~main.02699c25.js" defer="defer"></script>
<script src="../assets/js/main.4f0a7a76.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="cf-b-the-external-environment.html#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a href="../../index.html" target="_blank" rel="noopener noreferrer" class="navbar__brand"><div class="navbar__logo"><img src="../img/logo.svg" alt="Lisp Logo" class="themedComponent_mlkZ themedComponent--light_NVdE"><img src="../img/logo.svg" alt="Lisp Logo" class="themedComponent_mlkZ themedComponent--dark_xIcU"></div><b class="navbar__title text--truncate">Common Lisp Docs</b></a><a href="../../docs/tutorial/index.html" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Tutorial</a><a href="../index.html" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Technical Reference</a><a href="../../docs/whylisp.html" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Why Lisp?</a><a href="../../docs/howto.html" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Guides</a></div><div class="navbar__items navbar__items--right"><a href="../../docs/contribute.html" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Contribute!</a><a href="../../docs/help.html" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Getting Help</a><a href="../../docs/about.html" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">About</a><a href="../../blog.html" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Blog</a><a href="https://github.com/lisp-docs" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a><div class="toggle_vylO colorModeToggle_DEke"><button class="clean-btn toggleButton_gllP toggleButtonDisabled_aARS" type="button" disabled="" title="Switch between dark and light mode (currently light mode)" aria-label="Switch between dark and light mode (currently light mode)" aria-live="polite"><svg viewBox="0 0 24 24" width="24" height="24" class="lightToggleIcon_pyhR"><path fill="currentColor" d="M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M
<!-- -->
<!-- -->
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="2511-top-level-loop">25.1.1 Top level loop<a href="cf-b-the-external-environment.html#2511-top-level-loop" class="hash-link" aria-label="Direct link to 25.1.1 Top level loop" title="Direct link to 25.1.1 Top level loop"></a></h2>
<!-- -->
<p>The top level loop is the Common Lisp mechanism by which the user normally interacts with the Common Lisp system. This loop is sometimes referred to as the <em>Lisp read-eval-print loop</em> because it typically consists of an endless loop that reads an expression, evaluates it and prints the results.</p>
<p>The top level loop is not completely specified; thus the user interface is <span><i>implementation-defined</i></span>. The top level loop prints all values resulting from the evaluation of a <span><i>form</i></span>. Figure 251 lists variables that are maintained by the <em>Lisp read-eval-print loop</em>.</p>
<p>|</p><p><strong>* + / -</strong> </p><p><strong>** ++ //</strong> </p><p><strong>*** +++ ///</strong></p>|<p></p>
<p>| :- |</p>
<p><strong>Figure 251. Variables maintained by the Read-Eval-Print Loop</strong></p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="2512-debugging-utilities">25.1.2 Debugging Utilities<a href="cf-b-the-external-environment.html#2512-debugging-utilities" class="hash-link" aria-label="Direct link to 25.1.2 Debugging Utilities" title="Direct link to 25.1.2 Debugging Utilities"></a></h2>
<!-- -->
<p>Figure 252 shows <span><i>defined names</i></span> relating to debugging.</p>
<p>|</p><p><strong>*debugger-hook* documentation step</strong> </p><p><strong>apropos dribble time</strong> </p><p><strong>apropos-list ed trace</strong> </p><p><strong>break inspect untrace describe invoke-debugger</strong></p>|<p></p>
<p>| :- |</p>
<p><strong>Figure 252. Defined names relating to debugging</strong></p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="2513-environment-inquiry">25.1.3 Environment Inquiry<a href="cf-b-the-external-environment.html#2513-environment-inquiry" class="hash-link" aria-label="Direct link to 25.1.3 Environment Inquiry" title="Direct link to 25.1.3 Environment Inquiry"></a></h2>
<!-- -->
<p>Environment inquiry <span><i>defined names</i></span> provide information about the hardware and software configuration on which a Common Lisp program is being executed.</p>
<p>Figure 253 shows <span><i>defined names</i></span> relating to environment inquiry.</p>
<p>|<strong>*features* machine-instance short-site-name lisp-implementation-type machine-type software-type lisp-implementation-version machine-version software-version long-site-name room</strong>|</p>
<p>| :- |</p>
<p><strong>Figure 253. Defined names relating to environment inquiry.</strong></p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="2514-time">25.1.4 Time<a href="cf-b-the-external-environment.html#2514-time" class="hash-link" aria-label="Direct link to 25.1.4 Time" title="Direct link to 25.1.4 Time"></a></h2>
<!-- -->
<p>Time is represented in four different ways in Common Lisp: <span><i>decoded time</i></span>, <span><i>universal time</i></span>, <span><i>internal time</i></span>, and seconds. <span><i>Decoded time</i></span> and <span><i>universal time</i></span> are used primarily to represent calendar time, and are precise only to one second. <span><i>Internal time</i></span> is used primarily to represent measurements of</p>
<p>computer time (such as run time) and is precise to some <span><i>implementation-dependent</i></span> fraction of a second called an <span><i>internal time unit</i></span>, as specified by <span><b>internal-time-units-per-second</b></span>. An <span><i>internal time</i></span> can be used for either <span><i>absolute</i></span> and <em>relative time</em> measurements. Both a <span><i>universal time</i></span> and a <span><i>decoded time</i></span> can be used only for <em>absolute time</em> measurements. In the case of one function, <span><b>sleep</b></span>, time intervals are represented as a non-negative <em>real</em> number of seconds.</p>
<p>Figure 254 shows <span><i>defined names</i></span> relating to <span><i>time</i></span>.</p>
<p>|</p><p><strong>decode-universal-time get-internal-run-time</strong> </p><p><strong>encode-universal-time get-universal-time</strong> </p><p><strong>get-decoded-time internal-time-units-per-second</strong> </p><p><strong>get-internal-real-time sleep</strong></p>|<p></p>
<p>| :- |</p>
<p><strong>Figure 254. Defined names involving Time.</strong></p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="25141-decoded-time">25.1.4.1 Decoded Time<a href="cf-b-the-external-environment.html#25141-decoded-time" class="hash-link" aria-label="Direct link to 25.1.4.1 Decoded Time" title="Direct link to 25.1.4.1 Decoded Time"></a></h3>
<!-- -->
<p>A <span><i>decoded time</i></span> is an ordered series of nine values that, taken together, represent a point in calendar time (ignoring <span><i>leap seconds</i></span>):</p>
<p><strong>Second</strong></p>
<p>An <em>integer</em> between 0 and 59, inclusive.</p>
<p><strong>Minute</strong></p>
<p>An <em>integer</em> between 0 and 59, inclusive.</p>
<p><strong>Hour</strong></p>
<p>An <em>integer</em> between 0 and 23, inclusive.</p>
<p><strong>Date</strong></p>
<p>An <em>integer</em> between 1 and 31, inclusive (the upper limit actually depends on the month and year, of course).</p>
<p><strong>Month</strong></p>
<p>An <em>integer</em> between 1 and 12, inclusive; 1 means January, 2 means February, and so on; 12 means December.</p>
<p><strong>Year</strong></p>
<p>An <em>integer</em> indicating the year A.D. However, if this <em>integer</em> is between 0 and 99, the “obvious” year is used; more precisely, that year is assumed that is equal to the <em>integer</em> modulo 100 and within fifty years of the current year (inclusive backwards and exclusive forwards). Thus, in the year 1978, year 28 is 1928 but year 27 is 2027. (Functions that return time in this format always return a full year number.)</p>
<p><strong>Day of week</strong></p>
<p>An <em>integer</em> between 0 and 6, inclusive; 0 means Monday, 1 means Tuesday, and so on; 6 means Sunday.</p>
<p><strong>Daylight saving time flag</strong></p>
<p>A <span><i>generalized boolean</i></span> that, if <span><i>true</i></span>, indicates that daylight saving time is in effect.</p>
<p><strong>Time zone</strong></p>
<p>A <span><i>time zone</i></span>.</p>
<p>Figure 255 shows <span><i>defined names</i></span> relating to <span><i>decoded time</i></span>.</p>
<p>|<strong>decode-universal-time get-decoded-time</strong>|</p>
<p>| :- |</p>
<p><strong>Figure 255. Defined names involving time in Decoded Time.</strong></p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="25142-universal-time">25.1.4.2 Universal Time<a href="cf-b-the-external-environment.html#25142-universal-time" class="hash-link" aria-label="Direct link to 25.1.4.2 Universal Time" title="Direct link to 25.1.4.2 Universal Time"></a></h3>
<!-- -->
<p><span><i>Universal time</i></span> is an <em>absolute time</em> represented as a single non-negative <em>integer</em>—the number of seconds since midnight, January 1, 1900 GMT (ignoring <span><i>leap seconds</i></span>). Thus the time 1 is 00:00:01 (that is, 12:00:01 a.m.) on January 1, 1900 GMT. Similarly, the time 2398291201 corresponds to</p>
<p>time 00:00:01 on January 1, 1976 GMT. Recall that the year 1900 was not a leap year; for the purposes of Common Lisp, a year is a leap year if and only if its number is divisible by 4, except that years divisible by 100 are not leap years, except that years divisible by 400 are leap years.</p>
<p>Therefore the year 2000 will be a leap year. Because <span><i>universal time</i></span> must be a non-negative <em>integer</em> , times before the base time of midnight, January 1, 1900 GMT cannot be processed by Common Lisp.</p>
<p>|</p><p><strong>decode-universal-time get-universal-time</strong> </p><p><span><b>encode-universal-time</b></span></p>|<p></p>
<p>| :- |</p>
<p><strong>Figure 256. Defined names involving time in Universal Time.</strong></p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="25143-internal-time">25.1.4.3 Internal Time<a href="cf-b-the-external-environment.html#25143-internal-time" class="hash-link" aria-label="Direct link to 25.1.4.3 Internal Time" title="Direct link to 25.1.4.3 Internal Time"></a></h3>
<!-- -->
<p><span><i>Internal time</i></span> represents time as a single <em>integer</em> , in terms of an <span><i>implementation-dependent</i></span> unit called an <span><i>internal time unit</i></span>. Relative time is measured as a number of these units. Absolute time is relative to an arbitrary time base.</p>
<p>Figure 257 shows <span><i>defined names</i></span> related to <span><i>internal time</i></span>.</p>
<p>|</p><p><strong>get-internal-real-time internal-time-units-per-second</strong> </p><p><span><b>get-internal-run-time</b></span></p>|<p></p>
<p>| :- |</p>
<p><strong>Figure 257. Defined names involving time in Internal Time.</strong></p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="25144-seconds">25.1.4.4 Seconds<a href="cf-b-the-external-environment.html#25144-seconds" class="hash-link" aria-label="Direct link to 25.1.4.4 Seconds" title="Direct link to 25.1.4.4 Seconds"></a></h3>
<!-- -->
<!-- -->
<p>One function, <span><b>sleep</b></span>, takes its argument as a non-negative <em>real</em> number of seconds. Informally, it may be useful to think of this as a <em>relative universal time</em>, but it differs in one important way: <span><i>universal times</i></span> are always non-negative <em>integers</em>, whereas the argument to <span><b>sleep</b></span> can be any kind of non-negative <em>real</em>, in order to allow for the possibility of fractional seconds.</p>
<p>|<strong>sleep</strong>|</p>
<p>| :- |</p>
<p><strong>Figure 258. Defined names involving time in Seconds.</strong></p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/lisp-docs/cl-language-reference/tree/main/docs/chap-25/cf-b-the-external-environment.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_Z9Sw" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div><div class="col lastUpdated_vwxv"><span class="theme-last-updated">Last updated<!-- --> by <b>daninus14</b></span></div></div></footer></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="../chap-24/ce-c-dictionary/with-compilation-unit_macro.html"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">with-compilation-unit</div></a><a class="pagination-nav__link pagination-nav__link--next" href="../category/252-environment-dictionary.html"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">25.2 Environment Dictionary</div></a></nav></div></div><div class="col col--3"><div class="tableOfContents_bqdL thin-scrollbar theme-doc-toc-desktop"><ul class="table-of-contents table-of-contents__left-border"><li><a href="cf-b-the-external-environment.html#2511-top-level-loop" class="table-of-contents__link toc-highlight">25.1.1 Top level loop</a></li><li><a href="cf-b-the-external-environment.html#2512-debugging-utilities" class="table-of-contents__link toc-highlight">25.1.2 Debugging Utilities</a></li><li><a href="cf-b-the-external-environment.html#2513-environment-inquiry" class="table-of-contents__link toc-highlight">25.1.3 Environment Inquiry</a></li><li><a href="cf-b-the-external-environment.html#2514-time" class="table-of-contents__link toc-highlight">25.1.4 Time</a><ul><li><a href="cf-b-the-external-environment.html#25141-decoded-time" class="table-of-contents__link toc-highlight">25.1.4.1 Decoded Time</a></li><li><a href="cf-b-the-external-environment.html#25142-universal-time" class="table-of-contents__link toc-highlight">25.1.4.2 Universal Time</a></li><li><a href="cf-b-the-external-environment.html#25143-internal-time" class="table-of-contents__link toc-highlight">25.1.4.3 Internal Time</a></li><li><a href="cf-b-the-external-environment.html#25144-seconds" class="table-of-contents__link toc-highlight">25.1.4.4 Seconds</a></li></ul></li></ul></div></div></div></div></main></div></div></div><footer class="footer footer--dark"><div class="container container-fluid"><div class="row footer__links"><div class="col footer__col"><div class="footer__title">Docs</div><ul class="footer__items clean-list"><li class="footer__item"><a href="../../docs/tutorial.html" target="_blank" rel="noopener noreferrer" class="footer__link-item">Common Lisp Tutorial</a></li><li class="footer__item"><a href="../index.html" target="_blank" rel="noopener noreferrer" class="footer__link-item">Common Lisp Technical Reference</a></li><li class="footer__item"><a href="../../docs/help.html" target="_blank" rel="noopener noreferrer" class="footer__link-item">Help</a></li></ul></div><div class="col footer__col"><div class="footer__title">Community</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/common-lisp" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li><li class="footer__item"><a href="https://discord.gg/hhk46CE" target="_blank" rel="noopener noreferrer" class="
</body>
</html>