haskell

Od Petr Zemek, 2010-07-06

Hledání cesty ven z bludiště patří mezi klasické programátorské úlohy. V tomto příspěvku bych vám chtěl ukázat, jak si lze takový jednoduchý "maze solver" bez větších obtíží naprogramovat v Haskellu.

Od Petr Zemek, 2010-03-06

Za anglický nadpis se omlouvám, ale opravdu mě nenapadl žádný vhodný překlad tohoto slovního spojení ("líné hledání vzorů" či "líný pattern matching" zní divně). Lazy pattern matching (LPM) je typ pattern matchingu (PM), nebo, chcete-li, hledání vzorů, při kterém nedochází k okamžitému navázání hodnoty na vzor, ale až při prvním použití tohoto vzoru. V následujícím příspěvku bych chtěl ukázat, jak tato technika funguje a k čemu se dá použít.

Od Petr Zemek, 2009-09-15

Dneska bych se chtěl mrknout na implicitní číselné typy v jazyce Haskell (podle specifikace z roku 1998, příklady odzkoušeny v GHC 6.10). Jak určitě víte, tak při použití funkcí jako je read :: Read a => String -> a je nutné specifikovat, co má být výsledným typem. Pokud zavoláte jenom read "143", tak překladač nedokáže automaticky odvodit konkrétní typ takového výrazu (netuší, že chcete z řetězce získat číslo typu Int). Řešením je typ výrazu explicitně zadat, čili read "143" :: Int. Tato nejednoznačnost se ale netýká jen takovýchto výrazů, ale i zdánlivě "jasných" výrazů.

Od Petr Zemek, 2009-09-13

Jelikož programuji a zajímám se i o jiné jazyky než je C a C++ (Python, Haskell, Java, SQL, PHP, HTML/XML, CSS, JavaScript, LaTeX, Vimscript, minoritně o Prolog či různé assemblery, dříve Pascal), tak jsem se rozhodl, že občas napíšu i nějakou zajímavost z ostatních jazyků. Nebude to nijak závazné, ani neplánuji žádný pravidelný seriál, ale když při studiu/programování narazím na nějakou zajímavost, tak ji sem možná napíšu :). Témata na tom budou (co se týče obtížnosti) různá - především se ale asi bude jednat o pokročilá témata.

Od Petr Zemek, 2009-08-03

Ve Vimu jsem si oblíbil šikovnou utilitu (plugin) Taglist, která s pomocí programu ctags umí pro editovaný soubor (či explicitně zvolené soubory) zobrazit postranní okno se seznamem (stromem) symbolů, které se v daným souborech vyskytují, jako je např. seznam modulů, typů, funkcí atd. Ostatně mrkněte na screenshoty. Usnadňuje to orientaci a přechod mezi jednotlivými soubory. Tento plugin podporuje celou řadu jazyků (kolem 40), mezi které patří např. C, C++, Python, PHP atd. Bohužel jazyk Haskell není podporován a nepodařilo se mně najít kompletní postup, jak tuto podporu přidat (pouze střípky z diskusí), proto v tomto příspěvku přináším kompletní návod, jak tuto podporu přidat.