Aktywne Wpisy

chlopiec_kucyk +45
#alkoholizm #pytaniedoeksperta #wykop30plus
Witam Was Mirasy. Zwracam się do Was z pewnym pytaniem, jestem 32 letnim alkoholikiem (ostre chlanie i piekielne zjazdy a nie piweczka były), który od pół roku jest trzeźwy jak niemowlę.
Mam od miesiąca pewne objawy - bezsenność, i to nie taka, że snuję się zmęczony, śpię na siłę 3 max 4 godziny na dobę i resztę dnia i nocy chodzę nakręcony jak
Witam Was Mirasy. Zwracam się do Was z pewnym pytaniem, jestem 32 letnim alkoholikiem (ostre chlanie i piekielne zjazdy a nie piweczka były), który od pół roku jest trzeźwy jak niemowlę.
Mam od miesiąca pewne objawy - bezsenność, i to nie taka, że snuję się zmęczony, śpię na siłę 3 max 4 godziny na dobę i resztę dnia i nocy chodzę nakręcony jak
źródło: 1000008906
Pobierz





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
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 :: ... -> (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