2012-02-27 11 views
13

Wygląda na to, że Haskell ustanowił kilka konwencji nazewniczych wokół monad.Jakie są wszystkie konwencje nazewnictwa Monady?

Przykłady:

  • załączonych T do końca w celu uzyskania nazwy transformatora monadę (np Reader ->ReaderT)
  • pomocą runXXX do wykonywania obliczeń monadę (np runST, runReader)
  • liftXXX dla różnych wartości XXX

Czy są inne konwencje nazewnictwa?

Odpowiedz

13
  • runX m gdzie m :: X a uruchomi X monady i powrót „efekt uboczny”, wraz z wynikiem monady, a.

  • evalX m uruchomi obliczenia i zwróci wynik, a.

  • execX m uruchomi obliczenia i zwróci "efekt uboczny", ale nie wynik.

  • Wyciągi są w różnych smakach, które mogą być nieco zbyt trudne dla mnie, aby je wyjaśnić w odpowiedzi na to pytanie. Powinieneś prawdopodobnie wiedzieć, lift i liftIO i być świadomym/ewentualnie szukać innych wariantów, takich jak liftWith i liftBaseWith. Zobacz na przykład publikację EZYanga na ten temat.

  • dołączenie T po nazwie monady oznacza transformator. Dołączenie M po nazwie funkcji oznacza, że ​​jest monadyczne. Dołączenie _ oznacza, że ​​wynik zostanie zignorowany.

  • Wszystkie inne sufiksy oznaczają "use hoogle".

+7

W krótkim aneksu http://www.haskell.org/ghc/docs/latest/html/libraries/base/Control-Monad.html#g:2 opisuje kilka konwencji nazewnictwa z syntezatora dotyczy to, kiedy przyrostek M w przeciwieństwie do przedrostka m jest właściwy. –

Powiązane problemy