on master help sign in
Remove some needless bracketing from if...then...else
7df6265Edwin Brady
lib/prelude.idr+8−7
@@ -155,8 +155,8 @@ ceiling x = prim__floatCeil x
155---- Ranges
155---- Ranges
156
156
157count : Num a => a -> a -> a -> List a
157count : Num a => a -> a -> a -> List a
158−count a inc b = if (a <= b) then (a :: count (a + inc) inc b)
158+count a inc b = if a <= b then a :: count (a + inc) inc b
159− else []
159+ else []
160
160
161syntax "[" [start] ".." [end] "]"
161syntax "[" [start] ".." [end] "]"
162 = count start 1 end
162 = count start 1 end
@@ -250,7 +250,9 @@ validFile (FHandle h) = do x <- nullPtr h
250
250
251while : |(test : IO Bool) -> |(body : IO ()) -> IO ()
251while : |(test : IO Bool) -> |(body : IO ()) -> IO ()
252while t b = do v <- t
252while t b = do v <- t
253− if v then (do { b; while t b }) else return ()
253+ if v then do b
254+ while t b
255+ else return ()
254
256
255
257
256readFile : String -> IO String
258readFile : String -> IO String
@@ -262,8 +264,7 @@ readFile fn = do h <- openFile fn Read
262 readFile' : File -> String -> IO String
264 readFile' : File -> String -> IO String
263 readFile' h contents =
265 readFile' h contents =
264 do x <- feof h
266 do x <- feof h
265− if (not x) then (do l <- fread h
267+ if not x then do l <- fread h
266− readFile' h (contents ++ l)
268+ readFile' h (contents ++ l)
267− )
268− else (return contents)
269+ else return contents
269
270
src/Idris/Parser.hs+1−1
@@ -536,7 +536,7 @@ pExtensions syn rules = choice (map (\x -> try (pExt syn x)) (filter valid rules
536pExt :: SyntaxInfo -> Syntax -> IParser PTerm
536pExt :: SyntaxInfo -> Syntax -> IParser PTerm
537pExt syn (Rule (s:ssym) ptm _)
537pExt syn (Rule (s:ssym) ptm _)
538 = do s1 <- pSymbol pSimpleExpr s
538 = do s1 <- pSymbol pSimpleExpr s
539− smap <- mapM (pSymbol pExpr') ssym
539+ smap <- mapM (pSymbol pExpr) ssym
540 let ns = mapMaybe id (s1:smap)
540 let ns = mapMaybe id (s1:smap)
541 return (update ns ptm) -- updated with smap
541 return (update ns ptm) -- updated with smap
542 where
542 where
tutorial/examples/interp.idr+3−2
@@ -34,9 +34,10 @@ using (G : Vect Ty n)
34 interp env (Var i) = lookup i env
34 interp env (Var i) = lookup i env
35 interp env (Val x) = x
35 interp env (Val x) = x
36 interp env (Lam sc) = \x => interp (x :: env) sc
36 interp env (Lam sc) = \x => interp (x :: env) sc
37− interp env (App f s) = (interp env f) (interp env s)
37+ interp env (App f s) = interp env f (interp env s)
38 interp env (Op op x y) = op (interp env x) (interp env y)
38 interp env (Op op x y) = op (interp env x) (interp env y)
39− interp env (If x t e) = if (interp env x) then (interp env t) else (interp env e)
39+ interp env (If x t e) = if interp env x then interp env t
40+ else interp env e
40
41
41 eId : Expr G (TyFun TyInt TyInt)
42 eId : Expr G (TyFun TyInt TyInt)
42 eId = Lam (Var stop)
43 eId = Lam (Var stop)
tutorial/interp.tex+6−6
@@ -196,10 +196,10 @@ interp : Env G -> Expr G t -> interpTy t
196interp env (Var i) = lookup i env
196interp env (Var i) = lookup i env
197interp env (Val x) = x
197interp env (Val x) = x
198interp env (Lam sc) = \x => interp (x :: env) sc
198interp env (Lam sc) = \x => interp (x :: env) sc
199−interp env (App f s) = (interp env f) (interp env s)
199+interp env (App f s) = interp env f (interp env s)
200interp env (Op op x y) = op (interp env x) (interp env y)
200interp env (Op op x y) = op (interp env x) (interp env y)
201−interp env (If x t e) = if (interp env x) then (interp env t)
201+interp env (If x t e) = if interp env x then interp env t
202− else (interp env e)
202+ else interp env e
203
203
204\end{SaveVerbatim}
204\end{SaveVerbatim}
205\codefig{interpdef}{Intepreter definition}
205\codefig{interpdef}{Intepreter definition}
@@ -255,7 +255,7 @@ type:
255
255
256\begin{SaveVerbatim}{appinterp}
256\begin{SaveVerbatim}{appinterp}
257
257
258−interp env (App f s) = (interp env f) (interp env s)
258+interp env (App f s) = interp env f (interp env s)
259
259
260\end{SaveVerbatim}
260\end{SaveVerbatim}
261\useverb{appinterp}
261\useverb{appinterp}
@@ -269,8 +269,8 @@ directly.
269\begin{SaveVerbatim}{opinterp}
269\begin{SaveVerbatim}{opinterp}
270
270
271interp env (Op op x y) = op (interp env x) (interp env y)
271interp env (Op op x y) = op (interp env x) (interp env y)
272−interp env (If x t e) = if (interp env x) then (interp env t)
272+interp env (If x t e) = if interp env x then interp env t
273− else (interp env e)
273+ else interp env e
274
274
275\end{SaveVerbatim}
275\end{SaveVerbatim}
276\useverb{opinterp}
276\useverb{opinterp}
tutorial/syntax.tex+3−1
@@ -33,7 +33,9 @@ hand side describes its expansion. The syntax rule itself consists of:
33\item \textbf{Keywords} --- here, \texttt{if}, \texttt{then} and \texttt{else}, which must
33\item \textbf{Keywords} --- here, \texttt{if}, \texttt{then} and \texttt{else}, which must
34be valid identifiers
34be valid identifiers
35\item \textbf{Non-terminals} --- included in square brackets, \texttt{[test]}, \texttt{[t]}
35\item \textbf{Non-terminals} --- included in square brackets, \texttt{[test]}, \texttt{[t]}
36−and \texttt{[e]} here, which stand for arbitrary expressions
36+and \texttt{[e]} here, which stand for arbitrary expressions. To avoid parsing ambiguities,
37+these expressions cannot use syntax extensions at the top level (though they can be used
38+in parentheses).
37\item \textbf{Symbols} --- included in quotations marks, e.g. \texttt{":="}
39\item \textbf{Symbols} --- included in quotations marks, e.g. \texttt{":="}
38\end{itemize}
40\end{itemize}
39
41
tutorial/typesfuns.tex+1−1
@@ -66,7 +66,7 @@ Boolean expressions can be tested with the \texttt{if...then...else} construct:
66
66
67\begin{SaveVerbatim}{ifthenelse}
67\begin{SaveVerbatim}{ifthenelse}
68
68
69−*prims> if (x==6*6+6) then "The answer!" else "Not the answer"
69+*prims> if x == 6 * 6 + 6 then "The answer!" else "Not the answer"
70"The answer!" : String
70"The answer!" : String
71
71
72\end{SaveVerbatim}
72\end{SaveVerbatim}