Koniec - opis funkcji

loza_prowizoryczna
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1628
0

Rozważam z czysto teoretycznego punktu widzenia:

  • mam zapisać stan terminujący (koniec)

I teraz zastanawiam się lepszą funkcją do jej opisu jest:

  • funkcja stała
  • funkcja liniowa
  • funkcja zbieżna

Z góry dziękuję za pomoc i porady.

lion137
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 5027
1

Trochę więcej kontekstu? Funkcja stała: nie interesuje mnie za dużo, daję, exit(0) i narka. Może funkcja liniowa, bo chcę zwrócić stan licznika, (counter liniowa inkrementacja)? Zbieżna, stan jakiegoś algorytmu, bazy...?

loza_prowizoryczna
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1628
0
lion137 napisał(a):

Trochę więcej kontekstu?

Potrzebuję opisać funkcję terminującą program na potrzeby programowania funkcyjnego. To jest w opisie.

Funkcja stała: nie interesuje mnie za dużo, daję, exit(0) i narka. Może funkcja liniowa, bo chcę zwrócić stan licznika, (counter liniowa inkrementacja)? Zbieżna, stan jakiegoś algorytmu, bazy...?

Przecież powyższe nie ma nic wspólnego z programowaniem funkcyjnym. Myślałem nad funkcją stałą ale przecież to położy program zaraz po wstaniu. Funkcja liniowa to przecież to samo tylko znamy moment. Trzecia opcja wydaje się być najciekawszą ale zastanawiam się czy w ogóle się odpali.

lion137
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 5027
0

Ok, niech będzie funkcyjne.

Myślałem nad funkcją stałą ale przecież to położy program zaraz po wstaniu

To jest dla mnie niejasne, bo funkcja stała to funkcja która celuje do jednego punktu dziedziny, więc czemu miałaby położyć program zaraz po wstaniu; mógłbyś podac konkretny przykład kodu?

loza_prowizoryczna
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1628
0
lion137 napisał(a):

To jest dla mnie niejasne, bo funkcja stała to funkcja która celuje do jednego punktu dziedziny, więc czemu miałaby położyć program zaraz po wstaniu; mógłbyś podac konkretny przykład kodu?

To jest bardzo proste - jeśli mamy jakiekolwiek złożenie funkcji z których jedna zawsze zwraca wartość stałą dla całego spektrum argumentów to cały program można uprościć do tej jednej wartości.

lion137
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 5027
0

Wcale nie, bo możesz wołać jakąś funkcję warunkowo; ale, to prowadzi donikąd, podaj jakiś usecase, kawałek kodu w systemie.

loza_prowizoryczna
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1628
0
lion137 napisał(a):

Wcale nie, bo możesz wołać jakąś funkcję warunkowo; ale, to prowadzi donikąd, podaj jakiś usecase,

W paradygmacie funkcyjnym często jest podnoszone że łatwo da się zweryfikować przejścia stanów w aplikacji oraz optymalizować takie przejścia z powodu braku side-effects poszczególnych funkcji. Ja chcę po prostu dowiedzieć się czy mój program prawidłowo się zakończy i jak to zapisać formalnie.

kawałek kodu w systemie.

Przecież wyraźnie napisałem że rozważam czystą teorię

elwis
  • Rejestracja: dni
  • Ostatnio: dni
0

Bardzo mało kontekstu, więc trudno powiedzieć. Mi to brzmi jak przepadek bardziej dla jakiejś monady niż funkcji. Po prostu masz ciąg funkcji jaki chcesz i one działają na monadzie rozrózniające stany: Nothing, InProgress x i Finished x. Jeśli jest Finished x to każda funkcja po prostu pcha wynik dalej.

loza_prowizoryczna
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1628
0
elwis napisał(a):

Bardzo mało kontekstu, więc trudno powiedzieć. Mi to brzmi jak przepadek bardziej dla jakiejś monady niż funkcji. Po prostu masz ciąg funkcji jaki chcesz i one działają na monadzie rozrózniające stany: Nothing, InProgress x i Finished x.

Czyli funkcję końca najlepiej opisać monadą?

EDIT:

Jeśli jest Finished x to każda funkcja po prostu pcha wynik dalej.

Chociaż dla mnie to wskazuje na funkcję stałą - operacje na monadzie z finished zawsze prowadzą do wyjścia.

lion137
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 5027
0

A jakaś customowa monada?

loza_prowizoryczna
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1628
0
lion137 napisał(a):

A jakaś customowa monada?

Co masz na myśli? Wolę ogólne rozwiązania - zwłaszcza że wydaje mi się że problem końca nie jest jakimś egzotycznym wymaganiem.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.