<?xml version="1.0" encoding="ISO-8859-15"?>
<rss version="2.0"><channel>
<title>yhdistetyt merkkien kaltaiset tietotyypit</title>
<link>http://sange.fi/~atehwa/cgi-bin/piki.cgi/</link>
<description>Recent changes in yhdistetyt merkkien kaltaiset tietotyypit</description>
<item><title>yhdistetyt merkkien kaltaiset tietotyypit</title>
<link>http://sange.fi/~atehwa/cgi-bin/piki.cgi/yhdistetyt%20merkkien%20kaltaiset%20tietotyypit</link>
<guid>http://sange.fi/~atehwa/cgi-bin/piki.cgi/#1366012235</guid>
<description>&lt;p&gt;[...]

&lt;p&gt;Samoin kuin Logossa, Lispissäkin numerot ja kirjaimet olivat vain 
atomin (sanan, &lt;del&gt;''symbolin'')&lt;/del&gt; &lt;ins&gt;[symboli]n)&lt;/ins&gt; 
alatyyppi, ja samoin kuin Logossa, Lispissäkin tarvittiin jokin keino 
hajottaa atomeita (sanoja). (Käsittelymme on muuten siinä mielessä 
anakroninen, että Logo on tietenkin suunniteltu Lispin pohjalta eikä 
päin vastoin.) Lisp 1.5 lähestyi atomiytimen rakennetta eri tavalla 
kuin Logo: koko atomien sisäisen rakenteen manipulointi perustui 
yhdelle fissio-operaatiolle (unpack) ja yhdelle fuusio-operaatiolle 
(pack). Esimerkiksi (pack '(yksi kaksi 3)) tuotti atomin 'yksikaksi3 ja 
(unpack 'yksikaksi3) tuotti listan '(y k s i k a k s i 3). Jopa 
sellaiset kummallisuudet kuin (unpack 655) ja (pack '(foo (bar baz))) 
toimivat. Nämä rutiinit olivat edelleen olemassa 
INTERLISP-ympäristössä, josta voisin muuten mainita, että Lisp-koneiden 
INTERLISP-D oli melko varmasti hienoin ohjelmointiympäristö (vaikkei 
välttämättä kieli), jonka maailma on tähän päivään mennessä nähnyt. 

&lt;p&gt;Jossain vaiheessa kuitenkin tästä omalaatuisesta ja yksinkertaisesta 
järjestelmästä luovuttiin, ja Lispiin omaksuttiin yhä enemmän muista 
ohjelmointikielistä tuttuja tyyppejä, jotka tavallaan olivat jo 
tuettuina Lisp:ssä eri muodossa. Merkkijonot olivat todennäköisesti 
ensimmäinen. Niiden hyödyllisyys perustuu siihen, että on olemassa 
monia tilanteita, joissa on paljon rakenteetonta dataa; rakenteettomuus 
viittaa siihen, että se olisi parempi mallittaa atomeilla, mutta 
atomeiden hankalahko ydinreaktiokäsittely aiheuttaa sen, että ne eivät 
ole käteviä suurille tietomäärille. Tarvittiin "helposti muokattavaa" 
atomia, merkkijonoa. Merkkijonot oli mahdollista toteuttaa atomeja 
helpommin erityisesti siksi, että niiden ei tarvinnut olla uniikkeja: 
kaksi samansisältöistä merkkijonoa sai olla eri merkkijono (kaksi 
samannäköistä atomia tai sanaa olivat aina sama atomi/sana). Kun 
merkkijonot oli lisätty kieleen, merkkien lisääminen tuli 
luonnolliseksi. Esimerkiksi nykyisessä Schemessä, jos haluan katsoa, 
onko symbolin ensimmäinen kirjain iso, kirjoitan (char-upper-case? 
(string-ref (symbol-&gt;string symb) 0)). Ja kun merkit ja merkkijonot 
ovat olemassa eivätkä luvut ole enää atomeja, monille alkaa olla 
vaikeaa enää ymmärtää, miksi &lt;del&gt;symbolit&lt;/del&gt; &lt;ins&gt;[symboli]t&lt;/ins&gt; 
ovat olemassa. Ennen kuin olin tutustunut tähän asiaan, näin jossain 
FAQ-vastauksia, joissa kerrottiin, miksi (pack) ja (unpack) olivat 
kiellettyjä ja tuomittavia kapistuksia. 

&lt;p&gt;[...]

</description>
<pubDate>Mon, 15 Apr 2013 07:50:35 +0000</pubDate>
</item>

</channel></rss>
