Jednou za rok otevírá společnost SUSE dveře svých kanceláří široké veřejnosti. Vítáni jsou všichni, kdo se chtějí dozvědět více o naší práci, prostředí ve kterém pracujeme a o naší firemní kultuře. Letos se dveře otevřou 26. 11. 2025 v 16:00. Můžete se těšit na krátké prezentace, které vám přiblíží, na čem naši inženýři v Praze pracují, jak spolupracujeme se zákazníky, partnery i studenty, proč máme rádi open source a co pro nás skutečně
… více »Na čem pracují vývojáři webového prohlížeče Ladybird (GitHub)? Byl publikován přehled vývoje za říjen (YouTube).
Jeff Quast otestoval současné emulátory terminálu. Zaměřil se na podporu Unicode a výkon. Vítězným emulátorem terminálu je Ghostty.
Amazon bude poskytovat cloudové služby OpenAI. Cloudová divize Amazon Web Services (AWS) uzavřela s OpenAI víceletou smlouvu za 38 miliard USD (803,1 miliardy Kč), která poskytne majiteli chatovacího robota s umělou inteligencí (AI) ChatGPT přístup ke stovkám tisíc grafických procesů Nvidia. Ty bude moci využívat k trénování a provozování svých modelů AI. Firmy to oznámily v dnešní tiskové zprávě. Společnost OpenAI také nedávno
… více »Konference Prague PostgreSQL Developer Day 2026 (P2D2) se koná 27. a 28. ledna 2026. Konference je zaměřena na témata zajímavá pro uživatele a vývojáře. Příjem přednášek a workshopů je otevřen do 14. listopadu. Vítáme témata související s PostgreSQL či s databázemi obecně, a mohou být v češtině či angličtině.
Byl vydán Devuan 6 Excalibur. Přehled novinek v poznámkách k vydání. Kódové jméno Excalibur bylo vybráno podle planetky 9499 Excalibur. Devuan (Wikipedie) je fork Debianu bez systemd. Devuan 6 Excalibur vychází z Debianu 13 Trixie. Devuan 7 ponese kódové jméno Freia.
Společnost Valve aktualizovala přehled o hardwarovém a softwarovém vybavení uživatelů služby Steam. Podíl uživatelů Linuxu poprvé překročil 3 %, aktuálně 3,05 %. Nejčastěji používané linuxové distribuce jsou Arch Linux, Linux Mint a Ubuntu. Při výběru jenom Linuxu vede SteamOS Holo s 27,18 %. Procesor AMD používá 67,10 % hráčů na Linuxu.
Joel Severin v diskusním listu LKML představil svůj projekt linuxového jádra ve WebAssembly (Wasm). Linux tak "nativně" běží ve webovém prohlížeči. Potřebné skripty pro převod jsou k dispozici na GitHubu.
Byla vydána nová verze 25.10.31 svobodného multiplatformního video editoru Shotcut (Wikipedie) postaveného nad multimediálním frameworkem MLT. Shotcut je vedle zdrojových kódů k dispozici také ve formátech AppImage, Flatpak a Snap.
O víkendu probíhá konference OpenAlt 2025 (Stream). Na programu je spousta zajímavých přednášek. Pokud jste v Brně, stavte se. Vstup zdarma.
Na úvod trošku teorie.
(* 12 3 5)
Uvedený výraz v závorkách je příkladem seznamu, platí pro něj následující:
Obecný tvar výrazu vypadá takto:
(operátor hodnota1 hodnota2 ... hodnotaN)
Základní matematické operátory naleznete v tabulce:
| + | sčítání | 
| - | odčítání | 
| * | násobení | 
| / | dělení | 
Hodnotou může být jiný výraz nebo číselná konstanta, následující seznam obsahuje jejich příklady:
(1 3/2 3.14 2.66e25 -3 1+3i)
Je vidět, že Scheme zvládá nejen celá a racionální čísla, ale i čísla komplexní a zlomky.
Nyní na ukázku vyjádříme nějaký matematický výpočet pomocí syntaxe Scheme:
(11 - 3 + 4 - 2) * 3 / (15 + 3 + 2) * (5 * 6/7) (/ (* (- (+ 11 4) 3 2) 3) (* (+ 15 3 2) (* 5 6/7))) ; výsledek je 7/20
Poslední uvedený příklad vám možná přišel poněkud nepřehledný. Naštěstí nám Scheme poskytuje dostatek volnosti při formátování zdrojového kódu. Výraz pak může vypadat třeba takto:
(/ (* (- (+ 11 4) 3 2)
      3)
   (* (+ 15 3 2)
      (* 5 6/7)))
