Której biblioteki używać do logowania w Haskellu?

Której biblioteki używać do logowania w Haskellu?
KamilAdam
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Silesia/Marki
  • Postów: 5555
0

j.w. A może w ogóle nie trzeba logować?
Ja staram się użyć co-log, ale ta biblioteka chyba przekracza moje zdolności intelektualne. Wiem że mógłbym uzyć RIO w którym to już jest razem spięte, ale na razie chce zostać przy relude

Mały bonus, w tutorialu co-logera jest opisana Comonada, Jakby zwykłe monady nie były wystarczająco trudne :(

somekind
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
5

No ale logować trzeba błędy, a w językach z HKT nie ma błędów, więc o co kaman?

KamilAdam
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Silesia/Marki
  • Postów: 5555
0
somekind napisał(a):

No ale logować trzeba błędy, a w językach z HKT nie ma błędów, więc o co kaman?

To wyjaśnia czemu jest tak mało przykładów z użycia logerów w Haskellu, ale nie wyjaśnia czemu istnieje tak dużo bibliotek do logowania. Dużo więcej niż w Javie

problem może być między krzesłem, a klawiaturą

Piszę program który nie do końca rozumiem jak działa i co tam się dzieje w środku, wiec uznałem że dodanie logera będzie naturalne, ale może nie jest?

SA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1452
1

Programy w Haskellu są pure, więc nie mają skutków ubocznych, więc ich uruchamianie nie ma sensu, bo i tak się nic nie stanie, więc nie ma potrzeby logowania niczego, qed.

KamilAdam
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Silesia/Marki
  • Postów: 5555
1
Saalin napisał(a):

Programy w Haskellu są pure, więc nie mają skutków ubocznych, więc ich uruchamianie nie ma sensu, bo i tak się nic nie stanie, więc nie ma potrzeby logowania niczego, qed.

Widzę że masz dużą wiedzę o Haskellu :D Programy w Haskellu mają skutki nieuboczne czyli czyste (ang. pure effects) :)

stivens
  • Rejestracja: dni
  • Ostatnio: dni
1

(offtop w odpowiedzi na offtop)
Ehhh nie wiem jak w Haskellu - bo znam tylko podstawy - ale w takim ZIO paradoksalnie prosciej robi sie efekty niz w np. czystej Javie.

Przyklad: rownolegle, asynchroniczne fetchowanie requestow?

Kopiuj
def fetch(req: Request): Task[JSON] = ???

val requests: List[Request] = ???

ZIO.foreachPar(requests)(fetch)

Requesty z jakiegos powodu sie czasami niedeterministycznie wysypuja po stronie zewnetrznego API i trzeba ponowic probe?

Kopiuj
fetch(req).retryN(5)

fetch(req).eventually

https://zio.surge.sh/

jarekr000000
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: U krasnoludów - pod górą
  • Postów: 4714
2

Przyznam uczciwie, że jak już robie dupadebug w haskellu to "unsafePerofmIO" i do przodu. Z normalnego, ludzkiego logowania jeszcze nie korzystałem. W kodzie kulegów widzę debugM - hslogger, ale na razie nie mam zdania na ten temat. (Widze, że działa i są logi - szok ! ;-) ).

KamilAdam
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Silesia/Marki
  • Postów: 5555
0

Człowiek czyta dokumentacje magicznych bibliotek do logowania, ostatecznie się poddaje i pisze swój prymitywny system do logowania na podstawie monady Writer a tu ktoś taką manianę odwala jak Relude.Debug i Debug.Trace czyli

Kopiuj
trace :: String -> a -> a
trace string expr = unsafePerformIO $ do
    traceIO string
    return expr

Przyznam uczciwie, że jak już robie dupadebug w haskellu to "unsafePerofmIO" i do przodu.

@jarekr000000: Nie musisz, Ktoś już opakował to w bibliotekę o_0"

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.