2016-07-05 8 views
0

Ich lese, dass Haskell's do notation is quite harmful. Da ich immer noch Haskell lerne, möchte ich keine schlechten Angewohnheiten machen. Ich lerne eine Bibliothek namens Reflex und ist ein Beispiel:umschreiben dieses Beispiel ohne do

import Reflex.Dom 

main = mainWidget $ el "div" $ do 
    t <- textInput def 
    dynText $ _textInput_value t 

Ich bin reading dass tun Notation mit der Anwesenheit von Monaden wie IO zu tun hat, und hat mit <- und $ Betreiber zu tun. Wie kann ich diese paar Zeilen ohne do schreiben?


Wenn Sie do unterstützen ... könnten Sie erklären es die Verwendung in Haskell und diesem Beispiel ist?

+5

Do Notation ist nicht schädlich. In der Tat wurde die Do-Notation zu Applikativen erweitert, so dass wir ihre Verwendung noch mehr fördern. – ErikR

+1

Jede einzelne Antwort auf die von Ihnen verknüpfte Frage besagt, dass die Do-Notation nützlich ist und nicht vermieden werden sollte. – interjay

Antwort

2

do -Notation ist reiner syntaktischer Zucker. Es führt auf sehr einfache Weise zu Aufrufen von >>=. Zitiert the Haskell Report:

Übersetzung: Sie Ausdrücke erfüllen diese Identitäten, die als Übersetzung in den Kernel verwendet werden können, nachdem leer stmts beseitigen:

do {e} = e 
do {e;stmts} = e >> do {stmts} 
do {p <- e; stmts} = let ok p = do {stmts} 
    ok _ = fail "..." 
    in e >>= ok 
do {let decls; stmts} = let decls in do {stmts} 

Dies bedeutet, dass Ihr Beispiel würde wie folgt aussehen:

main = mainWidget $ el "div" $ 
    textInput def >>= $ \t -> 
    dynText $ _textInput_value t 

Es ist nichts schädlich an do -Notation. Ich weiß nicht, woher du diese Idee hast! Es ist buchstäblich eine andere Art, denselben Code zu schreiben.

Verwandte Themen