Szukam obsługi funkcji, które zwracają obietnice z funkcjami Ramdy innymi niż pipeP. Próbuję porównać funkcje (z których jedna zwraca obietnicę) z równymi wartościami:Obsługa programowania asynchronicznego z Ramdą
getSectionFromDb :: obj -> promise
getSectionFromData :: obj -> number
R.equals(
getSectionFromDb,
getSectionFromData
)
Są tu dwa czynniki. Pierwsze R.equals nie będzie oceniać funkcji, ale tym większy problem, że porównuję obietnicę z liczbą.
Czy istnieje funkcjonalny sposób robienia tego rodzaju rzeczy (wiem, że funkcje nie są referencyjne przezroczyste, ale musi istnieć sposób radzenia sobie z io)? Czy jest sposób na zrobienie tego w Ramdzie?
Dzięki.
Brzmi tak, jakbyś chciał "podnieść" funkcję "równa się" - najpierw w monadzie obietnicy, a następnie w funkcji aplikacyjnej; niestety Ramda może podnosić tylko listy. – Bergi
Więc chcesz funkcji "??? :: (obj -> Obietnica) -> (obj -> liczba) -> (obj -> Obietnica ) '? –
Bergi
@Bergi: Dokumentacja Ramdy nie nadaje się do tego, by tuleć, ale 'lift' ** [działa na dowolnym' Applicative Funktorze'] (https://github.com/ramda/ramda/blob/master/test/liftN .js # L42-L45) **. –