on master help sign in
Added lib/ and prelude
commit20bf4d7d2e726ae9b4800f50bfe2a7e5a8cc90ef authorEdwin Brady <eb@cs.st-andrews.ac.uk> dateFri 14 Oct 2011, 17:51 (15 years ago) parentb1419b2
6 files changed+84−4
interp.idr−1 nat.idr → lib/nat.idr lib/prelude.idr+71 miniidris.cabal+3 prims.mi+2 src/Main.hs+8−3
interp.idr−1
@@ -1,4 +1,3 @@
1−import nat;
21
32data Ty = TyNat | TyFun Ty Ty;
43
nat.idr → lib/nat.idrrenamed

The content is the same.

lib/prelude.idrnew file+71
@@ -0,0 +1,71 @@
1+import nat;
2+
3+data Bool = False | True;
4+
5+infixl 5 ==, /=, ==.;
6+infixl 6 <, <=, >, >=, <., <=., >., >=.;
7+infixl 7 <<, >>;
8+infixl 8 +,-,++,+.,-.;
9+infixl 9 *,/,*.,/.;
10+
11+intToBool : Int -> Bool;
12+intToBool 0 = False;
13+intToBool x = True;
14+
15+boolOp : (a -> a -> Int) -> a -> a -> Bool;
16+boolOp op x y = intToBool (op x y);
17+
18+(+) : Int -> Int -> Int;
19+(+) = prim__addInt;
20+
21+(-) : Int -> Int -> Int;
22+(-) = prim__subInt;
23+
24+(*) : Int -> Int -> Int;
25+(*) = prim__mulInt;
26+
27+div : Int -> Int -> Int;
28+div = prim__divInt;
29+
30+(==) : Int -> Int -> Bool;
31+(==) = boolOp prim__eqInt;
32+
33+(<) : Int -> Int -> Bool;
34+(<) = boolOp prim__ltInt;
35+
36+(<=) : Int -> Int -> Bool;
37+(<=) = boolOp prim__lteInt;
38+
39+(>) : Int -> Int -> Bool;
40+(>) = boolOp prim__gtInt;
41+
42+(>=) : Int -> Int -> Bool;
43+(>=) = boolOp prim__gteInt;
44+
45+(+.) : Float -> Float -> Float;
46+(+.) = prim__addFloat;
47+
48+(-.) : Float -> Float -> Float;
49+(-.) = prim__subFloat;
50+
51+(*.) : Float -> Float -> Float;
52+(*.) = prim__mulFloat;
53+
54+(/.) : Float -> Float -> Float;
55+(/.) = prim__divFloat;
56+
57+(==.) : Float -> Float -> Bool;
58+(==.) = boolOp prim__eqFloat;
59+
60+(<.) : Float -> Float -> Bool;
61+(<.) = boolOp prim__ltFloat;
62+
63+(<=.) : Float -> Float -> Bool;
64+(<=.) = boolOp prim__lteFloat;
65+
66+(>.) : Float -> Float -> Bool;
67+(>.) = boolOp prim__gtFloat;
68+
69+(>=.) : Float -> Float -> Bool;
70+(>=.) = boolOp prim__gteFloat;
71+
miniidris.cabal+3
@@ -14,6 +14,9 @@ Description: An experimental new version of Idris
1414Cabal-Version: >= 1.6
1515Build-type: Simple
1616
17+Data-files: *.idr
18+Data-dir: lib
19+
1720Executable miniidris
1821 Main-is: Main.hs
1922 hs-source-dirs: src
prims.mi+2
@@ -1,3 +1,5 @@
1+import nat;
2+
13data Bool = False | True;
24
35infixl 5 ==, /=, ==.;
src/Main.hs+8−3
@@ -27,6 +27,8 @@ import Idris.Imports
2727
2828data Opt = Filename String
2929 | Version
30+ | NoPrelude
31+ | NoREPL
3032 | OLogging Int
3133 deriving Eq
3234
@@ -39,8 +41,9 @@ runIdris opts =
3941 do let inputs = opt getFile opts
4042 mapM_ makeOption opts
4143 elabPrims
44+ when (not (NoPrelude `elem` opts)) $ loadModule "prelude"
4245 mapM_ loadModule inputs
43− repl
46+ when (not (NoREPL `elem` opts)) $ repl
4447 where
4548 makeOption (OLogging i) = setLogLevel i
4649 makeOption _ = return ()
@@ -57,8 +60,10 @@ usage = do putStrLn "You're doing it wrong"
5760
5861parseArgs :: [String] -> IO [Opt]
5962parseArgs [] = return []
60−parseArgs ("--log":lvl:ns) = liftM (OLogging (read lvl) : ) (parseArgs ns)
61−parseArgs (n:ns) = liftM (Filename n : ) (parseArgs ns)
63+parseArgs ("--log":lvl:ns) = liftM (OLogging (read lvl) : ) (parseArgs ns)
64+parseArgs ("--noprelude":ns) = liftM (NoPrelude : ) (parseArgs ns)
65+parseArgs ("--check":ns) = liftM (NoREPL : ) (parseArgs ns)
66+parseArgs (n:ns) = liftM (Filename n : ) (parseArgs ns)
6267
6368{-
6469main'