git.iko.soy/rowtype-yoga/purescript-native
on golang help sign in
Int literals #1061
commitfb12693ea27be056845a60c5c2b7e0a20b89bc46 authorPhil Freeman <paf31@cantab.net> dateMon 20 Apr 2015, 11:37 (12 years ago) parentfa59cf1
5 files changed+40−22
examples/passing/Operators.purs+14−14 psc-docs/Main.hs+1−1 src/Language/PureScript/Environment.hs+14 src/Language/PureScript/TypeChecker/Types.hs+7−3 tests/prelude.purs+4−4
examples/passing/Operators.purs+14−14
@@ -12,9 +12,9 @@ module Main where
1212 test1 :: forall n. (Num n) => n -> n -> (n -> n -> n) -> n
1313 test1 x y z = x * y + z x y
1414
15− test2 = (\x -> x.foo false) { foo : \_ -> 1 }
15+ test2 = (\x -> x.foo false) { foo : \_ -> 1.0 }
1616
17− test3 = (\x y -> x)(1 + 2 * (1 + 2)) (true && (false || false))
17+ test3 = (\x y -> x)(1.0 + 2.0 * (1.0 + 2.0)) (true && (false || false))
1818
1919 k = \x -> \y -> x
2020
@@ -25,9 +25,9 @@ module Main where
2525 (%%) :: Number -> Number -> Number
2626 (%%) x y = x * y + y
2727
28− test5 = 1 %% 2 %% 3
28+ test5 = 1.0 %% 2.0 %% 3.0
2929
30− test6 = ((\x -> x) `k` 2) 3
30+ test6 = ((\x -> x) `k` 2.0) 3.0
3131
3232 (<+>) :: String -> String -> String
3333 (<+>) = \s1 s2 -> s1 ++ s2
@@ -49,7 +49,7 @@ module Main where
4949 (...) :: forall a. [a] -> [a] -> [a]
5050 (...) = \as -> \bs -> as
5151
52− test11 = [1, 2, 3] ... [4, 5, 6]
52+ test11 = [1.0, 2.0, 0.0] ... [4.0, 5.0, 6.0]
5353
5454 test12 (<%>) a b = a <%> b
5555
@@ -62,21 +62,21 @@ module Main where
6262 test15 a b = const false $ a `test14` b
6363
6464 test17 :: Number
65− test17 = negate (-1)
65+ test17 = negate (-1.0)
6666
6767 test18 :: Number
68− test18 = negate $ negate 1
68+ test18 = negate $ negate 1.0
6969
7070 test19 :: Number
71− test19 = negate $ negate (-1)
71+ test19 = negate $ negate (-1.0)
7272
7373 test20 :: Number
74− test20 = 1 @ 2
74+ test20 = 1.0 @ 2.0
7575 where
7676 (@) x y = x + y * y
7777
7878 main = do
79− let t1 = test1 1 2 (\x y -> x + y)
79+ let t1 = test1 1.0 2.0 (\x y -> x + y)
8080 let t2 = test2
8181 let t3 = test3
8282 let t4 = test4
@@ -87,10 +87,10 @@ module Main where
8787 let t9 = test9
8888 let t10 = test10
8989 let t11 = test11
90− let t12 = test12 k 1 2
91− let t13 = test13 k 1 2
92− let t14 = test14 1 2
93− let t15 = test15 1 2
90+ let t12 = test12 k 1.0 2.0
91+ let t13 = test13 k 1.0 2.0
92+ let t14 = test14 1.0 2.0
93+ let t15 = test15 1.0 2.0
9494 let t17 = test17
9595 let t18 = test18
9696 let t19 = test19
psc-docs/Main.hs+1−1
@@ -207,7 +207,7 @@ prettyPrintType' :: P.Type -> String
207207prettyPrintType' = P.prettyPrintType . P.everywhereOnTypes dePrim
208208 where
209209 dePrim ty@(P.TypeConstructor (P.Qualified _ name))
210− | ty == P.tyBoolean || ty == P.tyNumber || ty == P.tyString =
210+ | ty == P.tyBoolean || ty == P.tyNumber || ty == P.tyString || ty == P.tyChar || ty == P.tyInt =
211211 P.TypeConstructor $ P.Qualified Nothing name
212212 dePrim other = other
213213
src/Language/PureScript/Environment.hs+14
@@ -184,12 +184,24 @@ tyFunction = primTy "Function"
184184tyString :: Type
185185tyString = primTy "String"
186186
187+-- |
188+-- Type constructor for strings
189+--
190+tyChar :: Type
191+tyChar = primTy "Char"
192+
187193-- |
188194-- Type constructor for numbers
189195--
190196tyNumber :: Type
191197tyNumber = primTy "Number"
192198
199+-- |
200+-- Type constructor for integers
201+--
202+tyInt :: Type
203+tyInt = primTy "Int"
204+
193205-- |
194206-- Type constructor for booleans
195207--
@@ -222,7 +234,9 @@ primTypes = M.fromList [ (primName "Function" , (FunKind Star (FunKind Star Star
222234 , (primName "Array" , (FunKind Star Star, ExternData))
223235 , (primName "Object" , (FunKind (Row Star) Star, ExternData))
224236 , (primName "String" , (Star, ExternData))
237+ , (primName "Char" , (Star, ExternData))
225238 , (primName "Number" , (Star, ExternData))
239+ , (primName "Int" , (Star, ExternData))
226240 , (primName "Boolean" , (Star, ExternData)) ]
227241
228242-- |
src/Language/PureScript/TypeChecker/Types.hs+7−3
@@ -212,7 +212,8 @@ infer val = rethrow (onErrorMessages (ErrorInferringType val)) $ infer' val
212212-- Infer a type for a value
213213--
214214infer' :: Expr -> UnifyT Type Check Expr
215−infer' v@(NumericLiteral _) = return $ TypedValue True v tyNumber
215+infer' v@(NumericLiteral (Left _)) = return $ TypedValue True v tyInt
216+infer' v@(NumericLiteral (Right _)) = return $ TypedValue True v tyNumber
216217infer' v@(StringLiteral _) = return $ TypedValue True v tyString
217218infer' v@(BooleanLiteral _) = return $ TypedValue True v tyBoolean
218219infer' (ArrayLiteral vals) = do
@@ -350,7 +351,8 @@ inferProperty _ _ = return Nothing
350351inferBinder :: Type -> Binder -> UnifyT Type Check (M.Map Ident Type)
351352inferBinder _ NullBinder = return M.empty
352353inferBinder val (StringBinder _) = val =?= tyString >> return M.empty
353−inferBinder val (NumberBinder _) = val =?= tyNumber >> return M.empty
354+inferBinder val (NumberBinder (Left _)) = val =?= tyInt >> return M.empty
355+inferBinder val (NumberBinder (Right _)) = val =?= tyNumber >> return M.empty
354356inferBinder val (BooleanBinder _) = val =?= tyBoolean >> return M.empty
355357inferBinder val (VarBinder name) = return $ M.singleton name val
356358inferBinder val (ConstructorBinder ctor binders) = do
@@ -458,7 +460,9 @@ check' val u@(TUnknown _) = do
458460 (val'', ty') <- instantiatePolyTypeWithUnknowns val' ty
459461 ty' =?= u
460462 return $ TypedValue True val'' ty'
461−check' v@(NumericLiteral _) t | t == tyNumber =
463+check' v@(NumericLiteral (Left _)) t | t == tyInt =
464+ return $ TypedValue True v t
465+check' v@(NumericLiteral (Right _)) t | t == tyNumber =
462466 return $ TypedValue True v t
463467check' v@(StringLiteral _) t | t == tyString =
464468 return $ TypedValue True v t
tests/prelude.purs+4−4
@@ -194,9 +194,9 @@ module Prelude
194194
195195 instance semiringNumber :: Semiring Number where
196196 (+) = numAdd
197− zero = 0
197+ zero = 0.0
198198 (*) = numMul
199− one = 1
199+ one = 1.0
200200
201201 instance semiringUnit :: Semiring Unit where
202202 (+) _ _ = unit
@@ -226,7 +226,7 @@ module Prelude
226226
227227 instance moduloSemiringNumber :: ModuloSemiring Number where
228228 (/) = numDiv
229− mod _ _ = 0
229+ mod _ _ = 0.0
230230
231231 instance moduloSemiringUnit :: ModuloSemiring Unit where
232232 (/) _ _ = unit
@@ -1042,4 +1042,4 @@ module Control.Monad.ST where
10421042 """ :: forall a r. (forall h. Eff (st :: ST h | r) a) -> Eff r a
10431043
10441044 pureST :: forall a. (forall h r. Eff (st :: ST h | r) a) -> a
1045− pureST st = runPure (runST st)
1045+ pureST st = runPure (runST st)