Commit Graph

206 Commits

Author SHA1 Message Date
Gabriel Gonzalez
d36eabb0af Update documentation 2016-09-18 21:28:21 -07:00
Gabriel Gonzalez
80b9b25d24 Update documentation 2016-09-18 21:13:03 -07:00
Gabriel Gonzalez
3e9d230498 Add Natural/even and Natural/odd 2016-09-18 21:07:49 -07:00
Gabriel Gonzalez
e597a97e78 Add Text/concat 2016-09-18 18:45:34 -07:00
Gabriel Gonzalez
6e74794a76 Add List/concat 2016-09-18 18:31:23 -07:00
Gabriel Gonzalez
1260b92fdc Rename ListConcat constructor to ListAppend 2016-09-18 18:18:08 -07:00
Gabriel Gonzalez
eb4e482380 Rename fields generated by List/indexed 2016-09-18 18:09:11 -07:00
Gabriel Gonzalez
324a29be12 Rename List/first to List/head 2016-09-18 17:54:58 -07:00
Gabriel Gonzalez
11a06ab540 Replace drop/dropEnd with splitAt/splitAtEnd 2016-09-18 17:50:45 -07:00
Gabriel Gonzalez
1332f6cfb0 Fix pretty-printing of (==) and (/=) to match parser 2016-09-18 17:34:56 -07:00
Gabriel Gonzalez
16c72f5a76 Add (==) and (/=) 2016-09-18 16:28:03 -07:00
Gabriel Gonzalez
076678f1de Add support for decoding Maybes 2016-09-18 15:38:36 -07:00
Gabriel Gonzalez
d39cf8876e Re-export Text 2016-09-18 15:24:54 -07:00
Gabriel Gonzalez
429dbd266b Update documentation 2016-09-18 15:24:42 -07:00
Gabriel Gonzalez
acd77292ef Reintroduce indexed variables
The simpler approach still permitted variable capture.  For example, this would
break:

    \x -> (\y -> (\x -> y)) x

That should reduce to:

    \x -> \x -> x@1  -- ... not even expressible under the simpler system

... but it actually reduced to:

    \x -> \x -> x

This also required disabling multi-`let` since in the process of fixing this I
realized that this expression is ambiguous:

    \(x : Type) ->
    let x : Type = Bool
    let f (y : x) = y
    in  f   -- ^ Which `x` does this refer to

... because it's supposed to be semantically equivalent to:

    \(x : Type) ->
    (   \(x : Type)
    ->  \(f : forall (y : x) -> x)
    ->  f              -- ^ This refers to the inner `x : Type`
    )
    Bool
    (\(y : x) -> y)
        -- ^ ... but this refers to the outer `x : Type`

Now the code only permits a single `let` binding in each `let ... in` expression
2016-09-18 14:22:45 -07:00
Gabriel Gonzalez
0da0968147 Polish documentation 2016-09-16 20:23:12 -07:00
Gabriel Gonzalez
d0a4134e25 Reintroduce Unicode support 2016-09-16 20:16:46 -07:00
Gabriel Gonzalez
f5a7e50d07 Use {} for empty record literals 2016-09-16 19:03:10 -07:00
Gabriel Gonzalez
6ea1b4ae5a Add type annotations for let results 2016-09-16 17:39:59 -07:00
Gabriel Gonzalez
47eb966f8e Reuse buildLet in Buildable instance for Let 2016-09-16 17:21:26 -07:00
Gabriel Gonzalez
d2ec1c1cc2 Space out record syntax 2016-09-16 17:11:42 -07:00
Gabriel Gonzalez
c3bbe324b3 Add List/dropEnd 2016-09-16 17:06:24 -07:00
Gabriel Gonzalez
b777f4252c Add List/reverse 2016-09-16 16:58:35 -07:00
Gabriel Gonzalez
35e03c5a02 Replace List/index with List/drop
You can implement `List/index` equally efficiently in terms of `List/drop` and
`List/first`
2016-09-16 09:48:04 -07:00
Gabriel Gonzalez
c09a586117 Add Natural/isZero 2016-09-16 09:32:50 -07:00
Gabriel Gonzalez
b8909addf4 Add List/index 2016-09-16 09:22:03 -07:00
Gabriel Gonzalez
73c817ec94 Use {:} for empty record types and {=} for empty record literals 2016-09-16 09:14:54 -07:00
Gabriel Gonzalez
d15ed8ef5e Add List/length 2016-09-16 09:10:56 -07:00
Gabriel Gonzalez
1741db3702 Add List/last 2016-09-16 09:04:08 -07:00
Gabriel Gonzalez
a0a2c54671 Add List/first 2016-09-16 08:58:42 -07:00
Gabriel Gonzalez
a34dee9356 Fix pretty-printing for function arguments 2016-09-15 22:17:23 -07:00
Gabriel Gonzalez
39cee75f69 Tighten record pretty-printing 2016-09-15 22:13:53 -07:00
Gabriel Gonzalez
b068384098 Use {1} to denote empty record type
This eliminates the need for double braces
2016-09-15 22:08:40 -07:00
Gabriel Gonzalez
09fe4bf1cd Add List/indexed 2016-09-15 21:41:10 -07:00
Gabriel Gonzalez
59a0c68e1e Add Maybe/fold 2016-09-15 20:24:28 -07:00
Gabriel Gonzalez
2e0689a7aa Reintroduce support for Maybe
... but this time using a syntax similar to `List` literals
2016-09-15 19:52:59 -07:00
Gabriel Gonzalez
c5b781e03e Change list literal syntax
Move the type annotation outside the list

This is to prepare for an equivalent syntax for `Maybe` literals
2016-09-15 09:34:55 -07:00
Gabriel Gonzalez
6580a4cbf1 Change [ a ] to List a 2016-09-15 09:03:12 -07:00
Gabriel Gonzalez
7ea7603594 Update documentation 2016-09-14 19:48:35 -07:00
Gabriel Gonzalez
e2b247b705 Fix normalization of if expressions 2016-09-13 21:38:51 -07:00
Gabriel Gonzalez
abbcdb8b55 Rename Star/Box to Kind/Type 2016-09-13 21:38:37 -07:00
Gabriel Gonzalez
d0e29c66f9 Polish source 2016-09-13 21:27:49 -07:00
Gabriel Gonzalez
7ee927e9ad Disable dependent types 2016-09-13 21:15:56 -07:00
Gabriel Gonzalez
78d2975d48 Use parseUrlThrow instead of parseUrl 2016-09-13 20:47:32 -07:00
Gabriel Gonzalez
f2030edbab Remove support for Maybe 2016-09-13 20:41:36 -07:00
Gabriel Gonzalez
16da255e98 Fix pretty printer to exactly match parser 2016-09-13 09:40:17 -07:00
Gabriel Gonzalez
77c45103b3 Update documentation 2016-09-13 08:36:39 -07:00
Gabriel Gonzalez
9e8c86e93f Change parser to allow chained type annotations 2016-09-13 08:35:56 -07:00
Gabriel Gonzalez
df373c6408 Fix remaining ambiguous parses 2016-09-12 23:21:28 -07:00
Gabriel Gonzalez
66fc7ed6c2 Fix several ambiguous parses 2016-09-12 22:10:46 -07:00