Up: Návody na Scheme [Contents][Index]
Guix používa Guile implementáciu jazyka Scheme. Ak si chcete tento jazyk
vyskúšať, nainštalujte si Guile pomocou guix install guile
a spustite
REPL,
tzv.
slučku čítaj-vykonaj-zobraz, zadaním guile
v príkazovom
riadku.
Môžete tiež použiť príkaz guix shell guile -- guile
ak nechcete
inštalovať Guile do vášho používateľského profilu.
Riadky v nasledovných príkladoch znázorňujú to, čo treba zadať v rámci REPL; riadky začínajúce na „⇒“ znázorňujú výsledok vykonania príkazu, zatiaľ čo riadky začínajúce na „-|“ znázorňujú to čo sa zobrazí na obrazovke. See Using Guile Interactively in GNU Guile Reference Manual, pre viac podrobností o REPL.
#true
a #false
(skrátene #t
a #f
)
znázorňujú logické hodnoty „pravda“ a „nepravda“.
Príklady platných výrazov:
"Ahoj svet!" ⇒ "Ahoj svet!" 17 ⇒ 17 (display (string-append "Ahoj " "Guix" "\n")) -| Ahoj Guix! ⇒ #<unspecified>
lambda
:
Vyššie uvedená funkcia vracia druhú mocninu hodnoty jej parametra. Keďže
všetko sa považuje za výraz, aj výraz lambda
vracia bezmennú funkciu,
ktorú je následne možné uplatniť na nejaký parameter:
((lambda (x) (* x x)) 3) ⇒ 9
define
:
(define a 3) (define druha-mocnina (lambda (x) (* x x))) (druha-mocnina a) ⇒ 9
(define (druha-mocnina x) (* x x))
list
:
(list 2 a 5 7) ⇒ (2 3 5 7)
'(display (string-append "Ahoj " "Guix" "\n")) ⇒ (display (string-append "Ahoj " "Guix" "\n")) '(2 a 5 7) ⇒ (2 a 5 7)
`(2 a 5 7 (2 ,a 5 ,(+ a 4))) ⇒ (2 a 5 7 (2 3 5 7))
Všimnite si, že hore uvedený výsledok je zoznam rôznorodých položiek: čísel,
znakov (a
) a posledná položka je tiež zoznam.
let
(see Local Bindings in GNU Guile Reference
Manual) môžeme zadať a pomenovať viacero miestnych premenných:
(define x 10) (let ((x 2) (y 3)) (list x y)) ⇒ (2 3) x ⇒ 10 y error→ In procedure module-lookup: Unbound variable: y
Ak chcete, aby bolo možné v neskorších zadaniach premenných odkazovať na
predtým zadané premenné, použite let*
.
#:
(mriežkou a dvojbodkou), po
ktorých nasledujú písmenové či číselné znaky:
#:takto
. See Keywords in GNU Guile Reference Manual.
%
je bežne používaný pre globálne premenné s prístupom
len na čítanie počas zostavovania. Všimnite si, že je to len všeobecným
zvykom, ako napr. _
v jazyku C. Scheme spracúva %
ako
hocijaký iný znak.
define-module
(see Creating Guile Modules in GNU Guile Reference Manual). Napríklad
(define-module (guix build-system ruby)
#:use-module (guix store)
#:export (ruby-build
ruby-build-system))
určuje modul guix build-system ruby
, ktorý má byť umiestnený v
guix/build-system/ruby.scm niekde vo vyhľadávacej ceste Guilu. Závisí
na module (guix store)
a určuje dve premenné, ruby-build
a
ruby-build-system
.
Dozvedieť sa viac: Scheme je jazyk, ktorý sa hojne využíva pri výuke programovania a sú na ňom založené mnohé podklady. V nasledovných dokumentoch sa môžete o Scheme dozvedieť viac:
- A Scheme Primer, od Christine Lemmer-Webberovej a Spritely Institute.
- Scheme at a Glance, od Steva Litta.
- Structure and Interpretation of Computer Programs, od Harolda Abelsona, Geralda Jay Sussmana a Julie Sussmanovej. Táto knižná príručka je bežne známa ako “SICP”.
Môžete si ju tiež stiahnuť a prečítať na vašom počítači:
guix install sicp info-reader info sicpĎalšie knihy, návody ako aj iné druhy zdrojov nájdete na https://schemers.org/.
Up: Návody na Scheme [Contents][Index]