LispMe Programování a vytvá#ení aplikací s LispMe Radek Hnilica
Obsah 1. LispMe .............................................................................................................. 1 Datové typy v LispMe ..................................................................................... 1 Zabudované datové typy .......................................................................... 1 Další typy .............................................................................................. 3 Externí knihovny ............................................................................................ 4 Bunny-Test ............................................................................................ 4 2. Vzorová kapitola ................................................................................................. 5 Sekce ............................................................................................................ 5 3. Knihovny funkcí/procedur .....................................................................................6 Práce s databází .............................................................................................. 6 Práce s databází jako celkem .................................................................... 6 Záznamy v databázi ................................................................................ 8 R#zné, zatím nezat#íd#né funkce ....................................................................... 9 hotsync-info ........................................................................................... 9 gc .........................................................................................................9 Datum a #as ...................................................................................................9 Datový typ date ...................................................................................... 9 date? .................................................................................................. 9 make-date .......................................................................................... 10 Nepopsané objekty .......................................................................................... 10 date+ .................................................................................................. 10 number? .............................................................................................. 10 integer (deprecated) ............................................................................ 10 abs ...................................................................................................... 10 acos .................................................................................................... 10 acosh .................................................................................................. 11 and ...................................................................................................... 11 angle .................................................................................................. 11 append ................................................................................................ 11 apply .................................................................................................. 11 asin .................................................................................................... 11 asinh .................................................................................................. 11 assoc, assq, assv .............................................................................. 11 atan .................................................................................................... 11 atanh .................................................................................................. 12 battery-info .................................................................................... 12 begin .................................................................................................. 12 bit-and .............................................................................................. 12 bit-not .............................................................................................. 12 Logický sou#et, bit po bitu bit-or .......................................................... 13 bit-shift .......................................................................................... 13 --bitmap-- ........................................................................................ 13 boolean? ............................................................................................ 13 buf-get-cstr .................................................................................... 13 buf-get-date .................................................................................... 13 buf-get-f32 ...................................................................................... 13 buf-get-64 ........................................................................................ 13 buf-get-s16 ...................................................................................... 13 buf-get-s32 ...................................................................................... 14 buf-get-s8 ........................................................................................ 14 buf-get-time .................................................................................... 14 buf-get-ts ........................................................................................ 14 buf-get-u16 ...................................................................................... 14 buf-get-u32 ...................................................................................... 14 buf-get-u8 ........................................................................................ 14
iii
LispMe
buf-set-cstr! .................................................................................. 14 buf-set-date! .................................................................................. 14 buf-set-f32! .................................................................................... 15 buf-set-f64! .................................................................................... 15 buf-set-s16! .................................................................................... 15 buf-set-s32! .................................................................................... 15 buf-set-s8! ...................................................................................... 15 c…r ...................................................................................................... 15 callcc ................................................................................................ 15 car ...................................................................................................... 15 case .................................................................................................... 15 cdr ...................................................................................................... 15 --ceiling-- ...................................................................................... 16 char->integer .................................................................................. 16 char? .................................................................................................. 16 circular? .......................................................................................... 16 close-input-port ............................................................................ 16 close-netlib .................................................................................... 16 close-output-port .......................................................................... 16 close-serial .................................................................................... 16 complex? ............................................................................................ 16 cond .................................................................................................... 17 conjugate .......................................................................................... 17 cons .................................................................................................... 17 continuation? .................................................................................. 17 cos ...................................................................................................... 17 cosh .................................................................................................... 17 --crash-- .......................................................................................... 17 ctl-enter .......................................................................................... 17 --ctl-get-label-- .......................................................................... 17 --ctl-get-val-- .............................................................................. 17 ctl-hit .............................................................................................. 18 ctl-repeat ........................................................................................ 18 ctl-select ........................................................................................ 18 --template-- .................................................................................... 18 Speciální forma define ......................................................................... 18 eq? ...................................................................................................... 18 eqv? .................................................................................................... 18 equal? ................................................................................................ 18 gensym ................................................................................................ 19 if ........................................................................................................ 19 integer->char .................................................................................. 19 integer? ............................................................................................ 19 length ................................................................................................ 19 list .................................................................................................... 19 list-ref ............................................................................................ 19 list->string .................................................................................... 19 list->vector .................................................................................... 20 magnitude .......................................................................................... 20 make-string ...................................................................................... 20 make-vector ...................................................................................... 20 map ...................................................................................................... 20 max ...................................................................................................... 20 member, memq, memv ............................................................................ 20 --min-- .............................................................................................. 20 not ...................................................................................................... 20 null? .................................................................................................. 21 object->string ................................................................................ 21
iv
LispMe
or ........................................................................................................ 21 pair? .................................................................................................. 21 real? .................................................................................................. 21 reverse .............................................................................................. 21 set-car! ............................................................................................ 21 set-cdr! ............................................................................................ 21 string->list .................................................................................... 21 string->object ................................................................................ 22 string-append .................................................................................. 22 string-length .................................................................................. 22 string-lower .................................................................................... 22 string-ref ........................................................................................ 22 string-set! ...................................................................................... 22 string=! ............................................................................................ 22 string? .............................................................................................. 22 --substring-- .................................................................................. 22 symbol? .............................................................................................. 22 vector ................................................................................................ 23 Porovnání srovnatelných objekt# <, # > # ............................................. 23 = .......................................................................................................... 23 * .......................................................................................................... 23
v
Seznam tabulek 3.1. Druh baterie .....................................................................................................12
vi
Kapitola 1. LispMe Implementace jazyka Scheme pro po#íta#/diá# Palm Pilot chapter id="lispme" xreflabel="LispMe" rcsinfo="$Id: chapter-template,v 1.2 2005/05/03 08:03:36 radek Exp $" print.normalpsselect -p67-71 /home/radek/cache/book/programming/author-draft.ps|foldprn -s 8 print.elevenpsselect -p78-108 /home/radek/cache/book/programming/author-draft.ps|foldprn -s 36 vtipný epigraf Abstrakt kapitoly, je-li.
Odkazy: • LispMe Home Page [http://lispme.de/] • lispme [http://groups.yahoo.com/group/lispme/] diskusní skupina na Yahoo Text kapitoly p#ed sekcemi.
Datové typy v LispMe V této #ásti popisuji datové typy které máme v LispMe k dispozici. Jedná se jak o datové typy zabudované, tak i složené jenž jsou vlastn# seznamy.
Zabudované datové typy Zabudované datové typy jsou zabudovány do samotného LispMe a jsou p#ístupny FIXME: dopsat Jedná se ve zkratce o tyto typy, které budou rozepsány dále.
P#ehled zabudovaných datových typ#: • number • .
Logické hodnoty (boolean) Typ boolean slouží k vyjád#ení logických hodnot pravda (#t) a nepravda (#f). K dispozici máme dv# hodnoty (symboly) jenž reprezentují možné pravdivostní hodnoty, již zím#né: • #t — pravda (true) • #f — nepravda (false) Logické hodnoty m#žeme zapsat p#ímo, výše uvedenými symboly, nebo vznikají jako výsledek porovnání jiných hodnot rela#ními operátory (funkcemi) <, #, >, # a =. Rovn#ž funkce jejichž jméno kon#í znakem '?', jako nap#íklad number?, vrací podle konvence hodnoty typu boolean. Nad logickými hodnotami m#žeme použít t#i základní logické funkce: and, not a or.
Poznámka V logických operacích se jako pravda považuje jen symbol #t. Jako nepravda pak #f nebo jakýkoliv jiný symbol mimo #t
Poznámka Upozor#uji že podle p#edchozí poznámky je pro ú#ely logických operací hondota prázdného seznamu () pravdivá. 1
LispMe
Související: #f, #t, <, #, >, #, =, and, boolean?, case, cond, eq?, eqv?, equal?, if, not, or.
Symboly (symbols) Symboly jsou pojmenované elementy které reprezentují samy sebe. Symboly používáme pro ozna#ení prom#nných a funkcí. Posat symboly lépe. (symbol? 'my-symbol) # #t (eq? 'a 'a) # #t Související: eq?, gensym, symbol?.
#ísla number LispMe neimplementuje celou „#íselnou v#ž“ jazyka Scheme, ale ne v#tšinu našich pokus# nám jeho #íslené typy budou sta#it. Vztahy mezi jednotlivými #íselnými typy se pokouším znázornít v následujícím schémátku. number complex real integer (integer? -4) # #t (real? -4) # #t (complex? -4) # #t (number? -4) # #t Jak z obrázku vyplývá, celá #ísla jsou rozeznávána také jako #ísla reálná, komplexní a jako #ísla v#bec. Jediný typ z „#íselné v#že“, který není implementován jsou #ísla racionální, tedy zlomky. Autor LispMe se k nim vyjd#uje slovy: „whose usefulness I deny, IMHO“ a proto je neimplementoval.
Celá #ísla integer Celá #ísla se znaménkem jsou reprezentována intern# dv#ma zp#soby. Jako nativní typ o velikosti 15 bit#, jenž nám dovoluje reprezentovat #ísla v rozsahu od -16384 do 16383 v #etn# krajních mezí. Všechna v#tší #ísla jsou vyjád#ena jako velká #ísla v posloupnosti bu#ek na hald#. Jejich velikost je omezena jen velikostí dostupné pam#ti. M#žem tedy pracovat s celými #ísly jenž jsou vyjád#eny až stovkami #íslic. Posat #ísla lépe.
(* 123456789012345 5679129879012 9129168799236) # 640070800391029224221274832700
Reálná #ísla, #ísla v plovoucí #ádové #arce real Reálná #ísla jsou uložena jako #ísla v plovoucí #ádové #árce v 64 bitech podle IEEE-754. Související: real?
Komplexní #ísla complex Komplexní #ísla jsou uložena jako pár dvou #ísel reálných. Jedno reprezentuje reálnou složku a druhé imaginární složku komplexního #ísla. (complex? 2+3i) # #t (complex? 1.3-0.6i) # #t Související: complex?
2
LispMe
Znaky char FIXME: dopsat. Související: <, #, >, #, char->integer, char?, eq?, integer->char, max, min.
#et#zce znak# string FIXME: dopsat. Sovisející: <, #, >, #, list->string, max, make-string, min, object->string, string->list, string->object, string-append, string-length, string-lower, string-ref, string-set!, string?, substring
Seznamy list a páry pair Páry jsou základním stavebním kamenem seznam#. Pár je dvojce (car, cdr), první #ást zvaná z historických d#vod# car (Content of Address Register) ukazuje na libovolný objekt, v seznamu pak na prvek seznamu. Druhá #ást nazývaná z historických d#vod# cdr (Content of Decrement Register) ukazuje na libovolný objekt v seznamu pak na následující položku seznamu. Související: '(), append, assoc, assq, assv, c…r, car, cdr, cons, equal?, length, list, list->string, list-ref, map, member, memq, memv, null?, pair?, reverse, setcar!, set-cdr!, string->list
Vektory vector FIXME: Související: list->vector, make-vector, vector,
closure FIXME: Související: apply
Další typy FIXME: Virtuální typy nejsou existující typy. Zavádím je jen pro pot#eby tohoto manuálu. Pod pojmem virtuální typ rozumím vlastn# parametr funkce. Nap#íklad virtuální typ dbname je ve skute#nosti string. V tomto manuálu používám dbname abych ozna#il že tento konkrétní #et#zec p#edávaný jako parametr funkci, #i vracený jako hodnota, není jakýkoliv #et#zec, ale název databáze. FIXME: dopsat;
bmap FIXME: dopsat
Handler databáze (dbref) Reference/odkaz na otev#enou databázi, databázový handler.
Ozna#ení tv#rce databáze (creator) FIXME: dopsat
3
LispMe
Ozna#ení typu databáze (type) FIXME: dopsat
#íslo záznamu v databázi recnum FIXME: dopsat
Synchroniza#ní jméno hotsync-name FIXME: dopsat
Externí knihovny Knihovny, které nejsou sou#ástí standardní instalace LispMe.
Bunny-Test Knihovna pro testování, tzv. unit-test. Jedná se o nástroj extrémního programování.FIXME: P#ed nahráním této knihovny je t#eba nahrát knihovnu SystemLib. Postup použití je tedy následující. 1.
Nahrajeme knihovnu SystemLib.
2.
Nahrajeme knihovnu Bunny-Test.
3.
Nahrajeme testovaný modul/knihovnu.
4.
Spustíme testy.
4
Kapitola 2. Vzorová kapitola chapter id="chapter.template" rcsinfo="$Id: chapter-template,v 1.2 2005/05/03 08:03:36 radek Exp $" vtipný epigraf Abstrakt kapitoly, je-li.
Odkazy: • FIXME: [] • FIXME: [] Text kapitoly p#ed sekcemi.
Sekce FIXME: Obsah sekce
5
Kapitola 3. Knihovny funkcí/procedur Popis n#kterých knihoven #i funkcí a jejich použití.
Práce s databází Nejd#íve pár slov k tomu co to je databáze. Databáze v po#íta#ích palm a jejich systému je jediný zp#sob ukládání dat. Neexistují zde soubory jak je známe z jiných systém#, jen databáze. Takže co to tedy ta databáze je? Je to množina záznam#, která má n#kolik d#ležitých atribut# jsou jimi zejména: • name (název) — jméno databáze. Podle jména databázi identifikujeme. Jméno je #et#zec znak# v #etn# bílých a speciálních. • type (typ) — typ databáze je 4 bytový #et#zec • creator (tv#rce) — 4 byty ozna#ení tv#rce databáze • FIXME: doplnit p#ípadné další atributy FIXME:
Práce s databází jako celkem Ru#n# udržovaný seznam funkcí. Tento seznam je jen jakýsi rychlý #ehled funkcí, p#esn#ji prototyp# jejich volání s krátkým popisem. Funkce jsou #azeny abecedn#.
Funkce: • (dm-close-db dbref) — uzav#ení otev#ené databáze • (dm-create-db creator dbtype resource) — vytvo#ení nové databáze • (dm-db-info dbref) => ( dbmode attributes resource dbtype creator number creation modification backup) — zjištení informací o otev#ené databázi • (dm-db-list dbtype creator) # list — seznam jmen databází které vyhovují podmínce dbtype, creator. • (dm-db-size dbref) # (records bytes bytes) — zjišt#ní jak veliký prostor databáze zabírá, její velikost • (dm-delete-db ) # boolean — odstran#ní existující databáze, smazání • (dm-open-db dbmode) # dbref — otev#ení existující databáze Umíme-li databázi vyhledat, m#žeme se zabývat zjiš#ováním informací o ní. M#žeme zjistit její velikost.
Poznámka #
Vyhledávání databází (dm-db-list) (dm-db-list dbtype creator) # list Pokud nevíme jak se databáze, se kterou pot#ebujeme pracovat, jmenuje, nem#žeme s ní nic d#lat. Pro tento p#ípad je tu funkce dm-db-list, která nám vrátí seznam jmen databází které vyhovují zadané podmínce. Jako podmínka jsou funkci p#edávány dva parametry: • dbtype — #et#zec 4 byte ozna#ujících typ databáze • creator — #et#zec 4 byte ozna#ujících tv#rce databáze Mezi základní operace pat#í vyhledání databáze dm-db-list. Funkci p#edáme parametry type a creator, což jsou #ty#znakové #et#zce. Zp#t dostaneme seznam databází které vyhovují stanoveným podmínkám.
6
Knihovny funkcí/procedur
(dm-db-list type creator) # list (dm-db-list "" "Plkr") # ("PluckerUserGuide" "PlkrKeyboardMap" "PlkrDocList"\ "Plkr-PluckerUserGuide" "Plucker") Jak je na p#íkladu vid#t, pokud je parametr zadán jako prázdný #et#zec, vyhoví tento všem databázím. FIXME:
Vytvo#ení nové databáze (dm-create-db) (dm-create-db creator dbtype resource) Vytvo#ení a odstran#ní databáze provedeme funkcemi dm-create-db a dm-delete-db. Parametrem je název databáze a v p#ípad# vytvá#ení další atributy. (dm-create-db "Pokus" "RdkH" "data" #f) # #t
Poznámka Vytvo#ení databáze tuto automaticky neotev#e. K tomu použijeme funkci dm-open-db.
Osdstran#ní databáze, smazání (dm-delete-db) (dm-delete-db ) # boolean .
Otev#ení a uzav#eno existující databáze (dm-open-db), (dmclose-db) (dm-close-db dbref) (dm-open-db dbmode) # dbref P#ed p#ístupem k záznam#m, nebo zjiš#ování podrobností o databázi, je tuto nutno otev#ít. K tomu se používá funkce dm-open-db. Funkci se p#edávají dva parametry: • název databáze, což je #et#zec znak# • mód v kterém se databáze otev#e, což je bitová maska vyjád#ená jako celé #íslo Význam jednotlivých bit# v módu je popsán v následující tabulce. kód
ozna#ení
význam
0x01
dmModeReadOnly
p#ístup k databázi jen pro #tení
0x02
dmModeWrite
p#ístup k databázi jen pro zápis
0x03
dmModeReadWrite
p#ístup k databázi pro #tení a zápis
0x04
dmModeLeaveOpen
LispMe ignoruje tuto volbu
0x08
dmModeExclusive
exkluzivní otev#ení, zamkne p#ed ostatními aplikacemi
0x10
dmModeShowSecret
zobrazí tajné/soukromé záznamy v databázi
A#koliv p#i garbage collection dojde ka automatickému uzav#ení nepoužívaných databází, je velmi vhodné uzavírat je explicitn# voláním funkce dm-close-db. (dm-open-db "Pokus" 1) # #t
Informace o otev#ené databázi (dm-db-info) FIXME: 7
Knihovny funkcí/procedur
Pro zjišt#ní informací o otev#ené databázi máme k dispozici funkce dm-db-info a dm-db-size. První funkce nám vrací seznam (jméno mód atributy resource? type creator po#et-zm#n ts-creation ts-modification ts-backup). Druhá pak velikost databáze (po#et-záznam# po#et-byte-v#etn#-overhead po#et-byte). (define p (dm-open-db "Pokus" 1)) (dm-db-info p) # ("Pokus" 1 0 #f "data" "RdkH" 0 [ts 2006-03-08-13-25-20]\ [ts 2006-03-08-13-25-20] [ts 1904-01-01-00-00-00]) (dm-db-size p) # (0 84 0)
Zjišt#ní velikosti databáze (dm-db-size) Funkci p#edáváme jako jediný parametr referenci na databázi jenž získáme otev#ením databáze funkcí dm-open-db. Jako návratovou hodnotu dostaneme seznam se t#emi #ísly. Tato znamenají: • po#et záznam# (records) v databázi • skute#ná velikost v slabikách (byte), jenž databáze zabírá v pam#t. Zapo#ítán je také nevyužitý ale alokovaný prostor. • celková velikost databáze. Velikost využité pam#ti, bez alokovaného ale nevyužitého prostoru. (dm-db-size (dm-open-db "AddressDB" 5)) (197 22531 18507)
Záznamy v databázi Funkce: • • • • •
(dm-archive-rec dbref recnum) # boolean (dm-delete-rec dbref recnum) # boolean (dm-get-rec-attr dbref recnum) # rec-attr (dm-read-rec dbref recnum) # string .
FIXME:
dm-archive-rec (dm-archive-rec dbref recnum) # boolean Nastaví danému záznamu recnum v otev#ené databázi dbref p#íznak delete, takže p#i následné synchronizaci bude tento archivován na po#íta#i a odstran#n z databáze.
dm-delete-rec (dm-delete-rec dbref recnum) # boolean Nastaví danému záznamu recnum v otev#ené databázi dbref p#íznak delete, takže p#i následné synchronizaci bude tento odstran#n z databáze. (dm-delete-rec (dm-open-db "Foo" 3) 17) # #t
dm-get-rec-attr (dm-get-rec-attr dbref recnum) # rec-attr Zjistí atributy daného záznamu recnum v otev#ené databázi dbref. Atributy jsou vyjád#eny jako logický sou#et jednotlivých bit# a reprezentovány jedním bajtem.
8
Knihovny funkcí/procedur
(dm-get-rec-attr (dm-open-db "AddressDB" 1) 109) # 64
dm-read-rec (dm-read-rec dbref recnum) # string P#e#te obsah záznamu recnum v otev#ené databázi dbref. Obsah je vrácen jako #et#zec znak#. (dm-read-rec (dm-open-db "AddressDB" 1) 26) # "...#et#zec znak#..."
R#zné, zatím nezat#íd#né funkce FIXME: • (gc) # #n • (hotsync-info) # (hotsync-name timestamp timestamp number) • .
hotsync-info (hotsync-info) # (hotsync-name timestamp timestamp number) FIXME: dopsat
gc (gc) # #n Startuje Garbage Collection.
Datum a #as V LispMe je n#kolik datových typ# prezentujícich #asové informace. Tyto jsou dány možnostmi PalmOS.
Dopsat: • (make-date y m d) # date • (make-time h m) # time • (make-ts num) # ts • .
Datový typ date Reprezentuje informaci o datumu, tedy rok m#síc a den. Data tohoto typu konstruujeme pomocí funkce make-date.
date? FIXME: dopsat
9
Knihovny funkcí/procedur
make-date (make-date year month day) FIXME: dopsat
Nepopsané objekty Prázdné záznamy o objektech které zatím nejsou posané, ale pot#ebuji se na n# odkazovat. Záznamy uvádím ve form# prázdných sekcí. Po dopln#ní obsahu budou tyto umístn#ny na správné místo v dokumentaci.
date+ (date+ date integer) Spo#tení data p#ipo#ítáním udaného po#tu dní k jinému datu.
number? (number? obj) Funkce zjiš#uje zdali je testovaný objekt #íslem. (number? 42) # #t (number? 'ahoj) # #f (number? 1.5+2.5i) # #t
integer (deprecated) (integer number) P#evod #ísla v plovoucí #ádové #árce na celé #íslo.
abs (abs number) # number Po#ítá absolutní hodnotu zadaného #ísla. (abs -45763) # 45763 (abs -2+i) # 2.23606797749979 (abs 3.1415926) # 3.1415926 (integer? (abs -16384)) # #t V standardní knihovn# je funkce abs definována takto: (define (abs n) (if (real? n) (if (# n 0) n (- n)) (magnitude n)))
acos (acos number) FIXME: dopsat 10
Knihovny funkcí/procedur
acosh (acosh number) FIXME: dopsat
and (and …) FIXME: dopsat
angle (angle parametry) Výpo#et úhlu komplexního #ísla. (angle 4) # 0 (angle 1+i) # 0.785398163397448
append (append list1 …) FIXME: dopsat
apply (apply procedure arglist) FIXME: dopsat
asin (asin parametry) FIXME: dopsat
asinh (asinh number) Po#ítá hyperbolickýFIXME: dopsat
assoc, assq, assv (assoc parametry) (assq parametry) (assv parametry) FIXME: dopsat
atan (atan number) Po#ítá arc tangent #íselného argumentu. 11
Knihovny funkcí/procedur
atanh (atanh number) Po#ítá hyperbolický arc tangent #íselného argumentu.
battery-info
(battery-info) # (current-voltage warning-voltage critical-voltage ticks-until-warning batery-kind plugged percen Získání informací o stavu baterie a napájení. Funkce vrátí seznam sedmi prvk# které po po#adí znamenají: 1. 2. 3. 4. 5.
aktuální nap#tí [V] detek#ní úrov## nízkého nap#tí [V] detek#ní úrov## kritického nap#tí [V] po#et tik#, doba k dosažení nízkého nap#tí druh baterie, #íslo oznamuje jaký druh baterie je v našem handheldu. Následující tabulka popisující jednotlivé druhy baterií je p#evzata z popisu typu SysBateryKind v hlavi#kovém souboru System/SystemMgr.h.
Tabulka 3.1. Druh baterie hodnota
baterie
0
sysBatteryKindAlkaline
alkalická
1
sysBatteryKindNiCad
nikl kadmium
2
sysBatteryKindLiIon
litium iontová
3
sysBatteryKindRechAlk
nabíjecí alkalická
4
sysBatteryKindNiMH
Nikl metal hydrid
5 sysBatteryKindLiIon1400 Lithium ion, 1400mAh 6. je handheld p#ipojen k synchroniza#nímu a nabíjecímu kabelu? 7. percentuální hodnota stavu nabytí baterií (battery-info) # (4.2 3.75 3.7 36637 2 #t 100)
begin (begin expr1 expr2 …) Sekven#ní vyhodnocení výraz#. Konstrukce je jakousi závorkou kolem bloku p#íkaz#. Výsledná hodnota je výslednou hodnotou posledního p#íkazu. (begin 'ja "n#co" (* 6 7)) # 42
bit-and (bit-and parametry …) Logcký sou#in bit po bitu celo#íselných argument#. (bit-and 57 42) # 40
bit-not (bit-not integer)
12
Knihovny funkcí/procedur
FIXME: dopsat
Logický sou#et, bit po bitu bit-or (bit-or parametry) FIXME: dopsat
bit-shift (bit-shift n k) FIXME: dopsat
--bitmap-(bitmap bmap) FIXME: dopsat
boolean? (boolean? obj) FIXME: dopsat
buf-get-cstr (buf-get-cstr buf offset) FIXME: dopsat
buf-get-date (buf-get-date buf offset) P#e#te PalmOS datum z bufferu. FIXME: dopsat
buf-get-f32 (buf-get-f32 buf offset) FIXME: dopsat
buf-get-64 (buf-get-64 buf offset) FIXME: dopsat
buf-get-s16 (buf-get-s16 buf offset)
13
Knihovny funkcí/procedur
FIXME: dopsat
buf-get-s32 (buf-get-s32 buf offset) FIXME: dopsat
buf-get-s8 (buf-get-s8 buf offset) FIXME: dopsat
buf-get-time (buf-get-time buf offset) FIXME: dopsat
buf-get-ts (buf-get-ts buf offset) FIXME: dopsat
buf-get-u16 (buf-get-u16 buf offset) FIXME: dopsat
buf-get-u32 (buf-get-u32 buf offset) FIXME: dopsat
buf-get-u8 (buf-get-u8 buf offset) FIXME: dopsat
buf-set-cstr! (buf-set-cstr! buf offset string) FIXME: dopsat
buf-set-date! (buf-set-date! buf offset date) FIXME: dopsat
14
Knihovny funkcí/procedur
buf-set-f32! (buf-set-f32! buf offset real) FIXME: dopsat
buf-set-f64! (buf-set-f64! parametry) FIXME: dopsat
buf-set-s16! (buf-set-s16! parametry) FIXME: dopsat
buf-set-s32! (buf-set-s32! parametry) FIXME: dopsat
buf-set-s8! (buf-set-s8! parametry) FIXME: dopsat
c…r (c… pair FIXME: dopsat
callcc (call/cc procedure) FIXME: dopsat
car (car pair) FIXME: dopsat
case (case parametry) FIXME: dopsat
cdr (cdr pair) 15
Knihovny funkcí/procedur
FIXME: dopsat
--ceiling-(ceiling para) FIXME: dopsat
char->integer (char->integer char) FIXME: dopsat
char? (char? obj) FIXME: dopsat
circular? (circular? obj) FIXME: dopsat
close-input-port (close-input-port para) FIXME: dopsat
close-netlib (close-netlib para) FIXME: dopsat
close-output-port (close-output-port para) FIXME: dopsat
close-serial (close-serial para) FIXME: dopsat
complex? (complex? obj) FIXME: dopsat
16
Knihovny funkcí/procedur
cond (cond parametry) FIXME: dopsat
conjugate (conjugate number) FIXME: dopsat
cons (cons obj1 obj2) FIXME: dopsat
continuation? (continuation? obj) FIXME: dopsat
cos (cos para) FIXME: dopsat
cosh (cosh para) FIXME: dopsat
--crash-(crash) FIXME: dopsat
ctl-enter (ctl-enter para) FIXME: dopsat
--ctl-get-label-(ctl-get-label para) FIXME: dopsat
--ctl-get-val-(ctl-get-val para) 17
Knihovny funkcí/procedur
FIXME: dopsat
ctl-hit (ctl-hit id) FIXME: dopsat
ctl-repeat (ctl-repeat para) FIXME: dopsat
ctl-select (ctl-select id state) FIXME: dopsat
--template-(template para) FIXME: dopsat
Speciální forma define (define parametry) (define (var formals) expr1 expr2 …) Vtvá#í spojení (vazbu) mezi symbolem (jménem) a jeho hodnotou. Používá se zejména k definování prom#nných a funkcí. (define pi 3.1415926) # #n (define (sq x) (* x x)) # #n
eq? (eq? obj1 obj2) Rozpoznávání identických objekt#. (eq? 'a 'b) # #f (eq? 'sym 'sym) # #t (eq? 2.1 2.1) # #f
eqv? (eqv? parametry) FIXME: dopsat
equal? (equal? parametry)
18
Knihovny funkcí/procedur
FIXME: dopsat
gensym (gensym parametry) FIXME: dopsat
if (if test consequent [alternative]) Speciální forma pro podmín#né vyhodnocování výraz#. Je li výsledek vyhodnocení parametru test pravdivý, je vyhodnocen výraz consequent a jeho hodnota je pak výsledkem speciální formy if. Je-li výsledek vyhodnocení výrazu test nepravdivý, je vyhodnocen výraz alternative a jeho hodnota je pak výsledkem speciální formy if. (if #t (* 6 7)) # 42 (if #f (/ 0 0)) # #f
integer->char (integer->char integer) FIXME: dopsat
integer? (integer? obj) Testování, zda-li je zadaný objekt celé #íslo.
length (length list) FIXME: dopsat
list (list para) FIXME: dopsat
list-ref (list-ref para) FIXME: dopsat
list->string (list->string charlist) # string FIXME: dopsat
19
Knihovny funkcí/procedur
list->vector (list->vector list) # vector FIXME: dopsat
magnitude (magnitude number) Po#ítá magnitudu (absolutní velikost) komplexního #ísla. (magnitude 3.14) # 3.14 (magnitude 1+2i) # 2.23606797749979 (magnitude -2) # 2
make-string (make-string parametry) FIXME: dopsat
make-vector (make-vector len fill) FIXME: dopsat
map (map para) FIXME: dopsat
max (max parametry) FIXME: dopsat
member, memq, memv (member obj list) (memq obj list) FIXME: dopsat
--min-(min parametry) FIXME: dopsat
not (not parametry)
20
Knihovny funkcí/procedur
FIXME: dopsat
null? (null? obj) FIXME: dopsat
object->string (object->string parametry) FIXME: dopsat
or (or parametry) FIXME: dopsat
pair? (pair? obj) FIXME: dopsat
real? (real? obj) Testuje, zda-li je objekt reálné #íslo.
reverse (reverse para) FIXME: dopsat
set-car! (set-car! pair obj) FIXME: dopsat
set-cdr! (set-cdr! pair obj) FIXME: dopsat
string->list (string->list parametry) FIXME: dopsat
21
Knihovny funkcí/procedur
string->object (string->object parametry) FIXME: dopsat
string-append (string-append parametry) FIXME: dopsat
string-length (string-length para) FIXME: dopsat
string-lower (string-lower string) FIXME: dopsat
string-ref (string-ref para) FIXME: dopsat
string-set! (string-set! para) FIXME: dopsat
string=! (string=! para) FIXME: dopsat
string? (string? obj) FIXME: dopsat
--substring-(substring para) FIXME: dopsat
symbol? (symbol? obj) 22
Knihovny funkcí/procedur
FIXME: dopsat
vector (vector para) FIXME: dopsat
Porovnání srovnatelných objekt# <, # > # (< obj1 obj2) # boolean (# obj1 obj2) # boolean (> obj1 obj2) # boolean (# obj1 obj2) # boolean Funkce porovnávají srovnatelné objekty a vrací pravdivostní hodnotu dle toho jak srovnání dopadne. (< "abc" "abeceda") # #t (# 5 4.1) # #t
= (= obj1 obj2) FIXME: dopsat
* (* parametry) FIXME: dopsat
23