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

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 :(

5

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

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?

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.

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) :)

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?

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?

fetch(req).retryN(5)

fetch(req).eventually

https://zio.surge.sh/

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 ! ;-) ).

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

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"

1 użytkowników online, w tym zalogowanych: 0, gości: 1