Aktywne Wpisy

tobaccotobacco +1146
#wybory
Czapki z głów dla pracowni Ipsos, której exit poll niewiele się różni od obecnych wyników (piszę te słowa, gdy podliczonych zostało ponad 95% głosów). Dzięki ich rzetelnej robocie uniknęliśmy takiego festiwalu #!$%@?, jaki zafundowała Słowacji pracownia Focus raptem parę tygodni temu.
Czapki z głów dla pracowni Ipsos, której exit poll niewiele się różni od obecnych wyników (piszę te słowa, gdy podliczonych zostało ponad 95% głosów). Dzięki ich rzetelnej robocie uniknęliśmy takiego festiwalu #!$%@?, jaki zafundowała Słowacji pracownia Focus raptem parę tygodni temu.

Otter +232
Jak Kosiniak z Kamyszem przejmowali władzę w PSL-u żeby zaraz potem słabiutko wypaść w wyborach prezydenckich, a w sondażach się kręcili koło 5%, to wielu mówiło, że Władek zgasi światło w PSL-u po stu latach. Dzisiaj POTĘŻNY agronom z kolegą zbiera 15 procent i wprowadza lekką ręką kilkudziesięciu posłów. Chad
#wybory
#wybory





Mam takie zadanko:
data Tree a b = Leaf a | Node a b (Tree a b) (Tree a b)Nie do końca wiem jak się za to zabrać - z tego co zdążyłem na stacku wyczytać w Haskellu nie ma możliwości w "runtime'ie" sprawdzić typ podstawionego argumentu, jak mam zatem sprawdzać, czy dany element drzewa faktycznie jest np. Node'm/Leaf'em? Mam napisać kilka deklaracji tej samej funkcji z określeniem przyjmowanego typu i typu który jest obecnie "brany pod uwagę" dla wszystkich możliwości?
Edit: Zapomniałem podziękować - dzięki za wskazówki :)
mapTree (Node a b c d) f (Leaf e) =mapTree (Node a b c d) f (Node a b c d) =
mapTree (Leaf a) f (Leaf a) =
mapTree (Leaf e) f (Node a b c d) =
Rozumiem to tak - jeżeli oczekiwany
Potem właśnie musisz w obsluzyc wszystkie przypadki odpowiednimi wzorcami i zaleznie od tego co zostało zmatchowane odpowiednio zareagować.
Nie do końca widzę to co napisaleś, z grubsza bedzie to cos takiego:
mapTree :: (Tree a b) -> .......mapTree Leaf(a) = Leaf(f(a))
mapTree Node(....) => costam innego
mapTree :: ... -> (Tree a b) -> ....... -> (Tree x b)mapTree Leaf(a) = Leaf(f(a))
mapTree Node(....) => costam innego
zauwaz ze po drodze moze zmienic sie typ z a na x bo funkcja f moze zwracac inny typ niz a. Moglem gdzies zrobic blad po drodze ale ogolnie taka jest idea