Obecnie pracuję poprzez SICP z Haskell. W ćwiczeniu 1.15 pytamy, ile razy wywoływana jest funkcja. Prawdopodobnie powinieneś użyć metody zastępowania, ale chciałbym wiedzieć, jak to zrobić w kodzie.Jak policzyć liczbę razy, gdy funkcja została wywołana, sposób FP
W języku imperatywnym można przechowywać zmienną globalną i zwiększać ją za każdym razem, gdy wywoływana jest funkcja. Ale jak byś się tym zajął w Haskell (czy w czysto funkcjonalny sposób)?
jeśli tylko do debugowania, można użyć '' trace' Debug.Trace' użytkownika funkcja. Łamie referencyjną przejrzystość, ale jeśli debugujesz lub odkrywasz, to powinno być w porządku. – GManNickG
Ahem, myślę, że SICP rzeczywiście oczekuje, że liczba będzie wynosić 0 lub 1 - najważniejsza jest "czy funkcja jest oceniana czy nie?". Nie ma czysto funkcjonalnego sposobu liczenia ile razy funkcja jest wywoływana. Poniższe odpowiedzi dostarczają dobrych monadycznych "rozwiązań", ale zależą one od funkcji, która ma być liczona jako "uruchomiona" w obrębie odpowiedniej monady. Jest to ważny wybór - nie liczą ogólnych funkcji. –