# Copyright (c) Facebook, Inc. and its affiliates. # # This source code is licensed under the MIT license found in the # LICENSE file in the root directory of this source tree. # -l Operator.print -l Operator.printAt -u Operator.f === module Operator where main :: IO () main = do - putStrLn $ show $ 3 + 4 + print $ 3 + 4 -- lets make sure - putStrLn .@@@ show .@@@ foo || + print $ foo || -- that comments end up in the right place bar || baz && -- even this one quux -- lets also make sure - putStrLn $ show $ foo + print $ foo -- that these comments end up in the right place || bar || baz -- even when the operator is leading && quux return ({- comment -} x >= 1 || y >= 2) - putStrLn {- comment here -} $ show $ foo || bar - putStrLn $ {- comment here -} show $ foo || bar - putStrLn $ show {- comment here -} $ foo || bar - putStrLn $ show $ {- comment here -} foo || bar - putStrLn $ show $ foo {- comment here -} || bar - putStrLn $ show $ foo || {- comment here -} bar - putStrLn $ show $ foo || bar {- comment here -} + print $ foo || bar + print $ foo || bar + print $ foo || bar + print $ {- comment here -} foo || bar + print $ foo {- comment here -} || bar + print $ foo || {- comment here -} bar + print $ foo || bar {- comment here -} - putStrLn (show $ foo || bar) - putStrLn (show (foo || bar)) + print $ foo || bar + print $ foo || bar {-# RULES "print" forall x. putStrLn $ show $ x = print $ x #-} f :: Int -> Bool f x = x == 2 g :: Int -> Bool -g y = f y /= False +g y = (y == 2) /= False roundtrip :: IO [a] roundtrip = return $ mconcat [ timeToText $ time_enrolled - mod time_enrolled t , ":" ] -- Ensure local fixity declarations are handled properly (.@@@) :: (a -> b) -> a -> b f .@@@ x = f x infixr 0 .@@@ {-# RULES "printAt" forall x. putStrLn .@@@ show .@@@ x = print $ x #-}