cwbe coordinatez:
101
63540
2076399
3671716
3792073

ABSOLUT
KYBERIA
permissions
you: r,
system: public
net: yes

neurons

stats|by_visit|by_K
source
tiamat
commanders
polls

total descendants::
total children::0
show[ 2 | 3] flat


Prednáška Simona Peytona Jonesa o Haskelli, purite (čistota mi nepripadá ako vhodný preklad) a z nej vyplývajúcej možnosti automatizovane testovať funkcie (berúc do úvahy to, že samotné silné typovanie eliminuje množstvo chýb).

SPJ v prednáške najprv stručne načrtáva, čo funkcionálne programovanie je (zhruba polovica publika FP už napísala nejaký program v Haskelli) a demonštruje to na programe hľadania všetkých vrcholov grafu vzdialených od daného grafu zadaný počet hrán.

Potom SPJ predstavuje modul QuickCheck, ktorý umožňuje testovať invarianty funkcií:

ghci> let inv_rev s = (reverse.reverse) s == s
ghci> quickCheck inv_rev
OK, passed 100 tests.
ghci> quickCheck inv_falsifiable -- "shouldbe" invariant nejakej chybnej fcie
Falsifiable, after 17 tests:
[3, 7, 5, 5, 9] -- QuickCheck vydal aj kompromitujúci vstup

Opisuje scenáre a metódy použitia, na príkladoch ukazuje, ako sa dajú bez skúmania testovanej funkcie už vyvodzovať nejaké závery o tom, kedy počíta správne a kedy nie.

Odtiaľ sa dostáva k triedam a ich inštanciám, čím trochu osvetľuje, ako to vlastne ten QuickCheck funguje. To sa samozrejme nedá úplne v hodinovej prednáške; monády nespomenul snáď ani raz.

quickCheck :: Testable a => a -> Bool

class Arbitrary where
   arby :: RandSource -> a
class Testable a where
   test :: a -> RandSource -> Bool
instance Testable Bool where
   test b _ = b
instance (Arbitrary a, Testable b) => Testable (a -> b) where
   test f rand = test (f (arby r1)) r2
      where (r1, r2) = split r


Na konci je krátka diskusia o rýchlosti/efektivite funkcionálnych programov, odporúčanej literatúre a možno príde aj F#.

Video je možné pozrieť si tu:
http://www.foomongers.org.uk/videos/spj-typedriventestinginhaskell.html