Hello! A small proposition for the next standard. 1) It is to lower verbosity with omitting 'let' keyword in do-notation and use only (=) for describing let/pure blocks. Example:
currently: main = do let x = expression1... let y = expression2... z <- action1 putStrLn (x ++ y ++ z) It could be made less verbose currently with putting x and y in the same 'let' block: main = do let x = expression1... y = expression2... z <- action1 putStrLn (x ++ y ++ z) But what if we use (=) for describing different expressions in do-block. main = do x = expression1... y = expression2... z <- action1 putStrLn (x ++ y ++ z) So pure 'let' expressions to use (=) for assignment and monadic actions use (<-) for execution/chaining. If 'let' is optional - this proposition will be backward compatible. 2) Second proposition is every pure expression ('let') in do-block to have visibility in whole block, just like top-level function is visible in whole module. Currently there is difference in visibility depending on that if a function is in do-block or is outside it. Example: main = do z <- action x x = expression1 y y = expression2 putStrLn (x ++ y ++ z) Best regards, Vassil Keremidchiev
_______________________________________________ Haskell-prime mailing list Haskell-prime@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-prime