📄 ref.html
字号:
<p>Pico Lisp does not try very hard to be compatible with traditional Lispsystems. If you are used to some other Lisp dialects, you may notice thefollowing differences:<p><dl><dt>Case Sensitivity<dd>Pico Lisp distinguishes between upper case and lower case characters insymbol names. Thus, <code>CAR</code> and <code>car</code> are different symbols,which was not the case in traditional Lisp systems.<dt><code>QUOTE</code><dd>In traditional Lisp, the <code>QUOTE</code> function returns its<i>first</i> unevaluated argument. In Pico Lisp, on the other hand,<code>quote</code> returns <i>all</i> (unevaluated) argument(s).<dt><code>LAMBDA</code><dd>The <code>LAMBDA</code> function, in some way at the heart of traditionalLisp, is completely missing (and <code>quote</code> is used instead).<dt><code>PROG</code><dd>The <code>PROG</code> function of traditional Lisp, with its GOTO and ENTERfunctionality, is also missing. Pico Lisp's <code>prog</code> function is just asimple sequencer (as <code>PROGN</code> in some Lisps).<dt>Function/Value<dd>In Pico Lisp, a symbol cannot have a value <i>and</i> a function definitionat the same time. Though this is a disadvantage at first sight, it allows acompletely uniform handling of functional data.</dl><p><hr><h3><a name="bugs">Bugs</a></h3><p>The names of the symbols <code>T</code> and <code>NIL</code> violate the <ahref="#conv">naming conventions</a>. They are global symbols, and shouldtherefore start with an asterisk "<code>*</code>". It is too easy to bind themto some other value by mistake:<p><pre><code>(de foo (R S T) ...</code></pre><p>However, <code><a href="refL.html#lint">lint</a></code> will issue a warningin such a case.<p><hr><h2><a name="fun">Function Reference</a></h2><p>This section provides a reference manual for the kernel functions, and someextensions. See the thematically grouped list of indexes below.<p>Though Pico Lisp is a dynamically typed language (resolved at runtime, asopposed to statically (compile-time) typed languages), many functions can onlyaccept and/or return a certain set of data types. For each function, theexpected argument types and return values are described with the followingabbreviations:<p>The primary data types:<p><ul><li><code>num</code> - Number<li><code>sym</code> - Symbol<li><code>lst</code> - List</ul><p>Other (derived) data types<p><ul><li><code>any</code> - Anything: Any primary data type<li><code>flg</code> - Flag: Boolean value (<code>NIL</code> or non-<code>NIL</code>)<li><code>cnt</code> - A count or a small number<li><code>dat</code> - Date: Days since first of March, in the year 0 A.D.<li><code>tim</code> - Time: Seconds since midnight<li><code>obj</code> - Object/Class: A symbol with methods and/or classes<li><code>var</code> - Variable: Either a symbol or a cell<li><code>exe</code> - Executable: A list as executable expression (<code>eval</code>)<li><code>prg</code> - Prog-Body: A list of executable expressions (<code>run</code>)<li><code>fun</code> - Function: Either a number (code-pointer), a symbol (message) or a list (lambda)<li><code>msg</code> - Message: A symbol sent to an object (to invoke a method)<li><code>cls</code> - Class: A symbol defined as an object's class<li><code>typ</code> - Type: A list of <code>cls</code> symbols<li><code>pid</code> - Process ID: A number, the ID of a Unix process<li><code>tree</code> - Database index tree specification<li><code>hook</code> - Database hook object</ul><p><a href="refA.html">A</a><a href="refB.html">B</a><a href="refC.html">C</a><a href="refD.html">D</a><a href="refE.html">E</a><a href="refF.html">F</a><a href="refG.html">G</a><a href="refH.html">H</a><a href="refI.html">I</a><a href="refJ.html">J</a><a href="refK.html">K</a><a href="refL.html">L</a><a href="refM.html">M</a><a href="refN.html">N</a><a href="refO.html">O</a><a href="refP.html">P</a><a href="refQ.html">Q</a><a href="refR.html">R</a><a href="refS.html">S</a><a href="refT.html">T</a><a href="refU.html">U</a><a href="refV.html">V</a><a href="refW.html">W</a><a href="refX.html">X</a><a href="refY.html">Y</a><a href="refZ.html">Z</a><a href="ref_.html">Other</a><p><dl><dt>Symbol Functions<dd><code> <a href="refN.html#new">new</a> <a href="refS.html#sym">sym</a> <a href="refS.html#str">str</a> <a href="refC.html#char">char</a> <a href="refN.html#name">name</a> <a href="refS.html#sp?">sp?</a> <a href="refP.html#pat?">pat?</a> <a href="refF.html#fun?">fun?</a> <a href="refA.html#all">all</a> <a href="refI.html#intern">intern</a> <a href="refE.html#extern">extern</a> <a href="ref_.html#====">====</a> <a href="refL.html#loc">loc</a> <a href="refB.html#box?">box?</a> <a href="refS.html#str?">str?</a> <a href="refE.html#ext?">ext?</a> <a href="refT.html#touch">touch</a> <a href="refZ.html#zap">zap</a> <a href="refL.html#length">length</a> <a href="refS.html#size">size</a> <a href="refF.html#format">format</a> <a href="refC.html#chop">chop</a> <a href="refP.html#pack">pack</a> <a href="refG.html#glue">glue</a> <a href="refP.html#pad">pad</a> <a href="refA.html#align">align</a> <a href="refC.html#center">center</a> <a href="refT.html#text">text</a> <a href="refW.html#wrap">wrap</a> <a href="refP.html#pre?">pre?</a> <a href="refS.html#sub?">sub?</a> <a href="refL.html#low?">low?</a> <a href="refU.html#upp?">upp?</a> <a href="refL.html#lowc">lowc</a> <a href="refU.html#uppc">uppc</a> <a href="refF.html#fold">fold</a> <a href="refV.html#val">val</a> <a href="refG.html#getd">getd</a> <a href="refS.html#set">set</a> <a href="refS.html#setq">setq</a> <a href="refD.html#def">def</a> <a href="refD.html#de">de</a> <a href="refD.html#dm">dm</a> <a href="refR.html#recur">recur</a> <a href="refU.html#undef">undef</a> <a href="refR.html#redef">redef</a> <a href="refD.html#daemon">daemon</a> <a href="refP.html#patch">patch</a> <a href="refX.html#xchg">xchg</a> <a href="refO.html#on">on</a> <a href="refO.html#off">off</a> <a href="refO.html#onOff">onOff</a> <a href="refZ.html#zero">zero</a> <a href="refO.html#one">one</a> <a href="refD.html#default">default</a> <a href="refE.html#expr">expr</a> <a href="refS.html#subr">subr</a> <a href="refL.html#let">let</a> <a href="refL.html#let?">let?</a> <a href="refU.html#use">use</a> <a href="refA.html#accu">accu</a> <a href="refP.html#push">push</a> <a href="refP.html#push1">push1</a> <a href="refP.html#pop">pop</a> <a href="refC.html#cut">cut</a> <a href="refD.html#del">del</a> <a href="refQ.html#queue">queue</a> <a href="refF.html#fifo">fifo</a> <a href="refI.html#idx">idx</a> <a href="refL.html#lup">lup</a> <a href="refC.html#cache">cache</a> <a href="refL.html#locale">locale</a> <a href="refD.html#dirname">dirname</a></code><dt>Property Access<dd><code> <a href="refP.html#put">put</a> <a href="refG.html#get">get</a> <a href="refP.html#prop">prop</a> <a href="ref_.html#=:">=:</a> <a href="ref_.html#:">:</a> <a href="ref_.html#::">::</a> <a href="refP.html#putl">putl</a> <a href="refG.html#getl">getl</a> <a href="refW.html#wipe">wipe</a> <a href="refM.html#meta">meta</a></code><dt>Predicates<dd><code> <a href="refA.html#atom">atom</a> <a href="refP.html#pair">pair</a> <a href="refL.html#lst?">lst?</a> <a href="refN.html#num?">num?</a> <a href="refS.html#sym?">sym?</a> <a href="refF.html#flg?">flg?</a> <a href="refS.html#sp?">sp?</a> <a href="refP.html#pat?">pat?</a> <a href="refF.html#fun?">fun?</a> <a href="refB.html#box?">box?</a> <a href="refS.html#str?">str?</a> <a href="refE.html#ext?">ext?</a> <a href="refB.html#bool">bool</a> <a href="refN.html#not">not</a> <a href="ref_.html#==">==</a> <a href="refN.html#n==">n==</a> <a href="ref_.html#=">=</a> <a href="ref_.html#<>"><></a> <a href="ref_.html#=0">=0</a> <a href="refT.html#=T">=T</a> <a href="refN.html#n0">n0</a> <a href="refN.html#nT">nT</a> <a href="ref_.html#<"><</a> <a href="ref_.html#<="><=</a> <a href="ref_.html#>">></a> <a href="ref_.html#>=">>=</a> <a href="refM.html#match">match</a></code><dt>Arithmetics<dd><code> <a href="ref_.html#+">+</a> <a href="ref_.html#-">-</a> <a href="ref_.html#*">*</a> <a href="ref_.html#/">/</a> <a href="ref_.html#%">%</a> <a href="ref_.html#*/">*/</a> <a href="ref_.html#**">**</a> <a href="refI.html#inc">inc</a> <a href="refD.html#dec">dec</a> <a href="ref_.html#>>">>></a> <a href="refL.html#lt0">lt0</a> <a href="refG.html#ge0">ge0</a> <a href="refG.html#gt0">gt0</a> <a href="refA.html#abs">abs</a> <a href="refB.html#bit?">bit?</a> <a href="ref_.html#&">&</a> <a href="ref_.html#|">|</a> <a href="refX.html#x|">x|</a> <a href="refS.html#sqrt">sqrt</a> <a href="refS.html#seed">seed</a> <a href="refR.html#rand">rand</a> <a href="refM.html#max">max</a> <a href="refM.html#min">min</a> <a href="refL.html#length">length</a> <a href="refS.html#size">size</a> <a href="refA.html#accu">accu</a> <a href="refF.html#format">format</a> <a href="refP.html#pad">pad</a> <a href="refO.html#oct">oct</a> <a href="refH.html#hex">hex</a> <a href="refF.html#fmt64">fmt64</a> <a href="refM.html#money">money</a></code><dt>List Processing<dd><code> <a href="refC.html#car">car</a> <a href="refC.html#cdr">cdr</a> <a href="refC.html#caar">caar</a> <a href="refC.html#cadr">cadr</a> <a href="refC.html#cdar">cdar</a> <a href="refC.html#cddr">cddr</a> <a href="refC.html#caaar">caaar</a> <a href="refC.html#caadr">caadr</a> <a href="refC.html#cadar">cadar</a> <a href="refC.html#caddr">caddr</a> <a href="refC.html#cdaar">cdaar</a> <a href="refC.html#cdadr">cdadr</a> <a href="refC.html#cddar">cddar</a> <a href="refC.html#cdddr">cdddr</a> <a href="refC.html#cadddr">cadddr</a> <a href="refC.html#cddddr">cddddr</a> <a href="refN.html#nth">nth</a> <a href="refC.html#con">con</a> <a href="refC.html#cons">cons</a> <a href="refC.html#conc">conc</a> <a href="refC.html#circ">circ</a> <a href="refR.html#rot">rot</a> <a href="refL.html#list">list</a> <a href="refN.html#need">need</a> <a href="refF.html#full">full</a> <a href="refM.html#make">make</a> <a href="refM.html#made">made</a> <a href="refC.html#chain">chain</a> <a href="refL.html#link">link</a> <a href="refY.html#yoke">yoke</a> <a href="refC.html#copy">copy</a> <a href="refM.html#mix">mix</a> <a href="refA.html#append">append</a> <a href="refD.html#delete">delete</a> <a href="refD.html#delq">delq</a> <a href="refR.html#replace">replace</a> <a href="refI.html#insert">insert</a> <a href="refR.html#remove">remove</a> <a href="refP.html#place">place</a> <a href="refS.html#strip">strip</a> <a href="refS.html#split">split</a> <a href="refR.html#reverse">reverse</a> <a href="refF.html#flip">flip</a> <a href="refT.html#trim">trim</a> <a href="refC.html#clip">clip</a> <a href="refH.html#head">head</a> <a href="refT.html#tail">tail</a> <a href="refS.html#stem">stem</a> <a href="refF.html#fin">fin</a> <a href="refL.html#last">last</a> <a href="refM.html#member">member</a> <a href="refM.html#memq">memq</a> <a href="refM.html#mmeq">mmeq</a> <a href="refS.html#sect">sect</a> <a href="refD.html#diff">diff</a> <a href="refI.html#index">index</a> <a href="refO.html#offset">offset</a> <a href="refA.html#assoc">assoc</a> <a href="refA.html#asoq">asoq</a> <a href="refR.html#rank">rank</a> <a href="refS.html#sort">sort</a> <a href="refU.html#uniq">uniq</a> <a href="refG.html#group">group</a> <a href="refL.html#length">length</a> <a href="refS.html#size">size</a> <a href="refV.html#val">val</a> <a href="refS.html#set">set</a> <a href="refX.html#xchg">xchg</a> <a href="refP.html#push">push</a> <a href="refP.html#push1">push1</a> <a href="refP.html#pop">pop</a> <a href="refC.html#cut">cut</a> <a href="refQ.html#queue">queue</a> <a href="refF.html#fifo">fifo</a> <a href="refI.html#idx">idx</a> <a href="refB.html#balance">balance</a> <a href="refG.html#get">get</a> <a href="refF.html#fill">fill</a> <a href="refA.html#apply">apply</a></code><dt>Control Flow<dd><code> <a href="refL.html#load">load</a> <a href="refA.html#args">args</a> <a href="refN.html#next">next</a> <a href="refA.html#arg">arg</a>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -