Wiem, że zestaw funkcji Haskella jest tylko podzbiorem wszystkich funkcji matematycznych, ponieważ jest to język programowania, więc wszystkie jego funkcje muszą być obliczalne. Ale czy to prawda, że wszystkie funkcje Haskella (i ogólnie funkcje czyste) są z matematycznego punktu widzenia continuous?Czy wszystkie czyste funkcje w programowaniu funkcjonalnym są ciągłe?
Odpowiedz
Funkcje obliczalne są ciągłe w sensie ciągłości Scotta, o których mowa w drugim akapicie strony Wikipedii, do której jesteś podłączony.
Przykładem funkcji, która jest nie stała jest (pseudo-Haskell)
isInfinite :: [a] -> Bool
isInfinite xs
| {- xs is an infinite list x0 : x1 : x2 : ... -} = True
| {- xs is a finite list x0 : x1 : x2 : ... : xn : [] -} = False
| {- xs is a list with diverging spine
x0 : x1 : x2 : ... : xn : _|_ -} = _|_
to nie w sposób ciągły, ponieważ
() :() :() : ...
jest Supremum sekwencji
_|_
() : _|_
() :() : _|_
...
ale
True = isInfinite (() :() :() : ...)
nie supremum sekwencji
_|_ = isInfinite (_|_)
_|_ = isInfinite (() : _|_)
_|_ = isInfinite (() :() : _|_)
...
funkcje obliczalne są ciągłe, ponieważ w skończonym czasie funkcja może kontrolować tylko skończoną ilość jego wejścia. Jeśli więc funkcja obliczeniowa zwróci, powiedzmy, True
na określonym wejściu, musi zwrócić True
na każdym wejściu w zestawie wejść, które zgadzają się z pierwotnym wejściem w pewnym skończonym zbiorze obserwacji. Każda rosnąca sekwencja, która zbiega się z pierwotnym wejściem, ostatecznie wyląduje i pozostanie w tym zbiorze, więc sekwencja wartości funkcji w tej rosnącej sekwencji będzie zbieżała się z True
.
Funkcja ciągła nie musi być obliczalna. Na przykład funkcja zachowywania porządku (tj. f _|_ = _|_
lub f
jest stała) funkcja Integer -> Bool
jest ciągła, ponieważ Integer
jest domeną płaską. Ale oczywiście tylko niezliczona liczba z nich jest obliczalna.
Doskonała, czysta odpowiedź. – luqui
- 1. Mutowalność w programowaniu funkcjonalnym
- 2. Zrozumienie sekwencjonowania w programowaniu funkcjonalnym
- 3. Czy idempotentne funkcje są takie same jak czyste funkcje?
- 4. Określanie typu funkcji w Programowaniu funkcjonalnym
- 5. Domain Driven Design w programowaniu funkcjonalnym?
- 6. podpisy/typy w programowaniu funkcjonalnym (OCaml)
- 7. Czy są możliwe czyste i wirtualne funkcje Pythona?
- 8. Dlaczego powinienem używać funktory aplikacyjne w programowaniu funkcjonalnym?
- 9. Cel trzeciego argumentu funkcji "zmniejszania" w programowaniu funkcjonalnym Java 8
- 10. Czy dozwolone są czyste metody wirtualne w klasie szablonu?
- 11. Czy istnieje pojęcie "fold with break" lub "find with accumulator" w programowaniu funkcjonalnym?
- 12. Co to są czyste zmienne?
- 13. Czy te funkcje są rekursywne?
- 14. Czyste funkcje wirtualne i niewykorzystane argumenty funkcji podrzędnych w C++
- 15. Czy są dozwolone funkcje anonimowe?
- 16. Czy elementy tablicy argv zawsze są ciągłe w pamięci?
- 17. Czy nazwane funkcje lub anonimowe funkcje są preferowane w JavaScript?
- 18. Czy nazwane funkcje są niedoceniane w JavaScript?
- 19. Jakie matematyczne dualy są w programowaniu OO?
- 20. Co to są urządzenia w programowaniu?
- 21. Czy dostępne są czyste C# ZeroConf, bonjour lub dns-sd?
- 22. Czyste, funkcjonalne programowanie na GPU
- 23. Czy funkcje JavaScript tail-call są zoptymalizowane?
- 24. Czy zewnętrzne funkcje "C" są osobnym rodzajem?
- 25. Sprawdź, czy dwie funkcje std :: są równe
- 26. Jakiej techniki w programowaniu funkcjonalnym trudno się nauczyć, ale później przydatna?
- 27. Jakie są najważniejsze informacje o programowaniu Java?
- 28. Kiedy wykonywane są funkcje javascript
- 29. Filtr sekwencji F # w funkcjonalnym stylu
- 30. Czy można jednocześnie zminimalizować wszystkie funkcje w Android Studio?
@ HarryDeveloper1212 Myślę, że to dobre pytanie. Dokonałem pewnych poprawek, aby (mam nadzieję) wyjaśnić, co rozumiem przez to pytanie. Jeśli nie jesteś zadowolony z moich zmian, możesz ponownie [edytować swoje pytanie] (http://stackoverflow.com/posts/34617662/edit), aby je przywrócić. –