Představte si, že potřebujete napsat ve Scheme nějaký složitý výraz, v němž se často vyskytuje nějaká konstanta. Kdybyste psali na její místo stále patřičnou hodnotu, bylo by možné, že
Naštěstí existuje konstrukce let, která uvedený problém řeši. Má tvar:
(let ((jméno1 hodnota1)
      (jméno2 hodnota2)
       ...
       jménoN hodnotaN))
   (výraz))
K tématu si ukážeme jednoduchý příklad nezakládající se na realitě (neodvozoval jsem si jej, prachsprostě jsem si jej vymyslel):
(let ((pi 3.14) (x (+ -5/7 0.3e-3)))
   (/ (* (+ pi x)
         (- pi x))
      2))
; výsledek je cca 4.675
Chceme-li proměnnou využívat i mimo výraz v konstrukci let, definujeme novou proměnnou:
(define jméno hodnota)
Například tedy:
(define pi 3.14) (define r 5) (* 2 pi r) ; obvod kruhu je 31.4
Kostrukce let nám mnohdy pomůže, ale jsou situace, kdy je úroveň abstrakce, kterou poskytuje, příliš nízká, protože umožňuje pouze nahrazení konkrétními čísly. Pokud chceme nahrazovat obecným vzorcem, použijeme konstrukci lambda:
((lambda (jméno) (vzorec)) (výraz))
Ještě si ukážeme jednoduchý příklad:
((lambda (x) (+ x x)) (* 2 8)) ; výsledek je 32
Konstrukce let a lambda jsou velmi užitečné na úrovni výrazů, jenže nám nepomohou, pohybujeme-li se na úrovni celého programu. Pak nastupují na řadu procedury. Zkráceně se zapisují:
(define (jméno argumenty) (tělo_funkce))
Argumenty jsou vstupní hodnoty s nimiž procedura pracuje.
(define (mocnina x) (* x x)) (* 3.14 (mocnina 5)) ; obsah kruhu o poloměru 5 je 78.5
Pokud píšeme nějaký program a chceme jej do budoucna uchovat, musíme jej zapsat do souboru (nejlépe s příponou .scm). Z interaktivního interpreta jej načteme konstrukcí load:
(load "cesta_k_souboru")
Malá ukázka:
david@schematic:~$ cat > priklad.scm (define (mocnina x) (* x x)) (mocnina 12) david@schematic:~$ mzscheme Welcome to MzScheme version 360, Copyright (c) 2004-2006 PLT Scheme Inc. > (load "priklad.scm") 144 >
Příště se budeme věnovat podmínkám a rekurzi -- Scheme právě jí nahrazuje cykly.
Přidávám několik odkazů na jiné zdroje. Jedná se o knihy (v angličtině) dostupné on-line:
Nástroje: Tisk bez diskuse
        Tiskni
            
                Sdílej:
                
                
                
                
                
                
            
    
            "Kostrukce let nám mnohdy pomůže, ale jsou situace, kdy je úroveň abstrakce, kterou poskytuje, příliš nízká, protože umožňuje pouze nahrazení konkrétními čísly. Pokud chceme nahrazovat obecným vzorcem, použijeme konstrukci lambda"Přiznám se, že téhle pasáži moc nerozumím. Let není nic jiného než převlečená lambda.
