Dowiedziałem się sporo schematu z SICP, ale teraz jestem bardziej zainteresowany wspólnym seplenieniem. Wiem, że typowe seplenienie fold
jest reduce
, ze specjalnymi argumentami dla lewego lub prawego składania, ale co jest odpowiednikiem unfold
? Googling nie pomógł wiele. W rzeczywistości mam wrażenie, że się nie rozwinęło ???"Rozwiń" dla wspólnego seplenienia?
Odpowiedz
Common Lisp ma (loop ... collect ...)
. Porównaj
(loop for x from 1 to 10 collect (* x x))
z jej równoważność za pomocą unfold
:
(unfold (lambda (x) (> x 10)) (lambda (x) (* x x)) (lambda (x) (+ x 1)) 1)
Ogólnie (unfold p f g seed)
jest w zasadzie
(loop for x = seed then (g x) until (p x) collect (f x))
Edit: literówka naprawić
Zwykłe hiperpecki lisp nie definiuje funkcji unfold
, ale z pewnością możesz napisać własną. Jego definicja schematu tłumaczy prawie symbol dla symbolu.
Dzięki. To niefortunne, ale przypuszczam, że napiszę własne. Naprawdę lubię schemat bycia tak czystym i posiadającym tak piękną, funkcjonalną dobroć, ale w pewnym sensie zrezygnowałem z nauki splątanego, ale ekspresyjnego wspólnego seplenienia. To trochę jak nauka angielskiego, a nie esperanto, wiesz? – nullpointer
- 1. Rozwiń segment dla UINavigationController
- 2. Typowe zachowanie funkcji seplenienia, niezdefiniowanej przecięcia?
- 3. Wyszukiwanie gałęzi Git dla wspólnego pliku
- 4. JQuery selektor wspólnego CSS
- 5. Rozwiń zmienne w sed
- 6. Szablon skryptu wspólnego Szablon
- 7. Rozwiń obraz wewnątrz DIV
- 8. Rozwiń div pionowo
- 9. Utwórz Div Rozwiń płynnie
- 10. rozwiń segue nie działa
- 11. rozwiń zwiń nieuporządkowaną listę
- 12. Rozwiń listę - cofnij wiele widoków
- 13. Algorytm szybkiego (er) dla długości najdłuższego wspólnego (LCS)
- 14. Jakie są pseudonimy dla wspólnego programowania znaków specjalnych?
- 15. Rozwiń tablicę z preferowanym domyślnie
- 16. Rozwiń std :: tuple, aby użyć jako inicjalizatora dla klasy
- 17. Rozdzielnice dla dzieci rozwiń, aby wypełnić szerokość div jednostki nadrzędnej.
- 18. Ukryj/pokaż zwiń/rozwiń przyciski
- 19. Rozwiń cały TreeView w Silverlight
- 20. Dodaj przejście CSS3 rozwiń/zwiń
- 21. Rozwiń makro wewnątrz Łańcuch znaków
- 22. javascript minesweeper rozwiń zwijanie kontuaru
- 23. Rozwiń wektor na argumenty funkcji
- 24. QSpacerItem W QFormLayout - Vertical Rozwiń
- 25. Rozwiń znacznik , aby wypełnić przestrzeń.
- 26. Rozwiń div od środka rzutni
- 27. Rozwiń i połącz panda DataFames
- 28. Rozwiń pozycję ListView z animacją
- 29. Dodawanie wspólnego haka do js-mode
- 30. używanie wspólnego kontrolera widoku w bibliotece scenariuszy?
Hmm, to interesujące. Przez ostatnią godzinę bawiłem się z pętlą: P to świetne rzeczy! Uwielbiam, gdy języki programowania mają te małe wbudowane podhasła, które mają własną składnię i zbiór reguł do zrozumienia, takich jak ciągi formatów. Pętla to potężne rzeczy! – nullpointer
Witaj w ciemnej stronie. – huaiyuan