Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

Both sides previous revision Poprzednia wersja
Nowa wersja
Poprzednia wersja
pl:dydaktyka:pp:haskell:lab-monads [2020/05/25 15:28]
msl [Zadania:]
pl:dydaktyka:pp:haskell:lab-monads [2020/06/01 15:34] (aktualna)
msl [Zadania:]
Linia 171: Linia 171:
 </​code> ​ </​code> ​
  
-  - Zaimplementuj klasę ''​Functor''​ dla typu ''​Tree''​. ​+  - Zaimplementuj klasę ''​Functor''​ dla nowego ​typu ''​Tree''​. ​
   - Zaimplementuj klasę ''​Monad''​ dla tego samego typu.   - Zaimplementuj klasę ''​Monad''​ dla tego samego typu.
-  - Zadanie ekstra ​zaimplementuj na tym drzewie ​operacje ​standardowe ​dla drzewa ​binarnego+  - Przeczytaj o monadzie [[http://​learnyouahaskell.com/​for-a-few-monads-more#​state|State]]. Zaimplementuj poniższe ​operacje ​jako //stateful computations// ​dla **starego** ​drzewa ​z [[https://​ai.ia.agh.edu.pl/​pl:​dydaktyka:​pp:​haskell:​lab-types|poprzedniego laboratorium]]
-    * ''​insert'' ​wstaw element +    * insert - umieszcza ​element ​w drzewie 
-    * ''​remove'' ​usuń element +    * removeAll ​usuwa wszystkie elementy spełniające zadany warunek z drzewa i zwraca je w liście jako wynik 
-    * ''​search'' ​znajdź ​element+    * search - sprawdza, czy element ​jest w drzewie 
 +  - Zadanie ekstra - zaimplementuj te same operacje dla nowego drzewa
     * podpowiedź:​ {{tree.png?​linkonly=yes}}     * podpowiedź:​ {{tree.png?​linkonly=yes}}
  
Linia 183: Linia 184:
 Klasa ''​Applicative''​ umożliwa używanie funkcji opakowanych monadą. Klasa ''​Applicative''​ umożliwa używanie funkcji opakowanych monadą.
  
-Poniżej jest przykładowa implementacja ''​Applicative'',​ która jest poprawna, ale nie dba o porządek elementów ​drzewie (lepszej nam nie trzeba raczej ​na dzisiaj):+Poniżej jest przykładowa implementacja ''​Applicative'',​ która jest poprawna, ale akceptuje tylko pojedyncze funkcje opakowane ​liściach - na dzisiaj ​wystarczy:
   * ''​pure''​ to dokładnie to samo, co ''​return''​. Tak naprawdę w Monadzie zawsze można pisać: ''​return = pure'' ​   * ''​pure''​ to dokładnie to samo, co ''​return''​. Tak naprawdę w Monadzie zawsze można pisać: ''​return = pure'' ​
   * ''​%%<​*>​%%''​ aplikuje funkcję opakowaną monadą, taki ''​fmap'',​ który wyjmuje funkcję z pudełka, a nie ma go pod ręką   * ''​%%<​*>​%%''​ aplikuje funkcję opakowaną monadą, taki ''​fmap'',​ który wyjmuje funkcję z pudełka, a nie ma go pod ręką
pl/dydaktyka/pp/haskell/lab-monads.1590413324.txt.gz · ostatnio zmienione: 2020/05/25 15:28 przez msl
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0