git.iko.soy/rowtype-yoga/purescript-native
on golang help sign in
Change record field separator to a comma
commitb29be8e8b0d5e47112639f0aa0085edf0fb1ac4e authorPhil Freeman <paf31@cantab.net> dateSat 2 Nov 2013, 11:36 (13 years ago) parentb9188c2
8 files changed+27−30
README.md+3−6 examples/passing/List.ps+1−1 examples/passing/Nested.ps+1−1 examples/passing/Person.ps+1−1 examples/passing/TypeSynonyms.ps+2−2 libraries/prelude/prelude.ps+17−17 src/Language/PureScript/Parser/Types.hs+1−1 src/Language/PureScript/Pretty/Types.hs+1−1
README.md+3−6
@@ -57,10 +57,7 @@ PureScript can also be seen as a trade-off between a theoretically ideal languag
5757The following code defines a `Person` data type and a function to generate a string representation for a `Person`:
5858
5959```haskell
60−data Person = Person
61− { name :: String
62− ; age :: Number
63− }
60+data Person = Person { name :: String, age :: Number }
6461
6562extern numberToString :: Number -> String
6663
@@ -104,7 +101,7 @@ The type system defines the following types:
104101- Arrays
105102 - E.g. `[String]`, `[[Number]]`
106103- Records
107− - E.g. `{ foo :: String ; bar :: Number }`
104+ - E.g. `{ foo :: String, bar :: Number }`
108105- Tagged Unions
109106 - E.g. `data Foo a = Foo | Bar String`
110107- Functions
@@ -237,7 +234,7 @@ Functions may also be polymorphic in row types or type variables with other kind
237234addProps = \o -> o.foo + o.bar
238235```
239236
240−Here, `addProps` is inferred to have type `forall r. { foo :: Number; bar :: Number | r } -> Number`. That is, it can take any type which has properties `Foo` and `Bar`, and *any other record properties*.
237+Here, `addProps` is inferred to have type `forall r. { foo :: Number, bar :: Number | r } -> Number`. That is, it can take any type which has properties `Foo` and `Bar`, and *any other record properties*.
241238
242239So, the following compiles:
243240
examples/passing/List.ps+1−1
@@ -2,7 +2,7 @@ data List a
22 = Nil
33 | Cons
44 { head :: a
5− ; tail :: List a
5+ , tail :: List a
66 }
77
88isNull = \l -> case l of
examples/passing/Nested.ps+1−1
@@ -1,3 +1,3 @@
1−data Extend r a = Extend { prev :: r a; next :: a }
1+data Extend r a = Extend { prev :: r a, next :: a }
22
33data Matrix r a = Square (r (r a)) | Bigger (Matrix (Extend r) a)
examples/passing/Person.ps+1−1
@@ -1,4 +1,4 @@
1−data Person = Person { name :: String; age :: Number }
1+data Person = Person { name :: String, age :: Number }
22
33extern itoa :: Number -> String
44
examples/passing/TypeSynonyms.ps+2−2
@@ -1,6 +1,6 @@
11type Lens a b =
22 { get :: a -> b
3− ; set :: a -> b -> a
3+ , set :: a -> b -> a
44 }
55
66composeLenses :: forall a b c. Lens a b -> Lens b c -> Lens a c
@@ -12,7 +12,7 @@ composeLenses = \l1 -> \l2 ->
1212 return l1.set a b1
1313 }
1414
15−type Pair a b = { fst :: a; snd :: b }
15+type Pair a b = { fst :: a, snd :: b }
1616
1717fst :: forall a b. Lens (Pair a b) a
1818fst = {
libraries/prelude/prelude.ps+17−17
@@ -143,7 +143,7 @@ all = \p -> \as -> do
143143
144144-- Pairs
145145
146−type Tuple a b = { fst :: a ; snd :: b }
146+type Tuple a b = { fst :: a, snd :: b }
147147
148148curry :: forall a b c. (Tuple a b -> c) -> a -> b -> c
149149curry = \f -> \a -> \b -> f { fst: a, snd: b }
@@ -239,22 +239,22 @@ extern decodeURI :: String -> String
239239
240240type Math =
241241 { abs :: Number -> Number
242− ; acos :: Number -> Number
243− ; asin :: Number -> Number
244− ; atan :: Number -> Number
245− ; atan2 :: (Number, Number) -> Number
246− ; aceil :: Number -> Number
247− ; cos :: Number -> Number
248− ; exp :: Number -> Number
249− ; floor :: Number -> Number
250− ; log :: Number -> Number
251− ; max :: (Number, Number) -> Number
252− ; pow :: (Number, Number) -> Number
253− ; random :: () -> Number
254− ; round :: Number -> Number
255− ; sin :: Number -> Number
256− ; sqrt :: Number -> Number
257− ; tan :: Number -> Number
242+ , acos :: Number -> Number
243+ , asin :: Number -> Number
244+ , atan :: Number -> Number
245+ , atan2 :: (Number, Number) -> Number
246+ , aceil :: Number -> Number
247+ , cos :: Number -> Number
248+ , exp :: Number -> Number
249+ , floor :: Number -> Number
250+ , log :: Number -> Number
251+ , max :: (Number, Number) -> Number
252+ , pow :: (Number, Number) -> Number
253+ , random :: () -> Number
254+ , round :: Number -> Number
255+ , sin :: Number -> Number
256+ , sqrt :: Number -> Number
257+ , tan :: Number -> Number
258258 }
259259
260260extern math :: Math
src/Language/PureScript/Parser/Types.hs+1−1
@@ -84,7 +84,7 @@ parseRowEnding :: P.Parsec String ParseState Row
8484parseRowEnding = P.option REmpty (RowVar <$> (lexeme (indented *> P.char '|') *> indented *> identifier))
8585
8686parseRow :: P.Parsec String ParseState Row
87−parseRow = (fromList <$> (parseNameAndType `P.sepBy` (indented *> semi)) <*> parseRowEnding) P.<?> "row"
87+parseRow = (fromList <$> (parseNameAndType `P.sepBy` (indented *> comma)) <*> parseRowEnding) P.<?> "row"
8888 where
8989 fromList :: [(String, Type)] -> Row -> Row
9090 fromList [] r = r
src/Language/PureScript/Pretty/Types.hs+1−1
@@ -47,7 +47,7 @@ typeLiterals = Pattern $ A.Kleisli match
4747 match _ = Nothing
4848
4949prettyPrintRow :: Row -> String
50−prettyPrintRow = (\(tys, tail) -> intercalate "; " (map (uncurry nameAndTypeToPs) tys) ++ tailToPs tail) . toList []
50+prettyPrintRow = (\(tys, tail) -> intercalate ", " (map (uncurry nameAndTypeToPs) tys) ++ tailToPs tail) . toList []
5151 where
5252 nameAndTypeToPs :: String -> Type -> String
5353 nameAndTypeToPs name ty = name ++ " :: " ++ prettyPrintType ty