((lambda (jméno) (vzorec)) (výraz))je přesně totéž, co
(let ((jméno výraz)) (vzorec))Možná by bylo lépe zřejmé, co máš na mysli tou "nízkou úrovní abstrakce", kdybys lépe vysvětlil to "nahrazení konkrétními čísly".
Konstrukce let a lambda jsou velmi užitečné na úrovni výrazů, jenže nám nepomohou, pohybujeme-li se na úrovni celého programu. Pak nastupují na řadu procedury.Tomu taky nerozumím.
 To, co vytváří lambda, se také nazývá procedura. Tzv. top-level define forma
(define (jméno argumenty) (tělo_funkce))obdobně prostou transformací vede na
(define jméno 
    (lambda (argumenty)
        (tělo_funkce)))
Tohle dokonce člověk najde přímo v R5RS.
Seznamy lze samozřejmě vnořovat, pak se vyhodnocují od toho nejhlouběji vnořeného.Tohle taky nedává smysl. Seznamy se přeci nevyhodnocují. Nepleteš si to s formami? A nezmizely Ti někam odkazy na konci článku?
 Růžový čumáček drží palce do dalšího schemování a doporučuje přečíst si Lambda Papery, RnRS a SICP, aby nedošlo k nedorozumění studenta s jazykem. 
            Seznamy lze samozřejmě vnořovat, pak se vyhodnocují od toho nejhlouběji vnořeného.co naplat, ony vyhodnocovat pri trose dobre vule jdou
(eval (list '+ 1 2 3)), ale je to spis problem vadnosti celeho popisu a terminologie ;-] (btw. termin forma je lispovsky, r5rs tento termin nepouziva a pouziva misto toho jina zverstva, ale to je na uplne jinou diskuzi ;-])
pokud predpokladame vyhodnocovani z leva doprava (r5rs to nepredpoklada) pak v (+ (+ 1 2) (+ (+ 1 2) (+ 3 4))) vyraz (+ 3 4) bude vyhodnoceny jako jeden z poslednich.
cely ten clanek je takovy... jak bych to rekl... napsat clanek vyhodnocovani programu ve schemu, kde se termin symbol nebo s-vyraz nevyskytuje ani jednou a kdy termin ,,vyhodnocuje'' se vyskytuje prave jednou... je docela kumst.
            define je trosku neco jineho, nez prirazeni hodnoty v klasickem smyslu, jak jsme u programovacim jazyku zvykli. Vytvari se tim nove prostredi, ve kterem se navaze na urcity symbol vyhodnoceni vyrazu. No a to ma zajimave dusledky, protoze s prostredim se daji delat psi kusy a s nim uzce souvisi i continuations, s kterymi se daji delat dalsi psi kusy (treba celkem jednoducha implementace multitaskingu) a doufam, ze se o techto tematech v nejakem budoucim pokracovani docteme.
            define zadne prostredi nevytvari. define navaze v aktualnim prostredi hodnotu na symbol. nic vic nic min. ke vzniku prostredi dochazi v momente ,,zavolani uzivatelske funkce''.
(define foo (lambda (x) (* x x)) ; zadne prostredi nevzniklo, jen na symbol,
                                      ; foo je navazana funkce, ktera v sobe drzi
                                      ; (ukazatel na) rodicovske prostredi
(foo 1) ; vzniklo nove prostredi, kde na hodnotu x je navazana jednicka
        ; a v tomto prostredi se vyhodnoti (* x x)
            A nezmizely Ti někam odkazy na konci článku?Viz "Odkazy a zdroje".
Nehlede na to, ze konstrukce let a lambda je mozne pouzit i na top-level urovni a define i v 'zanorene' urovni (s drobnou odchylkou v semantice oproti top-level define).Konstrukce let a lambda jsou velmi užitečné na úrovni výrazů, jenže nám nepomohou, pohybujeme-li se na úrovni celého programu. Pak nastupují na řadu procedury.Tomu taky nerozumím.To, co vytváří
lambda, se také nazývá procedura. Tzv. top-leveldefineforma