Programowanie funkcyjne/Techniki uleniwiania i spamiętywania/Ćwiczenia: Różnice pomiędzy wersjami
Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Nie podano opisu zmian |
Nie podano opisu zmian |
||
Linia 1: | Linia 1: | ||
== Praca domowa == | |||
* Wyrażenie warunkowe <tt>if-then-else</tt> nie jest procedurą, lecz formą specjalną, gdyż jest leniwe. W zależności od wartości warunku, tylko jeden z pozostałych członów jest obliczany. Napisz procedurę trójargumentową, która działa tak, jak <tt>if-then-else</tt>. Które z jej argumentów muszą być odroczone? | |||
* Napisz generator odroczonych liczb całkowitych. W momencie wymuszenia obliczenia takiej liczby powinna ona być wczytywana z wejścia. Wczytywaniu powinien towarzyszyć tekst podawany jako parametr przy generowaniu odroczonej liczby. | |||
* Napisz generator odroczonych liczb losowych. Wartość każdej takiej liczby powinna być losowana dopiero w momencie wymuszenia jej obliczenia, jednak musi być zagwarantowane, że jest ona inna od wszystkich wcześniej wylosowanych liczb. Może być przydatna procedura <tt>Random.int</tt>. | |||
== Ćwiczenia == | |||
* Co by się stało gdyby definicja procedury <tt>konto</tt> (z przykładu "Konto bankowe") nie miała argumentu<tt>saldo</tt>, lecz zaczynała się jak poniżej? | |||
'''let''' konto = | '''let''' konto = | ||
'''let''' saldo = '''ref''' 0 | '''let''' saldo = '''ref''' 0 | ||
'''in''' ... | '''in''' ... | ||
* W jaki sposób można połączyć technikę uleniwiania (ze spamiętywaniem) z programowaniem dynamicznym, tak aby obliczane były tylko te instancje podproblemów, które faktycznie muszą być obliczone? | |||
Wersja z 17:57, 27 wrz 2006
Praca domowa
- Wyrażenie warunkowe if-then-else nie jest procedurą, lecz formą specjalną, gdyż jest leniwe. W zależności od wartości warunku, tylko jeden z pozostałych członów jest obliczany. Napisz procedurę trójargumentową, która działa tak, jak if-then-else. Które z jej argumentów muszą być odroczone?
- Napisz generator odroczonych liczb całkowitych. W momencie wymuszenia obliczenia takiej liczby powinna ona być wczytywana z wejścia. Wczytywaniu powinien towarzyszyć tekst podawany jako parametr przy generowaniu odroczonej liczby.
- Napisz generator odroczonych liczb losowych. Wartość każdej takiej liczby powinna być losowana dopiero w momencie wymuszenia jej obliczenia, jednak musi być zagwarantowane, że jest ona inna od wszystkich wcześniej wylosowanych liczb. Może być przydatna procedura Random.int.
Ćwiczenia
- Co by się stało gdyby definicja procedury konto (z przykładu "Konto bankowe") nie miała argumentusaldo, lecz zaczynała się jak poniżej?
let konto = let saldo = ref 0 in ...
- W jaki sposób można połączyć technikę uleniwiania (ze spamiętywaniem) z programowaniem dynamicznym, tak aby obliczane były tylko te instancje podproblemów, które faktycznie muszą być obliczone?